From archives@lists.xen.org Mon Sep 01 00:10:04 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 00:10:04 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOFC5-00008v-Fw
	for archives@lists.xen.org; Mon, 01 Sep 2014 00:10:04 +0000
Date: Mon, 01 Sep 2014 00:10:01 +0000
Message-Id: <E1XOFC5-00008v-Fw@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 01:10:08 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 01:10:08 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOG8G-0004P1-Rn
	for archives@lists.xen.org; Mon, 01 Sep 2014 01:10:08 +0000
Date: Mon, 01 Sep 2014 01:10:08 +0000
Message-Id: <E1XOG8G-0004P1-Rn@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 02:10:05 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 02:10:05 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOH4H-0005QV-1N
	for archives@lists.xen.org; Mon, 01 Sep 2014 02:10:05 +0000
Date: Mon, 01 Sep 2014 02:10:05 +0000
Message-Id: <E1XOH4H-0005QV-1N@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 03:10:02 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 03:10:02 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOI0I-0004UW-3l
	for archives@lists.xen.org; Mon, 01 Sep 2014 03:10:02 +0000
Date: Mon, 01 Sep 2014 03:10:02 +0000
Message-Id: <E1XOI0I-0004UW-3l@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 04:10:08 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 04:10:08 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOIwS-0004uH-IS
	for archives@lists.xen.org; Mon, 01 Sep 2014 04:10:08 +0000
Date: Mon, 01 Sep 2014 04:10:08 +0000
Message-Id: <E1XOIwS-0004uH-IS@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 05:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 05:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOJsP-0005cg-Ab
	for archives@lists.xen.org; Mon, 01 Sep 2014 05:10:01 +0000
Date: Mon, 01 Sep 2014 05:10:01 +0000
Message-Id: <E1XOJsP-0005cg-Ab@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 06:10:04 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 06:10:04 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOKoW-0006aG-Ci
	for archives@lists.xen.org; Mon, 01 Sep 2014 06:10:04 +0000
Date: Mon, 01 Sep 2014 06:10:04 +0000
Message-Id: <E1XOKoW-0006aG-Ci@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 07:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 07:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOLkX-00078M-LD
	for archives@lists.xen.org; Mon, 01 Sep 2014 07:10:01 +0000
Date: Mon, 01 Sep 2014 07:10:01 +0000
Message-Id: <E1XOLkX-00078M-LD@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 08:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 08:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOMgb-0008Ic-3x
	for archives@lists.xen.org; Mon, 01 Sep 2014 08:10:01 +0000
Date: Mon, 01 Sep 2014 08:10:01 +0000
Message-Id: <E1XOMgb-0008Ic-3x@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 09:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 09:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XONcf-0000Ht-1R
	for archives@lists.xen.org; Mon, 01 Sep 2014 09:10:01 +0000
Date: Mon, 01 Sep 2014 09:10:01 +0000
Message-Id: <E1XONcf-0000Ht-1R@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 10:10:02 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 10:10:02 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOOYk-0000uQ-0k
	for archives@lists.xen.org; Mon, 01 Sep 2014 10:10:02 +0000
Date: Mon, 01 Sep 2014 10:10:02 +0000
Message-Id: <E1XOOYk-0000uQ-0k@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 11:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 11:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOPUn-0002dh-8a
	for archives@lists.xen.org; Mon, 01 Sep 2014 11:10:01 +0000
Date: Mon, 01 Sep 2014 11:10:01 +0000
Message-Id: <E1XOPUn-0002dh-8a@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 12:10:04 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 12:10:04 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOQQr-000469-MC
	for archives@lists.xen.org; Mon, 01 Sep 2014 12:10:01 +0000
Date: Mon, 01 Sep 2014 12:10:01 +0000
Message-Id: <E1XOQQr-000469-MC@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 13:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 13:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XORMv-000532-Pb
	for archives@lists.xen.org; Mon, 01 Sep 2014 13:10:01 +0000
Date: Mon, 01 Sep 2014 13:10:01 +0000
Message-Id: <E1XORMv-000532-Pb@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 14:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 14:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOSIz-0006Ck-Bj
	for archives@lists.xen.org; Mon, 01 Sep 2014 14:10:01 +0000
Date: Mon, 01 Sep 2014 14:10:01 +0000
Message-Id: <E1XOSIz-0006Ck-Bj@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From xen-devel-bounces@lists.xen.org Mon Sep 01 14:22:52 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 14:22:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XOSV6-0006Sg-0c; Mon, 01 Sep 2014 14:22:32 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XOSV3-0006Pd-Be
	for xen-devel@lists.xen.org; Mon, 01 Sep 2014 14:22:29 +0000
Received: from [85.158.143.35:4491] by server-1.bemta-4.messagelabs.com id
	14/95-05872-42184045; Mon, 01 Sep 2014 14:22:28 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-12.tower-21.messagelabs.com!1409581344!12890090!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3883 invoked from network); 1 Sep 2014 14:22:25 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-12.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 1 Sep 2014 14:22:25 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 8BBCE1015E54D;
	Mon,  1 Sep 2014 16:22:22 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 83BCFC218A16;
	Mon,  1 Sep 2014 16:22:22 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Mon,  1 Sep 2014 16:21:55 +0200
Message-Id: <1409581329-2607-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0.rc1
In-Reply-To: <1409581329-2607-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1409581329-2607-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH v3 01/15] xen: Relocate mem_access and mem_event
	into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  61 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   2 +-
 xen/arch/x86/mm/hap/nested_hap.c |   2 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   2 +-
 xen/arch/x86/mm/p2m-pod.c        |   2 +-
 xen/arch/x86/mm/p2m-pt.c         |   2 +-
 xen/arch/x86/mm/p2m.c            |   2 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  58 ++++
 xen/include/xen/mem_event.h      | 141 ++++++++
 xen/include/xen/mm.h             |   6 +
 30 files changed, 1131 insertions(+), 1041 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index d1517c4..3aeb79d 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 83e6fae..3569481 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -63,8 +63,8 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <public/mem_event.h>
 #include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..704bb66 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -21,7 +21,7 @@
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..f6becd4 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -23,7 +23,7 @@
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..fa845fd 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -30,7 +30,7 @@
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/atomic.h>
 #include <xen/rcupdate.h>
 #include <asm/event.h>
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..881259a 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -26,7 +26,7 @@
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..46231cf 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -30,7 +30,7 @@
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index c2e89e1..ac30e9c 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -30,7 +30,7 @@
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..203c6b4 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -2,9 +2,9 @@
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
+#include <xen/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..1f9702d 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -35,9 +35,9 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
+#include <xen/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 1952070..6f51311 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..07161a2
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <asm/p2m.h>
+#include <public/memory.h>
+#include <xen/mem_event.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..b4a23fd
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <asm/p2m.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index c2dd31b..cc8a3d0 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -977,6 +977,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..6c5a068
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..5e3963e
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,141 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0.rc1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From archives@lists.xen.org Mon Sep 01 15:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 15:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOTF3-0000vj-E1
	for archives@lists.xen.org; Mon, 01 Sep 2014 15:10:01 +0000
Date: Mon, 01 Sep 2014 15:10:01 +0000
Message-Id: <E1XOTF3-0000vj-E1@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From xen-devel-bounces@lists.xen.org Mon Sep 01 15:34:30 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 15:34:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XOTcX-00026D-RA; Mon, 01 Sep 2014 15:34:17 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <dslutz@verizon.com>) id 1XOTcW-000266-K4
	for xen-devel@lists.xen.org; Mon, 01 Sep 2014 15:34:17 +0000
Received: from [193.109.254.147:49598] by server-3.bemta-14.messagelabs.com id
	AF/68-23707-7F194045; Mon, 01 Sep 2014 15:34:15 +0000
X-Env-Sender: dslutz@verizon.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1409585633!12769260!4
X-Originating-IP: [140.108.26.143]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTQwLjEwOC4yNi4xNDMgPT4gMjYwNTMz\n
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16016 invoked from network); 1 Sep 2014 15:33:59 -0000
Received: from fldsmtpe04.verizon.com (HELO fldsmtpe04.verizon.com)
	(140.108.26.143)
	by server-13.tower-27.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 1 Sep 2014 15:33:59 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
	d=verizon.com; i=dslutz@verizon.com; q=dns/txt; s=corp;
	t=1409585639; x=1441121639;
	h=from:to:cc:subject:date:message-id:in-reply-to: references;
	bh=5iHMYb3Z1H+p/zuO9sASBC/0zI51KU1NTEsQKXkPgvU=;
	b=c0jn/Vv2QiSkJEyb+9vmb6qvnv2sOxiBRdsaoqPu2zm75SJg6jHdXiyn
	i0b0ZW6MXCrSAAnRFRYTZ+t/1ntbPPSzB73yOPAxt3N/fpGvnv6G3qlVg
	CXkNyd/cjOyf6KjumHH43yX7hrJWCYDSc5LiAq9CbaakmEh8jVmm2jAxy 4=;
X-IronPort-Anti-Spam-Filtered: false
Received: from unknown (HELO fldsmtpi03.verizon.com) ([166.68.71.145])
	by fldsmtpe04.verizon.com with ESMTP; 01 Sep 2014 15:33:58 +0000
X-VzAPP: 1
X-IronPort-AV: E=Sophos;i="5.04,443,1406592000"; d="scan'208";a="810177777"
Received: from unknown (HELO don-760.CloudSwitch.com) ([162.47.5.60])
	by fldsmtpi03.verizon.com with ESMTP; 01 Sep 2014 15:33:56 +0000
From: Don Slutz <dslutz@verizon.com>
To: xen-devel@lists.xen.org
Date: Mon,  1 Sep 2014 11:33:49 -0400
Message-Id: <1409585629-25840-4-git-send-email-dslutz@verizon.com>
X-Mailer: git-send-email 1.8.4
In-Reply-To: <1409585629-25840-1-git-send-email-dslutz@verizon.com>
References: <1409585629-25840-1-git-send-email-dslutz@verizon.com>
Cc: Kevin Tian <kevin.tian@intel.com>, Keir Fraser <keir@xen.org>,
	Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Jun Nakajima <jun.nakajima@intel.com>, Eddie Dong <eddie.dong@intel.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Don Slutz <dslutz@verizon.com>, Tim Deegan <tim@xen.org>,
	Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
	Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Subject: [Xen-devel] [PATCH v2 3/3] Add limited support of VMware's
	hyper-call
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

This is both a more complete support then in currently provided by
QEMU and/or KVM and less.  The missing part requires QEMU changes
and has been left out until the QEMU patches are accepted upstream.

VMware's hyper-call is also known as VMware Backdoor I/O Port.

Note: this support does not depend on vmware_hw being non-zero.

Summary is that VMware treats "IN EAX, DX" (or "OUT DX, EAX"; or
"inl %dx, %eax" in AT&T syntax ) to port 0x5658 specially.  Note:
since many operations return data in EAX, "OUT DX, EAX" does not
work for them on VMware, I did not support the "OUT DX, EAX", but it
would not be hard to add.

Also this instruction is allowed to be used from ring 3.  To
support this the vmexit for GP needs to be enabled.  I have not
fully tested that nested HVM is doing the right thing for this.

An open source example of using this is:

http://open-vm-tools.sourceforge.net/

Which only uses "IN EAX, DX".  Also

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458

Lists just "inl (%%dx)" (I assume this is AT&T syntax and is the
same as "inl %dx, %eax").

The support included is enough to allow VMware tools to install in a
HVM domU and provide guestinfo support.  guestinfo support is
provide by what is known as VMware RPC support.  This guestinfo
support is provided via libxc.  libxl support has not be written.

Note: VMware RPC support is only available on HVM domU.

This interface is an extension of __HYPERVISOR_HVM_op.  It was
picked because xc_get_hvm_param() also uses it and VMware guest
info is a lot like a hvm param.

The HVMOP_get_vmport_guest_info is used by two libxc functions,
xc_get_vmport_guest_info and xc_fetch_vmport_guest_info.
xc_fetch_vmport_guest_info is designed to be used to fetch all
currently set guestinfo values.

To save on hypervisor heap memory, the guestinfo support in done in
two sizes, normal and jumbo.  Normal is used to handle up to 128
byte values and jumbo is used to handle up to 4096 byte values.

Since all this is work is done when the guest is doing a single
instruction; it was designed to not use the hypervisor heap to
allocate the memory at this time.  Instead a few are allocated at
the create domain time and during the xen's hyper-call to get or set
them.  This was picked in that if a tool stack is using the VMware
guest info support, it should be using either of both of the get and
set.  And so in this case the guest should only see an out of memory
error when the compile max amount of hypervisor heap memory is in
use.

Doing it this way does lead to a lot of pointer use and many
sub structures.

If the domU is running VMware tools, then the "build version" of
the tools is also available via xc_get_HVM_param().  This also
enables the use of new triggers that will use the VMware hyper-call
to do some limited control of the domU.  The most useful are
poweroff and reboot.  Since a guest process needs to be running
for these to work, a tool stack should check that the build version
is non zero before assuming these will work.

The 2 hvm param's HVM_PARAM_VMPORT_BUILD_NUMBER_TIME and
HVM_PARAM_VMPORT_BUILD_NUMBER_VALUE are how "build version" is
accessed.  These 2 params are only allowed to be set to zero.  The
HVM_PARAM_VMPORT_BUILD_NUMBER_TIME can be used to track the last
time the VMware tools in the guest responded.  One such use would
be the health of the tools in the guest.  The hvm param
HVM_PARAM_VMPORT_RESET_TIME controls how often to request them in
seconds minus 1.  The minus 1 is to handle to 0 case.  I.E. the
fastest that can be selected is every second.  The default is 4
times a minute.

The VMware RPC support includes the notion of channels that are
opened, active and closed.  All RPC messages sent via a channel
starts with normal ASCII text.  The message some times does include
binary data.

Currently there are 2 protocols defined for VMware RPC.  They
determine the direction for data flow, domU to tool stack or
tool stack to domU.

There is no provided interrupt for VMware RPC.

The VMware's hyper-call state is included in live migration and
save/restore.  Because the max size of the VMware guestinfo is
large, then data is compressed and expanded in the
vmport_save_domain_ctxt and vmport_load_domain_ctxt.

For a debug=y build there is a new command line option
vmport_debug=.  It enabled output to the console of various
stages of handling the "IN EAX, DX" instruction.  Most uses
are the summary ones that show complete RPC actions.

Signed-off-by: Don Slutz <dslutz@verizon.com>
---
 tools/libxc/xc_domain.c                      |  115 +++
 tools/libxc/xenctrl.h                        |   24 +
 tools/misc/xen-hvmctx.c                      |  229 ++++
 tools/xentrace/formats                       |    8 +
 xen/arch/x86/domctl.c                        |   34 +
 xen/arch/x86/hvm/Makefile                    |    1 +
 xen/arch/x86/hvm/hvm.c                       |  480 ++++++++-
 xen/arch/x86/hvm/io.c                        |    1 +
 xen/arch/x86/hvm/svm/emulate.c               |    3 +
 xen/arch/x86/hvm/svm/svm.c                   |   79 ++
 xen/arch/x86/hvm/svm/vmcb.c                  |    1 +
 xen/arch/x86/hvm/vmport/Makefile             |    1 +
 xen/arch/x86/hvm/vmport/includeCheck.h       |   17 +
 xen/arch/x86/hvm/vmport/vmport.c             | 1436 ++++++++++++++++++++++++++
 xen/arch/x86/hvm/vmx/vmcs.c                  |    1 +
 xen/arch/x86/hvm/vmx/vmx.c                   |   90 ++
 xen/arch/x86/hvm/vmx/vvmx.c                  |   14 +
 xen/include/asm-x86/hvm/domain.h             |    4 +
 xen/include/asm-x86/hvm/svm/emulate.h        |    1 +
 xen/include/asm-x86/hvm/trace.h              |   31 +
 xen/include/asm-x86/hvm/vmport.h             |   90 ++
 xen/include/public/arch-x86/hvm/save.h       |   39 +-
 xen/include/public/arch-x86/hvm/vmporttype.h |  105 ++
 xen/include/public/domctl.h                  |    3 +
 xen/include/public/hvm/hvm_op.h              |   18 +
 xen/include/public/hvm/params.h              |    5 +-
 xen/include/public/trace.h                   |    7 +
 27 files changed, 2834 insertions(+), 3 deletions(-)
 create mode 100644 xen/arch/x86/hvm/vmport/Makefile
 create mode 100644 xen/arch/x86/hvm/vmport/includeCheck.h
 create mode 100644 xen/arch/x86/hvm/vmport/vmport.c
 create mode 100644 xen/include/asm-x86/hvm/vmport.h
 create mode 100644 xen/include/public/arch-x86/hvm/vmporttype.h

diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
index c67ac9a..24a72e9 100644
--- a/tools/libxc/xc_domain.c
+++ b/tools/libxc/xc_domain.c
@@ -1577,6 +1577,121 @@ int xc_hvm_set_ioreq_server_state(xc_interface *xch,
     return rc;
 }
 
+int xc_set_vmport_guest_info(xc_interface *handle,
+                             domid_t dom,
+                             unsigned int key_len,
+                             char *key,
+                             unsigned int val_len,
+                             char *val)
+{
+    DECLARE_HYPERCALL;
+    DECLARE_HYPERCALL_BUFFER(xen_hvm_vmport_guest_info_t, arg);
+    int rc;
+
+    if ( (key_len < 1) ||
+        (key_len > VMPORT_GUEST_INFO_KEY_MAX) ||
+        (val_len > VMPORT_GUEST_INFO_VAL_MAX) )
+        return -1;
+
+    arg = xc_hypercall_buffer_alloc(handle, arg, sizeof(*arg));
+    if ( arg == NULL )
+        return -1;
+
+    hypercall.op     = __HYPERVISOR_hvm_op;
+    hypercall.arg[0] = HVMOP_set_vmport_guest_info;
+    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(arg);
+    arg->domid = dom;
+    arg->key_length = key_len;
+    arg->value_length = val_len;
+    memcpy(arg->data, key, key_len);
+    memcpy(&arg->data[key_len], val, val_len);
+    rc = do_xen_hypercall(handle, &hypercall);
+    xc_hypercall_buffer_free(handle, arg);
+    return rc;
+}
+
+int xc_get_vmport_guest_info(xc_interface *handle,
+                             domid_t dom,
+                             unsigned int key_len,
+                             char *key,
+                             unsigned int val_max,
+                             unsigned int *val_len,
+                             char *val)
+{
+    DECLARE_HYPERCALL;
+    DECLARE_HYPERCALL_BUFFER(xen_hvm_vmport_guest_info_t, arg);
+    int rc;
+
+    if ( (key_len < 1) ||
+        (key_len > VMPORT_GUEST_INFO_KEY_MAX) )
+        return -1;
+
+    arg = xc_hypercall_buffer_alloc(handle, arg, sizeof(*arg));
+
+    hypercall.op     = __HYPERVISOR_hvm_op;
+    hypercall.arg[0] = HVMOP_get_vmport_guest_info;
+    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(arg);
+    arg->domid = dom;
+    arg->key_length = key_len;
+    arg->value_length = 0;
+    *val_len = 0;
+    memcpy(arg->data, key, key_len);
+    rc = do_xen_hypercall(handle, &hypercall);
+    if ( rc == 0 )
+    {
+        *val_len = arg->value_length;
+        if ( arg->value_length > val_max )
+            arg->value_length = val_max;
+        memcpy(val, &arg->data[key_len], arg->value_length);
+    }
+    xc_hypercall_buffer_free(handle, arg);
+    return rc;
+}
+
+int xc_fetch_vmport_guest_info(xc_interface *handle,
+                               domid_t dom,
+                               unsigned int idx,
+                               unsigned int key_max,
+                               unsigned int *key_len,
+                               char *key,
+                               unsigned int val_max,
+                               unsigned int *val_len,
+                               char *val)
+{
+    DECLARE_HYPERCALL;
+    DECLARE_HYPERCALL_BUFFER(xen_hvm_vmport_guest_info_t, arg);
+    int rc;
+
+    arg = xc_hypercall_buffer_alloc(handle, arg, sizeof(*arg));
+
+    hypercall.op     = __HYPERVISOR_hvm_op;
+    hypercall.arg[0] = HVMOP_get_vmport_guest_info;
+    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(arg);
+    arg->domid = dom;
+    arg->key_length = 0;
+    arg->value_length = idx;
+    *key_len = 0;
+    *val_len = 0;
+    rc = do_xen_hypercall(handle, &hypercall);
+    if ( rc == 0 )
+    {
+        uint16_t val_off = arg->key_length;
+
+        *key_len = arg->key_length;
+        if ( arg->key_length > key_max )
+            arg->key_length = key_max;
+        memcpy(key, arg->data, arg->key_length);
+        *val_len = arg->value_length;
+        if ( arg->value_length > val_max )
+            arg->value_length = val_max;
+        memcpy(val,
+               &arg->data[val_off],
+               arg->value_length);
+    }
+    xc_hypercall_buffer_free(handle, arg);
+    return rc;
+}
+
 int xc_domain_setdebugging(xc_interface *xch,
                            uint32_t domid,
                            unsigned int enable)
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h
index 1c5d0db..6af3fd2 100644
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -2009,6 +2009,30 @@ int xc_hvm_destroy_ioreq_server(xc_interface *xch,
                                 domid_t domid,
                                 ioservid_t id);
 
+int xc_set_vmport_guest_info(xc_interface *handle,
+                             domid_t dom,
+                             unsigned int key_len,
+                             char *key,
+                             unsigned int val_len,
+                             char *val);
+int xc_get_vmport_guest_info(xc_interface *handle,
+                             domid_t dom,
+                             unsigned int key_len,
+                             char *key,
+                             unsigned int val_max,
+                             unsigned int *val_len,
+                             char *val);
+int xc_fetch_vmport_guest_info(xc_interface *handle,
+                               domid_t dom,
+                               unsigned int idx,
+                               unsigned int key_max,
+                               unsigned int *key_len,
+                               char *key,
+                               unsigned int val_max,
+                               unsigned int *val_len,
+                               char *val);
+
+
 /* HVM guest pass-through */
 int xc_assign_device(xc_interface *xch,
                      uint32_t domid,
diff --git a/tools/misc/xen-hvmctx.c b/tools/misc/xen-hvmctx.c
index 5a69245..1abd2be 100644
--- a/tools/misc/xen-hvmctx.c
+++ b/tools/misc/xen-hvmctx.c
@@ -399,6 +399,225 @@ static void dump_tsc_adjust(void)
     printf("    TSC_ADJUST: tsc_adjust %" PRIx64 "\n", p.tsc_adjust);
 }
 
+static void dump_vmport(int vmport_size)
+{
+    int i;
+    HVM_SAVE_TYPE(VMPORT) *vp;
+    int64_t vmport_guestsize;
+    uint32_t vmport_used_guestinfo;
+    uint32_t vmport_used_guestinfo_jumbo;
+    uint8_t pb[vmport_size];
+    char *p;
+    int chans_size;
+
+    READ(pb);
+    vp = (void *)&pb;
+
+    p = vp->u.packed.packed_data;
+
+    vmport_guestsize = vp->used_guestsize;
+    chans_size = vmport_size - vmport_guestsize - (p - (char *)pb);
+    if ( chans_size < 0 )
+    {
+        fprintf(stderr, "*** VMPORT: bogus chans_size=%d should be >= 0\n"
+                "   vmport_size=%d vmport_guestsize=%d fixed_size=%ld\n",
+                chans_size, vmport_size, (int)vmport_guestsize,
+                p - (char *)pb);
+        chans_size = 0;
+    }
+
+    printf("    VMPORT: ping_time %" PRIu64 "\n", vp->ping_time);
+    printf("    VMPORT: open_cookie %" PRIx32 "\n", vp->open_cookie);
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        int j;
+        vmport_channel_control_t *vc = &vp->u.packed.chan_ctl[i].chan;
+        vmport_bucket_control_t *jb =  &vp->u.packed.chan_ctl[i].jumbo;
+
+        printf("    VMPORT: chan[%d] chan_id %d\n", i, vc->chan_id);
+        printf("    VMPORT: chan[%d] active_time %" PRIx64 "\n",
+               i, vc->active_time);
+        printf("    VMPORT: chan[%d] proto_num %" PRIx32 "\n",
+               i, vc->proto_num);
+        printf("    VMPORT: chan[%d] recv_read %d\n", i, vc->recv_read);
+        printf("    VMPORT: chan[%d] recv_write %d\n", i, vc->recv_write);
+        printf("    VMPORT: chan[%d] jumbo %d\n", i, vc->jumbo);
+        printf("    VMPORT: chan[%d] send_len %d\n", i, vc->send_len);
+        if ( vc->send_len > VMPORT_MAX_SEND_BUF * 4 )
+        {
+            printf("--- VMPORT: trucated send_len=%d > %d\n",
+                   vc->send_len, VMPORT_MAX_SEND_BUF * 4);
+            vc->send_len = VMPORT_MAX_SEND_BUF * 4;
+        }
+        if ( vc->send_len > chans_size )
+        {
+            fprintf(stderr, "*** VMPORT: bogus send_len=%d > %d\n",
+                    vc->send_len, chans_size);
+            if ( chans_size >= 0 )
+                vc->send_len = chans_size;
+            else
+                vc->send_len = 0;
+        }
+        p += vc->send_len;
+        chans_size -= vc->send_len;
+        for (j = 0; j < VMPORT_MAX_BKTS; j++)
+        {
+            vmport_bucket_control_t *b = &vp->u.packed.chan_ctl[i].recv[j];
+
+            printf("    VMPORT: chan[%d] bucket[%d] recv_len %d\n",
+                   i, j, b->recv_len);
+            if ( b->recv_len > VMPORT_MAX_RECV_BUF * 4 )
+            {
+                printf("--- VMPORT: trucated recv_len=%d > %d\n",
+                       b->recv_len, VMPORT_MAX_RECV_BUF * 4);
+                b->recv_len = VMPORT_MAX_RECV_BUF * 4;
+            }
+            if ( b->recv_len > chans_size )
+            {
+                fprintf(stderr, "*** VMPORT: bogus recv_len=%d > %d\n",
+                        b->recv_len, chans_size);
+                if ( chans_size >= 0 )
+                    b->recv_len = chans_size;
+                else
+                    b->recv_len = 0;
+            }
+            p += b->recv_len;
+            chans_size -= b->recv_len;
+        }
+        printf("    VMPORT: chan[%d] jumbo_bkt recv_len %d\n", i, jb->recv_len);
+        if ( jb->recv_len > VMPORT_MAX_RECV_JUMBO_BUF * 4 )
+        {
+            printf("--- VMPORT: trucated recv_len=%d > %d\n",
+                   jb->recv_len, VMPORT_MAX_RECV_JUMBO_BUF * 4);
+            jb->recv_len = VMPORT_MAX_RECV_JUMBO_BUF * 4;
+        }
+        if ( jb->recv_len > chans_size )
+        {
+            fprintf(stderr, "*** VMPORT: bogus recv_len=%d > %d\n",
+                    jb->recv_len, chans_size);
+            if ( chans_size >= 0 )
+                jb->recv_len = chans_size;
+            else
+                jb->recv_len = 0;
+        }
+        p += jb->recv_len;
+        chans_size -= jb->recv_len;
+    }
+
+    if ( chans_size != 0 )
+        fprintf(stderr, "*** VMPORT: bogus chans_size=%d should be 0\n",
+                chans_size);
+
+    vmport_used_guestinfo = vp->used_guestinfo;
+    vmport_used_guestinfo_jumbo = vp->used_guestinfo_jumbo;
+
+    if ( vmport_used_guestinfo == 0 )
+        printf("    VMPORT: no small data\n");
+    for (i = 0; i < vmport_used_guestinfo; i++)
+    {
+        if ( vmport_guestsize > 0 )
+        {
+            uint8_t key_len = (uint8_t)(*p++);
+            uint8_t val_len = (uint8_t)(*p++);
+            if ( key_len )
+            {
+                char key[VMPORT_MAX_KEY_LEN + 1];
+                char val[VMPORT_MAX_VAL_LEN + 1];
+
+                if ( key_len > VMPORT_MAX_KEY_LEN )
+                {
+                    fprintf(stderr,
+                            "*** VMPORT: bogus key_len=%d > %d for guestinfo[%d]\n",
+                            key_len, VMPORT_MAX_KEY_LEN, i);
+                    key_len = VMPORT_MAX_KEY_LEN;
+                }
+                memcpy(key, p, key_len);
+                p += key_len;
+                key[key_len] = '\0';
+                if ( val_len > VMPORT_MAX_VAL_LEN )
+                {
+                    fprintf(stderr,
+                            "*** VMPORT: bogus val_len=%d > %d for guestinfo[%d]\n",
+                            val_len, VMPORT_MAX_VAL_LEN, i);
+                    val_len = VMPORT_MAX_VAL_LEN;
+                }
+                memcpy(val, p, val_len);
+                p += val_len;
+                val[val_len] = '\0';
+                vmport_guestsize -= 2 + key_len + val_len;
+                printf("    VMPORT: guestinfo[%d](%s) = \"%s\"\n",
+                       i, key, val);
+            }
+            else
+            {
+                fprintf(stderr,
+                        "*** VMPORT: bogus len for guestinfo[%d]\n",
+                        i);
+                vmport_guestsize -= 2;
+            }
+            if ( vmport_guestsize < 0 )
+                printf("    VMPORT: data length skew at guestinfo[%d]\n"
+                       "         remaining datasize=%ld\n",
+                       i, vmport_guestsize);
+        }
+    }
+
+    if ( vmport_guestsize == 0 )
+        printf("    VMPORT: no jumbo data\n");
+    for (i = 0; i < vmport_used_guestinfo_jumbo; i++)
+    {
+        if ( vmport_guestsize > 0 )
+        {
+            uint8_t key_len = (uint8_t)(*p++);
+            uint16_t val_len;
+
+            memcpy(&val_len, p, 2);
+            p += 2;
+            if ( key_len )
+            {
+                char key[VMPORT_MAX_KEY_LEN + 1];
+                char val[VMPORT_MAX_VAL_JUMBO_LEN + 1];
+
+                if ( key_len > VMPORT_MAX_KEY_LEN )
+                {
+                    fprintf(stderr,
+                            "*** VMPORT: bogus key_len=%d > %d for guestinfo[%d]\n",
+                            key_len, VMPORT_MAX_KEY_LEN, i);
+                    key_len = VMPORT_MAX_KEY_LEN;
+                }
+                memcpy(key, p, key_len);
+                p += key_len;
+                key[key_len] = '\0';
+                if ( val_len > VMPORT_MAX_VAL_JUMBO_LEN )
+                {
+                    fprintf(stderr,
+                            "*** VMPORT: bogus val_len=%d > %d for guestinfo[%d]\n",
+                            val_len, VMPORT_MAX_VAL_JUMBO_LEN, i);
+                    val_len = VMPORT_MAX_VAL_JUMBO_LEN;
+                }
+                memcpy(val, p, val_len);
+                p += val_len;
+                val[val_len] = '\0';
+                vmport_guestsize -= 2 + key_len + val_len;
+                printf("    VMPORT: guestinfo_jumbo[%d](%s) = \"%s\"\n",
+                       i, key, val);
+            }
+            else
+            {
+                printf("    VMPORT: bogus len for guestinfo_jumbo[%d]\n", i);
+                vmport_guestsize -= 2;
+            }
+            if ( vmport_guestsize < 0 )
+                printf("    VMPORT: data length skew at guestinfo_jumbo[%d]\n"
+                       "         remaining datasize=%ld\n", i,
+                       vmport_guestsize);
+        }
+    }
+
+    if ( !vmport_guestsize )
+        printf("    VMPORT: %ld bytes leftover data\n", vmport_guestsize);
+}
+
 int main(int argc, char **argv)
 {
     int entry, domid;
@@ -467,6 +686,7 @@ int main(int argc, char **argv)
         case HVM_SAVE_CODE(VIRIDIAN_VCPU): dump_viridian_vcpu(); break;
         case HVM_SAVE_CODE(VMCE_VCPU): dump_vmce_vcpu(); break;
         case HVM_SAVE_CODE(TSC_ADJUST): dump_tsc_adjust(); break;
+        case HVM_SAVE_CODE(VMPORT): dump_vmport(desc.length); break;
         case HVM_SAVE_CODE(END): break;
         default:
             printf(" ** Don't understand type %u: skipping\n",
@@ -477,3 +697,12 @@ int main(int argc, char **argv)
 
     return 0;
 } 
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index da658bf..75a5d34 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -79,6 +79,14 @@
 0x00082020  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  INTR_WINDOW [ value = 0x%(1)08x ]
 0x00082021  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  NPF         [ gpa = 0x%(2)08x%(1)08x mfn = 0x%(4)08x%(3)08x qual = 0x%(5)04x p2mt = 0x%(6)04x ]
 0x00082023  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  TRAP        [ vector = 0x%(1)02x ]
+0x00082024  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  TRAP_DEBUG  [ exit_qualification = 0x%(1)08x ]
+0x00082025  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VLAPIC
+0x00082026  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  TRAP_GP     [ vector = 0x%(1)02x inst_len = %(2)d exitinfo1 = %(3)d exitinfo2 = 0x%(4)08x ]
+0x00082126  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  TRAP_GP     [ vector = 0x%(1)02x inst_len = %(2)d exitinfo1 = %(3)d exitinfo2 = 0x%(5)08x%(4)08x ]
+0x00082027  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMPORT_READ1  [ eax = 0x%(1)08x ebx = 0x%(2)08x ecx = 0x%(3)08x edx = 0x%(4)08x esi = 0x%(5)08x edi = 0x%(6)08x ]
+0x00082227  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMPORT_WRITE1 [ eax = 0x%(1)08x ebx = 0x%(2)08x ecx = 0x%(3)08x edx = 0x%(4)08x esi = 0x%(5)08x edi = 0x%(6)08x ]
+0x00082028  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMPORT_READ2  [ eax = 0x%(1)08x ebx = 0x%(2)08x ecx = 0x%(3)08x edx = 0x%(4)08x esi = 0x%(5)08x edi = 0x%(6)08x ]
+0x00082228  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMPORT_WRITE2 [ eax = 0x%(1)08x ebx = 0x%(2)08x ecx = 0x%(3)08x edx = 0x%(4)08x esi = 0x%(5)08x edi = 0x%(6)08x ]
 
 0x0010f001  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  page_grant_map      [ domid = %(1)d ]
 0x0010f002  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  page_grant_unmap    [ domid = %(1)d ]
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index d1517c4..bee2b30 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -23,6 +23,7 @@
 #include <xen/paging.h>
 #include <asm/irq.h>
 #include <asm/hvm/hvm.h>
+#include <asm/hvm/vmport.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/cacheattr.h>
 #include <asm/processor.h>
@@ -579,6 +580,39 @@ long arch_do_domctl(
         }
         break;
 
+        case XEN_DOMCTL_SENDTRIGGER_VTPOWER:
+        {
+            ret = -EINVAL;
+            if ( is_hvm_domain(d) )
+            {
+                ret = 0;
+                vmport_ctrl_send(&d->arch.hvm_domain, "OS_Halt");
+            }
+        }
+        break;
+
+        case XEN_DOMCTL_SENDTRIGGER_VTREBOOT:
+        {
+            ret = -EINVAL;
+            if ( is_hvm_domain(d) )
+            {
+                ret = 0;
+                vmport_ctrl_send(&d->arch.hvm_domain, "OS_Reboot");
+            }
+        }
+        break;
+
+        case XEN_DOMCTL_SENDTRIGGER_VTPING:
+        {
+            ret = -EINVAL;
+            if ( is_hvm_domain(d) )
+            {
+                ret = 0;
+                vmport_ctrl_send(&d->arch.hvm_domain, "ping");
+            }
+        }
+        break;
+
         default:
             ret = -ENOSYS;
         }
diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
index 3474a65..8e630db 100644
--- a/xen/arch/x86/hvm/Makefile
+++ b/xen/arch/x86/hvm/Makefile
@@ -1,5 +1,6 @@
 subdir-y += svm
 subdir-y += vmx
+subdir-y += vmport
 
 obj-y += asid.o
 obj-y += emulate.o
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index eded446..3e5ac67 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -57,6 +57,7 @@
 #include <asm/hvm/cacheattr.h>
 #include <asm/hvm/trace.h>
 #include <asm/hvm/nestedhvm.h>
+#include <asm/hvm/vmport.h>
 #include <asm/mtrr.h>
 #include <asm/apic.h>
 #include <public/sched.h>
@@ -1480,6 +1481,7 @@ int hvm_domain_initialise(struct domain *d)
     INIT_LIST_HEAD(&d->arch.hvm_domain.ioreq_server.list);
     spin_lock_init(&d->arch.hvm_domain.irq_lock);
     spin_lock_init(&d->arch.hvm_domain.uc_lock);
+    spin_lock_init(&d->arch.hvm_domain.vmport_lock);
 
     INIT_LIST_HEAD(&d->arch.hvm_domain.msixtbl_list);
     spin_lock_init(&d->arch.hvm_domain.msixtbl_list_lock);
@@ -1492,11 +1494,36 @@ int hvm_domain_initialise(struct domain *d)
 
     d->arch.hvm_domain.params = xzalloc_array(uint64_t, HVM_NR_PARAMS);
     d->arch.hvm_domain.io_handler = xmalloc(struct hvm_io_handler);
+    d->arch.hvm_domain.vmport_data = xzalloc(struct vmport_state);
     rc = -ENOMEM;
-    if ( !d->arch.hvm_domain.params || !d->arch.hvm_domain.io_handler )
+    if ( !d->arch.hvm_domain.params || !d->arch.hvm_domain.io_handler ||
+         !d->arch.hvm_domain.vmport_data )
         goto fail1;
     d->arch.hvm_domain.io_handler->num_slot = 0;
 
+    /*
+     * Any value is fine here. In fact a random number may better.
+     * It is used to help validate that a both sides are talking
+     * about the same channel.
+     */
+    d->arch.hvm_domain.vmport_data->open_cookie = 435;
+
+    d->arch.hvm_domain.vmport_data->used_guestinfo = 10;
+    for (rc = 0;
+         rc < d->arch.hvm_domain.vmport_data->used_guestinfo;
+         rc++)
+        d->arch.hvm_domain.vmport_data->guestinfo[rc] =
+            xzalloc(vmport_guestinfo_t);
+
+    d->arch.hvm_domain.vmport_data->used_guestinfo_jumbo = 2;
+    for (rc = 0;
+         rc < d->arch.hvm_domain.vmport_data->used_guestinfo_jumbo;
+         rc++)
+        d->arch.hvm_domain.vmport_data->guestinfo_jumbo[rc] =
+            xzalloc(vmport_guestinfo_jumbo_t);
+
+    vmport_flush(&d->arch.hvm_domain);
+
     if ( is_pvh_domain(d) )
     {
         register_portio_handler(d, 0, 0x10003, handle_pvh_io);
@@ -1507,6 +1534,7 @@ int hvm_domain_initialise(struct domain *d)
 
     d->arch.hvm_domain.params[HVM_PARAM_HPET_ENABLED] = 1;
     d->arch.hvm_domain.params[HVM_PARAM_TRIPLE_FAULT_REASON] = SHUTDOWN_reboot;
+    d->arch.hvm_domain.params[HVM_PARAM_VMPORT_RESET_TIME] = 14;
 
     vpic_init(d);
 
@@ -1520,6 +1548,7 @@ int hvm_domain_initialise(struct domain *d)
 
     register_portio_handler(d, 0xe9, 1, hvm_print_line);
     register_portio_handler(d, 0xcf8, 4, hvm_access_cf8);
+    register_portio_handler(d, VMPORT_PORT, 4, vmport_ioport);
 
     rc = hvm_funcs.domain_initialise(d);
     if ( rc != 0 )
@@ -1532,6 +1561,17 @@ int hvm_domain_initialise(struct domain *d)
     stdvga_deinit(d);
     vioapic_deinit(d);
  fail1:
+    if ( d->arch.hvm_domain.vmport_data )
+    {
+        struct vmport_state *vs = d->arch.hvm_domain.vmport_data;
+        int idx;
+
+        for (idx = 0; idx < vs->used_guestinfo; idx++)
+            xfree(vs->guestinfo[idx]);
+        for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+            xfree(vs->guestinfo_jumbo[idx]);
+    }
+    xfree(d->arch.hvm_domain.vmport_data);
     xfree(d->arch.hvm_domain.io_handler);
     xfree(d->arch.hvm_domain.params);
  fail0:
@@ -1541,6 +1581,15 @@ int hvm_domain_initialise(struct domain *d)
 
 void hvm_domain_relinquish_resources(struct domain *d)
 {
+    if ( d->arch.hvm_domain.vmport_data )
+    {
+        struct vmport_state *vs = d->arch.hvm_domain.vmport_data;
+        int idx;
+
+        for (idx = 0; idx < vs->used_guestinfo; idx++)
+            xfree(vs->guestinfo[idx]);
+        xfree(d->arch.hvm_domain.vmport_data);
+    }
     xfree(d->arch.hvm_domain.io_handler);
     xfree(d->arch.hvm_domain.params);
 
@@ -5473,6 +5522,257 @@ static int hvmop_destroy_ioreq_server(
     return rc;
 }
 
+static void hvm_del_guestinfo_jumbo(struct vmport_state *vs, char *key,
+                                    uint8_t len)
+{
+    int idx;
+
+    for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+    {
+        if ( vs->guestinfo[idx] &&
+             (vs->guestinfo_jumbo[idx]->key_len == len) &&
+             (memcmp(key, vs->guestinfo_jumbo[idx]->key_data, len) == 0) )
+        {
+            vs->guestinfo_jumbo[idx]->val_data[0] = '\0';
+            vs->guestinfo_jumbo[idx]->key_len = 0;
+            break;
+        }
+    }
+}
+
+static void hvm_del_guestinfo(struct vmport_state *vs, char *key, uint8_t len)
+{
+    int idx;
+
+    for (idx = 0; idx < vs->used_guestinfo; idx++)
+    {
+        if ( vs->guestinfo[idx] &&
+             (vs->guestinfo[idx]->key_len == len) &&
+             (memcmp(key, vs->guestinfo[idx]->key_data, len) == 0) )
+        {
+            vs->guestinfo[idx]->val_data[0] = '\0';
+            vs->guestinfo[idx]->key_len = 0;
+            break;
+        }
+    }
+}
+
+static long hvm_set_guestinfo(struct vmport_state *vs,
+                              struct xen_hvm_vmport_guest_info *a,
+                              char *key, char *value)
+{
+    int idx;
+    int free_idx = -1;
+    long rc = 0;
+
+    for (idx = 0; idx < vs->used_guestinfo; idx++)
+    {
+        if ( !vs->guestinfo[idx] )
+        {
+#ifndef NDEBUG
+            gdprintk(XENLOG_WARNING,
+                     "idx=%d not allocated, but used_guestinfo=%d\n",
+                     idx, vs->used_guestinfo);
+#endif
+        }
+        else if ( (vs->guestinfo[idx]->key_len == a->key_length) &&
+                  (memcmp(key,
+                          vs->guestinfo[idx]->key_data,
+                          vs->guestinfo[idx]->key_len) == 0) )
+        {
+            vs->guestinfo[idx]->val_len = a->value_length;
+            memcpy(vs->guestinfo[idx]->val_data, value, a->value_length);
+            break;
+
+        }
+        else if ( (vs->guestinfo[idx]->key_len == 0) &&
+                  (free_idx == -1) )
+            free_idx = idx;
+    }
+
+    if ( idx >= vs->used_guestinfo )
+    {
+        if ( free_idx == -1 )
+            rc = -EBUSY;
+        else
+        {
+            vs->guestinfo[free_idx]->key_len = a->key_length;
+            memcpy(vs->guestinfo[free_idx]->key_data, key, a->key_length);
+            vs->guestinfo[free_idx]->val_len = a->value_length;
+            memcpy(vs->guestinfo[free_idx]->val_data, value, a->value_length);
+        }
+    }
+
+    /* Delete any duplicate entry */
+    if ( rc == 0 )
+        hvm_del_guestinfo_jumbo(vs, key, a->key_length);
+
+    return rc;
+}
+
+static long hvm_set_guestinfo_jumbo(struct vmport_state *vs,
+                                    struct xen_hvm_vmport_guest_info *a,
+                                    char *key, char *value)
+{
+    int idx;
+    int free_idx = -1;
+    long rc = 0;
+
+    for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+    {
+
+        if ( !vs->guestinfo_jumbo[idx] )
+        {
+#ifndef NDEBUG
+            gdprintk(XENLOG_WARNING,
+                     "idx=%d not allocated, but used_guestinfo_jumbo=%d\n",
+                     idx, vs->used_guestinfo_jumbo);
+#endif
+        }
+        else if ( (vs->guestinfo_jumbo[idx]->key_len == a->key_length) &&
+                  (memcmp(key, vs->guestinfo_jumbo[idx]->key_data,
+                          vs->guestinfo_jumbo[idx]->key_len) == 0) )
+        {
+            vs->guestinfo_jumbo[idx]->val_len = a->value_length;
+            memcpy(vs->guestinfo_jumbo[idx]->val_data, value, a->value_length);
+            break;
+
+        }
+        else if ( (vs->guestinfo_jumbo[idx]->key_len == 0) &&
+                  (free_idx == -1) )
+            free_idx = idx;
+    }
+
+    if ( idx >= vs->used_guestinfo_jumbo )
+    {
+        if ( free_idx == -1 )
+            rc = -EBUSY;
+        else
+        {
+            vs->guestinfo_jumbo[free_idx]->key_len = a->key_length;
+            memcpy(vs->guestinfo_jumbo[free_idx]->key_data,
+                   key, a->key_length);
+            vs->guestinfo_jumbo[free_idx]->val_len = a->value_length;
+            memcpy(vs->guestinfo_jumbo[free_idx]->val_data,
+                   value, a->value_length);
+        }
+    }
+
+    /* Delete any duplicate entry */
+    if ( rc == 0 )
+        hvm_del_guestinfo(vs, key, a->key_length);
+
+    return rc;
+}
+
+static long hvm_get_guestinfo(struct vmport_state *vs,
+                              struct xen_hvm_vmport_guest_info *a,
+                              char *key, char *value,
+                              XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    int idx;
+    long rc = 0;
+
+    if ( a->key_length == 0 )
+    {
+        /*
+         * Here we are iterating on getting all guestinfo entries
+         * using index
+         */
+        idx = a->value_length;
+        if ( idx >= vs->used_guestinfo ||
+             !vs->guestinfo[idx] )
+            rc = -ENOENT;
+        else
+        {
+            a->key_length = vs->guestinfo[idx]->key_len;
+            memcpy(a->data, vs->guestinfo[idx]->key_data, a->key_length);
+            a->value_length = vs->guestinfo[idx]->val_len;
+            memcpy(&a->data[a->key_length], vs->guestinfo[idx]->val_data,
+                   a->value_length);
+            rc = copy_to_guest(arg, a, 1) ? -EFAULT : 0;
+        }
+    }
+    else
+    {
+        for (idx = 0; idx < vs->used_guestinfo; idx++)
+        {
+            if ( vs->guestinfo[idx] &&
+                 (vs->guestinfo[idx]->key_len == a->key_length) &&
+                 (memcmp(key, vs->guestinfo[idx]->key_data,
+                         vs->guestinfo[idx]->key_len) == 0) )
+            {
+                a->value_length = vs->guestinfo[idx]->val_len;
+                memcpy(value, vs->guestinfo[idx]->val_data,
+                       a->value_length);
+                rc = copy_to_guest(arg, a, 1) ? -EFAULT : 0;
+                break;
+            }
+        }
+        if ( idx >= vs->used_guestinfo )
+            rc = -ENOENT;
+    }
+    return rc;
+}
+
+static long hvm_get_guestinfo_jumbo(struct vmport_state *vs,
+                                    struct xen_hvm_vmport_guest_info *a,
+                                    char *key, char *value,
+                                    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    int idx, total_entries;
+    long rc = 0;
+
+    if ( a->key_length == 0 )
+    {
+        /*
+         * Here we are iterating on getting all guestinfo entries
+         * using index
+         */
+        total_entries = vs->used_guestinfo + vs->used_guestinfo_jumbo;
+
+        /* Input index is in a->value_length */
+        if ( (a->value_length < 0) || (a->value_length >= total_entries) )
+        {
+            rc = -ENOENT;
+            return rc;
+        }
+        idx = a->value_length - vs->used_guestinfo;
+        if ( idx >= vs->used_guestinfo_jumbo ||
+             !vs->guestinfo_jumbo[idx] )
+            rc = -ENOENT;
+        else
+        {
+            a->key_length = vs->guestinfo_jumbo[idx]->key_len;
+            memcpy(a->data, vs->guestinfo_jumbo[idx]->key_data, a->key_length);
+            a->value_length = vs->guestinfo_jumbo[idx]->val_len;
+            memcpy(&a->data[a->key_length],
+                   vs->guestinfo_jumbo[idx]->val_data, a->value_length);
+            rc = copy_to_guest(arg, a, 1) ? -EFAULT : 0;
+        }
+    }
+    else
+    {
+        for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+        {
+            if ( vs->guestinfo_jumbo[idx] &&
+                 (vs->guestinfo_jumbo[idx]->key_len == a->key_length) &&
+                 (memcmp(key, vs->guestinfo_jumbo[idx]->key_data,
+                         vs->guestinfo_jumbo[idx]->key_len) == 0) )
+            {
+                a->value_length = vs->guestinfo_jumbo[idx]->val_len;
+                memcpy(value, vs->guestinfo_jumbo[idx]->val_data,
+                       a->value_length);
+                rc = copy_to_guest(arg, a, 1) ? -EFAULT : 0;
+                break;
+            }
+        }
+        if ( idx >= vs->used_guestinfo_jumbo )
+            rc = -ENOENT;
+    }
+    return rc;
+}
+
 #define HVMOP_op_mask 0xff
 
 long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
@@ -5711,6 +6011,18 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
                     break;
                 }
                 break;
+            case HVM_PARAM_VMPORT_BUILD_NUMBER_TIME:
+            case HVM_PARAM_VMPORT_BUILD_NUMBER_VALUE:
+                /*
+                 * These should only ever be set to zero by tools.
+                 * So disallow anything else.
+                 */
+                if ( a.value )
+                {
+                    rc = -EINVAL;
+                    break;
+                }
+                break;
             }
 
             if ( rc == 0 ) 
@@ -6125,6 +6437,172 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
         break;
     }
 
+    case HVMOP_get_vmport_guest_info:
+    case HVMOP_set_vmport_guest_info:
+    {
+        struct xen_hvm_vmport_guest_info a;
+        struct domain *d;
+        char *key = NULL;
+        char *value = NULL;
+        struct vmport_state *vs;
+        int idx, total_entries;
+        vmport_guestinfo_t *add_slots[5];
+        vmport_guestinfo_jumbo_t *add_slots_jumbo[2];
+        int num_slots = 0, num_slots_jumbo = 0, num_free_slots = 0;
+
+        if ( copy_from_guest(&a, arg, 1) )
+            return -EFAULT;
+
+        ASSERT(strlen("guestinfo.") == 10);
+
+#if VMPORT_MAX_KEY_LEN + 10 != VMPORT_GUEST_INFO_KEY_MAX
+#error Need to adjust VMPORT_MAX_KEY_LEN & VMPORT_GUEST_INFO_KEY_MAX
+#endif
+
+#if VMPORT_MAX_VAL_JUMBO_LEN != VMPORT_GUEST_INFO_VAL_MAX
+#error Need to adjust VMPORT_MAX_VAL_JUMBO_LEN & VMPORT_GUEST_INFO_VAL_MAX
+#endif
+
+        if ( a.key_length > strlen("guestinfo.") )
+        {
+            if ( (size_t)a.key_length + (size_t)a.value_length >
+                 sizeof(a.data) )
+                return -EINVAL;
+
+            if ( memcmp(a.data, "guestinfo.", strlen("guestinfo.")) == 0 )
+            {
+                key = &a.data[strlen("guestinfo.")];
+                a.key_length -= strlen("guestinfo.");
+            }
+            else
+                key = &a.data[0];
+            if ( a.key_length > VMPORT_MAX_KEY_LEN )
+            {
+                gdprintk(XENLOG_ERR, "bad key len %d\n", a.key_length);
+                return -EINVAL;
+            }
+            if ( a.value_length > VMPORT_MAX_VAL_JUMBO_LEN )
+            {
+                gdprintk(XENLOG_ERR, "bad val len %d\n", a.value_length);
+                return -EINVAL;
+            }
+            value = key + a.key_length;
+
+        }
+        else if (a.key_length > 0)
+        {
+            if ( (size_t)a.key_length + (size_t)a.value_length >
+                 sizeof(a.data) )
+                return -EINVAL;
+            key = &a.data[0];
+            if ( a.key_length > VMPORT_MAX_KEY_LEN )
+            {
+                gdprintk(XENLOG_ERR, "bad key len %d", a.key_length);
+                return -EINVAL;
+            }
+            if ( a.value_length > VMPORT_MAX_VAL_JUMBO_LEN )
+            {
+                gdprintk(XENLOG_ERR, "bad val len %d\n", a.value_length);
+                return -EINVAL;
+            }
+            value = key + a.key_length;
+
+        }
+        else if ( (a.key_length == 0) && (op == HVMOP_set_vmport_guest_info) )
+            return -EINVAL;
+
+        d = rcu_lock_domain_by_any_id(a.domid);
+        if ( d == NULL )
+            return rc;
+
+        rc = -EINVAL;
+        if ( !is_hvm_domain(d) )
+            goto param_fail9;
+
+        rc = xsm_hvm_param(XSM_TARGET, d, op);
+        if ( rc )
+            goto param_fail9;
+
+        vs = d->arch.hvm_domain.vmport_data;
+        total_entries = vs->used_guestinfo + vs->used_guestinfo_jumbo;
+
+        if ( (a.key_length == 0) && (a.value_length >= total_entries) )
+        {
+            /*
+             * When key length is zero, we are interating on
+             * get-guest-info hypercalls to retrieve all guestinfo
+             * entries using index passed in a.value_length
+             */
+            rc = -E2BIG;
+            goto param_fail9;
+        }
+
+        num_free_slots = 0;
+        for (idx = 0; idx < vs->used_guestinfo; idx++)
+        {
+            if ( vs->guestinfo[idx] &&
+                (vs->guestinfo[idx]->key_len == 0) )
+                num_free_slots++;
+        }
+        if ( num_free_slots < 5 )
+        {
+            num_slots = 5 - num_free_slots;
+            if ( vs->used_guestinfo + num_slots > VMPORT_MAX_NUM_KEY )
+                num_slots = VMPORT_MAX_NUM_KEY - vs->used_guestinfo;
+            for (idx = 0; idx < num_slots; idx++)
+                add_slots[idx] = xzalloc(vmport_guestinfo_t);
+        }
+
+        num_free_slots = 0;
+        for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+        {
+            if ( vs->guestinfo_jumbo[idx] &&
+                 (vs->guestinfo_jumbo[idx]->key_len == 0) )
+                num_free_slots++;
+        }
+        if ( num_free_slots < 1 )
+        {
+            num_slots_jumbo = 1 - num_free_slots;
+            if ( vs->used_guestinfo_jumbo + num_slots_jumbo >
+                 VMPORT_MAX_NUM_JUMBO_KEY )
+                num_slots_jumbo = VMPORT_MAX_NUM_JUMBO_KEY -
+                    vs->used_guestinfo_jumbo;
+            for (idx = 0; idx < num_slots_jumbo; idx++)
+                add_slots_jumbo[idx] = xzalloc(vmport_guestinfo_jumbo_t);
+        }
+
+        spin_lock(&d->arch.hvm_domain.vmport_lock);
+
+        for (idx = 0; idx < num_slots; idx++)
+            vs->guestinfo[vs->used_guestinfo + idx] = add_slots[idx];
+        vs->used_guestinfo += num_slots;
+
+        for (idx = 0; idx < num_slots_jumbo; idx++)
+            vs->guestinfo_jumbo[vs->used_guestinfo_jumbo + idx] =
+                add_slots_jumbo[idx];
+        vs->used_guestinfo_jumbo += num_slots_jumbo;
+
+        if ( op == HVMOP_set_vmport_guest_info )
+        {
+            if ( a.value_length > VMPORT_MAX_VAL_LEN )
+                rc = hvm_set_guestinfo_jumbo(vs, &a, key, value);
+            else
+                rc = hvm_set_guestinfo(vs, &a, key, value);
+        }
+        else
+        {
+            /* Get Guest Info */
+            rc = hvm_get_guestinfo(vs, &a, key, value, arg);
+            if ( rc != 0 )
+                rc = hvm_get_guestinfo_jumbo(vs, &a, key, value, arg);
+        }
+        spin_unlock(&d->arch.hvm_domain.vmport_lock);
+
+    param_fail9:
+        rcu_unlock_domain(d);
+        break;
+    }
+
     default:
     {
         gdprintk(XENLOG_DEBUG, "Bad HVM op %ld.\n", op);
diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index 9f565d6..94e08eb 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -42,6 +42,7 @@
 #include <asm/hvm/vlapic.h>
 #include <asm/hvm/trace.h>
 #include <asm/hvm/emulate.h>
+#include <asm/hvm/vmport.h>
 #include <public/sched.h>
 #include <xen/iocap.h>
 #include <public/hvm/ioreq.h>
diff --git a/xen/arch/x86/hvm/svm/emulate.c b/xen/arch/x86/hvm/svm/emulate.c
index 37a1ece..61002fb 100644
--- a/xen/arch/x86/hvm/svm/emulate.c
+++ b/xen/arch/x86/hvm/svm/emulate.c
@@ -78,6 +78,7 @@ static unsigned long svm_nextrip_insn_length(struct vcpu *v)
         /* ...and the rest of the #VMEXITs */
     case VMEXIT_CR0_SEL_WRITE:
     case VMEXIT_EXCEPTION_BP:
+    case VMEXIT_EXCEPTION_GP:
         break;
     default:
         BUG();
@@ -106,6 +107,7 @@ MAKE_INSTR(VMSAVE, 3, 0x0f, 0x01, 0xdb);
 MAKE_INSTR(STGI,   3, 0x0f, 0x01, 0xdc);
 MAKE_INSTR(CLGI,   3, 0x0f, 0x01, 0xdd);
 MAKE_INSTR(INVLPGA,3, 0x0f, 0x01, 0xdf);
+MAKE_INSTR(IN,     1, 0xed);
 
 static const u8 *const opc_bytes[INSTR_MAX_COUNT] =
 {
@@ -126,6 +128,7 @@ static const u8 *const opc_bytes[INSTR_MAX_COUNT] =
     [INSTR_STGI]   = OPCODE_STGI,
     [INSTR_CLGI]   = OPCODE_CLGI,
     [INSTR_INVLPGA] = OPCODE_INVLPGA,
+    [INSTR_IN] = OPCODE_IN,
 };
 
 static int fetch(struct vcpu *v, u8 *buf, unsigned long addr, int len)
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index b5188e6..f61bd02 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -56,6 +56,7 @@
 #include <asm/hvm/svm/nestedsvm.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/x86_emulate.h>
+#include <asm/hvm/vmport.h>
 #include <public/sched.h>
 #include <asm/hvm/vpt.h>
 #include <asm/hvm/trace.h>
@@ -2065,6 +2066,80 @@ svm_vmexit_do_vmsave(struct vmcb_struct *vmcb,
     return;
 }
 
+static void svm_vmexit_gp_intercept(struct cpu_user_regs *regs, struct vcpu *v)
+{
+    struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
+    unsigned long inst_len = __get_instruction_length(v, INSTR_IN);
+
+    regs->error_code = vmcb->exitinfo1;
+    if ( hvm_long_mode_enabled(v) )
+        HVMTRACE_LONG_C4D(TRAP_GP, TRAP_gp_fault, inst_len,
+                          regs->error_code,
+                          TRC_PAR_LONG(vmcb->exitinfo2));
+    else
+        HVMTRACE_C4D(TRAP_GP, TRAP_gp_fault, inst_len,
+                     regs->error_code, vmcb->exitinfo2);
+
+    if ( inst_len <= 1 && (regs->rdx & 0xffff) == VMPORT_PORT &&
+         vmcb->exitinfo2 == 0 && regs->error_code == 0 )
+    {
+        uint32_t magic = regs->rax;
+
+        if ( magic == VMPORT_MAGIC )
+        {
+            unsigned char bytes[1] = { 0 };
+            int frc = hvm_fetch_from_guest_virt_nofault(bytes, regs->rip,
+                                                        1, PFEC_page_present);
+
+            if ( !frc && bytes[0] == 0xed ) /* in (%dx),%eax */
+            {
+                uint32_t val;
+
+                __update_guest_eip(regs, 1);
+                vmport_ioport(IOREQ_READ, VMPORT_PORT, 4, &val);
+                VMPORT_DBG_LOG(VMPORT_LOG_VMWARE_AFTER,
+                               "gp: VMware ip=%"PRIx64" ax=%"PRIx64
+                               " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                               " si=%"PRIx64" di=%"PRIx64,
+                               regs->rip, regs->rax, regs->rbx, regs->rcx,
+                               regs->rdx, regs->rsi, regs->rdi);
+                return;
+            }
+            else
+            {
+                VMPORT_DBG_LOG(VMPORT_LOG_GP_FAIL_RD_INST,
+                               "gp: VMware? ip=%"PRIx64"=>0x%x(%ld,%d) ax=%"PRIx64
+                               " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                               " si=%"PRIx64" di=%"PRIx64,
+                               regs->rip, bytes[0], inst_len, frc, regs->rax, regs->rbx,
+                               regs->rcx, regs->rdx, regs->rsi, regs->rdi);
+            }
+        }
+        else
+        {
+            VMPORT_DBG_LOG(VMPORT_LOG_GP_NOT_VMWARE,
+                           "gp: ip=%"PRIx64" ax=%"PRIx64" bx=%"PRIx64
+                           " cx=%"PRIx64 " dx=%"PRIx64" si=%"PRIx64
+                           " di=%"PRIx64,
+                           regs->rip, regs->rax, regs->rbx, regs->rcx,
+                           regs->rdx, regs->rsi, regs->rdi);
+            hvm_inject_hw_exception(TRAP_gp_fault, regs->error_code);
+        }
+    }
+    else
+    {
+        VMPORT_DBG_LOG(VMPORT_LOG_GP_UNKNOWN,
+                       "gp: e2=%lx ec=%lx ip=%"PRIx64" (%ld) ax=%"PRIx64
+                       " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64" si=%"PRIx64
+                       " di=%"PRIx64,
+                       (unsigned long)vmcb->exitinfo2,
+                       (unsigned long)regs->error_code,
+                       regs->rip, inst_len, regs->rax, regs->rbx, regs->rcx,
+                       regs->rdx, regs->rsi, regs->rdi);
+        hvm_inject_hw_exception(TRAP_gp_fault, regs->error_code);
+    }
+}
+
 static void svm_vmexit_ud_intercept(struct cpu_user_regs *regs)
 {
     struct hvm_emulate_ctxt ctxt;
@@ -2412,6 +2487,10 @@ void svm_vmexit_handler(struct cpu_user_regs *regs)
         break;
     }
 
+    case VMEXIT_EXCEPTION_GP:
+        svm_vmexit_gp_intercept(regs, v);
+        break;
+
     case VMEXIT_EXCEPTION_UD:
         svm_vmexit_ud_intercept(regs);
         break;
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 21292bb..791c045 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -193,6 +193,7 @@ static int construct_vmcb(struct vcpu *v)
 
     vmcb->_exception_intercepts =
         HVM_TRAP_MASK
+        | (1U << TRAP_gp_fault)
         | (1U << TRAP_no_device);
 
     if ( paging_mode_hap(v->domain) )
diff --git a/xen/arch/x86/hvm/vmport/Makefile b/xen/arch/x86/hvm/vmport/Makefile
new file mode 100644
index 0000000..2648fae
--- /dev/null
+++ b/xen/arch/x86/hvm/vmport/Makefile
@@ -0,0 +1 @@
+obj-y += vmport.o
diff --git a/xen/arch/x86/hvm/vmport/includeCheck.h b/xen/arch/x86/hvm/vmport/includeCheck.h
new file mode 100644
index 0000000..26e0d59
--- /dev/null
+++ b/xen/arch/x86/hvm/vmport/includeCheck.h
@@ -0,0 +1,17 @@
+/*
+ * includeCheck.h
+ *
+ * Copyright (C) 2012 Verizon Corporation
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License Version 2 (GPLv2)
+ * as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details. <http://www.gnu.org/licenses/>.
+ */
+/*
+ * Nothing here.  Just to use backdoor_def.h without change.
+ */
diff --git a/xen/arch/x86/hvm/vmport/vmport.c b/xen/arch/x86/hvm/vmport/vmport.c
new file mode 100644
index 0000000..64609f2
--- /dev/null
+++ b/xen/arch/x86/hvm/vmport/vmport.c
@@ -0,0 +1,1436 @@
+/*
+ * HVM VMPORT emulation
+ *
+ * Copyright (C) 2012 Verizon Corporation
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License Version 2 (GPLv2)
+ * as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details. <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * VMware Tools running in a DOMU will do "info-get" and "info-set"
+ * guestinfo commands to get and set keys and values. Inside the VM,
+ * vmtools at its lower level will feed the command string 4 bytes
+ * at a time into the VMWARE magic port using the IN
+ * instruction. Each 4 byte mini-rpc will get handled
+ * vmport_io()-->vmport_rpc()-->vmport_process_packet()-->
+ * vmport_process_send_payload()-->vmport_send() and the command
+ * string will get accumulated into a channels send_buffer.  When
+ * the full length of the string has been accumulated, then this
+ * code copies the send_buffer into a free
+ * vmport_state->channel-->receive_bucket.buffer
+ * VMware tools then does RECVSIZE and RECVPAYLOAD messages, the
+ * latter then reads 4 bytes at a time using the IN instruction (for
+ * the info-get case).  Then a final RECVSTATUS message is sent to
+ * finish up
+ */
+
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/mm.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/trace.h>
+#include <xen/event.h>
+#include <xen/hypercall.h>
+#include <asm/current.h>
+#include <asm/cpufeature.h>
+#include <asm/processor.h>
+#include <asm/hvm/hvm.h>
+#include <asm/hvm/support.h>
+#include <asm/hvm/trace.h>
+#include <asm/hvm/vmport.h>
+
+#include "backdoor_def.h"
+#include "guest_msg_def.h"
+#include <asm/hvm/support.h>
+#include <asm/hvm/vlapic.h>
+#include <public/hvm/save.h>
+#include <public/arch-x86/hvm/save.h>
+#include <xen/cper.h>
+
+#define VMWARE_PROTO_TO_GUEST        0x4f4c4354
+#define VMWARE_PROTO_FROM_GUEST      0x49435052
+
+/* Some more VMware defines */
+#define VMWARE_GUI_AUTO_GRAB              0x001
+#define VMWARE_GUI_AUTO_UNGRAB            0x002
+#define VMWARE_GUI_AUTO_SCROLL            0x004
+#define VMWARE_GUI_AUTO_RAISE             0x008
+#define VMWARE_GUI_EXCHANGE_SELECTIONS    0x010
+#define VMWARE_GUI_WARP_CURSOR_ON_UNGRAB  0x020
+#define VMWARE_GUI_FULL_SCREEN            0x040
+
+#define VMWARE_GUI_TO_FULL_SCREEN         0x080
+#define VMWARE_GUI_TO_WINDOW              0x100
+
+#define VMWARE_GUI_AUTO_RAISE_DISABLED    0x200
+
+#define VMWARE_GUI_SYNC_TIME              0x400
+
+/* When set, toolboxes should not show the cursor options page. */
+#define VMWARE_DISABLE_CURSOR_OPTIONS     0x800
+
+/* End of more VMware defines */
+
+#define GUESTINFO_NOTFOUND      500
+#define GUESTINFO_VALTOOLONG    1
+#define GUESTINFO_KEYTOOLONG    2
+#define GUESTINFO_TOOMANYKEYS   3
+
+
+#ifndef NDEBUG
+unsigned int opt_vmport_debug __read_mostly;
+integer_param("vmport_debug", opt_vmport_debug);
+#endif
+
+/* Note: VMPORT_PORT and VMPORT_MAGIC is also defined as BDOOR_PORT
+ * and BDOOR_MAGIC in backdoor_def.h Defined in vmport.h also.
+ */
+
+inline uint16_t get_low_bits(uint32_t bits)
+{
+    return bits & 0xffff;
+}
+
+inline uint16_t get_high_bits(uint32_t bits)
+{
+    return bits >> 16;
+}
+
+inline uint32_t set_high_bits(uint32_t b, uint32_t val)
+{
+    return (val << 16) | get_low_bits(b);
+}
+
+inline void set_status(struct cpu_user_regs *ur, uint16_t val)
+{
+    /* VMware defines this to be only 32 bits */
+    ur->rcx = (val << 16) | (ur->rcx & 0xffff);
+}
+
+#ifndef NDEBUG
+void vmport_safe_print(char *prefix, int len, const char *msg)
+{
+    unsigned char c;
+    unsigned int end = len;
+    unsigned int i, k;
+    char out[4 * (VMPORT_MAX_SEND_BUF + 1) * 3 + 6];
+
+    if ( end > (sizeof(out) / 3 - 6) )
+        end = sizeof(out) / 3 - 6;
+    out[0] = '<';
+    k = 1;
+    for (i = 0; i < end; i++)
+    {
+        c = msg[i];
+        if ( (c == '^') || (c == '\\') || (c == '>') )
+        {
+            out[k++] = '\\';
+            out[k++] = c;
+        }
+        else if ( (c >= ' ') && (c <= '~') )
+            out[k++] = c;
+        else if ( c < ' ' )
+        {
+            out[k++] = '^';
+            out[k++] = c ^ 0x40;
+        }
+        else
+        {
+            snprintf(&out[k], sizeof(out) - k, "\\%02x", c);
+            k += 3;
+        }
+    }
+    out[k++] = '>';
+    if ( len > end )
+    {
+        out[k++] = '.';
+        out[k++] = '.';
+        out[k++] = '.';
+    }
+    out[k++] = 0;
+    gdprintk(XENLOG_DEBUG, "%s%d(%d,%d,%zu)%s\n", prefix, end, len, k,
+             sizeof(out), out);
+}
+#endif
+
+/*
+ * Copy message into a jumbo bucket buffer which vmtools will use to
+ * read from 4 bytes at a time until done with it
+ */
+void vmport_send_jumbo(struct hvm_domain *hd, vmport_channel_t *c,
+                       const char *msg)
+{
+    unsigned int cur_recv_len = strlen(msg) + 1;
+    vmport_jumbo_bucket_t *b = &(c->jumbo_recv_bkt);
+
+    b->ctl.recv_len = cur_recv_len;
+    b->ctl.recv_idx = 0;
+
+    memset(b->recv_buf, 0, sizeof(b->recv_buf));
+
+    if ( cur_recv_len >= (sizeof(b->recv_buf) - 1) )
+    {
+        VMPORT_DBG_LOG(VMPORT_LOG_ERROR,
+                       "VMware jumbo recv_len=%d >= %ld",
+                       cur_recv_len, sizeof(b->recv_buf) - 1);
+        cur_recv_len = sizeof(b->recv_buf) - 1;
+    }
+
+    memcpy(b->recv_buf, msg, cur_recv_len);
+
+    c->ctl.jumbo = 1;
+}
+
+/*
+ * Copy message into a free receive bucket buffer which vmtools will use to
+ * read from 4 bytes at a time until done with it
+ */
+void vmport_send_normal(struct hvm_domain *hd, vmport_channel_t *c,
+                        const char *msg)
+{
+    unsigned int cur_recv_len = strlen(msg) + 1;
+    unsigned int my_bkt = c->ctl.recv_write;
+    unsigned int next_bkt = my_bkt + 1;
+    vmport_bucket_t *b;
+
+    if ( next_bkt >= VMPORT_MAX_BKTS )
+        next_bkt = 0;
+
+    if ( next_bkt == c->ctl.recv_read )
+    {
+#ifndef NDEBUG
+        if ( opt_vmport_debug & VMPORT_LOG_SKIP_SEND )
+        {
+            char prefix[30];
+
+            snprintf(prefix, sizeof(prefix),
+                     "VMware _send skipped %d (%d, %d) ",
+                     c->ctl.chan_id, my_bkt, c->ctl.recv_read);
+            prefix[sizeof(prefix) - 1] = 0;
+            vmport_safe_print(prefix, cur_recv_len, msg);
+        }
+#endif
+        return;
+    }
+
+    c->ctl.recv_write = next_bkt;
+    b = &c->recv_bkt[my_bkt];
+#ifndef NDEBUG
+    if ( opt_vmport_debug & VMPORT_LOG_SEND )
+    {
+        char prefix[30];
+
+        snprintf(prefix, sizeof(prefix), "VMware _send %d (%d) ",
+                 c->ctl.chan_id, my_bkt);
+        prefix[sizeof(prefix) - 1] = 0;
+        vmport_safe_print(prefix, cur_recv_len, msg);
+    }
+#endif
+
+    b->ctl.recv_len = cur_recv_len;
+    b->ctl.recv_idx = 0;
+    memset(b->recv_buf, 0, sizeof(b->recv_buf));
+    if ( cur_recv_len >= (sizeof(b->recv_buf) - 1) )
+    {
+        VMPORT_DBG_LOG(VMPORT_LOG_ERROR, "VMware recv_len=%d >= %zd",
+                       cur_recv_len, sizeof(b->recv_buf) - 1);
+        cur_recv_len = sizeof(b->recv_buf) - 1;
+    }
+    memcpy(b->recv_buf, msg, cur_recv_len);
+}
+
+void vmport_send(struct hvm_domain *hd, vmport_channel_t *c,
+                 const char *msg)
+{
+    unsigned int cur_recv_len = strlen(msg) + 1;
+
+    if ( cur_recv_len > VMPORT_MAX_VAL_LEN )
+        vmport_send_jumbo(hd, c, msg);
+    else
+        vmport_send_normal(hd, c, msg);
+}
+
+void vmport_ctrl_send(struct hvm_domain *hd, char *msg)
+{
+    struct vmport_state *vs = hd->vmport_data;
+    unsigned int i;
+
+    hd->vmport_data->ping_time = get_sec();
+    spin_lock(&hd->vmport_lock);
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        if ( vs->chans[i].ctl.proto_num == VMWARE_PROTO_TO_GUEST )
+            vmport_send(hd, &vs->chans[i], msg);
+    }
+    spin_unlock(&hd->vmport_lock);
+}
+
+void vmport_flush(struct hvm_domain *hd)
+{
+    VMPORT_DBG_LOG(VMPORT_LOG_FLUSH, "VMware flush");
+    spin_lock(&hd->vmport_lock);
+    memset(&hd->vmport_data->chans, 0, sizeof(hd->vmport_data->chans));
+    spin_unlock(&hd->vmport_lock);
+}
+
+void vmport_sweep(struct hvm_domain *hd, unsigned long now_time)
+{
+    struct vmport_state *vs = hd->vmport_data;
+    unsigned int i;
+
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        if ( vs->chans[i].ctl.proto_num )
+        {
+            vmport_channel_t *c = &vs->chans[i];
+            long delta = now_time - c->ctl.active_time;
+
+            if ( delta >= 80 )
+            {
+                VMPORT_DBG_LOG(VMPORT_LOG_SWEEP, "VMware flush %d. delta=%ld",
+                               c->ctl.chan_id, delta);
+                /* Return channel to free pool */
+                c->ctl.proto_num = 0;
+            }
+        }
+    }
+}
+
+vmport_channel_t *vmport_new_chan(struct vmport_state *vs,
+                                  unsigned long now_time)
+{
+    unsigned int i;
+
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        if ( !vs->chans[i].ctl.proto_num )
+        {
+            vmport_channel_t *c = &vs->chans[i];
+
+            c->ctl.chan_id = i;
+            c->ctl.cookie = vs->open_cookie++;
+            c->ctl.active_time = now_time;
+            c->ctl.send_len = 0;
+            c->ctl.send_idx = 0;
+            c->ctl.recv_read = 0;
+            c->ctl.recv_write = 0;
+            return c;
+        }
+    }
+    return NULL;
+}
+
+void vmport_process_send_size(struct hvm_domain *hd, vmport_channel_t *c,
+                              struct cpu_user_regs *ur)
+{
+    /* vmware tools often send a 0 byte request size. */
+    c->ctl.send_len = ur->rbx;
+    c->ctl.send_idx = 0;
+
+    set_status(ur, MESSAGE_STATUS_SUCCESS);
+#ifndef NDEBUG
+    if ( (opt_vmport_debug & VMPORT_LOG_SEND_SIZE_ALL) ||
+         ((opt_vmport_debug & VMPORT_LOG_SEND_SIZE) && (c->ctl.send_len)) )
+        gdprintk(XENLOG_DEBUG, "VMware SENDSIZE %d is %d\n",
+                 c->ctl.chan_id, c->ctl.send_len);
+#endif
+}
+
+/* ret_buffer is in/out param */
+int vmport_get_guestinfo(struct hvm_domain *hd, struct vmport_state *vs,
+                         char *a_info_key, unsigned int a_key_len,
+                         char *ret_buffer, unsigned int ret_buffer_len)
+{
+    unsigned int idx;
+
+    for (idx = 0; idx < vs->used_guestinfo; idx++)
+    {
+        if ( vs->guestinfo[idx] &&
+             (vs->guestinfo[idx]->key_len == a_key_len) &&
+             (memcmp(a_info_key, vs->guestinfo[idx]->key_data,
+                     vs->guestinfo[idx]->key_len) == 0) )
+        {
+#ifndef NDEBUG
+            if ( opt_vmport_debug & VMPORT_LOG_INFO_GET )
+            {
+                char prefix[30];
+
+                snprintf(prefix, sizeof(prefix),
+                         "VMware info-get val:");
+                vmport_safe_print(prefix, vs->guestinfo[idx]->val_len,
+                                  vs->guestinfo[idx]->val_data);
+            }
+#endif
+            snprintf(ret_buffer, ret_buffer_len - 1, "1 %.*s",
+                     (int)vs->guestinfo[idx]->val_len,
+                     vs->guestinfo[idx]->val_data);
+            return idx;
+        }
+    }
+
+    for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+    {
+        if ( vs->guestinfo_jumbo[idx] &&
+             (vs->guestinfo_jumbo[idx]->key_len == a_key_len) &&
+             (memcmp(a_info_key, vs->guestinfo_jumbo[idx]->key_data,
+                     vs->guestinfo_jumbo[idx]->key_len) == 0) )
+        {
+#ifndef NDEBUG
+            if ( opt_vmport_debug & VMPORT_LOG_INFO_GET )
+            {
+                char prefix[30];
+
+                snprintf(prefix, sizeof(prefix),
+                         "VMware info-get val:");
+                vmport_safe_print(prefix, vs->guestinfo_jumbo[idx]->val_len,
+                                  vs->guestinfo_jumbo[idx]->val_data);
+            }
+#endif
+            snprintf(ret_buffer, ret_buffer_len - 1, "1 %.*s",
+                     (int)vs->guestinfo_jumbo[idx]->val_len,
+                     vs->guestinfo_jumbo[idx]->val_data);
+            return idx;
+        }
+    }
+    return GUESTINFO_NOTFOUND;
+}
+
+int vmport_set_guestinfo(struct vmport_state *vs, int a_key_len,
+                         unsigned int a_val_len, char *a_info_key, char *val)
+{
+    unsigned int idx;
+    int free_idx = -1, rc = 0;
+
+#ifndef NDEBUG
+    gdprintk(XENLOG_WARNING, "vmport_set_guestinfo a_val_len=%d\n", a_val_len);
+#endif
+
+    if ( a_key_len <= VMPORT_MAX_KEY_LEN )
+    {
+        if ( a_val_len <= VMPORT_MAX_VAL_LEN )
+        {
+            for (idx = 0; idx < vs->used_guestinfo; idx++)
+            {
+                if ( !vs->guestinfo[idx] )
+                {
+#ifndef NDEBUG
+                    gdprintk(XENLOG_WARNING,
+                             "idx=%d not allocated, but used_guestinfo=%d\n",
+                             idx, vs->used_guestinfo);
+#endif
+                }
+                else if ( (vs->guestinfo[idx]->key_len == a_key_len) &&
+                          (memcmp(a_info_key, vs->guestinfo[idx]->key_data,
+                                  vs->guestinfo[idx]->key_len) == 0) )
+                {
+                    vs->guestinfo[idx]->val_len = a_val_len;
+                    memcpy(vs->guestinfo[idx]->val_data, val, a_val_len);
+                    break;
+                }
+                else if ( (vs->guestinfo[idx]->key_len == 0) &&
+                          (free_idx == -1) )
+                    free_idx = idx;
+            }
+            if ( idx >= vs->used_guestinfo )
+            {
+                if ( free_idx == -1 )
+                    rc = GUESTINFO_TOOMANYKEYS;
+                else
+                {
+                    vs->guestinfo[free_idx]->key_len = a_key_len;
+                    memcpy(vs->guestinfo[free_idx]->key_data,
+                           a_info_key, a_key_len);
+                    vs->guestinfo[free_idx]->val_len = a_val_len;
+                    memcpy(vs->guestinfo[free_idx]->val_data,
+                           val, a_val_len);
+                }
+            }
+        }
+        else
+            rc = GUESTINFO_VALTOOLONG;
+    }
+    else
+        rc = GUESTINFO_KEYTOOLONG;
+    if ( !rc )
+    {
+        for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+        {
+            if ( !vs->guestinfo_jumbo[idx] )
+            {
+#ifndef NDEBUG
+                gdprintk(XENLOG_WARNING,
+                         "idx=%d not allocated used_guestinfo_jumbo=%d\n",
+                         idx, vs->used_guestinfo_jumbo);
+#endif
+            }
+            else if ( (vs->guestinfo_jumbo[idx]->key_len == a_key_len) &&
+                      (memcmp(a_info_key,
+                              vs->guestinfo_jumbo[idx]->key_data,
+                              vs->guestinfo_jumbo[idx]->key_len) == 0) )
+            {
+                vs->guestinfo_jumbo[idx]->key_len = 0;
+                vs->guestinfo_jumbo[idx]->val_len = 0;
+                break;
+            }
+        }
+    }
+    return rc;
+}
+
+int vmport_set_guestinfo_jumbo(struct vmport_state *vs, int a_key_len,
+                               int a_val_len, char *a_info_key, char *val)
+{
+    unsigned int idx;
+    int free_idx = -1, rc = 0;
+
+#ifndef NDEBUG
+    gdprintk(XENLOG_WARNING, "vmport_set_guestinfo_jumbo a_val_len=%d\n",
+             a_val_len);
+#endif
+
+    if ( a_key_len <= VMPORT_MAX_KEY_LEN )
+    {
+        if ( a_val_len <= VMPORT_MAX_VAL_JUMBO_LEN )
+        {
+            for (idx = 0; idx < vs->used_guestinfo_jumbo; idx++)
+            {
+                if ( !vs->guestinfo_jumbo[idx] )
+                {
+#ifndef NDEBUG
+                    gdprintk(XENLOG_WARNING,
+                             "idx=%d not allocated; used_guestinfo_jumbo=%d\n",
+                             idx, vs->used_guestinfo_jumbo);
+#endif
+                }
+                else if ( (vs->guestinfo_jumbo[idx]->key_len == a_key_len) &&
+                          (memcmp(a_info_key,
+                                  vs->guestinfo_jumbo[idx]->key_data,
+                                  vs->guestinfo_jumbo[idx]->key_len) == 0) )
+                {
+
+                    vs->guestinfo_jumbo[idx]->val_len = a_val_len;
+                    memcpy(vs->guestinfo_jumbo[idx]->val_data, val, a_val_len);
+                    break;
+                }
+                else if ( (vs->guestinfo_jumbo[idx]->key_len == 0) &&
+                          (free_idx == -1) )
+                    free_idx = idx;
+            }
+            if ( idx >= vs->used_guestinfo_jumbo )
+            {
+                if ( free_idx == -1 )
+                    rc = GUESTINFO_TOOMANYKEYS;
+                else
+                {
+                    vs->guestinfo_jumbo[free_idx]->key_len = a_key_len;
+                    memcpy(vs->guestinfo_jumbo[free_idx]->key_data,
+                           a_info_key, a_key_len);
+                    vs->guestinfo_jumbo[free_idx]->val_len = a_val_len;
+                    memcpy(vs->guestinfo_jumbo[free_idx]->val_data,
+                           val, a_val_len);
+                }
+            }
+        }
+        else
+            rc = GUESTINFO_VALTOOLONG;
+    }
+    else
+        rc = GUESTINFO_KEYTOOLONG;
+    if ( !rc )
+    {
+        for (idx = 0; idx < vs->used_guestinfo; idx++)
+        {
+            if ( !vs->guestinfo[idx] )
+            {
+#ifndef NDEBUG
+                gdprintk(XENLOG_WARNING,
+                         "idx=%d not allocated, but used_guestinfo=%d\n",
+                         idx, vs->used_guestinfo);
+#endif
+            }
+            else if ( (vs->guestinfo[idx]->key_len == a_key_len) &&
+                      (memcmp(a_info_key,
+                              vs->guestinfo[idx]->key_data,
+                              vs->guestinfo[idx]->key_len) == 0) )
+            {
+                vs->guestinfo[idx]->key_len = 0;
+                vs->guestinfo[idx]->val_len = 0;
+                break;
+            }
+        }
+    }
+    return rc;
+}
+
+void vmport_process_send_payload(struct hvm_domain *hd, vmport_channel_t *c,
+                                 struct cpu_user_regs *ur,
+                                 unsigned long now_time)
+{
+    /* Accumulate 4 bytes of paload into send_buf using offset */
+    if ( c->ctl.send_idx < VMPORT_MAX_SEND_BUF )
+        c->send_buf[c->ctl.send_idx] = ur->rbx;
+
+    c->ctl.send_idx++;
+    set_status(ur, MESSAGE_STATUS_SUCCESS);
+
+    if ( c->ctl.send_idx * 4 >= c->ctl.send_len )
+    {
+
+        /* We are done accumulating so handle the command */
+
+        if ( c->ctl.send_idx < VMPORT_MAX_SEND_BUF )
+            ((char *)c->send_buf)[c->ctl.send_len] = 0;
+#ifndef NDEBUG
+        if ( opt_vmport_debug & VMPORT_LOG_RPC )
+        {
+            char prefix[30];
+
+            snprintf(prefix, sizeof(prefix),
+                     "VMware RPC %d (%d) ", c->ctl.chan_id, c->ctl.recv_read);
+            prefix[sizeof(prefix) - 1] = 0;
+            vmport_safe_print(prefix, c->ctl.send_len, (char *)c->send_buf);
+        }
+#endif
+        if ( c->ctl.proto_num == VMWARE_PROTO_FROM_GUEST )
+        {
+            /*
+             * Eaxmples of messages:
+             *
+             *   log toolbox: Version: build-341836
+             *   SetGuestInfo  4 build-341836
+             *   info-get guestinfo.ip
+             *   info-set guestinfo.ip joe
+             *
+             */
+
+            char *build = NULL;
+            char *info_key = NULL;
+            char *ret_msg = "1 ";
+            char ret_buffer[2 + VMPORT_MAX_VAL_JUMBO_LEN + 2];
+
+            if ( strncmp((char *)c->send_buf, "log toolbox: Version: build-",
+                         strlen("log toolbox: Version: build-")) == 0 )
+
+                build = (char *)c->send_buf +
+                    strlen("log toolbox: Version: build-");
+
+            else if ( strncmp((char *)c->send_buf, "SetGuestInfo  4 build-",
+                              strlen("SetGuestInfo  4 build-")) == 0 )
+
+                build = (char *)c->send_buf + strlen("SetGuestInfo  4 build-");
+
+            else if ( strncmp((char *)c->send_buf, "info-get guestinfo.",
+                              strlen("info-get guestinfo.")) == 0 )
+            {
+
+                unsigned int a_key_len = c->ctl.send_len -
+                    strlen("info-get guestinfo.");
+                int rc;
+                struct vmport_state *vs = hd->vmport_data;
+
+                info_key = (char *)c->send_buf + strlen("info-get guestinfo.");
+#ifndef NDEBUG
+                if ( opt_vmport_debug & VMPORT_LOG_INFO_GET )
+                {
+                    char prefix[30];
+
+                    snprintf(prefix, sizeof(prefix),
+                             "VMware info-get key:");
+                    vmport_safe_print(prefix, a_key_len, info_key);
+                }
+#endif
+                if ( a_key_len <= VMPORT_MAX_KEY_LEN )
+                {
+
+                    rc = vmport_get_guestinfo(hd, vs, info_key, a_key_len,
+                                              ret_buffer, sizeof(ret_buffer));
+                    if ( rc == GUESTINFO_NOTFOUND )
+                        ret_msg = "0 No value found";
+                    else
+                        ret_msg = ret_buffer;
+                }
+                else
+                    ret_msg = "0 Key is too long";
+
+            }
+            else if ( strncmp((char *)c->send_buf, "info-set guestinfo.",
+                              strlen("info-set guestinfo.")) == 0 )
+            {
+                char *val;
+                unsigned int rest_len = c->ctl.send_len -
+                    strlen("info-set guestinfo.");
+
+                info_key = (char *)c->send_buf + strlen("info-set guestinfo.");
+                val = strstr(info_key, " ");
+                if ( val )
+                {
+                    unsigned int a_key_len = val - info_key;
+                    unsigned int a_val_len = rest_len - a_key_len - 1;
+                    int rc;
+                    struct vmport_state *vs = hd->vmport_data;
+
+                    val++;
+#ifndef NDEBUG
+                    if ( opt_vmport_debug & VMPORT_LOG_INFO_SET )
+                    {
+                        char prefix[30];
+
+                        snprintf(prefix, sizeof(prefix),
+                                 "VMware info-set key:");
+                        vmport_safe_print(prefix, a_key_len, info_key);
+                        snprintf(prefix, sizeof(prefix),
+                                 "VMware info-set val:");
+                        vmport_safe_print(prefix, a_val_len, val);
+                    }
+#endif
+                    if ( a_val_len > VMPORT_MAX_VAL_LEN )
+                        rc = vmport_set_guestinfo_jumbo(vs, a_key_len,
+                                                        a_val_len,
+                                                        info_key, val);
+                    else
+                        rc = vmport_set_guestinfo(vs, a_key_len, a_val_len,
+                                                  info_key, val);
+                    if ( rc == 0 )
+                        ret_msg = "1 ";
+                    if ( rc == GUESTINFO_VALTOOLONG )
+                        ret_msg = "0 Value too long";
+                    if ( rc == GUESTINFO_KEYTOOLONG )
+                        ret_msg = "0 Key is too long";
+                    if ( rc == GUESTINFO_TOOMANYKEYS )
+                        ret_msg = "0 Too many keys";
+
+
+                }
+                else
+                {
+#ifndef NDEBUG
+                    if ( opt_vmport_debug & VMPORT_LOG_INFO_SET )
+                    {
+                        char prefix[30];
+
+                        snprintf(prefix, sizeof(prefix),
+                                 "VMware info-set missing val; key:");
+                        vmport_safe_print(prefix, rest_len, info_key);
+                    }
+#endif
+                    ret_msg = "0 Two and exactly two arguments expected";
+                }
+            }
+
+            vmport_send(hd, c, ret_msg);
+            if ( build )
+            {
+                long val = 0;
+                char *p = build;
+
+                while ( *p )
+                {
+                    if ( *p < '0' || *p > '9' )
+                        break;
+                    val = val * 10 + *p - '0';
+                    p++;
+                };
+
+                hd->params[HVM_PARAM_VMPORT_BUILD_NUMBER_VALUE] = val;
+                hd->params[HVM_PARAM_VMPORT_BUILD_NUMBER_TIME] = now_time;
+#ifndef NDEBUG
+                if ( opt_vmport_debug & VMPORT_LOG_BUILD )
+                {
+                    char prefix[30];
+
+                    snprintf(prefix, sizeof(prefix),
+                             "VMware build %ld ", val);
+                    vmport_safe_print(prefix, p - build, build);
+                }
+#endif
+            }
+        }
+        else
+        {
+            unsigned int my_bkt = c->ctl.recv_read - 1;
+            vmport_bucket_t *b;
+
+            if ( my_bkt >= VMPORT_MAX_BKTS )
+                my_bkt = VMPORT_MAX_BKTS - 1;
+            b = &c->recv_bkt[my_bkt];
+            b->ctl.recv_len = 0;
+        }
+    }
+}
+
+void vmport_process_recv_size(struct hvm_domain *hd, vmport_channel_t *c,
+                              struct cpu_user_regs *ur)
+{
+    vmport_bucket_t *b;
+    vmport_jumbo_bucket_t *jb;
+    int16_t recv_len;
+
+    if ( c->ctl.jumbo )
+    {
+        jb = &c->jumbo_recv_bkt;
+        recv_len = jb->ctl.recv_len;
+    }
+    else
+    {
+        b = &c->recv_bkt[c->ctl.recv_read];
+        recv_len = b->ctl.recv_len;
+    }
+    if ( recv_len )
+    {
+        set_status(ur, MESSAGE_STATUS_DORECV | MESSAGE_STATUS_SUCCESS);
+        ur->rdx = set_high_bits(ur->rdx, MESSAGE_TYPE_SENDSIZE);
+        ur->rbx = recv_len;
+    }
+    else
+        set_status(ur, MESSAGE_STATUS_SUCCESS);
+#ifndef NDEBUG
+    if ( (opt_vmport_debug & VMPORT_LOG_RECV_SIZE_ALL) ||
+         ((opt_vmport_debug & VMPORT_LOG_RECV_SIZE) && (recv_len)) )
+        gdprintk(XENLOG_DEBUG, "VMware RECVSIZE %d is %d.\n",
+                 c->ctl.chan_id, recv_len);
+#endif
+}
+
+void vmport_process_recv_payload(struct hvm_domain *hd, vmport_channel_t *c,
+                                 struct cpu_user_regs *ur)
+{
+    vmport_bucket_t *b;
+    vmport_jumbo_bucket_t *jb;
+
+    if ( c->ctl.jumbo )
+    {
+        jb = &c->jumbo_recv_bkt;
+        ur->rbx = jb->recv_buf[jb->ctl.recv_idx++];
+    }
+    else
+    {
+        b = &c->recv_bkt[c->ctl.recv_read];
+        if ( b->ctl.recv_idx < VMPORT_MAX_RECV_BUF )
+            ur->rbx = b->recv_buf[b->ctl.recv_idx++];
+        else
+            ur->rbx = 0;
+    }
+
+    set_status(ur, MESSAGE_STATUS_SUCCESS);
+    ur->rdx = set_high_bits(ur->rdx, MESSAGE_TYPE_SENDPAYLOAD);
+}
+
+void vmport_process_recv_status(struct hvm_domain *hd, vmport_channel_t *c,
+                                struct cpu_user_regs *ur)
+{
+    vmport_bucket_t *b;
+    vmport_jumbo_bucket_t *jb;
+
+    set_status(ur, MESSAGE_STATUS_SUCCESS);
+
+    if ( c->ctl.jumbo )
+    {
+        c->ctl.jumbo = 0;
+        /* add debug here */
+        jb = &c->jumbo_recv_bkt;
+        return;
+    }
+
+    b = &c->recv_bkt[c->ctl.recv_read];
+
+#ifndef NDEBUG
+    if ( unlikely(opt_vmport_debug & VMPORT_LOG_RECV_STATUS) )
+    {
+        char prefix[30];
+
+        snprintf(prefix, sizeof(prefix),
+                 "VMware RECVSTATUS %d (%d) ",
+                 c->ctl.chan_id, c->ctl.recv_read);
+        prefix[sizeof(prefix) - 1] = 0;
+        vmport_safe_print(prefix, b->ctl.recv_len, (char *)b->recv_buf);
+    }
+#endif
+    c->ctl.recv_read++;
+    if ( c->ctl.recv_read >= VMPORT_MAX_BKTS )
+        c->ctl.recv_read = 0;
+}
+
+void vmport_process_close(struct hvm_domain *hd, vmport_channel_t *c,
+                          struct cpu_user_regs *ur)
+{
+    /* Return channel to free pool */
+    c->ctl.proto_num = 0;
+    set_status(ur, MESSAGE_STATUS_SUCCESS);
+    VMPORT_DBG_LOG(VMPORT_LOG_CLOSE, "VMware CLOSE %d",
+                   c->ctl.chan_id);
+}
+
+void vmport_process_packet(struct hvm_domain *hd, vmport_channel_t *c,
+                           struct cpu_user_regs *ur, unsigned int sub_cmd,
+                           unsigned long now_time)
+{
+    c->ctl.active_time = now_time;
+
+    switch (sub_cmd)
+    {
+    case MESSAGE_TYPE_SENDSIZE:
+        vmport_process_send_size(hd, c, ur);
+        break;
+
+    case MESSAGE_TYPE_SENDPAYLOAD:
+        vmport_process_send_payload(hd, c, ur, now_time);
+        break;
+
+    case MESSAGE_TYPE_RECVSIZE:
+        vmport_process_recv_size(hd, c, ur);
+        break;
+
+    case MESSAGE_TYPE_RECVPAYLOAD:
+        vmport_process_recv_payload(hd, c, ur);
+        break;
+
+    case MESSAGE_TYPE_RECVSTATUS:
+        vmport_process_recv_status(hd, c, ur);
+        break;
+
+    case MESSAGE_TYPE_CLOSE:
+        vmport_process_close(hd, c, ur);
+        break;
+
+    default:
+        ur->rcx = 0;
+        break;
+    }
+}
+
+void vmport_rpc(struct hvm_domain *hd, struct cpu_user_regs *ur)
+{
+    unsigned int sub_cmd = get_high_bits(ur->rcx);
+    vmport_channel_t *c = NULL;
+    uint16_t msg_id;
+    uint32_t msg_cookie;
+    unsigned long now_time = get_sec();
+    long delta = now_time - hd->vmport_data->ping_time;
+
+    if ( delta > hd->params[HVM_PARAM_VMPORT_RESET_TIME] )
+    {
+        VMPORT_DBG_LOG(VMPORT_LOG_PING, "VMware ping. delta=%ld",
+                       delta);
+        vmport_ctrl_send(hd, "reset");
+    }
+    spin_lock(&hd->vmport_lock);
+    vmport_sweep(hd, now_time);
+    do {
+        /* Check to see if a new open request is happening... */
+        if ( MESSAGE_TYPE_OPEN == sub_cmd )
+        {
+            c = vmport_new_chan(hd->vmport_data, now_time);
+            if ( NULL == c )
+            {
+                VMPORT_DBG_LOG(VMPORT_LOG_ERROR,
+                               "VMware failed to find a free channel");
+                break;
+            }
+
+            /* Attach the apropriate protocol the the channel */
+            c->ctl.proto_num = ur->rbx & ~GUESTMSG_FLAG_COOKIE;
+            set_status(ur, MESSAGE_STATUS_SUCCESS);
+            ur->rdx = set_high_bits(ur->rdx, c->ctl.chan_id);
+            ur->rdi = get_low_bits(c->ctl.cookie);
+            ur->rsi = get_high_bits(c->ctl.cookie);
+            VMPORT_DBG_LOG(VMPORT_LOG_OPEN, "VMware OPEN %d p=%x",
+                           c->ctl.chan_id, c->ctl.proto_num);
+            if ( c->ctl.proto_num == VMWARE_PROTO_TO_GUEST )
+                vmport_send(hd, c, "reset");
+            break;
+        }
+
+        msg_id = get_high_bits(ur->rdx);
+        msg_cookie = set_high_bits(ur->rdi, ur->rsi);
+        if ( msg_id >= VMPORT_MAX_CHANS )
+        {
+            VMPORT_DBG_LOG(VMPORT_LOG_ERROR, "VMware chan id err %d >= %d",
+                           msg_id, VMPORT_MAX_CHANS);
+            break;
+        }
+        c = &hd->vmport_data->chans[msg_id];
+        if ( !c->ctl.proto_num )
+        {
+            VMPORT_DBG_LOG(VMPORT_LOG_ERROR, "VMware chan %d not open",
+                           msg_id);
+            break;
+        }
+
+        /* We check the cookie here since it's possible that the
+         * connection timed out on us and another channel was opened
+         * if this happens, return error and the um tool will
+         * need to reopen the connection
+         */
+        if ( msg_cookie != c->ctl.cookie )
+        {
+            VMPORT_DBG_LOG(VMPORT_LOG_ERROR, "VMware ctl.cookie err %x vs %x",
+                           msg_cookie, c->ctl.cookie);
+            break;
+        }
+        vmport_process_packet(hd, c, ur, sub_cmd, now_time);
+    } while ( 0 );
+
+    if ( NULL == c )
+        set_status(ur, 0);
+
+    spin_unlock(&hd->vmport_lock);
+}
+
+int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t *val)
+{
+    struct cpu_user_regs *regs = guest_cpu_user_regs();
+    uint32_t cmd = get_low_bits(regs->rcx);
+    uint32_t magic = regs->rax;
+    int rc = X86EMUL_OKAY;
+
+    if ( magic == BDOOR_MAGIC )
+    {
+        uint64_t value;
+
+        if (dir == IOREQ_READ)
+            HVMTRACE_ND(VMPORT_READ1, 0, 1/*cycles*/, 6,
+                        regs->rax, regs->rbx, regs->rcx,
+                        regs->rdx, regs->rsi, regs->rdi);
+        else
+            HVMTRACE_ND(VMPORT_WRITE1, 0, 1/*cycles*/, 6,
+                        regs->rax, regs->rbx, regs->rcx,
+                        regs->rdx, regs->rsi, regs->rdi);
+
+#ifndef NDEBUG
+        if ( opt_vmport_debug & VMPORT_LOG_TRACE &&
+             (!(opt_vmport_debug & VMPORT_LOG_SKIP_MESSAGE) ||
+              (opt_vmport_debug & VMPORT_LOG_SKIP_MESSAGE &&
+               cmd != BDOOR_CMD_MESSAGE)) )
+            gdprintk(XENLOG_DEBUG,
+                     "VMware trace ip=%"PRIx64" cmd=%d ax=%"PRIx64" bx=%"PRIx64
+                     " cx=%"PRIx64" dx=%"PRIx64" si=%"PRIx64" di=%"PRIx64"\n",
+                     regs->rip, cmd, regs->rax, regs->rbx, regs->rcx, regs->rdx,
+                     regs->rsi, regs->rdi);
+#endif
+        switch (cmd)
+        {
+        case BDOOR_CMD_GETMHZ:
+            /* ... */
+            regs->rbx = BDOOR_MAGIC;
+            regs->rax = (uint32_t)(current->domain->arch.tsc_khz / 1000);
+            break;
+        case BDOOR_CMD_GETVERSION:
+            /* ... */
+            regs->rbx = BDOOR_MAGIC;
+            /* VERSION_MAGIC */
+            regs->rax = 6;
+            /* Claim we are an ESX. VMX_TYPE_SCALABLE_SERVER */
+            regs->rcx = 2;
+            break;
+        case BDOOR_CMD_GETHWVERSION:
+            /* ... */
+            regs->rbx = BDOOR_MAGIC;
+            /* ?? */
+            regs->rax = 0x4;
+            break;
+        case BDOOR_CMD_GETHZ:
+            value = current->domain->arch.tsc_khz * 1000;
+            /* apic-frequency (bus speed) */
+            regs->rcx = (uint32_t)(1000000000ULL / APIC_BUS_CYCLE_NS);
+            /* High part of tsc-frequency */
+            regs->rbx = (uint32_t)(value >> 32);
+            /* Low part of tsc-frequency */
+            regs->rax = (uint32_t)value;
+            break;
+        case BDOOR_CMD_GETTIME:
+            value = get_localtime_us(current->domain);
+            /* hostUsecs */
+            regs->rbx = (uint32_t)(value % 1000000UL);
+            /* hostSecs */
+            regs->rax = (uint32_t)(value / 1000000ULL);
+            /* maxTimeLag */
+            regs->rcx = 0;
+            break;
+        case BDOOR_CMD_GETTIMEFULL:
+            value = get_localtime_us(current->domain);
+            /* ... */
+            regs->rax = BDOOR_MAGIC;
+            /* hostUsecs */
+            regs->rbx = (uint32_t)(value % 1000000UL);
+            /* High part of hostSecs */
+            regs->rsi = (uint32_t)((value / 1000000ULL) >> 32);
+            /* Low part of hostSecs */
+            regs->rdx = (uint32_t)(value / 1000000ULL);
+            /* maxTimeLag */
+            regs->rcx = 0;
+            break;
+        case BDOOR_CMD_MESSAGE:
+            if ( !is_pv_vcpu(current) )
+            {
+                /* Only supported for non pv domains */
+                vmport_rpc(&current->domain->arch.hvm_domain, regs);
+            }
+            break;
+        case BDOOR_CMD_GETGUIOPTIONS:
+            regs->rax = VMWARE_GUI_AUTO_GRAB | VMWARE_GUI_AUTO_UNGRAB |
+                VMWARE_GUI_AUTO_RAISE_DISABLED | VMWARE_GUI_SYNC_TIME |
+                VMWARE_DISABLE_CURSOR_OPTIONS;
+            break;
+        case BDOOR_CMD_SETGUIOPTIONS:
+            regs->rax = 0x0;
+            break;
+        default:
+            VMPORT_DBG_LOG(VMPORT_LOG_ERROR,
+                           "VMware bytes=%d dir=%d cmd=%d",
+                           bytes, dir, cmd);
+            break;
+        }
+#ifndef NDEBUG
+        if ( opt_vmport_debug & VMPORT_LOG_VMWARE_AFTER &&
+             (!(opt_vmport_debug & VMPORT_LOG_SKIP_MESSAGE) ||
+              (opt_vmport_debug & VMPORT_LOG_SKIP_MESSAGE &&
+               cmd != BDOOR_CMD_MESSAGE)) )
+            gdprintk(XENLOG_DEBUG,
+                     "VMware after ip=%"PRIx64" cmd=%d ax=%"PRIx64" bx=%"PRIx64
+                     " cx=%"PRIx64" dx=%"PRIx64" si=%"PRIx64" di=%"PRIx64"\n",
+                     regs->rip, cmd, regs->rax, regs->rbx, regs->rcx, regs->rdx,
+                     regs->rsi, regs->rdi);
+#endif
+        if (dir == IOREQ_READ)
+            *val = regs->rax;
+    }
+    else
+    {
+        rc = X86EMUL_UNHANDLEABLE;
+        VMPORT_DBG_LOG(VMPORT_LOG_ERROR,
+                       "Not VMware %x vs %x vs %x; ip=%"PRIx64" ax=%"PRIx64
+                       " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64" si=%"PRIx64
+                       " di=%"PRIx64"",
+                       magic, BDOOR_MAGIC, VMPORT_MAGIC,
+                       regs->rip, regs->rax, regs->rbx, regs->rcx, regs->rdx,
+                       regs->rsi, regs->rdi);
+    }
+
+    if (dir == IOREQ_READ)
+        HVMTRACE_ND(VMPORT_READ2, 0, 1/*cycles*/, 6,
+                    regs->rax, regs->rbx, regs->rcx,
+                    regs->rdx, regs->rsi, regs->rdi);
+    else
+        HVMTRACE_ND(VMPORT_WRITE2, 0, 1/*cycles*/, 6,
+                    regs->rax, regs->rbx, regs->rcx,
+                    regs->rdx, regs->rsi, regs->rdi);
+
+    return rc;
+}
+
+/* save and restore functions */
+
+static int vmport_save_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
+{
+    struct hvm_vmport_context *ctxt;
+    struct hvm_save_descriptor *desc;
+    struct hvm_domain *hd = &d->arch.hvm_domain;
+    struct vmport_state *vs = hd->vmport_data;
+    char *p;
+    unsigned int guestinfo_size = 0;
+    unsigned int used_guestinfo = 0;
+    unsigned int used_guestinfo_jumbo = 0;
+    unsigned int chans_size;
+    unsigned int i;
+
+    /* Customized handling for entry since our entry is of variable length */
+    desc = (struct hvm_save_descriptor *)&h->data[h->cur];
+    if ( _hvm_init_entry(h, HVM_SAVE_CODE(VMPORT), 0,
+                         HVM_SAVE_LENGTH(VMPORT)) )
+        return 1;
+    ctxt = (struct hvm_vmport_context *)&h->data[h->cur];
+
+    spin_lock(&hd->vmport_lock);
+
+    ctxt->version = VMPORT_SAVE_VERSION;
+    ctxt->ping_time = vs->ping_time;
+    ctxt->open_cookie = vs->open_cookie;
+    ctxt->used_guestinfo = vs->used_guestinfo;
+    ctxt->used_guestinfo_jumbo = vs->used_guestinfo_jumbo;
+
+    p = ctxt->u.packed.packed_data;
+
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        unsigned int j;
+        unsigned int buf_max;
+
+        ctxt->u.packed.chan_ctl[i].chan = vs->chans[i].ctl;
+        buf_max = vs->chans[i].ctl.send_len;
+        if ( buf_max > VMPORT_MAX_SEND_BUF * 4 )
+            buf_max = VMPORT_MAX_SEND_BUF * 4;
+        memcpy(p, vs->chans[i].send_buf, buf_max);
+        p += buf_max;
+        for (j = 0; j < VMPORT_MAX_BKTS; j++)
+        {
+            ctxt->u.packed.chan_ctl[i].recv[j] = vs->chans[i].recv_bkt[j].ctl;
+            buf_max = vs->chans[i].recv_bkt[j].ctl.recv_len;
+            if ( buf_max > VMPORT_MAX_RECV_BUF * 4 )
+                buf_max = VMPORT_MAX_RECV_BUF * 4;
+            memcpy(p, vs->chans[i].recv_bkt[j].recv_buf, buf_max);
+            p += buf_max;
+        }
+        ctxt->u.packed.chan_ctl[i].jumbo = vs->chans[i].jumbo_recv_bkt.ctl;
+        buf_max = vs->chans[i].jumbo_recv_bkt.ctl.recv_len;
+        if ( buf_max > VMPORT_MAX_RECV_JUMBO_BUF * 4 )
+            buf_max = VMPORT_MAX_RECV_JUMBO_BUF * 4;
+        memcpy(p, vs->chans[i].jumbo_recv_bkt.recv_buf, buf_max);
+        p += buf_max;
+    }
+
+    chans_size = p - ctxt->u.packed.packed_data;
+
+    for (i = 0; i < ctxt->used_guestinfo; i++)
+    {
+        vmport_guestinfo_t *vg = vs->guestinfo[i];
+
+        if ( vg && vg->key_len )
+        {
+            guestinfo_size += sizeof(vg->key_len) + sizeof(vg->val_len) +
+                vg->key_len + vg->val_len;
+            used_guestinfo++;
+            ASSERT(sizeof(vg->key_len) == 1);
+            *p++ = (char) vg->key_len;
+            ASSERT(sizeof(vg->val_len) == 1);
+            *p++ = (char) vg->val_len;
+            if ( vg->key_len )
+            {
+                memcpy(p, vg->key_data, vg->key_len);
+                p += vg->key_len;
+                if ( vg->val_len )
+                {
+                    memcpy(p, vg->val_data, vg->val_len);
+                    p += vg->val_len;
+                }
+            }
+        }
+    }
+    ctxt->used_guestinfo = used_guestinfo;
+
+    for (i = 0; i < ctxt->used_guestinfo_jumbo; i++)
+    {
+        vmport_guestinfo_jumbo_t *vgj =
+            vs->guestinfo_jumbo[i];
+        if ( vgj && vgj->key_len )
+        {
+            guestinfo_size += sizeof(vgj->key_len) + sizeof(vgj->val_len) +
+                vgj->key_len + vgj->val_len;
+            used_guestinfo_jumbo++;
+            ASSERT(sizeof(vgj->key_len) == 1);
+            *p++ = (char) vgj->key_len;
+            memcpy(p, &vgj->val_len, sizeof(vgj->val_len));
+            p += sizeof(vgj->val_len);
+            if ( vgj->key_len )
+            {
+                memcpy(p, vgj->key_data, vgj->key_len);
+                p += vgj->key_len;
+                if ( vgj->val_len )
+                {
+                    memcpy(p, vgj->val_data, vgj->val_len);
+                    p += vgj->val_len;
+                }
+            }
+        }
+    }
+    ctxt->used_guestinfo_jumbo = used_guestinfo_jumbo;
+
+    ctxt->used_guestsize = guestinfo_size;
+
+    spin_unlock(&hd->vmport_lock);
+
+#ifndef NDEBUG
+    gdprintk(XENLOG_WARNING, "chans_size=%d guestinfo_size=%d, used=%ld\n",
+             chans_size, guestinfo_size,
+             p - ctxt->u.packed.packed_data);
+#endif
+    ASSERT(p - ctxt->u.packed.packed_data == chans_size + guestinfo_size);
+    ASSERT(desc->length >= p - (char *)ctxt);
+    desc->length = p - (char *)ctxt; /* Fixup length to be right */
+    h->cur += desc->length; /* Do _hvm_write_entry */
+    ASSERT(guestinfo_size < desc->length);
+
+    return 0;
+}
+
+static int vmport_load_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
+{
+    struct hvm_vmport_context *ctxt;
+    struct hvm_save_descriptor *desc;
+    struct hvm_domain *hd = &d->arch.hvm_domain;
+    struct vmport_state *vs = hd->vmport_data;
+    unsigned int i;
+    uint8_t key_len;
+    uint16_t val_len;
+    char *p;
+    vmport_guestinfo_t *vg;
+    vmport_guestinfo_jumbo_t *vgj;
+    unsigned int loop_cnt;
+    unsigned int guestinfo_size;
+    unsigned int used_guestinfo;
+    unsigned int used_guestinfo_jumbo;
+
+    if ( !vs )
+        return -ENOMEM;
+
+    /* Customized checking for entry since our entry is of variable length */
+    desc = (struct hvm_save_descriptor *)&h->data[h->cur];
+    if ( sizeof(*desc) > h->size - h->cur )
+    {
+        printk(XENLOG_G_WARNING
+               "HVM%d restore: not enough data left to read descriptor"
+               "for type %lu\n", d->domain_id,
+               HVM_SAVE_CODE(VMPORT));
+        return -1;
+    }
+    if ( desc->length + sizeof(*desc) > h->size - h->cur )
+    {
+        printk(XENLOG_G_WARNING
+               "HVM%d restore: not enough data left to read %u bytes "
+               "for type %lu\n", d->domain_id, desc->length,
+               HVM_SAVE_CODE(VMPORT));
+        return -1;
+    }
+    if ( HVM_SAVE_CODE(VMPORT) != desc->typecode ||
+         (desc->length > HVM_SAVE_LENGTH(VMPORT)) )
+    {
+        printk(XENLOG_G_WARNING
+               "HVM%d restore mismatch: expected type %lu with max length %lu, "
+               "saw type %u length %u\n", d->domain_id, HVM_SAVE_CODE(VMPORT),
+               HVM_SAVE_LENGTH(VMPORT),
+               desc->typecode, desc->length);
+        return -1;
+    }
+    h->cur += sizeof(*desc);
+    /* Checking finished */
+
+    ctxt = (struct hvm_vmport_context *)&h->data[h->cur];
+    h->cur += desc->length;
+
+    if ( ctxt->version != VMPORT_SAVE_VERSION )
+        return -EINVAL;
+
+    spin_lock(&hd->vmport_lock);
+
+    vs->ping_time = ctxt->ping_time;
+    vs->open_cookie = ctxt->open_cookie;
+    vs->used_guestinfo = ctxt->used_guestinfo;
+    vs->used_guestinfo_jumbo = ctxt->used_guestinfo_jumbo;
+    guestinfo_size = ctxt->used_guestsize;
+    used_guestinfo = ctxt->used_guestinfo;
+    used_guestinfo_jumbo = ctxt->used_guestinfo_jumbo;
+
+    p = ctxt->u.packed.packed_data;
+
+    for (i = 0; i < VMPORT_MAX_CHANS; i++)
+    {
+        unsigned int j;
+
+        vs->chans[i].ctl = ctxt->u.packed.chan_ctl[i].chan;
+        memcpy(vs->chans[i].send_buf, p, vs->chans[i].ctl.send_len);
+        p += vs->chans[i].ctl.send_len;
+        for (j = 0; j < VMPORT_MAX_BKTS; j++)
+        {
+            vs->chans[i].recv_bkt[j].ctl = ctxt->u.packed.chan_ctl[i].recv[j];
+            memcpy(vs->chans[i].recv_bkt[j].recv_buf, p,
+                   vs->chans[i].recv_bkt[j].ctl.recv_len);
+            p += vs->chans[i].recv_bkt[j].ctl.recv_len;
+        }
+        vs->chans[i].jumbo_recv_bkt.ctl = ctxt->u.packed.chan_ctl[i].jumbo;
+        memcpy(vs->chans[i].jumbo_recv_bkt.recv_buf, p,
+               vs->chans[i].jumbo_recv_bkt.ctl.recv_len);
+        p += vs->chans[i].jumbo_recv_bkt.ctl.recv_len;
+    }
+
+
+    /* keep at least 10 total and 5 empty entries */
+    loop_cnt = (vs->used_guestinfo + 5) > 10 ?
+        (vs->used_guestinfo + 5) : 10;
+    for (i = 0; i < loop_cnt; i++)
+    {
+        if ( !vs->guestinfo[i] )
+        {
+            vs->guestinfo[i] = xzalloc(vmport_guestinfo_t);
+        }
+        if ( i < vs->used_guestinfo
+             && guestinfo_size > 0 )
+        {
+            key_len = (uint8_t)*p++;
+            val_len = (uint8_t)*p++;
+            guestinfo_size -= 2;
+            if ( guestinfo_size >= key_len + val_len )
+            {
+                vg = vs->guestinfo[i];
+                if ( key_len )
+                {
+                    vg->key_len = key_len;
+                    vg->val_len = val_len;
+                    memcpy(vg->key_data, p, key_len);
+                    p += key_len;
+                    memcpy(vg->val_data, p, val_len);
+                    p += val_len;
+                    guestinfo_size -= key_len + val_len;
+                }
+            }
+        }
+    }
+    vs->used_guestinfo = loop_cnt;
+
+    /* keep at least 2 total and 1 empty entries */
+    loop_cnt = (vs->used_guestinfo_jumbo + 1) > 2 ?
+        (vs->used_guestinfo_jumbo + 1) : 2;
+    for (i = 0; i < loop_cnt; i++)
+    {
+        if ( !vs->guestinfo_jumbo[i] )
+        {
+            vs->guestinfo_jumbo[i] = xzalloc(vmport_guestinfo_jumbo_t);
+        }
+        if ( i < vs->used_guestinfo_jumbo
+             && guestinfo_size > 0 )
+        {
+            key_len = (uint8_t)*p++;
+            memcpy(&val_len, p, 2);
+            p += 2;
+            guestinfo_size -= 3;
+            if ( guestinfo_size >= key_len + val_len )
+            {
+                vgj = vs->guestinfo_jumbo[i];
+                if ( key_len )
+                {
+                    vgj->key_len = key_len;
+                    vgj->val_len = val_len;
+                    memcpy(vgj->key_data, p, key_len);
+                    p += key_len;
+                    memcpy(vgj->val_data, p, val_len);
+                    p += val_len;
+                    guestinfo_size -= key_len + val_len;
+                }
+            }
+        }
+    }
+    vs->used_guestinfo_jumbo = loop_cnt;
+
+    spin_unlock(&hd->vmport_lock);
+
+    return 0;
+}
+
+HVM_REGISTER_SAVE_RESTORE(VMPORT, vmport_save_domain_ctxt,
+                          vmport_load_domain_ctxt, 1, HVMSR_PER_DOM);
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 4a4f4e1..fa1f69a 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1077,6 +1077,7 @@ static int construct_vmcs(struct vcpu *v)
 
     v->arch.hvm_vmx.exception_bitmap = HVM_TRAP_MASK
               | (paging_mode_hap(d) ? 0 : (1U << TRAP_page_fault))
+              | (1U << TRAP_gp_fault)
               | (1U << TRAP_no_device);
     vmx_update_exception_bitmap(v);
 
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 26b1ad5..f807d36 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -44,6 +44,7 @@
 #include <asm/hvm/support.h>
 #include <asm/hvm/vmx/vmx.h>
 #include <asm/hvm/vmx/vmcs.h>
+#include <asm/hvm/vmport.h>
 #include <public/sched.h>
 #include <public/hvm/ioreq.h>
 #include <asm/hvm/vpic.h>
@@ -1279,6 +1280,7 @@ static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr)
                 v->arch.hvm_vmx.exception_bitmap = HVM_TRAP_MASK
                           | (paging_mode_hap(v->domain) ?
                              0 : (1U << TRAP_page_fault))
+                          | (1U << TRAP_gp_fault)
                           | (1U << TRAP_no_device);
                 vmx_update_exception_bitmap(v);
                 vmx_update_debug_state(v);
@@ -2565,6 +2567,82 @@ static void vmx_idtv_reinject(unsigned long idtv_info)
     }
 }
 
+void do_gp_fault(struct cpu_user_regs *regs, struct vcpu *v)
+{
+    unsigned long exit_qualification;
+    unsigned long inst_len;
+    unsigned long ecode;
+
+    __vmread(EXIT_QUALIFICATION, &exit_qualification);
+    __vmread(VM_EXIT_INSTRUCTION_LEN, &inst_len);
+    __vmread(VM_EXIT_INTR_ERROR_CODE, &ecode);
+    regs->error_code = ecode;
+    if ( hvm_long_mode_enabled(v) )
+        HVMTRACE_LONG_C4D(TRAP_GP, TRAP_gp_fault, inst_len, ecode,
+                          TRC_PAR_LONG(exit_qualification));
+    else
+        HVMTRACE_C4D(TRAP_GP, TRAP_gp_fault, inst_len, ecode,
+                     exit_qualification);
+
+    if ( inst_len == 1 && (regs->rdx & 0xffff) == VMPORT_PORT &&
+         exit_qualification == 0 && ecode == 0 )
+    {
+        uint32_t magic = regs->rax;
+
+        if ( magic == VMPORT_MAGIC )
+        {
+            unsigned char bytes[1] = { 0 };
+            int frc = hvm_fetch_from_guest_virt_nofault(bytes, regs->rip,
+                                                        1, PFEC_page_present);
+
+            if ( !frc && bytes[0] == 0xed ) /* in (%dx),%eax */
+            {
+                uint32_t val;
+
+                update_guest_eip();
+                vmport_ioport(IOREQ_READ, VMPORT_PORT, 4, &val);
+                VMPORT_DBG_LOG(VMPORT_LOG_VMWARE_AFTER,
+                               "gp: VMware ip=%"PRIx64" ax=%"PRIx64
+                               " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                               " si=%"PRIx64" di=%"PRIx64,
+                               regs->rip, regs->rax, regs->rbx, regs->rcx,
+                               regs->rdx, regs->rsi, regs->rdi);
+                return;
+            }
+            else
+            {
+                VMPORT_DBG_LOG(VMPORT_LOG_GP_FAIL_RD_INST,
+                               "gp: VMware? ip=%"PRIx64"=>0x%x(%d) ax=%"PRIx64
+                               " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                               " si=%"PRIx64" di=%"PRIx64,
+                               regs->rip, bytes[0], frc, regs->rax, regs->rbx,
+                               regs->rcx, regs->rdx, regs->rsi, regs->rdi);
+            }
+        }
+        else
+        {
+            VMPORT_DBG_LOG(VMPORT_LOG_GP_NOT_VMWARE,
+                           "gp: ip=%"PRIx64" ax=%"PRIx64" bx=%"PRIx64
+                           " cx=%"PRIx64" dx=%"PRIx64" si=%"PRIx64
+                           " di=%"PRIx64,
+                           regs->rip, regs->rax, regs->rbx, regs->rcx,
+                           regs->rdx, regs->rsi, regs->rdi);
+            hvm_inject_hw_exception(TRAP_gp_fault, ecode);
+        }
+    }
+    else
+    {
+        VMPORT_DBG_LOG(VMPORT_LOG_GP_UNKNOWN,
+                       "gp: eq=%lx ec=%lx ip=%"PRIx64" (%ld) ax=%"PRIx64
+                       " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                       " si=%"PRIx64" di=%"PRIx64,
+                       exit_qualification, ecode,
+                       regs->rip, inst_len, regs->rax, regs->rbx, regs->rcx,
+                       regs->rdx, regs->rsi, regs->rdi);
+        hvm_inject_hw_exception(TRAP_gp_fault, ecode);
+    }
+}
+
 static int vmx_handle_apic_write(void)
 {
     unsigned long exit_qualification;
@@ -2675,6 +2753,15 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs)
                  && vector != TRAP_nmi 
                  && vector != TRAP_machine_check ) 
             {
+                if ( vector == TRAP_gp_fault )
+                {
+                    VMPORT_DBG_LOG(VMPORT_LOG_REALMODE_GP,
+                                   "realmode gp: ip=%"PRIx64" ax=%"PRIx64
+                                   " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                                   " si=%"PRIx64" di=%"PRIx64,
+                                   regs->rip, regs->rax, regs->rbx, regs->rcx,
+                                   regs->rdx, regs->rsi, regs->rdi);
+                }
                 perfc_incr(realmode_exits);
                 v->arch.hvm_vmx.vmx_emulate = 1;
                 HVMTRACE_0D(REALMODE_EMULATE);
@@ -2790,6 +2877,9 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs)
             HVMTRACE_1D(TRAP, vector);
             vmx_fpu_dirty_intercept();
             break;
+        case TRAP_gp_fault:
+            do_gp_fault(regs, v);
+            break;
         case TRAP_page_fault:
             __vmread(EXIT_QUALIFICATION, &exit_qualification);
             __vmread(VM_EXIT_INTR_ERROR_CODE, &ecode);
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index 9ccc03f..734d88e 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -24,6 +24,7 @@
 #include <asm/types.h>
 #include <asm/mtrr.h>
 #include <asm/p2m.h>
+#include <asm/hvm/vmport.h>
 #include <asm/hvm/vmx/vmx.h>
 #include <asm/hvm/vmx/vvmx.h>
 #include <asm/hvm/nestedhvm.h>
@@ -2182,6 +2183,19 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs,
             if ( v->fpu_dirtied )
                 nvcpu->nv_vmexit_pending = 1;
         }
+        else if ( vector == TRAP_gp_fault )
+        {
+#ifndef NDEBUG
+            struct cpu_user_regs *ur = guest_cpu_user_regs();
+#endif
+            VMPORT_DBG_LOG(VMPORT_LOG_VGP_UNKNOWN,
+                           "Unexpected gp: ip=%"PRIx64" ax=%"PRIx64
+                           " bx=%"PRIx64" cx=%"PRIx64" dx=%"PRIx64
+                           " si=%"PRIx64" di=%"PRIx64,
+                           ur->rip, ur->rax, ur->rbx, ur->rcx, ur->rdx,
+                           ur->rsi, ur->rdi);
+                nvcpu->nv_vmexit_pending = 1;
+        }
         else if ( (intr_info & valid_mask) == valid_mask )
         {
             exec_bitmap =__get_vvmcs(nvcpu->nv_vvmcx, EXCEPTION_BITMAP);
diff --git a/xen/include/asm-x86/hvm/domain.h b/xen/include/asm-x86/hvm/domain.h
index 526b5da..7bbf1de 100644
--- a/xen/include/asm-x86/hvm/domain.h
+++ b/xen/include/asm-x86/hvm/domain.h
@@ -108,6 +108,10 @@ struct hvm_domain {
     /* emulated irq to pirq */
     struct radix_tree_root emuirq_pirq;
 
+    /* VMware special port */
+    spinlock_t             vmport_lock;
+    struct vmport_state   *vmport_data;
+
     uint64_t              *params;
 
     /* Memory ranges with pinned cache attributes. */
diff --git a/xen/include/asm-x86/hvm/svm/emulate.h b/xen/include/asm-x86/hvm/svm/emulate.h
index ccc2d3c..4ff1aea 100644
--- a/xen/include/asm-x86/hvm/svm/emulate.h
+++ b/xen/include/asm-x86/hvm/svm/emulate.h
@@ -39,6 +39,7 @@ enum instruction_index {
     INSTR_STGI,
     INSTR_CLGI,
     INSTR_INVLPGA,
+    INSTR_IN,
     INSTR_MAX_COUNT /* Must be last - Number of instructions supported */
 };
 
diff --git a/xen/include/asm-x86/hvm/trace.h b/xen/include/asm-x86/hvm/trace.h
index de802a6..2cd60c2 100644
--- a/xen/include/asm-x86/hvm/trace.h
+++ b/xen/include/asm-x86/hvm/trace.h
@@ -52,8 +52,15 @@
 #define DO_TRC_HVM_LMSW64      DEFAULT_HVM_MISC
 #define DO_TRC_HVM_REALMODE_EMULATE DEFAULT_HVM_MISC 
 #define DO_TRC_HVM_TRAP             DEFAULT_HVM_MISC
+#define DO_TRC_HVM_TRAP64           DEFAULT_HVM_MISC
 #define DO_TRC_HVM_TRAP_DEBUG       DEFAULT_HVM_MISC
 #define DO_TRC_HVM_VLAPIC           DEFAULT_HVM_MISC
+#define DO_TRC_HVM_TRAP_GP          DEFAULT_HVM_MISC
+#define DO_TRC_HVM_TRAP_GP64        DEFAULT_HVM_MISC
+#define DO_TRC_HVM_VMPORT_READ1     DEFAULT_HVM_IO
+#define DO_TRC_HVM_VMPORT_WRITE1    DEFAULT_HVM_IO
+#define DO_TRC_HVM_VMPORT_READ2     DEFAULT_HVM_IO
+#define DO_TRC_HVM_VMPORT_WRITE2    DEFAULT_HVM_IO
 
 
 #define TRC_PAR_LONG(par) ((par)&0xFFFFFFFF),((par)>>32)
@@ -98,6 +105,21 @@
 #define HVMTRACE_0D(evt)                            \
     HVMTRACE_ND(evt, 0, 0, 0,  0,  0,  0,  0,  0,  0)
 
+#define HVMTRACE_C6D(evt, d1, d2, d3, d4, d5, d6)    \
+    HVMTRACE_ND(evt, 0, 1, 6, d1, d2, d3, d4, d5, d6)
+#define HVMTRACE_C5D(evt, d1, d2, d3, d4, d5)        \
+    HVMTRACE_ND(evt, 0, 1, 5, d1, d2, d3, d4, d5,  0)
+#define HVMTRACE_C4D(evt, d1, d2, d3, d4)            \
+    HVMTRACE_ND(evt, 0, 1, 4, d1, d2, d3, d4,  0,  0)
+#define HVMTRACE_C3D(evt, d1, d2, d3)                \
+    HVMTRACE_ND(evt, 0, 1, 3, d1, d2, d3,  0,  0,  0)
+#define HVMTRACE_C2D(evt, d1, d2)                    \
+    HVMTRACE_ND(evt, 0, 1, 2, d1, d2,  0,  0,  0,  0)
+#define HVMTRACE_C1D(evt, d1)                        \
+    HVMTRACE_ND(evt, 0, 1, 1, d1,  0,  0,  0,  0,  0)
+#define HVMTRACE_C0D(evt)                            \
+    HVMTRACE_ND(evt, 0, 1, 0,  0,  0,  0,  0,  0,  0)
+
 #define HVMTRACE_LONG_1D(evt, d1)                  \
                    HVMTRACE_2D(evt ## 64, (d1) & 0xFFFFFFFF, (d1) >> 32)
 #define HVMTRACE_LONG_2D(evt, d1, d2, ...)              \
@@ -107,6 +129,15 @@
 #define HVMTRACE_LONG_4D(evt, d1, d2, d3, d4, ...)  \
                    HVMTRACE_5D(evt ## 64, d1, d2, d3, d4)
 
+#define HVMTRACE_LONG_C1D(evt, d1)                  \
+                   HVMTRACE_C2D(evt ## 64, (d1) & 0xFFFFFFFF, (d1) >> 32)
+#define HVMTRACE_LONG_C2D(evt, d1, d2, ...)              \
+                   HVMTRACE_C3D(evt ## 64, d1, d2)
+#define HVMTRACE_LONG_C3D(evt, d1, d2, d3, ...)      \
+                   HVMTRACE_C4D(evt ## 64, d1, d2, d3)
+#define HVMTRACE_LONG_C4D(evt, d1, d2, d3, d4, ...)  \
+                   HVMTRACE_C5D(evt ## 64, d1, d2, d3, d4)
+
 #endif /* __ASM_X86_HVM_TRACE_H__ */
 
 /*
diff --git a/xen/include/asm-x86/hvm/vmport.h b/xen/include/asm-x86/hvm/vmport.h
new file mode 100644
index 0000000..e72e422
--- /dev/null
+++ b/xen/include/asm-x86/hvm/vmport.h
@@ -0,0 +1,90 @@
+/*
+ * vmport.h: HVM VMPORT emulation
+ *
+ *
+ * Copyright (C) 2012 Verizon Corporation
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License Version 2 (GPLv2)
+ * as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details. <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ASM_X86_HVM_VMPORT_H__
+#define __ASM_X86_HVM_VMPORT_H__
+
+#ifndef NDEBUG
+#define VMPORT_LOG_RPC             (1 << 0)
+#define VMPORT_LOG_RECV_STATUS     (1 << 1)
+#define VMPORT_LOG_SKIP_SEND       (1 << 2)
+#define VMPORT_LOG_SEND            (1 << 3)
+#define VMPORT_LOG_SEND_SIZE_ALL   (1 << 4)
+#define VMPORT_LOG_SEND_SIZE       (1 << 5)
+#define VMPORT_LOG_RECV_SIZE_ALL   (1 << 6)
+#define VMPORT_LOG_RECV_SIZE       (1 << 7)
+#define VMPORT_LOG_CLOSE           (1 << 8)
+#define VMPORT_LOG_OPEN            (1 << 9)
+#define VMPORT_LOG_FLUSH           (1 << 10)
+#define VMPORT_LOG_TRACE           (1 << 11)
+#define VMPORT_LOG_PING            (1 << 12)
+#define VMPORT_LOG_SWEEP           (1 << 13)
+#define VMPORT_LOG_BUILD           (1 << 14)
+
+#define VMPORT_LOG_ERROR           (1 << 16)
+
+#define VMPORT_LOG_INFO_GET        (1 << 17)
+#define VMPORT_LOG_INFO_SET        (1 << 18)
+
+#define VMPORT_LOG_SKIP_MESSAGE    (1 << 19)
+
+#define VMPORT_LOG_GP_UNKNOWN      (1 << 20)
+#define VMPORT_LOG_GP_NOT_VMWARE   (1 << 21)
+#define VMPORT_LOG_GP_FAIL_RD_INST (1 << 22)
+
+#define VMPORT_LOG_GP_VMWARE_AFTER (1 << 23)
+
+#define VMPORT_LOG_VGP_UNKNOWN     (1 << 24)
+#define VMPORT_LOG_REALMODE_GP     (1 << 27)
+
+#define VMPORT_LOG_VMWARE_AFTER    (1 << 28)
+
+extern unsigned int opt_vmport_debug;
+#define VMPORT_DBG_LOG(level, _f, _a...)                                \
+    do {                                                                \
+        if ( unlikely((level) & opt_vmport_debug) )                     \
+            printk("[HVM:%d.%d] <%s> " _f "\n",                         \
+                   current->domain->domain_id, current->vcpu_id, __func__, \
+                   ## _a);                                              \
+    } while (0)
+#else
+#define VMPORT_DBG_LOG(level, _f, _a...) do {} while (0)
+#endif
+
+/* Note: VMPORT_PORT and VMPORT_MAGIC is also defined as BDOOR_PORT
+ * and BDOOR_MAGIC in backdoor_def.h Defined here so that other
+ * parts of XEN can use it.
+ */
+
+#define VMPORT_PORT 0x5658
+#define VMPORT_MAGIC 0x564D5868
+
+#include "public/arch-x86/hvm/vmporttype.h"
+
+int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t *val);
+void vmport_ctrl_send(struct hvm_domain *hd, char *msg);
+void vmport_flush(struct hvm_domain *hd);
+
+#endif /* __ASM_X86_HVM_VMPORT_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 16d85a3..7cdcb8f 100644
--- a/xen/include/public/arch-x86/hvm/save.h
+++ b/xen/include/public/arch-x86/hvm/save.h
@@ -26,6 +26,8 @@
 #ifndef __XEN_PUBLIC_HVM_SAVE_X86_H__
 #define __XEN_PUBLIC_HVM_SAVE_X86_H__
 
+#include "vmporttype.h"
+
 /* 
  * Save/restore header: general info about the save file. 
  */
@@ -610,9 +612,44 @@ struct hvm_msr {
 
 #define CPU_MSR_CODE  20
 
+/*
+ * VMware context.
+ */
+struct hvm_vmport_context {
+    uint32_t version;
+    uint32_t used_guestsize;
+    uint64_t ping_time;
+    uint32_t open_cookie;
+    uint32_t used_guestinfo;
+    uint32_t used_guestinfo_jumbo;
+    union {
+        struct {
+            vmport_channel_t chans[VMPORT_MAX_CHANS];
+            vmport_guestinfo_t guestinfo[VMPORT_MAX_NUM_KEY];
+            vmport_guestinfo_jumbo_t guestinfo_jumbo[VMPORT_MAX_NUM_JUMBO_KEY];
+        } full;
+        struct {
+            struct {
+                vmport_channel_control_t chan;
+                vmport_bucket_control_t recv[VMPORT_MAX_BKTS];
+                vmport_bucket_control_t jumbo;
+            } chan_ctl[VMPORT_MAX_CHANS];
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+            char packed_data[];
+#elif defined(__GNUC__)
+            char packed_data[0];
+#else
+            char packed_data[1 /* Variable length */];
+#endif
+        } packed;
+    } u;
+};
+
+DECLARE_HVM_SAVE_TYPE(VMPORT, 21, struct hvm_vmport_context);
+
 /* 
  * Largest type-code in use
  */
-#define HVM_SAVE_CODE_MAX 20
+#define HVM_SAVE_CODE_MAX 21
 
 #endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
diff --git a/xen/include/public/arch-x86/hvm/vmporttype.h b/xen/include/public/arch-x86/hvm/vmporttype.h
new file mode 100644
index 0000000..3ecbe25
--- /dev/null
+++ b/xen/include/public/arch-x86/hvm/vmporttype.h
@@ -0,0 +1,105 @@
+/*
+ * vmporttype.h: HVM VMPORT structure definitions
+ *
+ *
+ * Copyright (C) 2012 Verizon Corporation
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License Version 2 (GPLv2)
+ * as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details. <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ASM_X86_HVM_VMPORTTYPE_H__
+#define __ASM_X86_HVM_VMPORTTYPE_H__
+
+#define VMPORT_MAX_KEY_LEN 30
+#define VMPORT_MAX_VAL_LEN 128
+#define VMPORT_MAX_NUM_KEY  64
+#define VMPORT_MAX_NUM_JUMBO_KEY 4
+#define VMPORT_MAX_VAL_JUMBO_LEN 4096
+
+#define VMPORT_MAX_SEND_BUF ((22 + VMPORT_MAX_KEY_LEN + \
+                              VMPORT_MAX_VAL_JUMBO_LEN + 3)/4)
+#define VMPORT_MAX_RECV_BUF ((2 + VMPORT_MAX_VAL_LEN + 3)/4)
+#define VMPORT_MAX_RECV_JUMBO_BUF ((2 + VMPORT_MAX_VAL_JUMBO_LEN + 3)/4)
+#define VMPORT_MAX_CHANS    6
+#define VMPORT_MAX_BKTS     8
+
+#define VMPORT_SAVE_VERSION 0xabcd0001
+
+typedef struct {
+    uint8_t key_len;
+    uint8_t val_len;
+    char key_data[VMPORT_MAX_KEY_LEN];
+    char val_data[VMPORT_MAX_VAL_LEN];
+} vmport_guestinfo_t;
+
+typedef struct {
+    uint16_t val_len;
+    uint8_t  key_len;
+    char     key_data[VMPORT_MAX_KEY_LEN];
+    char     val_data[VMPORT_MAX_VAL_JUMBO_LEN];
+} vmport_guestinfo_jumbo_t;
+
+typedef struct __attribute__ ((packed)) {
+    uint16_t recv_len;
+    uint16_t recv_idx;
+} vmport_bucket_control_t;
+
+typedef struct __attribute__ ((packed)) {
+    vmport_bucket_control_t ctl;
+    uint32_t recv_buf[VMPORT_MAX_RECV_BUF + 1];
+} vmport_bucket_t;
+
+typedef struct __attribute__ ((packed)) {
+    vmport_bucket_control_t ctl;
+    uint32_t recv_buf[VMPORT_MAX_RECV_JUMBO_BUF + 1];
+} vmport_jumbo_bucket_t;
+
+typedef struct __attribute__ ((packed)) {
+    uint64_t active_time;
+    uint32_t chan_id;
+    uint32_t cookie;
+    uint32_t proto_num;
+    uint16_t send_len;
+    uint16_t send_idx;
+    uint8_t jumbo;
+    uint8_t recv_read;
+    uint8_t recv_write;
+    uint8_t recv_chan_pad[1];
+} vmport_channel_control_t;
+
+typedef struct __attribute__ ((packed)) {
+    vmport_channel_control_t ctl;
+    vmport_bucket_t recv_bkt[VMPORT_MAX_BKTS];
+    vmport_jumbo_bucket_t jumbo_recv_bkt;
+    uint32_t send_buf[VMPORT_MAX_SEND_BUF + 1];
+} vmport_channel_t;
+
+struct vmport_state {
+    uint64_t ping_time;
+    uint32_t open_cookie;
+    uint32_t used_guestinfo;
+    uint32_t used_guestinfo_jumbo;
+    uint8_t  max_chans;
+    uint8_t  state_pad[3];
+    vmport_channel_t chans[VMPORT_MAX_CHANS];
+    vmport_guestinfo_t *guestinfo[VMPORT_MAX_NUM_KEY];
+    vmport_guestinfo_jumbo_t *guestinfo_jumbo[VMPORT_MAX_NUM_JUMBO_KEY];
+};
+
+#endif /* __ASM_X86_HVM_VMPORTTYPE_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 5b11bbf..fd4cc8a 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -458,6 +458,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_address_size_t);
 #define XEN_DOMCTL_SENDTRIGGER_INIT   2
 #define XEN_DOMCTL_SENDTRIGGER_POWER  3
 #define XEN_DOMCTL_SENDTRIGGER_SLEEP  4
+#define XEN_DOMCTL_SENDTRIGGER_VTPOWER  5
+#define XEN_DOMCTL_SENDTRIGGER_VTREBOOT 6
+#define XEN_DOMCTL_SENDTRIGGER_VTPING   7
 struct xen_domctl_sendtrigger {
     uint32_t  trigger;  /* IN */
     uint32_t  vcpu;     /* IN */
diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h
index eeb0a60..185e33d 100644
--- a/xen/include/public/hvm/hvm_op.h
+++ b/xen/include/public/hvm/hvm_op.h
@@ -369,6 +369,24 @@ DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_ioreq_server_state_t);
 
 #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
 
+/* Get/set vmport subcommands */
+#define HVMOP_get_vmport_guest_info 23
+#define HVMOP_set_vmport_guest_info 24
+#define VMPORT_GUEST_INFO_KEY_MAX 40
+#define VMPORT_GUEST_INFO_VAL_MAX 4096
+struct xen_hvm_vmport_guest_info {
+    /* Domain to be accessed */
+    domid_t   domid;
+    /* key length */
+    uint16_t   key_length;
+    /* value length */
+    uint16_t   value_length;
+    /* key and value data */
+    char      data[VMPORT_GUEST_INFO_KEY_MAX + VMPORT_GUEST_INFO_VAL_MAX];
+};
+typedef struct xen_hvm_vmport_guest_info xen_hvm_vmport_guest_info_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_vmport_guest_info_t);
+
 #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */
 
 /*
diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/params.h
index dee6d68..722e30b 100644
--- a/xen/include/public/hvm/params.h
+++ b/xen/include/public/hvm/params.h
@@ -153,7 +153,10 @@
 
 /* Params for VMware */
 #define HVM_PARAM_VMWARE_HW                 35
+#define HVM_PARAM_VMPORT_BUILD_NUMBER_TIME  36
+#define HVM_PARAM_VMPORT_BUILD_NUMBER_VALUE 37
+#define HVM_PARAM_VMPORT_RESET_TIME         38
 
-#define HVM_NR_PARAMS          36
+#define HVM_NR_PARAMS          39
 
 #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h
index cfcf4aa..b81fc66 100644
--- a/xen/include/public/trace.h
+++ b/xen/include/public/trace.h
@@ -224,11 +224,18 @@
 #define TRC_HVM_NPF             (TRC_HVM_HANDLER + 0x21)
 #define TRC_HVM_REALMODE_EMULATE (TRC_HVM_HANDLER + 0x22)
 #define TRC_HVM_TRAP             (TRC_HVM_HANDLER + 0x23)
+#define TRC_HVM_TRAP64           (TRC_HVM_HANDLER + TRC_64_FLAG + 0x23)
 #define TRC_HVM_TRAP_DEBUG       (TRC_HVM_HANDLER + 0x24)
 #define TRC_HVM_VLAPIC           (TRC_HVM_HANDLER + 0x25)
+#define TRC_HVM_TRAP_GP          (TRC_HVM_HANDLER + 0x26)
+#define TRC_HVM_TRAP_GP64        (TRC_HVM_HANDLER + TRC_64_FLAG + 0x26)
+#define TRC_HVM_VMPORT_READ1     (TRC_HVM_HANDLER + 0x27)
+#define TRC_HVM_VMPORT_READ2     (TRC_HVM_HANDLER + 0x28)
 
 #define TRC_HVM_IOPORT_WRITE    (TRC_HVM_HANDLER + 0x216)
 #define TRC_HVM_IOMEM_WRITE     (TRC_HVM_HANDLER + 0x217)
+#define TRC_HVM_VMPORT_WRITE1   (TRC_HVM_HANDLER + 0x227)
+#define TRC_HVM_VMPORT_WRITE2   (TRC_HVM_HANDLER + 0x228)
 
 /* Trace events for emulated devices */
 #define TRC_HVM_EMUL_HPET_START_TIMER  (TRC_HVM_EMUL + 0x1)
-- 
1.8.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From archives@lists.xen.org Mon Sep 01 16:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 16:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOUB7-0003tN-A2
	for archives@lists.xen.org; Mon, 01 Sep 2014 16:10:01 +0000
Date: Mon, 01 Sep 2014 16:10:01 +0000
Message-Id: <E1XOUB7-0003tN-A2@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 17:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 17:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOV7B-0004rJ-HY
	for archives@lists.xen.org; Mon, 01 Sep 2014 17:10:01 +0000
Date: Mon, 01 Sep 2014 17:10:01 +0000
Message-Id: <E1XOV7B-0004rJ-HY@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 18:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 18:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOW3F-0005id-Uu
	for archives@lists.xen.org; Mon, 01 Sep 2014 18:10:01 +0000
Date: Mon, 01 Sep 2014 18:10:01 +0000
Message-Id: <E1XOW3F-0005id-Uu@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 19:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 19:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOWzJ-0006Rj-DT
	for archives@lists.xen.org; Mon, 01 Sep 2014 19:10:01 +0000
Date: Mon, 01 Sep 2014 19:10:01 +0000
Message-Id: <E1XOWzJ-0006Rj-DT@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 20:10:02 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 20:10:02 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOXvN-0006pQ-TX
	for archives@lists.xen.org; Mon, 01 Sep 2014 20:10:02 +0000
Date: Mon, 01 Sep 2014 20:10:01 +0000
Message-Id: <E1XOXvN-0006pQ-TX@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 21:10:02 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 21:10:02 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOYrS-0007Pv-0f
	for archives@lists.xen.org; Mon, 01 Sep 2014 21:10:02 +0000
Date: Mon, 01 Sep 2014 21:10:02 +0000
Message-Id: <E1XOYrS-0007Pv-0f@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 22:10:05 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 22:10:05 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOZnV-0007wQ-8k
	for archives@lists.xen.org; Mon, 01 Sep 2014 22:10:02 +0000
Date: Mon, 01 Sep 2014 22:10:01 +0000
Message-Id: <E1XOZnV-0007wQ-8k@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Mon Sep 01 23:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Sep 2014 23:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOajZ-0000W0-Fs
	for archives@lists.xen.org; Mon, 01 Sep 2014 23:10:01 +0000
Date: Mon, 01 Sep 2014 23:10:01 +0000
Message-Id: <E1XOajZ-0000W0-Fs@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 00:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 00:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XObfd-0001M3-QM
	for archives@lists.xen.org; Tue, 02 Sep 2014 00:10:01 +0000
Date: Tue, 02 Sep 2014 00:10:01 +0000
Message-Id: <E1XObfd-0001M3-QM@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 01:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 01:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOcbh-0007xC-Aa
	for archives@lists.xen.org; Tue, 02 Sep 2014 01:10:01 +0000
Date: Tue, 02 Sep 2014 01:10:01 +0000
Message-Id: <E1XOcbh-0007xC-Aa@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 02:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 02:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOdXl-0000F6-Ob
	for archives@lists.xen.org; Tue, 02 Sep 2014 02:10:01 +0000
Date: Tue, 02 Sep 2014 02:10:01 +0000
Message-Id: <E1XOdXl-0000F6-Ob@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 03:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 03:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOeTp-0000eP-Ii
	for archives@lists.xen.org; Tue, 02 Sep 2014 03:10:01 +0000
Date: Tue, 02 Sep 2014 03:10:01 +0000
Message-Id: <E1XOeTp-0000eP-Ii@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 04:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 04:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOfPt-0002yE-8Q
	for archives@lists.xen.org; Tue, 02 Sep 2014 04:10:01 +0000
Date: Tue, 02 Sep 2014 04:10:01 +0000
Message-Id: <E1XOfPt-0002yE-8Q@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 05:10:03 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 05:10:03 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOgLz-0003Tg-6H
	for archives@lists.xen.org; Tue, 02 Sep 2014 05:10:03 +0000
Date: Tue, 02 Sep 2014 05:10:03 +0000
Message-Id: <E1XOgLz-0003Tg-6H@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 06:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 06:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOhI1-0003vC-Ot
	for archives@lists.xen.org; Tue, 02 Sep 2014 06:10:01 +0000
Date: Tue, 02 Sep 2014 06:10:01 +0000
Message-Id: <E1XOhI1-0003vC-Ot@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 07:10:02 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 07:10:02 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOiE6-0004eT-1e
	for archives@lists.xen.org; Tue, 02 Sep 2014 07:10:02 +0000
Date: Tue, 02 Sep 2014 07:10:02 +0000
Message-Id: <E1XOiE6-0004eT-1e@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 08:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 08:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOjA9-0006Wg-CN
	for archives@lists.xen.org; Tue, 02 Sep 2014 08:10:01 +0000
Date: Tue, 02 Sep 2014 08:10:01 +0000
Message-Id: <E1XOjA9-0006Wg-CN@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 09:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 09:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOk6D-0000ho-Kp
	for archives@lists.xen.org; Tue, 02 Sep 2014 09:10:01 +0000
Date: Tue, 02 Sep 2014 09:10:01 +0000
Message-Id: <E1XOk6D-0000ho-Kp@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 10:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 10:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOl2H-0002cT-Gk
	for archives@lists.xen.org; Tue, 02 Sep 2014 10:10:01 +0000
Date: Tue, 02 Sep 2014 10:10:01 +0000
Message-Id: <E1XOl2H-0002cT-Gk@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 11:10:06 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 11:10:06 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOlyM-0003aA-2t
	for archives@lists.xen.org; Tue, 02 Sep 2014 11:10:06 +0000
Date: Tue, 02 Sep 2014 11:10:02 +0000
Message-Id: <E1XOlyM-0003aA-2t@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 12:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 12:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOmuP-0004bS-Ji
	for archives@lists.xen.org; Tue, 02 Sep 2014 12:10:01 +0000
Date: Tue, 02 Sep 2014 12:10:01 +0000
Message-Id: <E1XOmuP-0004bS-Ji@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 13:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 13:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOnqT-0005Uz-72
	for archives@lists.xen.org; Tue, 02 Sep 2014 13:10:01 +0000
Date: Tue, 02 Sep 2014 13:10:01 +0000
Message-Id: <E1XOnqT-0005Uz-72@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 14:10:01 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 14:10:01 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOomX-0006m3-Ap
	for archives@lists.xen.org; Tue, 02 Sep 2014 14:10:01 +0000
Date: Tue, 02 Sep 2014 14:10:01 +0000
Message-Id: <E1XOomX-0006m3-Ap@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From archives@lists.xen.org Tue Sep 02 15:10:09 2014
Return-path: <archives@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Sep 2014 15:10:09 +0000
Received: from archives by lists.xen.org with local (Exim 4.72)
	(envelope-from <archives@lists.xen.org>)
	id 1XOpib-0007m7-Kw
	for archives@lists.xen.org; Tue, 02 Sep 2014 15:10:09 +0000
Date: Tue, 02 Sep 2014 15:10:01 +0000
Message-Id: <E1XOpib-0007m7-Kw@lists.xen.org>
From: root@lists.xen.org (Cron Daemon)
To: archives@lists.xen.org
Subject: Cron <archives@lists> ( cd /home/archives/html ; perl ./makeindex.pl ) (failed)
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/archives>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=archives>

Couldnt open dir -/home/archives/html/win-pv-devel- at ./makeindex.pl line 18.

From xen-devel-bounces@lists.xen.org Thu Sep 04 16:51:54 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Sep 2014 16:51:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XPaG8-00049g-Q2; Thu, 04 Sep 2014 16:51:44 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <anthony.perard@citrix.com>) id 1XPaG6-00047t-7r
	for xen-devel@lists.xen.org; Thu, 04 Sep 2014 16:51:43 +0000
Received: from [85.158.137.68:24626] by server-11.bemta-3.messagelabs.com id
	11/8D-01568-D9898045; Thu, 04 Sep 2014 16:51:41 +0000
X-Env-Sender: anthony.perard@citrix.com
X-Msg-Ref: server-8.tower-31.messagelabs.com!1409849497!12581945!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22518 invoked from network); 4 Sep 2014 16:51:39 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-8.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	4 Sep 2014 16:51:39 -0000
X-IronPort-AV: E=Sophos;i="5.04,467,1406592000"; d="scan'208";a="168424488"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 4 Sep 2014 12:51:36 -0400
Received: from perard.uk.xensource.com ([10.80.2.84])	by
	ukmail1.uk.xensource.com with esmtp (Exim 4.69)	(envelope-from
	<anthony.perard@citrix.com>)	id 1XPaG0-0005Qd-80;
	Thu, 04 Sep 2014 17:51:36 +0100
From: Anthony PERARD <anthony.perard@citrix.com>
To: EDK2 devel <edk2-devel@lists.sourceforge.net>
Date: Thu, 4 Sep 2014 17:50:56 +0100
Message-ID: <1409849473-9268-2-git-send-email-anthony.perard@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1409849473-9268-1-git-send-email-anthony.perard@citrix.com>
References: <1409849473-9268-1-git-send-email-anthony.perard@citrix.com>
MIME-Version: 1.0
Content-Length: 286465
X-DLP: MIA2
Cc: Anthony PERARD <anthony.perard@citrix.com>,
	Xen Devel <xen-devel@lists.xen.org>
Subject: [Xen-devel] [PATCH v2 01/18] OvmfPkg: Add public headers from Xen
	Project.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

VGhpcyBwYXRjaCBpbXBvcnRzIHB1YmxpY3MgaGVhZGVycyBpbiBvcmRlciB0byB1c2UgZmVhdHVy
ZXMgZnJvbSBYZW4KbGlrZSBYZW5TdG9yZSwgUFYgQmxvY2suLi4gVGhlcmUgaXMgb25seSB0aGUg
bmVjZXNzYXJ5IGhlYWRlciBmaWxlcyBhbmQKdGhlcmUgYXJlIG9ubHkgYSBmZXcgbW9kaWZpY2F0
aW9ucyBpbiBvcmRlciB0byBmYWNpbGl0YXRlIGZ1dHVyZSBtZXJnZSBvZgptb3JlIHJlY2VudCBo
ZWFkZXIgKHRoYXQgd291bGQgYmUgbmVjZXNzYXJ5IHRvIGFjY2VzcyBuZXcgZmVhdHVyZXMpLgoK
VGhlcmUgaXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGUgb3JpZ2luYWwgZmls
ZXM6Ci0gVXNlIG9mIFplcm9NZW0oKSBpbnN0ZWFkIG9mIG1lbXNldCgpCi0gUmVwbGFjZSB0eXBl
cyB0byBiZSBtb3JlIFVFRkkgY29tcGxpYW50IHVzaW5nIGEgc2NyaXB0LgoKQ29tbWFuZCB0byBy
dW4gdG8gY2hhbmdlIHR5cGVzOgpmaW5kIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk
L1hlbiAtdHlwZSBmIC1uYW1lICcqLmgnIC1leGVjIHNlZAogIC0tcmVnZXhwLWV4dGVuZGVkIC0t
ZmlsZT1maXhfdHlwZV9pbl94ZW5faW5jbHVkZXMuc2VkIC0taW4tcGxhY2Uge30gXDsKClRoaXMg
bGluZSBpcyBjb21tZW50ZWQgaW5zdGVhZCBvZiBiZWVuIGNoYW5nZSBhcyBJJ20gbm90IHN1cmUg
d2h5IGl0CmRvZXMgbm90IGNvbXBpbGUgKHdoZW4gcy9jaGFyL0NIQVI4LyksIGFuZCBpdCBkb2Vz
IG5vdCBzZWVtcyBuZWNlc3NhcnkKc28gZmFyLgogIC8qIF9fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUodWNoYXIsIHVuc2lnbmVkIGNoYXIpOyAqLwogIGluIE92bWZQa2cvSW5jbHVkZS9JbmR1c3Ry
eVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4uaAoKQXZvaWQgY2hhbmdpbmcgdGhlICdsb25nJyB0
aGF0IGlzIG5vdCBhIHR5cGUgKHdpdGggdGhlIGZpcnN0IGxpbmUpLgokIGNhdCBmaXhfdHlwZV9p
bl94ZW5faW5jbHVkZXMuc2VkCi9hcyBsb25nIGFzL2IKCnMvKFteYS16QS1aMC05X118Xil1aW50
OF90KFteYS16QS1aMC05X118JCkvXDFVSU5UOFwyL2cKcy8oW15hLXpBLVowLTlfXXxeKXVpbnQx
Nl90KFteYS16QS1aMC05X118JCkvXDFVSU5UMTZcMi9nCnMvKFteYS16QS1aMC05X118Xil1aW50
MzJfdChbXmEtekEtWjAtOV9dfCQpL1wxVUlOVDMyXDIvZwpzLyhbXmEtekEtWjAtOV9dfF4pdWlu
dDY0X3QoW15hLXpBLVowLTlfXXwkKS9cMVVJTlQ2NFwyL2cKCnMvKFteYS16QS1aMC05X118Xilp
bnQ4X3QoW15hLXpBLVowLTlfXXwkKS9cMUlOVDhcMi9nCnMvKFteYS16QS1aMC05X118XilpbnQx
Nl90KFteYS16QS1aMC05X118JCkvXDFJTlQxNlwyL2cKcy8oW15hLXpBLVowLTlfXXxeKWludDMy
X3QoW15hLXpBLVowLTlfXXwkKS9cMUlOVDMyXDIvZwpzLyhbXmEtekEtWjAtOV9dfF4paW50NjRf
dChbXmEtekEtWjAtOV9dfCQpL1wxSU5UNjRcMi9nCgpzLyhbXmEtekEtWjAtOV9dfF4pdm9pZChb
XmEtekEtWjAtOV9dfCQpL1wxVk9JRFwyL2cKcy8oW15hLXpBLVowLTlfXXxeKXVuc2lnbmVkIGlu
dChbXmEtekEtWjAtOV9dfCQpL1wxVUlOVDMyXDIvZwpzLyhbXmEtekEtWjAtOV9dfF4paW50KFte
YS16QS1aMC05X118JCkvXDFJTlQzMlwyL2cKcy8oW15hLXpBLVowLTlfXXxeKWNoYXIoW15hLXpB
LVowLTlfXXwkKS9cMUNIQVI4XDIvZwpzLyhbXmEtekEtWjAtOV9dfF4pdW5zaWduZWQgbG9uZyhb
XmEtekEtWjAtOV9dfCQpL1wxVUlOVE5cMi9nCnMvKFteYS16QS1aMC05X118Xilsb25nKFteYS16
QS1aMC05X118JCkvXDFJTlROXDIvZwoKQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250
cmlidXRpb24gQWdyZWVtZW50IDEuMApTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50
aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KLS0tCiAuLi4vSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJj
aC14ODYveGVuLXg4Nl8zMi5oICAgICB8IDE3MSArKysrCiAuLi4vSW5kdXN0cnlTdGFuZGFyZC9Y
ZW4vYXJjaC14ODYveGVuLXg4Nl82NC5oICAgICB8IDIwMiArKysrKwogLi4uL0luY2x1ZGUvSW5k
dXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLmggICAgfCAyNzMgKysrKysrKwogLi4uL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZXZlbnRfY2hhbm5lbC5oICAgfCAzODEgKysrKysr
KysrCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZ3JhbnRfdGFibGUuaCB8
IDY2MiArKysrKysrKysrKysrKysKIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9odm0vaHZtX29wLmggIHwgMjc1ICsrKysrKysKIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0
YW5kYXJkL1hlbi9odm0vcGFyYW1zLmggIHwgMTUwICsrKysKIE92bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi9pby9ibGtpZi5oICAgIHwgNjA4ICsrKysrKysrKysrKysrCiAuLi4v
SW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9wcm90b2NvbHMuaCAgICB8ICA0MCArCiBP
dm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8vcmluZy5oICAgICB8IDMxMiAr
KysrKysrCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8veGVuYnVzLmgg
ICB8ICA4MCArKwogT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3hzX3dp
cmUuaCAgfCAxMzggKysrKwogT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL21l
bW9yeS5oICAgICAgfCA0ODAgKysrKysrKysrKysKIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0
YW5kYXJkL1hlbi9zY2hlZC5oICAgICAgIHwgMTc0ICsrKysKIE92bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi90cmFjZS5oICAgICAgIHwgMzEwICsrKysrKysKIE92bWZQa2cvSW5j
bHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4tY29tcGF0LmggIHwgIDQ0ICsKIE92bWZQa2cv
SW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4uaCAgICAgICAgIHwgODk3ICsrKysrKysr
KysrKysrKysrKysrKwogMTcgZmlsZXMgY2hhbmdlZCwgNTE5NyBpbnNlcnRpb25zKCspCiBjcmVh
dGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2FyY2gt
eDg2L3hlbi14ODZfMzIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZXZl
bnRfY2hhbm5lbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5
U3RhbmRhcmQvWGVuL2dyYW50X3RhYmxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaHZtL2h2bV9vcC5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2h2bS9wYXJhbXMuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9i
bGtpZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRh
cmQvWGVuL2lvL3Byb3RvY29scy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRl
L0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3JpbmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQ
a2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby94ZW5idXMuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby94c193aXJlLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4v
bWVtb3J5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4vc2NoZWQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi90cmFjZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNs
dWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi1jb21wYXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4uaAoKZGlmZiAtLWdpdCBh
L092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzMy
LmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLXg4
Nl8zMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZjJmMDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14
ODYveGVuLXg4Nl8zMi5oCkBAIC0wLDAgKzEsMTcxIEBACisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisgKiB4ZW4teDg2XzMyLmgKKyAqIAorICogR3Vlc3QgT1MgaW50ZXJmYWNlIHRvIHg4NiAzMi1i
aXQgWGVuLgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K
KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIEsgQSBG
cmFzZXIKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hf
XworI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9IX18KKworLyoKKyAq
IEh5cGVyY2FsbCBpbnRlcmZhY2U6CisgKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAlZXNp
LCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQorICogIE91dHB1dDogJWVheAorICogQWNjZXNz
IGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBY
ZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMy
CisgKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxs
IGNsb2JiZXJzICVlYngsJWVjeCkKKyAqLworCisvKgorICogVGhlc2UgZmxhdCBzZWdtZW50cyBh
cmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0aGVzZQor
ICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxsIGJl
IGFibGUgdG8gYXZvaWQKKyAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KKyAqLworI2RlZmlu
ZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICovCisjZGVmaW5lIEZM
QVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KKyNkZWZpbmUgRkxBVF9S
SU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJTkcz
X0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRfUklORzNfRFMg
MHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19TUyAweGUw
MzMgICAgLyogR0RUIGluZGV4IDI2MiAqLworCisjZGVmaW5lIEZMQVRfS0VSTkVMX0NTIEZMQVRf
UklORzFfQ1MKKyNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9SSU5HMV9EUworI2RlZmluZSBG
TEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCisjZGVmaW5lIEZMQVRfVVNFUl9DUyAgICBGTEFU
X1JJTkczX0NTCisjZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFUX1JJTkczX0RTCisjZGVmaW5l
IEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCisKKyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJ
UlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFS
VF9QQUUgICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFICAg
ICAgIDB4RjY4MDAwMDAKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAgIFwK
KyAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKKyNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKKyAgICBta191bnNpZ25lZF9sb25n
KF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRf
UEFFICAgICAgICAgXAorICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9FTkRf
UEFFKQorCisvKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlT
X1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRf
RU5EX05PTlBBRSAgICAweEZDNDAwMDAwCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUgICBcCisgICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUpCisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgICBcCisgICAgbWtf
dW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKKyNkZWZpbmUgTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKKworI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFS
VCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9T
VEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklS
VF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCisKKyNpZm5kZWYgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25n
KF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKKyNkZWZpbmUgTUFDSDJQSFlTX1ZJ
UlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklS
VF9FTkQpCisjZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VO
RC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCisjaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19tYXBw
aW5nCisjZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUlOVE4gKilNQUNIMlBIWVNf
VklSVF9TVEFSVCkKKyNlbmRpZgorCisvKiAzMi0vNjQtYml0IGludmFyaWFiaWxpdHkgZm9yIGNv
bnRyb2wgaW50ZXJmYWNlcyAoZG9tY3RsL3N5c2N0bCkuICovCisjaWYgZGVmaW5lZChfX1hFTl9f
KSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjdW5kZWYgX19fREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgICAg
ICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0eXBlICpwOyB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFt
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIHN0cnVjdCB7
IHVuaW9uIHsgdHlwZSAqcDsgdWludDY0X2FsaWduZWRfdCBxOyB9OyB9ICBcCisgICAgICAgIF9f
Z3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCisjdW5kZWYgc2V0X3hlbl9ndWVzdF9oYW5kbGVfcmF3
CisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgICAgICAgICAgICAg
ICAgICBcCisgICAgZG8geyBpZiAoIHNpemVvZihobmQpID09IDggKSAqKFVJTlQ2NCAqKSYoaG5k
KSA9IDA7ICAgXAorICAgICAgICAgKGhuZCkucCA9IHZhbDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKKyNkZWZpbmUgdWludDY0X2FsaWdu
ZWRfdCBVSU5UNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCisjZGVmaW5lIF9fWEVOX0dV
RVNUX0hBTkRMRV82NChuYW1lKSBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQorI2RlZmluZSBY
RU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKQorI2Vu
ZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0cnVjdCBjcHVfdXNlcl9yZWdzIHsKKyAg
ICBVSU5UMzIgZWJ4OworICAgIFVJTlQzMiBlY3g7CisgICAgVUlOVDMyIGVkeDsKKyAgICBVSU5U
MzIgZXNpOworICAgIFVJTlQzMiBlZGk7CisgICAgVUlOVDMyIGVicDsKKyAgICBVSU5UMzIgZWF4
OworICAgIFVJTlQxNiBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCisgICAgVUlOVDE2IGVu
dHJ5X3ZlY3RvcjsgIC8qIHByaXZhdGUgKi8KKyAgICBVSU5UMzIgZWlwOworICAgIFVJTlQxNiBj
czsKKyAgICBVSU5UOCAgc2F2ZWRfdXBjYWxsX21hc2s7CisgICAgVUlOVDggIF9wYWQwOworICAg
IFVJTlQzMiBlZmxhZ3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNr
ICovCisgICAgVUlOVDMyIGVzcDsKKyAgICBVSU5UMTYgc3MsIF9wYWQxOworICAgIFVJTlQxNiBl
cywgX3BhZDI7CisgICAgVUlOVDE2IGRzLCBfcGFkMzsKKyAgICBVSU5UMTYgZnMsIF9wYWQ0Owor
ICAgIFVJTlQxNiBncywgX3BhZDU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBj
cHVfdXNlcl9yZWdzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3Qp
OworCisvKgorICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0
IGludG8gYXJjaGl0ZWN0dXJhbCAlY3IzLgorICogV2hlbiBhY2Nlc3NpbmcgJWNyMywgb3IgZXF1
aXZhbGVudCBmaWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cworICogbXVzdCB1c2Ug
dGhlIGZvbGxvd2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFsaWQgTUZOcy4K
KyAqLworI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShwZm4pIDw8IDEy
KSB8ICgodW5zaWduZWQpKHBmbikgPj4gMjApKQorI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMp
ICgoKHVuc2lnbmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwgMjApKQorCitz
dHJ1Y3QgYXJjaF92Y3B1X2luZm8geworICAgIFVJTlROIGNyMjsKKyAgICBVSU5UTiBwYWRbNV07
IC8qIHNpemVvZih2Y3B1X2luZm9fdCkgPT0gNjQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBhcmNo
X3ZjcHVfaW5mbyBhcmNoX3ZjcHVfaW5mb190OworCitzdHJ1Y3QgeGVuX2NhbGxiYWNrIHsKKyAg
ICBVSU5UTiBjczsKKyAgICBVSU5UTiBlaXA7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2NhbGxi
YWNrIHhlbl9jYWxsYmFja190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5k
aWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fICovCisKKy8qCisgKiBM
b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj
LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu
aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh
bmRhcmQvWGVuL2FyY2gteDg2L3hlbi14ODZfNjQuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3Ry
eVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uN2ZjZjY4ZAotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvSW5jbHVk
ZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKQEAgLTAsMCArMSwy
MDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHhlbi14ODZfNjQuaAorICogCisgKiBH
dWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IDY0LWJpdCBYZW4uCisgKiAKKyAqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJp
Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDQtMjAwNiwgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5f
UFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNI
X1g4Nl9YRU5fWDg2XzY0X0hfXworCisvKgorICogSHlwZXJjYWxsIGludGVyZmFjZToKKyAqICBJ
bnB1dDogICVyZGksICVyc2ksICVyZHgsICVyMTAsICVyOCwgJXI5IChhcmd1bWVudHMgMS02KQor
ICogIE91dHB1dDogJXJheAorICogQWNjZXNzIGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVw
IGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBYZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9w
YWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMyCisgKiBDbG9iYmVyZWQ6IGFyZ3VtZW50IHJlZ2lz
dGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxsIGNsb2JiZXJzICVyZGksJXJzaSkKKyAqLworCisv
KgorICogNjQtYml0IHNlZ21lbnQgc2VsZWN0b3JzCisgKiBUaGVzZSBmbGF0IHNlZ21lbnRzIGFy
ZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlvbiBvZiBldmVyeSBHRFQuIFNpbmNlIHRoZXNlCisg
KiBhcmUgYWxzbyBwcmVzZW50IGluIHRoZSBpbml0aWFsIEdEVCwgbWFueSBPU2VzIHdpbGwgYmUg
YWJsZSB0byBhdm9pZAorICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RULgorICovCisKKyNkZWZp
bmUgRkxBVF9SSU5HM19DUzMyIDB4ZTAyMyAgLyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBG
TEFUX1JJTkczX0NTNjQgMHhlMDMzICAvKiBHRFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRf
UklORzNfRFMzMiAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5H
M19EUzY0IDB4MDAwMCAgLyogTlVMTCBzZWxlY3RvciAqLworI2RlZmluZSBGTEFUX1JJTkczX1NT
MzIgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYyICovCisjZGVmaW5lIEZMQVRfUklORzNfU1M2NCAw
eGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KKworI2RlZmluZSBGTEFUX0tFUk5FTF9EUzY0IEZM
QVRfUklORzNfRFM2NAorI2RlZmluZSBGTEFUX0tFUk5FTF9EUzMyIEZMQVRfUklORzNfRFMzMgor
I2RlZmluZSBGTEFUX0tFUk5FTF9EUyAgIEZMQVRfS0VSTkVMX0RTNjQKKyNkZWZpbmUgRkxBVF9L
RVJORUxfQ1M2NCBGTEFUX1JJTkczX0NTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1MzMiBGTEFU
X1JJTkczX0NTMzIKKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1MgICBGTEFUX0tFUk5FTF9DUzY0Cisj
ZGVmaW5lIEZMQVRfS0VSTkVMX1NTNjQgRkxBVF9SSU5HM19TUzY0CisjZGVmaW5lIEZMQVRfS0VS
TkVMX1NTMzIgRkxBVF9SSU5HM19TUzMyCisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTICAgRkxBVF9L
RVJORUxfU1M2NAorCisjZGVmaW5lIEZMQVRfVVNFUl9EUzY0IEZMQVRfUklORzNfRFM2NAorI2Rl
ZmluZSBGTEFUX1VTRVJfRFMzMiBGTEFUX1JJTkczX0RTMzIKKyNkZWZpbmUgRkxBVF9VU0VSX0RT
ICAgRkxBVF9VU0VSX0RTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX0NTNjQgRkxBVF9SSU5HM19DUzY0
CisjZGVmaW5lIEZMQVRfVVNFUl9DUzMyIEZMQVRfUklORzNfQ1MzMgorI2RlZmluZSBGTEFUX1VT
RVJfQ1MgICBGTEFUX1VTRVJfQ1M2NAorI2RlZmluZSBGTEFUX1VTRVJfU1M2NCBGTEFUX1JJTkcz
X1NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX1NTMzIgRkxBVF9SSU5HM19TUzMyCisjZGVmaW5lIEZM
QVRfVVNFUl9TUyAgIEZMQVRfVVNFUl9TUzY0CisKKyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRf
U1RBUlQgMHhGRkZGODAwMDAwMDAwMDAwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX0VORCAg
IDB4RkZGRjg4MDAwMDAwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUICAweEZG
RkY4MDAwMDAwMDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkQgICAgMHhGRkZGODA0
MDAwMDAwMDAwCisKKyNpZm5kZWYgSFlQRVJWSVNPUl9WSVJUX1NUQVJUCisjZGVmaW5lIEhZUEVS
VklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJU
KQorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfRU5EICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVS
VklTT1JfVklSVF9FTkQpCisjZW5kaWYKKworI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAg
bWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUKQorI2RlZmluZSBNQUNIMlBI
WVNfVklSVF9FTkQgICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkKKyNk
ZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMgICgoTUFDSDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZ
U19WSVJUX1NUQVJUKT4+MykKKyNpZm5kZWYgbWFjaGluZV90b19waHlzX21hcHBpbmcKKyNkZWZp
bmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKChVSU5UTiAqKUhZUEVSVklTT1JfVklSVF9TVEFS
VCkKKyNlbmRpZgorCisvKgorICogSU5UMzIgSFlQRVJWSVNPUl9zZXRfc2VnbWVudF9iYXNlKFVJ
TlQzMiB3aGljaCwgVUlOVE4gYmFzZSkKKyAqICBAd2hpY2ggPT0gU0VHQkFTRV8qICA7ICBAYmFz
ZSA9PSA2NC1iaXQgYmFzZSBhZGRyZXNzCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4KKyAqLwor
I2RlZmluZSBTRUdCQVNFX0ZTICAgICAgICAgIDAKKyNkZWZpbmUgU0VHQkFTRV9HU19VU0VSICAg
ICAxCisjZGVmaW5lIFNFR0JBU0VfR1NfS0VSTkVMICAgMgorI2RlZmluZSBTRUdCQVNFX0dTX1VT
RVJfU0VMIDMgLyogU2V0IHVzZXIgJWdzIHNwZWNpZmllZCBpbiBiYXNlWzE1OjBdICovCisKKy8q
CisgKiBJTlQzMiBIWVBFUlZJU09SX2lyZXQoVk9JRCkKKyAqIEFsbCBhcmd1bWVudHMgYXJlIG9u
IHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0LgorICogTmV2ZXIgcmV0
dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtlcm5lbCBjb250ZXh0IGlzIGxvc3QuCisgKiBU
aGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxvd3M6CisgKiAgIFJJTkcwIC0+IFJJTkczIGtl
cm5lbCBtb2RlLgorICogICBSSU5HMSAtPiBSSU5HMyBrZXJuZWwgbW9kZS4KKyAqICAgUklORzIg
LT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJTkczIC0+IFJJTkczIHVzZXIgbW9kZS4KKyAq
IEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQgdGhlIGd1ZXN0IGtlcm5lbCBzaG91bGQgcmV0
dXJuIHRvIGl0ZXNlbGYKKyAqIGRpcmVjdGx5IHdpdGgKKyAqICAgICAgb3JiICAgJDMsMSo4KCVy
c3ApCisgKiAgICAgIGlyZXRxCisgKiBJZiBmbGFncyBjb250YWlucyBWR0NGX2luX3N5c2NhbGw6
CisgKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFHUywgUlNQLgorICogICBEaXNjYXJkIFIxMSwg
UkNYLCBDUywgU1MuCisgKiBPdGhlcndpc2U6CisgKiAgIFJlc3RvcmUgUkFYLCBSMTEsIFJDWCwg
Q1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KKyAqIEFsbCBvdGhlciByZWdpc3RlcnMgYXJlIHNhdmVk
IG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9yZWQgdG8gdXNlci4KKyAqLworLyogR3Vlc3Qg
ZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0dXJuIHRvIGd1ZXN0IHdpdGggU1lTUkVUPyAq
LworI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgKKyNkZWZpbmUgVkdDRl9pbl9zeXNjYWxsICAo
MTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKKyNkZWZpbmUgVkdDRl9JTl9TWVNDQUxMICBWR0NGX2luX3N5
c2NhbGwKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworc3RydWN0IGlyZXRfY29udGV4dCB7Cisg
ICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9mIGh5cGVyY2FsbCkuICovCisgICAg
VUlOVDY0IHJheCwgcjExLCByY3gsIGZsYWdzLCByaXAsIGNzLCByZmxhZ3MsIHJzcCwgc3M7Cisg
ICAgLyogQm90dG9tIG9mIGlyZXQgc3RhY2sgZnJhbWUuICovCit9OworCisjaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQorLyogQW5vbnltb3VzIHVuaW9u
IGluY2x1ZGVzIGJvdGggMzItIGFuZCA2NC1iaXQgbmFtZXMgKGUuZy4sIGVheC9yYXgpLiAqLwor
I2RlZmluZSBfX0RFQ0xfUkVHKG5hbWUpIHVuaW9uIHsgXAorICAgIFVJTlQ2NCByICMjIG5hbWUs
IGUgIyMgbmFtZTsgXAorICAgIFVJTlQzMiBfZSAjIyBuYW1lOyBcCit9CisjZWxzZQorLyogTm9u
LWdjYyBzb3VyY2VzIG11c3QgYWx3YXlzIHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcu
LCByYXgpLiAqLworI2RlZmluZSBfX0RFQ0xfUkVHKG5hbWUpIFVJTlQ2NCByICMjIG5hbWUKKyNl
bmRpZgorCitzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgVUlOVDY0IHIxNTsKKyAgICBVSU5U
NjQgcjE0OworICAgIFVJTlQ2NCByMTM7CisgICAgVUlOVDY0IHIxMjsKKyAgICBfX0RFQ0xfUkVH
KGJwKTsKKyAgICBfX0RFQ0xfUkVHKGJ4KTsKKyAgICBVSU5UNjQgcjExOworICAgIFVJTlQ2NCBy
MTA7CisgICAgVUlOVDY0IHI5OworICAgIFVJTlQ2NCByODsKKyAgICBfX0RFQ0xfUkVHKGF4KTsK
KyAgICBfX0RFQ0xfUkVHKGN4KTsKKyAgICBfX0RFQ0xfUkVHKGR4KTsKKyAgICBfX0RFQ0xfUkVH
KHNpKTsKKyAgICBfX0RFQ0xfUkVHKGRpKTsKKyAgICBVSU5UMzIgZXJyb3JfY29kZTsgICAgLyog
cHJpdmF0ZSAqLworICAgIFVJTlQzMiBlbnRyeV92ZWN0b3I7ICAvKiBwcml2YXRlICovCisgICAg
X19ERUNMX1JFRyhpcCk7CisgICAgVUlOVDE2IGNzLCBfcGFkMFsxXTsKKyAgICBVSU5UOCAgc2F2
ZWRfdXBjYWxsX21hc2s7CisgICAgVUlOVDggIF9wYWQxWzNdOworICAgIF9fREVDTF9SRUcoZmxh
Z3MpOyAgICAgIC8qIHJmbGFncy5JRiA9PSAhc2F2ZWRfdXBjYWxsX21hc2sgKi8KKyAgICBfX0RF
Q0xfUkVHKHNwKTsKKyAgICBVSU5UMTYgc3MsIF9wYWQyWzNdOworICAgIFVJTlQxNiBlcywgX3Bh
ZDNbM107CisgICAgVUlOVDE2IGRzLCBfcGFkNFszXTsKKyAgICBVSU5UMTYgZnMsIF9wYWQ1WzNd
OyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFzZS4gICAgICovCisg
ICAgVUlOVDE2IGdzLCBfcGFkNlszXTsgLyogTm9uLXplcm8gPT4gdGFrZXMgcHJlY2VkZW5jZSBv
dmVyIGdzX2Jhc2VfdXNyLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1
X3VzZXJfcmVnc190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsK
KworI3VuZGVmIF9fREVDTF9SRUcKKworI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoVUlO
VE4pKHBmbikgPDwgMTIpCisjZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykgKChVSU5UTikoY3Iz
KSA+PiAxMikKKworc3RydWN0IGFyY2hfdmNwdV9pbmZvIHsKKyAgICBVSU5UTiBjcjI7CisgICAg
VUlOVE4gcGFkOyAvKiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCit9OwordHlwZWRlZiBz
dHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKKwordHlwZWRlZiBVSU5UTiB4
ZW5fY2FsbGJhY2tfdDsKKworI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8q
IF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzY0X0hfXyAqLworCisvKgorICogTG9jYWwg
dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp
Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg
KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk
L1hlbi9hcmNoLXg4Ni94ZW4uaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9hcmNoLXg4Ni94ZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjkw
NmYwCi0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQv
WGVuL2FyY2gteDg2L3hlbi5oCkBAIC0wLDAgKzEsMjczIEBACisvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisgKiBhcmNoLXg4Ni94ZW4uaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2
IFhlbi4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisg
KiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0
aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1Mg
SU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBLIEEgRnJh
c2VyCisgKi8KKworI2luY2x1ZGUgIi4uL3hlbi5oIgorCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19B
UkNIX1g4Nl9YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fSF9fCisK
Ky8qIFN0cnVjdHVyYWwgZ3Vlc3QgaGFuZGxlcyBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDEuICov
CisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjAxCisjZGVmaW5lIF9f
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUpIFwKKyAgICB0eXBlZGVmIHN0cnVj
dCB7IHR5cGUgKnA7IH0gX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNlbHNlCisjZGVmaW5lIF9f
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUpIFwKKyAgICB0eXBlZGVmIHR5cGUg
KiBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQorI2VuZGlmCisKKy8qCisgKiBYRU5fR1VFU1RfSEFO
RExFIHJlcHJlc2VudHMgYSBndWVzdCBwb2ludGVyLCB3aGVuIHBhc3NlZCBhcyBhIGZpZWxkCisg
KiBpbiBhIHN0cnVjdCBpbiBtZW1vcnkuCisgKiBYRU5fR1VFU1RfSEFORExFX1BBUkFNIHJlcHJl
c2VudCBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGFuCisgKiBoeXBlcmNhbGwgYXJn
dW1lbnQuCisgKiBYRU5fR1VFU1RfSEFORExFX1BBUkFNIGFuZCBYRU5fR1VFU1RfSEFORExFIGFy
ZSB0aGUgc2FtZSBvbiBYODYgYnV0CisgKiB0aGV5IG1pZ2h0IG5vdCBiZSBvbiBvdGhlciBhcmNo
aXRlY3R1cmVzLgorICovCisjZGVmaW5lIF9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwg
dHlwZSkgXAorICAgIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUpOyAgIFwK
KyAgICBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjb25zdF8jI25hbWUsIGNvbnN0IHR5cGUp
CisjZGVmaW5lIERFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUpICAgX19ERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShuYW1lLCBuYW1lKQorI2RlZmluZSBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkg
ICAgICAgIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lCisjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEUo
bmFtZSkgICAgICAgICAgX19YRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5lIFhFTl9HVUVT
VF9IQU5ETEVfUEFSQU0obmFtZSkgICAgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQorI2RlZmluZSBz
ZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICBkbyB7IChobmQpLnAgPSB2YWw7IH0g
d2hpbGUgKDApCisjaWZkZWYgX19YRU5fVE9PTFNfXworI2RlZmluZSBnZXRfeGVuX2d1ZXN0X2hh
bmRsZSh2YWwsIGhuZCkgIGRvIHsgdmFsID0gKGhuZCkucDsgfSB3aGlsZSAoMCkKKyNlbmRpZgor
I2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZShobmQsIHZhbCkgc2V0X3hlbl9ndWVzdF9oYW5k
bGVfcmF3KGhuZCwgdmFsKQorCisjaWYgZGVmaW5lZChfX2kzODZfXykKKyNpbmNsdWRlICJ4ZW4t
eDg2XzMyLmgiCisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCisjaW5jbHVkZSAieGVuLXg4Nl82
NC5oIgorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCit0eXBlZGVmIFVJTlROIHhlbl9w
Zm5fdDsKKyNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgorI2VuZGlmCisKKyNkZWZpbmUgWEVOX0hB
VkVfUFZfR1VFU1RfRU5UUlkgMQorCisjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEK
KworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJs
ZXMKKyAqLworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRf
Z2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgVUlOVDMyIGVudHJpZXMpOworICogYAorICov
CisvKgorICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhl
c2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBz
b21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICogaW4g
dGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0
YXJ0IG9mIHRoZSBHRFQsCisgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdheSwg
YXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KKyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1c2lu
ZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLworI2Rl
ZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJWRURf
R0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJUlNU
X1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisKKy8q
CisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0
b3IodTY0IHBhLCB1NjQgZGVzYyk7CisgKiBgCisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNp
Y2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0
IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2MgVGhl
IGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQorICog
YCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhpbXVt
IG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVzdHMu
ICovCisjZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NFTUJM
WV9fCisKK3R5cGVkZWYgVUlOVE4geGVuX3Vsb25nX3Q7CisjZGVmaW5lIFBSSV94ZW5fdWxvbmcg
Imx4IgorCisvKgorICogYCBlbnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX3N0YWNr
X3N3aXRjaChVSU5UTiBzcywgVUlOVE4gZXNwKTsKKyAqIGAKKyAqIFNldHMgdGhlIHN0YWNrIHNl
Z21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisgKi8KKworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBz
dHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOworICogYAorICovCisvKgorICogU2VuZCBhbiBhcnJh
eSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCkuCisgKiBUZXJtaW5hdGUg
dGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAu
CisgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIg
YSB0cmFwIHZpYSBhIHNvZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2Ugcmlu
Z3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisgKiBwcml2aWxlZ2UgbGV2
ZWxzIGFzIGZvbGxvd3M6CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCisgKiAgTGV2
ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgorICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50
ZXIKKyAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAqLworI2RlZmluZSBUSV9H
RVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZpbmUgVElfR0VUX0lGKF90
aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwp
ICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAo
KF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRyYXBfaW5mbyB7CisgICAg
VUlOVDggICAgICAgdmVjdG9yOyAgLyogZXhjZXB0aW9uIHZlY3RvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgVUlOVDggICAgICAgZmxhZ3M7ICAgLyogMC0zOiBwcml2aWxl
Z2UgbGV2ZWw7IDQ6IGNsZWFyIGV2ZW50IGVuYWJsZT8gICovCisgICAgVUlOVDE2ICAgICAgY3M7
ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgVUlOVE4gYWRkcmVzczsgLyogY29kZSBvZmZzZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCit9OwordHlwZWRlZiBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBfaW5mb190
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodHJhcF9pbmZvX3QpOworCit0eXBlZGVmIFVJTlQ2
NCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLworCisvKgorICogVGhlIGZv
bGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sg
aXMgZmlsbGVkIAorICogaW4gYnkgRlhTQVZFIGlmIHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsg
b3RoZXJ3aXNlIEZTQVZFIGlzIHVzZWQuCisgKgorICogQWxzbyBub3RlIHRoYXQgd2hlbiBjYWxs
aW5nIERPTUNUTF9zZXR2Y3B1Y29udGV4dCBhbmQgVkNQVV9pbml0aWFsaXNlCisgKiBmb3IgSFZN
IGFuZCBQVkggZ3Vlc3RzLCBub3QgYWxsIGluZm9ybWF0aW9uIGluIHRoaXMgc3RydWN0dXJlIGlz
IHVwZGF0ZWQ6CisgKgorICogLSBGb3IgSFZNIGd1ZXN0cywgdGhlIHN0cnVjdHVyZXMgcmVhZCBp
bmNsdWRlOiBmcHVfY3R4dCAoaWYKKyAqIFZHQ1RfSTM4N19WQUxJRCBpcyBzZXQpLCBmbGFncywg
dXNlcl9yZWdzLCBkZWJ1Z3JlZ1sqXQorICoKKyAqIC0gUFZIIGd1ZXN0cyBhcmUgdGhlIHNhbWUg
YXMgSFZNIGd1ZXN0cywgYnV0IGFkZGl0aW9uYWxseSB1c2UgY3RybHJlZ1szXSB0bworICogc2V0
IGNyMy4gQWxsIG90aGVyIGZpZWxkcyBub3QgdXNlZCBzaG91bGQgYmUgc2V0IHRvIDAuCisgKi8K
K3N0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgeworICAgIC8qIEZQVSByZWdpc3RlcnMgY29tZSBm
aXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVkIGZvciBGWFNBVkUvRlhSU1RPUi4gKi8KKyAgICBz
dHJ1Y3QgeyBDSEFSOCB4WzUxMl07IH0gZnB1X2N0eHQ7ICAgICAgIC8qIFVzZXItbGV2ZWwgRlBV
IHJlZ2lzdGVycyAgICAgKi8KKyNkZWZpbmUgVkdDRl9JMzg3X1ZBTElEICAgICAgICAgICAgICAg
ICgxPDwwKQorI2RlZmluZSBWR0NGX0lOX0tFUk5FTCAgICAgICAgICAgICAgICAgKDE8PDIpCisj
ZGVmaW5lIF9WR0NGX2kzODdfdmFsaWQgICAgICAgICAgICAgICAwCisjZGVmaW5lIFZHQ0ZfaTM4
N192YWxpZCAgICAgICAgICAgICAgICAoMTw8X1ZHQ0ZfaTM4N192YWxpZCkKKyNkZWZpbmUgX1ZH
Q0ZfaW5fa2VybmVsICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgVkdDRl9pbl9rZXJuZWwgICAg
ICAgICAgICAgICAgICgxPDxfVkdDRl9pbl9rZXJuZWwpCisjZGVmaW5lIF9WR0NGX2ZhaWxzYWZl
X2Rpc2FibGVzX2V2ZW50cyAzCisjZGVmaW5lIFZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRz
ICAoMTw8X1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzKQorI2RlZmluZSBfVkdDRl9zeXNj
YWxsX2Rpc2FibGVzX2V2ZW50cyAgNAorI2RlZmluZSBWR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZl
bnRzICAgKDE8PF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzKQorI2RlZmluZSBfVkdDRl9v
bmxpbmUgICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBWR0NGX29ubGluZSAgICAgICAgICAg
ICAgICAgICAgKDE8PF9WR0NGX29ubGluZSkKKyAgICBVSU5UTiBmbGFnczsgICAgICAgICAgICAg
ICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAgICAgICAgICAgICAgICAgKi8KKyAgICBzdHJ1Y3QgY3B1
X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAgICAgICAgLyogVXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJz
ICAgICAqLworICAgIHN0cnVjdCB0cmFwX2luZm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBW
aXJ0dWFsIElEVCAgICAgICAgICAgICAgICAgICovCisgICAgVUlOVE4gbGR0X2Jhc2UsIGxkdF9l
bnRzOyAgICAgICAvKiBMRFQgKGxpbmVhciBhZGRyZXNzLCAjIGVudHMpICovCisgICAgVUlOVE4g
Z2R0X2ZyYW1lc1sxNl0sIGdkdF9lbnRzOyAvKiBHRFQgKG1hY2hpbmUgZnJhbWVzLCAjIGVudHMp
ICovCisgICAgVUlOVE4ga2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAo
b25seSBTUzEvU1AxKSAgICovCisgICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBp
cyBwbGFjZWQgaW4gY3RybHJlZ1sxXS4gKi8KKyAgICBVSU5UTiBjdHJscmVnWzhdOyAgICAgICAg
ICAgICAgIC8qIENSMC1DUjcgKGNvbnRyb2wgcmVnaXN0ZXJzKSAgKi8KKyAgICBVSU5UTiBkZWJ1
Z3JlZ1s4XTsgICAgICAgICAgICAgIC8qIERCMC1EQjcgKGRlYnVnIHJlZ2lzdGVycykgICAgKi8K
KyNpZmRlZiBfX2kzODZfXworICAgIFVJTlROIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyog
Q1M6RUlQIG9mIGV2ZW50IGNhbGxiYWNrICAgICAqLworICAgIFVJTlROIGV2ZW50X2NhbGxiYWNr
X2VpcDsKKyAgICBVSU5UTiBmYWlsc2FmZV9jYWxsYmFja19jczsgICAgIC8qIENTOkVJUCBvZiBm
YWlsc2FmZSBjYWxsYmFjayAgKi8KKyAgICBVSU5UTiBmYWlsc2FmZV9jYWxsYmFja19laXA7Cisj
ZWxzZQorICAgIFVJTlROIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVSU5UTiBmYWlsc2FmZV9j
YWxsYmFja19laXA7CisjaWZkZWYgX19YRU5fXworICAgIHVuaW9uIHsKKyAgICAgICAgVUlOVE4g
c3lzY2FsbF9jYWxsYmFja19laXA7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBVSU5U
MzIgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8qIGNvbXBhdCBDUyBvZiBldmVudCBjYiAgICAgKi8K
KyAgICAgICAgICAgIFVJTlQzMiBmYWlsc2FmZV9jYWxsYmFja19jczsgLyogY29tcGF0IENTIG9m
IGZhaWxzYWZlIGNiICAqLworICAgICAgICB9OworICAgIH07CisjZWxzZQorICAgIFVJTlROIHN5
c2NhbGxfY2FsbGJhY2tfZWlwOworI2VuZGlmCisjZW5kaWYKKyAgICBVSU5UTiB2bV9hc3Npc3Q7
ICAgICAgICAgICAgICAgIC8qIFZNQVNTVF9UWVBFXyogYml0bWFwICovCisjaWZkZWYgX194ODZf
NjRfXworICAgIC8qIFNlZ21lbnQgYmFzZSBhZGRyZXNzZXMuICovCisgICAgVUlOVDY0ICAgICAg
ZnNfYmFzZTsKKyAgICBVSU5UNjQgICAgICBnc19iYXNlX2tlcm5lbDsKKyAgICBVSU5UNjQgICAg
ICBnc19iYXNlX3VzZXI7CisjZW5kaWYKK307Cit0eXBlZGVmIHN0cnVjdCB2Y3B1X2d1ZXN0X2Nv
bnRleHQgdmNwdV9ndWVzdF9jb250ZXh0X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2Y3B1
X2d1ZXN0X2NvbnRleHRfdCk7CisKK3N0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIHsKKyAgICBVSU5U
TiBtYXhfcGZuOyAgICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRh
YmxlICovCisgICAgLyogRnJhbWUgY29udGFpbmluZyBsaXN0IG9mIG1mbnMgY29udGFpbmluZyBs
aXN0IG9mIG1mbnMgY29udGFpbmluZyBwMm0uICovCisgICAgeGVuX3Bmbl90ICAgICBwZm5fdG9f
bWZuX2ZyYW1lX2xpc3RfbGlzdDsKKyAgICBVSU5UTiBubWlfcmVhc29uOworICAgIFVJTlQ2NCBw
YWRbMzJdOworfTsKK3R5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaF9zaGFyZWRf
aW5mb190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisvKgorICogYCBlbnVtIG5l
Z19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKElOVDMyIHNldCk7Cisg
KiBgCisgKiBTZXRzIChpZiBzZXQhPTApIG9yIGNsZWFycyAoaWYgc2V0PT0wKSBDUjAuVFMuCisg
Ki8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZGVi
dWdyZWcoSU5UMzIgcmVnbm8sIFVJTlROIHZhbHVlKTsKKyAqCisgKiBgIFVJTlROCisgKiBgIEhZ
UEVSVklTT1JfZ2V0X2RlYnVncmVnKElOVDMyIHJlZ25vKTsKKyAqIEZvciAwPD1yZWc8PTcsIHJl
dHVybnMgdGhlIGRlYnVnIHJlZ2lzdGVyIHZhbHVlLgorICogRm9yIG90aGVyIHZhbHVlcyBvZiBy
ZWcsIHJldHVybnMgKChVSU5UTiktRUlOVkFMKS4KKyAqIChVbmZvcnR1bmF0ZWx5LCB0aGlzIGlu
dGVyZmFjZSBpcyBkZWZlY3RpdmUuKQorICovCisKKy8qCisgKiBQcmVmaXggZm9yY2VzIGVtdWxh
dGlvbiBvZiBzb21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCisgKiBDdXJyZW50bHkgb25s
eSBDUFVJRC4KKyAqLworI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBYRU5fRU1VTEFURV9Q
UkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKKyNkZWZpbmUgWEVOX0NQVUlE
ICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAorI2Vsc2UKKyNkZWZpbmUgWEVOX0VN
VUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAiCisjZGVmaW5l
IFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgorI2VuZGlmCisK
KyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLworCisvKgorICogTG9j
YWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1i
YXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls
CisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5k
YXJkL1hlbi9ldmVudF9jaGFubmVsLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy
ZC9YZW4vZXZlbnRfY2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmE0NWM2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4vZXZlbnRfY2hhbm5lbC5oCkBAIC0wLDAgKzEsMzgxIEBACisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisgKiBldmVudF9jaGFubmVsLmgKKyAqCisgKiBFdmVudCBjaGFubmVscyBiZXR3
ZWVuIGRvbWFpbnMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxs
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg
KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVB
TElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBL
IEEgRnJhc2VyLgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0VWRU5UX0NIQU5ORUxfSF9f
CisjZGVmaW5lIF9fWEVOX1BVQkxJQ19FVkVOVF9DSEFOTkVMX0hfXworCisjaW5jbHVkZSAieGVu
LmgiCisKKy8qCisgKiBgaW5jb250ZW50cyAxNTAgZXZ0Y2huIEV2ZW50IENoYW5uZWxzCisgKgor
ICogRXZlbnQgY2hhbm5lbHMgYXJlIHRoZSBiYXNpYyBwcmltaXRpdmUgcHJvdmlkZWQgYnkgWGVu
IGZvciBldmVudAorICogbm90aWZpY2F0aW9ucy4gQW4gZXZlbnQgaXMgdGhlIFhlbiBlcXVpdmFs
ZW50IG9mIGEgaGFyZHdhcmUKKyAqIGludGVycnVwdC4gVGhleSBlc3NlbnRpYWxseSBzdG9yZSBv
bmUgYml0IG9mIGluZm9ybWF0aW9uLCB0aGUgZXZlbnQKKyAqIG9mIGludGVyZXN0IGlzIHNpZ25h
bGxlZCBieSB0cmFuc2l0aW9uaW5nIHRoaXMgYml0IGZyb20gMCB0byAxLgorICoKKyAqIE5vdGlm
aWNhdGlvbnMgYXJlIHJlY2VpdmVkIGJ5IGEgZ3Vlc3QgdmlhIGFuIHVwY2FsbCBmcm9tIFhlbiwK
KyAqIGluZGljYXRpbmcgd2hlbiBhbiBldmVudCBhcnJpdmVzIChzZXR0aW5nIHRoZSBiaXQpLiBG
dXJ0aGVyCisgKiBub3RpZmljYXRpb25zIGFyZSBtYXNrZWQgdW50aWwgdGhlIGJpdCBpcyBjbGVh
cmVkIGFnYWluICh0aGVyZWZvcmUsCisgKiBndWVzdHMgbXVzdCBjaGVjayB0aGUgdmFsdWUgb2Yg
dGhlIGJpdCBhZnRlciByZS1lbmFibGluZyBldmVudAorICogZGVsaXZlcnkgdG8gZW5zdXJlIG5v
IG1pc3NlZCBub3RpZmljYXRpb25zKS4KKyAqCisgKiBFdmVudCBub3RpZmljYXRpb25zIGNhbiBi
ZSBtYXNrZWQgYnkgc2V0dGluZyBhIGZsYWc7IHRoaXMgaXMKKyAqIGVxdWl2YWxlbnQgdG8gZGlz
YWJsaW5nIGludGVycnVwdHMgYW5kIGNhbiBiZSB1c2VkIHRvIGVuc3VyZQorICogYXRvbWljaXR5
IG9mIGNlcnRhaW4gb3BlcmF0aW9ucyBpbiB0aGUgZ3Vlc3Qga2VybmVsLgorICoKKyAqIEV2ZW50
IGNoYW5uZWxzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgZXZ0Y2huXyogZmllbGRzIGluCisgKiBz
dHJ1Y3Qgc2hhcmVkX2luZm8gYW5kIHN0cnVjdCB2Y3B1X2luZm8uCisgKi8KKworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKGVudW0g
ZXZlbnRfY2hhbm5lbF9vcCBjbWQsIFZPSUQgKmFyZ3MpCisgKiBgCisgKiBAY21kICA9PSBFVlRD
SE5PUF8qIChldmVudC1jaGFubmVsIG9wZXJhdGlvbikuCisgKiBAYXJncyA9PSBzdHJ1Y3QgZXZ0
Y2huXyogT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3VtZW50cyAoTlVMTCBpZiBub25lKS4K
KyAqLworCisvKiBgIGVudW0gZXZlbnRfY2hhbm5lbF9vcCB7IC8vIEVWVENITk9QXyogPT4gc3Ry
dWN0IGV2dGNobl8qICovCisjZGVmaW5lIEVWVENITk9QX2JpbmRfaW50ZXJkb21haW4gMAorI2Rl
ZmluZSBFVlRDSE5PUF9iaW5kX3ZpcnEgICAgICAgIDEKKyNkZWZpbmUgRVZUQ0hOT1BfYmluZF9w
aXJxICAgICAgICAyCisjZGVmaW5lIEVWVENITk9QX2Nsb3NlICAgICAgICAgICAgMworI2RlZmlu
ZSBFVlRDSE5PUF9zZW5kICAgICAgICAgICAgIDQKKyNkZWZpbmUgRVZUQ0hOT1Bfc3RhdHVzICAg
ICAgICAgICA1CisjZGVmaW5lIEVWVENITk9QX2FsbG9jX3VuYm91bmQgICAgNgorI2RlZmluZSBF
VlRDSE5PUF9iaW5kX2lwaSAgICAgICAgIDcKKyNkZWZpbmUgRVZUQ0hOT1BfYmluZF92Y3B1ICAg
ICAgICA4CisjZGVmaW5lIEVWVENITk9QX3VubWFzayAgICAgICAgICAgOQorI2RlZmluZSBFVlRD
SE5PUF9yZXNldCAgICAgICAgICAgMTAKKyNkZWZpbmUgRVZUQ0hOT1BfaW5pdF9jb250cm9sICAg
IDExCisjZGVmaW5lIEVWVENITk9QX2V4cGFuZF9hcnJheSAgICAxMgorI2RlZmluZSBFVlRDSE5P
UF9zZXRfcHJpb3JpdHkgICAgMTMKKy8qIGAgfSAqLworCit0eXBlZGVmIFVJTlQzMiBldnRjaG5f
cG9ydF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZXZ0Y2huX3BvcnRfdCk7CisKKy8qCisg
KiBFVlRDSE5PUF9hbGxvY191bmJvdW5kOiBBbGxvY2F0ZSBhIHBvcnQgaW4gZG9tYWluIDxkb20+
IGFuZCBtYXJrIGFzCisgKiBhY2NlcHRpbmcgaW50ZXJkb21haW4gYmluZGluZ3MgZnJvbSBkb21h
aW4gPHJlbW90ZV9kb20+LiBBIGZyZXNoIHBvcnQKKyAqIGlzIGFsbG9jYXRlZCBpbiA8ZG9tPiBh
bmQgcmV0dXJuZWQgYXMgPHBvcnQ+LgorICogTk9URVM6CisgKiAgMS4gSWYgdGhlIGNhbGxlciBp
cyB1bnByaXZpbGVnZWQgdGhlbiA8ZG9tPiBtdXN0IGJlIERPTUlEX1NFTEYuCisgKiAgMi4gPHJk
b20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBsb29wYmFjayBjb25uZWN0aW9ucy4KKyAq
Lworc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICov
CisgICAgZG9taWRfdCBkb20sIHJlbW90ZV9kb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8K
KyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2FsbG9j
X3VuYm91bmQgZXZ0Y2huX2FsbG9jX3VuYm91bmRfdDsKKworLyoKKyAqIEVWVENITk9QX2JpbmRf
aW50ZXJkb21haW46IENvbnN0cnVjdCBhbiBpbnRlcmRvbWFpbiBldmVudCBjaGFubmVsIGJldHdl
ZW4KKyAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgPHJlbW90ZV9kb20+LiA8cmVtb3RlX2RvbSxy
ZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQorICogYSBwb3J0IHRoYXQgaXMgdW5ib3VuZCBhbmQg
bWFya2VkIGFzIGFjY2VwdGluZyBiaW5kaW5ncyBmcm9tIHRoZSBjYWxsaW5nCisgKiBkb21haW4u
IEEgZnJlc2ggcG9ydCBpcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxpbmcgZG9tYWluIGFuZCByZXR1
cm5lZCBhcworICogPGxvY2FsX3BvcnQ+LgorICoKKyAqIEluIGNhc2UgdGhlIHBlZXIgZG9tYWlu
IGhhcyBhbHJlYWR5IHRyaWVkIHRvIHNldCBvdXIgZXZlbnQgY2hhbm5lbAorICogcGVuZGluZywg
YmVmb3JlIGl0IHdhcyBib3VuZCwgRVZUQ0hOT1BfYmluZF9pbnRlcmRvbWFpbiBhbHdheXMgc2V0
cworICogdGhlIGxvY2FsIGV2ZW50IGNoYW5uZWwgcGVuZGluZy4KKyAqCisgKiBUaGUgdXN1YWwg
cGF0dGVybiBvZiB1c2UsIGluIHRoZSBndWVzdCdzIHVwY2FsbCAob3Igc3Vic2VxdWVudAorICog
aGFuZGxlcikgaXMgYXMgZm9sbG93czogKFJlLWVuYWJsZSB0aGUgZXZlbnQgY2hhbm5lbCBmb3Ig
c3Vic2VxdWVudAorICogc2lnbmFsbGluZyBhbmQgdGhlbikgY2hlY2sgZm9yIHRoZSBleGlzdGVu
Y2Ugb2Ygd2hhdGV2ZXIgY29uZGl0aW9uCisgKiBpcyBiZWluZyB3YWl0ZWQgZm9yIGJ5IG90aGVy
IG1lYW5zLCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24gaXMKKyAqIG5lZWRlZCAoaWYgYW55KS4K
KyAqCisgKiBOT1RFUzoKKyAqICAxLiA8cmVtb3RlX2RvbT4gbWF5IGJlIERPTUlEX1NFTEYsIGFs
bG93aW5nIGxvb3BiYWNrIGNvbm5lY3Rpb25zLgorICovCitzdHJ1Y3QgZXZ0Y2huX2JpbmRfaW50
ZXJkb21haW4geworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCByZW1vdGVf
ZG9tOworICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQ7CisgICAgLyogT1VUIHBhcmFtZXRl
cnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0OworfTsKK3R5cGVkZWYgc3RydWN0
IGV2dGNobl9iaW5kX2ludGVyZG9tYWluIGV2dGNobl9iaW5kX2ludGVyZG9tYWluX3Q7CisKKy8q
CisgKiBFVlRDSE5PUF9iaW5kX3ZpcnE6IEJpbmQgYSBsb2NhbCBldmVudCBjaGFubmVsIHRvIFZJ
UlEgPGlycT4gb24gc3BlY2lmaWVkCisgKiB2Y3B1LgorICogTk9URVM6CisgKiAgMS4gVmlydHVh
bCBJUlFzIGFyZSBjbGFzc2lmaWVkIGFzIHBlci12Y3B1IG9yIGdsb2JhbC4gU2VlIHRoZSBWSVJR
IGxpc3QKKyAqICAgICBpbiB4ZW4uaCBmb3IgdGhlIGNsYXNzaWZpY2F0aW9uIG9mIGVhY2ggVklS
US4KKyAqICAyLiBHbG9iYWwgVklSUXMgbXVzdCBiZSBhbGxvY2F0ZWQgb24gVkNQVTAgYnV0IGNh
biBzdWJzZXF1ZW50bHkgYmUKKyAqICAgICByZS1ib3VuZCB2aWEgRVZUQ0hOT1BfYmluZF92Y3B1
LgorICogIDMuIFBlci12Y3B1IFZJUlFzIG1heSBiZSBib3VuZCB0byBhdCBtb3N0IG9uZSBldmVu
dCBjaGFubmVsIHBlciB2Y3B1LgorICogICAgIFRoZSBhbGxvY2F0ZWQgZXZlbnQgY2hhbm5lbCBp
cyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUgYW5kIHRoZQorICogICAgIGJpbmRpbmcgY2Fu
bm90IGJlIGNoYW5nZWQuCisgKi8KK3N0cnVjdCBldnRjaG5fYmluZF92aXJxIHsKKyAgICAvKiBJ
TiBwYXJhbWV0ZXJzLiAqLworICAgIFVJTlQzMiB2aXJxOyAvKiBlbnVtIHZpcnEgKi8KKyAgICBV
SU5UMzIgdmNwdTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBldnRjaG5fcG9ydF90
IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSBldnRjaG5fYmluZF92
aXJxX3Q7CisKKy8qCisgKiBFVlRDSE5PUF9iaW5kX3BpcnE6IEJpbmQgYSBsb2NhbCBldmVudCBj
aGFubmVsIHRvIGEgcmVhbCBJUlEgKFBJUlEgPGlycT4pLgorICogTk9URVM6CisgKiAgMS4gQSBw
aHlzaWNhbCBJUlEgbWF5IGJlIGJvdW5kIHRvIGF0IG1vc3Qgb25lIGV2ZW50IGNoYW5uZWwgcGVy
IGRvbWFpbi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1h
eSBiaW5kIHRvIGEgcGh5c2ljYWwgSVJRLgorICovCitzdHJ1Y3QgZXZ0Y2huX2JpbmRfcGlycSB7
CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBVSU5UMzIgcGlycTsKKyNkZWZpbmUgQklO
RF9QSVJRX19XSUxMX1NIQVJFIDEKKyAgICBVSU5UMzIgZmxhZ3M7IC8qIEJJTkRfUElSUV9fKiAq
LworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKK307
Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fYmluZF9waXJxIGV2dGNobl9iaW5kX3BpcnFfdDsKKwor
LyoKKyAqIEVWVENITk9QX2JpbmRfaXBpOiBCaW5kIGEgbG9jYWwgZXZlbnQgY2hhbm5lbCB0byBy
ZWNlaXZlIGV2ZW50cy4KKyAqIE5PVEVTOgorICogIDEuIFRoZSBhbGxvY2F0ZWQgZXZlbnQgY2hh
bm5lbCBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUuIFRoZSBiaW5kaW5nCisgKiAgICAg
bWF5IG5vdCBiZSBjaGFuZ2VkLgorICovCitzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpIHsKKyAgICBV
SU5UMzIgdmNwdTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBldnRjaG5fcG9ydF90
IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpIGV2dGNobl9iaW5kX2lw
aV90OworCisvKgorICogRVZUQ0hOT1BfY2xvc2U6IENsb3NlIGEgbG9jYWwgZXZlbnQgY2hhbm5l
bCA8cG9ydD4uIElmIHRoZSBjaGFubmVsIGlzCisgKiBpbnRlcmRvbWFpbiB0aGVuIHRoZSByZW1v
dGUgZW5kIGlzIHBsYWNlZCBpbiB0aGUgdW5ib3VuZCBzdGF0ZQorICogKEVWVENITlNUQVRfdW5i
b3VuZCksIGF3YWl0aW5nIGEgbmV3IGNvbm5lY3Rpb24uCisgKi8KK3N0cnVjdCBldnRjaG5fY2xv
c2UgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0Owor
fTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9jbG9zZSBldnRjaG5fY2xvc2VfdDsKKworLyoKKyAq
IEVWVENITk9QX3NlbmQ6IFNlbmQgYW4gZXZlbnQgdG8gdGhlIHJlbW90ZSBlbmQgb2YgdGhlIGNo
YW5uZWwgd2hvc2UgbG9jYWwKKyAqIGVuZHBvaW50IGlzIDxwb3J0Pi4KKyAqLworc3RydWN0IGV2
dGNobl9zZW5kIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGV2dGNobl9wb3J0X3Qg
cG9ydDsKK307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fc2VuZCBldnRjaG5fc2VuZF90OworCisv
KgorICogRVZUQ0hOT1Bfc3RhdHVzOiBHZXQgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBjb21t
dW5pY2F0aW9uIGNoYW5uZWwgd2hpY2gKKyAqIGhhcyBhbiBlbmRwb2ludCBhdCA8ZG9tLCBwb3J0
Pi4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VM
Ri4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBvYnRh
aW4gdGhlIHN0YXR1cyBvZiBhbiBldmVudAorICogICAgIGNoYW5uZWwgZm9yIHdoaWNoIDxkb20+
IGlzIG5vdCBET01JRF9TRUxGLgorICovCitzdHJ1Y3QgZXZ0Y2huX3N0YXR1cyB7CisgICAgLyog
SU4gcGFyYW1ldGVycyAqLworICAgIGRvbWlkX3QgIGRvbTsKKyAgICBldnRjaG5fcG9ydF90IHBv
cnQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KKyNkZWZpbmUgRVZUQ0hOU1RBVF9jbG9zZWQg
ICAgICAgMCAgLyogQ2hhbm5lbCBpcyBub3QgaW4gdXNlLiAgICAgICAgICAgICAgICAgKi8KKyNk
ZWZpbmUgRVZUQ0hOU1RBVF91bmJvdW5kICAgICAgMSAgLyogQ2hhbm5lbCBpcyB3YWl0aW5nIGlu
dGVyZG9tIGNvbm5lY3Rpb24uKi8KKyNkZWZpbmUgRVZUQ0hOU1RBVF9pbnRlcmRvbWFpbiAgMiAg
LyogQ2hhbm5lbCBpcyBjb25uZWN0ZWQgdG8gcmVtb3RlIGRvbWFpbi4gKi8KKyNkZWZpbmUgRVZU
Q0hOU1RBVF9waXJxICAgICAgICAgMyAgLyogQ2hhbm5lbCBpcyBib3VuZCB0byBhIHBoeXMgSVJR
IGxpbmUuICAgKi8KKyNkZWZpbmUgRVZUQ0hOU1RBVF92aXJxICAgICAgICAgNCAgLyogQ2hhbm5l
bCBpcyBib3VuZCB0byBhIHZpcnR1YWwgSVJRIGxpbmUgKi8KKyNkZWZpbmUgRVZUQ0hOU1RBVF9p
cGkgICAgICAgICAgNSAgLyogQ2hhbm5lbCBpcyBib3VuZCB0byBhIHZpcnR1YWwgSVBJIGxpbmUg
Ki8KKyAgICBVSU5UMzIgc3RhdHVzOworICAgIFVJTlQzMiB2Y3B1OyAgICAgICAgICAgICAgICAg
LyogVkNQVSB0byB3aGljaCB0aGlzIGNoYW5uZWwgaXMgYm91bmQuICAgKi8KKyAgICB1bmlvbiB7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBkb21pZF90IGRvbTsKKyAgICAgICAgfSB1
bmJvdW5kOyAgICAgICAgICAgICAgICAgLyogRVZUQ0hOU1RBVF91bmJvdW5kICovCisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICBkb21pZF90IGRvbTsKKyAgICAgICAgICAgIGV2dGNobl9w
b3J0X3QgcG9ydDsKKyAgICAgICAgfSBpbnRlcmRvbWFpbjsgICAgICAgICAgICAgLyogRVZUQ0hO
U1RBVF9pbnRlcmRvbWFpbiAqLworICAgICAgICBVSU5UMzIgcGlycTsgICAgICAgICAgICAgLyog
RVZUQ0hOU1RBVF9waXJxICAgICAgICAqLworICAgICAgICBVSU5UMzIgdmlycTsgICAgICAgICAg
ICAgLyogRVZUQ0hOU1RBVF92aXJxICAgICAgICAqLworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0
cnVjdCBldnRjaG5fc3RhdHVzIGV2dGNobl9zdGF0dXNfdDsKKworLyoKKyAqIEVWVENITk9QX2Jp
bmRfdmNwdTogU3BlY2lmeSB3aGljaCB2Y3B1IGEgY2hhbm5lbCBzaG91bGQgbm90aWZ5IHdoZW4g
YW4KKyAqIGV2ZW50IGlzIHBlbmRpbmcuCisgKiBOT1RFUzoKKyAqICAxLiBJUEktYm91bmQgY2hh
bm5lbHMgYWx3YXlzIG5vdGlmeSB0aGUgdmNwdSBzcGVjaWZpZWQgYXQgYmluZCB0aW1lLgorICog
ICAgIFRoaXMgYmluZGluZyBjYW5ub3QgYmUgY2hhbmdlZC4KKyAqICAyLiBQZXItVkNQVSBWSVJR
IGNoYW5uZWxzIGFsd2F5cyBub3RpZnkgdGhlIHZjcHUgc3BlY2lmaWVkIGF0IGJpbmQgdGltZS4K
KyAqICAgICBUaGlzIGJpbmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCisgKiAgMy4gQWxsIG90aGVy
IGNoYW5uZWxzIG5vdGlmeSB2Y3B1MCBieSBkZWZhdWx0LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdo
ZW4KKyAqICAgICB0aGUgY2hhbm5lbCBpcyBhbGxvY2F0ZWQgKGEgcG9ydCB0aGF0IGlzIGZyZWVk
IGFuZCBzdWJzZXF1ZW50bHkgcmV1c2VkCisgKiAgICAgaGFzIGl0cyBiaW5kaW5nIHJlc2V0IHRv
IHZjcHUwKS4KKyAqLworc3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgeworICAgIC8qIElOIHBhcmFt
ZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgIFVJTlQzMiB2Y3B1OworfTsK
K3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgZXZ0Y2huX2JpbmRfdmNwdV90OworCisv
KgorICogRVZUQ0hOT1BfdW5tYXNrOiBVbm1hc2sgdGhlIHNwZWNpZmllZCBsb2NhbCBldmVudC1j
aGFubmVsIHBvcnQgYW5kIGRlbGl2ZXIKKyAqIGEgbm90aWZpY2F0aW9uIHRvIHRoZSBhcHByb3By
aWF0ZSBWQ1BVIGlmIGFuIGV2ZW50IGlzIHBlbmRpbmcuCisgKi8KK3N0cnVjdCBldnRjaG5fdW5t
YXNrIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsK
K307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fdW5tYXNrIGV2dGNobl91bm1hc2tfdDsKKworLyoK
KyAqIEVWVENITk9QX3Jlc2V0OiBDbG9zZSBhbGwgZXZlbnQgY2hhbm5lbHMgYXNzb2NpYXRlZCB3
aXRoIHNwZWNpZmllZCBkb21haW4uCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3Bl
Y2lmaWVkIGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxl
Z2VkIGRvbWFpbiBtYXkgc3BlY2lmeSBvdGhlciB0aGFuIERPTUlEX1NFTEYuCisgKi8KK3N0cnVj
dCBldnRjaG5fcmVzZXQgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCBk
b207Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX3Jlc2V0IGV2dGNobl9yZXNldF90OworCisv
KgorICogRVZUQ0hOT1BfaW5pdF9jb250cm9sOiBpbml0aWFsaXplIHRoZSBjb250cm9sIGJsb2Nr
IGZvciB0aGUgRklGTyBBQkkuCisgKgorICogTm90ZTogYW55IGV2ZW50cyB0aGF0IGFyZSBjdXJy
ZW50bHkgcGVuZGluZyB3aWxsIG5vdCBiZSByZXNlbnQgYW5kCisgKiB3aWxsIGJlIGxvc3QuICBH
dWVzdHMgc2hvdWxkIGNhbGwgdGhpcyBiZWZvcmUgYmluZGluZyBhbnkgZXZlbnQgdG8KKyAqIGF2
b2lkIGxvc2luZyBhbnkgZXZlbnRzLgorICovCitzdHJ1Y3QgZXZ0Y2huX2luaXRfY29udHJvbCB7
CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBVSU5UNjQgY29udHJvbF9nZm47CisgICAg
VUlOVDMyIG9mZnNldDsKKyAgICBVSU5UMzIgdmNwdTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4g
Ki8KKyAgICBVSU5UOCBsaW5rX2JpdHM7CisgICAgVUlOVDggX3BhZFs3XTsKK307Cit0eXBlZGVm
IHN0cnVjdCBldnRjaG5faW5pdF9jb250cm9sIGV2dGNobl9pbml0X2NvbnRyb2xfdDsKKworLyoK
KyAqIEVWVENITk9QX2V4cGFuZF9hcnJheTogYWRkIGFuIGFkZGl0aW9uYWwgcGFnZSB0byB0aGUg
ZXZlbnQgYXJyYXkuCisgKi8KK3N0cnVjdCBldnRjaG5fZXhwYW5kX2FycmF5IHsKKyAgICAvKiBJ
TiBwYXJhbWV0ZXJzLiAqLworICAgIFVJTlQ2NCBhcnJheV9nZm47Cit9OwordHlwZWRlZiBzdHJ1
Y3QgZXZ0Y2huX2V4cGFuZF9hcnJheSBldnRjaG5fZXhwYW5kX2FycmF5X3Q7CisKKy8qCisgKiBF
VlRDSE5PUF9zZXRfcHJpb3JpdHk6IHNldCB0aGUgcHJpb3JpdHkgZm9yIGFuIGV2ZW50IGNoYW5u
ZWwuCisgKi8KK3N0cnVjdCBldnRjaG5fc2V0X3ByaW9yaXR5IHsKKyAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLworICAgIFVJTlQzMiBwb3J0OworICAgIFVJTlQzMiBwcmlvcml0eTsKK307Cit0eXBl
ZGVmIHN0cnVjdCBldnRjaG5fc2V0X3ByaW9yaXR5IGV2dGNobl9zZXRfcHJpb3JpdHlfdDsKKwor
LyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs
X29wX2NvbXBhdChzdHJ1Y3QgZXZ0Y2huX29wICpvcCkKKyAqIGAKKyAqIFN1cGVyY2VkZWQgYnkg
bmV3IGV2ZW50X2NoYW5uZWxfb3AoKSBoeXBlcmNhbGwgc2luY2UgMHgwMDAzMDIwMi4KKyAqLwor
c3RydWN0IGV2dGNobl9vcCB7CisgICAgVUlOVDMyIGNtZDsgLyogZW51bSBldmVudF9jaGFubmVs
X29wICovCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2FsbG9jX3VuYm91bmQg
ICAgYWxsb2NfdW5ib3VuZDsKKyAgICAgICAgc3RydWN0IGV2dGNobl9iaW5kX2ludGVyZG9tYWlu
IGJpbmRfaW50ZXJkb21haW47CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92aXJxICAgICAg
ICBiaW5kX3ZpcnE7CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9waXJxICAgICAgICBiaW5k
X3BpcnE7CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9pcGkgICAgICAgICBiaW5kX2lwaTsK
KyAgICAgICAgc3RydWN0IGV2dGNobl9jbG9zZSAgICAgICAgICAgIGNsb3NlOworICAgICAgICBz
dHJ1Y3QgZXZ0Y2huX3NlbmQgICAgICAgICAgICAgc2VuZDsKKyAgICAgICAgc3RydWN0IGV2dGNo
bl9zdGF0dXMgICAgICAgICAgIHN0YXR1czsKKyAgICAgICAgc3RydWN0IGV2dGNobl9iaW5kX3Zj
cHUgICAgICAgIGJpbmRfdmNwdTsKKyAgICAgICAgc3RydWN0IGV2dGNobl91bm1hc2sgICAgICAg
ICAgIHVubWFzazsKKyAgICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX29wIGV2dGNo
bl9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZXZ0Y2huX29wX3QpOworCisvKgorICog
Mi1sZXZlbCBBQkkKKyAqLworCisjZGVmaW5lIEVWVENITl8yTF9OUl9DSEFOTkVMUyAoc2l6ZW9m
KHhlbl91bG9uZ190KSAqIHNpemVvZih4ZW5fdWxvbmdfdCkgKiA2NCkKKworLyoKKyAqIEZJRk8g
QUJJCisgKi8KKworLyogRXZlbnRzIG1heSBoYXZlIHByaW9yaXRpZXMgZnJvbSAwIChoaWdoZXN0
KSB0byAxNSAobG93ZXN0KS4gKi8KKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfTUFYICAg
ICAwCisjZGVmaW5lIEVWVENITl9GSUZPX1BSSU9SSVRZX0RFRkFVTFQgNworI2RlZmluZSBFVlRD
SE5fRklGT19QUklPUklUWV9NSU4gICAgIDE1CisKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fTUFYX1FV
RVVFUyAoRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfTUlOICsgMSkKKwordHlwZWRlZiBVSU5UMzIgZXZl
bnRfd29yZF90OworCisjZGVmaW5lIEVWVENITl9GSUZPX1BFTkRJTkcgMzEKKyNkZWZpbmUgRVZU
Q0hOX0ZJRk9fTUFTS0VEICAzMAorI2RlZmluZSBFVlRDSE5fRklGT19MSU5LRUQgIDI5CisjZGVm
aW5lIEVWVENITl9GSUZPX0JVU1kgICAgMjgKKworI2RlZmluZSBFVlRDSE5fRklGT19MSU5LX0JJ
VFMgMTcKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fTElOS19NQVNLICgoMSA8PCBFVlRDSE5fRklGT19M
SU5LX0JJVFMpIC0gMSkKKworI2RlZmluZSBFVlRDSE5fRklGT19OUl9DSEFOTkVMUyAoMSA8PCBF
VlRDSE5fRklGT19MSU5LX0JJVFMpCisKK3N0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2Nr
IHsKKyAgICBVSU5UMzIgcmVhZHk7CisgICAgVUlOVDMyIF9yc3ZkOworICAgIFVJTlQzMiBoZWFk
W0VWVENITl9GSUZPX01BWF9RVUVVRVNdOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9maWZv
X2NvbnRyb2xfYmxvY2sgZXZ0Y2huX2ZpZm9fY29udHJvbF9ibG9ja190OworCisjZW5kaWYgLyog
X19YRU5fUFVCTElDX0VWRU5UX0NIQU5ORUxfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJs
ZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNl
dDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoK
KyAqLwpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2dy
YW50X3RhYmxlLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZ3JhbnRf
dGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDZiNDhkCi0tLSAv
ZGV2L251bGwKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2dyYW50
X3RhYmxlLmgKQEAgLTAsMCArMSw2NjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGdy
YW50X3RhYmxlLmgKKyAqCisgKiBJbnRlcmZhY2UgZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNz
IHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVjZWl2aW5nCisgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2Zl
cnMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBk
ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4g
VEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCwgSyBBIEZyYXNlcgorICov
CisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXworI2RlZmluZSBfX1hFTl9Q
VUJMSUNfR1JBTlRfVEFCTEVfSF9fCisKKyNpbmNsdWRlICJ4ZW4uaCIKKworLyoKKyAqIGBpbmNv
bnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQgVGFibGVzCisgKgorICogWGVuJ3MgZ3JhbnQgdGFibGVz
IHByb3ZpZGUgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBtZW1vcnkgc2hhcmluZworICogYmV0d2Vl
biBkb21haW5zLiBUaGlzIHNoYXJlZCBtZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlucyB0aGUgc3Bs
aXQKKyAqIGRldmljZSBkcml2ZXJzIGZvciBibG9jayBhbmQgbmV0d29yayBJTy4KKyAqCisgKiBF
YWNoIGRvbWFpbiBoYXMgaXRzIG93biBncmFudCB0YWJsZS4gVGhpcyBpcyBhIGRhdGEgc3RydWN0
dXJlIHRoYXQKKyAqIGlzIHNoYXJlZCB3aXRoIFhlbjsgaXQgYWxsb3dzIHRoZSBkb21haW4gdG8g
dGVsbCBYZW4gd2hhdCBraW5kIG9mCisgKiBwZXJtaXNzaW9ucyBvdGhlciBkb21haW5zIGhhdmUg
b24gaXRzIHBhZ2VzLiBFbnRyaWVzIGluIHRoZSBncmFudAorICogdGFibGUgYXJlIGlkZW50aWZp
ZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4gQSBncmFudCByZWZlcmVuY2UgaXMgYW4KKyAqIGludGVn
ZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMgYXMgYQorICog
Y2FwYWJpbGl0eSB3aGljaCB0aGUgZ3JhbnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0gb3BlcmF0aW9u
cyBvbiB0aGUKKyAqIGdyYW50ZXLigJlzIG1lbW9yeS4KKyAqCisgKiBUaGlzIGNhcGFiaWxpdHkt
YmFzZWQgc3lzdGVtIGFsbG93cyBzaGFyZWQtbWVtb3J5IGNvbW11bmljYXRpb25zCisgKiBiZXR3
ZWVuIHVucHJpdmlsZWdlZCBkb21haW5zLiBBIGdyYW50IHJlZmVyZW5jZSBhbHNvIGVuY2Fwc3Vs
YXRlcworICogdGhlIGRldGFpbHMgb2YgYSBzaGFyZWQgcGFnZSwgcmVtb3ZpbmcgdGhlIG5lZWQg
Zm9yIGEgZG9tYWluIHRvCisgKiBrbm93IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVzcyBvZiBhIHBh
Z2UgaXQgaXMgc2hhcmluZy4gVGhpcyBtYWtlcworICogaXQgcG9zc2libGUgdG8gc2hhcmUgbWVt
b3J5IGNvcnJlY3RseSB3aXRoIGRvbWFpbnMgcnVubmluZyBpbgorICogZnVsbHkgdmlydHVhbGlz
ZWQgbWVtb3J5LgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
ICogR1JBTlQgVEFCTEUgUkVQUkVTRU5UQVRJT04KKyAqLworCisvKiBTb21lIHJvdWdoIGd1aWRl
bGluZXMgb24gYWNjZXNzaW5nIGFuZCB1cGRhdGluZyBncmFudC10YWJsZSBlbnRyaWVzCisgKiBp
biBhIGNvbmN1cnJlbmN5LXNhZmUgbWFubmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgTGludXgg
Y29udGFpbnMgYQorICogcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBndWVzdCBPU2VzIChk
cml2ZXJzL3hlbi9ncmFudF90YWJsZS5jLCBzZWUKKyAqIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/
cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1kcml2ZXJzL3hl
bi9ncmFudC10YWJsZS5jO2hiPUhFQUQKKyAqCisgKiBOQi4gV01CIGlzIGEgbm8tb3Agb24gY3Vy
cmVudC1nZW5lcmF0aW9uIHg4NiBwcm9jZXNzb3JzLiBIb3dldmVyLCBhCisgKiAgICAgY29tcGls
ZXIgYmFycmllciB3aWxsIHN0aWxsIGJlIHJlcXVpcmVkLgorICoKKyAqIEludHJvZHVjaW5nIGEg
dmFsaWQgZW50cnkgaW50byB0aGUgZ3JhbnQgdGFibGU6CisgKiAgMS4gV3JpdGUgZW50LT5kb21p
ZC4KKyAqICAyLiBXcml0ZSBlbnQtPmZyYW1lOgorICogICAgICBHVEZfcGVybWl0X2FjY2Vzczog
ICBGcmFtZSB0byB3aGljaCBhY2Nlc3MgaXMgcGVybWl0dGVkLgorICogICAgICBHVEZfYWNjZXB0
X3RyYW5zZmVyOiBQc2V1ZG8tcGh5cyBmcmFtZSBzbG90IGJlaW5nIGZpbGxlZCBieSBuZXcKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIG9yIHplcm8gaWYgbm9uZS4KKyAqICAz
LiBXcml0ZSBtZW1vcnkgYmFycmllciAoV01CKS4KKyAqICA0LiBXcml0ZSBlbnQtPmZsYWdzLCBp
bmMuIHZhbGlkIHR5cGUuCisgKgorICogSW52YWxpZGF0aW5nIGFuIHVudXNlZCBHVEZfcGVybWl0
X2FjY2VzcyBlbnRyeToKKyAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2
ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3JlYWRpbmd8R1RGX3dyaXRpbmcpKS4KKyAqICAzLiBDaGVj
ayByZXN1bHQgb2YgU01QLXNhZmUgQ01QWENIRygmZW50LT5mbGFncywgZmxhZ3MsIDApLgorICog
IE5CLiBObyBuZWVkIGZvciBXTUIgYXMgcmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRl
bnQgb24gc3VjY2VzcyBvZgorICogICAgICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBn
dWFyYW50ZWUgb3JkZXJpbmcgb2YgY3RybC1kZXAgd3JpdGVzLgorICoKKyAqIEludmFsaWRhdGlu
ZyBhbiBpbi11c2UgR1RGX3Blcm1pdF9hY2Nlc3MgZW50cnk6CisgKiAgVGhpcyBjYW5ub3QgYmUg
ZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBhc3Npc3RhbmNlIGZyb20gdGhlIGRvbWFpbiBjb250cm9s
bGVyCisgKiAgd2hpY2ggY2FuIHNldCBhIHRpbWVvdXQgb24gdGhlIHVzZSBvZiBhIGdyYW50IGVu
dHJ5IGFuZCB0YWtlIG5lY2Vzc2FyeQorICogIGFjdGlvbi4gKE5CLiBUaGlzIGlzIG5vdCB5ZXQg
aW1wbGVtZW50ZWQhKS4KKyAqCisgKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9hY2NlcHRf
dHJhbnNmZXIgZW50cnk6CisgKiAgMS4gZmxhZ3MgPSBlbnQtPmZsYWdzLgorICogIDIuIE9ic2Vy
dmUgdGhhdCAhKGZsYWdzICYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkuIFsqXQorICogIDMuIENo
ZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCisg
KiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVu
ZGVudCBvbiBzdWNjZXNzIG9mCisgKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVz
IGd1YXJhbnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCisgKiAgWypdIElmIEdURl90
cmFuc2Zlcl9jb21taXR0ZWQgaXMgc2V0IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlzICdjb21taXR0
ZWQnLgorICogICAgICBUaGUgZ3Vlc3QgbXVzdCAvbm90LyBtb2RpZnkgdGhlIGdyYW50IGVudHJ5
IHVudGlsIHRoZSBhZGRyZXNzIG9mIHRoZQorICogICAgICB0cmFuc2ZlcnJlZCBmcmFtZSBpcyB3
cml0dGVuLiBJdCBpcyBzYWZlIGZvciB0aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5nCisgKiAgICAg
IGZvciB0aGlzIHRvIG9jY3VyIChkZXRlY3QgYnkgb2JzZXJ2aW5nIEdURl90cmFuc2Zlcl9jb21w
bGV0ZWQgaW4KKyAqICAgICAgZW50LT5mbGFncykuCisgKgorICogSW52YWxpZGF0aW5nIGEgY29t
bWl0dGVkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6CisgKiAgMS4gV2FpdCBmb3IgKGVudC0+
ZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tcGxldGVkKS4KKyAqCisgKiBDaGFuZ2luZyBhIEdURl9w
ZXJtaXRfYWNjZXNzIGZyb20gd3JpdGFibGUgdG8gcmVhZC1vbmx5OgorICogIFVzZSBTTVAtc2Fm
ZSBDTVBYQ0hHIHRvIHNldCBHVEZfcmVhZG9ubHksIHdoaWxlIGNoZWNraW5nICFHVEZfd3JpdGlu
Zy4KKyAqCisgKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gcmVhZC1vbmx5IHRv
IHdyaXRhYmxlOgorICogIFVzZSBTTVAtc2FmZSBiaXQtc2V0dGluZyBpbnN0cnVjdGlvbi4KKyAq
LworCisvKgorICogUmVmZXJlbmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9t
YWluJ3MgZ3JhbnQgdGFibGUuCisgKi8KK3R5cGVkZWYgVUlOVDMyIGdyYW50X3JlZl90OworCisv
KgorICogQSBncmFudCB0YWJsZSBjb21wcmlzZXMgYSBwYWNrZWQgYXJyYXkgb2YgZ3JhbnQgZW50
cmllcyBpbiBvbmUgb3IgbW9yZQorICogcGFnZSBmcmFtZXMgc2hhcmVkIGJldHdlZW4gWGVuIGFu
ZCBhIGd1ZXN0LgorICogW1hFTl06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBieSBYZW4gYW5kIHJl
YWQgYnkgdGhlIHNoYXJpbmcgZ3Vlc3QuCisgKiBbR1NUXTogVGhpcyBmaWVsZCBpcyB3cml0dGVu
IGJ5IHRoZSBndWVzdCBhbmQgcmVhZCBieSBYZW4uCisgKi8KKworLyoKKyAqIFZlcnNpb24gMSBv
ZiB0aGUgZ3JhbnQgdGFibGUgZW50cnkgc3RydWN0dXJlIGlzIG1haW50YWluZWQgcHVyZWx5Cisg
KiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuICBOZXcgZ3Vlc3RzIHNob3VsZCB1c2UgdmVy
c2lvbiAyLgorICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMGEK
KyNkZWZpbmUgZ3JhbnRfZW50cnlfdjEgZ3JhbnRfZW50cnkKKyNkZWZpbmUgZ3JhbnRfZW50cnlf
djFfdCBncmFudF9lbnRyeV90CisjZW5kaWYKK3N0cnVjdCBncmFudF9lbnRyeV92MSB7CisgICAg
LyogR1RGX3h4eDogdmFyaW91cyB0eXBlIGFuZCBmbGFnIGluZm9ybWF0aW9uLiAgW1hFTixHU1Rd
ICovCisgICAgVUlOVDE2IGZsYWdzOworICAgIC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBm
b3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICovCisgICAgZG9taWRfdCAgZG9taWQ7CisgICAgLyoK
KyAgICAgKiBHVEZfcGVybWl0X2FjY2VzczogRnJhbWUgdGhhdCBAZG9taWQgaXMgYWxsb3dlZCB0
byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KKyAgICAgKiBHVEZfYWNjZXB0X3RyYW5zZmVyOiBGcmFt
ZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJyZWQgYnkgQGRvbWlkLiBbWEVOXQorICAgICAqLwor
ICAgIFVJTlQzMiBmcmFtZTsKK307Cit0eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV92MSBncmFu
dF9lbnRyeV92MV90OworCisvKiBUaGUgZmlyc3QgZmV3IGdyYW50IHRhYmxlIGVudHJpZXMgd2ls
bCBiZSBwcmVzZXJ2ZWQgYWNyb3NzIGdyYW50IHRhYmxlCisgKiB2ZXJzaW9uIGNoYW5nZXMgYW5k
IG1heSBiZSBwcmUtcG9wdWxhdGVkIGF0IGRvbWFpbiBjcmVhdGlvbiBieSB0b29scy4KKyAqLwor
I2RlZmluZSBHTlRUQUJfTlJfUkVTRVJWRURfRU5UUklFUyAgICAgOAorI2RlZmluZSBHTlRUQUJf
UkVTRVJWRURfQ09OU09MRSAgICAgICAgMAorI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfWEVOU1RP
UkUgICAgICAgMQorCisvKgorICogVHlwZSBvZiBncmFudCBlbnRyeS4KKyAqICBHVEZfaW52YWxp
ZDogVGhpcyBncmFudCBlbnRyeSBncmFudHMgbm8gcHJpdmlsZWdlcy4KKyAqICBHVEZfcGVybWl0
X2FjY2VzczogQWxsb3cgQGRvbWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1lLgorICogIEdURl9hY2Nl
cHRfdHJhbnNmZXI6IEFsbG93IEBkb21pZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2Ygb25lIHBh
Z2UgZnJhbWUKKyAqICAgICAgICAgICAgICAgICAgICAgICB0byB0aGlzIGd1ZXN0LiBYZW4gd3Jp
dGVzIHRoZSBwYWdlIG51bWJlciB0byBAZnJhbWUuCisgKiAgR1RGX3RyYW5zaXRpdmU6IEFsbG93
IEBkb21pZCB0byB0cmFuc2l0aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ugb2YKKyAqICAgICAgICAg
ICAgICAgICAgQHRyYW5zX2dyYW50IGluIEB0cmFuc19kb21pZC4gIE5vIG1hcHBpbmdzIGFyZSBh
bGxvd2VkLgorICovCisjZGVmaW5lIEdURl9pbnZhbGlkICAgICAgICAgKDBVPDwwKQorI2RlZmlu
ZSBHVEZfcGVybWl0X2FjY2VzcyAgICgxVTw8MCkKKyNkZWZpbmUgR1RGX2FjY2VwdF90cmFuc2Zl
ciAoMlU8PDApCisjZGVmaW5lIEdURl90cmFuc2l0aXZlICAgICAgKDNVPDwwKQorI2RlZmluZSBH
VEZfdHlwZV9tYXNrICAgICAgICgzVTw8MCkKKworLyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfcGVy
bWl0X2FjY2Vzcy4KKyAqICBHVEZfcmVhZG9ubHk6IFJlc3RyaWN0IEBkb21pZCB0byByZWFkLW9u
bHkgbWFwcGluZ3MgYW5kIGFjY2Vzc2VzLiBbR1NUXQorICogIEdURl9yZWFkaW5nOiBHcmFudCBl
bnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciByZWFkaW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAq
ICBHVEZfd3JpdGluZzogR3JhbnQgZW50cnkgaXMgY3VycmVudGx5IG1hcHBlZCBmb3Igd3JpdGlu
ZyBieSBAZG9taWQuIFtYRU5dCisgKiAgR1RGX1BBVCwgR1RGX1BXVCwgR1RGX1BDRDogKHg4Nikg
Y2FjaGUgYXR0cmlidXRlIGZsYWdzIGZvciB0aGUgZ3JhbnQgW0dTVF0KKyAqICBHVEZfc3ViX3Bh
Z2U6IEdyYW50IGFjY2VzcyB0byBvbmx5IGEgc3VicmFuZ2Ugb2YgdGhlIHBhZ2UuICBAZG9taWQK
KyAqICAgICAgICAgICAgICAgIHdpbGwgb25seSBiZSBhbGxvd2VkIHRvIGNvcHkgZnJvbSB0aGUg
Z3JhbnQsIGFuZCBub3QKKyAqICAgICAgICAgICAgICAgIG1hcCBpdC4gW0dTVF0KKyAqLworI2Rl
ZmluZSBfR1RGX3JlYWRvbmx5ICAgICAgICgyKQorI2RlZmluZSBHVEZfcmVhZG9ubHkgICAgICAg
ICgxVTw8X0dURl9yZWFkb25seSkKKyNkZWZpbmUgX0dURl9yZWFkaW5nICAgICAgICAoMykKKyNk
ZWZpbmUgR1RGX3JlYWRpbmcgICAgICAgICAoMVU8PF9HVEZfcmVhZGluZykKKyNkZWZpbmUgX0dU
Rl93cml0aW5nICAgICAgICAoNCkKKyNkZWZpbmUgR1RGX3dyaXRpbmcgICAgICAgICAoMVU8PF9H
VEZfd3JpdGluZykKKyNkZWZpbmUgX0dURl9QV1QgICAgICAgICAgICAoNSkKKyNkZWZpbmUgR1RG
X1BXVCAgICAgICAgICAgICAoMVU8PF9HVEZfUFdUKQorI2RlZmluZSBfR1RGX1BDRCAgICAgICAg
ICAgICg2KQorI2RlZmluZSBHVEZfUENEICAgICAgICAgICAgICgxVTw8X0dURl9QQ0QpCisjZGVm
aW5lIF9HVEZfUEFUICAgICAgICAgICAgKDcpCisjZGVmaW5lIEdURl9QQVQgICAgICAgICAgICAg
KDFVPDxfR1RGX1BBVCkKKyNkZWZpbmUgX0dURl9zdWJfcGFnZSAgICAgICAoOCkKKyNkZWZpbmUg
R1RGX3N1Yl9wYWdlICAgICAgICAoMVU8PF9HVEZfc3ViX3BhZ2UpCisKKy8qCisgKiBTdWJmbGFn
cyBmb3IgR1RGX2FjY2VwdF90cmFuc2ZlcjoKKyAqICBHVEZfdHJhbnNmZXJfY29tbWl0dGVkOiBY
ZW4gc2V0cyB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBjb21taXR0ZWQKKyAqICAg
ICAgdG8gdHJhbnNmZXJyaW5nIG93bmVyc2hpcCBvZiBhIHBhZ2UgZnJhbWUuIFdoZW4gYSBndWVz
dCBzZWVzIHRoaXMgZmxhZworICogICAgICBpdCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQg
ZW50cnkgdW50aWwgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpcworICogICAgICBzZXQgYnkgWGVu
LgorICogIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQ6IEl0IGlzIHNhZmUgZm9yIHRoZSBndWVzdCB0
byBzcGluLXdhaXQgb24gdGhpcyBmbGFnCisgKiAgICAgIGFmdGVyIHJlYWRpbmcgR1RGX3RyYW5z
ZmVyX2NvbW1pdHRlZC4gWGVuIHdpbGwgYWx3YXlzIHdyaXRlIHRoZSBmcmFtZQorICogICAgICBh
ZGRyZXNzLCBmb2xsb3dlZCBieSBPUmluZyB0aGlzIGZsYWcsIGluIGEgdGltZWx5IG1hbm5lci4K
KyAqLworI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAoMikKKyNkZWZpbmUgR1RGX3Ry
YW5zZmVyX2NvbW1pdHRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkKKyNkZWZpbmUg
X0dURl90cmFuc2Zlcl9jb21wbGV0ZWQgKDMpCisjZGVmaW5lIEdURl90cmFuc2Zlcl9jb21wbGV0
ZWQgICgxVTw8X0dURl90cmFuc2Zlcl9jb21wbGV0ZWQpCisKKy8qCisgKiBWZXJzaW9uIDIgZ3Jh
bnQgdGFibGUgZW50cmllcy4gIFRoZXNlIGZ1bGZpbCB0aGUgc2FtZSByb2xlIGFzCisgKiB2ZXJz
aW9uIDEgZW50cmllcywgYnV0IGNhbiByZXByZXNlbnQgbW9yZSBjb21wbGljYXRlZCBvcGVyYXRp
b25zLgorICogQW55IGdpdmVuIGRvbWFpbiB3aWxsIGhhdmUgZWl0aGVyIGEgdmVyc2lvbiAxIG9y
IGEgdmVyc2lvbiAyIHRhYmxlLAorICogYW5kIGV2ZXJ5IGVudHJ5IGluIHRoZSB0YWJsZSB3aWxs
IGJlIHRoZSBzYW1lIHZlcnNpb24uCisgKgorICogVGhlIGludGVyZmFjZSBieSB3aGljaCBkb21h
aW5zIHVzZSBncmFudCByZWZlcmVuY2VzIGRvZXMgbm90IGRlcGVuZAorICogb24gdGhlIGdyYW50
IHRhYmxlIHZlcnNpb24gaW4gdXNlIGJ5IHRoZSBvdGhlciBkb21haW4uCisgKi8KKyNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKKy8qCisgKiBWZXJzaW9uIDEgYW5k
IHZlcnNpb24gMiBncmFudCBlbnRyaWVzIHNoYXJlIGEgY29tbW9uIHByZWZpeC4gIFRoZQorICog
ZmllbGRzIG9mIHRoZSBwcmVmaXggYXJlIGRvY3VtZW50ZWQgYXMgcGFydCBvZiBzdHJ1Y3QKKyAq
IGdyYW50X2VudHJ5X3YxLgorICovCitzdHJ1Y3QgZ3JhbnRfZW50cnlfaGVhZGVyIHsKKyAgICBV
SU5UMTYgZmxhZ3M7CisgICAgZG9taWRfdCAgZG9taWQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ3Jh
bnRfZW50cnlfaGVhZGVyIGdyYW50X2VudHJ5X2hlYWRlcl90OworCisvKgorICogVmVyc2lvbiAy
IG9mIHRoZSBncmFudCBlbnRyeSBzdHJ1Y3R1cmUuCisgKi8KK3VuaW9uIGdyYW50X2VudHJ5X3Yy
IHsKKyAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7CisKKyAgICAvKgorICAgICAqIFRoaXMg
bWVtYmVyIGlzIHVzZWQgZm9yIFYxLXN0eWxlIGZ1bGwgcGFnZSBncmFudHMsIHdoZXJlIGVpdGhl
cjoKKyAgICAgKgorICAgICAqIC0tIGhkci50eXBlIGlzIEdURl9hY2NlcHRfdHJhbnNmZXIsIG9y
CisgICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX3Blcm1pdF9hY2Nlc3MgYW5kIEdURl9zdWJfcGFn
ZSBpcyBub3Qgc2V0LgorICAgICAqCisgICAgICogSW4gdGhhdCBjYXNlLCB0aGUgZnJhbWUgZmll
bGQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUKKyAgICAgKiBmaWVsZCBvZiB0aGUgc2Ft
ZSBuYW1lIGluIHRoZSBWMSBlbnRyeSBzdHJ1Y3R1cmUuCisgICAgICovCisgICAgc3RydWN0IHsK
KyAgICAgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOworICAgICAgICBVSU5UMzIgcGFkMDsK
KyAgICAgICAgVUlOVDY0IGZyYW1lOworICAgIH0gZnVsbF9wYWdlOworCisgICAgLyoKKyAgICAg
KiBJZiB0aGUgZ3JhbnQgdHlwZSBpcyBHVEZfZ3JhbnRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2Ug
aXMgc2V0LAorICAgICAqIEBkb21pZCBpcyBhbGxvd2VkIHRvIGFjY2VzcyBieXRlcyBbQHBhZ2Vf
b2ZmLEBwYWdlX29mZitAbGVuZ3RoKQorICAgICAqIGluIGZyYW1lIEBmcmFtZS4KKyAgICAgKi8K
KyAgICBzdHJ1Y3QgeworICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7CisgICAgICAg
IFVJTlQxNiBwYWdlX29mZjsKKyAgICAgICAgVUlOVDE2IGxlbmd0aDsKKyAgICAgICAgVUlOVDY0
IGZyYW1lOworICAgIH0gc3ViX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCBp
cyBHVEZfdHJhbnNpdGl2ZSwgQGRvbWlkIGlzIGFsbG93ZWQgdG8gdXNlIHRoZQorICAgICAqIGdy
YW50IEBncmVmIGluIGRvbWFpbiBAdHJhbnNfZG9taWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwK
KyAgICAgKiBkb21haW4uICBPYnZpb3VzbHksIHRoZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJl
IGNvbXBhdGlibGUKKyAgICAgKiB3aXRoIHRoZSBvcmlnaW5hbCBncmFudC4KKyAgICAgKgorICAg
ICAqIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgWGVuIGRvZXMgbm90IGFsbG93IHRyYW5zaXRpdmUg
Z3JhbnRzCisgICAgICogdG8gYmUgbWFwcGVkLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAg
ICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAgICAgZG9taWRfdCB0cmFuc19kb21p
ZDsKKyAgICAgICAgVUlOVDE2IHBhZDA7CisgICAgICAgIGdyYW50X3JlZl90IGdyZWY7CisgICAg
fSB0cmFuc2l0aXZlOworCisgICAgVUlOVDMyIF9fc3BhY2VyWzRdOyAvKiBQYWQgdG8gYSBwb3dl
ciBvZiB0d28gKi8KK307Cit0eXBlZGVmIHVuaW9uIGdyYW50X2VudHJ5X3YyIGdyYW50X2VudHJ5
X3YyX3Q7CisKK3R5cGVkZWYgVUlOVDE2IGdyYW50X3N0YXR1c190OworCisjZW5kaWYgLyogX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIEdSQU5UIFRBQkxFIFFVRVJJRVMgQU5EIFVTRVMKKyAqLworCisvKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFu
dF90YWJsZV9vcCBjbWQsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9JRCAqYXJn
cywKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgY291bnQpCisgKiBgCisg
KgorICogQGFyZ3MgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGEgcGVyLWNvbW1hbmQgZGF0YSBzdHJ1
Y3R1cmUuIFRoZSBhcnJheQorICogaGFzIEBjb3VudCBtZW1iZXJzCisgKi8KKworLyogYCBlbnVt
IGdyYW50X3RhYmxlX29wIHsgLy8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyogKi8KKyNk
ZWZpbmUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiAgICAgICAgMAorI2RlZmluZSBHTlRUQUJPUF91
bm1hcF9ncmFudF9yZWYgICAgICAxCisjZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxlICAgICAg
ICAgIDIKKyNkZWZpbmUgR05UVEFCT1BfZHVtcF90YWJsZSAgICAgICAgICAgMworI2RlZmluZSBH
TlRUQUJPUF90cmFuc2ZlciAgICAgICAgICAgICA0CisjZGVmaW5lIEdOVFRBQk9QX2NvcHkgICAg
ICAgICAgICAgICAgIDUKKyNkZWZpbmUgR05UVEFCT1BfcXVlcnlfc2l6ZSAgICAgICAgICAgNgor
I2RlZmluZSBHTlRUQUJPUF91bm1hcF9hbmRfcmVwbGFjZSAgICA3CisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisjZGVmaW5lIEdOVFRBQk9QX3NldF92ZXJzaW9u
ICAgICAgICAgIDgKKyNkZWZpbmUgR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXMgICAgOQorI2Rl
ZmluZSBHTlRUQUJPUF9nZXRfdmVyc2lvbiAgICAgICAgICAxMAorI2RlZmluZSBHTlRUQUJPUF9z
d2FwX2dyYW50X3JlZgkgICAgICAxMQorI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18gKi8KKy8qIGAgfSAqLworCisvKgorICogSGFuZGxlIHRvIHRyYWNrIGEgbWFwcGluZyBjcmVh
dGVkIHZpYSBhIGdyYW50IHJlZmVyZW5jZS4KKyAqLwordHlwZWRlZiBVSU5UMzIgZ3JhbnRfaGFu
ZGxlX3Q7CisKKy8qCisgKiBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmOiBNYXAgdGhlIGdyYW50IGVu
dHJ5ICg8ZG9tPiw8cmVmPikgZm9yIGFjY2VzcworICogYnkgZGV2aWNlcyBhbmQvb3IgaG9zdCBD
UFVzLiBJZiBzdWNjZXNzZnVsLCA8aGFuZGxlPiBpcyBhIHRyYWNraW5nIG51bWJlcgorICogdGhh
dCBtdXN0IGJlIHByZXNlbnRlZCBsYXRlciB0byBkZXN0cm95IHRoZSBtYXBwaW5nKHMpLiBPbiBl
cnJvciwgPGhhbmRsZT4KKyAqIGlzIGEgbmVnYXRpdmUgc3RhdHVzIGNvZGUuCisgKiBOT1RFUzoK
KyAqICAxLiBJZiBHTlRNQVBfZGV2aWNlX21hcCBpcyBzcGVjaWZpZWQgdGhlbiA8ZGV2X2J1c19h
ZGRyPiBpcyB0aGUgYWRkcmVzcworICogICAgIHZpYSB3aGljaCBJL08gZGV2aWNlcyBtYXkgYWNj
ZXNzIHRoZSBncmFudGVkIGZyYW1lLgorICogIDIuIElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVj
aWZpZWQgdGhlbiBhIG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdAorICogICAgIGVpdGhlciBhIGhv
c3QgdmlydHVhbCBhZGRyZXNzIGluIHRoZSBjdXJyZW50IGFkZHJlc3Mgc3BhY2UsIG9yIGF0Cisg
KiAgICAgYSBQVEUgYXQgdGhlIHNwZWNpZmllZCBtYWNoaW5lIGFkZHJlc3MuICBUaGUgdHlwZSBv
ZiBtYXBwaW5nIHRvCisgKiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRN
QVBfY29udGFpbnNfcHRlIGZsYWcsIGFuZCB0aGUKKyAqICAgICBhZGRyZXNzIGlzIHNwZWNpZmll
ZCBpbiA8aG9zdF9hZGRyPi4KKyAqICAzLiBNYXBwaW5ncyBzaG91bGQgb25seSBiZSBkZXN0cm95
ZWQgdmlhIEdOVFRBQk9QX3VubWFwX2dyYW50X3JlZi4gSWYgYQorICogICAgIGhvc3QgbWFwcGlu
ZyBpcyBkZXN0cm95ZWQgYnkgb3RoZXIgbWVhbnMgdGhlbiBpdCBpcyAqTk9UKiBndWFyYW50ZWVk
CisgKiAgICAgdG8gYmUgYWNjb3VudGVkIHRvIHRoZSBjb3JyZWN0IGdyYW50IHJlZmVyZW5jZSEK
KyAqLworc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLworICAgIFVJTlQ2NCBob3N0X2FkZHI7CisgICAgVUlOVDMyIGZsYWdzOyAgICAgICAgICAg
ICAgIC8qIEdOVE1BUF8qICovCisgICAgZ3JhbnRfcmVmX3QgcmVmOworICAgIGRvbWlkX3QgIGRv
bTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBJTlQxNiAgc3RhdHVzOyAgICAgICAg
ICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KKyAgICBncmFudF9oYW5kbGVfdCBoYW5k
bGU7CisgICAgVUlOVDY0IGRldl9idXNfYWRkcjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJf
bWFwX2dyYW50X3JlZiBnbnR0YWJfbWFwX2dyYW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoZ250dGFiX21hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9n
cmFudF9yZWY6IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCisg
KiB0cmFja2VkIGJ5IDxoYW5kbGU+LiBJZiA8aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBp
cyB6ZXJvLCB0aGF0CisgKiBmaWVsZCBpcyBpZ25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0
IHJlZmVyIHRvIGEgZGV2aWNlL2hvc3QgbWFwcGluZworICogdGhhdCBpcyB0cmFja2VkIGJ5IDxo
YW5kbGU+CisgKiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmlu
ZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhh
bmRsZT4uCisgKiAgMy4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBn
dWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0
aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9y
ZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgVUlOVDY0IGhvc3RfYWRkcjsKKyAg
ICBVSU5UNjQgZGV2X2J1c19hZGRyOworICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsKKyAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBJTlQxNiAgc3RhdHVzOyAgICAgICAgICAgICAgLyog
PT4gZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBf
Z3JhbnRfcmVmIGdudHRhYl91bm1hcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKGdudHRhYl91bm1hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zZXR1cF90
YWJsZTogU2V0IHVwIGEgZ3JhbnQgdGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QK
KyAqIDxucl9mcmFtZXM+IHBhZ2VzLiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRv
IHRoZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3Jp
dHRlbiwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgorICogTk9URVM6CisgKiAgMS4gPGRv
bT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNp
ZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4K
KyAqICAzLiBYZW4gbWF5IG5vdCBzdXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJs
ZSBwYWdlIHBlciBkb21haW4uCisgKi8KK3N0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgeworICAg
IC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCAgZG9tOworICAgIFVJTlQzMiBucl9m
cmFtZXM7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgSU5UMTYgIHN0YXR1czsgICAg
ICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCisjaWYgX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXyA8IDB4MDAwNDAzMDAKKyAgICBYRU5fR1VFU1RfSEFORExFKHVsb25nKSBmcmFt
ZV9saXN0OworI2Vsc2UKKyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZnJhbWVfbGlz
dDsKKyNlbmRpZgorfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9zZXR1cF90YWJsZSBnbnR0YWJf
c2V0dXBfdGFibGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zZXR1cF90YWJs
ZV90KTsKKworLyoKKyAqIEdOVFRBQk9QX2R1bXBfdGFibGU6IER1bXAgdGhlIGNvbnRlbnRzIG9m
IHRoZSBncmFudCB0YWJsZSB0byB0aGUKKyAqIHhlbiBjb25zb2xlLiBEZWJ1Z2dpbmcgdXNlIG9u
bHkuCisgKi8KK3N0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSB7CisgICAgLyogSU4gcGFyYW1ldGVy
cy4gKi8KKyAgICBkb21pZF90IGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBJ
TlQxNiBzdGF0dXM7ICAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KK307
Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90Owor
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7CisKKy8qCisgKiBH
TlRUQUJPUF90cmFuc2Zlcl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3JlaWdu
IGRvbWFpbi4gVGhlCisgKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3RlcmVk
IGl0cyBpbnRlcmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCisgKiA8ZG9taWQsIHJlZj4uCisgKgor
ICogTm90ZSB0aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmllZCBw
YWdlIG5vIGxvbmdlciBiZWxvbmdzCisgKiB0byB0aGUgY2FsbGluZyBkb21haW4gKnVubGVzcyog
dGhlIGVycm9yIGlzIEdOVFNUX2JhZF9wYWdlLgorICovCitzdHJ1Y3QgZ250dGFiX3RyYW5zZmVy
IHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHhlbl9wZm5fdCAgICAgbWZuOworICAg
IGRvbWlkX3QgICAgICAgZG9taWQ7CisgICAgZ3JhbnRfcmVmX3QgICByZWY7CisgICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCisgICAgSU5UMTYgICAgICAgc3RhdHVzOworfTsKK3R5cGVkZWYgc3Ry
dWN0IGdudHRhYl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKGdudHRhYl90cmFuc2Zlcl90KTsKKworCisvKgorICogR05UVEFCT1BfY29weTogSHlw
ZXJ2aXNvciBiYXNlZCBjb3B5CisgKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBjYW4gYmUgZWl0
aGVycyBNRk5zIG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAorICogZ3JhbnQgcmVmZXJlbmNlcy4g
dGhlIGZvcmVpZ24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2VzcworICogaW4g
aXRzIGdyYW50IHRhYmxlLgorICoKKyAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQgdHlwZSBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KKyAqIG9yIGdyYW50IHJlZmVyZW5j
ZSkuCisgKgorICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBjb3B5IGRhdGEg
YmV0d2VlbiB0d28gZG9tYWlucworICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhlIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQorICogZ3JhbnQgYXBwcm9wcmlh
dGUgYWNjZXNzIHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KKyAqCisgKiBzb3Vy
Y2Vfb2Zmc2V0IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFtZSwgZGVzdF9v
ZmZzZXQKKyAqIHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxlbiBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZgorICogYnl0ZXMgdG8gYmUgY29waWVkLgorICovCisKKyNkZWZpbmUg
X0dOVENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKKyNkZWZpbmUgR05UQ09QWV9zb3VyY2VfZ3Jl
ZiAgICAgICAoMTw8X0dOVENPUFlfc291cmNlX2dyZWYpCisjZGVmaW5lIF9HTlRDT1BZX2Rlc3Rf
Z3JlZiAgICAgICAgKDEpCisjZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAgICAgKDE8PF9H
TlRDT1BZX2Rlc3RfZ3JlZikKKworc3RydWN0IGdudHRhYl9jb3B5IHsKKyAgICAvKiBJTiBwYXJh
bWV0ZXJzLiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGdy
YW50X3JlZl90IHJlZjsKKyAgICAgICAgICAgIHhlbl9wZm5fdCAgIGdtZm47CisgICAgICAgIH0g
dTsKKyAgICAgICAgZG9taWRfdCAgZG9taWQ7CisgICAgICAgIFVJTlQxNiBvZmZzZXQ7CisgICAg
fSBzb3VyY2UsIGRlc3Q7CisgICAgVUlOVDE2ICAgICAgbGVuOworICAgIFVJTlQxNiAgICAgIGZs
YWdzOyAgICAgICAgICAvKiBHTlRDT1BZXyogKi8KKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8K
KyAgICBJTlQxNiAgICAgICBzdGF0dXM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NvcHkg
IGdudHRhYl9jb3B5X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsK
KworLyoKKyAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhp
bXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKKyAqIGdyYW50IHRhYmxlLgorICogTk9URVM6CisgKiAg
MS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBz
dWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURf
U0VMRi4KKyAqLworc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIHsKKyAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLworICAgIGRvbWlkX3QgIGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAg
ICBVSU5UMzIgbnJfZnJhbWVzOworICAgIFVJTlQzMiBtYXhfbnJfZnJhbWVzOworICAgIElOVDE2
ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworfTsKK3R5
cGVkZWYgc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIGdudHRhYl9xdWVyeV9zaXplX3Q7CitERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfcXVlcnlfc2l6ZV90KTsKKworLyoKKyAqIEdOVFRB
Qk9QX3VubWFwX2FuZF9yZXBsYWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5j
ZSBtYXBwaW5ncworICogdHJhY2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSByZXBsYWNl
IHRoZSBwYWdlIHRhYmxlIGVudHJ5IHdpdGggb25lCisgKiBwb2ludGluZyB0byB0aGUgbWFjaGlu
ZSBhZGRyZXNzIHVuZGVyIDxuZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKKyAqIHJlZGly
ZWN0ZWQgdG8gdGhlIG51bGwgZW50cnkuCisgKiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkg
ZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICog
ICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCisgKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2gg
b2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5n
cyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdu
dHRhYl91bm1hcF9hbmRfcmVwbGFjZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBV
SU5UNjQgaG9zdF9hZGRyOworICAgIFVJTlQ2NCBuZXdfYWRkcjsKKyAgICBncmFudF9oYW5kbGVf
dCBoYW5kbGU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgSU5UMTYgIHN0YXR1czsg
ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1
Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZV90Owor
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlX3QpOworCisj
aWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisvKgorICogR05UVEFC
T1Bfc2V0X3ZlcnNpb246IFJlcXVlc3QgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdyYW50
CisgKiB0YWJsZSBzaGFyZWQgdGFibGUgc3RydWN0dXJlLiAgVGhpcyBvcGVyYXRpb24gY2FuIG9u
bHkgYmUgcGVyZm9ybWVkCisgKiBvbmNlIGluIGFueSBnaXZlbiBkb21haW4uICBJdCBtdXN0IGJl
IHBlcmZvcm1lZCBiZWZvcmUgYW55IGdyYW50cworICogYXJlIGFjdGl2YXRlZDsgb3RoZXJ3aXNl
LCB0aGUgZG9tYWluIHdpbGwgYmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDEuCisgKiBUaGUgb25seSBk
ZWZpbmVkIHZlcnNpb25zIGFyZSAxIGFuZCAyLgorICovCitzdHJ1Y3QgZ250dGFiX3NldF92ZXJz
aW9uIHsKKyAgICAvKiBJTi9PVVQgcGFyYW1ldGVycyAqLworICAgIFVJTlQzMiB2ZXJzaW9uOwor
fTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiBnbnR0YWJfc2V0X3ZlcnNpb25f
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zZXRfdmVyc2lvbl90KTsKKworCisv
KgorICogR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXM6IEdldCB0aGUgbGlzdCBvZiBmcmFtZXMg
dXNlZCB0byBzdG9yZSBncmFudAorICogc3RhdHVzIGZvciA8ZG9tPi4gSW4gZ3JhbnQgZm9ybWF0
IHZlcnNpb24gMiwgdGhlIHN0YXR1cyBpcyBzZXBhcmF0ZWQKKyAqIGZyb20gdGhlIG90aGVyIHNo
YXJlZCBncmFudCBmaWVsZHMgdG8gYWxsb3cgbW9yZSBlZmZpY2llbnQgc3luY2hyb25pemF0aW9u
CisgKiB1c2luZyBiYXJyaWVycyBpbnN0ZWFkIG9mIGF0b21pYyBjbXBleGNoIG9wZXJhdGlvbnMu
CisgKiA8bnJfZnJhbWVzPiBzcGVjaWZ5IHRoZSBzaXplIG9mIHZlY3RvciA8ZnJhbWVfbGlzdD4u
CisgKiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSByZXR1cm5lZCBpbiB0aGUgPGZyYW1lX2xpc3Q+
LgorICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHJldHVybmVkLCBldmVuIGlmIHRo
ZSB0YWJsZSBpcyBsYXJnZXIuCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lm
aWVkIGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2Vk
IGRvbWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBET01JRF9TRUxGLgorICovCitzdHJ1Y3QgZ250
dGFiX2dldF9zdGF0dXNfZnJhbWVzIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIFVJ
TlQzMiBucl9mcmFtZXM7CisgICAgZG9taWRfdCAgZG9tOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
LiAqLworICAgIElOVDE2ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0
YXR1cyAqLworICAgIFhFTl9HVUVTVF9IQU5ETEUoVUlOVDY0KSBmcmFtZV9saXN0OworfTsKK3R5
cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyBnbnR0YWJfZ2V0X3N0YXR1c19m
cmFtZXNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1l
c190KTsKKworLyoKKyAqIEdOVFRBQk9QX2dldF92ZXJzaW9uOiBHZXQgdGhlIGdyYW50IHRhYmxl
IHZlcnNpb24gd2hpY2ggaXMgaW4KKyAqIGVmZmVjdCBmb3IgZG9tYWluIDxkb20+LgorICovCitz
dHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovCisgICAg
ZG9taWRfdCBkb207CisgICAgVUlOVDE2IHBhZDsKKyAgICAvKiBPVVQgcGFyYW1ldGVycyAqLwor
ICAgIFVJTlQzMiB2ZXJzaW9uOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfdmVyc2lv
biBnbnR0YWJfZ2V0X3ZlcnNpb25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9n
ZXRfdmVyc2lvbl90KTsKKworLyoKKyAqIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRo
ZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4KKyAqLworc3RydWN0IGdudHRhYl9zd2Fw
X2dyYW50X3JlZiB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLworICAgIGdyYW50X3JlZl90IHJl
Zl9hOworICAgIGdyYW50X3JlZl90IHJlZl9iOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisg
ICAgSU5UMTYgc3RhdHVzOyAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwor
fTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiBnbnR0YWJfc3dhcF9ncmFu
dF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zd2FwX2dyYW50X3JlZl90
KTsKKworI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KKworLyoKKyAqIEJp
dGZpZWxkIHZhbHVlcyBmb3IgZ250dGFiX21hcF9ncmFudF9yZWYuZmxhZ3MuCisgKi8KKyAvKiBN
YXAgdGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgSS9PIGRldmljZXMuICovCisjZGVmaW5l
IF9HTlRNQVBfZGV2aWNlX21hcCAgICAgICgwKQorI2RlZmluZSBHTlRNQVBfZGV2aWNlX21hcCAg
ICAgICAoMTw8X0dOVE1BUF9kZXZpY2VfbWFwKQorIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9y
IGFjY2VzcyBieSBob3N0IENQVXMuICovCisjZGVmaW5lIF9HTlRNQVBfaG9zdF9tYXAgICAgICAg
ICgxKQorI2RlZmluZSBHTlRNQVBfaG9zdF9tYXAgICAgICAgICAoMTw8X0dOVE1BUF9ob3N0X21h
cCkKKyAvKiBBY2Nlc3NlcyB0byB0aGUgZ3JhbnRlZCBmcmFtZSB3aWxsIGJlIHJlc3RyaWN0ZWQg
dG8gcmVhZC1vbmx5IGFjY2Vzcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9yZWFkb25seSAgICAgICAg
KDIpCisjZGVmaW5lIEdOVE1BUF9yZWFkb25seSAgICAgICAgICgxPDxfR05UTUFQX3JlYWRvbmx5
KQorIC8qCisgICogR05UTUFQX2hvc3RfbWFwIHN1YmZsYWc6CisgICogIDAgPT4gVGhlIGhvc3Qg
bWFwcGluZyBpcyB1c2FibGUgb25seSBieSB0aGUgZ3Vlc3QgT1MuCisgICogIDEgPT4gVGhlIGhv
c3QgbWFwcGluZyBpcyB1c2FibGUgYnkgZ3Vlc3QgT1MgKyBjdXJyZW50IGFwcGxpY2F0aW9uLgor
ICAqLworI2RlZmluZSBfR05UTUFQX2FwcGxpY2F0aW9uX21hcCAoMykKKyNkZWZpbmUgR05UTUFQ
X2FwcGxpY2F0aW9uX21hcCAgKDE8PF9HTlRNQVBfYXBwbGljYXRpb25fbWFwKQorCisgLyoKKyAg
KiBHTlRNQVBfY29udGFpbnNfcHRlIHN1YmZsYWc6CisgICogIDAgPT4gVGhpcyBtYXAgcmVxdWVz
dCBjb250YWlucyBhIGhvc3QgdmlydHVhbCBhZGRyZXNzLgorICAqICAxID0+IFRoaXMgbWFwIHJl
cXVlc3QgY29udGFpbnMgdGhlIG1hY2hpbmUgYWRkZXNzIG9mIHRoZSBQVEUgdG8gdXBkYXRlLgor
ICAqLworI2RlZmluZSBfR05UTUFQX2NvbnRhaW5zX3B0ZSAgICAoNCkKKyNkZWZpbmUgR05UTUFQ
X2NvbnRhaW5zX3B0ZSAgICAgKDE8PF9HTlRNQVBfY29udGFpbnNfcHRlKQorCisjZGVmaW5lIF9H
TlRNQVBfY2FuX2ZhaWwgICAgICAgICg1KQorI2RlZmluZSBHTlRNQVBfY2FuX2ZhaWwgICAgICAg
ICAoMTw8X0dOVE1BUF9jYW5fZmFpbCkKKworLyoKKyAqIEJpdHMgdG8gYmUgcGxhY2VkIGluIGd1
ZXN0IGtlcm5lbCBhdmFpbGFibGUgUFRFIGJpdHMgKGFyY2hpdGVjdHVyZQorICogZGVwZW5kZW50
OyBvbmx5IHN1cHBvcnRlZCB3aGVuIFhFTkZFQVRfZ250dGFiX21hcF9hdmFpbF9iaXRzIGlzIHNl
dCkuCisgKi8KKyNkZWZpbmUgX0dOVE1BUF9ndWVzdF9hdmFpbDAgICAgKDE2KQorI2RlZmluZSBH
TlRNQVBfZ3Vlc3RfYXZhaWxfbWFzayAoKFVJTlQzMil+MCA8PCBfR05UTUFQX2d1ZXN0X2F2YWls
MCkKKworLyoKKyAqIFZhbHVlcyBmb3IgZXJyb3Igc3RhdHVzIHJldHVybnMuIEFsbCBlcnJvcnMg
YXJlIC12ZS4KKyAqLworLyogYCBlbnVtIGdyYW50X3N0YXR1cyB7ICovCisjZGVmaW5lIEdOVFNU
X29rYXkgICAgICAgICAgICAgKDApICAvKiBOb3JtYWwgcmV0dXJuLiAgICAgICAgICAgICAgICAg
ICAgICAgICovCisjZGVmaW5lIEdOVFNUX2dlbmVyYWxfZXJyb3IgICAgKC0xKSAvKiBHZW5lcmFs
IHVuZGVmaW5lZCBlcnJvci4gICAgICAgICAgICAgICovCisjZGVmaW5lIEdOVFNUX2JhZF9kb21h
aW4gICAgICAgKC0yKSAvKiBVbnJlY29nbnNlZCBkb21haW4gaWQuICAgICAgICAgICAgICAgICov
CisjZGVmaW5lIEdOVFNUX2JhZF9nbnRyZWYgICAgICAgKC0zKSAvKiBVbnJlY29nbmlzZWQgb3Ig
aW5hcHByb3ByaWF0ZSBnbnRyZWYuICovCisjZGVmaW5lIEdOVFNUX2JhZF9oYW5kbGUgICAgICAg
KC00KSAvKiBVbnJlY29nbmlzZWQgb3IgaW5hcHByb3ByaWF0ZSBoYW5kbGUuICovCisjZGVmaW5l
IEdOVFNUX2JhZF92aXJ0X2FkZHIgICAgKC01KSAvKiBJbmFwcHJvcHJpYXRlIHZpcnR1YWwgYWRk
cmVzcyB0byBtYXAuICovCisjZGVmaW5lIEdOVFNUX2JhZF9kZXZfYWRkciAgICAgKC02KSAvKiBJ
bmFwcHJvcHJpYXRlIGRldmljZSBhZGRyZXNzIHRvIHVubWFwLiovCisjZGVmaW5lIEdOVFNUX25v
X2RldmljZV9zcGFjZSAgKC03KSAvKiBPdXQgb2Ygc3BhY2UgaW4gSS9PIE1NVS4gICAgICAgICAg
ICAgICovCisjZGVmaW5lIEdOVFNUX3Blcm1pc3Npb25fZGVuaWVkICgtOCkgLyogTm90IGVub3Vn
aCBwcml2aWxlZ2UgZm9yIG9wZXJhdGlvbi4gICovCisjZGVmaW5lIEdOVFNUX2JhZF9wYWdlICAg
ICAgICAgKC05KSAvKiBTcGVjaWZpZWQgcGFnZSB3YXMgaW52YWxpZCBmb3Igb3AuICAgICovCisj
ZGVmaW5lIEdOVFNUX2JhZF9jb3B5X2FyZyAgICAoLTEwKSAvKiBjb3B5IGFyZ3VtZW50cyBjcm9z
cyBwYWdlIGJvdW5kYXJ5LiAgICovCisjZGVmaW5lIEdOVFNUX2FkZHJlc3NfdG9vX2JpZyAoLTEx
KSAvKiB0cmFuc2ZlciBwYWdlIGFkZHJlc3MgdG9vIGxhcmdlLiAgICAgICovCisjZGVmaW5lIEdO
VFNUX2VhZ2FpbiAgICAgICAgICAoLTEyKSAvKiBPcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2Fp
bi4gICAgICAgICovCisvKiBgIH0gKi8KKworI2RlZmluZSBHTlRUQUJPUF9lcnJvcl9tc2dzIHsg
ICAgICAgICAgICAgICAgICAgXAorICAgICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICJ1bmRlZmluZWQgZXJyb3IiLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICJ1bnJlY29nbmlzZWQgZG9tYWluIGlkIiwgICAgICAgICAgICAgICAgICAg
XAorICAgICJpbnZhbGlkIGdyYW50IHJlZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXAorICAg
ICJpbnZhbGlkIG1hcHBpbmcgaGFuZGxlIiwgICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZh
bGlkIHZpcnR1YWwgYWRkcmVzcyIsICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZhbGlkIGRl
dmljZSBhZGRyZXNzIiwgICAgICAgICAgICAgICAgICAgXAorICAgICJubyBzcGFyZSB0cmFuc2xh
dGlvbiBzbG90IGluIHRoZSBJL08gTU1VIiwgXAorICAgICJwZXJtaXNzaW9uIGRlbmllZCIsICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICJiYWQgcGFnZSIsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICJjb3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5
IiwgICAgICAgXAorICAgICJwYWdlIGFkZHJlc3Mgc2l6ZSB0b28gbGFyZ2UiLCAgICAgICAgICAg
ICAgXAorICAgICJvcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2FpbiIgICAgICAgICAgICAgXAor
fQorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXyAqLworCisvKgorICog
TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog
Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog
bmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0
YW5kYXJkL1hlbi9odm0vaHZtX29wLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy
ZC9YZW4vaHZtL2h2bV9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZi
ZmUxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy
ZC9YZW4vaHZtL2h2bV9vcC5oCkBAIC0wLDAgKzEsMjc1IEBACisvKgorICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNp
Zm5kZWYgX19YRU5fUFVCTElDX0hWTV9IVk1fT1BfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19I
Vk1fSFZNX09QX0hfXworCisjaW5jbHVkZSAiLi4veGVuLmgiCisjaW5jbHVkZSAiLi4vdHJhY2Uu
aCIKKworLyogR2V0L3NldCBzdWJjb21tYW5kczogZXh0cmEgYXJndW1lbnQgPT0gcG9pbnRlciB0
byB4ZW5faHZtX3BhcmFtIHN0cnVjdC4gKi8KKyNkZWZpbmUgSFZNT1Bfc2V0X3BhcmFtICAgICAg
ICAgICAwCisjZGVmaW5lIEhWTU9QX2dldF9wYXJhbSAgICAgICAgICAgMQorc3RydWN0IHhlbl9o
dm1fcGFyYW0geworICAgIGRvbWlkX3QgIGRvbWlkOyAgICAvKiBJTiAqLworICAgIFVJTlQzMiBp
bmRleDsgICAgLyogSU4gKi8KKyAgICBVSU5UNjQgdmFsdWU7ICAgIC8qIElOL09VVCAqLworfTsK
K3R5cGVkZWYgc3RydWN0IHhlbl9odm1fcGFyYW0geGVuX2h2bV9wYXJhbV90OworREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9wYXJhbV90KTsKKworLyogU2V0IHRoZSBsb2dpY2FsIGxl
dmVsIG9mIG9uZSBvZiBhIGRvbWFpbidzIFBDSSBJTlR4IHdpcmVzLiAqLworI2RlZmluZSBIVk1P
UF9zZXRfcGNpX2ludHhfbGV2ZWwgIDIKK3N0cnVjdCB4ZW5faHZtX3NldF9wY2lfaW50eF9sZXZl
bCB7CisgICAgLyogRG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCisgICAgZG9taWRfdCAgZG9taWQ7
CisgICAgLyogUENJIElOVHggaWRlbnRpZmljYXRpb24gaW4gUENJIHRvcG9sb2d5IChkb21haW46
YnVzOmRldmljZTppbnR4KS4gKi8KKyAgICBVSU5UOCAgZG9tYWluLCBidXMsIGRldmljZSwgaW50
eDsKKyAgICAvKiBBc3NlcnRpb24gbGV2ZWwgKDAgPSB1bmFzc2VydGVkLCAxID0gYXNzZXJ0ZWQp
LiAqLworICAgIFVJTlQ4ICBsZXZlbDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9w
Y2lfaW50eF9sZXZlbCB4ZW5faHZtX3NldF9wY2lfaW50eF9sZXZlbF90OworREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfcGNpX2ludHhfbGV2ZWxfdCk7CisKKy8qIFNldCB0aGUg
bG9naWNhbCBsZXZlbCBvZiBvbmUgb2YgYSBkb21haW4ncyBJU0EgSVJRIHdpcmVzLiAqLworI2Rl
ZmluZSBIVk1PUF9zZXRfaXNhX2lycV9sZXZlbCAgIDMKK3N0cnVjdCB4ZW5faHZtX3NldF9pc2Ff
aXJxX2xldmVsIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8KKyAgICBkb21pZF90
ICBkb21pZDsKKyAgICAvKiBJU0EgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBieSBJU0EgSVJRICgw
LTE1KS4gKi8KKyAgICBVSU5UOCAgaXNhX2lycTsKKyAgICAvKiBBc3NlcnRpb24gbGV2ZWwgKDAg
PSB1bmFzc2VydGVkLCAxID0gYXNzZXJ0ZWQpLiAqLworICAgIFVJTlQ4ICBsZXZlbDsKK307Cit0
eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsIHhlbl9odm1fc2V0X2lzYV9p
cnFfbGV2ZWxfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X2lzYV9pcnFf
bGV2ZWxfdCk7CisKKyNkZWZpbmUgSFZNT1Bfc2V0X3BjaV9saW5rX3JvdXRlICA0CitzdHJ1Y3Qg
eGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGUgeworICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVk
LiAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAgIC8qIFBDSSBsaW5rIGlkZW50aWZpZXIgKDAt
MykuICovCisgICAgVUlOVDggIGxpbms7CisgICAgLyogSVNBIElSUSAoMS0xNSksIG9yIDAgKGRp
c2FibGUgbGluaykuICovCisgICAgVUlOVDggIGlzYV9pcnE7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
eGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGUgeGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGVfdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlX3QpOwor
CisvKiBGbHVzaGVzIGFsbCBWQ1BVIFRMQnM6IEBhcmcgbXVzdCBiZSBOVUxMLiAqLworI2RlZmlu
ZSBIVk1PUF9mbHVzaF90bGJzICAgICAgICAgIDUKKwordHlwZWRlZiBlbnVtIHsKKyAgICBIVk1N
RU1fcmFtX3J3LCAgICAgICAgICAgICAvKiBOb3JtYWwgcmVhZC93cml0ZSBndWVzdCBSQU0gKi8K
KyAgICBIVk1NRU1fcmFtX3JvLCAgICAgICAgICAgICAvKiBSZWFkLW9ubHk7IHdyaXRlcyBhcmUg
ZGlzY2FyZGVkICovCisgICAgSFZNTUVNX21taW9fZG0sICAgICAgICAgICAgLyogUmVhZHMgYW5k
IHdyaXRlIGdvIHRvIHRoZSBkZXZpY2UgbW9kZWwgKi8KK30gaHZtbWVtX3R5cGVfdDsKKworLyog
Rm9sbG93aW5nIHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8K
KyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworLyogVHJh
Y2sgZGlydHkgVlJBTS4gKi8KKyNkZWZpbmUgSFZNT1BfdHJhY2tfZGlydHlfdnJhbSAgICA2Citz
dHJ1Y3QgeGVuX2h2bV90cmFja19kaXJ0eV92cmFtIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdHJh
Y2tlZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBGaXJzdCBwZm4gdG8gdHJhY2su
ICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47CisgICAgLyogTnVtYmVyIG9mIHBh
Z2VzIHRvIHRyYWNrLiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3QgbnI7CisgICAgLyogT1VUIHZh
cmlhYmxlLiAqLworICAgIC8qIERpcnR5IGJpdG1hcCBidWZmZXIuICovCisgICAgWEVOX0dVRVNU
X0hBTkRMRV82NCh1aW50OCkgZGlydHlfYml0bWFwOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9o
dm1fdHJhY2tfZGlydHlfdnJhbSB4ZW5faHZtX3RyYWNrX2RpcnR5X3ZyYW1fdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9odm1fdHJhY2tfZGlydHlfdnJhbV90KTsKKworLyogTm90aWZ5
IHRoYXQgc29tZSBwYWdlcyBnb3QgbW9kaWZpZWQgYnkgdGhlIERldmljZSBNb2RlbC4gKi8KKyNk
ZWZpbmUgSFZNT1BfbW9kaWZpZWRfbWVtb3J5ICAgIDcKK3N0cnVjdCB4ZW5faHZtX21vZGlmaWVk
X21lbW9yeSB7CisgICAgLyogRG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCisgICAgZG9taWRfdCAg
ZG9taWQ7CisgICAgLyogRmlyc3QgcGZuLiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3Rf
cGZuOworICAgIC8qIE51bWJlciBvZiBwYWdlcy4gKi8KKyAgICB1aW50NjRfYWxpZ25lZF90IG5y
OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5IHhlbl9odm1fbW9k
aWZpZWRfbWVtb3J5X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX21vZGlmaWVk
X21lbW9yeV90KTsKKworI2RlZmluZSBIVk1PUF9zZXRfbWVtX3R5cGUgICAgOAorLyogTm90aWZ5
IHRoYXQgYSByZWdpb24gb2YgbWVtb3J5IGlzIHRvIGJlIHRyZWF0ZWQgaW4gYSBzcGVjaWZpYyB3
YXkuICovCitzdHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX3R5cGUgeworICAgIC8qIERvbWFpbiB0byBi
ZSB1cGRhdGVkLiAqLworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgLyogTWVtb3J5IHR5cGUgKi8K
KyAgICBVSU5UMTYgaHZtbWVtX3R5cGU7CisgICAgLyogTnVtYmVyIG9mIHBhZ2VzLiAqLworICAg
IFVJTlQzMiBucjsKKyAgICAvKiBGaXJzdCBwZm4uICovCisgICAgdWludDY0X2FsaWduZWRfdCBm
aXJzdF9wZm47Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX3R5cGUgeGVuX2h2
bV9zZXRfbWVtX3R5cGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X21l
bV90eXBlX3QpOworCisjZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVO
X1RPT0xTX18pICovCisKKy8qIEhpbnQgZnJvbSBQViBkcml2ZXJzIGZvciBwYWdldGFibGUgZGVz
dHJ1Y3Rpb24uICovCisjZGVmaW5lIEhWTU9QX3BhZ2V0YWJsZV9keWluZyAgICAgICAgOQorc3Ry
dWN0IHhlbl9odm1fcGFnZXRhYmxlX2R5aW5nIHsKKyAgICAvKiBEb21haW4gd2l0aCBhIHBhZ2V0
YWJsZSBhYm91dCB0byBiZSBkZXN0cm95ZWQuICovCisgICAgZG9taWRfdCAgZG9taWQ7CisgICAg
VUlOVDE2IHBhZFszXTsgLyogYWxpZ24gbmV4dCBmaWVsZCBvbiA4LWJ5dGUgYm91bmRhcnkgKi8K
KyAgICAvKiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSB0b3BsZXZlbCBwYWdldGFibGUg
ZHlpbmcgKi8KKyAgICBVSU5UNjQgZ3BhOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fcGFn
ZXRhYmxlX2R5aW5nIHhlbl9odm1fcGFnZXRhYmxlX2R5aW5nX3Q7CitERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRSh4ZW5faHZtX3BhZ2V0YWJsZV9keWluZ190KTsKKworLyogR2V0IHRoZSBjdXJyZW50
IFhlbiB0aW1lLCBpbiBuYW5vc2Vjb25kcyBzaW5jZSBzeXN0ZW0gYm9vdC4gKi8KKyNkZWZpbmUg
SFZNT1BfZ2V0X3RpbWUgICAgICAgICAgICAgIDEwCitzdHJ1Y3QgeGVuX2h2bV9nZXRfdGltZSB7
CisgICAgVUlOVDY0IG5vdzsgICAgICAvKiBPVVQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5f
aHZtX2dldF90aW1lIHhlbl9odm1fZ2V0X3RpbWVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9odm1fZ2V0X3RpbWVfdCk7CisKKyNkZWZpbmUgSFZNT1BfeGVudHJhY2UgICAgICAgICAg
ICAgIDExCitzdHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB7CisgICAgVUlOVDE2IGV2ZW50LCBleHRy
YV9ieXRlczsKKyAgICBVSU5UOCBleHRyYVtUUkFDRV9FWFRSQV9NQVggKiBzaXplb2YoVUlOVDMy
KV07Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB4ZW5faHZtX3hlbnRyYWNl
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3hlbnRyYWNlX3QpOworCisvKiBG
b2xsb3dpbmcgdG9vbHMtb25seSBpbnRlcmZhY2VzIG1heSBjaGFuZ2UgaW4gZnV0dXJlLiAqLwor
I2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisjZGVmaW5l
IEhWTU9QX3NldF9tZW1fYWNjZXNzICAgICAgICAxMgordHlwZWRlZiBlbnVtIHsKKyAgICBIVk1N
RU1fYWNjZXNzX24sCisgICAgSFZNTUVNX2FjY2Vzc19yLAorICAgIEhWTU1FTV9hY2Nlc3NfdywK
KyAgICBIVk1NRU1fYWNjZXNzX3J3LAorICAgIEhWTU1FTV9hY2Nlc3NfeCwKKyAgICBIVk1NRU1f
YWNjZXNzX3J4LAorICAgIEhWTU1FTV9hY2Nlc3Nfd3gsCisgICAgSFZNTUVNX2FjY2Vzc19yd3gs
CisgICAgSFZNTUVNX2FjY2Vzc19yeDJydywgICAgICAgLyogUGFnZSBzdGFydHMgb2ZmIGFzIHIt
eCwgYnV0IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBj
aGFuZ2UgdG8gci13IG9uIGEgd3JpdGUgKi8KKyAgICBIVk1NRU1fYWNjZXNzX24ycnd4LCAgICAg
ICAvKiBMb2cgYWNjZXNzOiBzdGFydHMgb2ZmIGFzIG4sIGF1dG9tYXRpY2FsbHkgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogZ29lcyB0byByd3gsIGdlbmVyYXRpbmcgYW4gZXZl
bnQgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBhdXNpbmcgdGhl
IHZjcHUgKi8KKyAgICBIVk1NRU1fYWNjZXNzX2RlZmF1bHQgICAgICAvKiBUYWtlIHRoZSBkb21h
aW4gZGVmYXVsdCAqLworfSBodm1tZW1fYWNjZXNzX3Q7CisvKiBOb3RpZnkgdGhhdCBhIHJlZ2lv
biBvZiBtZW1vcnkgaXMgdG8gaGF2ZSBzcGVjaWZpYyBhY2Nlc3MgdHlwZXMgKi8KK3N0cnVjdCB4
ZW5faHZtX3NldF9tZW1fYWNjZXNzIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8K
KyAgICBkb21pZF90IGRvbWlkOworICAgIC8qIE1lbW9yeSB0eXBlICovCisgICAgVUlOVDE2IGh2
bW1lbV9hY2Nlc3M7IC8qIGh2bV9hY2Nlc3NfdCAqLworICAgIC8qIE51bWJlciBvZiBwYWdlcywg
aWdub3JlZCBvbiBzZXR0aW5nIGRlZmF1bHQgYWNjZXNzICovCisgICAgVUlOVDMyIG5yOworICAg
IC8qIEZpcnN0IHBmbiwgb3IgfjB1bGwgdG8gc2V0IHRoZSBkZWZhdWx0IGFjY2VzcyBmb3IgbmV3
IHBhZ2VzICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cit9OwordHlwZWRlZiBz
dHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX2FjY2VzcyB4ZW5faHZtX3NldF9tZW1fYWNjZXNzX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9tZW1fYWNjZXNzX3QpOworCisjZGVm
aW5lIEhWTU9QX2dldF9tZW1fYWNjZXNzICAgICAgICAxMworLyogR2V0IHRoZSBzcGVjaWZpYyBh
Y2Nlc3MgdHlwZSBmb3IgdGhhdCByZWdpb24gb2YgbWVtb3J5ICovCitzdHJ1Y3QgeGVuX2h2bV9n
ZXRfbWVtX2FjY2VzcyB7CisgICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICovCisgICAgZG9t
aWRfdCBkb21pZDsKKyAgICAvKiBNZW1vcnkgdHlwZTogT1VUICovCisgICAgVUlOVDE2IGh2bW1l
bV9hY2Nlc3M7IC8qIGh2bV9hY2Nlc3NfdCAqLworICAgIC8qIHBmbiwgb3IgfjB1bGwgZm9yIGRl
ZmF1bHQgYWNjZXNzIGZvciBuZXcgcGFnZXMuICBJTiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3Qg
cGZuOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fZ2V0X21lbV9hY2Nlc3MgeGVuX2h2bV9n
ZXRfbWVtX2FjY2Vzc190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9nZXRfbWVt
X2FjY2Vzc190KTsKKworI2RlZmluZSBIVk1PUF9pbmplY3RfdHJhcCAgICAgICAgICAgIDE0Cisv
KiBJbmplY3QgYSB0cmFwIGludG8gYSBWQ1BVLCB3aGljaCB3aWxsIGdldCB0YWtlbiB1cCBvbiB0
aGUgbmV4dAorICogc2NoZWR1bGluZyBvZiBpdC4gTm90ZSB0aGF0IHRoZSBjYWxsZXIgc2hvdWxk
IGtub3cgZW5vdWdoIG9mIHRoZQorICogc3RhdGUgb2YgdGhlIENQVSBiZWZvcmUgaW5qZWN0aW5n
LCB0byBrbm93IHdoYXQgdGhlIGVmZmVjdCBvZgorICogaW5qZWN0aW5nIHRoZSB0cmFwIHdpbGwg
YmUuCisgKi8KK3N0cnVjdCB4ZW5faHZtX2luamVjdF90cmFwIHsKKyAgICAvKiBEb21haW4gdG8g
YmUgcXVlcmllZC4gKi8KKyAgICBkb21pZF90IGRvbWlkOworICAgIC8qIFZDUFUgKi8KKyAgICBV
SU5UMzIgdmNwdWlkOworICAgIC8qIFZlY3RvciBudW1iZXIgKi8KKyAgICBVSU5UMzIgdmVjdG9y
OworICAgIC8qIFRyYXAgdHlwZSAoSFZNT1BfVFJBUF8qKSAqLworICAgIFVJTlQzMiB0eXBlOwor
LyogTkIuIFRoaXMgZW51bWVyYXRpb24gcHJlY2lzZWx5IG1hdGNoZXMgaHZtLmg6WDg2X0VWRU5U
VFlQRV8qICovCisjIGRlZmluZSBIVk1PUF9UUkFQX2V4dF9pbnQgICAgMCAvKiBleHRlcm5hbCBp
bnRlcnJ1cHQgKi8KKyMgZGVmaW5lIEhWTU9QX1RSQVBfbm1pICAgICAgICAyIC8qIG5taSAqLwor
IyBkZWZpbmUgSFZNT1BfVFJBUF9od19leGMgICAgIDMgLyogaGFyZHdhcmUgZXhjZXB0aW9uICov
CisjIGRlZmluZSBIVk1PUF9UUkFQX3N3X2ludCAgICAgNCAvKiBzb2Z0d2FyZSBpbnRlcnJ1cHQg
KENEIG5uKSAqLworIyBkZWZpbmUgSFZNT1BfVFJBUF9wcmlfc3dfZXhjIDUgLyogSUNFQlAgKEYx
KSAqLworIyBkZWZpbmUgSFZNT1BfVFJBUF9zd19leGMgICAgIDYgLyogSU5UMyAoQ0MpLCBJTlRP
IChDRSkgKi8KKyAgICAvKiBFcnJvciBjb2RlLCBvciB+MHUgdG8gc2tpcCAqLworICAgIFVJTlQz
MiBlcnJvcl9jb2RlOworICAgIC8qIEludHJ1Y3Rpb24gbGVuZ3RoICovCisgICAgVUlOVDMyIGlu
c25fbGVuOworICAgIC8qIENSMiBmb3IgcGFnZSBmYXVsdHMgKi8KKyAgICB1aW50NjRfYWxpZ25l
ZF90IGNyMjsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2luamVjdF90cmFwIHhlbl9odm1f
aW5qZWN0X3RyYXBfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1faW5qZWN0X3Ry
YXBfdCk7CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9P
TFNfXykgKi8KKworI2RlZmluZSBIVk1PUF9nZXRfbWVtX3R5cGUgICAgMTUKKy8qIFJldHVybiBo
dm1tZW1fdHlwZV90IGZvciB0aGUgc3BlY2lmaWVkIHBmbi4gKi8KK3N0cnVjdCB4ZW5faHZtX2dl
dF9tZW1fdHlwZSB7CisgICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICovCisgICAgZG9taWRf
dCBkb21pZDsKKyAgICAvKiBPVVQgdmFyaWFibGUuICovCisgICAgVUlOVDE2IG1lbV90eXBlOwor
ICAgIFVJTlQxNiBwYWRbMl07IC8qIGFsaWduIG5leHQgZmllbGQgb24gOC1ieXRlIGJvdW5kYXJ5
ICovCisgICAgLyogSU4gdmFyaWFibGUuICovCisgICAgVUlOVDY0IHBmbjsKK307Cit0eXBlZGVm
IHN0cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlwZSB4ZW5faHZtX2dldF9tZW1fdHlwZV90OworREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9nZXRfbWVtX3R5cGVfdCk7CisKKy8qIEZvbGxv
d2luZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCisjaWYg
ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKy8qIE1TSSBpbmpl
Y3Rpb24gZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KKyNkZWZpbmUgSFZNT1BfaW5qZWN0X21zaSAg
ICAgICAgIDE2CitzdHJ1Y3QgeGVuX2h2bV9pbmplY3RfbXNpIHsKKyAgICAvKiBEb21haW4gdG8g
YmUgaW5qZWN0ZWQgKi8KKyAgICBkb21pZF90ICAgZG9taWQ7CisgICAgLyogRGF0YSAtLSBsb3dl
ciAzMiBiaXRzICovCisgICAgVUlOVDMyICBkYXRhOworICAgIC8qIEFkZHJlc3MgKDB4ZmVleHh4
eHgpICovCisgICAgVUlOVDY0ICBhZGRyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1faW5q
ZWN0X21zaSB4ZW5faHZtX2luamVjdF9tc2lfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhl
bl9odm1faW5qZWN0X21zaV90KTsKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVm
aW5lZChfX1hFTl9UT09MU19fKSAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9IVk1f
T1BfSF9fICovCmRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Y
ZW4vaHZtL3BhcmFtcy5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2h2
bS9wYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTdhMTg0Ci0t
LSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2h2
bS9wYXJhbXMuaApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
KyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9f
WEVOX1BVQkxJQ19IVk1fUEFSQU1TX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX1BBUkFN
U19IX18KKworI2luY2x1ZGUgImh2bV9vcC5oIgorCisvKgorICogUGFyYW1ldGVyIHNwYWNlIGZv
ciBIVk1PUF97c2V0LGdldH1fcGFyYW0uCisgKi8KKworLyoKKyAqIEhvdyBzaG91bGQgQ1BVMCBl
dmVudC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYmUgZGVsaXZlcmVkPworICogdmFsWzYzOjU2XSA9
PSAwOiB2YWxbNTU6MF0gaXMgYSBkZWxpdmVyeSBHU0kgKEdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0
KS4KKyAqIHZhbFs2Mzo1Nl0gPT0gMTogdmFsWzU1OjBdIGlzIGEgZGVsaXZlcnkgUENJIElOVHgg
bGluZSwgYXMgZm9sbG93czoKKyAqICAgICAgICAgICAgICAgICAgRG9tYWluID0gdmFsWzQ3OjMy
XSwgQnVzICA9IHZhbFszMToxNl0sCisgKiAgICAgICAgICAgICAgICAgIERldkZuICA9IHZhbFsx
NTogOF0sIEludFggPSB2YWxbIDE6IDBdCisgKiB2YWxbNjM6NTZdID09IDI6IHZhbFs3OjBdIGlz
IGEgdmVjdG9yIG51bWJlciwgY2hlY2sgZm9yCisgKiAgICAgICAgICAgICAgICAgIFhFTkZFQVRf
aHZtX2NhbGxiYWNrX3ZlY3RvciB0byBrbm93IGlmIHRoaXMgZGVsaXZlcnkKKyAqICAgICAgICAg
ICAgICAgICAgbWV0aG9kIGlzIGF2YWlsYWJsZS4KKyAqIElmIHZhbCA9PSAwIHRoZW4gQ1BVMCBl
dmVudC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBkZWxpdmVyZWQuCisgKi8KKyNkZWZp
bmUgSFZNX1BBUkFNX0NBTExCQUNLX0lSUSAwCisKKy8qCisgKiBUaGVzZSBhcmUgbm90IHVzZWQg
YnkgWGVuLiBUaGV5IGFyZSBoZXJlIGZvciBjb252ZW5pZW5jZSBvZiBIVk0tZ3Vlc3QKKyAqIHhl
bmJ1cyBpbXBsZW1lbnRhdGlvbnMuCisgKi8KKyNkZWZpbmUgSFZNX1BBUkFNX1NUT1JFX1BGTiAg
ICAxCisjZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9FVlRDSE4gMgorCisjZGVmaW5lIEhWTV9QQVJB
TV9QQUVfRU5BQkxFRCAgNAorCisjZGVmaW5lIEhWTV9QQVJBTV9JT1JFUV9QRk4gICAgNQorCisj
ZGVmaW5lIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gNgorI2RlZmluZSBIVk1fUEFSQU1fQlVGSU9S
RVFfRVZUQ0hOIDI2CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0
X18pCisKKy8qIEV4cG9zZSBWaXJpZGlhbiBpbnRlcmZhY2VzIHRvIHRoaXMgSFZNIGd1ZXN0PyAq
LworI2RlZmluZSBIVk1fUEFSQU1fVklSSURJQU4gICAgIDkKKworI2VuZGlmCisKKy8qCisgKiBT
ZXQgbW9kZSBmb3IgdmlydHVhbCB0aW1lcnMgKGN1cnJlbnRseSB4ODYgb25seSk6CisgKiAgZGVs
YXlfZm9yX21pc3NlZF90aWNrcyAoZGVmYXVsdCk6CisgKiAgIERvIG5vdCBhZHZhbmNlIGEgdmNw
dSdzIHRpbWUgYmV5b25kIHRoZSBjb3JyZWN0IGRlbGl2ZXJ5IHRpbWUgZm9yCisgKiAgIGludGVy
cnVwdHMgdGhhdCBoYXZlIGJlZW4gbWlzc2VkIGR1ZSB0byBwcmVlbXB0aW9uLiBEZWxpdmVyIG1p
c3NlZAorICogICBpbnRlcnJ1cHRzIHdoZW4gdGhlIHZjcHUgaXMgcmVzY2hlZHVsZWQgYW5kIGFk
dmFuY2UgdGhlIHZjcHUncyB2aXJ0dWFsCisgKiAgIHRpbWUgc3RlcHdpc2UgZm9yIGVhY2ggb25l
LgorICogIG5vX2RlbGF5X2Zvcl9taXNzZWRfdGlja3M6CisgKiAgIEFzIGFib3ZlLCBtaXNzZWQg
aW50ZXJydXB0cyBhcmUgZGVsaXZlcmVkLCBidXQgZ3Vlc3QgdGltZSBhbHdheXMgdHJhY2tzCisg
KiAgIHdhbGxjbG9jayAoaS5lLiwgcmVhbCkgdGltZSB3aGlsZSBkb2luZyBzby4KKyAqICBub19t
aXNzZWRfdGlja3NfcGVuZGluZzoKKyAqICAgTm8gbWlzc2VkIGludGVycnVwdHMgYXJlIGhlbGQg
cGVuZGluZy4gSW5zdGVhZCwgdG8gZW5zdXJlIHRpY2tzIGFyZQorICogICBkZWxpdmVyZWQgYXQg
c29tZSBub24temVybyByYXRlLCBpZiB3ZSBkZXRlY3QgbWlzc2VkIHRpY2tzIHRoZW4gdGhlCisg
KiAgIGludGVybmFsIHRpY2sgYWxhcm0gaXMgbm90IGRpc2FibGVkIGlmIHRoZSBWQ1BVIGlzIHBy
ZWVtcHRlZCBkdXJpbmcgdGhlCisgKiAgIG5leHQgdGljayBwZXJpb2QuCisgKiAgb25lX21pc3Nl
ZF90aWNrX3BlbmRpbmc6CisgKiAgIE1pc3NlZCBpbnRlcnJ1cHRzIGFyZSBjb2xsYXBzZWQgdG9n
ZXRoZXIgYW5kIGRlbGl2ZXJlZCBhcyBvbmUgJ2xhdGUgdGljaycuCisgKiAgIEd1ZXN0IHRpbWUg
YWx3YXlzIHRyYWNrcyB3YWxsY2xvY2sgKGkuZS4sIHJlYWwpIHRpbWUuCisgKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX1RJTUVSX01PREUgICAxMAorI2RlZmluZSBIVk1QVE1fZGVsYXlfZm9yX21pc3Nl
ZF90aWNrcyAgICAwCisjZGVmaW5lIEhWTVBUTV9ub19kZWxheV9mb3JfbWlzc2VkX3RpY2tzIDEK
KyNkZWZpbmUgSFZNUFRNX25vX21pc3NlZF90aWNrc19wZW5kaW5nICAgMgorI2RlZmluZSBIVk1Q
VE1fb25lX21pc3NlZF90aWNrX3BlbmRpbmcgICAzCisKKy8qIEJvb2xlYW46IEVuYWJsZSB2aXJ0
dWFsIEhQRVQgKGhpZ2gtcHJlY2lzaW9uIGV2ZW50IHRpbWVyKT8gKHg4Ni1vbmx5KSAqLworI2Rl
ZmluZSBIVk1fUEFSQU1fSFBFVF9FTkFCTEVEIDExCisKKy8qIElkZW50aXR5LW1hcCBwYWdlIGRp
cmVjdG9yeSB1c2VkIGJ5IEludGVsIEVQVCB3aGVuIENSMC5QRz0wLiAqLworI2RlZmluZSBIVk1f
UEFSQU1fSURFTlRfUFQgICAgIDEyCisKKy8qIERldmljZSBNb2RlbCBkb21haW4sIGRlZmF1bHRz
IHRvIDAuICovCisjZGVmaW5lIEhWTV9QQVJBTV9ETV9ET01BSU4gICAgMTMKKworLyogQUNQSSBT
IHN0YXRlOiBjdXJyZW50bHkgc3VwcG9ydCBTMCBhbmQgUzMgb24geDg2LiAqLworI2RlZmluZSBI
Vk1fUEFSQU1fQUNQSV9TX1NUQVRFIDE0CisKKy8qIFRTUyB1c2VkIG9uIEludGVsIHdoZW4gQ1Iw
LlBFPTAuICovCisjZGVmaW5lIEhWTV9QQVJBTV9WTTg2X1RTUyAgICAgMTUKKworLyogQm9vbGVh
bjogRW5hYmxlIGFsaWduaW5nIGFsbCBwZXJpb2RpYyB2cHRzIHRvIHJlZHVjZSBpbnRlcnJ1cHRz
ICovCisjZGVmaW5lIEhWTV9QQVJBTV9WUFRfQUxJR04gICAgMTYKKworLyogQ29uc29sZSBkZWJ1
ZyBzaGFyZWQgbWVtb3J5IHJpbmcgYW5kIGV2ZW50IGNoYW5uZWwgKi8KKyNkZWZpbmUgSFZNX1BB
UkFNX0NPTlNPTEVfUEZOICAgIDE3CisjZGVmaW5lIEhWTV9QQVJBTV9DT05TT0xFX0VWVENITiAx
OAorCisvKgorICogU2VsZWN0IGxvY2F0aW9uIG9mIEFDUEkgUE0xYSBhbmQgVE1SIGNvbnRyb2wg
YmxvY2tzLiBDdXJyZW50bHkgdHdvIGxvY2F0aW9ucworICogYXJlIHN1cHBvcnRlZCwgc3BlY2lm
aWVkIGJ5IHZlcnNpb24gMCBvciAxIGluIHRoaXMgcGFyYW1ldGVyOgorICogICAtIDA6IGRlZmF1
bHQsIHVzZSB0aGUgb2xkIGFkZHJlc3NlcworICogICAgICAgIFBNMUFfRVZUID09IDB4MWY0MDsg
UE0xQV9DTlQgPT0gMHgxZjQ0OyBQTV9UTVIgPT0gMHgxZjQ4CisgKiAgIC0gMTogdXNlIHRoZSBu
ZXcgZGVmYXVsdCBxZW11IGFkZHJlc3NlcworICogICAgICAgIFBNMUFfRVZUID09IDB4YjAwMDsg
UE0xQV9DTlQgPT0gMHhiMDA0OyBQTV9UTVIgPT0gMHhiMDA4CisgKiBZb3UgY2FuIGZpbmQgdGhl
c2UgYWRkcmVzcyBkZWZpbml0aW9ucyBpbiA8aHZtL2lvcmVxLmg+CisgKi8KKyNkZWZpbmUgSFZN
X1BBUkFNX0FDUElfSU9QT1JUU19MT0NBVElPTiAxOQorCisvKiBFbmFibGUgYmxvY2tpbmcgbWVt
b3J5IGV2ZW50cywgYXN5bmMgb3Igc3luYyAocGF1c2UgdmNwdSB1bnRpbCByZXNwb25zZSkgCisg
KiBvbmNoYW5nZW9ubHkgaW5kaWNhdGVzIG1lc3NhZ2VzIG9ubHkgb24gYSBjaGFuZ2Ugb2YgdmFs
dWUgKi8KKyNkZWZpbmUgSFZNX1BBUkFNX01FTU9SWV9FVkVOVF9DUjAgICAgICAgICAgMjAKKyNk
ZWZpbmUgSFZNX1BBUkFNX01FTU9SWV9FVkVOVF9DUjMgICAgICAgICAgMjEKKyNkZWZpbmUgSFZN
X1BBUkFNX01FTU9SWV9FVkVOVF9DUjQgICAgICAgICAgMjIKKyNkZWZpbmUgSFZNX1BBUkFNX01F
TU9SWV9FVkVOVF9JTlQzICAgICAgICAgMjMKKyNkZWZpbmUgSFZNX1BBUkFNX01FTU9SWV9FVkVO
VF9TSU5HTEVfU1RFUCAgMjUKKyNkZWZpbmUgSFZNX1BBUkFNX01FTU9SWV9FVkVOVF9NU1IgICAg
ICAgICAgMzAKKworI2RlZmluZSBIVk1QTUVfTU9ERV9NQVNLICAgICAgICgzIDw8IDApCisjZGVm
aW5lIEhWTVBNRV9tb2RlX2Rpc2FibGVkICAgMAorI2RlZmluZSBIVk1QTUVfbW9kZV9hc3luYyAg
ICAgIDEKKyNkZWZpbmUgSFZNUE1FX21vZGVfc3luYyAgICAgICAyCisjZGVmaW5lIEhWTVBNRV9v
bmNoYW5nZW9ubHkgICAgKDEgPDwgMikKKworLyogQm9vbGVhbjogRW5hYmxlIG5lc3RlZGh2bSAo
aHZtIG9ubHkpICovCisjZGVmaW5lIEhWTV9QQVJBTV9ORVNURURIVk0gICAgMjQKKworLyogUGFy
YW1zIGZvciB0aGUgbWVtIGV2ZW50IHJpbmdzICovCisjZGVmaW5lIEhWTV9QQVJBTV9QQUdJTkdf
UklOR19QRk4gICAyNworI2RlZmluZSBIVk1fUEFSQU1fQUNDRVNTX1JJTkdfUEZOICAgMjgKKyNk
ZWZpbmUgSFZNX1BBUkFNX1NIQVJJTkdfUklOR19QRk4gIDI5CisKKy8qIFNIVVRET1dOXyogYWN0
aW9uIGluIGNhc2Ugb2YgYSB0cmlwbGUgZmF1bHQgKi8KKyNkZWZpbmUgSFZNX1BBUkFNX1RSSVBM
RV9GQVVMVF9SRUFTT04gMzEKKworI2RlZmluZSBIVk1fTlJfUEFSQU1TICAgICAgICAgIDMyCisK
KyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX1BBUkFNU19IX18gKi8KZGlmZiAtLWdpdCBhL092
bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9ibGtpZi5oIGIvT3ZtZlBrZy9J
bmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL2Jsa2lmLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMmYwYmI4YgotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvSW5j
bHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9ibGtpZi5oCkBAIC0wLDAgKzEsNjA4IEBACisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisgKiBibGtpZi5oCisgKgorICogVW5pZmllZCBibG9jay1k
ZXZpY2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICog
cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ
VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO
VC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg
T1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq
IENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBLZWlyIEZyYXNlcgorICogQ29weXJpZ2h0IChjKSAy
MDEyLCBTcGVjdHJhIExvZ2ljIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSU9fQkxLSUZfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19CTEtJRl9IX18KKworI2lu
Y2x1ZGUgInJpbmcuaCIKKyNpbmNsdWRlICIuLi9ncmFudF90YWJsZS5oIgorCisvKgorICogRnJv
bnQtPmJhY2sgbm90aWZpY2F0aW9uczogV2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVxdWVzdCwgc2Vu
ZGluZyBhCisgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxX2V2
ZW50IChpLmUuLCB0aGUgZ2VuZXJpYworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5
IHRoZSByaW5nIG1hY3JvcykuIEJhY2tlbmRzIG11c3Qgc2V0CisgKiByZXFfZXZlbnQgYXBwcm9w
cmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSkuCisg
KgorICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogV2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVz
cG9uc2UsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFs
IG9uIHJzcF9ldmVudCAoaS5lLiwgdGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBw
cm92aWRlZCBieSB0aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKKyAqIHJzcF9l
dmVudCBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQ
T05TRVMoKSkuCisgKi8KKworI2lmbmRlZiBibGtpZl92ZGV2X3QKKyNkZWZpbmUgYmxraWZfdmRl
dl90ICAgVUlOVDE2CisjZW5kaWYKKyNkZWZpbmUgYmxraWZfc2VjdG9yX3QgVUlOVDY0CisKKy8q
CisgKiBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24KKyAqID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBYZW4gYmxvY2sgZHJp
dmVyIHV0aWxpemUgbm9kZXMgd2l0aGluIHRoZSBYZW5TdG9yZSB0bworICogY29tbXVuaWNhdGUg
Y2FwYWJpbGl0aWVzIGFuZCB0byBuZWdvdGlhdGUgb3BlcmF0aW5nIHBhcmFtZXRlcnMuICBUaGlz
CisgKiBzZWN0aW9uIGVudW1lcmF0ZXMgdGhlc2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSBy
ZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFja2VuZCBwb3J0aW9ucyBvZiB0aGUgWGVuU3RvcmUs
IGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRpb24uCisgKgorICogQWxsIGRhdGEgaW4gdGhl
IFhlblN0b3JlIGlzIHN0b3JlZCBhcyBzdHJpbmdzLiAgTm9kZXMgc3BlY2lmeWluZyBudW1lcmlj
CisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4gIEludGVnZXIgdmFsdWUgcmFuZ2Vz
IGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3NlZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5
cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVyc2lvbgorICogb2YgYSBwcm9wZXJseSBm
b3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgorICoKKyAq
IEFueSBzcGVjaWZpZWQgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgaWYgdGhlIGNvcnJlc3Bv
bmRpbmcgWGVuQnVzIG5vZGUKKyAqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBYZW5TdG9yZS4KKyAq
CisgKiBYZW5TdG9yZSBub2RlcyBpbiBzZWN0aW9ucyBtYXJrZWQgIlBSSVZBVEUiIGFyZSBzb2xl
bHkgZm9yIHVzZSBieSB0aGUKKyAqIGRyaXZlciBzaWRlIHdob3NlIFhlbkJ1cyB0cmVlIGNvbnRh
aW5zIHRoZW0uCisgKgorICogWGVuU3RvcmUgbm9kZXMgbWFya2VkICJERVBSRUNBVEVEIiBpbiB0
aGVpciBub3RlcyBzZWN0aW9uIHNob3VsZCBvbmx5IGJlCisgKiB1c2VkIHRvIHByb3ZpZGUgaW50
ZXJvcGVyYWJpbGl0eSB3aXRoIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbnMuCisgKgorICogU2VlIHRo
ZSBYZW5CdXMgc3RhdGUgdHJhbnNpdGlvbiBkaWFncmFtIGJlbG93IGZvciBkZXRhaWxzIG9uIHdo
ZW4gWGVuQnVzCisgKiBub2RlcyBtdXN0IGJlIHB1Ymxpc2hlZCBhbmQgd2hlbiB0aGV5IGNhbiBi
ZSBxdWVyaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tIEJhY2tlbmQgRGV2aWNlIElkZW50aWZpY2F0aW9uIChQ
UklWQVRFKSAtLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBtb2RlCisgKiAgICAgIFZhbHVlczog
ICAgICAgICAiciIgKHJlYWQgb25seSksICJ3IiAod3JpdGFibGUpCisgKgorICogICAgICBUaGUg
cmVhZCBvciB3cml0ZSBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gdGhlIGJhY2tpbmcgc3RvcmUgdG8g
YmUKKyAqICAgICAgZ3JhbnRlZCB0byB0aGUgZnJvbnRlbmQuCisgKgorICogcGFyYW1zCisgKiAg
ICAgIFZhbHVlczogICAgICAgICBzdHJpbmcKKyAqCisgKiAgICAgIEEgZnJlZSBmb3JtYXR0ZWQg
c3RyaW5nIHByb3ZpZGluZyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIGZvciB0aGUKKyAqICAgICAg
YmFja2VuZCBkcml2ZXIgdG8gb3BlbiB0aGUgYmFja2luZyBkZXZpY2UuICAoZS5nLiB0aGUgcGF0
aCB0byB0aGUKKyAqICAgICAgZmlsZSBvciBibG9jayBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBi
YWNraW5nIHN0b3JlLikKKyAqCisgKiB0eXBlCisgKiAgICAgIFZhbHVlczogICAgICAgICAiZmls
ZSIsICJwaHkiLCAidGFwIgorICoKKyAqICAgICAgVGhlIHR5cGUgb2YgdGhlIGJhY2tpbmcgZGV2
aWNlL29iamVjdC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGZWF0
dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBmZWF0dXJlLWJh
cnJpZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKKyAqICAgICAgRGVm
YXVsdCBWYWx1ZTogIDAKKyAqCisgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0
IHRoZSBiYWNrZW5kIGNhbiBwcm9jZXNzIHJlcXVlc3RzCisgKiAgICAgIGNvbnRhaW5pbmcgdGhl
IEJMS0lGX09QX1dSSVRFX0JBUlJJRVIgcmVxdWVzdCBvcGNvZGUuICBSZXF1ZXN0cworICogICAg
ICBvZiB0aGlzIHR5cGUgbWF5IHN0aWxsIGJlIHJldHVybmVkIGF0IGFueSB0aW1lIHdpdGggdGhl
CisgKiAgICAgIEJMS0lGX1JTUF9FT1BOT1RTVVBQIHJlc3VsdCBjb2RlLgorICoKKyAqIGZlYXR1
cmUtZmx1c2gtY2FjaGUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKKyAq
ICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAqCisgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGlj
YXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBwcm9jZXNzIHJlcXVlc3RzCisgKiAgICAgIGNvbnRh
aW5pbmcgdGhlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSByZXF1ZXN0IG9wY29kZS4gIFJlcXVl
c3RzCisgKiAgICAgIG9mIHRoaXMgdHlwZSBtYXkgc3RpbGwgYmUgcmV0dXJuZWQgYXQgYW55IHRp
bWUgd2l0aCB0aGUKKyAqICAgICAgQkxLSUZfUlNQX0VPUE5PVFNVUFAgcmVzdWx0IGNvZGUuCisg
KgorICogZmVhdHVyZS1kaXNjYXJkCisgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xl
YW4pCisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKgorICogICAgICBBIHZhbHVlIG9mICIx
IiBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFja2VuZCBjYW4gcHJvY2VzcyByZXF1ZXN0cworICogICAg
ICBjb250YWluaW5nIHRoZSBCTEtJRl9PUF9ESVNDQVJEIHJlcXVlc3Qgb3Bjb2RlLiAgUmVxdWVz
dHMKKyAqICAgICAgb2YgdGhpcyB0eXBlIG1heSBzdGlsbCBiZSByZXR1cm5lZCBhdCBhbnkgdGlt
ZSB3aXRoIHRoZQorICogICAgICBCTEtJRl9SU1BfRU9QTk9UU1VQUCByZXN1bHQgY29kZS4KKyAq
CisgKiBmZWF0dXJlLXBlcnNpc3RlbnQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9v
bGVhbikKKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAqICAgICAgTm90ZXM6IDcKKyAqCisg
KiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBrZWVw
IHRoZSBncmFudHMgdXNlZAorICogICAgICBieSB0aGUgZnJvbnRlbmQgZHJpdmVyIG1hcHBlZCwg
c28gdGhlIHNhbWUgc2V0IG9mIGdyYW50cyBzaG91bGQgYmUKKyAqICAgICAgdXNlZCBpbiBhbGwg
dHJhbnNhY3Rpb25zLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZ3JhbnRzIHRoZSBiYWNrZW5kCisg
KiAgICAgIGNhbiBtYXAgcGVyc2lzdGVudGx5IGRlcGVuZHMgb24gdGhlIGltcGxlbWVudGF0aW9u
LCBidXQgaWRlYWxseSBpdAorICogICAgICBzaG91bGQgYmUgUklOR19TSVpFICogQkxLSUZfTUFY
X1NFR01FTlRTX1BFUl9SRVFVRVNULiBVc2luZyB0aGlzCisgKiAgICAgIGZlYXR1cmUgdGhlIGJh
Y2tlbmQgZG9lc24ndCBuZWVkIHRvIHVubWFwIGVhY2ggZ3JhbnQsIHByZXZlbnRpbmcKKyAqICAg
ICAgY29zdGx5IFRMQiBmbHVzaGVzLiBUaGUgYmFja2VuZCBkcml2ZXIgc2hvdWxkIG9ubHkgbWFw
IGdyYW50cworICogICAgICBwZXJzaXN0ZW50bHkgaWYgdGhlIGZyb250ZW5kIHN1cHBvcnRzIGl0
LiBJZiBhIGJhY2tlbmQgZHJpdmVyIGNob29zZXMKKyAqICAgICAgdG8gdXNlIHRoZSBwZXJzaXN0
ZW50IHByb3RvY29sIHdoZW4gdGhlIGZyb250ZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpdCwKKyAqICAg
ICAgaXQgd2lsbCBwcm9iYWJseSBoaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBlcnNpc3RlbnRs
eSBtYXBwZWQgZ3JhbnRzCisgKiAgICAgIChkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZnJvbnRl
bmQgd29uJ3QgYmUgcmV1c2luZyB0aGUgc2FtZSBncmFudHMpLAorICogICAgICBhbmQgZmFsbCBi
YWNrIHRvIG5vbi1wZXJzaXN0ZW50IG1vZGUuIEJhY2tlbmQgaW1wbGVtZW50YXRpb25zIG1heQor
ICogICAgICBzaHJpbmsgb3IgZXhwYW5kIHRoZSBudW1iZXIgb2YgcGVyc2lzdGVudGx5IG1hcHBl
ZCBncmFudHMgd2l0aG91dAorICogICAgICBub3RpZnlpbmcgdGhlIGZyb250ZW5kIGRlcGVuZGlu
ZyBvbiBtZW1vcnkgY29uc3RyYWludHMgKHRoaXMgbWlnaHQKKyAqICAgICAgY2F1c2UgYSBwZXJm
b3JtYW5jZSBkZWdyYWRhdGlvbikuCisgKgorICogICAgICBJZiBhIGJhY2tlbmQgZHJpdmVyIHdh
bnRzIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwZXJzaXN0ZW50bHkKKyAqICAgICAg
bWFwcGVkIGdyYW50cyB0byBhIHZhbHVlIGxlc3MgdGhhbiBSSU5HX1NJWkUgKgorICogICAgICBC
TEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QgYSBMUlUgc3RyYXRlZ3kgc2hvdWxkIGJlIHVz
ZWQgdG8KKyAqICAgICAgZGlzY2FyZCB0aGUgZ3JhbnRzIHRoYXQgYXJlIGxlc3MgY29tbW9ubHkg
dXNlZC4gVXNpbmcgYSBMUlUgaW4gdGhlCisgKiAgICAgIGJhY2tlbmQgZHJpdmVyIHBhaXJlZCB3
aXRoIGEgTElGTyBxdWV1ZSBpbiB0aGUgZnJvbnRlbmQgd2lsbAorICogICAgICBhbGxvdyB1cyB0
byBoYXZlIGJldHRlciBwZXJmb3JtYW5jZSBpbiB0aGlzIHNjZW5hcmlvLgorICoKKyAqLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVycyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBtYXgtcmluZy1wYWdlLW9yZGVyCisgKiAgICAgIFZhbHVl
czogICAgICAgICA8VUlOVDMyPgorICogICAgICBEZWZhdWx0IFZhbHVlOiAgMAorICogICAgICBO
b3RlczogICAgICAgICAgMSwgMworICoKKyAqICAgICAgVGhlIG1heGltdW0gc3VwcG9ydGVkIHNp
emUgb2YgdGhlIHJlcXVlc3QgcmluZyBidWZmZXIgaW4gdW5pdHMgb2YKKyAqICAgICAgbGIobWFj
aGluZSBwYWdlcykuIChlLmcuIDAgPT0gMSBwYWdlLCAgMSA9IDIgcGFnZXMsIDIgPT0gNCBwYWdl
cywKKyAqICAgICAgZXRjLikuCisgKgorICogbWF4LXJpbmctcGFnZXMKKyAqICAgICAgVmFsdWVz
OiAgICAgICAgIDxVSU5UMzI+CisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAxCisgKiAgICAgIE5v
dGVzOiAgICAgICAgICBERVBSRUNBVEVELCAyLCAzCisgKgorICogICAgICBUaGUgbWF4aW11bSBz
dXBwb3J0ZWQgc2l6ZSBvZiB0aGUgcmVxdWVzdCByaW5nIGJ1ZmZlciBpbiB1bml0cyBvZgorICog
ICAgICBtYWNoaW5lIHBhZ2VzLiAgVGhlIHZhbHVlIG11c3QgYmUgYSBwb3dlciBvZiAyLgorICoK
KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCYWNrZW5kIERldmljZSBQcm9wZXJ0aWVzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkaXNjYXJkLWFsaWdubWVudAorICogICAg
ICBWYWx1ZXM6ICAgICAgICAgPFVJTlQzMj4KKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAq
ICAgICAgTm90ZXM6ICAgICAgICAgIDQsIDUKKyAqCisgKiAgICAgIFRoZSBvZmZzZXQsIGluIGJ5
dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UsCisgKiAg
ICAgIHRvIHRoZSBmaXJzdCwgYWRkcmVzc2FibGUsIGRpc2NhcmQgZXh0ZW50IG9uIHRoZSB1bmRl
cmx5aW5nIGRldmljZS4KKyAqCisgKiBkaXNjYXJkLWdyYW51bGFyaXR5CisgKiAgICAgIFZhbHVl
czogICAgICAgICA8VUlOVDMyPgorICogICAgICBEZWZhdWx0IFZhbHVlOiAgPCJzZWN0b3Itc2l6
ZSI+CisgKiAgICAgIE5vdGVzOiAgICAgICAgICA0CisgKgorICogICAgICBUaGUgc2l6ZSwgaW4g
Ynl0ZXMsIG9mIHRoZSBpbmRpdmlkdWFsbHkgYWRkcmVzc2FibGUgZGlzY2FyZCBleHRlbnRzCisg
KiAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZS4KKyAqCisgKiBkaXNjYXJkLXNlY3VyZQor
ICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8xIChib29sZWFuKQorICogICAgICBEZWZhdWx0IFZh
bHVlOiAgMAorICogICAgICBOb3RlczogICAgICAgICAgMTAKKyAqCisgKiAgICAgIEEgdmFsdWUg
b2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBwcm9jZXNzIEJMS0lGX09QX0RJ
U0NBUkQKKyAqICAgICAgcmVxdWVzdHMgd2l0aCB0aGUgQkxLSUZfRElTQ0FSRF9TRUNVUkUgZmxh
ZyBzZXQuCisgKgorICogaW5mbworICogICAgICBWYWx1ZXM6ICAgICAgICAgPFVJTlQzMj4gKGJp
dG1hcCkKKyAqCisgKiAgICAgIEEgY29sbGVjdGlvbiBvZiBiaXQgZmxhZ3MgZGVzY3JpYmluZyBh
dHRyaWJ1dGVzIG9mIHRoZSBiYWNraW5nCisgKiAgICAgIGRldmljZS4gIFRoZSBWRElTS18qIG1h
Y3JvcyBkZWZpbmUgdGhlIG1lYW5pbmcgb2YgZWFjaCBiaXQKKyAqICAgICAgbG9jYXRpb24uCisg
KgorICogc2VjdG9yLXNpemUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5UMzI+CisgKgor
ICogICAgICBUaGUgbG9naWNhbCBzZWN0b3Igc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBiYWNrZW5k
IGRldmljZS4KKyAqCisgKiBwaHlzaWNhbC1zZWN0b3Itc2l6ZQorICogICAgICBWYWx1ZXM6ICAg
ICAgICAgPFVJTlQzMj4KKyAqCisgKiAgICAgIFRoZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSwgaW4g
Ynl0ZXMsIG9mIHRoZSBiYWNrZW5kIGRldmljZS4KKyAqCisgKiBzZWN0b3JzCisgKiAgICAgIFZh
bHVlczogICAgICAgICA8VUlOVDY0PgorICoKKyAqICAgICAgVGhlIHNpemUgb2YgdGhlIGJhY2tl
bmQgZGV2aWNlLCBleHByZXNzZWQgaW4gdW5pdHMgb2YgaXRzIGxvZ2ljYWwKKyAqICAgICAgc2Vj
dG9yIHNpemUgKCJzZWN0b3Itc2l6ZSIpLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCisgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlcXVlc3QgVHJh
bnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldmVudC1j
aGFubmVsCisgKiAgICAgIFZhbHVlczogICAgICAgICA8VUlOVDMyPgorICoKKyAqICAgICAgVGhl
IGlkZW50aWZpZXIgb2YgdGhlIFhlbiBldmVudCBjaGFubmVsIHVzZWQgdG8gc2lnbmFsIGFjdGl2
aXR5CisgKiAgICAgIGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiByaW5nLXJlZgorICogICAg
ICBWYWx1ZXM6ICAgICAgICAgPFVJTlQzMj4KKyAqICAgICAgTm90ZXM6ICAgICAgICAgIDYKKyAq
CisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9y
IHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAgICB0aGUgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBh
Z2Ugc2l6ZWQgcmluZyBidWZmZXIuCisgKgorICogcmluZy1yZWYldQorICogICAgICBWYWx1ZXM6
ICAgICAgICAgPFVJTlQzMj4KKyAqICAgICAgTm90ZXM6ICAgICAgICAgIDYKKyAqCisgKiAgICAg
IEZvciBhIGZyb250ZW5kIHByb3ZpZGluZyBhIG11bHRpLXBhZ2UgcmluZywgYSAibnVtYmVyIG9m
IHJpbmcgcGFnZXMiCisgKiAgICAgIHNpemVkIGxpc3Qgb2Ygbm9kZXMsIGVhY2ggY29udGFpbmlu
ZyBhIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcKKyAqICAgICAgcGVybWlzc2lvbiBmb3Ig
dGhlIGJhY2tlbmQgdG8gbWFwIHRoZSBwYWdlIG9mIHRoZSByaW5nIGxvY2F0ZWQKKyAqICAgICAg
YXQgcGFnZSBpbmRleCAiJXUiLiAgUGFnZSBpbmRleGVzIGFyZSB6ZXJvIGJhc2VkLgorICoKKyAq
IHByb3RvY29sCisgKiAgICAgIFZhbHVlczogICAgICAgICBzdHJpbmcgKFhFTl9JT19QUk9UT19B
QklfKikKKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIFhFTl9JT19QUk9UT19BQklfTkFUSVZFCisg
KgorICogICAgICBUaGUgbWFjaGluZSBBQkkgcnVsZXMgZ292ZXJuaW5nIHRoZSBmb3JtYXQgb2Yg
YWxsIHJpbmcgcmVxdWVzdCBhbmQKKyAqICAgICAgcmVzcG9uc2Ugc3RydWN0dXJlcy4KKyAqCisg
KiByaW5nLXBhZ2Utb3JkZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5UMzI+CisgKiAg
ICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKiAgICAgIE1heGltdW0gVmFsdWU6ICBNQVgoZmZzKG1h
eC1yaW5nLXBhZ2VzKSAtIDEsIG1heC1yaW5nLXBhZ2Utb3JkZXIpCisgKiAgICAgIE5vdGVzOiAg
ICAgICAgICAxLCAzCisgKgorICogICAgICBUaGUgc2l6ZSBvZiB0aGUgZnJvbnRlbmQgYWxsb2Nh
dGVkIHJlcXVlc3QgcmluZyBidWZmZXIgaW4gdW5pdHMKKyAqICAgICAgb2YgbGIobWFjaGluZSBw
YWdlcykuIChlLmcuIDAgPT0gMSBwYWdlLCAxID0gMiBwYWdlcywgMiA9PSA0IHBhZ2VzLAorICog
ICAgICBldGMuKS4KKyAqCisgKiBudW0tcmluZy1wYWdlcworICogICAgICBWYWx1ZXM6ICAgICAg
ICAgPFVJTlQzMj4KKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDEKKyAqICAgICAgTWF4aW11bSBW
YWx1ZTogIE1BWChtYXgtcmluZy1wYWdlcywoMHgxIDw8IG1heC1yaW5nLXBhZ2Utb3JkZXIpKQor
ICogICAgICBOb3RlczogICAgICAgICAgREVQUkVDQVRFRCwgMiwgMworICoKKyAqICAgICAgVGhl
IHNpemUgb2YgdGhlIGZyb250ZW5kIGFsbG9jYXRlZCByZXF1ZXN0IHJpbmcgYnVmZmVyIGluIHVu
aXRzIG9mCisgKiAgICAgIG1hY2hpbmUgcGFnZXMuICBUaGUgdmFsdWUgbXVzdCBiZSBhIHBvd2Vy
IG9mIDIuCisgKgorICogZmVhdHVyZS1wZXJzaXN0ZW50CisgKiAgICAgIFZhbHVlczogICAgICAg
ICAwLzEgKGJvb2xlYW4pCisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKiAgICAgIE5vdGVz
OiA3LCA4LCA5CisgKgorICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMgdGhhdCB0aGUg
ZnJvbnRlbmQgd2lsbCByZXVzZSB0aGUgc2FtZSBncmFudHMKKyAqICAgICAgZm9yIGFsbCB0cmFu
c2FjdGlvbnMsIGFsbG93aW5nIHRoZSBiYWNrZW5kIHRvIG1hcCB0aGVtIHdpdGggd3JpdGUKKyAq
ICAgICAgYWNjZXNzIChldmVuIHdoZW4gaXQgc2hvdWxkIGJlIHJlYWQtb25seSkuIElmIHRoZSBm
cm9udGVuZCBoaXRzIHRoZQorICogICAgICBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIHBlcnNp
c3RlbnRseSBtYXBwZWQgZ3JhbnRzLCBpdCBjYW4gZmFsbGJhY2sKKyAqICAgICAgdG8gbm9uIHBl
cnNpc3RlbnQgbW9kZS4gVGhpcyB3aWxsIGNhdXNlIGEgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24s
CisgKiAgICAgIHNpbmNlIHRoZSB0aGUgYmFja2VuZCBkcml2ZXIgd2lsbCBzdGlsbCB0cnkgdG8g
bWFwIHRob3NlIGdyYW50cworICogICAgICBwZXJzaXN0ZW50bHkuIFNpbmNlIHRoZSBwZXJzaXN0
ZW50IGdyYW50cyBwcm90b2NvbCBpcyBjb21wYXRpYmxlIHdpdGgKKyAqICAgICAgdGhlIHByZXZp
b3VzIHByb3RvY29sLCBhIGZyb250ZW5kIGRyaXZlciBjYW4gY2hvb3NlIHRvIHdvcmsgaW4KKyAq
ICAgICAgcGVyc2lzdGVudCBtb2RlIGV2ZW4gd2hlbiB0aGUgYmFja2VuZCBkb2Vzbid0IHN1cHBv
cnQgaXQuCisgKgorICogICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBmcm9udGVuZCBk
cml2ZXIgc3RvcmVzIHRoZSBwZXJzaXN0ZW50bHkKKyAqICAgICAgbWFwcGVkIGdyYW50cyBpbiBh
IExJRk8gcXVldWUsIHNvIGEgc3Vic2V0IG9mIGFsbCBwZXJzaXN0ZW50bHkgbWFwcGVkCisgKiAg
ICAgIGdyYW50cyBnZXRzIHVzZWQgY29tbW9ubHkuIFRoaXMgaXMgZG9uZSBpbiBjYXNlIHRoZSBi
YWNrZW5kIGRyaXZlcgorICogICAgICBkZWNpZGVzIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cworICogICAgICB0byBhIHZhbHVlIGxlc3Mg
dGhhbiBSSU5HX1NJWkUgKiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QuCisgKgorICot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZpcnR1YWwgRGV2aWNlIFByb3BlcnRpZXMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRldmljZS10eXBlCisgKiAgICAgIFZhbHVlczog
ICAgICAgICAiZGlzayIsICJjZHJvbSIsICJmbG9wcHkiLCBldGMuCisgKgorICogdmlydHVhbC1k
ZXZpY2UKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5UMzI+CisgKgorICogICAgICBBIHZh
bHVlIGluZGljYXRpbmcgdGhlIHBoeXNpY2FsIGRldmljZSB0byB2aXJ0dWFsaXplIHdpdGhpbiB0
aGUKKyAqICAgICAgZnJvbnRlbmQncyBkb21haW4uICAoZS5nLiAiVGhlIGZpcnN0IEFUQSBkaXNr
IiwgIlRoZSB0aGlyZCBTQ1NJCisgKiAgICAgIGRpc2siLCBldGMuKQorICoKKyAqICAgICAgU2Vl
IGRvY3MvbWlzYy92YmQtaW50ZXJmYWNlLnR4dCBmb3IgZGV0YWlscyBvbiB0aGUgZm9ybWF0IG9m
IHRoaXMKKyAqICAgICAgdmFsdWUuCisgKgorICogTm90ZXMKKyAqIC0tLS0tCisgKiAoMSkgTXVs
dGktcGFnZSByaW5nIGJ1ZmZlciBzY2hlbWUgZmlyc3QgZGV2ZWxvcGVkIGluIHRoZSBDaXRyaXgg
WGVuU2VydmVyCisgKiAgICAgUFYgZHJpdmVycy4KKyAqICgyKSBNdWx0aS1wYWdlIHJpbmcgYnVm
ZmVyIHNjaGVtZSBmaXJzdCB1c2VkIGluIHNvbWUgUmVkSGF0IGRpc3RyaWJ1dGlvbnMKKyAqICAg
ICBpbmNsdWRpbmcgYSBkaXN0cmlidXRpb24gZGVwbG95ZWQgb24gY2VydGFpbiBub2RlcyBvZiB0
aGUgQW1hem9uCisgKiAgICAgRUMyIGNsdXN0ZXIuCisgKiAoMykgU3VwcG9ydCBmb3IgbXVsdGkt
cGFnZSByaW5nIGJ1ZmZlcnMgd2FzIGltcGxlbWVudGVkIGluZGVwZW5kZW50bHksCisgKiAgICAg
aW4gc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1zLCBieSBib3RoIENpdHJpeCBhbmQgUmVkSGF0L0Ft
YXpvbi4KKyAqICAgICBGb3IgZnVsbCBpbnRlcm9wZXJhYmlsaXR5LCBibG9jayBmcm9udCBhbmQg
YmFja2VuZHMgc2hvdWxkIHB1Ymxpc2gKKyAqICAgICBpZGVudGljYWwgcmluZyBwYXJhbWV0ZXJz
LCBhZGp1c3RlZCBmb3IgdW5pdCBkaWZmZXJlbmNlcywgdG8gdGhlCisgKiAgICAgWGVuU3RvcmUg
bm9kZXMgdXNlZCBpbiBib3RoIHNjaGVtZXMuCisgKiAoNCkgRGV2aWNlcyB0aGF0IHN1cHBvcnQg
ZGlzY2FyZCBmdW5jdGlvbmFsaXR5IG1heSBpbnRlcm5hbGx5IGFsbG9jYXRlIHNwYWNlCisgKiAg
ICAgKGRpc2NhcmRhYmxlIGV4dGVudHMpIGluIHVuaXRzIHRoYXQgYXJlIGxhcmdlciB0aGFuIHRo
ZSBleHBvcnRlZCBsb2dpY2FsCisgKiAgICAgYmxvY2sgc2l6ZS4gSWYgdGhlIGJhY2tpbmcgZGV2
aWNlIGhhcyBzdWNoIGRpc2NhcmRhYmxlIGV4dGVudHMgdGhlCisgKiAgICAgYmFja2VuZCBzaG91
bGQgcHJvdmlkZSBib3RoIGRpc2NhcmQtZ3JhbnVsYXJpdHkgYW5kIGRpc2NhcmQtYWxpZ25tZW50
LgorICogICAgIFByb3ZpZGluZyBqdXN0IG9uZSBvZiB0aGUgdHdvIG1heSBiZSBjb25zaWRlcmVk
IGFuIGVycm9yIGJ5IHRoZSBmcm9udGVuZC4KKyAqICAgICBCYWNrZW5kcyBzdXBwb3J0aW5nIGRp
c2NhcmQgc2hvdWxkIGluY2x1ZGUgZGlzY2FyZC1ncmFudWxhcml0eSBhbmQKKyAqICAgICBkaXNj
YXJkLWFsaWdubWVudCBldmVuIGlmIGl0IHN1cHBvcnRzIGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBz
ZWN0b3JzLgorICogICAgIEZyb250ZW5kcyBzaG91bGQgYXNzdW1lIGRpc2NhcmQtYWxpZ25tZW50
ID09IDAgYW5kIGRpc2NhcmQtZ3JhbnVsYXJpdHkKKyAqICAgICA9PSBzZWN0b3Igc2l6ZSBpZiB0
aGVzZSBrZXlzIGFyZSBtaXNzaW5nLgorICogKDUpIFRoZSBkaXNjYXJkLWFsaWdubWVudCBwYXJh
bWV0ZXIgYWxsb3dzIGEgcGh5c2ljYWwgZGV2aWNlIHRvIGJlCisgKiAgICAgcGFydGl0aW9uZWQg
aW50byB2aXJ0dWFsIGRldmljZXMgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgYmVnaW4gb3IKKyAq
ICAgICBlbmQgb24gYSBkaXNjYXJkYWJsZSBleHRlbnQgYm91bmRhcnkuCisgKiAoNikgV2hlbiB0
aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHBhZ2UgYWxsb2NhdGVkIHRvIHRoZSByZXF1ZXN0IHJpbmcs
CisgKiAgICAgJ3JpbmctcmVmJyBpcyB1c2VkIHRvIGNvbW11bmljYXRlIHRoZSBncmFudCByZWZl
cmVuY2UgZm9yIHRoaXMKKyAqICAgICBwYWdlIHRvIHRoZSBiYWNrZW5kLiAgV2hlbiB1c2luZyBh
IG11bHRpLXBhZ2UgcmluZywgdGhlICdyaW5nLXJlZicKKyAqICAgICBub2RlIGlzIG5vdCBjcmVh
dGVkLiAgSW5zdGVhZCAncmluZy1yZWYwJyAtICdyaW5nLXJlZk4nIGFyZSB1c2VkLgorICogKDcp
IFdoZW4gdXNpbmcgcGVyc2lzdGVudCBncmFudHMgZGF0YSBoYXMgdG8gYmUgY29waWVkIGZyb20v
dG8gdGhlIHBhZ2UKKyAqICAgICB3aGVyZSB0aGUgZ3JhbnQgaXMgY3VycmVudGx5IG1hcHBlZC4g
VGhlIG92ZXJoZWFkIG9mIGRvaW5nIHRoaXMgY29weQorICogICAgIGhvd2V2ZXIgZG9lc24ndCBz
dXBwcmVzcyB0aGUgc3BlZWQgaW1wcm92ZW1lbnQgb2Ygbm90IGhhdmluZyB0byB1bm1hcAorICog
ICAgIHRoZSBncmFudHMuCisgKiAoOCkgVGhlIGZyb250ZW5kIGRyaXZlciBoYXMgdG8gYWxsb3cg
dGhlIGJhY2tlbmQgZHJpdmVyIHRvIG1hcCBhbGwgZ3JhbnRzCisgKiAgICAgd2l0aCB3cml0ZSBh
Y2Nlc3MsIGV2ZW4gd2hlbiB0aGV5IHNob3VsZCBiZSBtYXBwZWQgcmVhZC1vbmx5LCBzaW5jZQor
ICogICAgIGZ1cnRoZXIgcmVxdWVzdHMgbWF5IHJldXNlIHRoZXNlIGdyYW50cyBhbmQgcmVxdWly
ZSB3cml0ZSBwZXJtaXNzaW9ucy4KKyAqICg5KSBMaW51eCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0
IGhhdmUgYSBsaW1pdCBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqICAgICBncmFudHMgdGhh
dCBjYW4gYmUgcGVyc2lzdGVudGx5IG1hcHBlZCBpbiB0aGUgZnJvbnRlbmQgZHJpdmVyLCBidXQK
KyAqICAgICBkdWUgdG8gdGhlIGZyb250ZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpdCBzaG91
bGQgbmV2ZXIgYmUgYmlnZ2VyCisgKiAgICAgdGhhbiBSSU5HX1NJWkUgKiBCTEtJRl9NQVhfU0VH
TUVOVFNfUEVSX1JFUVVFU1QuCisgKigxMCkgVGhlIGRpc2NhcmQtc2VjdXJlIHByb3BlcnR5IG1h
eSBiZSBwcmVzZW50IGFuZCB3aWxsIGJlIHNldCB0byAxIGlmIHRoZQorICogICAgIGJhY2tpbmcg
ZGV2aWNlIHN1cHBvcnRzIHNlY3VyZSBkaXNjYXJkLgorICovCisKKy8qCisgKiBTVEFURSBESUFH
UkFNUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0YXJ0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5k
IGJhY2sgbm9kZXMgd2l0aCBzdGF0ZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KKyAqCisgKiBG
cm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjaworICogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nICAgICAgICAgICAgICBYZW5idXNTdGF0
ZUluaXRpYWxpc2luZworICogIG8gUXVlcnkgdmlydHVhbCBkZXZpY2UgICAgICAgICAgICAgICBv
IFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIGlkZW50aWZpY2F0aW9uCisgKiAgICBwcm9wZXJ0aWVzLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS4KKyAqICBvIFNldHVwIE9TIGRldmljZSBpbnN0
YW5jZS4gICAgICAgICAgbyBPcGVuIGFuZCB2YWxpZGF0ZSBiYWNrZW5kIGRldmljZS4KKyAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBQdWJsaXNoIGJhY2tlbmQgZmVh
dHVyZXMgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
bnNwb3J0IHBhcmFtZXRlcnMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAorICoKKyAqIG8gUXVlcnkgYmFja2VuZCBmZWF0
dXJlcyBhbmQKKyAqICAgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCisgKiBvIEFsbG9jYXRlIGFuZCBp
bml0aWFsaXplIHRoZQorICogICByZXF1ZXN0IHJpbmcuCisgKiBvIFB1Ymxpc2ggdHJhbnNwb3J0
IHBhcmFtZXRlcnMKKyAqICAgdGhhdCB3aWxsIGJlIGluIGVmZmVjdCBkdXJpbmcKKyAqICAgdGhp
cyBjb25uZWN0aW9uLgorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAg
ICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVJbml0aWFsaXNlZAorICoKKyAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVuZCB0cmFuc3BvcnQg
cGFyYW1ldGVycy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBD
b25uZWN0IHRvIHRoZSByZXF1ZXN0IHJpbmcgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQgY2hhbm5lbC4KKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbyBQdWJsaXNoIGJhY2tlbmQgZGV2aWNlIHByb3BlcnRpZXMuCisg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVD
b25uZWN0ZWQKKyAqCisgKiAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBwcm9wZXJ0aWVzLgorICog
IG8gRmluYWxpemUgT1MgdmlydHVhbCBkZXZpY2UKKyAqICAgIGluc3RhbmNlLgorICogICAgICAg
ICAgICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVz
U3RhdGVDb25uZWN0ZWQKKyAqCisgKiBOb3RlOiBEcml2ZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQg
YW55IG9wdGlvbmFsIGZlYXR1cmVzLCBvciB0aGUgbmVnb3RpYXRpb24KKyAqICAgICAgIG9mIHRy
YW5zcG9ydCBwYXJhbWV0ZXJzLCBjYW4gc2tpcCBjZXJ0YWluIHN0YXRlcyBpbiB0aGUgc3RhdGUg
bWFjaGluZToKKyAqCisgKiAgICAgICBvIEEgZnJvbnRlbmQgbWF5IHRyYW5zaXRpb24gdG8gWGVu
YnVzU3RhdGVJbml0aWFsaXNlZCB3aXRob3V0CisgKiAgICAgICAgIHdhaXRpbmcgZm9yIHRoZSBi
YWNrZW5kIHRvIGVudGVyIFhlbmJ1c1N0YXRlSW5pdFdhaXQuICBJbiB0aGlzCisgKiAgICAgICAg
IGNhc2UsIGRlZmF1bHQgdHJhbnNwb3J0IHBhcmFtZXRlcnMgYXJlIGluIGVmZmVjdCBhbmQgYW55
CisgKiAgICAgICAgIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIHB1Ymxpc2hlZCBieSB0aGUgZnJvbnRl
bmQgbXVzdCBjb250YWluCisgKiAgICAgICAgIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgorICoKKyAq
ICAgICAgIG8gQSBiYWNrZW5kIG1heSB0cmFuc2l0aW9uIHRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlz
ZWQsIGJ5cGFzc2luZworICogICAgICAgICBYZW5idXNTdGF0ZUluaXRXYWl0LCB3aXRob3V0IHdh
aXRpbmcgZm9yIHRoZSBmcm9udGVuZCB0byBmaXJzdAorICogICAgICAgICBlbnRlciB0aGUgWGVu
YnVzU3RhdGVJbml0aWFsaXNlZCBzdGF0ZS4gIEluIHRoaXMgY2FzZSwgZGVmYXVsdAorICogICAg
ICAgICB0cmFuc3BvcnQgcGFyYW1ldGVycyBhcmUgaW4gZWZmZWN0IGFuZCBhbnkgdHJhbnNwb3J0
IHBhcmFtZXRlcnMKKyAqICAgICAgICAgcHVibGlzaGVkIGJ5IHRoZSBiYWNrZW5kIG11c3QgY29u
dGFpbiB0aGVpciBkZWZhdWx0IHZhbHVlcy4KKyAqCisgKiAgICAgICBEcml2ZXJzIHRoYXQgc3Vw
cG9ydCBvcHRpb25hbCBmZWF0dXJlcyBhbmQvb3IgdHJhbnNwb3J0IHBhcmFtZXRlcgorICogICAg
ICAgbmVnb3RpYXRpb24gbXVzdCB0b2xlcmF0ZSB0aGVzZSBhZGRpdGlvbmFsIHN0YXRlIHRyYW5z
aXRpb24gcGF0aHMuCisgKiAgICAgICBJbiBnZW5lcmFsIHRoaXMgbWVhbnMgcGVyZm9ybWluZyB0
aGUgd29yayBvZiBhbnkgc2tpcHBlZCBzdGF0ZQorICogICAgICAgdHJhbnNpdGlvbiwgaWYgaXQg
aGFzIG5vdCBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkLCBpbiBhZGRpdGlvbiB0byB0aGUKKyAqICAg
ICAgIHdvcmsgYXNzb2NpYXRlZCB3aXRoIGVudHJ5IGludG8gdGhlIGN1cnJlbnQgc3RhdGUuCisg
Ki8KKworLyoKKyAqIFJFUVVFU1QgQ09ERVMuCisgKi8KKyNkZWZpbmUgQkxLSUZfT1BfUkVBRCAg
ICAgICAgICAgICAgMAorI2RlZmluZSBCTEtJRl9PUF9XUklURSAgICAgICAgICAgICAxCisvKgor
ICogQWxsIHdyaXRlcyBpc3N1ZWQgcHJpb3IgdG8gYSByZXF1ZXN0IHdpdGggdGhlIEJMS0lGX09Q
X1dSSVRFX0JBUlJJRVIKKyAqIG9wZXJhdGlvbiBjb2RlICgiYmFycmllciByZXF1ZXN0IikgbXVz
dCBiZSBjb21wbGV0ZWQgcHJpb3IgdG8gdGhlCisgKiBleGVjdXRpb24gb2YgdGhlIGJhcnJpZXIg
cmVxdWVzdC4gIEFsbCB3cml0ZXMgaXNzdWVkIGFmdGVyIHRoZSBiYXJyaWVyCisgKiByZXF1ZXN0
IG11c3Qgbm90IGV4ZWN1dGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGJhcnJp
ZXIgcmVxdWVzdC4KKyAqCisgKiBPcHRpb25hbC4gIFNlZSAiZmVhdHVyZS1iYXJyaWVyIiBYZW5C
dXMgbm9kZSBkb2N1bWVudGF0aW9uIGFib3ZlLgorICovCisjZGVmaW5lIEJMS0lGX09QX1dSSVRF
X0JBUlJJRVIgICAgIDIKKy8qCisgKiBDb21taXQgYW55IHVuY29tbWl0dGVkIGNvbnRlbnRzIG9m
IHRoZSBiYWNraW5nIGRldmljZSdzIHZvbGF0aWxlIGNhY2hlCisgKiB0byBzdGFibGUgc3RvcmFn
ZS4KKyAqCisgKiBPcHRpb25hbC4gIFNlZSAiZmVhdHVyZS1mbHVzaC1jYWNoZSIgWGVuQnVzIG5v
ZGUgZG9jdW1lbnRhdGlvbiBhYm92ZS4KKyAqLworI2RlZmluZSBCTEtJRl9PUF9GTFVTSF9ESVNL
Q0FDSEUgICAzCisvKgorICogVXNlZCBpbiBTTEVTIHNvdXJjZXMgZm9yIGRldmljZSBzcGVjaWZp
YyBjb21tYW5kIHBhY2tldAorICogY29udGFpbmVkIHdpdGhpbiB0aGUgcmVxdWVzdC4gUmVzZXJ2
ZWQgZm9yIHRoYXQgcHVycG9zZS4KKyAqLworI2RlZmluZSBCTEtJRl9PUF9SRVNFUlZFRF8xICAg
ICAgICA0CisvKgorICogSW5kaWNhdGUgdG8gdGhlIGJhY2tlbmQgZGV2aWNlIHRoYXQgYSByZWdp
b24gb2Ygc3RvcmFnZSBpcyBubyBsb25nZXIgaW4KKyAqIHVzZSwgYW5kIG1heSBiZSBkaXNjYXJk
ZWQgYXQgYW55IHRpbWUgd2l0aG91dCBpbXBhY3QgdG8gdGhlIGNsaWVudC4gIElmCisgKiB0aGUg
QkxLSUZfRElTQ0FSRF9TRUNVUkUgZmxhZyBpcyBzZXQgb24gdGhlIHJlcXVlc3QsIGFsbCBjb3Bp
ZXMgb2YgdGhlCisgKiBkaXNjYXJkZWQgcmVnaW9uIG9uIHRoZSBkZXZpY2UgbXVzdCBiZSByZW5k
ZXJlZCB1bnJlY292ZXJhYmxlIGJlZm9yZSB0aGUKKyAqIGNvbW1hbmQgcmV0dXJucy4KKyAqCisg
KiBUaGlzIG9wZXJhdGlvbiBpcyBhbmFsb2dvdXMgdG8gcGVyZm9ybWluZyBhIHRyaW0gKEFUQSkg
b3IgdW5hbXAgKFNDU0kpLAorICogY29tbWFuZCBvbiBhIG5hdGl2ZSBkZXZpY2UuCisgKgorICog
TW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0cmltL3VubWFwIG9wZXJhdGlvbnMgY2FuIGJlIGZvdW5k
IGF0OgorICogaHR0cDovL3QxMy5vcmcvRG9jdW1lbnRzL1VwbG9hZGVkRG9jdW1lbnRzL2RvY3My
MDA4LworICogICAgIGUwNzE1NHI2LURhdGFfU2V0X01hbmFnZW1lbnRfUHJvcG9zYWxfZm9yX0FU
QS1BQ1MyLmRvYworICogaHR0cDovL3d3dy5zZWFnYXRlLmNvbS9zdGF0aWNmaWxlcy9zdXBwb3J0
L2Rpc2MvbWFudWFscy8KKyAqICAgICBJbnRlcmZhY2UlMjBtYW51YWxzLzEwMDI5MzA2OGMucGRm
CisgKgorICogT3B0aW9uYWwuICBTZWUgImZlYXR1cmUtZGlzY2FyZCIsICJkaXNjYXJkLWFsaWdu
bWVudCIsCisgKiAiZGlzY2FyZC1ncmFudWxhcml0eSIsIGFuZCAiZGlzY2FyZC1zZWN1cmUiIGlu
IHRoZSBYZW5CdXMgbm9kZQorICogZG9jdW1lbnRhdGlvbiBhYm92ZS4KKyAqLworI2RlZmluZSBC
TEtJRl9PUF9ESVNDQVJEICAgICAgICAgICA1CisKKy8qCisgKiBSZWNvZ25pemVkIGlmICJmZWF0
dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50cyIgaW4gcHJlc2VudCBpbiB0aGUgYmFja2VuZAorICog
eGVuYnVzIGluZm8uIFRoZSAiZmVhdHVyZS1tYXgtaW5kaXJlY3Qtc2VnbWVudHMiIG5vZGUgY29u
dGFpbnMgdGhlIG1heGltdW0KKyAqIG51bWJlciBvZiBzZWdtZW50cyBhbGxvd2VkIGJ5IHRoZSBi
YWNrZW5kIHBlciByZXF1ZXN0LiBJZiB0aGUgbm9kZSBpcworICogcHJlc2VudCwgdGhlIGZyb250
ZW5kIG1pZ2h0IHVzZSBibGtpZl9yZXF1ZXN0X2luZGlyZWN0IHN0cnVjdHMgaW4gb3JkZXIgdG8K
KyAqIGlzc3VlIHJlcXVlc3RzIHdpdGggbW9yZSB0aGFuIEJMS0lGX01BWF9TRUdNRU5UU19QRVJf
UkVRVUVTVCAoMTEpLiBUaGUKKyAqIG1heGltdW0gbnVtYmVyIG9mIGluZGlyZWN0IHNlZ21lbnRz
IGlzIGZpeGVkIGJ5IHRoZSBiYWNrZW5kLCBidXQgdGhlCisgKiBmcm9udGVuZCBjYW4gaXNzdWUg
cmVxdWVzdHMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGlyZWN0IHNlZ21lbnRzIGFzIGxvbmcgYXMK
KyAqIGl0J3MgbGVzcyB0aGFuIHRoZSBudW1iZXIgcHJvdmlkZWQgYnkgdGhlIGJhY2tlbmQuIFRo
ZSBpbmRpcmVjdF9ncmVmcyBmaWVsZAorICogaW4gYmxraWZfcmVxdWVzdF9pbmRpcmVjdCBzaG91
bGQgYmUgZmlsbGVkIGJ5IHRoZSBmcm9udGVuZCB3aXRoIHRoZQorICogZ3JhbnQgcmVmZXJlbmNl
cyBvZiB0aGUgcGFnZXMgdGhhdCBhcmUgaG9sZGluZyB0aGUgaW5kaXJlY3Qgc2VnbWVudHMuCisg
KiBUaGVzZSBwYWdlcyBhcmUgZmlsbGVkIHdpdGggYW4gYXJyYXkgb2YgYmxraWZfcmVxdWVzdF9z
ZWdtZW50IHRoYXQgaG9sZCB0aGUKKyAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZWdtZW50cy4g
VGhlIG51bWJlciBvZiBpbmRpcmVjdCBwYWdlcyB0byB1c2UgaXMKKyAqIGRldGVybWluZWQgYnkg
dGhlIG51bWJlciBvZiBzZWdtZW50cyBhbiBpbmRpcmVjdCByZXF1ZXN0IGNvbnRhaW5zLiBFdmVy
eQorICogaW5kaXJlY3QgcGFnZSBjYW4gY29udGFpbiBhIG1heGltdW0gb2YKKyAqIChQQUdFX1NJ
WkUgLyBzaXplb2Yoc3RydWN0IGJsa2lmX3JlcXVlc3Rfc2VnbWVudCkpIHNlZ21lbnRzLCBzbyB0
bworICogY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaW5kaXJlY3QgcGFnZXMgdG8gdXNlIHdlIGhh
dmUgdG8gZG8KKyAqIGNlaWwoaW5kaXJlY3Rfc2VnbWVudHMgLyAoUEFHRV9TSVpFIC8gc2l6ZW9m
KHN0cnVjdCBibGtpZl9yZXF1ZXN0X3NlZ21lbnQpKSkuCisgKgorICogSWYgYSBiYWNrZW5kIGRv
ZXMgbm90IHJlY29nbml6ZSBCTEtJRl9PUF9JTkRJUkVDVCwgaXQgc2hvdWxkICpub3QqCisgKiBj
cmVhdGUgdGhlICJmZWF0dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50cyIgbm9kZSEKKyAqLworI2Rl
ZmluZSBCTEtJRl9PUF9JTkRJUkVDVCAgICAgICAgICA2CisKKy8qCisgKiBNYXhpbXVtIHNjYXR0
ZXIvZ2F0aGVyIHNlZ21lbnRzIHBlciByZXF1ZXN0LgorICogVGhpcyBpcyBjYXJlZnVsbHkgY2hv
c2VuIHNvIHRoYXQgc2l6ZW9mKGJsa2lmX3JpbmdfdCkgPD0gUEFHRV9TSVpFLgorICogTkIuIFRo
aXMgY291bGQgYmUgMTIgaWYgdGhlIHJpbmcgaW5kZXhlcyB3ZXJlbid0IHN0b3JlZCBpbiB0aGUg
c2FtZSBwYWdlLgorICovCisjZGVmaW5lIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCAx
MQorCisvKgorICogTWF4aW11bSBudW1iZXIgb2YgaW5kaXJlY3QgcGFnZXMgdG8gdXNlIHBlciBy
ZXF1ZXN0LgorICovCisjZGVmaW5lIEJMS0lGX01BWF9JTkRJUkVDVF9QQUdFU19QRVJfUkVRVUVT
VCA4CisKKy8qCisgKiBOQi4gZmlyc3Rfc2VjdCBhbmQgbGFzdF9zZWN0IGluIGJsa2lmX3JlcXVl
c3Rfc2VnbWVudCwgYXMgd2VsbCBhcworICogc2VjdG9yX251bWJlciBpbiBibGtpZl9yZXF1ZXN0
LCBhcmUgYWx3YXlzIGV4cHJlc3NlZCBpbiA1MTItYnl0ZSB1bml0cy4KKyAqIEhvd2V2ZXIgdGhl
eSBtdXN0IGJlIHByb3Blcmx5IGFsaWduZWQgdG8gdGhlIHJlYWwgc2VjdG9yIHNpemUgb2YgdGhl
CisgKiBwaHlzaWNhbCBkaXNrLCB3aGljaCBpcyByZXBvcnRlZCBpbiB0aGUgInBoeXNpY2FsLXNl
Y3Rvci1zaXplIiBub2RlIGluCisgKiB0aGUgYmFja2VuZCB4ZW5idXMgaW5mby4gQWxzbyB0aGUg
eGVuYnVzICJzZWN0b3JzIiBub2RlIGlzIGV4cHJlc3NlZCBpbgorICogNTEyLWJ5dGUgdW5pdHMu
CisgKi8KK3N0cnVjdCBibGtpZl9yZXF1ZXN0X3NlZ21lbnQgeworICAgIGdyYW50X3JlZl90IGdy
ZWY7ICAgICAgICAvKiByZWZlcmVuY2UgdG8gSS9PIGJ1ZmZlciBmcmFtZSAgICAgICAgKi8KKyAg
ICAvKiBAZmlyc3Rfc2VjdDogZmlyc3Qgc2VjdG9yIGluIGZyYW1lIHRvIHRyYW5zZmVyIChpbmNs
dXNpdmUpLiAgICovCisgICAgLyogQGxhc3Rfc2VjdDogbGFzdCBzZWN0b3IgaW4gZnJhbWUgdG8g
dHJhbnNmZXIgKGluY2x1c2l2ZSkuICAgICAqLworICAgIFVJTlQ4ICAgICBmaXJzdF9zZWN0LCBs
YXN0X3NlY3Q7Cit9OworCisvKgorICogU3RhcnRpbmcgcmluZyBlbGVtZW50IGZvciBhbnkgSS9P
IHJlcXVlc3QuCisgKi8KK3N0cnVjdCBibGtpZl9yZXF1ZXN0IHsKKyAgICBVSU5UOCAgICAgICAg
b3BlcmF0aW9uOyAgICAvKiBCTEtJRl9PUF8/Pz8gICAgICAgICAgICAgICAgICAgICAgICAgKi8K
KyAgICBVSU5UOCAgICAgICAgbnJfc2VnbWVudHM7ICAvKiBudW1iZXIgb2Ygc2VnbWVudHMgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICBibGtpZl92ZGV2X3QgICBoYW5kbGU7ICAgICAgIC8qIG9u
bHkgZm9yIHJlYWQvd3JpdGUgcmVxdWVzdHMgICAgICAgICAqLworICAgIFVJTlQ2NCAgICAgICBp
ZDsgICAgICAgICAgIC8qIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwICAqLwor
ICAgIGJsa2lmX3NlY3Rvcl90IHNlY3Rvcl9udW1iZXI7Lyogc3RhcnQgc2VjdG9yIGlkeCBvbiBk
aXNrIChyL3cgb25seSkgICovCisgICAgc3RydWN0IGJsa2lmX3JlcXVlc3Rfc2VnbWVudCBzZWdb
QkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKK307Cit0eXBlZGVmIHN0cnVjdCBibGtp
Zl9yZXF1ZXN0IGJsa2lmX3JlcXVlc3RfdDsKKworLyoKKyAqIENhc3QgdG8gdGhpcyBzdHJ1Y3R1
cmUgd2hlbiBibGtpZl9yZXF1ZXN0Lm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9ESVNDQVJECisgKiBz
aXplb2Yoc3RydWN0IGJsa2lmX3JlcXVlc3RfZGlzY2FyZCkgPD0gc2l6ZW9mKHN0cnVjdCBibGtp
Zl9yZXF1ZXN0KQorICovCitzdHJ1Y3QgYmxraWZfcmVxdWVzdF9kaXNjYXJkIHsKKyAgICBVSU5U
OCAgICAgICAgb3BlcmF0aW9uOyAgICAvKiBCTEtJRl9PUF9ESVNDQVJEICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBVSU5UOCAgICAgICAgZmxhZzsgICAgICAgICAvKiBCTEtJRl9ESVNDQVJE
X1NFQ1VSRSBvciB6ZXJvICAgICAgICAgKi8KKyNkZWZpbmUgQkxLSUZfRElTQ0FSRF9TRUNVUkUg
KDE8PDApICAvKiBpZ25vcmVkIGlmIGRpc2NhcmQtc2VjdXJlPTAgICAgICAqLworICAgIGJsa2lm
X3ZkZXZfdCAgIGhhbmRsZTsgICAgICAgLyogc2FtZSBhcyBmb3IgcmVhZC93cml0ZSByZXF1ZXN0
cyAgICAgICovCisgICAgVUlOVDY0ICAgICAgIGlkOyAgICAgICAgICAgLyogcHJpdmF0ZSBndWVz
dCB2YWx1ZSwgZWNob2VkIGluIHJlc3AgICovCisgICAgYmxraWZfc2VjdG9yX3Qgc2VjdG9yX251
bWJlcjsvKiBzdGFydCBzZWN0b3IgaWR4IG9uIGRpc2sgICAgICAgICAgICAgKi8KKyAgICBVSU5U
NjQgICAgICAgbnJfc2VjdG9yczsgICAvKiBudW1iZXIgb2YgY29udGlndW91cyBzZWN0b3JzIHRv
IGRpc2NhcmQqLworfTsKK3R5cGVkZWYgc3RydWN0IGJsa2lmX3JlcXVlc3RfZGlzY2FyZCBibGtp
Zl9yZXF1ZXN0X2Rpc2NhcmRfdDsKKworc3RydWN0IGJsa2lmX3JlcXVlc3RfaW5kaXJlY3Qgewor
ICAgIFVJTlQ4ICAgICAgICBvcGVyYXRpb247ICAgIC8qIEJMS0lGX09QX0lORElSRUNUICAgICAg
ICAgICAgICAgICAgICAqLworICAgIFVJTlQ4ICAgICAgICBpbmRpcmVjdF9vcDsgIC8qIEJMS0lG
X09QX3tSRUFEL1dSSVRFfSAgICAgICAgICAgICAgICAqLworICAgIFVJTlQxNiAgICAgICBucl9z
ZWdtZW50czsgIC8qIG51bWJlciBvZiBzZWdtZW50cyAgICAgICAgICAgICAgICAgICAqLworICAg
IFVJTlQ2NCAgICAgICBpZDsgICAgICAgICAgIC8qIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9l
ZCBpbiByZXNwICAqLworICAgIGJsa2lmX3NlY3Rvcl90IHNlY3Rvcl9udW1iZXI7Lyogc3RhcnQg
c2VjdG9yIGlkeCBvbiBkaXNrIChyL3cgb25seSkgICovCisgICAgYmxraWZfdmRldl90ICAgaGFu
ZGxlOyAgICAgICAvKiBzYW1lIGFzIGZvciByZWFkL3dyaXRlIHJlcXVlc3RzICAgICAgKi8KKyAg
ICBncmFudF9yZWZfdCAgICBpbmRpcmVjdF9ncmVmc1tCTEtJRl9NQVhfSU5ESVJFQ1RfUEFHRVNf
UEVSX1JFUVVFU1RdOworI2lmZGVmIF9faTM4Nl9fCisgICAgVUlOVDY0ICAgICAgIHBhZDsgICAg
ICAgICAgLyogTWFrZSBpdCA2NCBieXRlIGFsaWduZWQgb24gaTM4NiAgICAgICovCisjZW5kaWYK
K307Cit0eXBlZGVmIHN0cnVjdCBibGtpZl9yZXF1ZXN0X2luZGlyZWN0IGJsa2lmX3JlcXVlc3Rf
aW5kaXJlY3RfdDsKKworc3RydWN0IGJsa2lmX3Jlc3BvbnNlIHsKKyAgICBVSU5UNjQgICAgICAg
IGlkOyAgICAgICAgICAgICAgLyogY29waWVkIGZyb20gcmVxdWVzdCAqLworICAgIFVJTlQ4ICAg
ICAgICAgb3BlcmF0aW9uOyAgICAgICAvKiBjb3BpZWQgZnJvbSByZXF1ZXN0ICovCisgICAgSU5U
MTYgICAgICAgICBzdGF0dXM7ICAgICAgICAgIC8qIEJMS0lGX1JTUF8/Pz8gICAgICAgKi8KK307
Cit0eXBlZGVmIHN0cnVjdCBibGtpZl9yZXNwb25zZSBibGtpZl9yZXNwb25zZV90OworCisvKgor
ICogU1RBVFVTIFJFVFVSTiBDT0RFUy4KKyAqLworIC8qIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVk
IChvbmx5IGhhcHBlbnMgb24gYmFycmllciB3cml0ZXMpLiAqLworI2RlZmluZSBCTEtJRl9SU1Bf
RU9QTk9UU1VQUCAgLTIKKyAvKiBPcGVyYXRpb24gZmFpbGVkIGZvciBzb21lIHVuc3BlY2lmaWVk
IHJlYXNvbiAoLUVJTykuICovCisjZGVmaW5lIEJMS0lGX1JTUF9FUlJPUiAgICAgICAtMQorIC8q
IE9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAqLworI2RlZmluZSBCTEtJRl9SU1Bf
T0tBWSAgICAgICAgIDAKKworLyoKKyAqIEdlbmVyYXRlIGJsa2lmIHJpbmcgc3RydWN0dXJlcyBh
bmQgdHlwZXMuCisgKi8KK0RFRklORV9SSU5HX1RZUEVTKGJsa2lmLCBzdHJ1Y3QgYmxraWZfcmVx
dWVzdCwgc3RydWN0IGJsa2lmX3Jlc3BvbnNlKTsKKworI2RlZmluZSBWRElTS19DRFJPTSAgICAg
ICAgMHgxCisjZGVmaW5lIFZESVNLX1JFTU9WQUJMRSAgICAweDIKKyNkZWZpbmUgVkRJU0tfUkVB
RE9OTFkgICAgIDB4NAorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX0JMS0lGX0hfXyAqLwor
CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi
QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRh
YnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9J
bmR1c3RyeVN0YW5kYXJkL1hlbi9pby9wcm90b2NvbHMuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi9pby9wcm90b2NvbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MGIxOTZiCi0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0lu
ZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3Byb3RvY29scy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKyAqIHByb3RvY29scy5oCisgKiAKKyAqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0
cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK
KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZu
ZGVmIF9fWEVOX1BST1RPQ09MU19IX18KKyNkZWZpbmUgX19YRU5fUFJPVE9DT0xTX0hfXworCisj
ZGVmaW5lIFhFTl9JT19QUk9UT19BQklfWDg2XzMyICAgICAieDg2XzMyLWFiaSIKKyNkZWZpbmUg
WEVOX0lPX1BST1RPX0FCSV9YODZfNjQgICAgICJ4ODZfNjQtYWJpIgorI2RlZmluZSBYRU5fSU9f
UFJPVE9fQUJJX0FSTSAgICAgICAgImFybS1hYmkiCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKQor
IyBkZWZpbmUgWEVOX0lPX1BST1RPX0FCSV9OQVRJVkUgWEVOX0lPX1BST1RPX0FCSV9YODZfMzIK
KyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyMgZGVmaW5lIFhFTl9JT19QUk9UT19BQklfTkFU
SVZFIFhFTl9JT19QUk9UT19BQklfWDg2XzY0CisjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRl
ZmluZWQoX19hYXJjaDY0X18pCisjIGRlZmluZSBYRU5fSU9fUFJPVE9fQUJJX05BVElWRSBYRU5f
SU9fUFJPVE9fQUJJX0FSTQorI2Vsc2UKKyMgZXJyb3IgYXJjaCBmaXh1cCBuZWVkZWQgaGVyZQor
I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh
bmRhcmQvWGVuL2lvL3JpbmcuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9pby9yaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlOWVhMAot
LS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9p
by9yaW5nLmgKQEAgLTAsMCArMSwzMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHJp
bmcuaAorICogCisgKiBTaGFyZWQgcHJvZHVjZXItY29uc3VtZXIgcmluZyBtYWNyb3MuCisgKgor
ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw
ZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICog
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg
KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRX
QVJFLgorICoKKyAqIFRpbSBEZWVnYW4gYW5kIEFuZHJldyBXYXJmaWVsZCBOb3ZlbWJlciAyMDA0
LgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCisjZGVmaW5lIF9fWEVO
X1BVQkxJQ19JT19SSU5HX0hfXworCisjaW5jbHVkZSAiLi4veGVuLWNvbXBhdC5oIgorCisjaWYg
X19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDgKKyNkZWZpbmUgeGVuX21iKCkg
IG1iKCkKKyNkZWZpbmUgeGVuX3JtYigpIHJtYigpCisjZGVmaW5lIHhlbl93bWIoKSB3bWIoKQor
I2VuZGlmCisKK3R5cGVkZWYgVUlOVDMyIFJJTkdfSURYOworCisvKiBSb3VuZCBhIDMyLWJpdCB1
bnNpZ25lZCBjb25zdGFudCBkb3duIHRvIHRoZSBuZWFyZXN0IHBvd2VyIG9mIHR3by4gKi8KKyNk
ZWZpbmUgX19SRDIoX3gpICAoKChfeCkgJiAweDAwMDAwMDAyKSA/IDB4MiAgICAgICAgICAgICAg
ICAgIDogKChfeCkgJiAweDEpKQorI2RlZmluZSBfX1JENChfeCkgICgoKF94KSAmIDB4MDAwMDAw
MGMpID8gX19SRDIoKF94KT4+Mik8PDIgICAgOiBfX1JEMihfeCkpCisjZGVmaW5lIF9fUkQ4KF94
KSAgKCgoX3gpICYgMHgwMDAwMDBmMCkgPyBfX1JENCgoX3gpPj40KTw8NCAgICA6IF9fUkQ0KF94
KSkKKyNkZWZpbmUgX19SRDE2KF94KSAoKChfeCkgJiAweDAwMDBmZjAwKSA/IF9fUkQ4KChfeCk+
PjgpPDw4ICAgIDogX19SRDgoX3gpKQorI2RlZmluZSBfX1JEMzIoX3gpICgoKF94KSAmIDB4ZmZm
ZjAwMDApID8gX19SRDE2KChfeCk+PjE2KTw8MTYgOiBfX1JEMTYoX3gpKQorCisvKgorICogQ2Fs
Y3VsYXRlIHNpemUgb2YgYSBzaGFyZWQgcmluZywgZ2l2ZW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBz
cGFjZSBmb3IgdGhlCisgKiByaW5nIGFuZCBpbmRleGVzIChfc3opLCBhbmQgdGhlIG5hbWUgdGFn
IG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZS4KKyAqIEEgcmluZyBjb250YWlucyBh
cyBtYW55IGVudHJpZXMgYXMgd2lsbCBmaXQsIHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCAK
KyAqIHBvd2VyIG9mIHR3byAoc28gd2UgY2FuIG1hc2sgd2l0aCAoc2l6ZS0xKSB0byBsb29wIGFy
b3VuZCkuCisgKi8KKyNkZWZpbmUgX19DT05TVF9SSU5HX1NJWkUoX3MsIF9zeikgXAorICAgIChf
X1JEMzIoKChfc3opIC0gb2Zmc2V0b2Yoc3RydWN0IF9zIyNfc3JpbmcsIHJpbmcpKSAvIFwKKwkg
ICAgc2l6ZW9mKCgoc3RydWN0IF9zIyNfc3JpbmcgKikwKS0+cmluZ1swXSkpKQorLyoKKyAqIFRo
ZSBzYW1lIGZvciBwYXNzaW5nIGluIGFuIGFjdHVhbCBwb2ludGVyIGluc3RlYWQgb2YgYSBuYW1l
IHRhZy4KKyAqLworI2RlZmluZSBfX1JJTkdfU0laRShfcywgX3N6KSBcCisgICAgKF9fUkQzMigo
KF9zeikgLSAoSU5UTikoX3MpLT5yaW5nICsgKElOVE4pKF9zKSkgLyBzaXplb2YoKF9zKS0+cmlu
Z1swXSkpKQorCisvKgorICogTWFjcm9zIHRvIG1ha2UgdGhlIGNvcnJlY3QgQyBkYXRhdHlwZXMg
Zm9yIGEgbmV3IGtpbmQgb2YgcmluZy4KKyAqIAorICogVG8gbWFrZSBhIG5ldyByaW5nIGRhdGF0
eXBlLCB5b3UgbmVlZCB0byBoYXZlIHR3byBtZXNzYWdlIHN0cnVjdHVyZXMsCisgKiBsZXQncyBz
YXkgcmVxdWVzdF90LCBhbmQgcmVzcG9uc2VfdCBhbHJlYWR5IGRlZmluZWQuCisgKgorICogSW4g
YSBoZWFkZXIgd2hlcmUgeW91IHdhbnQgdGhlIHJpbmcgZGF0YXR5cGUgZGVjbGFyZWQsIHlvdSB0
aGVuIGRvOgorICoKKyAqICAgICBERUZJTkVfUklOR19UWVBFUyhteXRhZywgcmVxdWVzdF90LCBy
ZXNwb25zZV90KTsKKyAqCisgKiBUaGVzZSBleHBhbmQgb3V0IHRvIGdpdmUgeW91IGEgc2V0IG9m
IHR5cGVzLCBhcyB5b3UgY2FuIHNlZSBiZWxvdy4KKyAqIFRoZSBtb3N0IGltcG9ydGFudCBvZiB0
aGVzZSBhcmU6CisgKiAKKyAqICAgICBteXRhZ19zcmluZ190ICAgICAgLSBUaGUgc2hhcmVkIHJp
bmcuCisgKiAgICAgbXl0YWdfZnJvbnRfcmluZ190IC0gVGhlICdmcm9udCcgaGFsZiBvZiB0aGUg
cmluZy4KKyAqICAgICBteXRhZ19iYWNrX3JpbmdfdCAgLSBUaGUgJ2JhY2snIGhhbGYgb2YgdGhl
IHJpbmcuCisgKgorICogVG8gaW5pdGlhbGl6ZSBhIHJpbmcgaW4geW91ciBjb2RlIHlvdSBuZWVk
IHRvIGtub3cgdGhlIGxvY2F0aW9uIGFuZCBzaXplCisgKiBvZiB0aGUgc2hhcmVkIG1lbW9yeSBh
cmVhIChQQUdFX1NJWkUsIGZvciBpbnN0YW5jZSkuIFRvIGluaXRpYWxpc2UKKyAqIHRoZSBmcm9u
dCBoYWxmOgorICoKKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgZnJvbnRfcmluZzsKKyAqICAg
ICBTSEFSRURfUklOR19JTklUKChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2UpOworICogICAg
IEZST05UX1JJTkdfSU5JVCgmZnJvbnRfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFn
ZSwgUEFHRV9TSVpFKTsKKyAqCisgKiBJbml0aWFsaXppbmcgdGhlIGJhY2sgZm9sbG93cyBzaW1p
bGFybHkgKG5vdGUgdGhhdCBvbmx5IHRoZSBmcm9udAorICogaW5pdGlhbGl6ZXMgdGhlIHNoYXJl
ZCByaW5nKToKKyAqCisgKiAgICAgbXl0YWdfYmFja19yaW5nX3QgYmFja19yaW5nOworICogICAg
IEJBQ0tfUklOR19JTklUKCZiYWNrX3JpbmcsIChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2Us
IFBBR0VfU0laRSk7CisgKi8KKworI2RlZmluZSBERUZJTkVfUklOR19UWVBFUyhfX25hbWUsIF9f
cmVxX3QsIF9fcnNwX3QpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
LyogU2hhcmVkIHJpbmcgZW50cnkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAordW5pb24gX19uYW1lIyNfc3JpbmdfZW50cnkgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcmVxX3QgcmVxOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IF9fcnNwX3QgcnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLyogU2hh
cmVkIHJpbmcgcGFnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorc3RydWN0IF9fbmFtZSMjX3NyaW5nIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJlcV9wcm9kLCByZXFf
ZXZlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdf
SURYIHJzcF9wcm9kLCByc3BfZXZlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
VUlOVDggc21hcnRwb2xsX2FjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSBuZXRpZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFVJTlQ4
IG1zZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIH0gdGFwaWZfdXNlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIFVJTlQ4IHB2dF9wYWRbNF07ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gcHJpdmF0ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFVJ
TlQ4IF9fcGFkWzQ0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSByaW5nWzFdOyAvKiB2YXJp
YWJsZS1sZW5ndGggKi8gICAgICAgICAgIFwKK307ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKy8qICJGcm9udCIgZW5kJ3MgcHJpdmF0ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKK3N0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBSSU5HX0lEWCBy
ZXFfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBSSU5HX0lEWCByc3BfY29uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBVSU5UMzIgbnJfZW50czsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdHJ1Y3QgX19uYW1lIyNfc3Jp
bmcgKnNyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK307ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy8qICJCYWNrIiBlbmQncyBwcml2YXRlIHZh
cmlhYmxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0cnVjdCBf
X25hbWUjI19iYWNrX3JpbmcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBSSU5HX0lEWCByc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBSSU5HX0lEWCByZXFfY29uczsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBVSU5UMzIg
bnJfZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgKnNyaW5nOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKK307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy8q
IFN5bnRhY3RpYyBzdWdhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKK3R5cGVkZWYgc3RydWN0IF9fbmFtZSMjX3NyaW5nIF9fbmFtZSMjX3Ny
aW5nX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3R5cGVkZWYgc3RydWN0IF9fbmFtZSMj
X2Zyb250X3JpbmcgX19uYW1lIyNfZnJvbnRfcmluZ190OyAgICAgICAgICAgICAgIFwKK3R5cGVk
ZWYgc3RydWN0IF9fbmFtZSMjX2JhY2tfcmluZyBfX25hbWUjI19iYWNrX3JpbmdfdAorCisvKgor
ICogTWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgcmluZ3MuCisgKiAKKyAqIEZST05UX1JJTkdfd2hh
dGV2ZXIgd29ya3Mgb24gdGhlICJmcm9udCBlbmQiIG9mIGEgcmluZzogaGVyZSAKKyAqIHJlcXVl
c3RzIGFyZSBwdXNoZWQgb24gdG8gdGhlIHJpbmcgYW5kIHJlc3BvbnNlcyB0YWtlbiBvZmYgaXQu
CisgKiAKKyAqIEJBQ0tfUklOR193aGF0ZXZlciB3b3JrcyBvbiB0aGUgImJhY2sgZW5kIiBvZiBh
IHJpbmc6IGhlcmUgCisgKiByZXF1ZXN0cyBhcmUgdGFrZW4gb2ZmIHRoZSByaW5nIGFuZCByZXNw
b25zZXMgcHV0IG9uLgorICogCisgKiBOLkIuIHRoZXNlIG1hY3JvcyBkbyBOTyBJTlRFUkxPQ0tT
IE9SIEZMT1cgQ09OVFJPTC4gCisgKiBUaGlzIGlzIE9LIGluIDEtZm9yLTEgcmVxdWVzdC1yZXNw
b25zZSBzaXR1YXRpb25zIHdoZXJlIHRoZSAKKyAqIHJlcXVlc3RvciAoZnJvbnQgZW5kKSBuZXZl
ciBoYXMgbW9yZSB0aGFuIFJJTkdfU0laRSgpLTEKKyAqIG91dHN0YW5kaW5nIHJlcXVlc3RzLgor
ICovCisKKy8qIEluaXRpYWxpc2luZyBlbXB0eSByaW5ncyAqLworI2RlZmluZSBTSEFSRURfUklO
R19JTklUKF9zKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIChfcyktPnJlcV9wcm9kICA9IChfcyktPnJzcF9wcm9kICA9IDA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIChfcyktPnJlcV9ldmVudCA9IChfcyktPnJzcF9ldmVudCA9
IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChWT0lEKVplcm9NZW0oKF9z
KS0+cHJpdmF0ZS5wdnRfcGFkLCBzaXplb2YoKF9zKS0+cHJpdmF0ZS5wdnRfcGFkKSk7IFwKKyAg
ICAoVk9JRClaZXJvTWVtKChfcyktPl9fcGFkLCBzaXplb2YoKF9zKS0+X19wYWQpKTsgICAgICAg
ICAgICAgICAgICBcCit9IHdoaWxlKDApCisKKyNkZWZpbmUgRlJPTlRfUklOR19JTklUKF9yLCBf
cywgX19zaXplKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5y
ZXFfcHJvZF9wdnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAoX3IpLT5yc3BfY29ucyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5ucl9lbnRzID0gX19SSU5HX1NJWkUo
X3MsIF9fc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5zcmlu
ZyA9IChfcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQkFDS19SSU5HX0lOSVQoX3IsIF9zLCBfX3NpemUp
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5yc3BfcHJvZF9w
dnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAoX3IpLT5yZXFfY29ucyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5ucl9lbnRzID0gX19SSU5HX1NJWkUoX3MsIF9fc2l6
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3IpLT5zcmluZyA9IChfcyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hp
bGUgKDApCisKKy8qIEhvdyBiaWcgaXMgdGhpcyByaW5nPyAqLworI2RlZmluZSBSSU5HX1NJWkUo
X3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICgoX3IpLT5ucl9lbnRzKQorCisvKiBOdW1iZXIgb2YgZnJlZSByZXF1ZXN0cyAoZm9yIHVz
ZSBvbiBmcm9udCBzaWRlIG9ubHkpLiAqLworI2RlZmluZSBSSU5HX0ZSRUVfUkVRVUVTVFMoX3Ip
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChSSU5HX1NJ
WkUoX3IpIC0gKChfciktPnJlcV9wcm9kX3B2dCAtIChfciktPnJzcF9jb25zKSkKKworLyogVGVz
dCBpZiB0aGVyZSBpcyBhbiBlbXB0eSBzbG90IGF2YWlsYWJsZSBvbiB0aGUgZnJvbnQgcmluZy4K
KyAqIChUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmcm9tIHRoZSBmcm9udC4gKQorICovCisjZGVm
aW5lIFJJTkdfRlVMTChfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgPT0gMCkKKworLyogVGVz
dCBpZiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgbWVzc2FnZXMgdG8gYmUgcHJvY2Vzc2VkIG9uIGEg
cmluZy4gKi8KKyNkZWZpbmUgUklOR19IQVNfVU5DT05TVU1FRF9SRVNQT05TRVMoX3IpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKF9yKS0+c3JpbmctPnJzcF9wcm9kIC0g
KF9yKS0+cnNwX2NvbnMpCisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBSSU5HX0hBU19VTkNP
TlNVTUVEX1JFUVVFU1RTKF9yKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IFVJTlQzMiByZXEgPSAoX3IpLT5zcmluZy0+cmVxX3Byb2QgLSAoX3IpLT5yZXFfY29uczsgICAg
ICAgICAgXAorICAgIFVJTlQzMiByc3AgPSBSSU5HX1NJWkUoX3IpIC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3Bf
cHJvZF9wdnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJlcSA8IHJzcCA/IHJl
cSA6IHJzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
fSkKKyNlbHNlCisvKiBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aG91dCB0aGUgbmljZSBHQ0MgKHsg
Li4uIH0pIHN5bnRheC4gKi8KKyNkZWZpbmUgUklOR19IQVNfVU5DT05TVU1FRF9SRVFVRVNUUyhf
cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKCgoX3IpLT5zcmluZy0+
cmVxX3Byb2QgLSAoX3IpLT5yZXFfY29ucykgPCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIChSSU5HX1NJWkUoX3IpIC0gKChfciktPnJlcV9jb25zIC0gKF9yKS0+cnNwX3Byb2RfcHZ0
KSkpID8gICAgICAgIFwKKyAgICAgKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9j
b25zKSA6ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFJJTkdfU0laRShfcikgLSAo
KF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3BfcHJvZF9wdnQpKSkKKyNlbmRpZgorCisvKiBEaXJl
Y3QgYWNjZXNzIHRvIGluZGl2aWR1YWwgcmluZyBlbGVtZW50cywgYnkgaW5kZXguICovCisjZGVm
aW5lIFJJTkdfR0VUX1JFUVVFU1QoX3IsIF9pZHgpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKCYoKF9yKS0+c3JpbmctPnJpbmdbKChfaWR4KSAmIChSSU5HX1NJ
WkUoX3IpIC0gMSkpXS5yZXEpKQorCisjZGVmaW5lIFJJTkdfR0VUX1JFU1BPTlNFKF9yLCBfaWR4
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCYoKF9yKS0+c3Jp
bmctPnJpbmdbKChfaWR4KSAmIChSSU5HX1NJWkUoX3IpIC0gMSkpXS5yc3ApKQorCisvKiBMb29w
IHRlcm1pbmF0aW9uIGNvbmRpdGlvbjogV291bGQgdGhlIHNwZWNpZmllZCBpbmRleCBvdmVyZmxv
dyB0aGUgcmluZz8gKi8KKyNkZWZpbmUgUklOR19SRVFVRVNUX0NPTlNfT1ZFUkZMT1coX3IsIF9j
b25zKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChfY29ucykgLSAoX3IpLT5y
c3BfcHJvZF9wdnQpID49IFJJTkdfU0laRShfcikpCisKKy8qIElsbC1iZWhhdmVkIGZyb250ZW5k
IGRldGVybWluYXRpb246IENhbiB0aGVyZSBiZSB0aGlzIG1hbnkgcmVxdWVzdHM/ICovCisjZGVm
aW5lIFJJTkdfUkVRVUVTVF9QUk9EX09WRVJGTE9XKF9yLCBfcHJvZCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKCgoX3Byb2QpIC0gKF9yKS0+cnNwX3Byb2RfcHZ0KSA+IFJJTkdf
U0laRShfcikpCisKKyNkZWZpbmUgUklOR19QVVNIX1JFUVVFU1RTKF9yKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB4ZW5fd21iKCk7IC8qIGJhY2sgc2Vl
cyByZXF1ZXN0cyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovIFwKKyAgICAoX3Ip
LT5zcmluZy0+cmVxX3Byb2QgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgUklOR19QVVNIX1JFU1BPTlNFUyhfcikg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB4ZW5fd21iKCk7
IC8qIGZyb250IHNlZXMgcmVzcHMgL2JlZm9yZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyAg
IFwKKyAgICAoX3IpLT5zcmluZy0+cnNwX3Byb2QgPSAoX3IpLT5yc3BfcHJvZF9wdnQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qCisgKiBOb3RpZmljYXRpb24g
aG9sZC1vZmYgKHJlcV9ldmVudCBhbmQgcnNwX2V2ZW50KToKKyAqIAorICogV2hlbiBxdWV1ZWlu
ZyByZXF1ZXN0cyBvciByZXNwb25zZXMgb24gYSBzaGFyZWQgcmluZywgaXQgbWF5IG5vdCBhbHdh
eXMgYmUKKyAqIG5lY2Vzc2FyeSB0byBub3RpZnkgdGhlIHJlbW90ZSBlbmQuIEZvciBleGFtcGxl
LCBpZiByZXF1ZXN0cyBhcmUgaW4gZmxpZ2h0CisgKiBpbiBhIGJhY2tlbmQsIHRoZSBmcm9udCBt
YXkgYmUgYWJsZSB0byBxdWV1ZSBmdXJ0aGVyIHJlcXVlc3RzIHdpdGhvdXQKKyAqIG5vdGlmeWlu
ZyB0aGUgYmFjayAoaWYgdGhlIGJhY2sgY2hlY2tzIGZvciBuZXcgcmVxdWVzdHMgd2hlbiBpdCBx
dWV1ZXMKKyAqIHJlc3BvbnNlcykuCisgKiAKKyAqIFdoZW4gZW5xdWV1aW5nIHJlcXVlc3RzIG9y
IHJlc3BvbnNlczoKKyAqIAorICogIFVzZSBSSU5HX1BVU0hfe1JFUVVFU1RTLFJFU1BPTlNFU31f
QU5EX0NIRUNLX05PVElGWSgpLiBUaGUgc2Vjb25kIGFyZ3VtZW50CisgKiAgaXMgYSBib29sZWFu
IHJldHVybiB2YWx1ZS4gVHJ1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjZWl2ZXIgcmVxdWlyZXMg
YW4KKyAqICBhc3luY2hyb25vdXMgbm90aWZpY2F0aW9uLgorICogCisgKiBBZnRlciBkZXF1ZXVp
bmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzIChiZWZvcmUgc2xlZXBpbmcgdGhlIGNvbm5lY3Rpb24p
OgorICogCisgKiAgVXNlIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkgb3IgUklOR19G
SU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkuCisgKiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBh
IGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVlIGluZGljYXRlcyB0aGF0IHRoZXJlCisgKiAgYXJl
IHBlbmRpbmcgbWVzc2FnZXMgb24gdGhlIHJpbmcgKGkuZS4sIHRoZSBjb25uZWN0aW9uIHNob3Vs
ZCBub3QgYmUgcHV0CisgKiAgdG8gc2xlZXApLgorICogCisgKiAgVGhlc2UgbWFjcm9zIHdpbGwg
c2V0IHRoZSByZXFfZXZlbnQvcnNwX2V2ZW50IGZpZWxkIHRvIHRyaWdnZXIgYQorICogIG5vdGlm
aWNhdGlvbiBvbiB0aGUgdmVyeSBuZXh0IG1lc3NhZ2UgdGhhdCBpcyBlbnF1ZXVlZC4gSWYgeW91
IHdhbnQgdG8KKyAqICBjcmVhdGUgYmF0Y2hlcyBvZiB3b3JrIChpLmUuLCBvbmx5IHJlY2VpdmUg
YSBub3RpZmljYXRpb24gYWZ0ZXIgc2V2ZXJhbAorICogIG1lc3NhZ2VzIGhhdmUgYmVlbiBlbnF1
ZXVlZCkgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSBhIGN1c3RvbWlzZWQKKyAqICB2ZXJz
aW9uIG9mIHRoZSBGSU5BTF9DSEVDSyBtYWNybyBpbiB5b3VyIG93biBjb2RlLCB3aGljaCBzZXRz
IHRoZSBldmVudAorICogIGZpZWxkIGFwcHJvcHJpYXRlbHkuCisgKi8KKworI2RlZmluZSBSSU5H
X1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWShfciwgX25vdGlmeSkgZG8geyAgICAgICAg
ICAgXAorICAgIFJJTkdfSURYIF9fb2xkID0gKF9yKS0+c3JpbmctPnJlcV9wcm9kOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIF9fbmV3ID0gKF9yKS0+cmVxX3By
b2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl93bWIoKTsg
LyogYmFjayBzZWVzIHJlcXVlc3RzIC9iZWZvcmUvIHVwZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8g
XAorICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9IF9fbmV3OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl9tYigpOyAvKiBiYWNrIHNlZXMgbmV3IHJlcXVl
c3RzIC9iZWZvcmUvIHdlIGNoZWNrIHJlcV9ldmVudCAqLyAgXAorICAgIChfbm90aWZ5KSA9ICgo
UklOR19JRFgpKF9fbmV3IC0gKF9yKS0+c3JpbmctPnJlcV9ldmVudCkgPCAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAoUklOR19JRFgpKF9fbmV3IC0gX19vbGQpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBSSU5HX1BVU0hfUkVTUE9O
U0VTX0FORF9DSEVDS19OT1RJRlkoX3IsIF9ub3RpZnkpIGRvIHsgICAgICAgICAgXAorICAgIFJJ
TkdfSURYIF9fb2xkID0gKF9yKS0+c3JpbmctPnJzcF9wcm9kOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFJJTkdfSURYIF9fbmV3ID0gKF9yKS0+cnNwX3Byb2RfcHZ0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2Vl
cyByZXNwcyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAorICAgIChfcikt
PnNyaW5nLT5yc3BfcHJvZCA9IF9fbmV3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHhlbl9tYigpOyAvKiBmcm9udCBzZWVzIG5ldyByZXNwcyAvYmVmb3JlLyB3
ZSBjaGVjayByc3BfZXZlbnQgKi8gICAgXAorICAgIChfbm90aWZ5KSA9ICgoUklOR19JRFgpKF9f
bmV3IC0gKF9yKS0+c3JpbmctPnJzcF9ldmVudCkgPCAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAoUklOR19JRFgpKF9fbmV3IC0gX19vbGQpKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNU
UyhfciwgX3dvcmtfdG9fZG8pIGRvIHsgICAgICAgICAgICAgXAorICAgIChfd29ya190b19kbykg
PSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKF9yKTsgICAgICAgICAgICAgICAgICAgXAor
ICAgIGlmIChfd29ya190b19kbykgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIChfciktPnNyaW5nLT5yZXFfZXZlbnQgPSAoX3IpLT5yZXFf
Y29ucyArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl9tYigpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IChfd29ya190b19kbykgPSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKF9yKTsgICAgICAg
ICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBSSU5HX0ZJTkFMX0NIRUNLX0ZP
Ul9SRVNQT05TRVMoX3IsIF93b3JrX3RvX2RvKSBkbyB7ICAgICAgICAgICAgXAorICAgIChfd29y
a190b19kbykgPSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFU1BPTlNFUyhfcik7ICAgICAgICAgICAg
ICAgICAgXAorICAgIGlmIChfd29ya190b19kbykgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnNyaW5nLT5yc3BfZXZlbnQgPSAo
X3IpLT5yc3BfY29ucyArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl9tYigp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIChfd29ya190b19kbykgPSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFU1BPTlNFUyhf
cik7ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2VuZGlmIC8qIF9fWEVOX1BV
QkxJQ19JT19SSU5HX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTog
QworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13
aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdp
dCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby94ZW5idXMuaCBiL092
bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby94ZW5idXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjdmOWRiCi0tLSAvZGV2L251bGwKKysrIGIvT3Zt
ZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3hlbmJ1cy5oCkBAIC0wLDAgKzEs
ODAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogeGVuYnVzLmgKKyAqCisgKiBYZW5idXMg
cHJvdG9jb2wgZGV0YWlscy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBt
b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAq
IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo
b20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisg
KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IFhl
blNvdXJjZSBMdGQuCisgKi8KKworI2lmbmRlZiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSAorI2Rl
ZmluZSBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSAorCisvKgorICogVGhlIHN0YXRlIG9mIGVpdGhl
ciBlbmQgb2YgdGhlIFhlbmJ1cywgaS5lLiB0aGUgY3VycmVudCBjb21tdW5pY2F0aW9uCisgKiBz
dGF0dXMgb2YgaW5pdGlhbGlzYXRpb24gYWNyb3NzIHRoZSBidXMuICBTdGF0ZXMgaGVyZSBpbXBs
eSBub3RoaW5nIGFib3V0CisgKiB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0
aGUgZHJpdmVyIGFuZCB0aGUga2VybmVsJ3MgZGV2aWNlCisgKiBsYXllcnMuCisgKi8KK2VudW0g
eGVuYnVzX3N0YXRlIHsKKyAgICBYZW5idXNTdGF0ZVVua25vd24gICAgICAgPSAwLAorCisgICAg
WGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgID0gMSwKKworICAgIC8qCisgICAgICogSW5pdFdhaXQ6
IEZpbmlzaGVkIGVhcmx5IGluaXRpYWxpc2F0aW9uIGJ1dCB3YWl0aW5nIGZvciBpbmZvcm1hdGlv
bgorICAgICAqIGZyb20gdGhlIHBlZXIgb3IgaG90cGx1ZyBzY3JpcHRzLgorICAgICAqLworICAg
IFhlbmJ1c1N0YXRlSW5pdFdhaXQgICAgICA9IDIsCisKKyAgICAvKgorICAgICAqIEluaXRpYWxp
c2VkOiBXYWl0aW5nIGZvciBhIGNvbm5lY3Rpb24gZnJvbSB0aGUgcGVlci4KKyAgICAgKi8KKyAg
ICBYZW5idXNTdGF0ZUluaXRpYWxpc2VkICAgPSAzLAorCisgICAgWGVuYnVzU3RhdGVDb25uZWN0
ZWQgICAgID0gNCwKKworICAgIC8qCisgICAgICogQ2xvc2luZzogVGhlIGRldmljZSBpcyBiZWlu
ZyBjbG9zZWQgZHVlIHRvIGFuIGVycm9yIG9yIGFuIHVucGx1ZyBldmVudC4KKyAgICAgKi8KKyAg
ICBYZW5idXNTdGF0ZUNsb3NpbmcgICAgICAgPSA1LAorCisgICAgWGVuYnVzU3RhdGVDbG9zZWQg
ICAgICAgID0gNiwKKworICAgIC8qCisgICAgICogUmVjb25maWd1cmluZzogVGhlIGRldmljZSBp
cyBiZWluZyByZWNvbmZpZ3VyZWQuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVSZWNvbmZpZ3Vy
aW5nID0gNywKKworICAgIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkICA9IDgKK307Cit0eXBlZGVm
IGVudW0geGVuYnVzX3N0YXRlIFhlbmJ1c1N0YXRlOworCisjZW5kaWYgLyogX1hFTl9QVUJMSUNf
SU9fWEVOQlVTX0ggKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAq
IGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6
IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9P
dm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8veHNfd2lyZS5oIGIvT3ZtZlBr
Zy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3hzX3dpcmUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTllNjY3Ci0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBr
Zy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3hzX3dpcmUuaApAQCAtMCwwICsxLDEz
OCBAQAorLyoKKyAqIERldGFpbHMgb2YgdGhlICJ3aXJlIiBwcm90b2NvbCBiZXR3ZWVuIFhlbiBT
dG9yZSBEYWVtb24gYW5kIGNsaWVudAorICogbGlicmFyeSBvciBndWVzdCBrZXJuZWwuCisgKgor
ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw
ZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICog
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg
KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRX
QVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBSdXN0eSBSdXNzZWxsIElCTSBDb3Jwb3Jh
dGlvbgorICovCisKKyNpZm5kZWYgX1hTX1dJUkVfSAorI2RlZmluZSBfWFNfV0lSRV9ICisKK2Vu
dW0geHNkX3NvY2ttc2dfdHlwZQoreworICAgIFhTX0RFQlVHLAorICAgIFhTX0RJUkVDVE9SWSwK
KyAgICBYU19SRUFELAorICAgIFhTX0dFVF9QRVJNUywKKyAgICBYU19XQVRDSCwKKyAgICBYU19V
TldBVENILAorICAgIFhTX1RSQU5TQUNUSU9OX1NUQVJULAorICAgIFhTX1RSQU5TQUNUSU9OX0VO
RCwKKyAgICBYU19JTlRST0RVQ0UsCisgICAgWFNfUkVMRUFTRSwKKyAgICBYU19HRVRfRE9NQUlO
X1BBVEgsCisgICAgWFNfV1JJVEUsCisgICAgWFNfTUtESVIsCisgICAgWFNfUk0sCisgICAgWFNf
U0VUX1BFUk1TLAorICAgIFhTX1dBVENIX0VWRU5ULAorICAgIFhTX0VSUk9SLAorICAgIFhTX0lT
X0RPTUFJTl9JTlRST0RVQ0VELAorICAgIFhTX1JFU1VNRSwKKyAgICBYU19TRVRfVEFSR0VULAor
ICAgIFhTX1JFU1RSSUNULAorICAgIFhTX1JFU0VUX1dBVENIRVMKK307CisKKyNkZWZpbmUgWFNf
V1JJVEVfTk9ORSAiTk9ORSIKKyNkZWZpbmUgWFNfV1JJVEVfQ1JFQVRFICJDUkVBVEUiCisjZGVm
aW5lIFhTX1dSSVRFX0NSRUFURV9FWENMICJDUkVBVEV8RVhDTCIKKworLyogV2UgaGFuZCBlcnJv
cnMgYXMgc3RyaW5ncywgZm9yIHBvcnRhYmlsaXR5LiAqLworc3RydWN0IHhzZF9lcnJvcnMKK3sK
KyAgICBJTlQzMiBlcnJudW07CisgICAgY29uc3QgQ0hBUjggKmVycnN0cmluZzsKK307CisjaWZk
ZWYgRUlOVkFMCisjZGVmaW5lIFhTRF9FUlJPUih4KSB7IHgsICN4IH0KKy8qIExJTlRFRDogc3Rh
dGljIHVudXNlZCAqLworc3RhdGljIHN0cnVjdCB4c2RfZXJyb3JzIHhzZF9lcnJvcnNbXQorI2lm
IGRlZmluZWQoX19HTlVDX18pCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQorI2VuZGlmCisgICAg
PSB7CisgICAgWFNEX0VSUk9SKEVJTlZBTCksCisgICAgWFNEX0VSUk9SKEVBQ0NFUyksCisgICAg
WFNEX0VSUk9SKEVFWElTVCksCisgICAgWFNEX0VSUk9SKEVJU0RJUiksCisgICAgWFNEX0VSUk9S
KEVOT0VOVCksCisgICAgWFNEX0VSUk9SKEVOT01FTSksCisgICAgWFNEX0VSUk9SKEVOT1NQQyks
CisgICAgWFNEX0VSUk9SKEVJTyksCisgICAgWFNEX0VSUk9SKEVOT1RFTVBUWSksCisgICAgWFNE
X0VSUk9SKEVOT1NZUyksCisgICAgWFNEX0VSUk9SKEVST0ZTKSwKKyAgICBYU0RfRVJST1IoRUJV
U1kpLAorICAgIFhTRF9FUlJPUihFQUdBSU4pLAorICAgIFhTRF9FUlJPUihFSVNDT05OKSwKKyAg
ICBYU0RfRVJST1IoRTJCSUcpCit9OworI2VuZGlmCisKK3N0cnVjdCB4c2Rfc29ja21zZworewor
ICAgIFVJTlQzMiB0eXBlOyAgLyogWFNfPz8/ICovCisgICAgVUlOVDMyIHJlcV9pZDsvKiBSZXF1
ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiBkYWVtb24ncyByZXNwb25zZS4gICovCisgICAgVUlO
VDMyIHR4X2lkOyAvKiBUcmFuc2FjdGlvbiBpZCAoMCBpZiBub3QgcmVsYXRlZCB0byBhIHRyYW5z
YWN0aW9uKS4gKi8KKyAgICBVSU5UMzIgbGVuOyAgIC8qIExlbmd0aCBvZiBkYXRhIGZvbGxvd2lu
ZyB0aGlzLiAqLworCisgICAgLyogR2VuZXJhbGx5IGZvbGxvd2VkIGJ5IG51bC10ZXJtaW5hdGVk
IHN0cmluZyhzKS4gKi8KK307CisKK2VudW0geHNfd2F0Y2hfdHlwZQoreworICAgIFhTX1dBVENI
X1BBVEggPSAwLAorICAgIFhTX1dBVENIX1RPS0VOCit9OworCisvKgorICogYGluY29udGVudHMg
MTUwIHhlbnN0b3JlX3N0cnVjdCBYZW5TdG9yZSB3aXJlIHByb3RvY29sLgorICoKKyAqIEludGVy
LWRvbWFpbiBzaGFyZWQgbWVtb3J5IGNvbW11bmljYXRpb25zLiAqLworI2RlZmluZSBYRU5TVE9S
RV9SSU5HX1NJWkUgMTAyNAordHlwZWRlZiBVSU5UMzIgWEVOU1RPUkVfUklOR19JRFg7CisjZGVm
aW5lIE1BU0tfWEVOU1RPUkVfSURYKGlkeCkgKChpZHgpICYgKFhFTlNUT1JFX1JJTkdfU0laRS0x
KSkKK3N0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlIHsKKyAgICBDSEFSOCByZXFbWEVO
U1RPUkVfUklOR19TSVpFXTsgLyogUmVxdWVzdHMgdG8geGVuc3RvcmUgZGFlbW9uLiAqLworICAg
IENIQVI4IHJzcFtYRU5TVE9SRV9SSU5HX1NJWkVdOyAvKiBSZXBsaWVzIGFuZCBhc3luYyB3YXRj
aCBldmVudHMuICovCisgICAgWEVOU1RPUkVfUklOR19JRFggcmVxX2NvbnMsIHJlcV9wcm9kOwor
ICAgIFhFTlNUT1JFX1JJTkdfSURYIHJzcF9jb25zLCByc3BfcHJvZDsKK307CisKKy8qIFZpb2xh
dGluZyB0aGlzIGlzIHZlcnkgYmFkLiAgU2VlIGRvY3MvbWlzYy94ZW5zdG9yZS50eHQuICovCisj
ZGVmaW5lIFhFTlNUT1JFX1BBWUxPQURfTUFYIDQwOTYKKworLyogVmlvbGF0aW5nIHRoZXNlIGp1
c3QgZ2V0cyB5b3UgYW4gZXJyb3IgYmFjayAqLworI2RlZmluZSBYRU5TVE9SRV9BQlNfUEFUSF9N
QVggMzA3MgorI2RlZmluZSBYRU5TVE9SRV9SRUxfUEFUSF9NQVggMjA0OAorCisjZW5kaWYgLyog
X1hTX1dJUkVfSCAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog
Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog
NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092
bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9tZW1vcnkuaCBiL092bWZQa2cvSW5j
bHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45M2I3M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9JbmNsdWRl
L0luZHVzdHJ5U3RhbmRhcmQvWGVuL21lbW9yeS5oCkBAIC0wLDAgKzEsNDgwIEBACisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisgKiBtZW1vcnkuaAorICogCisgKiBNZW1vcnkgcmVzZXJ2YXRpb24g
YW5kIGluZm9ybWF0aW9uLgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBt
b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAq
IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo
b20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisg
KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1LCBL
ZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29tPgorICovCisKKyNpZm5kZWYgX19YRU5fUFVC
TElDX01FTU9SWV9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX01FTU9SWV9IX18KKworI2luY2x1
ZGUgInhlbi5oIgorCisvKgorICogSW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIHNwZWNpZmllZCBk
b21haW4ncyBtZW1vcnkgcmVzZXJ2YXRpb24uIFJldHVybnMgdGhlCisgKiBudW1iZXIgb2YgZXh0
ZW50cyBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIG9yIGZyZWVkLgorICogYXJnID09IGFkZHIgb2Yg
c3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24uCisgKi8KKyNkZWZpbmUgWEVOTUVNX2luY3Jl
YXNlX3Jlc2VydmF0aW9uIDAKKyNkZWZpbmUgWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uIDEK
KyNkZWZpbmUgWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAgICAgIDYKKworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwOQorLyoKKyAqIE1heGltdW0gIyBiaXRzIGFkZHJl
c3NhYmxlIGJ5IHRoZSB1c2VyIG9mIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIChlLmcuLCBJL08gCisg
KiBkZXZpY2VzIG9mdGVuIGhhdmUgYSAzMi1iaXQgbGltaXRhdGlvbiBldmVuIGluIDY0LWJpdCBz
eXN0ZW1zKS4gSWYgemVybyAKKyAqIHRoZW4gdGhlIHVzZXIgaGFzIG5vIGFkZHJlc3NpbmcgcmVz
dHJpY3Rpb24uIFRoaXMgZmllbGQgaXMgbm90IHVzZWQgYnkgCisgKiBYRU5NRU1fZGVjcmVhc2Vf
cmVzZXJ2YXRpb24uCisgKi8KKyNkZWZpbmUgWEVOTUVNRl9hZGRyZXNzX2JpdHMoeCkgICAgICh4
KQorI2RlZmluZSBYRU5NRU1GX2dldF9hZGRyZXNzX2JpdHMoeCkgKCh4KSAmIDB4ZmZ1KQorLyog
TlVNQSBub2RlIHRvIGFsbG9jYXRlIGZyb20uICovCisjZGVmaW5lIFhFTk1FTUZfbm9kZSh4KSAg
ICAgKCgoeCkgKyAxKSA8PCA4KQorI2RlZmluZSBYRU5NRU1GX2dldF9ub2RlKHgpICgoKCh4KSA+
PiA4KSAtIDEpICYgMHhmZnUpCisvKiBGbGFnIHRvIHBvcHVsYXRlIHBoeXNtYXAgd2l0aCBwb3B1
bGF0ZS1vbi1kZW1hbmQgZW50cmllcyAqLworI2RlZmluZSBYRU5NRU1GX3BvcHVsYXRlX29uX2Rl
bWFuZCAoMTw8MTYpCisvKiBGbGFnIHRvIHJlcXVlc3QgYWxsb2NhdGlvbiBvbmx5IGZyb20gdGhl
IG5vZGUgc3BlY2lmaWVkICovCisjZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9kZV9yZXF1ZXN0ICAo
MTw8MTcpCisjZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9kZShuKSAoWEVOTUVNRl9ub2RlKG4pIHwg
WEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QpCisjZW5kaWYKKworc3RydWN0IHhlbl9tZW1vcnlf
cmVzZXJ2YXRpb24geworCisgICAgLyoKKyAgICAgKiBYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRp
b246CisgICAgICogICBPVVQ6IE1GTiAoKm5vdCogR01GTikgYmFzZXMgb2YgZXh0ZW50cyB0aGF0
IHdlcmUgYWxsb2NhdGVkCisgICAgICogWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uOgorICAg
ICAqICAgSU46ICBHTUZOIGJhc2VzIG9mIGV4dGVudHMgdG8gZnJlZQorICAgICAqIFhFTk1FTV9w
b3B1bGF0ZV9waHlzbWFwOgorICAgICAqICAgSU46ICBHUEZOIGJhc2VzIG9mIGV4dGVudHMgdG8g
cG9wdWxhdGUgd2l0aCBtZW1vcnkKKyAgICAgKiAgIE9VVDogR01GTiBiYXNlcyBvZiBleHRlbnRz
IHRoYXQgd2VyZSBhbGxvY2F0ZWQKKyAgICAgKiAgIChOQi4gVGhpcyBjb21tYW5kIGFsc28gdXBk
YXRlcyB0aGUgbWFjaF90b19waHlzIHRyYW5zbGF0aW9uIHRhYmxlKQorICAgICAqIFhFTk1FTV9j
bGFpbV9wYWdlczoKKyAgICAgKiAgIElOOiBtdXN0IGJlIHplcm8KKyAgICAgKi8KKyAgICBYRU5f
R1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0YXJ0OworCisgICAgLyogTnVtYmVyIG9m
IGV4dGVudHMsIGFuZCBzaXplL2FsaWdubWVudCBvZiBlYWNoICgyXmV4dGVudF9vcmRlciBwYWdl
cykuICovCisgICAgeGVuX3Vsb25nX3QgICAgbnJfZXh0ZW50czsKKyAgICBVSU5UMzIgICBleHRl
bnRfb3JkZXI7CisKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDkK
KyAgICAvKiBYRU5NRU1GIGZsYWdzLiAqLworICAgIFVJTlQzMiAgIG1lbV9mbGFnczsKKyNlbHNl
CisgICAgVUlOVDMyICAgYWRkcmVzc19iaXRzOworI2VuZGlmCisKKyAgICAvKgorICAgICAqIERv
bWFpbiB3aG9zZSByZXNlcnZhdGlvbiBpcyBiZWluZyBjaGFuZ2VkLgorICAgICAqIFVucHJpdmls
ZWdlZCBkb21haW5zIGNhbiBzcGVjaWZ5IG9ubHkgRE9NSURfU0VMRi4KKyAgICAgKi8KKyAgICBk
b21pZF90ICAgICAgICBkb21pZDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2Vy
dmF0aW9uIHhlbl9tZW1vcnlfcmVzZXJ2YXRpb25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9tZW1vcnlfcmVzZXJ2YXRpb25fdCk7CisKKy8qCisgKiBBbiBhdG9taWMgZXhjaGFuZ2Ug
b2YgbWVtb3J5IHBhZ2VzLiBJZiByZXR1cm4gY29kZSBpcyB6ZXJvIHRoZW4KKyAqIEBvdXQuZXh0
ZW50X2xpc3QgcHJvdmlkZXMgR01GTnMgb2YgdGhlIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuCisg
KiBSZXR1cm5zIHplcm8gb24gY29tcGxldGUgc3VjY2Vzcywgb3RoZXJ3aXNlIGEgbmVnYXRpdmUg
ZXJyb3IgY29kZS4KKyAqIE9uIGNvbXBsZXRlIHN1Y2Nlc3MgdGhlbiBhbHdheXMgQG5yX2V4Y2hh
bmdlZCA9PSBAaW4ubnJfZXh0ZW50cy4KKyAqIE9uIHBhcnRpYWwgc3VjY2VzcyBAbnJfZXhjaGFu
Z2VkIGluZGljYXRlcyBob3cgbXVjaCB3b3JrIHdhcyBkb25lLgorICovCisjZGVmaW5lIFhFTk1F
TV9leGNoYW5nZSAgICAgICAgICAgICAxMQorc3RydWN0IHhlbl9tZW1vcnlfZXhjaGFuZ2Ugewor
ICAgIC8qCisgICAgICogW0lOXSBEZXRhaWxzIG9mIG1lbW9yeSBleHRlbnRzIHRvIGJlIGV4Y2hh
bmdlZCAoR01GTiBiYXNlcykuCisgICAgICogTm90ZSB0aGF0IEBpbi5hZGRyZXNzX2JpdHMgaXMg
aWdub3JlZCBhbmQgdW51c2VkLgorICAgICAqLworICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2Vy
dmF0aW9uIGluOworCisgICAgLyoKKyAgICAgKiBbSU4vT1VUXSBEZXRhaWxzIG9mIG5ldyBtZW1v
cnkgZXh0ZW50cy4KKyAgICAgKiBXZSByZXF1aXJlIHRoYXQ6CisgICAgICogIDEuIEBpbi5kb21p
ZCA9PSBAb3V0LmRvbWlkCisgICAgICogIDIuIEBpbi5ucl9leHRlbnRzICA8PCBAaW4uZXh0ZW50
X29yZGVyID09IAorICAgICAqICAgICBAb3V0Lm5yX2V4dGVudHMgPDwgQG91dC5leHRlbnRfb3Jk
ZXIKKyAgICAgKiAgMy4gQGluLmV4dGVudF9zdGFydCBhbmQgQG91dC5leHRlbnRfc3RhcnQgbGlz
dHMgbXVzdCBub3Qgb3ZlcmxhcAorICAgICAqICA0LiBAb3V0LmV4dGVudF9zdGFydCBsaXN0cyBH
UEZOIGJhc2VzIHRvIGJlIHBvcHVsYXRlZAorICAgICAqICA1LiBAb3V0LmV4dGVudF9zdGFydCBp
cyBvdmVyd3JpdHRlbiB3aXRoIGFsbG9jYXRlZCBHTUZOIGJhc2VzCisgICAgICovCisgICAgc3Ry
dWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gb3V0OworCisgICAgLyoKKyAgICAgKiBbT1VUXSBO
dW1iZXIgb2YgaW5wdXQgZXh0ZW50cyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bGx5IGV4Y2hhbmdlZDoK
KyAgICAgKiAgMS4gVGhlIGZpcnN0IEBucl9leGNoYW5nZWQgaW5wdXQgZXh0ZW50cyB3ZXJlIHN1
Y2Nlc3NmdWxseQorICAgICAqICAgICBkZWFsbG9jYXRlZC4KKyAgICAgKiAgMi4gVGhlIGNvcnJl
c3BvbmRpbmcgZmlyc3QgZW50cmllcyBpbiB0aGUgb3V0cHV0IGV4dGVudCBsaXN0IGNvcnJlY3Rs
eQorICAgICAqICAgICBpbmRpY2F0ZSB0aGUgR01GTnMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBl
eGNoYW5nZWQuCisgICAgICogIDMuIEFsbCBvdGhlciBpbnB1dCBhbmQgb3V0cHV0IGV4dGVudHMg
YXJlIHVudG91Y2hlZC4KKyAgICAgKiAgNC4gSWYgbm90IGFsbCBpbnB1dCBleGVudHMgYXJlIGV4
Y2hhbmdlZCB0aGVuIHRoZSByZXR1cm4gY29kZSBvZiB0aGlzCisgICAgICogICAgIGNvbW1hbmQg
d2lsbCBiZSBub24temVyby4KKyAgICAgKiAgNS4gVEhJUyBGSUVMRCBNVVNUIEJFIElOSVRJQUxJ
U0VEIFRPIFpFUk8gQlkgVEhFIENBTExFUiEKKyAgICAgKi8KKyAgICB4ZW5fdWxvbmdfdCBucl9l
eGNoYW5nZWQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21lbW9yeV9leGNoYW5nZSB4ZW5fbWVt
b3J5X2V4Y2hhbmdlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X2V4Y2hh
bmdlX3QpOworCisvKgorICogUmV0dXJucyB0aGUgbWF4aW11bSBtYWNoaW5lIGZyYW1lIG51bWJl
ciBvZiBtYXBwZWQgUkFNIGluIHRoaXMgc3lzdGVtLgorICogVGhpcyBjb21tYW5kIGFsd2F5cyBz
dWNjZWVkcyAoaXQgbmV2ZXIgcmV0dXJucyBhbiBlcnJvciBjb2RlKS4KKyAqIGFyZyA9PSBOVUxM
LgorICovCisjZGVmaW5lIFhFTk1FTV9tYXhpbXVtX3JhbV9wYWdlICAgICAyCisKKy8qCisgKiBS
ZXR1cm5zIHRoZSBjdXJyZW50IG9yIG1heGltdW0gbWVtb3J5IHJlc2VydmF0aW9uLCBpbiBwYWdl
cywgb2YgdGhlCisgKiBzcGVjaWZpZWQgZG9tYWluIChtYXkgYmUgRE9NSURfU0VMRikuIFJldHVy
bnMgLXZlIGVycmNvZGUgb24gZmFpbHVyZS4KKyAqIGFyZyA9PSBhZGRyIG9mIGRvbWlkX3QuCisg
Ki8KKyNkZWZpbmUgWEVOTUVNX2N1cnJlbnRfcmVzZXJ2YXRpb24gIDMKKyNkZWZpbmUgWEVOTUVN
X21heGltdW1fcmVzZXJ2YXRpb24gIDQKKworLyoKKyAqIFJldHVybnMgdGhlIG1heGltdW0gR1BG
TiBpbiB1c2UgYnkgdGhlIGd1ZXN0LCBvciAtdmUgZXJyY29kZSBvbiBmYWlsdXJlLgorICovCisj
ZGVmaW5lIFhFTk1FTV9tYXhpbXVtX2dwZm4gICAgICAgICAxNAorCisvKgorICogUmV0dXJucyBh
IGxpc3Qgb2YgTUZOIGJhc2VzIG9mIDJNQiBleHRlbnRzIGNvbXByaXNpbmcgdGhlIG1hY2hpbmVf
dG9fcGh5cworICogbWFwcGluZyB0YWJsZS4gQXJjaGl0ZWN0dXJlcyB3aGljaCBkbyBub3QgaGF2
ZSBhIG0ycCB0YWJsZSBkbyBub3QgaW1wbGVtZW50CisgKiB0aGlzIGNvbW1hbmQuCisgKiBhcmcg
PT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWZuX2xpc3RfdC4KKyAqLworI2RlZmluZSBYRU5NRU1f
bWFjaHBoeXNfbWZuX2xpc3QgICAgNQorc3RydWN0IHhlbl9tYWNocGh5c19tZm5fbGlzdCB7Cisg
ICAgLyoKKyAgICAgKiBTaXplIG9mIHRoZSAnZXh0ZW50X3N0YXJ0JyBhcnJheS4gRmV3ZXIgZW50
cmllcyB3aWxsIGJlIGZpbGxlZCBpZiB0aGUKKyAgICAgKiBtYWNocGh5cyB0YWJsZSBpcyBzbWFs
bGVyIHRoYW4gbWF4X2V4dGVudHMgKiAyTUIuCisgICAgICovCisgICAgVUlOVDMyIG1heF9leHRl
bnRzOworCisgICAgLyoKKyAgICAgKiBQb2ludGVyIHRvIGJ1ZmZlciB0byBmaWxsIHdpdGggbGlz
dCBvZiBleHRlbnQgc3RhcnRzLiBJZiB0aGVyZSBhcmUKKyAgICAgKiBhbnkgbGFyZ2UgZGlzY29u
dGlndWl0aWVzIGluIHRoZSBtYWNoaW5lIGFkZHJlc3Mgc3BhY2UsIDJNQiBnYXBzIGluCisgICAg
ICogdGhlIG1hY2hwaHlzIHRhYmxlIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgYW4gTUZOIGJhc2Ug
b2YgemVyby4KKyAgICAgKi8KKyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50
X3N0YXJ0OworCisgICAgLyoKKyAgICAgKiBOdW1iZXIgb2YgZXh0ZW50cyB3cml0dGVuIHRvIHRo
ZSBhYm92ZSBhcnJheS4gVGhpcyB3aWxsIGJlIHNtYWxsZXIKKyAgICAgKiB0aGFuICdtYXhfZXh0
ZW50cycgaWYgdGhlIG1hY2hwaHlzIHRhYmxlIGlzIHNtYWxsZXIgdGhhbiBtYXhfZSAqIDJNQi4K
KyAgICAgKi8KKyAgICBVSU5UMzIgbnJfZXh0ZW50czsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5f
bWFjaHBoeXNfbWZuX2xpc3QgeGVuX21hY2hwaHlzX21mbl9saXN0X3Q7CitERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRSh4ZW5fbWFjaHBoeXNfbWZuX2xpc3RfdCk7CisKKy8qCisgKiBSZXR1cm5zIHRo
ZSBsb2NhdGlvbiBpbiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIG1hY2hpbmVfdG9fcGh5
cworICogbWFwcGluZyB0YWJsZS4gQXJjaGl0ZWN0dXJlcyB3aGljaCBkbyBub3QgaGF2ZSBhIG0y
cCB0YWJsZSwgb3Igd2hpY2ggZG8gbm90CisgKiBtYXAgaXQgYnkgZGVmYXVsdCBpbnRvIGd1ZXN0
IGFkZHJlc3Mgc3BhY2UsIGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBjb21tYW5kLgorICogYXJnID09
IGFkZHIgb2YgeGVuX21hY2hwaHlzX21hcHBpbmdfdC4KKyAqLworI2RlZmluZSBYRU5NRU1fbWFj
aHBoeXNfbWFwcGluZyAgICAgMTIKK3N0cnVjdCB4ZW5fbWFjaHBoeXNfbWFwcGluZyB7CisgICAg
eGVuX3Vsb25nX3Qgdl9zdGFydCwgdl9lbmQ7IC8qIFN0YXJ0IGFuZCBlbmQgdmlydHVhbCBhZGRy
ZXNzZXMuICAgKi8KKyAgICB4ZW5fdWxvbmdfdCBtYXhfbWZuOyAgICAgICAgLyogTWF4aW11bSBN
Rk4gdGhhdCBjYW4gYmUgbG9va2VkIHVwLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tYWNo
cGh5c19tYXBwaW5nIHhlbl9tYWNocGh5c19tYXBwaW5nX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh4ZW5fbWFjaHBoeXNfbWFwcGluZ190KTsKKworLyogU291cmNlIG1hcHBpbmcgc3BhY2Uu
ICovCisvKiBgIGVudW0gcGh5c19tYXBfc3BhY2UgeyAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9z
aGFyZWRfaW5mbyAgMCAvKiBzaGFyZWQgaW5mbyBwYWdlICovCisjZGVmaW5lIFhFTk1BUFNQQUNF
X2dyYW50X3RhYmxlICAxIC8qIGdyYW50IHRhYmxlIHBhZ2UgKi8KKyNkZWZpbmUgWEVOTUFQU1BB
Q0VfZ21mbiAgICAgICAgIDIgLyogR01GTiAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuX3Jh
bmdlICAgMyAvKiBHTUZOIHJhbmdlLCBYRU5NRU1fYWRkX3RvX3BoeXNtYXAgb25seS4gKi8KKyNk
ZWZpbmUgWEVOTUFQU1BBQ0VfZ21mbl9mb3JlaWduIDQgLyogR01GTiBmcm9tIGFub3RoZXIgZG9t
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBYRU5NRU1fYWRkX3RvX3Bo
eXNtYXBfYmF0Y2ggb25seS4gKi8KKy8qIGAgfSAqLworCisvKgorICogU2V0cyB0aGUgR1BGTiBh
dCB3aGljaCBhIHBhcnRpY3VsYXIgcGFnZSBhcHBlYXJzIGluIHRoZSBzcGVjaWZpZWQgZ3Vlc3Qn
cworICogcHNldWRvcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KKyAqIGFyZyA9PSBhZGRyIG9mIHhl
bl9hZGRfdG9fcGh5c21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9hZGRfdG9fcGh5c21hcCAg
ICAgIDcKK3N0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXAgeworICAgIC8qIFdoaWNoIGRvbWFpbiB0
byBjaGFuZ2UgdGhlIG1hcHBpbmcgZm9yLiAqLworICAgIGRvbWlkX3QgZG9taWQ7CisKKyAgICAv
KiBOdW1iZXIgb2YgcGFnZXMgdG8gZ28gdGhyb3VnaCBmb3IgZ21mbl9yYW5nZSAqLworICAgIFVJ
TlQxNiAgICBzaXplOworCisgICAgVUlOVDMyIHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFwX3Nw
YWNlICovCisKKyNkZWZpbmUgWEVOTUFQSURYX2dyYW50X3RhYmxlX3N0YXR1cyAweDgwMDAwMDAw
CisKKyAgICAvKiBJbmRleCBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KKyAgICB4ZW5fdWxv
bmdfdCBpZHg7CisKKyAgICAvKiBHUEZOIGluIGRvbWlkIHdoZXJlIHRoZSBzb3VyY2UgbWFwcGlu
ZyBwYWdlIHNob3VsZCBhcHBlYXIuICovCisgICAgeGVuX3Bmbl90ICAgICBncGZuOworfTsKK3R5
cGVkZWYgc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcCB4ZW5fYWRkX3RvX3BoeXNtYXBfdDsKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hZGRfdG9fcGh5c21hcF90KTsKKworLyogQSBiYXRj
aGVkIHZlcnNpb24gb2YgYWRkX3RvX3BoeXNtYXAuICovCisjZGVmaW5lIFhFTk1FTV9hZGRfdG9f
cGh5c21hcF9iYXRjaCAyMworc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9iYXRjaCB7CisgICAg
LyogSU4gKi8KKyAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGZvci4g
Ki8KKyAgICBkb21pZF90IGRvbWlkOworICAgIFVJTlQxNiBzcGFjZTsgLyogPT4gZW51bSBwaHlz
X21hcF9zcGFjZSAqLworCisgICAgLyogTnVtYmVyIG9mIHBhZ2VzIHRvIGdvIHRocm91Z2ggKi8K
KyAgICBVSU5UMTYgc2l6ZTsKKyAgICBkb21pZF90IGZvcmVpZ25fZG9taWQ7IC8qIElGRiBnbWZu
X2ZvcmVpZ24gKi8KKworICAgIC8qIEluZGV4ZXMgaW50byBzcGFjZSBiZWluZyBtYXBwZWQuICov
CisgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCkgaWR4czsKKworICAgIC8qIEdQRk4g
aW4gZG9taWQgd2hlcmUgdGhlIHNvdXJjZSBtYXBwaW5nIHBhZ2Ugc2hvdWxkIGFwcGVhci4gKi8K
KyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZ3BmbnM7CisKKyAgICAvKiBPVVQgKi8K
KworICAgIC8qIFBlciBpbmRleCBlcnJvciBjb2RlLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEUo
SU5UMzIpIGVycnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwX2JhdGNo
IHhlbl9hZGRfdG9fcGh5c21hcF9iYXRjaF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu
X2FkZF90b19waHlzbWFwX2JhdGNoX3QpOworCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05f
XyA8IDB4MDAwNDA0MDAKKyNkZWZpbmUgWEVOTUVNX2FkZF90b19waHlzbWFwX3JhbmdlIFhFTk1F
TV9hZGRfdG9fcGh5c21hcF9iYXRjaAorI2RlZmluZSB4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2Ug
eGVuX2FkZF90b19waHlzbWFwX2JhdGNoCit0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNt
YXBfYmF0Y2ggeGVuX2FkZF90b19waHlzbWFwX3JhbmdlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2VfdCk7CisjZW5kaWYKKworLyoKKyAqIFVubWFw
cyB0aGUgcGFnZSBhcHBlYXJpbmcgYXQgYSBwYXJ0aWN1bGFyIEdQRk4gZnJvbSB0aGUgc3BlY2lm
aWVkIGd1ZXN0J3MKKyAqIHBzZXVkb3BoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuCisgKiBhcmcgPT0g
YWRkciBvZiB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9y
ZW1vdmVfZnJvbV9waHlzbWFwICAgICAgMTUKK3N0cnVjdCB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21h
cCB7CisgICAgLyogV2hpY2ggZG9tYWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisg
ICAgZG9taWRfdCBkb21pZDsKKworICAgIC8qIEdQRk4gb2YgdGhlIGN1cnJlbnQgbWFwcGluZyBv
ZiB0aGUgcGFnZS4gKi8KKyAgICB4ZW5fcGZuX3QgICAgIGdwZm47Cit9OwordHlwZWRlZiBzdHJ1
Y3QgeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXAgeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXBfdDsKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QpOworCisvKioq
IFJFTU9WRUQgKioqLworLyojZGVmaW5lIFhFTk1FTV90cmFuc2xhdGVfZ3Bmbl9saXN0ICA4Ki8K
KworLyoKKyAqIFJldHVybnMgdGhlIHBzZXVkby1waHlzaWNhbCBtZW1vcnkgbWFwIGFzIGl0IHdh
cyB3aGVuIHRoZSBkb21haW4KKyAqIHdhcyBzdGFydGVkIChzcGVjaWZpZWQgYnkgWEVOTUVNX3Nl
dF9tZW1vcnlfbWFwKS4KKyAqIGFyZyA9PSBhZGRyIG9mIHhlbl9tZW1vcnlfbWFwX3QuCisgKi8K
KyNkZWZpbmUgWEVOTUVNX21lbW9yeV9tYXAgICAgICAgICAgIDkKK3N0cnVjdCB4ZW5fbWVtb3J5
X21hcCB7CisgICAgLyoKKyAgICAgKiBPbiBjYWxsIHRoZSBudW1iZXIgb2YgZW50cmllcyB3aGlj
aCBjYW4gYmUgc3RvcmVkIGluIGJ1ZmZlci4gT24KKyAgICAgKiByZXR1cm4gdGhlIG51bWJlciBv
ZiBlbnRyaWVzIHdoaWNoIGhhdmUgYmVlbiBzdG9yZWQgaW4KKyAgICAgKiBidWZmZXIuCisgICAg
ICovCisgICAgVUlOVDMyIG5yX2VudHJpZXM7CisKKyAgICAvKgorICAgICAqIEVudHJpZXMgaW4g
dGhlIGJ1ZmZlciBhcmUgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHJldHVybmVkIGJ5IHRoZQorICAg
ICAqIEJJT1MgSU5UIDB4MTUgRUFYPTB4RTgyMCBjYWxsLgorICAgICAqLworICAgIFhFTl9HVUVT
VF9IQU5ETEUoVk9JRCkgYnVmZmVyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1vcnlfbWFw
IHhlbl9tZW1vcnlfbWFwX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X21h
cF90KTsKKworLyoKKyAqIFJldHVybnMgdGhlIHJlYWwgcGh5c2ljYWwgbWVtb3J5IG1hcC4gUGFz
c2VzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcworICogWEVOTUVNX21lbW9yeV9tYXAuCisgKiBhcmcg
PT0gYWRkciBvZiB4ZW5fbWVtb3J5X21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9tYWNoaW5l
X21lbW9yeV9tYXAgICAxMAorCisvKgorICogU2V0IHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWVtb3J5
IG1hcCBvZiBhIGRvbWFpbiwgYXMgcmV0dXJuZWQgYnkKKyAqIFhFTk1FTV9tZW1vcnlfbWFwLgor
ICogYXJnID09IGFkZHIgb2YgeGVuX2ZvcmVpZ25fbWVtb3J5X21hcF90LgorICovCisjZGVmaW5l
IFhFTk1FTV9zZXRfbWVtb3J5X21hcCAgICAgICAxMworc3RydWN0IHhlbl9mb3JlaWduX21lbW9y
eV9tYXAgeworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgc3RydWN0IHhlbl9tZW1vcnlfbWFwIG1h
cDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fZm9yZWlnbl9tZW1vcnlfbWFwIHhlbl9mb3JlaWdu
X21lbW9yeV9tYXBfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9mb3JlaWduX21lbW9y
eV9tYXBfdCk7CisKKyNkZWZpbmUgWEVOTUVNX3NldF9wb2RfdGFyZ2V0ICAgICAgIDE2CisjZGVm
aW5lIFhFTk1FTV9nZXRfcG9kX3RhcmdldCAgICAgICAxNworc3RydWN0IHhlbl9wb2RfdGFyZ2V0
IHsKKyAgICAvKiBJTiAqLworICAgIFVJTlQ2NCB0YXJnZXRfcGFnZXM7CisgICAgLyogT1VUICov
CisgICAgVUlOVDY0IHRvdF9wYWdlczsKKyAgICBVSU5UNjQgcG9kX2NhY2hlX3BhZ2VzOworICAg
IFVJTlQ2NCBwb2RfZW50cmllczsKKyAgICAvKiBJTiAqLworICAgIGRvbWlkX3QgZG9taWQ7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3BvZF90YXJnZXQgeGVuX3BvZF90YXJnZXRfdDsKKworI2lm
IGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisjaWZuZGVmIHVp
bnQ2NF9hbGlnbmVkX3QKKyNkZWZpbmUgdWludDY0X2FsaWduZWRfdCBVSU5UNjQKKyNlbmRpZgor
CisvKgorICogR2V0IHRoZSBudW1iZXIgb2YgTUZOcyBzYXZlZCB0aHJvdWdoIG1lbW9yeSBzaGFy
aW5nLgorICogVGhlIGNhbGwgbmV2ZXIgZmFpbHMuIAorICovCisjZGVmaW5lIFhFTk1FTV9nZXRf
c2hhcmluZ19mcmVlZF9wYWdlcyAgICAxOAorI2RlZmluZSBYRU5NRU1fZ2V0X3NoYXJpbmdfc2hh
cmVkX3BhZ2VzICAgMTkKKworI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wICAgICAgICAgICAgICAg
ICAgICAyMAorI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX25vbWluYXRlICAgICAgICAgICAwCisj
ZGVmaW5lIFhFTk1FTV9wYWdpbmdfb3BfZXZpY3QgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWEVO
TUVNX3BhZ2luZ19vcF9wcmVwICAgICAgICAgICAgICAgMgorCisjZGVmaW5lIFhFTk1FTV9hY2Nl
c3Nfb3AgICAgICAgICAgICAgICAgICAgIDIxCisjZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3BfcmVz
dW1lICAgICAgICAgICAgIDAKKworc3RydWN0IHhlbl9tZW1fZXZlbnRfb3AgeworICAgIFVJTlQ4
ICAgICBvcDsgICAgICAgICAvKiBYRU5NRU1fKl9vcF8qICovCisgICAgZG9taWRfdCAgICAgZG9t
YWluOworICAgIAorCisgICAgLyogUEFHSU5HX1BSRVAgSU46IGJ1ZmZlciB0byBpbW1lZGlhdGVs
eSBmaWxsIHBhZ2UgaW4gKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGJ1ZmZlcjsKKyAgICAv
KiBPdGhlciBPUHMgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGdmbjsgICAgICAgICAgIC8q
IElOOiAgZ2ZuIG9mIHBhZ2UgYmVpbmcgb3BlcmF0ZWQgb24gKi8KK307Cit0eXBlZGVmIHN0cnVj
dCB4ZW5fbWVtX2V2ZW50X29wIHhlbl9tZW1fZXZlbnRfb3BfdDsKK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKHhlbl9tZW1fZXZlbnRfb3BfdCk7CisKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Ag
ICAgICAgICAgICAgICAgICAgMjIKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Bfbm9taW5hdGVf
Z2ZuICAgICAgMAorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9ub21pbmF0ZV9ncmVmICAgICAx
CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3NoYXJlICAgICAgICAgICAgIDIKKyNkZWZpbmUg
WEVOTUVNX3NoYXJpbmdfb3BfcmVzdW1lICAgICAgICAgICAgMworI2RlZmluZSBYRU5NRU1fc2hh
cmluZ19vcF9kZWJ1Z19nZm4gICAgICAgICA0CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2Rl
YnVnX21mbiAgICAgICAgIDUKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ3JlZiAg
ICAgICAgNgorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9hZGRfcGh5c21hcCAgICAgICA3Cisj
ZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2F1ZGl0ICAgICAgICAgICAgIDgKKworI2RlZmluZSBY
RU5NRU1fU0hBUklOR19PUF9TX0hBTkRMRV9JTlZBTElEICAoLTEwKQorI2RlZmluZSBYRU5NRU1f
U0hBUklOR19PUF9DX0hBTkRMRV9JTlZBTElEICAoLTkpCisKKy8qIFRoZSBmb2xsb3dpbmcgYWxs
b3dzIHNoYXJpbmcgb2YgZ3JhbnQgcmVmcy4gVGhpcyBpcyB1c2VmdWwKKyAqIGZvciBzaGFyaW5n
IHV0aWxpdGllcyBzaXR0aW5nIGFzICJmaWx0ZXJzIiBpbiBJTyBiYWNrZW5kcworICogKGUuZy4g
bWVtc2hyICsgYmxrdGFwKDIpKS4gVGhlIElPIGJhY2tlbmQgaXMgb25seSBleHBvc2VkIAorICog
dG8gZ3JhbnQgcmVmZXJlbmNlcywgYW5kIHRoaXMgYWxsb3dzIHNoYXJpbmcgb2YgdGhlIGdyZWZz
ICovCisjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUZfRkxBRyAgICgxVUxM
IDw8IDYyKQorCisjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX01BS0VfR1JFRihmaWVs
ZCwgdmFsKSAgXAorICAgIChmaWVsZCkgPSAoWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfSVNfR1JF
Rl9GTEFHIHwgdmFsKQorI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVGKGZp
ZWxkKSAgICAgICAgIFwKKyAgICAoKGZpZWxkKSAmIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lT
X0dSRUZfRkxBRykKKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfR0VUX0dSRUYoZmll
bGQpICAgICAgICBcCisgICAgKChmaWVsZCkgJiAoflhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lT
X0dSRUZfRkxBRykpCisKK3N0cnVjdCB4ZW5fbWVtX3NoYXJpbmdfb3AgeworICAgIFVJTlQ4ICAg
ICBvcDsgICAgIC8qIFhFTk1FTV9zaGFyaW5nX29wXyogKi8KKyAgICBkb21pZF90ICAgICBkb21h
aW47CisKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9ub21pbmF0
ZSB7ICAvKiBPUF9OT01JTkFURV94eHggICAgICAgICAgICovCisgICAgICAgICAgICB1bmlvbiB7
CisgICAgICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBnZm47ICAgICAvKiBJTjogZ2ZuIHRv
IG5vbWluYXRlICAgICAgICovCisgICAgICAgICAgICAgICAgVUlOVDMyICAgICAgZ3JhbnRfcmVm
OyAgLyogSU46IGdyYW50IHJlZiB0byBub21pbmF0ZSAqLworICAgICAgICAgICAgfSB1OworICAg
ICAgICAgICAgdWludDY0X2FsaWduZWRfdCAgaGFuZGxlOyAgICAgLyogT1VUOiB0aGUgaGFuZGxl
ICAgICAgICAgICAqLworICAgICAgICB9IG5vbWluYXRlOworICAgICAgICBzdHJ1Y3QgbWVtX3No
YXJpbmdfb3Bfc2hhcmUgeyAgICAgLyogT1BfU0hBUkUvQUREX1BIWVNNQVAgKi8KKyAgICAgICAg
ICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc291cmNlX2dmbjsgICAgLyogSU46IHRoZSBnZm4gb2YgdGhl
IHNvdXJjZSBwYWdlICovCisgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IHNvdXJjZV9oYW5k
bGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIHNvdXJjZSBwYWdlICovCisgICAgICAgICAgICB1aW50
NjRfYWxpZ25lZF90IGNsaWVudF9nZm47ICAgIC8qIElOOiB0aGUgY2xpZW50IGdmbiAqLworICAg
ICAgICAgICAgdWludDY0X2FsaWduZWRfdCBjbGllbnRfaGFuZGxlOyAvKiBJTjogaGFuZGxlIHRv
IHRoZSBjbGllbnQgcGFnZSAqLworICAgICAgICAgICAgZG9taWRfdCAgY2xpZW50X2RvbWFpbjsg
LyogSU46IHRoZSBjbGllbnQgZG9tYWluIGlkICovCisgICAgICAgIH0gc2hhcmU7IAorICAgICAg
ICBzdHJ1Y3QgbWVtX3NoYXJpbmdfb3BfZGVidWcgeyAgICAgLyogT1BfREVCVUdfeHh4ICovCisg
ICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBnZm47
ICAgICAgLyogSU46IGdmbiB0byBkZWJ1ZyAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHVp
bnQ2NF9hbGlnbmVkX3QgbWZuOyAgICAgIC8qIElOOiBtZm4gdG8gZGVidWcgICAgICAgICAgKi8K
KyAgICAgICAgICAgICAgICBVSU5UMzIgZ3JlZjsgICAgIC8qIElOOiBncmVmIHRvIGRlYnVnICAg
ICAgICAgKi8KKyAgICAgICAgICAgIH0gdTsKKyAgICAgICAgfSBkZWJ1ZzsKKyAgICB9IHU7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21lbV9zaGFyaW5nX29wIHhlbl9tZW1fc2hhcmluZ19vcF90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21lbV9zaGFyaW5nX29wX3QpOworCisvKgor
ICogQXR0ZW1wdCB0byBzdGFrZSBhIGNsYWltIGZvciBhIGRvbWFpbiBvbiBhIHF1YW50aXR5IG9m
IHBhZ2VzCisgKiBvZiBzeXN0ZW0gUkFNLCBidXQgX25vdF8gYXNzaWduIHNwZWNpZmljIHBhZ2Vm
cmFtZXMuICBPbmx5CisgKiBhcml0aG1ldGljIGlzIHBlcmZvcm1lZCBzbyB0aGUgaHlwZXJjYWxs
IGlzIHZlcnkgZmFzdCBhbmQgbmVlZAorICogbm90IGJlIHByZWVtcHRpYmxlLCB0aHVzIHNpZGVz
dGVwcGluZyB0aW1lLW9mLWNoZWNrLXRpbWUtb2YtdXNlCisgKiByYWNlcyBmb3IgbWVtb3J5IGFs
bG9jYXRpb24uICBSZXR1cm5zIDAgaWYgdGhlIGh5cGVydmlzb3IgcGFnZQorICogYWxsb2NhdG9y
IGhhcyBhdG9taWNhbGx5IGFuZCBzdWNjZXNzZnVsbHkgY2xhaW1lZCB0aGUgcmVxdWVzdGVkCisg
KiBudW1iZXIgb2YgcGFnZXMsIGVsc2Ugbm9uLXplcm8uCisgKgorICogQW55IGRvbWFpbiBtYXkg
aGF2ZSBvbmx5IG9uZSBhY3RpdmUgY2xhaW0uICBXaGVuIHN1ZmZpY2llbnQgbWVtb3J5CisgKiBo
YXMgYmVlbiBhbGxvY2F0ZWQgdG8gcmVzb2x2ZSB0aGUgY2xhaW0sIHRoZSBjbGFpbSBzaWxlbnRs
eSBleHBpcmVzLgorICogQ2xhaW1pbmcgemVybyBwYWdlcyBlZmZlY3RpdmVseSByZXNldHMgYW55
IG91dHN0YW5kaW5nIGNsYWltIGFuZAorICogaXMgYWx3YXlzIHN1Y2Nlc3NmdWwuCisgKgorICog
Tm90ZSB0aGF0IGEgdmFsaWQgY2xhaW0gbWF5IGJlIHN0YWtlZCBldmVuIGFmdGVyIG1lbW9yeSBo
YXMgYmVlbgorICogYWxsb2NhdGVkIGZvciBhIGRvbWFpbi4gIEluIHRoaXMgY2FzZSwgdGhlIGNs
YWltIGlzIG5vdCBpbmNyZW1lbnRhbCwKKyAqIGkuZS4gaWYgdGhlIGRvbWFpbidzIHRvdF9wYWdl
cyBpcyAzLCBhbmQgYSBjbGFpbSBpcyBzdGFrZWQgZm9yIDEwLAorICogb25seSA3IGFkZGl0aW9u
YWwgcGFnZXMgYXJlIGNsYWltZWQuCisgKgorICogQ2FsbGVyIG11c3QgYmUgcHJpdmlsZWdlZCBv
ciB0aGUgaHlwZXJjYWxsIGZhaWxzLgorICovCisjZGVmaW5lIFhFTk1FTV9jbGFpbV9wYWdlcyAg
ICAgICAgICAgICAgICAgIDI0CisKKy8qCisgKiBYRU5NRU1fY2xhaW1fcGFnZXMgZmxhZ3MgLSB0
aGUgYXJlIG5vIGZsYWdzIGF0IHRoaXMgdGltZS4KKyAqIFRoZSB6ZXJvIHZhbHVlIGlzIGFwcHJv
cGlhdGUuCisgKi8KKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hF
Tl9UT09MU19fKSAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX01FTU9SWV9IX18gKi8KKwor
LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT
RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz
LW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5k
dXN0cnlTdGFuZGFyZC9YZW4vc2NoZWQuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5k
YXJkL1hlbi9zY2hlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzEy
M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Y
ZW4vc2NoZWQuaApAQCAtMCwwICsxLDE3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog
c2NoZWQuaAorICoKKyAqIFNjaGVkdWxlciBzdGF0ZSBpbnRlcmFjdGlvbnMKKyAqCisgKiBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg
KgorICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29t
PgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX1NDSEVEX0hfXworI2RlZmluZSBfX1hFTl9Q
VUJMSUNfU0NIRURfSF9fCisKKyNpbmNsdWRlICJldmVudF9jaGFubmVsLmgiCisKKy8qCisgKiBg
aW5jb250ZW50cyAxNTAgc2NoZWQgR3Vlc3QgU2NoZWR1bGVyIE9wZXJhdGlvbnMKKyAqCisgKiBU
aGUgU0NIRURPUCBpbnRlcmZhY2UgcHJvdmlkZXMgbWVjaGFuaXNtcyBmb3IgYSBndWVzdCB0byBp
bnRlcmFjdAorICogd2l0aCB0aGUgc2NoZWR1bGVyLCBpbmNsdWRpbmcgeWllbGQsIGJsb2NraW5n
IGFuZCBzaHV0dGluZyBpdHNlbGYKKyAqIGRvd24uCisgKi8KKworLyoKKyAqIFRoZSBwcm90b3R5
cGUgZm9yIHRoaXMgaHlwZXJjYWxsIGlzOgorICogYCBJTlROIEhZUEVSVklTT1Jfc2NoZWRfb3Ao
ZW51bSBzY2hlZF9vcCBjbWQsIFZPSUQgKmFyZywgLi4uKQorICoKKyAqIEBjbWQgPT0gU0NIRURP
UF8/Pz8gKHNjaGVkdWxlciBvcGVyYXRpb24pLgorICogQGFyZyA9PSBPcGVyYXRpb24tc3BlY2lm
aWMgZXh0cmEgYXJndW1lbnQocyksIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAqIC4uLiAgPT0gQWRk
aXRpb25hbCBPcGVyYXRpb24tc3BlY2lmaWMgZXh0cmEgYXJndW1lbnRzLCBkZXNjcmliZWQgYmVs
b3cuCisgKgorICogVmVyc2lvbnMgb2YgWGVuIHByaW9yIHRvIDMuMC4yIHByb3ZpZGVkIG9ubHkg
dGhlIGZvbGxvd2luZyBsZWdhY3kgdmVyc2lvbgorICogb2YgdGhpcyBoeXBlcmNhbGwsIHN1cHBv
cnRpbmcgb25seSB0aGUgY29tbWFuZHMgeWllbGQsIGJsb2NrIGFuZCBzaHV0ZG93bjoKKyAqICBJ
TlROIHNjaGVkX29wKElOVDMyIGNtZCwgVUlOVE4gYXJnKQorICogQGNtZCA9PSBTQ0hFRE9QXz8/
PyAoc2NoZWR1bGVyIG9wZXJhdGlvbikuCisgKiBAYXJnID09IDAgICAgICAgICAgICAgICAoU0NI
RURPUF95aWVsZCBhbmQgU0NIRURPUF9ibG9jaykKKyAqICAgICAgPT0gU0hVVERPV05fKiBjb2Rl
IChTQ0hFRE9QX3NodXRkb3duKQorICoKKyAqIFRoaXMgbGVnYWN5IHZlcnNpb24gaXMgYXZhaWxh
YmxlIHRvIG5ldyBndWVzdHMgYXM6CisgKiBgIElOVE4gSFlQRVJWSVNPUl9zY2hlZF9vcF9jb21w
YXQoZW51bSBzY2hlZF9vcCBjbWQsIFVJTlROIGFyZykKKyAqLworCisvKiBgIGVudW0gc2NoZWRf
b3AgeyAvLyBTQ0hFRE9QXyogPT4gc3RydWN0IHNjaGVkXyogKi8KKy8qCisgKiBWb2x1bnRhcmls
eSB5aWVsZCB0aGUgQ1BVLgorICogQGFyZyA9PSBOVUxMLgorICovCisjZGVmaW5lIFNDSEVET1Bf
eWllbGQgICAgICAgMAorCisvKgorICogQmxvY2sgZXhlY3V0aW9uIG9mIHRoaXMgVkNQVSB1bnRp
bCBhbiBldmVudCBpcyByZWNlaXZlZCBmb3IgcHJvY2Vzc2luZy4KKyAqIElmIGNhbGxlZCB3aXRo
IGV2ZW50IHVwY2FsbHMgbWFza2VkLCB0aGlzIG9wZXJhdGlvbiB3aWxsIGF0b21pY2FsbHkKKyAq
IHJlZW5hYmxlIGV2ZW50IGRlbGl2ZXJ5IGFuZCBjaGVjayBmb3IgcGVuZGluZyBldmVudHMgYmVm
b3JlIGJsb2NraW5nIHRoZQorICogVkNQVS4gVGhpcyBhdm9pZHMgYSAid2FrZXVwIHdhaXRpbmci
IHJhY2UuCisgKiBAYXJnID09IE5VTEwuCisgKi8KKyNkZWZpbmUgU0NIRURPUF9ibG9jayAgICAg
ICAxCisKKy8qCisgKiBIYWx0IGV4ZWN1dGlvbiBvZiB0aGlzIGRvbWFpbiAoYWxsIFZDUFVzKSBh
bmQgbm90aWZ5IHRoZSBzeXN0ZW0gY29udHJvbGxlci4KKyAqIEBhcmcgPT0gcG9pbnRlciB0byBz
Y2hlZF9zaHV0ZG93bl90IHN0cnVjdHVyZS4KKyAqCisgKiBJZiB0aGUgc2NoZWRfc2h1dGRvd25f
dCByZWFzb24gaXMgU0hVVERPV05fc3VzcGVuZCB0aGVuIHRoaXMKKyAqIGh5cGVyY2FsbCB0YWtl
cyBhbiBhZGRpdGlvbmFsIGV4dHJhIGFyZ3VtZW50IHdoaWNoIHNob3VsZCBiZSB0aGUKKyAqIE1G
TiBvZiB0aGUgZ3Vlc3QncyBzdGFydF9pbmZvX3QuCisgKgorICogSW4gYWRkaXRpb24sIHdoaWNo
IHJlYXNvbiBpcyBTSFVURE9XTl9zdXNwZW5kIHRoaXMgaHlwZXJjYWxsCisgKiByZXR1cm5zIDEg
aWYgc3VzcGVuZCB3YXMgY2FuY2VsbGVkIG9yIHRoZSBkb21haW4gd2FzIG1lcmVseQorICogY2hl
Y2twb2ludGVkLCBhbmQgMCBpZiBpdCBpcyByZXN1bWluZyBpbiBhIG5ldyBkb21haW4uCisgKi8K
KyNkZWZpbmUgU0NIRURPUF9zaHV0ZG93biAgICAyCisKKy8qCisgKiBQb2xsIGEgc2V0IG9mIGV2
ZW50LWNoYW5uZWwgcG9ydHMuIFJldHVybiB3aGVuIG9uZSBvciBtb3JlIGFyZSBwZW5kaW5nLiBB
bgorICogb3B0aW9uYWwgdGltZW91dCBtYXkgYmUgc3BlY2lmaWVkLgorICogQGFyZyA9PSBwb2lu
dGVyIHRvIHNjaGVkX3BvbGxfdCBzdHJ1Y3R1cmUuCisgKi8KKyNkZWZpbmUgU0NIRURPUF9wb2xs
ICAgICAgICAzCisKKy8qCisgKiBEZWNsYXJlIGEgc2h1dGRvd24gZm9yIGFub3RoZXIgZG9tYWlu
LiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBpcworICogaW4gaW50ZXJwcmV0aW5nIHNo
dXRkb3duIHJlcXVlc3RzIGFuZCByZWFzb25zIGZvciBmdWxseS12aXJ0dWFsaXplZAorICogZG9t
YWlucy4gIEEgcGFyYS12aXJ0dWFsaXplZCBkb21haW4gbWF5IHVzZSBTQ0hFRE9QX3NodXRkb3du
IGRpcmVjdGx5LgorICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3JlbW90ZV9zaHV0ZG93bl90
IHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3JlbW90ZV9zaHV0ZG93biAgICAgICAg
NAorCisvKgorICogTGF0Y2ggYSBzaHV0ZG93biBjb2RlLCBzbyB0aGF0IHdoZW4gdGhlIGRvbWFp
biBsYXRlciBzaHV0cyBkb3duIGl0CisgKiByZXBvcnRzIHRoaXMgY29kZSB0byB0aGUgY29udHJv
bCB0b29scy4KKyAqIEBhcmcgPT0gc2NoZWRfc2h1dGRvd25fdCwgYXMgZm9yIFNDSEVET1Bfc2h1
dGRvd24uCisgKi8KKyNkZWZpbmUgU0NIRURPUF9zaHV0ZG93bl9jb2RlIDUKKworLyoKKyAqIFNl
dHVwLCBwb2tlIGFuZCBkZXN0cm95IGEgZG9tYWluIHdhdGNoZG9nIHRpbWVyLgorICogQGFyZyA9
PSBwb2ludGVyIHRvIHNjaGVkX3dhdGNoZG9nX3Qgc3RydWN0dXJlLgorICogV2l0aCBpZCA9PSAw
LCBzZXR1cCBhIGRvbWFpbiB3YXRjaGRvZyB0aW1lciB0byBjYXVzZSBkb21haW4gc2h1dGRvd24K
KyAqICAgICAgICAgICAgICAgYWZ0ZXIgdGltZW91dCwgcmV0dXJucyB3YXRjaGRvZyBpZC4KKyAq
IFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCA9PSAwLCBkZXN0cm95IGRvbWFpbiB3YXRjaGRvZyB0
aW1lci4KKyAqIFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCAhPSAwLCBwb2tlIHdhdGNoZG9nIHRp
bWVyIGFuZCBzZXQgbmV3IHRpbWVvdXQuCisgKi8KKyNkZWZpbmUgU0NIRURPUF93YXRjaGRvZyAg
ICA2CisvKiBgIH0gKi8KKworc3RydWN0IHNjaGVkX3NodXRkb3duIHsKKyAgICBVSU5UMzIgcmVh
c29uOyAvKiBTSFVURE9XTl8qID0+IGVudW0gc2NoZWRfc2h1dGRvd25fcmVhc29uICovCit9Owor
dHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfc2h1dGRvd24gc2NoZWRfc2h1dGRvd25fdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHNjaGVkX3NodXRkb3duX3QpOworCitzdHJ1Y3Qgc2NoZWRfcG9sbCB7
CisgICAgWEVOX0dVRVNUX0hBTkRMRShldnRjaG5fcG9ydF90KSBwb3J0czsKKyAgICBVSU5UMzIg
bnJfcG9ydHM7CisgICAgVUlOVDY0IHRpbWVvdXQ7Cit9OwordHlwZWRlZiBzdHJ1Y3Qgc2NoZWRf
cG9sbCBzY2hlZF9wb2xsX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShzY2hlZF9wb2xsX3Qp
OworCitzdHJ1Y3Qgc2NoZWRfcmVtb3RlX3NodXRkb3duIHsKKyAgICBkb21pZF90IGRvbWFpbl9p
ZDsgICAgICAgICAvKiBSZW1vdGUgZG9tYWluIElEICovCisgICAgVUlOVDMyIHJlYXNvbjsgICAg
ICAgLyogU0hVVERPV05fKiA9PiBlbnVtIHNjaGVkX3NodXRkb3duX3JlYXNvbiAqLworfTsKK3R5
cGVkZWYgc3RydWN0IHNjaGVkX3JlbW90ZV9zaHV0ZG93biBzY2hlZF9yZW1vdGVfc2h1dGRvd25f
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3JlbW90ZV9zaHV0ZG93bl90KTsKKwor
c3RydWN0IHNjaGVkX3dhdGNoZG9nIHsKKyAgICBVSU5UMzIgaWQ7ICAgICAgICAgICAgICAgIC8q
IHdhdGNoZG9nIElEICovCisgICAgVUlOVDMyIHRpbWVvdXQ7ICAgICAgICAgICAvKiB0aW1lb3V0
ICovCit9OwordHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfd2F0Y2hkb2cgc2NoZWRfd2F0Y2hkb2dfdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3dhdGNoZG9nX3QpOworCisvKgorICogUmVh
c29uIGNvZGVzIGZvciBTQ0hFRE9QX3NodXRkb3duLiBUaGVzZSBtYXkgYmUgaW50ZXJwcmV0ZWQg
YnkgY29udHJvbAorICogc29mdHdhcmUgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBhY3Rp
b24uIEZvciB0aGUgbW9zdCBwYXJ0LCBYZW4gZG9lcworICogbm90IGNhcmUgYWJvdXQgdGhlIHNo
dXRkb3duIGNvZGUuCisgKi8KKy8qIGAgZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24geyAqLwor
I2RlZmluZSBTSFVURE9XTl9wb3dlcm9mZiAgIDAgIC8qIERvbWFpbiBleGl0ZWQgbm9ybWFsbHku
IENsZWFuIHVwIGFuZCBraWxsLiAqLworI2RlZmluZSBTSFVURE9XTl9yZWJvb3QgICAgIDEgIC8q
IENsZWFuIHVwLCBraWxsLCBhbmQgdGhlbiByZXN0YXJ0LiAgICAgICAgICAqLworI2RlZmluZSBT
SFVURE9XTl9zdXNwZW5kICAgIDIgIC8qIENsZWFuIHVwLCBzYXZlIHN1c3BlbmQgaW5mbywga2ls
bC4gICAgICAgICAqLworI2RlZmluZSBTSFVURE9XTl9jcmFzaCAgICAgIDMgIC8qIFRlbGwgY29u
dHJvbGxlciB3ZSd2ZSBjcmFzaGVkLiAgICAgICAgICAgICAqLworI2RlZmluZSBTSFVURE9XTl93
YXRjaGRvZyAgIDQgIC8qIFJlc3RhcnQgYmVjYXVzZSB3YXRjaGRvZyB0aW1lIGV4cGlyZWQuICAg
ICAqLworI2RlZmluZSBTSFVURE9XTl9NQVggICAgICAgIDQgIC8qIE1heGltdW0gdmFsaWQgc2h1
dGRvd24gcmVhc29uLiAgICAgICAgICAgICAqLworLyogYCB9ICovCisKKyNlbmRpZiAvKiBfX1hF
Tl9QVUJMSUNfU0NIRURfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl
OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFi
LXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0t
Z2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3RyYWNlLmggYi9Pdm1m
UGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mNzMzNGNlCi0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9J
bmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3RyYWNlLmgKQEAgLTAsMCArMSwzMTAgQEAKKy8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyAqIGluY2x1ZGUvcHVibGljL3RyYWNlLmgKKyAqIAorICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh
cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq
CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS
V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF
LgorICoKKyAqIE1hcmsgV2lsbGlhbXNvbiwgKEMpIDIwMDQgSW50ZWwgUmVzZWFyY2ggQ2FtYnJp
ZGdlCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQmluIFJlbgorICovCisKKyNpZm5kZWYgX19YRU5f
UFVCTElDX1RSQUNFX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfVFJBQ0VfSF9fCisKKyNkZWZp
bmUgVFJBQ0VfRVhUUkFfTUFYICAgIDcKKyNkZWZpbmUgVFJBQ0VfRVhUUkFfU0hJRlQgMjgKKwor
LyogVHJhY2UgY2xhc3NlcyAqLworI2RlZmluZSBUUkNfQ0xTX1NISUZUIDE2CisjZGVmaW5lIFRS
Q19HRU4gICAgICAweDAwMDFmMDAwICAgIC8qIEdlbmVyYWwgdHJhY2UgICAgICAgICAgICAqLwor
I2RlZmluZSBUUkNfU0NIRUQgICAgMHgwMDAyZjAwMCAgICAvKiBYZW4gU2NoZWR1bGVyIHRyYWNl
ICAgICAgKi8KKyNkZWZpbmUgVFJDX0RPTTBPUCAgIDB4MDAwNGYwMDAgICAgLyogWGVuIERPTTAg
b3BlcmF0aW9uIHRyYWNlICovCisjZGVmaW5lIFRSQ19IVk0gICAgICAweDAwMDhmMDAwICAgIC8q
IFhlbiBIVk0gdHJhY2UgICAgICAgICAgICAqLworI2RlZmluZSBUUkNfTUVNICAgICAgMHgwMDEw
ZjAwMCAgICAvKiBYZW4gbWVtb3J5IHRyYWNlICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX1BWICAg
ICAgIDB4MDAyMGYwMDAgICAgLyogWGVuIFBWIHRyYWNlcyAgICAgICAgICAgICovCisjZGVmaW5l
IFRSQ19TSEFET1cgICAweDAwNDBmMDAwICAgIC8qIFhlbiBzaGFkb3cgdHJhY2luZyAgICAgICAq
LworI2RlZmluZSBUUkNfSFcgICAgICAgMHgwMDgwZjAwMCAgICAvKiBYZW4gaGFyZHdhcmUtcmVs
YXRlZCB0cmFjZXMgKi8KKyNkZWZpbmUgVFJDX0dVRVNUICAgIDB4MDgwMGYwMDAgICAgLyogR3Vl
c3QtZ2VuZXJhdGVkIHRyYWNlcyAgICovCisjZGVmaW5lIFRSQ19BTEwgICAgICAweDBmZmZmMDAw
CisjZGVmaW5lIFRSQ19IRF9UT19FVkVOVCh4KSAoKHgpJjB4MGZmZmZmZmYpCisjZGVmaW5lIFRS
Q19IRF9DWUNMRV9GTEFHICgxVUw8PDMxKQorI2RlZmluZSBUUkNfSERfSU5DTFVERVNfQ1lDTEVf
Q09VTlQoeCkgKCAhISggKHgpICYgVFJDX0hEX0NZQ0xFX0ZMQUcgKSApCisjZGVmaW5lIFRSQ19I
RF9FWFRSQSh4KSAgICAoKCh4KT4+VFJBQ0VfRVhUUkFfU0hJRlQpJlRSQUNFX0VYVFJBX01BWCkK
KworLyogVHJhY2Ugc3ViY2xhc3NlcyAqLworI2RlZmluZSBUUkNfU1VCQ0xTX1NISUZUIDEyCisK
Ky8qIHRyYWNlIHN1YmNsYXNzZXMgZm9yIFNWTSAqLworI2RlZmluZSBUUkNfSFZNX0VOVFJZRVhJ
VCAweDAwMDgxMDAwICAgLyogVk1FTlRSWSBhbmQgI1ZNRVhJVCAgICAgICAqLworI2RlZmluZSBU
UkNfSFZNX0hBTkRMRVIgICAweDAwMDgyMDAwICAgLyogdmFyaW91cyBIVk0gaGFuZGxlcnMgICAg
ICAqLworCisjZGVmaW5lIFRSQ19TQ0hFRF9NSU4gICAgICAgMHgwMDAyMTAwMCAgIC8qIEp1c3Qg
cnVuc3RhdGUgY2hhbmdlcyAqLworI2RlZmluZSBUUkNfU0NIRURfQ0xBU1MgICAgIDB4MDAwMjIw
MDAgICAvKiBTY2hlZHVsZXItc3BlY2lmaWMgICAgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX1ZFUkJP
U0UgICAweDAwMDI4MDAwICAgLyogTW9yZSBpbmNsdXNpdmUgc2NoZWR1bGluZyAqLworCisvKgor
ICogVGhlIGhpZ2hlc3QgMyBiaXRzIG9mIHRoZSBsYXN0IDEyIGJpdHMgb2YgVFJDX1NDSEVEX0NM
QVNTIGFib3ZlIGFyZQorICogcmVzZXJ2ZWQgZm9yIGVuY29kaW5nIHdoYXQgc2NoZWR1bGVyIHBy
b2R1Y2VkIHRoZSBpbmZvcm1hdGlvbi4gVGhlCisgKiBhY3R1YWwgZXZlbnQgaXMgZW5jb2RlZCBp
biB0aGUgbGFzdCA5IGJpdHMuCisgKgorICogVGhpcyBtZWFucyB3ZSBoYXZlIDggc2NoZWR1bGlu
ZyBJRHMgYXZhaWxhYmxlICh3aGljaCBtZWFucyBhdCBtb3N0IDgKKyAqIHNjaGVkdWxlcnMgZ2Vu
ZXJhdGluZyBldmVudHMpIGFuZCwgaW4gZWFjaCBzY2hlZHVsZXIsIHVwIHRvIDUxMgorICogZGlm
ZmVyZW50IGV2ZW50cy4KKyAqLworI2RlZmluZSBUUkNfU0NIRURfSURfQklUUyAzCisjZGVmaW5l
IFRSQ19TQ0hFRF9JRF9TSElGVCAoVFJDX1NVQkNMU19TSElGVCAtIFRSQ19TQ0hFRF9JRF9CSVRT
KQorI2RlZmluZSBUUkNfU0NIRURfSURfTUFTSyAoKCgxVUw8PFRSQ19TQ0hFRF9JRF9CSVRTKSAt
IDEpIDw8IFRSQ19TQ0hFRF9JRF9TSElGVCkKKyNkZWZpbmUgVFJDX1NDSEVEX0VWVF9NQVNLICh+
KFRSQ19TQ0hFRF9JRF9NQVNLKSkKKworLyogUGVyLXNjaGVkdWxlciBJRHMsIHRvIGlkZW50aWZ5
IHNjaGVkdWxlciBzcGVjaWZpYyBldmVudHMgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0NTQ0hFRCAg
IDAKKyNkZWZpbmUgVFJDX1NDSEVEX0NTQ0hFRDIgIDEKKyNkZWZpbmUgVFJDX1NDSEVEX1NFREYg
ICAgIDIKKyNkZWZpbmUgVFJDX1NDSEVEX0FSSU5DNjUzIDMKKworLyogUGVyLXNjaGVkdWxlciB0
cmFjaW5nICovCisjZGVmaW5lIFRSQ19TQ0hFRF9DTEFTU19FVlQoX2MsIF9lKSBcCisgICggKCBU
UkNfU0NIRURfQ0xBU1MgfCBcCisgICAgICAoKFRSQ19TQ0hFRF8jI19jIDw8IFRSQ19TQ0hFRF9J
RF9TSElGVCkgJiBUUkNfU0NIRURfSURfTUFTSykgKSArIFwKKyAgICAoX2UgJiBUUkNfU0NIRURf
RVZUX01BU0spICkKKworLyogVHJhY2UgY2xhc3NlcyBmb3IgSGFyZHdhcmUgKi8KKyNkZWZpbmUg
VFJDX0hXX1BNICAgICAgICAgICAweDAwODAxMDAwICAgLyogUG93ZXIgbWFuYWdlbWVudCB0cmFj
ZXMgKi8KKyNkZWZpbmUgVFJDX0hXX0lSUSAgICAgICAgICAweDAwODAyMDAwICAgLyogVHJhY2Vz
IHJlbGF0aW5nIHRvIHRoZSBoYW5kbGluZyBvZiBJUlFzICovCisKKy8qIFRyYWNlIGV2ZW50cyBw
ZXIgY2xhc3MgKi8KKyNkZWZpbmUgVFJDX0xPU1RfUkVDT1JEUyAgICAgICAgKFRSQ19HRU4gKyAx
KQorI2RlZmluZSBUUkNfVFJBQ0VfV1JBUF9CVUZGRVIgIChUUkNfR0VOICsgMikKKyNkZWZpbmUg
VFJDX1RSQUNFX0NQVV9DSEFOR0UgICAgKFRSQ19HRU4gKyAzKQorCisjZGVmaW5lIFRSQ19TQ0hF
RF9SVU5TVEFURV9DSEFOR0UgICAoVFJDX1NDSEVEX01JTiArIDEpCisjZGVmaW5lIFRSQ19TQ0hF
RF9DT05USU5VRV9SVU5OSU5HICAoVFJDX1NDSEVEX01JTiArIDIpCisjZGVmaW5lIFRSQ19TQ0hF
RF9ET01fQUREICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgMSkKKyNkZWZpbmUgVFJDX1ND
SEVEX0RPTV9SRU0gICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICAyKQorI2RlZmluZSBUUkNf
U0NIRURfU0xFRVAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDMpCisjZGVmaW5lIFRS
Q19TQ0hFRF9XQUtFICAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNCkKKyNkZWZpbmUg
VFJDX1NDSEVEX1lJRUxEICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA1KQorI2RlZmlu
ZSBUUkNfU0NIRURfQkxPQ0sgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDYpCisjZGVm
aW5lIFRSQ19TQ0hFRF9TSFVURE9XTiAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNykKKyNk
ZWZpbmUgVFJDX1NDSEVEX0NUTCAgICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA4KQor
I2RlZmluZSBUUkNfU0NIRURfQURKRE9NICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDkp
CisjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0ggICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAx
MCkKKyNkZWZpbmUgVFJDX1NDSEVEX1NfVElNRVJfRk4gICAgIChUUkNfU0NIRURfVkVSQk9TRSAr
IDExKQorI2RlZmluZSBUUkNfU0NIRURfVF9USU1FUl9GTiAgICAgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgMTIpCisjZGVmaW5lIFRSQ19TQ0hFRF9ET01fVElNRVJfRk4gICAoVFJDX1NDSEVEX1ZFUkJP
U0UgKyAxMykKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZQUkVWIChUUkNfU0NIRURfVkVS
Qk9TRSArIDE0KQorI2RlZmluZSBUUkNfU0NIRURfU1dJVENIX0lORk5FWFQgKFRSQ19TQ0hFRF9W
RVJCT1NFICsgMTUpCisjZGVmaW5lIFRSQ19TQ0hFRF9TSFVURE9XTl9DT0RFICAoVFJDX1NDSEVE
X1ZFUkJPU0UgKyAxNikKKworI2RlZmluZSBUUkNfTUVNX1BBR0VfR1JBTlRfTUFQICAgICAgKFRS
Q19NRU0gKyAxKQorI2RlZmluZSBUUkNfTUVNX1BBR0VfR1JBTlRfVU5NQVAgICAgKFRSQ19NRU0g
KyAyKQorI2RlZmluZSBUUkNfTUVNX1BBR0VfR1JBTlRfVFJBTlNGRVIgKFRSQ19NRU0gKyAzKQor
I2RlZmluZSBUUkNfTUVNX1NFVF9QMk1fRU5UUlkgICAgICAgKFRSQ19NRU0gKyA0KQorI2RlZmlu
ZSBUUkNfTUVNX0RFQ1JFQVNFX1JFU0VSVkFUSU9OIChUUkNfTUVNICsgNSkKKyNkZWZpbmUgVFJD
X01FTV9QT0RfUE9QVUxBVEUgICAgICAgIChUUkNfTUVNICsgMTYpCisjZGVmaW5lIFRSQ19NRU1f
UE9EX1pFUk9fUkVDTEFJTSAgICAoVFJDX01FTSArIDE3KQorI2RlZmluZSBUUkNfTUVNX1BPRF9T
VVBFUlBBR0VfU1BMSU5URVIgKFRSQ19NRU0gKyAxOCkKKworI2RlZmluZSBUUkNfUFZfRU5UUlkg
ICAweDAwMjAxMDAwIC8qIEh5cGVydmlzb3IgZW50cnkgcG9pbnRzIGZvciBQViBndWVzdHMuICov
CisjZGVmaW5lIFRSQ19QVl9TVUJDQUxMIDB4MDAyMDIwMDAgLyogU3ViLWNhbGwgaW4gYSBtdWx0
aWNhbGwgaHlwZXJjYWxsICovCisKKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTCAgICAgICAgICAg
ICAoVFJDX1BWX0VOVFJZICsgIDEpCisjZGVmaW5lIFRSQ19QVl9UUkFQICAgICAgICAgICAgICAg
ICAgKFRSQ19QVl9FTlRSWSArICAzKQorI2RlZmluZSBUUkNfUFZfUEFHRV9GQVVMVCAgICAgICAg
ICAgIChUUkNfUFZfRU5UUlkgKyAgNCkKKyNkZWZpbmUgVFJDX1BWX0ZPUkNFRF9JTlZBTElEX09Q
ICAgICAoVFJDX1BWX0VOVFJZICsgIDUpCisjZGVmaW5lIFRSQ19QVl9FTVVMQVRFX1BSSVZPUCAg
ICAgICAgKFRSQ19QVl9FTlRSWSArICA2KQorI2RlZmluZSBUUkNfUFZfRU1VTEFURV80R0IgICAg
ICAgICAgIChUUkNfUFZfRU5UUlkgKyAgNykKKyNkZWZpbmUgVFJDX1BWX01BVEhfU1RBVEVfUkVT
VE9SRSAgICAoVFJDX1BWX0VOVFJZICsgIDgpCisjZGVmaW5lIFRSQ19QVl9QQUdJTkdfRklYVVAg
ICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA5KQorI2RlZmluZSBUUkNfUFZfR0RUX0xEVF9NQVBQ
SU5HX0ZBVUxUIChUUkNfUFZfRU5UUlkgKyAxMCkKKyNkZWZpbmUgVFJDX1BWX1BUV1JfRU1VTEFU
SU9OICAgICAgICAoVFJDX1BWX0VOVFJZICsgMTEpCisjZGVmaW5lIFRSQ19QVl9QVFdSX0VNVUxB
VElPTl9QQUUgICAgKFRSQ19QVl9FTlRSWSArIDEyKQorI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxM
X1YyICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAxMykKKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FM
TF9TVUJDQUxMICAgICAoVFJDX1BWX1NVQkNBTEwgKyAxNCkKKworLyoKKyAqIFRSQ19QVl9IWVBF
UkNBTExfVjIgZm9ybWF0CisgKgorICogT25seSBzb21lIG9mIHRoZSBoeXBlcmNhbGwgYXJndW1l
bnQgYXJlIHJlY29yZGVkLiBCaXQgZmllbGRzIEEwIHRvCisgKiBBNSBpbiB0aGUgZmlyc3QgZXh0
cmEgd29yZCBhcmUgc2V0IGlmIHRoZSBhcmd1bWVudCBpcyBwcmVzZW50IGFuZAorICogdGhlIGFy
Z3VtZW50cyB0aGVtc2VsdmVzIGFyZSBwYWNrZWQgc2VxdWVudGlhbGx5IGluIHRoZSBmb2xsb3dp
bmcKKyAqIHdvcmRzLgorICoKKyAqIFRoZSBUUkNfNjRfRkxBRyBiaXQgaXMgbm90IHNldCBmb3Ig
dGhlc2UgZXZlbnRzIChldmVuIGlmIHRoZXJlIGFyZQorICogNjQtYml0IGFyZ3VtZW50cyBpbiB0
aGUgcmVjb3JkKS4KKyAqCisgKiBXb3JkCisgKiAwICAgIGJpdCAzMSAzMHwyOSAyOHwyNyAyNnwy
NSAyNHwyMyAyMnwyMSAyMHwxOSAuLi4gMAorICogICAgICAgICAgQTUgICB8QTQgICB8QTMgICB8
QTIgICB8QTEgICB8QTAgICB8SHlwZXJjYWxsIG9wCisgKiAxICAgIEZpcnN0IDMyIGJpdCAob3Ig
bG93IHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcgaW4gcmVjb3JkCisgKiAyICAgIFNlY29uZCAz
MiBiaXQgKG9yIGhpZ2ggd29yZCBvZiBmaXJzdCA2NCBiaXQpIGFyZyBpbiByZWNvcmQKKyAqIC4u
LgorICoKKyAqIEEwLUE1IGJpdGZpZWxkIHZhbHVlczoKKyAqCisgKiAgIDAwYiAgQXJndW1lbnQg
bm90IHByZXNlbnQKKyAqICAgMDFiICAzMi1iaXQgYXJndW1lbnQgcHJlc2VudAorICogICAxMGIg
IDY0LWJpdCBhcmd1bWVudCBwcmVzZW50CisgKiAgIDExYiAgUmVzZXJ2ZWQKKyAqLworI2RlZmlu
ZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR18zMihpKSAoMHgxIDw8ICgyMCArIDIqKGkpKSkKKyNk
ZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfNjQoaSkgKDB4MiA8PCAoMjAgKyAyKihpKSkp
CisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHX01BU0sgICgweGZmZjAwMDAwKQorCisj
ZGVmaW5lIFRSQ19TSEFET1dfTk9UX1NIQURPVyAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cg
KyAgMSkKKyNkZWZpbmUgVFJDX1NIQURPV19GQVNUX1BST1BBR0FURSAgICAgICAgICAgICAoVFJD
X1NIQURPVyArICAyKQorI2RlZmluZSBUUkNfU0hBRE9XX0ZBU1RfTU1JTyAgICAgICAgICAgICAg
ICAgIChUUkNfU0hBRE9XICsgIDMpCisjZGVmaW5lIFRSQ19TSEFET1dfRkFMU0VfRkFTVF9QQVRI
ICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNCkKKyNkZWZpbmUgVFJDX1NIQURPV19NTUlPICAg
ICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA1KQorI2RlZmluZSBUUkNfU0hBRE9X
X0ZJWFVQICAgICAgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDYpCisjZGVmaW5lIFRS
Q19TSEFET1dfRE9NRl9EWUlORyAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNykKKyNk
ZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyAr
ICA4KQorI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5TSEFET1dfVVNFUiAgICAgIChUUkNf
U0hBRE9XICsgIDkpCisjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURV9VTlNIQURPV19FVlRJTkog
ICAgKFRSQ19TSEFET1cgKyAxMCkKKyNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9X
X1VOSEFORExFRCAoVFJDX1NIQURPVyArIDExKQorI2RlZmluZSBUUkNfU0hBRE9XX1dSTUFQX0JG
ICAgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTIpCisjZGVmaW5lIFRSQ19TSEFET1df
UFJFQUxMT0NfVU5QSU4gICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAxMykKKyNkZWZpbmUgVFJD
X1NIQURPV19SRVNZTkNfRlVMTCAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDE0KQorI2Rl
ZmluZSBUUkNfU0hBRE9XX1JFU1lOQ19PTkxZICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsg
MTUpCisKKy8qIHRyYWNlIGV2ZW50cyBwZXIgc3ViY2xhc3MgKi8KKyNkZWZpbmUgVFJDX0hWTV9O
RVNURURGTEFHICAgICAgKDB4NDAwKQorI2RlZmluZSBUUkNfSFZNX1ZNRU5UUlkgICAgICAgICAo
VFJDX0hWTV9FTlRSWUVYSVQgKyAweDAxKQorI2RlZmluZSBUUkNfSFZNX1ZNRVhJVCAgICAgICAg
ICAoVFJDX0hWTV9FTlRSWUVYSVQgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1ZNRVhJVDY0ICAg
ICAgICAoVFJDX0hWTV9FTlRSWUVYSVQgKyBUUkNfNjRfRkxBRyArIDB4MDIpCisjZGVmaW5lIFRS
Q19IVk1fUEZfWEVOICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAxKQorI2RlZmluZSBU
UkNfSFZNX1BGX1hFTjY0ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAw
eDAxKQorI2RlZmluZSBUUkNfSFZNX1BGX0lOSkVDVCAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgwMikKKyNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1Q2NCAgICAgKFRSQ19IVk1fSEFORExFUiAr
IFRSQ182NF9GTEFHICsgMHgwMikKKyNkZWZpbmUgVFJDX0hWTV9JTkpfRVhDICAgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MDMpCisjZGVmaW5lIFRSQ19IVk1fSU5KX1ZJUlEgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDA0KQorI2RlZmluZSBUUkNfSFZNX1JFSU5KX1ZJUlEgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgwNSkKKyNkZWZpbmUgVFJDX0hWTV9JT19SRUFEICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MDYpCisjZGVmaW5lIFRSQ19IVk1fSU9fV1JJVEUgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDA3KQorI2RlZmluZSBUUkNfSFZNX0NSX1JFQUQgICAgICAg
ICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwOCkKKyNkZWZpbmUgVFJDX0hWTV9DUl9SRUFENjQgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgwOCkKKyNkZWZpbmUgVFJDX0hW
TV9DUl9XUklURSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDkpCisjZGVmaW5lIFRSQ19I
Vk1fQ1JfV1JJVEU2NCAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDkp
CisjZGVmaW5lIFRSQ19IVk1fRFJfUkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBB
KQorI2RlZmluZSBUUkNfSFZNX0RSX1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgw
QikKKyNkZWZpbmUgVFJDX0hWTV9NU1JfUkVBRCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MEMpCisjZGVmaW5lIFRSQ19IVk1fTVNSX1dSSVRFICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw
eDBEKQorI2RlZmluZSBUUkNfSFZNX0NQVUlEICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgwRSkKKyNkZWZpbmUgVFJDX0hWTV9JTlRSICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiAr
IDB4MEYpCisjZGVmaW5lIFRSQ19IVk1fTk1JICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIg
KyAweDEwKQorI2RlZmluZSBUUkNfSFZNX1NNSSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVS
ICsgMHgxMSkKKyNkZWZpbmUgVFJDX0hWTV9WTU1DQUxMICAgICAgICAgKFRSQ19IVk1fSEFORExF
UiArIDB4MTIpCisjZGVmaW5lIFRSQ19IVk1fSExUICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRM
RVIgKyAweDEzKQorI2RlZmluZSBUUkNfSFZNX0lOVkxQRyAgICAgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgxNCkKKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEc2NCAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIFRSQ182NF9GTEFHICsgMHgxNCkKKyNkZWZpbmUgVFJDX0hWTV9NQ0UgICAgICAgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTUpCisjZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1JFQUQg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE2KQorI2RlZmluZSBUUkNfSFZNX0lPTUVNX1JFQUQg
ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNykKKyNkZWZpbmUgVFJDX0hWTV9DTFRTICAgICAg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTgpCisjZGVmaW5lIFRSQ19IVk1fTE1TVyAgICAg
ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE5KQorI2RlZmluZSBUUkNfSFZNX0xNU1c2NCAg
ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDE5KQorI2RlZmluZSBU
UkNfSFZNX1JEVFNDICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxYSkKKyNkZWZpbmUg
VFJDX0hWTV9JTlRSX1dJTkRPVyAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjApCisjZGVmaW5l
IFRSQ19IVk1fTlBGICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxKQorI2RlZmlu
ZSBUUkNfSFZNX1JFQUxNT0RFX0VNVUxBVEUgKFRSQ19IVk1fSEFORExFUiArIDB4MjIpCisjZGVm
aW5lIFRSQ19IVk1fVFJBUCAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMykKKyNk
ZWZpbmUgVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI0KQor
I2RlZmluZSBUUkNfSFZNX1ZMQVBJQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjUp
CisKKyNkZWZpbmUgVFJDX0hWTV9JT1BPUlRfV1JJVEUgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MjE2KQorI2RlZmluZSBUUkNfSFZNX0lPTUVNX1dSSVRFICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgyMTcpCisKKy8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCisjZGVmaW5lIFRSQ19Q
TV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQorI2RlZmluZSBUUkNfUE1fSURM
RV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKKyNkZWZpbmUgVFJDX1BNX0lETEVfRVhJ
VCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCisKKy8qIFRyYWNlIGV2ZW50cyBmb3IgSVJRcyAq
LworI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9ERUxBWSAoVFJDX0hXX0lSUSArIDB4
MSkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAgICAgICAgKFRSQ19IV19JUlEgKyAw
eDIpCisjZGVmaW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1IgICAgICAgIChUUkNfSFdfSVJRICsg
MHgzKQorI2RlZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAoVFJDX0hXX0lSUSAr
IDB4NCkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAgKFRSQ19IV19JUlEg
KyAweDUpCisjZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAgIChUUkNfSFdfSVJR
ICsgMHg2KQorI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAgICAoVFJDX0hXX0lS
USArIDB4NykKKyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAgICAgKFRSQ19IV19J
UlEgKyAweDgpCisKKy8qCisgKiBFdmVudCBGbGFncworICoKKyAqIFNvbWUgZXZlbnRzIChlLmcs
IFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVsdGlwbGUKKyAqIHJl
Y29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUK
KyAqIGRpZmZlcmVudCBmb3JtYXRzLgorICovCisjZGVmaW5lIFRSQ182NF9GTEFHIDB4MTAwIC8q
IEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAzMiBiaXRzKSAqLworCisvKiBUaGlz
IHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciByZWNvcmQuICovCitz
dHJ1Y3QgdF9yZWMgeworICAgIFVJTlQzMiBldmVudDoyODsKKyAgICBVSU5UMzIgZXh0cmFfdTMy
OjM7ICAgICAgICAgLyogIyBlbnRyaWVzIGluIHRyYWlsaW5nIGV4dHJhX3UzMltdIGFycmF5ICov
CisgICAgVUlOVDMyIGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3lj
bGVzPyAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVJTlQz
MiBjeWNsZXNfbG8sIGN5Y2xlc19oaTsgLyogY3ljbGUgY291bnRlciB0aW1lc3RhbXAgKi8KKyAg
ICAgICAgICAgIFVJTlQzMiBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZlbnQgZGF0YSBpdGVt
cyAqLworICAgICAgICB9IGN5Y2xlczsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVJ
TlQzMiBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZlbnQgZGF0YSBpdGVtcyAqLworICAgICAg
ICB9IG5vY3ljbGVzOworICAgIH0gdTsKK307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBjb250
YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFkCisg
KiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFuIGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgorICovCitz
dHJ1Y3QgdF9idWYgeworICAgIC8qIEFzc3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAg
WCBpcyBnZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4KKyAgICAgKiBDT05TIGFuZCBQUk9EIGFy
ZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6CisgICAgICogICAgIDAgPD0gY29ucyA8IDIqWAor
ICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgKKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBh
ZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3aGVuIFggaXMgbm90IGEKKyAgICAgKiBw
b3dlciBvZiAyOgorICAgICAqICAgICAoKCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAoMl4z
MikgJSBYCisgICAgICovCisgICAgVUlOVDMyIGNvbnM7ICAgLyogT2Zmc2V0IG9mIG5leHQgaXRl
bSB0byBiZSBjb25zdW1lZCBieSBjb250cm9sIHRvb2xzLiAqLworICAgIFVJTlQzMiBwcm9kOyAg
IC8qIE9mZnNldCBvZiBuZXh0IGl0ZW0gdG8gYmUgcHJvZHVjZWQgYnkgWGVuLiAgICAgICAgICAg
Ki8KKyAgICAvKiAgUmVjb3JkcyBmb2xsb3cgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1ldGEtZGF0
YSBoZWFkZXIuICAgICovCit9OworCisvKiBTdHJ1Y3R1cmUgdXNlZCB0byBwYXNzIE1GTnMgdG8g
dGhlIHRyYWNlIGJ1ZmZlcnMgYmFjayB0byB0cmFjZSBjb25zdW1lcnMuCisgKiBPZmZzZXQgaXMg
YW4gb2Zmc2V0IGludG8gdGhlIG1hcHBlZCBzdHJ1Y3R1cmUgd2hlcmUgdGhlIG1mbiBsaXN0IHdp
bGwgYmUgaGVsZC4KKyAqIE1GTnMgd2lsbCBiZSBhdCAoKFVJTlROICopKHRfaW5mbykpKyh0X2lu
Zm8tPmNwdV9vZmZzZXRbY3B1XSkuCisgKi8KK3N0cnVjdCB0X2luZm8geworICAgIFVJTlQxNiB0
YnVmX3NpemU7IC8qIFNpemUgaW4gcGFnZXMgb2YgZWFjaCB0cmFjZSBidWZmZXIgKi8KKyAgICBV
SU5UMTYgbWZuX29mZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2luZm8gc3RydWN0dXJlIG9m
IHRoZSBwYWdlIGxpc3QgcGVyIGNwdSAqLworICAgIC8qIE1GTiBsaXN0cyBpbW1lZGlhdGVseSBh
ZnRlciB0aGUgaGVhZGVyICovCit9OworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hf
XyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0
eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k
ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL092bWZQa2cvSW5j
bHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4tY29tcGF0LmggYi9Pdm1mUGtnL0luY2x1ZGUv
SW5kdXN0cnlTdGFuZGFyZC9YZW4veGVuLWNvbXBhdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjNlYjgwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1ZGUv
SW5kdXN0cnlTdGFuZGFyZC9YZW4veGVuLWNvbXBhdC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKyAqIHhlbi1jb21wYXQuaAorICogCisgKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KKyAqIAorICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKKyAqLworCisjaWZuZGVmIF9fWEVO
X1BVQkxJQ19YRU5fQ09NUEFUX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9I
X18KKworI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNDAw
CisKKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKy8qIFhl
biBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVz
dCBpbnRlcmZhY2UuICovCisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5f
TEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KKyNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18pCisvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdl
dCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyAweDAwMDAwMDAwCisjZW5kaWYKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2Vycm9yICJUaGVzZSBoZWFkZXIg
ZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCisj
ZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0t
Z2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi5oIGIvT3ZtZlBr
Zy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmUxOWYzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0luY2x1
ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4veGVuLmgKQEAgLTAsMCArMSw4OTcgQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqIHhlbi5oCisgKiAKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byBY
ZW4uCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICog
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElO
IFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEsgQSBGcmFzZXIKKyAq
LworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19Y
RU5fSF9fCisKKyNpbmNsdWRlICJ4ZW4tY29tcGF0LmgiCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9f
KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisjaW5jbHVkZSAiYXJjaC14ODYveGVuLmgiCisjZWxp
ZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKQorI2luY2x1ZGUgImFy
Y2gtYXJtLmgiCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCisjZW5k
aWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIEd1ZXN0IGhhbmRsZXMgZm9yIHByaW1pdGl2
ZSBDIHR5cGVzLiAqLworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoQ0hBUjgpOworLyogX19ERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRSh1Y2hhciwgdW5zaWduZWQgY2hhcik7ICovCitERUZJTkVfWEVO
X0dVRVNUX0hBTkRMRShJTlQzMik7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQsICBV
SU5UMzIpOworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCitERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRShJTlROKTsKK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWxv
bmcsIFVJTlROKTsKKyNlbmRpZgorREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoVk9JRCk7CisKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKFVJTlQ2NCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5fcGZuX3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3QpOworI2VuZGlm
CisKKy8qCisgKiBIWVBFUkNBTExTCisgKi8KKworLyogYGluY29udGVudHMgMTAwIGhjYWxscyBM
aXN0IG9mIGh5cGVyY2FsbHMKKyAqIGAgZW51bSBoeXBlcmNhbGxfbnVtIHsgLy8gX19IWVBFUlZJ
U09SXyogPT4gSFlQRVJWSVNPUl8qKCkKKyAqLworCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRf
dHJhcF90YWJsZSAgICAgICAgMAorI2RlZmluZSBfX0hZUEVSVklTT1JfbW11X3VwZGF0ZSAgICAg
ICAgICAgIDEKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9nZHQgICAgICAgICAgICAgICAyCisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9zdGFja19zd2l0Y2ggICAgICAgICAgMworI2RlZmluZSBfX0hZ
UEVSVklTT1Jfc2V0X2NhbGxiYWNrcyAgICAgICAgIDQKKyNkZWZpbmUgX19IWVBFUlZJU09SX2Zw
dV90YXNrc3dpdGNoICAgICAgICA1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcF9jb21w
YXQgICAgICAgNiAvKiBjb21wYXQgc2luY2UgMHgwMDAzMDEwMSAqLworI2RlZmluZSBfX0hZUEVS
VklTT1JfcGxhdGZvcm1fb3AgICAgICAgICAgIDcKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9k
ZWJ1Z3JlZyAgICAgICAgICA4CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9nZXRfZGVidWdyZWcgICAg
ICAgICAgOQorI2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IgICAgMTAKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX21lbW9yeV9vcCAgICAgICAgICAgIDEyCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9tdWx0aWNhbGwgICAgICAgICAgICAxMworI2RlZmluZSBfX0hZUEVSVklTT1JfdXBk
YXRlX3ZhX21hcHBpbmcgICAgMTQKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90aW1lcl9vcCAg
ICAgICAgIDE1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdCAx
NiAvKiBjb21wYXQgc2luY2UgMHgwMDAzMDIwMiAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfeGVu
X3ZlcnNpb24gICAgICAgICAgMTcKKyNkZWZpbmUgX19IWVBFUlZJU09SX2NvbnNvbGVfaW8gICAg
ICAgICAgIDE4CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wX2NvbXBhdCAgICAxOSAv
KiBjb21wYXQgc2luY2UgMHgwMDAzMDIwMiAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfZ3JhbnRf
dGFibGVfb3AgICAgICAgMjAKKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZtX2Fzc2lzdCAgICAgICAg
ICAgIDIxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFp
biAyMgorI2RlZmluZSBfX0hZUEVSVklTT1JfaXJldCAgICAgICAgICAgICAgICAgMjMgLyogeDg2
IG9ubHkgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZjcHVfb3AgICAgICAgICAgICAgIDI0Cisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfc2VnbWVudF9iYXNlICAgICAyNSAvKiB4ODYvNjQgb25s
eSAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfbW11ZXh0X29wICAgICAgICAgICAgMjYKKyNkZWZp
bmUgX19IWVBFUlZJU09SX3hzbV9vcCAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9ubWlfb3AgICAgICAgICAgICAgICAyOAorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2NoZWRf
b3AgICAgICAgICAgICAgMjkKKyNkZWZpbmUgX19IWVBFUlZJU09SX2NhbGxiYWNrX29wICAgICAg
ICAgIDMwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5vcHJvZl9vcCAgICAgICAgICAzMQorI2Rl
ZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcCAgICAgMzIKKyNkZWZpbmUgX19IWVBF
UlZJU09SX3BoeXNkZXZfb3AgICAgICAgICAgIDMzCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9odm1f
b3AgICAgICAgICAgICAgICAzNAorI2RlZmluZSBfX0hZUEVSVklTT1Jfc3lzY3RsICAgICAgICAg
ICAgICAgMzUKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvbWN0bCAgICAgICAgICAgICAgIDM2Cisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9rZXhlY19vcCAgICAgICAgICAgICAzNworI2RlZmluZSBfX0hZ
UEVSVklTT1JfdG1lbV9vcCAgICAgICAgICAgICAgMzgKKyNkZWZpbmUgX19IWVBFUlZJU09SX3hj
X3Jlc2VydmVkX29wICAgICAgIDM5IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8KKworLyog
QXJjaGl0ZWN0dXJlLXNwZWNpZmljIGh5cGVyY2FsbCBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUg
X19IWVBFUlZJU09SX2FyY2hfMCAgICAgICAgICAgICAgIDQ4CisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9hcmNoXzEgICAgICAgICAgICAgICA0OQorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8yICAg
ICAgICAgICAgICAgNTAKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMyAgICAgICAgICAgICAg
IDUxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzQgICAgICAgICAgICAgICA1MgorI2RlZmlu
ZSBfX0hZUEVSVklTT1JfYXJjaF81ICAgICAgICAgICAgICAgNTMKKyNkZWZpbmUgX19IWVBFUlZJ
U09SX2FyY2hfNiAgICAgICAgICAgICAgIDU0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzcg
ICAgICAgICAgICAgICA1NQorCisvKiBgIH0gKi8KKworLyoKKyAqIEhZUEVSQ0FMTCBDT01QQVRJ
QklMSVRZLgorICovCisKKy8qIE5ldyBzY2hlZF9vcCBoeXBlcmNhbGwgaW50cm9kdWNlZCBpbiAw
eDAwMDMwMTAxLiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMTAx
CisjdW5kZWYgX19IWVBFUlZJU09SX3NjaGVkX29wCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hl
ZF9vcCBfX0hZUEVSVklTT1Jfc2NoZWRfb3BfY29tcGF0CisjZW5kaWYKKworLyogTmV3IGV2ZW50
LWNoYW5uZWwgYW5kIHBoeXNkZXYgaHlwZXJjYWxscyBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDIu
ICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDIKKyN1bmRlZiBf
X0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcAorI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRf
Y2hhbm5lbF9vcCBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcF9jb21wYXQKKyN1bmRlZiBf
X0hZUEVSVklTT1JfcGh5c2Rldl9vcAorI2RlZmluZSBfX0hZUEVSVklTT1JfcGh5c2Rldl9vcCBf
X0hZUEVSVklTT1JfcGh5c2Rldl9vcF9jb21wYXQKKyNlbmRpZgorCisvKiBOZXcgcGxhdGZvcm1f
b3AgaHlwZXJjYWxsIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwNC4gKi8KKyNpZiBfX1hFTl9JTlRF
UkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwNAorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tMF9v
cCBfX0hZUEVSVklTT1JfcGxhdGZvcm1fb3AKKyNlbmRpZgorCisvKiAKKyAqIFZJUlRVQUwgSU5U
RVJSVVBUUworICogCisgKiBWaXJ0dWFsIGludGVycnVwdHMgdGhhdCBhIGd1ZXN0IE9TIG1heSBy
ZWNlaXZlIGZyb20gWGVuLgorICogCisgKiBJbiB0aGUgc2lkZSBjb21tZW50cywgJ1YuJyBkZW5v
dGVzIGEgcGVyLVZDUFUgVklSUSB3aGlsZSAnRy4nIGRlbm90ZXMgYQorICogZ2xvYmFsIFZJUlEu
IFRoZSBmb3JtZXIgY2FuIGJlIGJvdW5kIG9uY2UgcGVyIFZDUFUgYW5kIGNhbm5vdCBiZSByZS1i
b3VuZC4KKyAqIFRoZSBsYXR0ZXIgY2FuIGJlIGFsbG9jYXRlZCBvbmx5IG9uY2UgcGVyIGd1ZXN0
OiB0aGV5IG11c3QgaW5pdGlhbGx5IGJlCisgKiBhbGxvY2F0ZWQgdG8gVkNQVTAgYnV0IGNhbiBz
dWJzZXF1ZW50bHkgYmUgcmUtYm91bmQuCisgKi8KKy8qIGAgZW51bSB2aXJxIHsgKi8KKyNkZWZp
bmUgVklSUV9USU1FUiAgICAgIDAgIC8qIFYuIFRpbWViYXNlIHVwZGF0ZSwgYW5kL29yIHJlcXVl
c3RlZCB0aW1lb3V0LiAgKi8KKyNkZWZpbmUgVklSUV9ERUJVRyAgICAgIDEgIC8qIFYuIFJlcXVl
c3QgZ3Vlc3QgdG8gZHVtcCBkZWJ1ZyBpbmZvLiAgICAgICAgICAgKi8KKyNkZWZpbmUgVklSUV9D
T05TT0xFICAgIDIgIC8qIEcuIChET00wKSBCeXRlcyByZWNlaXZlZCBvbiBlbWVyZ2VuY3kgY29u
c29sZS4gKi8KKyNkZWZpbmUgVklSUV9ET01fRVhDICAgIDMgIC8qIEcuIChET00wKSBFeGNlcHRp
b25hbCBldmVudCBmb3Igc29tZSBkb21haW4uICAgKi8KKyNkZWZpbmUgVklSUV9UQlVGICAgICAg
IDQgIC8qIEcuIChET00wKSBUcmFjZSBidWZmZXIgaGFzIHJlY29yZHMgYXZhaWxhYmxlLiAgKi8K
KyNkZWZpbmUgVklSUV9ERUJVR0dFUiAgIDYgIC8qIEcuIChET00wKSBBIGRvbWFpbiBoYXMgcGF1
c2VkIGZvciBkZWJ1Z2dpbmcuICAgKi8KKyNkZWZpbmUgVklSUV9YRU5PUFJPRiAgIDcgIC8qIFYu
IFhlbk9wcm9maWxlIGludGVycnVwdDogbmV3IHNhbXBsZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUg
VklSUV9DT05fUklORyAgIDggIC8qIEcuIChET00wKSBCeXRlcyByZWNlaXZlZCBvbiBjb25zb2xl
ICAgICAgICAgICAgKi8KKyNkZWZpbmUgVklSUV9QQ1BVX1NUQVRFIDkgIC8qIEcuIChET00wKSBQ
Q1BVIHN0YXRlIGNoYW5nZWQgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVklSUV9NRU1f
RVZFTlQgIDEwIC8qIEcuIChET00wKSBBIG1lbW9yeSBldmVudCBoYXMgb2NjdXJlZCAgICAgICAg
ICAgKi8KKyNkZWZpbmUgVklSUV9YQ19SRVNFUlZFRCAxMSAvKiBHLiBSZXNlcnZlZCBmb3IgWGVu
Q2xpZW50ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVklSUV9FTk9NRU0gICAgIDEy
IC8qIEcuIChET00wKSBMb3cgb24gaGVhcCBtZW1vcnkgICAgICAgKi8KKworLyogQXJjaGl0ZWN0
dXJlLXNwZWNpZmljIFZJUlEgZGVmaW5pdGlvbnMuICovCisjZGVmaW5lIFZJUlFfQVJDSF8wICAg
IDE2CisjZGVmaW5lIFZJUlFfQVJDSF8xICAgIDE3CisjZGVmaW5lIFZJUlFfQVJDSF8yICAgIDE4
CisjZGVmaW5lIFZJUlFfQVJDSF8zICAgIDE5CisjZGVmaW5lIFZJUlFfQVJDSF80ICAgIDIwCisj
ZGVmaW5lIFZJUlFfQVJDSF81ICAgIDIxCisjZGVmaW5lIFZJUlFfQVJDSF82ICAgIDIyCisjZGVm
aW5lIFZJUlFfQVJDSF83ICAgIDIzCisvKiBgIH0gKi8KKworI2RlZmluZSBOUl9WSVJRUyAgICAg
ICAyNAorCisvKgorICogYCBlbnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX21tdV91
cGRhdGUoY29uc3Qgc3RydWN0IG1tdV91cGRhdGUgcmVxc1tdLAorICogYCAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkICpkb25lX291dCwKKyAqIGAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcmVpZ25kb20pCisgKiBgCisgKiBAcmVxcyBpcyBh
biBhcnJheSBvZiBtbXVfdXBkYXRlX3Qgc3RydWN0dXJlcyAoKHB0ciwgdmFsKSBwYWlycykuCisg
KiBAY291bnQgaXMgdGhlIGxlbmd0aCBvZiB0aGUgYWJvdmUgYXJyYXkuCisgKiBAcGRvbmUgaXMg
YW4gb3V0cHV0IHBhcmFtZXRlciBpbmRpY2F0aW5nIG51bWJlciBvZiBjb21wbGV0ZWQgb3BlcmF0
aW9ucworICogQGZvcmVpZ25kb21bMTU6MF06IEZELCB0aGUgZXhwZWN0ZWQgb3duZXIgb2YgZGF0
YSBwYWdlcyByZWZlcmVuY2VkIGluIHRoaXMKKyAqICAgICAgICAgICAgICAgICAgICBoeXBlcmNh
bGwgaW52b2NhdGlvbi4gQ2FuIGJlIERPTUlEX1NFTEYuCisgKiBAZm9yZWlnbmRvbVszMToxNl06
IFBGRCwgdGhlIGV4cGVjdGVkIG93bmVyIG9mIHBhZ2V0YWJsZSBwYWdlcyByZWZlcmVuY2VkCisg
KiAgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgaHlwZXJjYWxsIGludm9jYXRpb24uIFRoZSB2
YWx1ZSBvZiB0aGlzIGZpZWxkCisgKiAgICAgICAgICAgICAgICAgICAgICh4KSBlbmNvZGVzIHRo
ZSBQRkQgYXMgZm9sbG93czoKKyAqICAgICAgICAgICAgICAgICAgICAgeCA9PSAwID0+IFBGRCA9
PSBET01JRF9TRUxGCisgKiAgICAgICAgICAgICAgICAgICAgIHggIT0gMCA9PiBQRkQgPT0geCAt
IDEKKyAqIAorICogU3ViLWNvbW1hbmRzOiBwdHJbMTowXSBzcGVjaWZpZXMgdGhlIGFwcHJvcHJp
YXRlIE1NVV8qIGNvbW1hbmQuCisgKiAtLS0tLS0tLS0tLS0tCisgKiBwdHJbMTowXSA9PSBNTVVf
Tk9STUFMX1BUX1VQREFURToKKyAqIFVwZGF0ZXMgYW4gZW50cnkgaW4gYSBwYWdlIHRhYmxlIGJl
bG9uZ2luZyB0byBQRkQuIElmIHVwZGF0aW5nIGFuIEwxIHRhYmxlLAorICogYW5kIHRoZSBuZXcg
dGFibGUgZW50cnkgaXMgdmFsaWQvcHJlc2VudCwgdGhlIG1hcHBlZCBmcmFtZSBtdXN0IGJlbG9u
ZyB0bworICogRkQuIElmIGF0dGVtcHRpbmcgdG8gbWFwIGFuIEkvTyBwYWdlIHRoZW4gdGhlIGNh
bGxlciBhc3N1bWVzIHRoZSBwcml2aWxlZ2UKKyAqIG9mIHRoZSBGRC4KKyAqIEZEID09IERPTUlE
X0lPOiBQZXJtaXQgL29ubHkvIEkvTyBtYXBwaW5ncywgYXQgdGhlIHByaXYgbGV2ZWwgb2YgdGhl
IGNhbGxlci4KKyAqIEZEID09IERPTUlEX1hFTjogTWFwIHJlc3RyaWN0ZWQgYXJlYXMgb2YgWGVu
J3MgaGVhcCBzcGFjZS4KKyAqIHB0cls6Ml0gIC0tIE1hY2hpbmUgYWRkcmVzcyBvZiB0aGUgcGFn
ZS10YWJsZSBlbnRyeSB0byBtb2RpZnkuCisgKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZS4K
KyAqCisgKiBUaGVyZSBhbHNvIGNlcnRhaW4gaW1wbGljaXQgcmVxdWlyZW1lbnRzIHdoZW4gdXNp
bmcgdGhpcyBoeXBlcmNhbGwuIFRoZQorICogcGFnZXMgdGhhdCBtYWtlIHVwIGEgcGFnZXRhYmxl
IG11c3QgYmUgbWFwcGVkIHJlYWQtb25seSBpbiB0aGUgZ3Vlc3QuCisgKiBUaGlzIHByZXZlbnRz
IHVuY29udHJvbGxlZCBndWVzdCB1cGRhdGVzIHRvIHRoZSBwYWdldGFibGUuIFhlbiBzdHJpY3Rs
eQorICogZW5mb3JjZXMgdGhpcywgYW5kIHdpbGwgZGlzYWxsb3cgYW55IHBhZ2V0YWJsZSB1cGRh
dGUgd2hpY2ggd2lsbCBlbmQgdXAKKyAqIG1hcHBpbmcgcGFnZXRhYmxlIHBhZ2UgUlcsIGFuZCB3
aWxsIGRpc2FsbG93IHVzaW5nIGFueSB3cml0YWJsZSBwYWdlIGFzIGEKKyAqIHBhZ2V0YWJsZS4g
SW4gcHJhY3RpY2UgaXQgbWVhbnMgdGhhdCB3aGVuIGNvbnN0cnVjdGluZyBhIHBhZ2UgdGFibGUg
Zm9yIGEKKyAqIHByb2Nlc3MsIHRocmVhZCwgZXRjLCB3ZSBNVVNUIGJlIHZlcnkgZGlsbGlnaWVu
dCBpbiBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6CisgKiAgMSkuIFN0YXJ0IHdpdGggdG9wLWxldmVs
IHBhZ2UgKFBHRCBvciBpbiBYZW4gbGFuZ3VhZ2U6IEw0KS4gRmlsbCBvdXQKKyAqICAgICAgdGhl
IGVudHJpZXMuCisgKiAgMikuIEtlZXAgb24gZ29pbmcsIGZpbGxpbmcgb3V0IHRoZSB1cHBlciAo
UFVEIG9yIEwzKSwgYW5kIG1pZGRsZSAoUE1ECisgKiAgICAgIG9yIEwyKS4KKyAqICAzKS4gU3Rh
cnQgZmlsbGluZyBvdXQgdGhlIFBURSB0YWJsZSAoTDEpIHdpdGggdGhlIFBURSBlbnRyaWVzLiBP
bmNlCisgKiAgCWRvbmUsIG1ha2Ugc3VyZSB0byBzZXQgZWFjaCBvZiB0aG9zZSBlbnRyaWVzIHRv
IFJPIChzbyB3cml0ZWFibGUgYml0CisgKiAgCWlzIHVuc2V0KS4gT25jZSB0aGF0IGhhcyBiZWVu
IGNvbXBsZXRlZCwgc2V0IHRoZSBQTUQgKEwyKSBmb3IgdGhpcworICogIAlQVEUgdGFibGUgYXMg
Uk8uCisgKiAgNCkuIFdoZW4gY29tcGxldGVkIHdpdGggYWxsIG9mIHRoZSBQTUQgKEwyKSBlbnRy
aWVzLCBhbmQgYWxsIG9mIHRoZW0gaGF2ZQorICogIAliZWVuIHNldCB0byBSTywgbWFrZSBzdXJl
IHRvIHNldCBSTyB0aGUgUFVEIChMMykuIERvIHRoZSBzYW1lCisgKiAgCW9wZXJhdGlvbiBvbiBQ
R0QgKEw0KSBwYWdldGFibGUgZW50cmllcyB0aGF0IGhhdmUgYSBQVUQgKEwzKSBlbnRyeS4KKyAq
ICA1KS4gTm93IGJlZm9yZSB5b3UgY2FuIHVzZSB0aG9zZSBwYWdlcyAoc28gc2V0dGluZyB0aGUg
Y3IzKSwgeW91IE1VU1QgYWxzbworICogICAgICBwaW4gdGhlbSBzbyB0aGF0IHRoZSBoeXBlcnZp
c29yIGNhbiB2ZXJpZnkgdGhlIGVudHJpZXMuIFRoaXMgaXMgZG9uZQorICogICAgICB2aWEgdGhl
IEhZUEVSVklTT1JfbW11ZXh0X29wKE1NVUVYVF9QSU5fTDRfVEFCTEUsIGd1ZXN0IHBoeXNpY2Fs
IGZyYW1lCisgKiAgICAgIG51bWJlciBvZiB0aGUgUEdEIChMNCkpLiBBbmQgdGhpcyBwb2ludCB0
aGUgSFlQRVJWSVNPUl9tbXVleHRfb3AoCisgKiAgICAgIE1NVUVYVF9ORVdfQkFTRVBUUiwgZ3Vl
c3QgcGh5c2ljYWwgZnJhbWUgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkgY2FuIGJlCisgKiAgICAg
IGlzc3VlZC4KKyAqIEZvciAzMi1iaXQgZ3Vlc3RzLCB0aGUgTDQgaXMgbm90IHVzZWQgKGFzIHRo
ZXJlIGlzIGxlc3MgcGFnZXRhYmxlcyksIHNvCisgKiBpbnN0ZWFkIHVzZSBMMy4KKyAqIEF0IHRo
aXMgcG9pbnQgdGhlIHBhZ2V0YWJsZXMgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBNTVVfTk9S
TUFMX1BUX1VQREFURQorICogaHlwZXJjYWxsLiBBbHNvIGlmIHNvIGRlc2lyZWQgdGhlIE9TIGNh
biBhbHNvIHRyeSB0byB3cml0ZSB0byB0aGUgUFRFCisgKiBhbmQgYmUgdHJhcHBlZCBieSB0aGUg
aHlwZXJ2aXNvciAoYXMgdGhlIFBURSBlbnRyeSBpcyBSTykuCisgKgorICogVG8gZGVhbGxvY2F0
ZSB0aGUgcGFnZXMsIHRoZSBvcGVyYXRpb25zIGFyZSB0aGUgcmV2ZXJzZSBvZiB0aGUgc3RlcHMK
KyAqIG1lbnRpb25lZCBhYm92ZS4gVGhlIGFyZ3VtZW50IGlzIE1NVUVYVF9VTlBJTl9UQUJMRSBm
b3IgYWxsIGxldmVscyBhbmQgdGhlCisgKiBwYWdldGFibGUgTVVTVCBub3QgYmUgaW4gdXNlICht
ZWFuaW5nIHRoYXQgdGhlIGNyMyBpcyBub3Qgc2V0IHRvIGl0KS4KKyAqIAorICogcHRyWzE6MF0g
PT0gTU1VX01BQ0hQSFlTX1VQREFURToKKyAqIFVwZGF0ZXMgYW4gZW50cnkgaW4gdGhlIG1hY2hp
bmUtPnBzZXVkby1waHlzaWNhbCBtYXBwaW5nIHRhYmxlLgorICogcHRyWzoyXSAgLS0gTWFjaGlu
ZSBhZGRyZXNzIHdpdGhpbiB0aGUgZnJhbWUgd2hvc2UgbWFwcGluZyB0byBtb2RpZnkuCisgKiAg
ICAgICAgICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3Bl
Y2lmaWVkLgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUgaW50byB0aGUgbWFwcGluZyBl
bnRyeS4KKyAqIAorICogcHRyWzE6MF0gPT0gTU1VX1BUX1VQREFURV9QUkVTRVJWRV9BRDoKKyAq
IEFzIE1NVV9OT1JNQUxfUFRfVVBEQVRFIGFib3ZlLCBidXQgQS9EIGJpdHMgY3VycmVudGx5IGlu
IHRoZSBQVEUgYXJlIE9SZWQKKyAqIHdpdGggdGhvc2UgaW4gQHZhbC4KKyAqCisgKiBAdmFsIGlz
IHVzdWFsbHkgdGhlIG1hY2hpbmUgZnJhbWUgbnVtYmVyIGFsb25nIHdpdGggc29tZSBhdHRyaWJ1
dGVzLgorICogVGhlIGF0dHJpYnV0ZXMgYnkgZGVmYXVsdCBmb2xsb3cgdGhlIGFyY2hpdGVjdHVy
ZSBkZWZpbmVkIGJpdHMuIE1lYW5pbmcgdGhhdAorICogaWYgdGhpcyBpcyBhIFg4Nl82NCBtYWNo
aW5lIGFuZCBmb3VyIHBhZ2UgdGFibGUgbGF5b3V0IGlzIHVzZWQsIHRoZSBsYXlvdXQKKyAqIG9m
IHZhbCBpczoKKyAqICAtIDYzIGlmIHNldCBtZWFucyBObyBleGVjdXRlIChOWCkKKyAqICAtIDQ2
LTEzIHRoZSBtYWNoaW5lIGZyYW1lIG51bWJlcgorICogIC0gMTIgYXZhaWxhYmxlIGZvciBndWVz
dAorICogIC0gMTEgYXZhaWxhYmxlIGZvciBndWVzdAorICogIC0gMTAgYXZhaWxhYmxlIGZvciBn
dWVzdAorICogIC0gOSBhdmFpbGFibGUgZm9yIGd1ZXN0CisgKiAgLSA4IGdsb2JhbAorICogIC0g
NyBQQVQgKFBTRSBpcyBkaXNhYmxlZCwgbXVzdCB1c2UgaHlwZXJjYWxsIHRvIG1ha2UgNE1CIG9y
IDJNQiBwYWdlcykKKyAqICAtIDYgZGlydHkKKyAqICAtIDUgYWNjZXNzZWQKKyAqICAtIDQgcGFn
ZSBjYWNoZWQgZGlzYWJsZWQKKyAqICAtIDMgcGFnZSB3cml0ZSB0aHJvdWdoCisgKiAgLSAyIHVz
ZXJzcGFjZSBhY2Nlc3NpYmxlCisgKiAgLSAxIHdyaXRlYWJsZQorICogIC0gMCBwcmVzZW50Cisg
KgorICogIFRoZSBvbmUgYml0cyB0aGF0IGRvZXMgbm90IGZpdCB3aXRoIHRoZSBkZWZhdWx0IGxh
eW91dCBpcyB0aGUgUEFHRV9QU0UKKyAqICBhbHNvIGNhbGxlZCBQQUdFX1BBVCkuIFRoZSBNTVVF
WFRfW1VOXU1BUktfU1VQRVIgYXJndW1lbnRzIHRvIHRoZQorICogIEhZUEVSVklTT1JfbW11ZXh0
X29wIHNlcnZlIGFzIG1lY2hhbmlzbSB0byBzZXQgYSBwYWdldGFibGUgdG8gYmUgNE1CCisgKiAg
KG9yIDJNQikgaW5zdGVhZCBvZiB1c2luZyB0aGUgUEFHRV9QU0UgYml0LgorICoKKyAqICBUaGUg
cmVhc29uIHRoYXQgdGhlIFBBR0VfUFNFIChiaXQgNykgaXMgbm90IGJlaW5nIHV0aWxpemVkIGlz
IGR1ZSB0byBYZW4KKyAqICB1c2luZyBpdCBhcyB0aGUgUGFnZSBBdHRyaWJ1dGUgVGFibGUgKFBB
VCkgYml0IC0gZm9yIGRldGFpbHMgb24gaXQgcGxlYXNlCisgKiAgcmVmZXIgdG8gSW50ZWwgU0RN
IDEwLjEyLiBUaGUgUEFUIGFsbG93cyB0byBzZXQgdGhlIGNhY2hpbmcgYXR0cmlidXRlcyBvZgor
ICogIHBhZ2VzIGluc3RlYWQgb2YgdXNpbmcgTVRSUnMuCisgKgorICogIFRoZSBQQVQgTVNSIGlz
IGFzIGZvbGxvd3MgKGl0IGlzIGEgNjQtYml0IHZhbHVlLCBlYWNoIGVudHJ5IGlzIDggYml0cyk6
CisgKiAgICAgICAgICAgICAgICAgICAgUEFUNCAgICAgICAgICAgICAgICAgUEFUMAorICogICst
LS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0rCisgKiAgfCBVQyAgfCBV
Qy0gfCBXQyB8IFdCIHwgVUMgfCBVQy0gfCBXQyB8IFdCIHwgIDw9IExpbnV4CisgKiAgKy0tLS0t
Ky0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKKyAqICB8IFVDICB8IFVDLSB8
IFdUIHwgV0IgfCBVQyB8IFVDLSB8IFdUIHwgV0IgfCAgPD0gQklPUyAoZGVmYXVsdCB3aGVuIG1h
Y2hpbmUgYm9vdHMpCisgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0r
LS0tLSsKKyAqICB8IHJzdiB8IHJzdiB8IFdQIHwgV0MgfCBVQyB8IFVDLSB8IFdUIHwgV0IgfCAg
PD0gWGVuCisgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsK
KyAqCisgKiAgVGhlIGxvb2t1cCBvZiB0aGlzIGluZGV4IHRhYmxlIHRyYW5zbGF0ZXMgdG8gbG9v
a2luZyB1cAorICogIEJpdCA3LCBCaXQgNCwgYW5kIEJpdCAzIG9mIHZhbCBlbnRyeToKKyAqCisg
KiAgUEFUL1BTRSAoYml0IDcpIC4uLiBQQ0QgKGJpdCA0KSAuLiBQV1QgKGJpdCAzKS4KKyAqCisg
KiAgSWYgYWxsIGJpdHMgYXJlIG9mZiwgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMC4gSWYgYml0IDMg
dHVybmVkIG9uLAorICogIHRoZW4gd2UgYXJlIHVzaW5nIFBBVDEsIGlmIGJpdCAzIGFuZCBiaXQg
NCwgdGhlbiBQQVQyLi4KKyAqCisgKiAgQXMgeW91IGNhbiBzZWUsIHRoZSBMaW51eCBQQVQxIHRy
YW5zbGF0ZXMgdG8gUEFUNCB1bmRlciBYZW4uIFdoaWNoIG1lYW5zCisgKiAgdGhhdCBpZiBhIGd1
ZXN0IHRoYXQgZm9sbG93cyBMaW51eCdzIFBBVCBzZXR1cCBhbmQgd291bGQgbGlrZSB0byBzZXQg
V3JpdGUKKyAqICBDb21iaW5lZCBvbiBwYWdlcyBpdCBNVVNUIHVzZSBQQVQ0IGVudHJ5LiBNZWFu
aW5nIHRoYXQgQml0IDcgKFBBR0VfUEFUKSBpcworICogIHNldC4gRm9yIGV4YW1wbGUsIHVuZGVy
IExpbnV4IGl0IG9ubHkgdXNlcyBQQVQwLCBQQVQxLCBhbmQgUEFUMiBmb3IgdGhlCisgKiAgY2Fj
aGluZyBhczoKKyAqCisgKiAgIFdCID0gbm9uZSAoc28gUEFUMCkKKyAqICAgV0MgPSBQV1QgKGJp
dCAzIG9uKQorICogICBVQyA9IFBXVCB8IFBDRCAoYml0IDMgYW5kIDQgYXJlIG9uKS4KKyAqCisg
KiBUbyBtYWtlIGl0IHdvcmsgd2l0aCBYZW4sIGl0IG5lZWRzIHRvIHRyYW5zbGF0ZSB0aGUgV0Mg
Yml0IGFzIHNvOgorICoKKyAqICBQV1QgKHNvIGJpdCAzIG9uKSAtLT4gUEFUIChzbyBiaXQgNyBp
cyBvbikgYW5kIGNsZWFyIGJpdCAzCisgKgorICogQW5kIHRvIHRyYW5zbGF0ZSBiYWNrIGl0IHdv
dWxkOgorICoKKyAqIFBBVCAoYml0IDcgb24pIC0tPiBQV1QgKGJpdCAzIG9uKSBhbmQgY2xlYXIg
Yml0IDcuCisgKi8KKyNkZWZpbmUgTU1VX05PUk1BTF9QVF9VUERBVEUgICAgICAwIC8qIGNoZWNr
ZWQgJypwdHIgPSB2YWwnLiBwdHIgaXMgTUEuICAgICAgKi8KKyNkZWZpbmUgTU1VX01BQ0hQSFlT
X1VQREFURSAgICAgICAxIC8qIHB0ciA9IE1BIG9mIGZyYW1lIHRvIG1vZGlmeSBlbnRyeSBmb3Ig
Ki8KKyNkZWZpbmUgTU1VX1BUX1VQREFURV9QUkVTRVJWRV9BRCAyIC8qIGF0b21pY2FsbHk6ICpw
dHIgPSB2YWwgfCAoKnB0ciYoQXxEKSkgKi8KKworLyoKKyAqIE1NVSBFWFRFTkRFRCBPUEVSQVRJ
T05TCisgKgorICogYCBlbnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX21tdWV4dF9v
cChtbXVleHRfb3BfdCB1b3BzW10sCisgKiBgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBj
b3VudCwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyICpwZG9uZSwKKyAqIGAgICAg
ICAgICAgICAgICAgICAgICAgVUlOVDMyIGZvcmVpZ25kb20pCisgKi8KKy8qIEhZUEVSVklTT1Jf
bW11ZXh0X29wKCkgYWNjZXB0cyBhIGxpc3Qgb2YgbW11ZXh0X29wIHN0cnVjdHVyZXMuCisgKiBB
IGZvcmVpZ25kb20gKEZEKSBjYW4gYmUgc3BlY2lmaWVkIChvciBET01JRF9TRUxGIGZvciBub25l
KS4KKyAqIFdoZXJlIHRoZSBGRCBoYXMgc29tZSBlZmZlY3QsIGl0IGlzIGRlc2NyaWJlZCBiZWxv
dy4KKyAqCisgKiBjbWQ6IE1NVUVYVF8oVU4pUElOXypfVEFCTEUKKyAqIG1mbjogTWFjaGluZSBm
cmFtZSBudW1iZXIgdG8gYmUgKHVuKXBpbm5lZCBhcyBhIHAudC4gcGFnZS4KKyAqICAgICAgVGhl
IGZyYW1lIG11c3QgYmVsb25nIHRvIHRoZSBGRCwgaWYgb25lIGlzIHNwZWNpZmllZC4KKyAqCisg
KiBjbWQ6IE1NVUVYVF9ORVdfQkFTRVBUUgorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciBv
ZiBuZXcgcGFnZS10YWJsZSBiYXNlIHRvIGluc3RhbGwgaW4gTU1VLgorICoKKyAqIGNtZDogTU1V
RVhUX05FV19VU0VSX0JBU0VQVFIgW3g4Ni82NCBvbmx5XQorICogbWZuOiBNYWNoaW5lIGZyYW1l
IG51bWJlciBvZiBuZXcgcGFnZS10YWJsZSBiYXNlIHRvIGluc3RhbGwgaW4gTU1VCisgKiAgICAg
IHdoZW4gaW4gdXNlciBzcGFjZS4KKyAqCisgKiBjbWQ6IE1NVUVYVF9UTEJfRkxVU0hfTE9DQUwK
KyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVzIGxvY2FsIFRMQi4KKyAqCisgKiBj
bWQ6IE1NVUVYVF9JTlZMUEdfTE9DQUwKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0
byBiZSBmbHVzaGVkIGZyb20gdGhlIGxvY2FsIFRMQi4KKyAqCisgKiBjbWQ6IE1NVUVYVF9UTEJf
RkxVU0hfTVVMVEkKKyAqIHZjcHVtYXNrOiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBi
ZSBmbHVzaGVkLgorICoKKyAqIGNtZDogTU1VRVhUX0lOVkxQR19NVUxUSQorICogbGluZWFyX2Fk
ZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQuCisgKiB2Y3B1bWFzazogUG9pbnRlciB0
byBiaXRtYXAgb2YgVkNQVXMgdG8gYmUgZmx1c2hlZC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9UTEJf
RkxVU0hfQUxMCisgKiBObyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gRmx1c2hlcyBhbGwgVkNQVXMn
IFRMQnMuCisgKgorICogY21kOiBNTVVFWFRfSU5WTFBHX0FMTAorICogbGluZWFyX2FkZHI6IExp
bmVhciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSBhbGwgVkNQVXMnIFRMQnMuCisgKgorICog
Y21kOiBNTVVFWFRfRkxVU0hfQ0FDSEUKKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBXcml0
ZXMgYmFjayBhbmQgZmx1c2hlcyBjYWNoZSBjb250ZW50cy4KKyAqCisgKiBjbWQ6IE1NVUVYVF9G
TFVTSF9DQUNIRV9HTE9CQUwKKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBXcml0ZXMgYmFj
ayBhbmQgZmx1c2hlcyBjYWNoZSBjb250ZW50cworICogb24gYWxsIENQVXMgaW4gdGhlIHN5c3Rl
bS4KKyAqCisgKiBjbWQ6IE1NVUVYVF9TRVRfTERUCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFk
ZHJlc3Mgb2YgTERUIGJhc2UgKE5CLiBtdXN0IGJlIHBhZ2UtYWxpZ25lZCkuCisgKiBucl9lbnRz
OiBOdW1iZXIgb2YgZW50cmllcyBpbiBMRFQuCisgKgorICogY21kOiBNTVVFWFRfQ0xFQVJfUEFH
RQorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSBjbGVhcmVkLgorICoKKyAqIGNt
ZDogTU1VRVhUX0NPUFlfUEFHRQorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciBvZiB0aGUg
ZGVzdGluYXRpb24gcGFnZS4KKyAqIHNyY19tZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIHRo
ZSBzb3VyY2UgcGFnZS4KKyAqCisgKiBjbWQ6IE1NVUVYVF9bVU5dTUFSS19TVVBFUgorICogbWZu
OiBNYWNoaW5lIGZyYW1lIG51bWJlciBvZiBoZWFkIG9mIHN1cGVycGFnZSB0byBiZSBbdW5dbWFy
a2VkLgorICovCisvKiBgIGVudW0gbW11ZXh0X2NtZCB7ICovCisjZGVmaW5lIE1NVUVYVF9QSU5f
TDFfVEFCTEUgICAgICAwCisjZGVmaW5lIE1NVUVYVF9QSU5fTDJfVEFCTEUgICAgICAxCisjZGVm
aW5lIE1NVUVYVF9QSU5fTDNfVEFCTEUgICAgICAyCisjZGVmaW5lIE1NVUVYVF9QSU5fTDRfVEFC
TEUgICAgICAzCisjZGVmaW5lIE1NVUVYVF9VTlBJTl9UQUJMRSAgICAgICA0CisjZGVmaW5lIE1N
VUVYVF9ORVdfQkFTRVBUUiAgICAgICA1CisjZGVmaW5lIE1NVUVYVF9UTEJfRkxVU0hfTE9DQUwg
ICA2CisjZGVmaW5lIE1NVUVYVF9JTlZMUEdfTE9DQUwgICAgICA3CisjZGVmaW5lIE1NVUVYVF9U
TEJfRkxVU0hfTVVMVEkgICA4CisjZGVmaW5lIE1NVUVYVF9JTlZMUEdfTVVMVEkgICAgICA5Cisj
ZGVmaW5lIE1NVUVYVF9UTEJfRkxVU0hfQUxMICAgIDEwCisjZGVmaW5lIE1NVUVYVF9JTlZMUEdf
QUxMICAgICAgIDExCisjZGVmaW5lIE1NVUVYVF9GTFVTSF9DQUNIRSAgICAgIDEyCisjZGVmaW5l
IE1NVUVYVF9TRVRfTERUICAgICAgICAgIDEzCisjZGVmaW5lIE1NVUVYVF9ORVdfVVNFUl9CQVNF
UFRSIDE1CisjZGVmaW5lIE1NVUVYVF9DTEVBUl9QQUdFICAgICAgIDE2CisjZGVmaW5lIE1NVUVY
VF9DT1BZX1BBR0UgICAgICAgIDE3CisjZGVmaW5lIE1NVUVYVF9GTFVTSF9DQUNIRV9HTE9CQUwg
MTgKKyNkZWZpbmUgTU1VRVhUX01BUktfU1VQRVIgICAgICAgMTkKKyNkZWZpbmUgTU1VRVhUX1VO
TUFSS19TVVBFUiAgICAgMjAKKy8qIGAgfSAqLworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworc3Ry
dWN0IG1tdWV4dF9vcCB7CisgICAgVUlOVDMyIGNtZDsgLyogPT4gZW51bSBtbXVleHRfY21kICov
CisgICAgdW5pb24geworICAgICAgICAvKiBbVU5dUElOX1RBQkxFLCBORVdfQkFTRVBUUiwgTkVX
X1VTRVJfQkFTRVBUUgorICAgICAgICAgKiBDTEVBUl9QQUdFLCBDT1BZX1BBR0UsIFtVTl1NQVJL
X1NVUEVSICovCisgICAgICAgIHhlbl9wZm5fdCAgICAgbWZuOworICAgICAgICAvKiBJTlZMUEdf
TE9DQUwsIElOVkxQR19BTEwsIFNFVF9MRFQgKi8KKyAgICAgICAgVUlOVE4gbGluZWFyX2FkZHI7
CisgICAgfSBhcmcxOworICAgIHVuaW9uIHsKKyAgICAgICAgLyogU0VUX0xEVCAqLworICAgICAg
ICBVSU5UMzIgbnJfZW50czsKKyAgICAgICAgLyogVExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVM
VEkgKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDUKKyAgICAg
ICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lkKSB2Y3B1bWFzazsKKyNlbHNlCisgICAgICAg
IGNvbnN0IFZPSUQgKnZjcHVtYXNrOworI2VuZGlmCisgICAgICAgIC8qIENPUFlfUEFHRSAqLwor
ICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKKyAgICB9IGFyZzI7Cit9OwordHlwZWRlZiBzdHJ1
Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0
X29wX3QpOworI2VuZGlmCisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVS
VklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUlOVE4gdmEsIHU2NCB2YWwsCisgKiBgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW51bSB1dm1fZmxhZ3MgZmxhZ3MpCisgKiBgCisgKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJk
b21haW4oVUlOVE4gdmEsIHU2NCB2YWwsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW51bSB1dm1fZmxhZ3MgZmxhZ3MsCisgKiBgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBkb21pZCkKKyAqIGAKKyAqIGAgQHZh
OiBUaGUgdmlydHVhbCBhZGRyZXNzIHdob3NlIG1hcHBpbmcgd2Ugd2FudCB0byBjaGFuZ2UKKyAq
IGAgQHZhbDogVGhlIG5ldyBwYWdlIHRhYmxlIGVudHJ5LCBtdXN0IGNvbnRhaW4gYSBtYWNoaW5l
IGFkZHJlc3MKKyAqIGAgQGZsYWdzOiBDb250cm9sIFRMQiBmbHVzaGVzCisgKi8KKy8qIFRoZXNl
IGFyZSBwYXNzZWQgYXMgJ2ZsYWdzJyB0byB1cGRhdGVfdmFfbWFwcGluZy4gVGhleSBjYW4gYmUg
T1JlZC4gKi8KKy8qIFdoZW4gc3BlY2lmeWluZyBVVk1GX01VTFRJLCBhbHNvIE9SIGluIGEgcG9p
bnRlciB0byBhIENQVSBiaXRtYXAuICAgKi8KKy8qIFVWTUZfTE9DQUwgaXMgbWVyZWx5IFVWTUZf
TVVMVEkgd2l0aCBhIE5VTEwgYml0bWFwIHBvaW50ZXIuICAgICAgICAgKi8KKy8qIGAgZW51bSB1
dm1fZmxhZ3MgeyAqLworI2RlZmluZSBVVk1GX05PTkUgICAgICAgICAgICAgICAoMFVMPDwwKSAv
KiBObyBmbHVzaGluZyBhdCBhbGwuICAgKi8KKyNkZWZpbmUgVVZNRl9UTEJfRkxVU0ggICAgICAg
ICAgKDFVTDw8MCkgLyogRmx1c2ggZW50aXJlIFRMQihzKS4gICovCisjZGVmaW5lIFVWTUZfSU5W
TFBHICAgICAgICAgICAgICgyVUw8PDApIC8qIEZsdXNoIG9ubHkgb25lIGVudHJ5LiAqLworI2Rl
ZmluZSBVVk1GX0ZMVVNIVFlQRV9NQVNLICAgICAoM1VMPDwwKQorI2RlZmluZSBVVk1GX01VTFRJ
ICAgICAgICAgICAgICAoMFVMPDwyKSAvKiBGbHVzaCBzdWJzZXQgb2YgVExCcy4gKi8KKyNkZWZp
bmUgVVZNRl9MT0NBTCAgICAgICAgICAgICAgKDBVTDw8MikgLyogRmx1c2ggbG9jYWwgVExCLiAg
ICAgICovCisjZGVmaW5lIFVWTUZfQUxMICAgICAgICAgICAgICAgICgxVUw8PDIpIC8qIEZsdXNo
IGFsbCBUTEJzLiAgICAgICAqLworLyogYCB9ICovCisKKy8qCisgKiBDb21tYW5kcyB0byBIWVBF
UlZJU09SX2NvbnNvbGVfaW8oKS4KKyAqLworI2RlZmluZSBDT05TT0xFSU9fd3JpdGUgICAgICAg
ICAwCisjZGVmaW5lIENPTlNPTEVJT19yZWFkICAgICAgICAgIDEKKworLyoKKyAqIENvbW1hbmRz
IHRvIEhZUEVSVklTT1Jfdm1fYXNzaXN0KCkuCisgKi8KKyNkZWZpbmUgVk1BU1NUX0NNRF9lbmFi
bGUgICAgICAgICAgICAgICAgMAorI2RlZmluZSBWTUFTU1RfQ01EX2Rpc2FibGUgICAgICAgICAg
ICAgICAxCisKKy8qIHg4Ni8zMiBndWVzdHM6IHNpbXVsYXRlIGZ1bGwgNEdCIHNlZ21lbnQgbGlt
aXRzLiAqLworI2RlZmluZSBWTUFTU1RfVFlQRV80Z2Jfc2VnbWVudHMgICAgICAgICAwCisKKy8q
IHg4Ni8zMiBndWVzdHM6IHRyYXAgKHZlY3RvciAxNSkgd2hlbmV2ZXIgYWJvdmUgdm1hc3Npc3Qg
aXMgdXNlZC4gKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVfNGdiX3NlZ21lbnRzX25vdGlmeSAgMQor
CisvKgorICogeDg2IGd1ZXN0czogc3VwcG9ydCB3cml0ZXMgdG8gYm90dG9tLWxldmVsIFBURXMu
CisgKiBOQjEuIFBhZ2UtZGlyZWN0b3J5IGVudHJpZXMgY2Fubm90IGJlIHdyaXR0ZW4uCisgKiBO
QjIuIEd1ZXN0IG11c3QgY29udGludWUgdG8gcmVtb3ZlIGFsbCB3cml0YWJsZSBtYXBwaW5ncyBv
ZiBQVEVzLgorICovCisjZGVmaW5lIFZNQVNTVF9UWVBFX3dyaXRhYmxlX3BhZ2V0YWJsZXMgIDIK
KworLyogeDg2L1BBRSBndWVzdHM6IHN1cHBvcnQgUERQVHMgYWJvdmUgNEdCLiAqLworI2RlZmlu
ZSBWTUFTU1RfVFlQRV9wYWVfZXh0ZW5kZWRfY3IzICAgICAzCisKKyNkZWZpbmUgTUFYX1ZNQVNT
VF9UWVBFICAgICAgICAgICAgICAgICAgMworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCit0eXBl
ZGVmIFVJTlQxNiBkb21pZF90OworCisvKiBEb21haW4gaWRzID49IERPTUlEX0ZJUlNUX1JFU0VS
VkVEIGNhbm5vdCBiZSB1c2VkIGZvciBvcmRpbmFyeSBkb21haW5zLiAqLworI2RlZmluZSBET01J
RF9GSVJTVF9SRVNFUlZFRCAoMHg3RkYwVSkKKworLyogRE9NSURfU0VMRiBpcyB1c2VkIGluIGNl
cnRhaW4gY29udGV4dHMgdG8gcmVmZXIgdG8gb25lc2VsZi4gKi8KKyNkZWZpbmUgRE9NSURfU0VM
RiAoMHg3RkYwVSkKKworLyoKKyAqIERPTUlEX0lPIGlzIHVzZWQgdG8gcmVzdHJpY3QgcGFnZS10
YWJsZSB1cGRhdGVzIHRvIG1hcHBpbmcgSS9PIG1lbW9yeS4KKyAqIEFsdGhvdWdoIG5vIEZvcmVp
Z24gRG9tYWluIG5lZWQgYmUgc3BlY2lmaWVkIHRvIG1hcCBJL08gcGFnZXMsIERPTUlEX0lPCisg
KiBpcyB1c2VmdWwgdG8gZW5zdXJlIHRoYXQgbm8gbWFwcGluZ3MgdG8gdGhlIE9TJ3Mgb3duIGhl
YXAgYXJlIGFjY2lkZW50YWxseQorICogaW5zdGFsbGVkLiAoZS5nLiwgaW4gTGludXggdGhpcyBj
b3VsZCBjYXVzZSBoYXZvYyBhcyByZWZlcmVuY2UgY291bnRzCisgKiBhcmVuJ3QgYWRqdXN0ZWQg
b24gdGhlIEkvTy1tYXBwaW5nIGNvZGUgcGF0aCkuCisgKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ug
aW4gTU1VRVhUX1NFVF9GT1JFSUdORE9NLCBidXQgaW4gdGhhdCBjb250ZXh0IGNhbgorICogYmUg
c3BlY2lmaWVkIGJ5IGFueSBjYWxsaW5nIGRvbWFpbi4KKyAqLworI2RlZmluZSBET01JRF9JTyAg
ICgweDdGRjFVKQorCisvKgorICogRE9NSURfWEVOIGlzIHVzZWQgdG8gYWxsb3cgcHJpdmlsZWdl
ZCBkb21haW5zIHRvIG1hcCByZXN0cmljdGVkIHBhcnRzIG9mCisgKiBYZW4ncyBoZWFwIHNwYWNl
IChlLmcuLCB0aGUgbWFjaGluZV90b19waHlzIHRhYmxlKS4KKyAqIFRoaXMgb25seSBtYWtlcyBz
ZW5zZSBpbiBNTVVFWFRfU0VUX0ZPUkVJR05ET00sIGFuZCBpcyBvbmx5IHBlcm1pdHRlZCBpZgor
ICogdGhlIGNhbGxlciBpcyBwcml2aWxlZ2VkLgorICovCisjZGVmaW5lIERPTUlEX1hFTiAgKDB4
N0ZGMlUpCisKKy8qCisgKiBET01JRF9DT1cgaXMgdXNlZCBhcyB0aGUgb3duZXIgb2Ygc2hhcmFi
bGUgcGFnZXMgKi8KKyNkZWZpbmUgRE9NSURfQ09XICAoMHg3RkYzVSkKKworLyogRE9NSURfSU5W
QUxJRCBpcyB1c2VkIHRvIGlkZW50aWZ5IHBhZ2VzIHdpdGggdW5rbm93biBvd25lci4gKi8KKyNk
ZWZpbmUgRE9NSURfSU5WQUxJRCAoMHg3RkY0VSkKKworLyogSWRsZSBkb21haW4uICovCisjZGVm
aW5lIERPTUlEX0lETEUgKDB4N0ZGRlUpCisKKy8qCisgKiBTZW5kIGFuIGFycmF5IG9mIHRoZXNl
IHRvIEhZUEVSVklTT1JfbW11X3VwZGF0ZSgpLgorICogTkIuIFRoZSBmaWVsZHMgYXJlIG5hdHVy
YWwgcG9pbnRlci9hZGRyZXNzIHNpemUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICovCitzdHJ1
Y3QgbW11X3VwZGF0ZSB7CisgICAgVUlOVDY0IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNz
IG9mIFBURS4gKi8KKyAgICBVSU5UNjQgdmFsOyAgICAgICAvKiBOZXcgY29udGVudHMgb2YgUFRF
LiAgICAqLworfTsKK3R5cGVkZWYgc3RydWN0IG1tdV91cGRhdGUgbW11X3VwZGF0ZV90OworREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KTsKKworLyoKKyAqIGAgZW51bSBuZWdf
ZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9tdWx0aWNhbGwobXVsdGljYWxsX2VudHJ5X3QgY2Fs
bF9saXN0W10sCisgKiBgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBucl9jYWxscyk7Cisg
KgorICogTkIuIFRoZSBmaWVsZHMgYXJlIG5hdHVyYWwgcmVnaXN0ZXIgc2l6ZSBmb3IgdGhpcyBh
cmNoaXRlY3R1cmUuCisgKi8KK3N0cnVjdCBtdWx0aWNhbGxfZW50cnkgeworICAgIFVJTlROIG9w
LCByZXN1bHQ7CisgICAgVUlOVE4gYXJnc1s2XTsKK307Cit0eXBlZGVmIHN0cnVjdCBtdWx0aWNh
bGxfZW50cnkgbXVsdGljYWxsX2VudHJ5X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtdWx0
aWNhbGxfZW50cnlfdCk7CisKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0
MDQwMAorLyoKKyAqIEV2ZW50IGNoYW5uZWwgZW5kcG9pbnRzIHBlciBkb21haW4gKHdoZW4gdXNp
bmcgdGhlIDItbGV2ZWwgQUJJKToKKyAqICAxMDI0IGlmIGEgSU5UTiBpcyAzMiBiaXRzOyA0MDk2
IGlmIGEgSU5UTiBpcyA2NCBiaXRzLgorICovCisjZGVmaW5lIE5SX0VWRU5UX0NIQU5ORUxTIEVW
VENITl8yTF9OUl9DSEFOTkVMUworI2VuZGlmCisKK3N0cnVjdCB2Y3B1X3RpbWVfaW5mbyB7Cisg
ICAgLyoKKyAgICAgKiBVcGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBwcmVjZWRl
ZCBhbmQgZm9sbG93ZWQgYnkgYW4KKyAgICAgKiBpbmNyZW1lbnQgb2YgJ3ZlcnNpb24nLiBUaGUg
Z3Vlc3QgY2FuIHRoZXJlZm9yZSBkZXRlY3QgdXBkYXRlcyBieQorICAgICAqIGxvb2tpbmcgZm9y
IGNoYW5nZXMgdG8gJ3ZlcnNpb24nLiBJZiB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0IG9mCisg
ICAgICogdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0ZSBpcyBpbiBwcm9n
cmVzcyBhbmQgdGhlIGd1ZXN0CisgICAgICogbXVzdCB3YWl0IHRvIHJlYWQgYSBjb25zaXN0ZW50
IHNldCBvZiB2YWx1ZXMuCisgICAgICogVGhlIGNvcnJlY3Qgd2F5IHRvIGludGVyYWN0IHdpdGgg
dGhlIHZlcnNpb24gbnVtYmVyIGlzIHNpbWlsYXIgdG8KKyAgICAgKiBMaW51eCdzIHNlcWxvY2s6
IHNlZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHJlYWRfc2VxYmVnaW4vcmVhZF9zZXFyZXRyeS4K
KyAgICAgKi8KKyAgICBVSU5UMzIgdmVyc2lvbjsKKyAgICBVSU5UMzIgcGFkMDsKKyAgICBVSU5U
NjQgdHNjX3RpbWVzdGFtcDsgICAvKiBUU0MgYXQgbGFzdCB1cGRhdGUgb2YgdGltZSB2YWxzLiAg
Ki8KKyAgICBVSU5UNjQgc3lzdGVtX3RpbWU7ICAgICAvKiBUaW1lLCBpbiBuYW5vc2Vjcywgc2lu
Y2UgYm9vdC4gICAgKi8KKyAgICAvKgorICAgICAqIEN1cnJlbnQgc3lzdGVtIHRpbWU6CisgICAg
ICogICBzeXN0ZW1fdGltZSArCisgICAgICogICAoKCgodHNjIC0gdHNjX3RpbWVzdGFtcCkgPDwg
dHNjX3NoaWZ0KSAqIHRzY190b19zeXN0ZW1fbXVsKSA+PiAzMikKKyAgICAgKiBDUFUgZnJlcXVl
bmN5IChIeik6CisgICAgICogICAoKDEwXjkgPDwgMzIpIC8gdHNjX3RvX3N5c3RlbV9tdWwpID4+
IHRzY19zaGlmdAorICAgICAqLworICAgIFVJTlQzMiB0c2NfdG9fc3lzdGVtX211bDsKKyAgICBJ
TlQ4ICAgdHNjX3NoaWZ0OworICAgIElOVDggICBwYWQxWzNdOworfTsgLyogMzIgYnl0ZXMgKi8K
K3R5cGVkZWYgc3RydWN0IHZjcHVfdGltZV9pbmZvIHZjcHVfdGltZV9pbmZvX3Q7CisKK3N0cnVj
dCB2Y3B1X2luZm8geworICAgIC8qCisgICAgICogJ2V2dGNobl91cGNhbGxfcGVuZGluZycgaXMg
d3JpdHRlbiBub24temVybyBieSBYZW4gdG8gaW5kaWNhdGUKKyAgICAgKiBhIHBlbmRpbmcgbm90
aWZpY2F0aW9uIGZvciBhIHBhcnRpY3VsYXIgVkNQVS4gSXQgaXMgdGhlbiBjbGVhcmVkIAorICAg
ICAqIGJ5IHRoZSBndWVzdCBPUyAvYmVmb3JlLyBjaGVja2luZyBmb3IgcGVuZGluZyB3b3JrLCB0
aHVzIGF2b2lkaW5nCisgICAgICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUg
bWFzayBpcyBvbmx5IGFjY2Vzc2VkIGJ5IFhlbgorICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBj
dXJyZW50bHkgaG9zdGluZyB0aGUgVkNQVS4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHBl
bmRpbmcgYW5kIG1hc2sgZmxhZ3MgY2FuIGJlIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0IHdpdGhvdXQg
c3BlY2lhbAorICAgICAqIHN5bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4
NiBMT0NLIHByZWZpeCkuCisgICAgICogVGhpcyBtYXkgc2VlbSBzdWJvcHRpbWFsIGJlY2F1c2Ug
aWYgdGhlIHBlbmRpbmcgZmxhZyBpcyBzZXQgYnkKKyAgICAgKiBhIGRpZmZlcmVudCBDUFUgdGhl
biBhbiBJUEkgbWF5IGJlIHNjaGVkdWxlZCBldmVuIHdoZW4gdGhlIG1hc2sKKyAgICAgKiBpcyBz
ZXQuIEhvd2V2ZXIsIG5vdGU6CisgICAgICogIDEuIFRoZSB0YXNrIG9mICdpbnRlcnJ1cHQgaG9s
ZG9mZicgaXMgY292ZXJlZCBieSB0aGUgcGVyLWV2ZW50LQorICAgICAqICAgICBjaGFubmVsIG1h
c2sgYml0cy4gQSAnbm9pc3knIGV2ZW50IHRoYXQgaXMgY29udGludWFsbHkgYmVpbmcKKyAgICAg
KiAgICAgdHJpZ2dlcmVkIGNhbiBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVyeSBwcmVj
aXNlCisgICAgICogICAgIGdyYW51bGFyaXR5LgorICAgICAqICAyLiBUaGUgbWFpbiBwdXJwb3Nl
IG9mIHRoZSBwZXItVkNQVSBtYXNrIGlzIHRoZXJlZm9yZSB0byByZXN0cmljdAorICAgICAqICAg
ICByZWVudHJhbnQgZXhlY3V0aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5jeSBjb250cm9sLCBv
ciB0bworICAgICAqICAgICBwcmV2ZW50IHVuYm91bmRlZCBzdGFjayB1c2FnZS4gV2hhdGV2ZXIg
dGhlIHB1cnBvc2UsIHdlIGV4cGVjdAorICAgICAqICAgICB0aGF0IHRoZSBtYXNrIHdpbGwgYmUg
YXNzZXJ0ZWQgb25seSBmb3Igc2hvcnQgcGVyaW9kcyBhdCBhIHRpbWUsCisgICAgICogICAgIGFu
ZCBzbyB0aGUgbGlrZWxpaG9vZCBvZiBhICdzcHVyaW91cycgSVBJIGlzIHN1aXRhYmx5IHNtYWxs
LgorICAgICAqIFRoZSBtYXNrIGlzIHJlYWQgYmVmb3JlIG1ha2luZyBhbiBldmVudCB1cGNhbGwg
dG8gdGhlIGd1ZXN0OiBhCisgICAgICogbm9uLXplcm8gbWFzayB0aGVyZWZvcmUgZ3VhcmFudGVl
cyB0aGF0IHRoZSBWQ1BVIHdpbGwgbm90IHJlY2VpdmUKKyAgICAgKiBhbiB1cGNhbGwgYWN0aXZh
dGlvbi4gVGhlIG1hc2sgaXMgY2xlYXJlZCB3aGVuIHRoZSBWQ1BVIHJlcXVlc3RzCisgICAgICog
dG8gYmxvY2s6IHRoaXMgYXZvaWRzIHdha2V1cC13YWl0aW5nIHJhY2VzLgorICAgICAqLworICAg
IFVJTlQ4IGV2dGNobl91cGNhbGxfcGVuZGluZzsKKyNpZmRlZiBYRU5fSEFWRV9QVl9VUENBTExf
TUFTSworICAgIFVJTlQ4IGV2dGNobl91cGNhbGxfbWFzazsKKyNlbHNlIC8qIFhFTl9IQVZFX1BW
X1VQQ0FMTF9NQVNLICovCisgICAgVUlOVDggcGFkMDsKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9V
UENBTExfTUFTSyAqLworICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKKyAgICBz
dHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaDsKKyAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdGlt
ZTsKK307IC8qIDY0IGJ5dGVzICh4ODYpICovCisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3Ry
dWN0IHZjcHVfaW5mbyB2Y3B1X2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVudHMg
MjAwIHN0YXJ0b2ZkYXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUK
KyAqIFhlbi9rZXJuZWwgc2hhcmVkIGRhdGEgLS0gcG9pbnRlciBwcm92aWRlZCBpbiBzdGFydF9p
bmZvLgorICoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90aCBzbWFsbGVy
IHRoYW4gYSBwYWdlLCBhbmQgdGhlCisgKiBvbmx5IGRhdGEgb24gdGhlIHNoYXJlZCBwYWdlLCBi
dXQgbWF5IHZhcnkgaW4gYWN0dWFsIHNpemUgZXZlbiB3aXRoaW4KKyAqIGNvbXBhdGlibGUgWGVu
IHZlcnNpb25zOyBndWVzdHMgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBzaXplCisgKiBvZiB0aGlz
IHN0cnVjdHVyZSByZW1haW5pbmcgY29uc3RhbnQuCisgKi8KK3N0cnVjdCBzaGFyZWRfaW5mbyB7
CisgICAgc3RydWN0IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVOX0xFR0FDWV9NQVhfVkNQVVNdOwor
CisgICAgLyoKKyAgICAgKiBBIGRvbWFpbiBjYW4gY3JlYXRlICJldmVudCBjaGFubmVscyIgb24g
d2hpY2ggaXQgY2FuIHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgKiBhc3luY2hyb25vdXMgZXZlbnQg
bm90aWZpY2F0aW9ucy4gVGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZXZlbnQgdGhhdAorICAg
ICAqIGFyZSBkZWxpdmVyZWQgYnkgdGhpcyBtZWNoYW5pc206CisgICAgICogIDEuIEJpLWRpcmVj
dGlvbmFsIGludGVyLSBhbmQgaW50cmEtZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QK
KyAgICAgKiAgICAgYXJyYW5nZSBvdXQtb2YtYmFuZCB0byBzZXQgdXAgYSBjb25uZWN0aW9uICh1
c3VhbGx5IGJ5IGFsbG9jYXRpbmcKKyAgICAgKiAgICAgYW4gdW5ib3VuZCAnbGlzdGVuZXInIHBv
cnQgYW5kIGF2ZXJ0aXNpbmcgdGhhdCB2aWEgYSBzdG9yYWdlIHNlcnZpY2UKKyAgICAgKiAgICAg
c3VjaCBhcyB4ZW5zdG9yZSkuCisgICAgICogIDIuIFBoeXNpY2FsIGludGVycnVwdHMuIEEgZG9t
YWluIHdpdGggc3VpdGFibGUgaGFyZHdhcmUtYWNjZXNzCisgICAgICogICAgIHByaXZpbGVnZXMg
Y2FuIGJpbmQgYW4gZXZlbnQtY2hhbm5lbCBwb3J0IHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0Cisg
ICAgICogICAgIHNvdXJjZS4KKyAgICAgKiAgMy4gVmlydHVhbCBpbnRlcnJ1cHRzICgnZXZlbnRz
JykuIEEgZG9tYWluIGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwKKyAgICAgKiAgICAgcG9ydCB0
byBhIHZpcnR1YWwgaW50ZXJydXB0IHNvdXJjZSwgc3VjaCBhcyB0aGUgdmlydHVhbC10aW1lcgor
ICAgICAqICAgICBkZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgorICAgICAqIAorICAg
ICAqIEV2ZW50IGNoYW5uZWxzIGFyZSBhZGRyZXNzZWQgYnkgYSAicG9ydCBpbmRleCIuIEVhY2gg
Y2hhbm5lbCBpcworICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZvcm1hdGlv
bjoKKyAgICAgKiAgMS4gUEVORElORyAtLSBub3RpZmllcyB0aGUgZG9tYWluIHRoYXQgdGhlcmUg
aXMgYSBwZW5kaW5nIG5vdGlmaWNhdGlvbgorICAgICAqICAgICB0byBiZSBwcm9jZXNzZWQuIFRo
aXMgYml0IGlzIGNsZWFyZWQgYnkgdGhlIGd1ZXN0LgorICAgICAqICAyLiBNQVNLIC0tIGlmIHRo
aXMgYml0IGlzIGNsZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2YgUEVORElORworICAgICAq
ICAgICB3aWxsIGNhdXNlIGFuIGFzeW5jaHJvbm91cyB1cGNhbGwgdG8gYmUgc2NoZWR1bGVkLiBU
aGlzIGJpdCBpcyBvbmx5CisgICAgICogICAgIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0LiBJdCBpcyBy
ZWFkLW9ubHkgd2l0aGluIFhlbi4gSWYgYSBjaGFubmVsCisgICAgICogICAgIGJlY29tZXMgcGVu
ZGluZyB3aGlsZSB0aGUgY2hhbm5lbCBpcyBtYXNrZWQgdGhlbiB0aGUgJ2VkZ2UnIGlzIGxvc3QK
KyAgICAgKiAgICAgKGkuZS4sIHdoZW4gdGhlIGNoYW5uZWwgaXMgdW5tYXNrZWQsIHRoZSBndWVz
dCBtdXN0IG1hbnVhbGx5IGhhbmRsZQorICAgICAqICAgICBwZW5kaW5nIG5vdGlmaWNhdGlvbnMg
YXMgbm8gdXBjYWxsIHdpbGwgYmUgc2NoZWR1bGVkIGJ5IFhlbikuCisgICAgICogCisgICAgICog
VG8gZXhwZWRpdGUgc2Nhbm5pbmcgb2YgcGVuZGluZyBub3RpZmljYXRpb25zLCBhbnkgMC0+MSBw
ZW5kaW5nCisgICAgICogdHJhbnNpdGlvbiBvbiBhbiB1bm1hc2tlZCBjaGFubmVsIGNhdXNlcyBh
IGNvcnJlc3BvbmRpbmcgYml0IGluIGEKKyAgICAgKiBwZXItdmNwdSBzZWxlY3RvciB3b3JkIHRv
IGJlIHNldC4gRWFjaCBiaXQgaW4gdGhlIHNlbGVjdG9yIGNvdmVycyBhCisgICAgICogJ0MgSU5U
TicgaW4gdGhlIFBFTkRJTkcgYml0ZmllbGQgYXJyYXkuCisgICAgICovCisgICAgeGVuX3Vsb25n
X3QgZXZ0Y2huX3BlbmRpbmdbc2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOworICAgIHhlbl91bG9u
Z190IGV2dGNobl9tYXNrW3NpemVvZih4ZW5fdWxvbmdfdCkgKiA4XTsKKworICAgIC8qCisgICAg
ICogV2FsbGNsb2NrIHRpbWU6IHVwZGF0ZWQgb25seSBieSBjb250cm9sIHNvZnR3YXJlLiBHdWVz
dHMgc2hvdWxkIGJhc2UKKyAgICAgKiB0aGVpciBnZXR0aW1lb2ZkYXkoKSBzeXNjYWxsIG9uIHRo
aXMgd2FsbGNsb2NrLWJhc2UgdmFsdWUuCisgICAgICovCisgICAgVUlOVDMyIHdjX3ZlcnNpb247
ICAgICAgLyogVmVyc2lvbiBjb3VudGVyOiBzZWUgdmNwdV90aW1lX2luZm9fdC4gKi8KKyAgICBV
SU5UMzIgd2Nfc2VjOyAgICAgICAgICAvKiBTZWNzICAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcw
LiAgKi8KKyAgICBVSU5UMzIgd2NfbnNlYzsgICAgICAgICAvKiBOc2VjcyAwMDowMDowMCBVVEMs
IEphbiAxLCAxOTcwLiAgKi8KKworICAgIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIGFyY2g7CisK
K307CisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZvIHNoYXJlZF9p
bmZvX3Q7CisjZW5kaWYKKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5IFN0YXJ0
LW9mLWRheSBtZW1vcnkgbGF5b3V0CisgKgorICogIDEuIFRoZSBkb21haW4gaXMgc3RhcnRlZCB3
aXRoaW4gY29udGlndW91cyB2aXJ0dWFsLW1lbW9yeSByZWdpb24uCisgKiAgMi4gVGhlIGNvbnRp
Z3VvdXMgcmVnaW9uIGVuZHMgb24gYW4gYWxpZ25lZCA0TUIgYm91bmRhcnkuCisgKiAgMy4gVGhp
cyB0aGUgb3JkZXIgb2YgYm9vdHN0cmFwIGVsZW1lbnRzIGluIHRoZSBpbml0aWFsIHZpcnR1YWwg
cmVnaW9uOgorICogICAgICBhLiByZWxvY2F0ZWQga2VybmVsIGltYWdlCisgKiAgICAgIGIuIGlu
aXRpYWwgcmFtIGRpc2sgICAgICAgICAgICAgIFttb2Rfc3RhcnQsIG1vZF9sZW5dCisgKiAgICAg
IGMuIGxpc3Qgb2YgYWxsb2NhdGVkIHBhZ2UgZnJhbWVzIFttZm5fbGlzdCwgbnJfcGFnZXNdCisg
KiAgICAgICAgICh1bmxlc3MgcmVsb2NhdGVkIGR1ZSB0byBYRU5fRUxGTk9URV9JTklUX1AyTSkK
KyAqICAgICAgZC4gc3RhcnRfaW5mb190IHN0cnVjdHVyZSAgICAgICAgW3JlZ2lzdGVyIEVTSSAo
eDg2KV0KKyAqICAgICAgZS4gYm9vdHN0cmFwIHBhZ2UgdGFibGVzICAgICAgICAgW3B0X2Jhc2Ug
YW5kIENSMyAoeDg2KV0KKyAqICAgICAgZi4gYm9vdHN0cmFwIHN0YWNrICAgICAgICAgICAgICAg
W3JlZ2lzdGVyIEVTUCAoeDg2KV0KKyAqICA0LiBCb290c3RyYXAgZWxlbWVudHMgYXJlIHBhY2tl
ZCB0b2dldGhlciwgYnV0IGVhY2ggaXMgNGtCLWFsaWduZWQuCisgKiAgNS4gVGhlIGluaXRpYWwg
cmFtIGRpc2sgbWF5IGJlIG9taXR0ZWQuCisgKiAgNi4gVGhlIGxpc3Qgb2YgcGFnZSBmcmFtZXMg
Zm9ybXMgYSBjb250aWd1b3VzICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQorICogICAgIGxheW91
dCBmb3IgdGhlIGRvbWFpbi4gSW4gcGFydGljdWxhciwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsLW1l
bW9yeQorICogICAgIHJlZ2lvbiBpcyBhIDE6MSBtYXBwaW5nIHRvIHRoZSBmaXJzdCBzZWN0aW9u
IG9mIHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWFwLgorICogIDcuIEFsbCBib290c3RyYXAgZWxlbWVu
dHMgYXJlIG1hcHBlZCByZWFkLXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRoZQorICogICAg
IG9ubHkgZXhjZXB0aW9uIGlzIHRoZSBib290c3RyYXAgcGFnZSB0YWJsZSwgd2hpY2ggaXMgbWFw
cGVkIHJlYWQtb25seS4KKyAqICA4LiBUaGVyZSBpcyBndWFyYW50ZWVkIHRvIGJlIGF0IGxlYXN0
IDUxMmtCIHBhZGRpbmcgYWZ0ZXIgdGhlIGZpbmFsCisgKiAgICAgYm9vdHN0cmFwIGVsZW1lbnQu
IElmIG5lY2Vzc2FyeSwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcworICogICAgIGV4
dGVuZGVkIGJ5IGFuIGV4dHJhIDRNQiB0byBlbnN1cmUgdGhpcy4KKyAqCisgKiBOb3RlOiBQcmlv
ciB0byAyNTgzMzpiYjg1YmJjY2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBEb20wIGluaXRp
YWwgcGFnZQorICogdGFibGUgbGF5b3V0IikgYSBidWcgY2F1c2VkIHRoZSBwdF9iYXNlICgzLmUg
YWJvdmUpIGFuZCBjcjMgdG8gbm90IHBvaW50CisgKiB0byB0aGUgc3RhcnQgb2YgdGhlIGd1ZXN0
IHBhZ2UgdGFibGVzIChpdCB3YXMgb2Zmc2V0IGJ5IHR3byBwYWdlcykuCisgKiBUaGlzIG9ubHkg
bWFuaWZlc3RlZCBpdHNlbGYgb24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBub3QgMzItb24t
NjQgZG9tVQorICogb3IgNjQtYml0IGtlcm5lbHMgb2YgYW55IGNvbG91ci4gVGhlIHBhZ2UgdGFi
bGVzIGZvciBhIDMyLW9uLTY0IGRvbTAgZ290CisgKiBhbGxvY2F0ZWQgaW4gdGhlIG9yZGVyOiAn
Zmlyc3QgTDEnLCdmaXJzdCBMMicsICdmaXJzdCBMMycsIHNvIHRoZSBvZmZzZXQKKyAqIHRvIHRo
ZSBwYWdlIHRhYmxlIGJhc2UgaXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBpbml0aWFsIGRvbWFp
biBpZiBpdCBpcworICogMzItYml0IGFuZCBydW5zIHVuZGVyIGEgNjQtYml0IGh5cGVydmlzb3Ig
c2hvdWxkIF9OT1RfIHVzZSB0d28gb2YgdGhlCisgKiBwYWdlcyBwcmVjZWRpbmcgcHRfYmFzZSBh
bmQgbWFyayB0aGVtIGFzIHJlc2VydmVkL3VudXNlZC4KKyAqLworI2lmZGVmIFhFTl9IQVZFX1BW
X0dVRVNUX0VOVFJZCitzdHJ1Y3Qgc3RhcnRfaW5mbyB7CisgICAgLyogVEhFIEZPTExPV0lORyBB
UkUgRklMTEVEIElOIEJPVEggT04gSU5JVElBTCBCT09UIEFORCBPTiBSRVNVTUUuICAgICovCisg
ICAgQ0hBUjggbWFnaWNbMzJdOyAgICAgICAgICAgICAvKiAieGVuLTx2ZXJzaW9uPi08cGxhdGZv
cm0+Ii4gICAgICAgICAgICAqLworICAgIFVJTlROIG5yX3BhZ2VzOyAgICAgLyogVG90YWwgcGFn
ZXMgYWxsb2NhdGVkIHRvIHRoaXMgZG9tYWluLiAgKi8KKyAgICBVSU5UTiBzaGFyZWRfaW5mbzsg
IC8qIE1BQ0hJTkUgYWRkcmVzcyBvZiBzaGFyZWQgaW5mbyBzdHJ1Y3QuICovCisgICAgVUlOVDMy
IGZsYWdzOyAgICAgICAgICAgICAvKiBTSUZfeHh4IGZsYWdzLiAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworICAgIHhlbl9wZm5fdCBzdG9yZV9tZm47ICAgICAgICAvKiBNQUNISU5FIHBhZ2Ug
bnVtYmVyIG9mIHNoYXJlZCBwYWdlLiAgICAqLworICAgIFVJTlQzMiBzdG9yZV9ldnRjaG47ICAg
ICAgLyogRXZlbnQgY2hhbm5lbCBmb3Igc3RvcmUgY29tbXVuaWNhdGlvbi4gKi8KKyAgICB1bmlv
biB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB4ZW5fcGZuX3QgbWZuOyAgICAgIC8q
IE1BQ0hJTkUgcGFnZSBudW1iZXIgb2YgY29uc29sZSBwYWdlLiAgICovCisgICAgICAgICAgICBV
SU5UMzIgIGV2dGNobjsgICAvKiBFdmVudCBjaGFubmVsIGZvciBjb25zb2xlIHBhZ2UuICAgICAg
ICAqLworICAgICAgICB9IGRvbVU7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBVSU5U
MzIgaW5mb19vZmY7ICAvKiBPZmZzZXQgb2YgY29uc29sZV9pbmZvIHN0cnVjdC4gICAgICAgICAq
LworICAgICAgICAgICAgVUlOVDMyIGluZm9fc2l6ZTsgLyogU2l6ZSBvZiBjb25zb2xlX2luZm8g
c3RydWN0IGZyb20gc3RhcnQuKi8KKyAgICAgICAgfSBkb20wOworICAgIH0gY29uc29sZTsKKyAg
ICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBPTkxZIEZJTExFRCBJTiBPTiBJTklUSUFMIEJPT1QgKE5P
VCBSRVNVTUUpLiAgICAgKi8KKyAgICBVSU5UTiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwgYWRk
cmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAgICovCisgICAgVUlOVE4gbnJfcHRfZnJhbWVzOyAv
KiBOdW1iZXIgb2YgYm9vdHN0cmFwIHAudC4gZnJhbWVzLiAgICAgICAqLworICAgIFVJTlROIG1m
bl9saXN0OyAgICAgLyogVklSVFVBTCBhZGRyZXNzIG9mIHBhZ2UtZnJhbWUgbGlzdC4gICAgKi8K
KyAgICBVSU5UTiBtb2Rfc3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwcmUtbG9hZGVk
IG1vZHVsZSAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChQRk4gb2Yg
cHJlLWxvYWRlZCBtb2R1bGUgaWYgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qICBTSUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxhZ3MpLiAgICAgICovCisg
ICAgVUlOVE4gbW9kX2xlbjsgICAgICAvKiBTaXplIChieXRlcykgb2YgcHJlLWxvYWRlZCBtb2R1
bGUuICAgICAqLworI2RlZmluZSBNQVhfR1VFU1RfQ01ETElORSAxMDI0CisgICAgSU5UOCBjbWRf
bGluZVtNQVhfR1VFU1RfQ01ETElORV07CisgICAgLyogVGhlIHBmbiByYW5nZSBoZXJlIGNvdmVy
cyBib3RoIHBhZ2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJhbWVzLiAgICovCisgICAgVUlOVE4g
Zmlyc3RfcDJtX3BmbjsvKiAxc3QgcGZuIGZvcm1pbmcgaW5pdGlhbCBQLT5NIHRhYmxlLiAgICAq
LworICAgIFVJTlROIG5yX3AybV9mcmFtZXM7LyogIyBvZiBwZm5zIGZvcm1pbmcgaW5pdGlhbCBQ
LT5NIHRhYmxlLiAgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBzdGFydF9pbmZvIHN0YXJ0X2luZm9f
dDsKKworLyogTmV3IGNvbnNvbGUgdW5pb24gZm9yIGRvbTAgaW50cm9kdWNlZCBpbiAweDAwMDMw
MjAzLiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAzCisjZGVm
aW5lIGNvbnNvbGVfbWZuICAgIGNvbnNvbGUuZG9tVS5tZm4KKyNkZWZpbmUgY29uc29sZV9ldnRj
aG4gY29uc29sZS5kb21VLmV2dGNobgorI2VuZGlmCisjZW5kaWYgLyogWEVOX0hBVkVfUFZfR1VF
U1RfRU5UUlkgKi8KKworLyogVGhlc2UgZmxhZ3MgYXJlIHBhc3NlZCBpbiB0aGUgJ2ZsYWdzJyBm
aWVsZCBvZiBzdGFydF9pbmZvX3QuICovCisjZGVmaW5lIFNJRl9QUklWSUxFR0VEICAgICgxPDww
KSAgLyogSXMgdGhlIGRvbWFpbiBwcml2aWxlZ2VkPyAqLworI2RlZmluZSBTSUZfSU5JVERPTUFJ
TiAgICAoMTw8MSkgIC8qIElzIHRoaXMgdGhlIGluaXRpYWwgY29udHJvbCBkb21haW4/ICovCisj
ZGVmaW5lIFNJRl9NVUxUSUJPT1RfTU9EICgxPDwyKSAgLyogSXMgbW9kX3N0YXJ0IGEgbXVsdGli
b290IG1vZHVsZT8gKi8KKyNkZWZpbmUgU0lGX01PRF9TVEFSVF9QRk4gKDE8PDMpICAvKiBJcyBt
b2Rfc3RhcnQgYSBQRk4/ICovCisjZGVmaW5lIFNJRl9QTV9NQVNLICAgICAgICgweEZGPDw4KSAv
KiByZXNlcnZlIDEgYnl0ZSBmb3IgeGVuLXBtIG9wdGlvbnMgKi8KKworLyoKKyAqIEEgbXVsdGli
b290IG1vZHVsZSBpcyBhIHBhY2thZ2UgY29udGFpbmluZyBtb2R1bGVzIHZlcnkgc2ltaWxhciB0
byBhCisgKiBtdWx0aWJvb3QgbW9kdWxlIGFycmF5LiBUaGUgb25seSBkaWZmZXJlbmNlcyBhcmU6
CisgKiAtIHRoZSBhcnJheSBvZiBtb2R1bGUgZGVzY3JpcHRvcnMgaXMgYnkgY29udmVudGlvbiBz
aW1wbHkgYXQgdGhlIGJlZ2lubmluZworICogICBvZiB0aGUgbXVsdGlib290IG1vZHVsZSwKKyAq
IC0gYWRkcmVzc2VzIGluIHRoZSBtb2R1bGUgZGVzY3JpcHRvcnMgYXJlIGJhc2VkIG9uIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlCisgKiAgIG11bHRpYm9vdCBtb2R1bGUsCisgKiAtIHRoZSBudW1iZXIg
b2YgbW9kdWxlcyBpcyBkZXRlcm1pbmVkIGJ5IGEgdGVybWluYXRpb24gZGVzY3JpcHRvciB0aGF0
IGhhcworICogICBtb2Rfc3RhcnQgPT0gMC4KKyAqCisgKiBUaGlzIHBlcm1pdHMgdG8gYm90aCBi
dWlsZCBpdCBzdGF0aWNhbGx5IGFuZCByZWZlcmVuY2UgaXQgaW4gYSBjb25maWd1cmF0aW9uCisg
KiBmaWxlLCBhbmQgbGV0IHRoZSBQViBndWVzdCBlYXNpbHkgcmViYXNlIHRoZSBhZGRyZXNzZXMg
dG8gdmlydHVhbCBhZGRyZXNzZXMKKyAqIGFuZCBhdCB0aGUgc2FtZSB0aW1lIGNvdW50IHRoZSBu
dW1iZXIgb2YgbW9kdWxlcy4KKyAqLworc3RydWN0IHhlbl9tdWx0aWJvb3RfbW9kX2xpc3QKK3sK
KyAgICAvKiBBZGRyZXNzIG9mIGZpcnN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAqLworICAgIFVJTlQz
MiBtb2Rfc3RhcnQ7CisgICAgLyogQWRkcmVzcyBvZiBsYXN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAo
aW5jbHVzaXZlKSAqLworICAgIFVJTlQzMiBtb2RfZW5kOworICAgIC8qIEFkZHJlc3Mgb2YgemVy
by10ZXJtaW5hdGVkIGNvbW1hbmQgbGluZSAqLworICAgIFVJTlQzMiBjbWRsaW5lOworICAgIC8q
IFVudXNlZCwgbXVzdCBiZSB6ZXJvICovCisgICAgVUlOVDMyIHBhZDsKK307CisvKgorICogYGlu
Y29udGVudHMgMjAwIHN0YXJ0b2ZkYXlfZG9tMF9jb25zb2xlIERvbTBfY29uc29sZQorICoKKyAq
IFRoZSBjb25zb2xlIHN0cnVjdHVyZSBpbiBzdGFydF9pbmZvLmNvbnNvbGUuZG9tMAorICoKKyAq
IFRoaXMgc3RydWN0dXJlIGluY2x1ZGVzIGEgdmFyaWV0eSBvZiBpbmZvcm1hdGlvbiByZXF1aXJl
ZCB0bworICogaGF2ZSBhIHdvcmtpbmcgVkdBL1ZFU0EgY29uc29sZS4KKyAqLwordHlwZWRlZiBz
dHJ1Y3QgZG9tMF92Z2FfY29uc29sZV9pbmZvIHsKKyAgICBVSU5UOCB2aWRlb190eXBlOyAvKiBE
T00wX1ZHQV9DT05TT0xFXz8/PyAqLworI2RlZmluZSBYRU5fVkdBVFlQRV9URVhUX01PREVfMyAw
eDAzCisjZGVmaW5lIFhFTl9WR0FUWVBFX1ZFU0FfTEZCICAgIDB4MjMKKyNkZWZpbmUgWEVOX1ZH
QVRZUEVfRUZJX0xGQiAgICAgMHg3MAorCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgLyogRm9udCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAgICAgICAgIFVJ
TlQxNiBmb250X2hlaWdodDsKKyAgICAgICAgICAgIC8qIEN1cnNvciBsb2NhdGlvbiAoY29sdW1u
LCByb3cpLiAqLworICAgICAgICAgICAgVUlOVDE2IGN1cnNvcl94LCBjdXJzb3JfeTsKKyAgICAg
ICAgICAgIC8qIE51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIChkaW1lbnNpb25zIGluIGNoYXJh
Y3RlcnMpLiAqLworICAgICAgICAgICAgVUlOVDE2IHJvd3MsIGNvbHVtbnM7CisgICAgICAgIH0g
dGV4dF9tb2RlXzM7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIFdpZHRoIGFu
ZCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAgICAgICAgIFVJTlQxNiB3aWR0aCwgaGVpZ2h0
OworICAgICAgICAgICAgLyogQnl0ZXMgcGVyIHNjYW4gbGluZS4gKi8KKyAgICAgICAgICAgIFVJ
TlQxNiBieXRlc19wZXJfbGluZTsKKyAgICAgICAgICAgIC8qIEJpdHMgcGVyIHBpeGVsLiAqLwor
ICAgICAgICAgICAgVUlOVDE2IGJpdHNfcGVyX3BpeGVsOworICAgICAgICAgICAgLyogTEZCIHBo
eXNpY2FsIGFkZHJlc3MsIGFuZCBzaXplIChpbiB1bml0cyBvZiA2NGtCKS4gKi8KKyAgICAgICAg
ICAgIFVJTlQzMiBsZmJfYmFzZTsKKyAgICAgICAgICAgIFVJTlQzMiBsZmJfc2l6ZTsKKyAgICAg
ICAgICAgIC8qIFJHQiBtYXNrIG9mZnNldHMgYW5kIHNpemVzLCBhcyBkZWZpbmVkIGJ5IFZCRSAx
LjIrICovCisgICAgICAgICAgICBVSU5UOCAgcmVkX3BvcywgcmVkX3NpemU7CisgICAgICAgICAg
ICBVSU5UOCAgZ3JlZW5fcG9zLCBncmVlbl9zaXplOworICAgICAgICAgICAgVUlOVDggIGJsdWVf
cG9zLCBibHVlX3NpemU7CisgICAgICAgICAgICBVSU5UOCAgcnN2ZF9wb3MsIHJzdmRfc2l6ZTsK
KyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDYKKyAgICAgICAgICAg
IC8qIFZFU0EgY2FwYWJpbGl0aWVzIChvZmZzZXQgMHhhLCBWRVNBIGNvbW1hbmQgMHg0ZjAwKS4g
Ki8KKyAgICAgICAgICAgIFVJTlQzMiBnYmxfY2FwczsKKyAgICAgICAgICAgIC8qIE1vZGUgYXR0
cmlidXRlcyAob2Zmc2V0IDB4MCwgVkVTQSBjb21tYW5kIDB4NGYwMSkuICovCisgICAgICAgICAg
ICBVSU5UMTYgbW9kZV9hdHRyczsKKyNlbmRpZgorICAgICAgICB9IHZlc2FfbGZiOworICAgIH0g
dTsKK30gZG9tMF92Z2FfY29uc29sZV9pbmZvX3Q7CisjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9p
bmZvIGRvbTBfdmdhX2NvbnNvbGVfaW5mbworI2RlZmluZSB4ZW5fdmdhX2NvbnNvbGVfaW5mb190
IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190CisKK3R5cGVkZWYgVUlOVDggeGVuX2RvbWFpbl9oYW5k
bGVfdFsxNl07CisKKy8qIFR1cm4gYSBwbGFpbiBudW1iZXIgaW50byBhIEMgVUlOVE4gY29uc3Rh
bnQuICovCisjZGVmaW5lIF9fbWtfdW5zaWduZWRfbG9uZyh4KSB4ICMjIFVMCisjZGVmaW5lIG1r
X3Vuc2lnbmVkX2xvbmcoeCkgX19ta191bnNpZ25lZF9sb25nKHgpCisKK19fREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUodWludDgsICBVSU5UOCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVp
bnQxNiwgVUlOVDE2KTsKK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDMyLCBVSU5UMzIp
OworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50NjQsIFVJTlQ2NCk7CisKKyNlbHNlIC8q
IF9fQVNTRU1CTFlfXyAqLworCisvKiBJbiBhc3NlbWJseSBjb2RlIHdlIGNhbm5vdCB1c2UgQyBu
dW1lcmljIGNvbnN0YW50IHN1ZmZpeGVzLiAqLworI2RlZmluZSBta191bnNpZ25lZF9sb25nKHgp
IHgKKworI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworLyogRGVmYXVsdCBkZWZpbml0aW9u
cyBmb3IgbWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0bC4gKi8KKyNpZiBkZWZpbmVkKF9fWEVO
X18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworI2lmbmRlZiB1aW50NjRfYWxpZ25lZF90
CisjZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgVUlOVDY0CisjZW5kaWYKKyNpZm5kZWYgWEVOX0dV
RVNUX0hBTkRMRV82NAorI2RlZmluZSBYRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIFhFTl9HVUVT
VF9IQU5ETEUobmFtZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworc3RydWN0IHhl
bmN0bF9iaXRtYXAgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIGJpdG1hcDsKKyAg
ICBVSU5UMzIgbnJfYml0czsKK307CisjZW5kaWYKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5f
XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElD
X1hFTl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt
ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK
KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIApBbnRob255IFBFUkFS
RAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k
ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl
bi5vcmcveGVuLWRldmVsCg==

From xen-devel-bounces@lists.xen.org Fri Sep 05 08:59:01 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Sep 2014 08:59:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XPpMC-00085F-Mg; Fri, 05 Sep 2014 08:59:00 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XPpM4-0007qT-MI
	for xen-devel@lists.xen.org; Fri, 05 Sep 2014 08:58:53 +0000
Received: from [85.158.143.35:39595] by server-2.bemta-4.messagelabs.com id
	31/D3-04525-C4B79045; Fri, 05 Sep 2014 08:58:52 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-10.tower-21.messagelabs.com!1409907528!11863021!1
X-Originating-IP: [131.159.0.36]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21765 invoked from network); 5 Sep 2014 08:58:48 -0000
Received: from mail-out2.informatik.tu-muenchen.de (HELO
	smtp2.informatik.tu-muenchen.de) (131.159.0.36)
	by server-10.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 5 Sep 2014 08:58:48 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 6158F101962B6;
	Fri,  5 Sep 2014 10:58:46 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 5A837C218A1D;
	Fri,  5 Sep 2014 10:58:46 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Fri,  5 Sep 2014 10:58:29 +0200
Message-Id: <1409907524-12509-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1409907524-12509-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1409907524-12509-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH v4 01/16] xen: Relocate mem_access and mem_event
	into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  61 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   2 +-
 xen/arch/x86/mm/hap/nested_hap.c |   2 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   2 +-
 xen/arch/x86/mm/p2m-pod.c        |   2 +-
 xen/arch/x86/mm/p2m-pt.c         |   2 +-
 xen/arch/x86/mm/p2m.c            |   2 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/config.h     |   3 +
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 141 ++++++++
 xen/include/xen/mm.h             |   6 +
 31 files changed, 1136 insertions(+), 1041 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index d1517c4..3aeb79d 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 83e6fae..3569481 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -63,8 +63,8 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <public/mem_event.h>
 #include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..704bb66 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -21,7 +21,7 @@
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..f6becd4 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -23,7 +23,7 @@
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..fa845fd 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -30,7 +30,7 @@
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/atomic.h>
 #include <xen/rcupdate.h>
 #include <asm/event.h>
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..881259a 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -26,7 +26,7 @@
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..46231cf 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -30,7 +30,7 @@
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index c2e89e1..ac30e9c 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -30,7 +30,7 @@
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..203c6b4 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -2,9 +2,9 @@
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
+#include <xen/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..1f9702d 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -35,9 +35,9 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
+#include <xen/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 1952070..6f51311 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..07161a2
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <asm/p2m.h>
+#include <public/memory.h>
+#include <xen/mem_event.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..b4a23fd
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <asm/p2m.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index c2dd31b..cc8a3d0 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -977,6 +977,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..8a864ce 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -67,6 +67,9 @@
 #define NR_CPUS 256
 #endif
 
+#define CONFIG_MEM_SHARING 1
+#define CONFIG_MEM_PAGING 1
+
 /* Maximum we can support with current vLAPIC ID mapping. */
 #define MAX_HVM_VCPUS 128
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..5e3963e
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,141 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-users-bounces@lists.xen.org Fri Sep 05 12:03:07 2014
Return-path: <xen-users-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Sep 2014 12:03:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xen.org>)
	id 1XPsDE-0002zs-R8; Fri, 05 Sep 2014 12:01:56 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <mariaeugeniallamas.pms@gmail.com>)
	id 1XPjbv-0007BP-5A
	for xen-users@lists.xensource.com; Fri, 05 Sep 2014 02:50:51 +0000
Received: from [193.109.254.147:26301] by server-10.bemta-14.messagelabs.com
	id 6F/CE-01463-A0529045; Fri, 05 Sep 2014 02:50:50 +0000
X-Env-Sender: mariaeugeniallamas.pms@gmail.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1409883825!13617746!1
X-Originating-IP: [37.28.159.102]
X-SpamReason: No, hits=1.3 required=7.0 tests=HTML_MESSAGE,
	MIME_HTML_ONLY,ML_RADAR_SPEW_LINKS_14,SUBJ_HAS_UNIQ_ID,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22443 invoked from network); 5 Sep 2014 02:23:45 -0000
Received: from d159102.artnet.pl (HELO actualizacionespemex.info)
	(37.28.159.102) by server-4.tower-27.messagelabs.com with SMTP;
	5 Sep 2014 02:23:45 -0000
Received: from WIN-SBPRQ90H4VJ (37.28.159.102) by actualizacionespemex.info
	for <xen-users@lists.xensource.com>;
	Thu, 4 Sep 2014 19:22:22 -0700 (envelope-from
	<mariaeugeniallamas.pms@gmail.com>)
Message-ID: <fa3430d202c8cd157b72188d0015602c@gmail.com>
From: "Lic. Maria Eugenia Llamas" <mariaeugeniallamas.pms@gmail.com>
To: <xen-users@lists.xensource.com>
Date: Thu, 4 Sep 2014 19:22:22 -0700
MIME-Version: 1.0
X-Mailman-Approved-At: Fri, 05 Sep 2014 12:01:54 +0000
Subject: [Xen-users] =?windows-1252?q?Detonando_Ventas_-Capacitaci=F3n_TOT?=
	=?windows-1252?q?AL_para_Equipos=2E_2559035?=
X-BeenThere: xen-users@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: mariaeugeniallamas.pms@gmail.com
List-Id: Xen user discussion <xen-users.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xen.org>
List-Help: <mailto:xen-users-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1303095359432521031=="
Sender: xen-users-bounces@lists.xen.org
Errors-To: xen-users-bounces@lists.xen.org

This is a multi-part message in MIME format.

--===============1303095359432521031==
Content-Type: multipart/related;
	boundary="----=SPLITOR00A_001_1824033437D"

This is a multi-part message in MIME format.

------=SPLITOR00A_001_1824033437D
Content-Type: text/html;
	charset="windows-1252"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252">
</head>
<body style=3D"FONT-FAMILY: Verdana">
<p><font size=3D1>2559035<br><img border=3D0 =
src=3D"cid:2364an$IN678014098837420@WIN-SBPRQ90H4VJ"></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><strong=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 15pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 28px">Programaci=F3n=20
para Vendedores de =C9xito</span></strong><span =
class=3Decxapple-converted-space=20
style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,91,136); LINE-HEIGHT: 26px">&nbsp;</span></span><span=20
lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(31,73,125); LINE-HEIGHT: 26px">=96</span><span=20
class=3Decxapple-converted-space style=3D"LINE-HEIGHT: 22px"><span =
lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,91,136); LINE-HEIGHT: 26px">&nbsp;</span></span><span=20
lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 26px">Simulacros=20
efectivos&nbsp; de cierre de Ventas</span><span lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,91,136); LINE-HEIGHT: 26px">-<br=20
style=3D"LINE-HEIGHT: 26px"></span><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(38,38,38); LINE-HEIGHT: 25px">=DAnicas=20
presentaciones a nivel nacional,&nbsp;cupo limitado</span><span=20
style=3D"FONT-SIZE: 13.5pt; COLOR: rgb(68,68,68); LINE-HEIGHT: =
25px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(152,72,6); LINE-HEIGHT: 25px">Promoci=F3n=20
Exclusiva, Una beca completa al adquirir Paquete Platino o paquete =
Bronce<strong=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 25px"><span=20
style=3D"FONT-FAMILY: Verdana, sans-serif; LINE-HEIGHT: =
25px">.</span></strong></span><span=20
lang=3DES style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><u=20
style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 16pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 30px">11=20
de Septiembre /M=E9xico D.F.</span></u><u style=3D"LINE-HEIGHT: =
22px"><span lang=3DES=20
style=3D"FONT-SIZE: 16pt; COLOR: rgb(0,176,240); LINE-HEIGHT: =
30px"></span></u></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><b=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">Incluye</span></b><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">:=20
La exposici=F3n de un experto estratega, manual impreso, manual en CD =
para=20
replicar la informaci=F3n en su empresa,&nbsp; coffee Break continuo, =
snack, y=20
comida en cortes=EDa</span><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
black; LINE-HEIGHT: 25px"><span=20
class=3DApple-converted-space>&nbsp;</span>y<span=20
class=3DApple-converted-space>&nbsp;</span></span><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">Reconocimiento=20
con valor curricular ante la STPS.</span><span lang=3DES=20
style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/12.6pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES style=3D"COLOR: rgb(0,176,240); LINE-HEIGHT: =
22px">&nbsp;</span><strong=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 25px">*Paga=20
con tarjeta de cr=E9dito (Visa, Mastercard y Amex)</span></strong><span =
lang=3DES=20
style=3D"COLOR: rgb(0,176,240); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(38,38,38); LINE-HEIGHT: 25px">El=20
evento m=E1s avanzado de M=E9xico, enfocado a Formar expertos Cerradores, =
y<span=20
class=3DApple-converted-space>&nbsp;</span></span><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; LINE-HEIGHT: =
25px">certeros<span=20
style=3D"COLOR: rgb(38,38,38); LINE-HEIGHT: 25px"><span=20
class=3DApple-converted-space>&nbsp;</span>detonadores de=20
utilidades.</span></span><span lang=3DES=20
style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/16.5pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(38,38,38); LINE-HEIGHT: 25px">Totalmente=20
practico, din=E1mico y efectivo.</span><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/16.5pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 25px">Mayores=20
informes al:</span><span class=3Decxapple-converted-space=20
style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,106,106); LINE-HEIGHT: 25px">&nbsp;</span></span><strong=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">01=20
(33) 88-51-27-41 y (33) 88-51-23-65</span></strong><span lang=3DES=20
style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">Adquiera=20
el programa completo</span><span class=3Decxapple-converted-space=20
style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,94,138); LINE-HEIGHT: 25px">&nbsp;</span></span><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 25px">(temario,<span=20
class=3Decxapple-converted-space style=3D"LINE-HEIGHT: =
25px">&nbsp;</span>inversi=F3n,=20
rese=F1a del<span class=3Decxapple-converted-space=20
style=3D"LINE-HEIGHT: 25px">&nbsp;</span>estratega),</span><span=20
class=3Decxapple-converted-space style=3D"LINE-HEIGHT: 22px"><span =
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,106,106); LINE-HEIGHT: 25px">&nbsp;</span></span><span=20
class=3Decxapple-converted-space style=3D"LINE-HEIGHT: 22px"><span=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
black; LINE-HEIGHT: 25px"></span></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">respondiendo=20
este correo con los siguientes datos</span><span=20
style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">Nombre:</span><span=20
lang=3DES style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">Tel=E9fono:</span><span=20
lang=3DES style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">Empresa:</span><span=20
lang=3DES style=3D"COLOR: rgb(68,68,68); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/16.5pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(68,68,68); LINE-HEIGHT: 25px">#=20
de Interesados:</span><span lang=3DES=20
style=3D"FONT-SIZE: 11pt; FONT-FAMILY: Calibri, sans-serif; COLOR: =
rgb(31,73,125); LINE-HEIGHT: 20px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); FONT: 12pt/16.5pt 'Times New =
Roman', serif; MARGIN: 0px 0px 1.35em; LETTER-SPACING: normal; =
TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><u=20
style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">Enfocado=20
a:</span></u><u style=3D"LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></u></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Conversi=F3n=20
de Objeciones a<span class=3Decxapple-converted-space =
style=3D"LINE-HEIGHT: 25px"><b=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 25px">&nbsp;</b></span><b=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 25px">Cierres.</b></span><span =
lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Detecta=20
y &nbsp;aplicaci=F3n de cierres en cada negociaci=F3n.</span><span =
lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Conoce=20
y aplica tu cierre maestro.</span><span lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Detona=20
las utilidades en cada operaci=F3n.</span><span lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Optimizaci=F3n=20
de recursos con negociaciones exitosas.</span><span lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">*Practicas=20
magistrales en nuestros simulacros de cierre de ventas</span><span =
lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px">&nbsp;</span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/15.75pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><b=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,32,96); LINE-HEIGHT: 25px">"M=E1s=20
de 3500 ejecutivos entrenados en M=E9xico 2014"&nbsp;</span></b><span =
lang=3DES=20
style=3D"COLOR: rgb(0,32,96); LINE-HEIGHT: 22px"></span></p>
<p class=3Decxmsonormal=20
style=3D"BACKGROUND: white; WHITE-SPACE: normal; TEXT-TRANSFORM: none; =
WORD-SPACING: 0px; COLOR: rgb(68,68,68); TEXT-ALIGN: justify; FONT: =
12pt/16.5pt 'Times New Roman', serif; MARGIN: 0px 0px 1.35em; =
LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: =
0px"><b=20
style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: 22px"><span lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(75,151,0); LINE-HEIGHT: 25px"><br=20
style=3D"LINE-HEIGHT: 25px"></span></b><span lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 26px">Quedo=20
a sus =F3rdenes.<br style=3D"LINE-HEIGHT: 26px"></span><span lang=3DES=20
style=3D"FONT-FAMILY: Verdana, sans-serif; COLOR: rgb(0,176,240); =
LINE-HEIGHT: 22px"><br=20
style=3D"LINE-HEIGHT: 22px"></span><span lang=3DES=20
style=3D"FONT-SIZE: 14pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 26px">Lic.=20
Lisset Estrada.</span><b style=3D"FONT-WEIGHT: bold; LINE-HEIGHT: =
22px"><span=20
lang=3DES=20
style=3D"FONT-SIZE: 13.5pt; FONT-FAMILY: Verdana, sans-serif; COLOR: =
rgb(0,176,240); LINE-HEIGHT: 25px"></span></b></p>
<p class=3DecxMsoNormal=20
style=3D"WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; =
COLOR: rgb(68,68,68); FONT: 12pt/22px 'Times New Roman', serif; MARGIN: =
0px 0px 1.35em; LETTER-SPACING: normal; BACKGROUND-COLOR: =
rgb(255,255,255); TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DES=20
style=3D"FONT-FAMILY: Verdana, sans-serif; COLOR: rgb(0,32,96); =
LINE-HEIGHT: 22px"><br=20
style=3D"LINE-HEIGHT: 22px">&nbsp;</span><span =
class=3Decxapple-style-span=20
style=3D"LINE-HEIGHT: 22px"><span=20
style=3D"FONT-SIZE: 18pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: rgb(0,32,96); LINE-HEIGHT: 34px">Tel=E9fonos:=20
(0133) 8851-2365, (0133) 8851-2741 con m=E1s de 10 =
l=EDneas.</span></span><span=20
style=3D"FONT-SIZE: 11pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: rgb(0,32,96); LINE-HEIGHT: 20px"></span></p>
<p class=3DecxMsoNormal=20
style=3D"WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; =
COLOR: rgb(68,68,68); FONT: 12pt/22px 'Times New Roman', serif; MARGIN: =
0px 0px 1.35em; LETTER-SPACING: normal; BACKGROUND-COLOR: =
rgb(255,255,255); TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
class=3Decxapple-style-span style=3D"LINE-HEIGHT: 22px"><span=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: 'Century Gothic', sans-serif; COLOR: =
black; LINE-HEIGHT: 15px">Pms=20
Capacitaci=F3n Efectiva de M=E9xico es una empresa especializada en =
Capacitaci=F3n=20
Registrada ante la STPS. &nbsp;</span></span><span lang=3DEN-US=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: 'Century Gothic', sans-serif; COLOR: =
black; LINE-HEIGHT: 15px">D&amp;B=20
D-U-N-S Registered=99 D&amp;B D-U-N-S=AE Number 816637714</span><span=20
class=3Decxapple-style-span style=3D"LINE-HEIGHT: 22px"><span =
lang=3DEN-US=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: Calibri, sans-serif; COLOR: black; =
LINE-HEIGHT: 15px"></span></span></p>
<p class=3DecxMsoNormal=20
style=3D"WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; =
COLOR: rgb(68,68,68); FONT: 12pt/22px 'Times New Roman', serif; MARGIN: =
0px 0px 1.35em; LETTER-SPACING: normal; BACKGROUND-COLOR: =
rgb(255,255,255); TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
lang=3DEN-US=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: 'Century Gothic', sans-serif; COLOR: =
black; LINE-HEIGHT: 15px">E-Mail=20
MARKETING SERVICE POWERED BY MEDIAMKTOOLS.<br style=3D"LINE-HEIGHT: =
15px"><br=20
style=3D"LINE-HEIGHT: 15px"></span><span class=3Decxapple-style-span=20
style=3D"LINE-HEIGHT: 22px"><span=20
style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: black; LINE-HEIGHT: 16px">Este=20
Mensaje ha sido enviado a</span></span><span =
class=3Decxapple-converted-space=20
style=3D"LINE-HEIGHT: 22px"><span=20
style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: black; LINE-HEIGHT: 16px">&nbsp;xen-users@lists.xensource.com=20
</span></span><span class=3Decxapple-style-span style=3D"LINE-HEIGHT: =
22px"><span=20
style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: black; LINE-HEIGHT: 16px">como=20
usuario de Pms de M=E9xico o bien un usuario le refiri=F3 para recibir =
este=20
bolet=EDn.</span></span><span=20
style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: 'Century Gothic', sans-serif; =
COLOR: black; LINE-HEIGHT: 16px"><br=20
style=3D"LINE-HEIGHT: 16px"></span><span=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: 'Century Gothic', sans-serif; COLOR: =
black; LINE-HEIGHT: 15px">Como=20
usuario de Pms de M=E9xico, en este acto autoriza de manera expresa que =
Pms de=20
M=E9xico le puede contactar v=EDa correo electr=F3nico u otros medios.<br=20
style=3D"LINE-HEIGHT: 15px">ALTO, si en esta ocasi=F3n la informaci=F3n =
recibida no=20
fue de su inter=E9s pero desea recibir informaci=F3n personalizada en =
relaci=F3n a=20
otros temas favor de indicarlo.<br style=3D"LINE-HEIGHT: 15px">Si usted =
ha=20
recibido este mensaje por error, haga caso omiso de el y de antemano una =
sincera=20
disculpa por la molestia, reporte su cuenta respondiendo este correo con =
el=20
subject BAJAVTA</span></p>
<p class=3DecxMsoNormal=20
style=3D"WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; =
COLOR: rgb(68,68,68); FONT: 12pt/22px 'Times New Roman', serif; MARGIN: =
0px 0px 1.35em; LETTER-SPACING: normal; BACKGROUND-COLOR: =
rgb(255,255,255); TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span=20
style=3D"FONT-SIZE: 8pt; FONT-FAMILY: 'Century Gothic', sans-serif; COLOR: =
black; LINE-HEIGHT: 15px">Unsubscribe=20
to this mailing list, reply a blank message with the subject UNSUBSCRIBE=20
BAJAVTA<br style=3D"LINE-HEIGHT: 15px">Tenga en cuenta que la gesti=F3n de =
nuestras=20
bases de datos es de suma importancia para nosotros y no es intenci=F3n de =
la=20
empresa la inconformidad del receptor, nuestra intenci=F3n es promover=20
herramientas de utilidad para el</span></p></font>
</body>
</html>


------=SPLITOR00A_001_1824033437D
Content-Type: image/jpeg;
	name="imageventas11 de sep001.jpg"
Content-Transfer-Encoding: base64
Content-ID: <2364an$IN678014098837420@WIN-SBPRQ90H4VJ>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf
IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAMaA3kDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDLooor
6Q+FCiiigAoq9o1lHqOrW9nKzKkrYJXrVe7iWC7lhXJWNyoJ6kA1PMublNOR8nP02IaKKKozCiii
gAooooAKK3pNAh/4RWHVYpHadstJGemwHGR+lYNRGale3Q1qUpU7c3VXCitTw/pSavqQgmZkgVd0
jqeQO2Pxqtqlqllql1axkskMrIpbqQDT51zcvUHSkoKp0ZUooq1p0NnNeql9OYIcEs47cHH64pt2
VyIrmaRVopTwSMg+h9RSUxWCiiigQUUUUAFFFFABRSr94Z6Zrd1Ww0bSboWzx3szGNXLLKqjkfSo
lOzsaxpuUXK+iMGitHzdD/59L/8A7/p/8TVB9u4lAwTPAY5IHuapO/QmUUutxtFFFMgKKKKACiir
llp5vLa8mEoT7LF5hBGd3OMUm0ldlRi5OyKdFHFFMkKKKKACiiigAoopyKXcKO9AFuyjwpkPfpXd
+CdN2pLqMg5b5Is+nc1yVnavczxWsQy0hCjFep2tvFYWUcK4EcKcnp071z4+pyU1TW7O7KKHtazr
S2j+ZyHxO1v7Doq6bE2Jb373sg6/nXk2eOlavizW213xDc3YOYlPlxD0UdPz61jZrTDU/Z00up34
ifPUbHZozTc0ZrouYWHZozTc0ZouFh2aM03NGaLhYdmjNNzRmi4WHZozTc0ZouFh2aM03NGaLhYd
mjNNzRmi4WHZozTc0ZouFh2aM03NGaLhYdmjNNzRmi4WHZozTc0ZouFh2aM03NGaLhYdmjNNzRmi
4WHZpQfamZoyTRcLGrp3h7V9WhM1hYTTRA43qOPwqS98Ma5ptq11d6bNHCn3nI4X617L4UsvsHhi
wgxg+UGb6nmsn4m3wtPCEsWebmRY8e3U/wAq8xY2cqvIlpc9B4SEafM30PILa2nvLhba1haaZ+FR
RkmtL/hEvEn/AEA7z/v3Wt8LrP7T4q89h/x7Qs+fc8f1rv8AxX40g8LTW8Ulo9y86lsK4XaBW1bE
zjU9nBXM6WHg6fPN2PI7rw9rVjEZbrSrqGMfxNHwKjsdG1TVEd9P0+a6RDhmiXODXtvhzX7XxTpT
XUcJRdxjkjk55p+gaJBosd3HbrtSe4aQD0HpWLx04pqUdTVYOLaaejPFrjw1rtpA9xcaTdRRIMu7
JgAVStLK61C4FvZQSXExGQkYycV7r4qjEvhfUk5OYCePbmuV+FmheRp8mszLh7j5Ycjog6n8auON
fsnOS1Ilg0qigmcKfCXiMH/kCXv4R1FZ+HdZ1B2S2024kMZ2sdmAD719AU1USNAkaBF9AMVh/aE+
yN/qMO54c/gbxIqljpchwexBNY13aXVjOYLu3kgkA+5IuDXtMfjXTI7i6h1Nm01oJSi+fkCUf3gc
dK5n4g6x4d1rQg1pqFvPewuDGE+8R3HSt6WKqynyyiYVMNTUbxkeaZozTDIAcbh9DW1qWixWXhzT
NUSZnkvd25COFx6V3Oai0n1ONQbTfYyM0Zpm9Qcbhmun8GeF4PE093HNO8PkRhlK4xuPTPtSnUUI
80hwpub5Uc3mjNSXUEtndzW0ow8LlG+oOK6Twb4QTxLHd3FxNJDBAMKUHLN1olVjCPM3oEaUpS5U
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

------=SPLITOR00A_001_1824033437D--



--===============1303095359432521031==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xen.org
http://lists.xen.org/xen-users
--===============1303095359432521031==--



From xen-users-bounces@lists.xen.org Fri Sep 05 18:23:48 2014
Return-path: <xen-users-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Sep 2014 18:23:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xen.org>)
	id 1XPy9f-0005JO-3a; Fri, 05 Sep 2014 18:22:39 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <singapore.mr.teo.en.ming@gmail.com>)
	id 1XPy9d-0005JJ-4O
	for xen-users@lists.xen.org; Fri, 05 Sep 2014 18:22:37 +0000
Received: from [85.158.137.68:20735] by server-15.bemta-3.messagelabs.com id
	64/FB-01573-C6FF9045; Fri, 05 Sep 2014 18:22:36 +0000
X-Env-Sender: singapore.mr.teo.en.ming@gmail.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1409941352!9064702!1
X-Originating-IP: [209.85.220.51]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19244 invoked from network); 5 Sep 2014 18:22:34 -0000
Received: from mail-pa0-f51.google.com (HELO mail-pa0-f51.google.com)
	(209.85.220.51)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Sep 2014 18:22:34 -0000
Received: by mail-pa0-f51.google.com with SMTP id rd3so22571506pab.24
	for <xen-users@lists.xen.org>; Fri, 05 Sep 2014 11:22:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=message-id:date:from:reply-to:user-agent:mime-version:to:subject
	:references:in-reply-to:content-type;
	bh=+CYDmATtP2a8lGgEDzy2dvUGnDEkludFfd5i4H+9h+I=;
	b=nSE+/MJeVqp4m/p8Pz1xSJ3SlSfm4hpdBTCDRNa2aO+ygzY7zaFVl4kPR8BXBWjLqq
	hWm31KSGEyVct11SSOZKWgLZTX6zEExjE2OTM1aXU1rehMpyEg9XA5Xfeb0aU+JBx9wr
	FLL9QiAlNg8W5t153XdSBdqz8CY7sjjpEnsZl85iq1q8e0OIXs4B2bbViDERrh6Lpoo2
	kRTcOBCUM+noNCUh1U7V7Q4EYfmjOzskB4uLu3iAuonXzPjYaGj1uz1RZMzLM3gbgPS4
	pnb/qJCNGYud1/SWF7Cx09G95bFQgyaiB1QCieotczevVZVb0IK8TRg2uz2MkfTawi1s
	VkCQ==
X-Received: by 10.70.42.71 with SMTP id m7mr999716pdl.72.1409941352387;
	Fri, 05 Sep 2014 11:22:32 -0700 (PDT)
Received: from [192.168.1.26] ([175.156.84.1])
	by mx.google.com with ESMTPSA id kk7sm2464760pab.31.2014.09.05.11.22.30
	for <multiple recipients>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 05 Sep 2014 11:22:31 -0700 (PDT)
Message-ID: <5409FF64.9040409@gmail.com>
Date: Sat, 06 Sep 2014 02:22:28 +0800
From: Teo En Ming <singapore.mr.teo.en.ming@gmail.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
	rv:31.0) Gecko/20100101 Thunderbird/31.0
MIME-Version: 1.0
To: "xen-users@lists.xen.org" <xen-users@lists.xen.org>, 
	'Teo En Ming' <teo.en.ming@gmail.com>
References: <CAGc1Gz2nzAK4=PC7ij=65QeN=mAnRg38Nv9ij2agz0oN2_kxjg@mail.gmail.com>
In-Reply-To: <CAGc1Gz2nzAK4=PC7ij=65QeN=mAnRg38Nv9ij2agz0oN2_kxjg@mail.gmail.com>
Content-Type: multipart/mixed; boundary="------------060305020809030008090208"
Subject: Re: [Xen-users] Successful Xen VGA Passthrough with Sapphire AMD
 Radeon HD 6450 Display Card
X-BeenThere: xen-users@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: singapore.mr.teo.en.ming@gmail.com
List-Id: Xen user discussion <xen-users.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xen.org>
List-Help: <mailto:xen-users-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=subscribe>
Sender: xen-users-bounces@lists.xen.org
Errors-To: xen-users-bounces@lists.xen.org

This is a multi-part message in MIME format.
--------------060305020809030008090208
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

On 04/09/2014 13:29, Teo En Ming wrote:
> Hi,
>
> I would like to report successful Xen VGA Passthrough with Sapphire 
> AMD Radeon HD 6450 display card.
>
> Details are as follows:
>
> Host operating system dom0: Ubuntu 14.04 LTS
> Linux kernel: self-compiled 3.16.1
> Xen hypervisor: self-compiled 4.4.1
> Guest operating system domU: Windows 7 Ultimate HVM domU
> Sapphire AMD Radeon HD 6450 Driver DVD: INSTALLED
>
> Please refer to the attached file amd.txt for installation details. I 
> will write a more detailed installation guide later on. Stay tuned.
>
> Also please refer to attached screenshot showing that AMD RADEON HD 
> 6450 in Display Manager DOES NOT have error code 43. There is NO 
> yellow exclamation mark beside the AMD Radeon HD 6450 in Display 
> Manager. Xen VGA Passthrough is fully successful.
>
> Screenshot URL:
>
> http://i.imgur.com/y2tsNsH.jpg
>
> I would like to report that Xen VGA Passthrough with Windows 8 HVM 
> domU is NOT successful. Although Windows 8 HVM domU can boot up 
> successfully initially with successful VGA passthrough, it 
> SUBSEQUENTLY keeps rebooting forever whenever I tried to start Windows 
> 8 HVM domU.
>
> Currently I have a problem. Although I passed through the USB 
> controllers, the USB keyboard and USB mouse is not working. I need to 
> open a VNC Viewer to Windows 7 HVM domU and control the USB mouse from 
> within the VNC Viewer. This is not ideal. Please help me with this 
> problem so that I can use the USB mouse and USB keyboard directly 
> within Windows 7 HVM domU.
>
> Thank you very much.
>
> Yours sincerely,
>
> Teo En Ming

Hi,

I would like to report that I have solved the infinite rebooting problem 
with Windows 8 HVM domU. I have re-installed Windows 8 HVM domU from 
scratch. I can now say that Xen VGA Passthrough with Sapphire AMD Radeon 
HD 6450 display card is successful with Windows 8 HVM domU.

Please refer to attached PDF installation guide for more details.

Thank you very much.

-- 
Yours sincerely,

Teo En Ming
Singapore


--------------060305020809030008090208
Content-Type: application/pdf;
 name="Xen VGA Passthrough with AMD Display Cards - Version 1.4.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0="Xen VGA Passthrough with AMD Display Cards - Version 1.4.pdf"

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
vM0dJtjb7tPwGbuPnfr5fhPLqebG8Y3Ne6h3DbOP3S+7n76RB/yDUlTudJTvQuUyuYlVMt8k
5V8/N8wq97tan3ZjhRseI+4juYPyrZGD9o1v7oZ2I1saxRqFu8afU9cwlnn+QPn1azR8uVqW
eRgiOFiMNpQ57wEcJRGhb0nkBURJLzu0kEGgt5Ouoa3UL3C3twkPsn+cgIRG/kVaMiMLZsdE
OJm2WpLSYQTHUkiAhqt0X85qEWxH7VC3hLLxZM1FaXGpTGU6kN2XgkEdwMlQ8jcqJOVftpw4
1gxymq6xf6lmslTVKgJ3KPUyiaxomtwES6WN8YsVngJ0Etf5QLr6uXSwMatoppDqpbiV9W88
dKcJCx/HDAZTZEXWtw3+6GUcEwfcR7uBi7NTXMzxWfdxy7XzeRRQpv+L/soLHn5Xl91U8jAi
SpAKbNrkoIZNVWqqMTScKZVnz/DGTEFqTzqcPYmuPZPmzrxtOenE6znY2hIv0u10noo0AdMR
e6YhOvMiwCs3DV6xNklNnmHwqjvAfbO30YGuAwXNlwcKeHgR0Ow/3W/dh+u3P/ju59+7D6+f
XXf5tft+9wfvv7znCmVuZHN0cmVhbQplbmRvYmoKCjMgMCBvYmoKMjIwOQplbmRvYmoKCjQg
MCBvYmoKPDwvVHlwZS9YT2JqZWN0Ci9TdWJ0eXBlL0Zvcm0KL0JCb3hbIC0xNzcgNDIwIDc3
MiA0MjAuMSBdCi9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9LIHRydWU+
PgovTGVuZ3RoIDgKL0ZpbHRlci9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJwDAAAAAAEKZW5k
c3RyZWFtCmVuZG9iagoKNSAwIG9iago8PC9DQSAwLjUKICAgL2NhIDAuNQo+PgplbmRvYmoK
CjcgMCBvYmoKPDwvTGVuZ3RoIDggMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4
nLVZS28cNwy+76/QOYAdidJII2AxwD4L9BZ0gR6M3NqkKLItkh7690vqRY40tlOjheFdUcP5
+BRFafWjUX/vviqtNI6mOD2Cmp15nNW3X3c/v1N/5Gf49+3z7njbTR4fheCQ+faLen8FZUDd
Pj3tzXmBPXg9Lw9+r6O2GkDTFH1o0NPygN8nIo76vDwEZAJYDD4zDmfTh/Y0cTRTfm4mfHHG
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
Z3RoIDgKL0ZpbHRlci9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJwDAAAAAAEKZW5kc3RyZWFt
CmVuZG9iagoKMTAgMCBvYmoKPDwvQ0EgMC41CiAgIC9jYSAwLjUKPj4KZW5kb2JqCgoxMiAw
IG9iago8PC9MZW5ndGggMTMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nLUZ
y44kt+3eX6GzgZ0tvUolYNBAV3dPgNyMDJCDkVtiG4YnhtcH/75J8SGW1PvIOkZjekQVi+Kb
FHt58u73069ucQuscs1PwW3JP23uw39O//zG/fe04DP34YdTjtWVDRHedO3dzy6vgG2AwlgG
iAjEChgMGWI/ux9P339DG2sGUo06ogJUlMoIbHoyAJXoy9oQE+qdrbfTyLChMVAfzxXmrZCd
+66bLqgbZDGMGYad0eesmv31lOvT6krxsPn6b/f+JTgPq++/e/b+vD4vd5+XsNRlX9azf4Z/
4fyuPC81vpzD87LhXoJVgO31mTZvS4HXNr/73Db8xa8pAIZHcv78LtA7RMqn879e/366vxJ3
2QPXb7rutuhAYSwFQlcGrg0ho8OcIyCIDgGS94/LbjkEmLKsDaGD9YXpgVFDY6B+OJWZtoJ1
y3d9iHjuIIFhyDDqjP5mdajVY4HNwepJ7bovd1m0zeIj2T6t5/zsCxrSb4DEz+/01Fcw+O5X
f4H19ewXwLrhc7C8XwBhyc0Frmf2g7AuNdAeH0cU8K8COjke+GENEbdCat/eC3sBKG/sU20n
+J0fAWY6v8t82r7c4DXywJsP5+0ZREEAqMEHPTQsDR3PJERGr+DWoBDAWs5Byd2Bhyr+q2oN
CexxVKulHz5O/sjIY8Qgq1Smk/0CmeF4MgQjqoLCL4AR8xJJpVeUFI4ZiKx1fcojEZKXOaHg
RYOANhqp0pSfJKCFW8wdoGQAxjO2AN7+ZWc09kHPuBOvE6V1m33Yd2dqdCowGODTmAQnjmz3
sPoMuWl7yDIC6OrjgTlP1rUHkj7IhCvZE7MmfEcyabOwhFJ7HPVAAO7wQU343DEoFas8JILK
hP5aI2bbHUIDYgfX8NIGUPYXWF1wF86Hvbj4GpGHGC4+pwrfl7jEa7iES7wCK6O4ULFHlyLj
3EmcHl6QC0TJXB9op8nRrNf27hqayy2uWDbQj7q7Uykhp10XegBWaS+VFugVjUQ2g8LSM5bv
ygGB13gF4a8cNVdSfeOW+RdM0DEZBrIDLkJp/1jLjUPaX84cqSSCKWXk+Z8mI7mFyUyKDmUO
O8ytZTwMdq5Ucr2ov2HkFB7ypmIaN28U5MnEio9TdPaAZLtvZDlj527jUDQRHNNlbGpo6fqj
ufyYx5vzmFwebCpHOhQbkM2tF6HJmnoGL+rUyoOkACVN6lr04Y7/6cGXBdeoxlzrnJo+G4DM
V00XTgQS9y3MjZ48t1Qcel1o/+J3kPna44alKFCU69IMtsIHanSs82blzbUpqz2orZsT7FU2
Lw8220utarVnk062dcqeR6KZXvyEqHqESgvG7+mhO8mhcLaQwVgaOSrhIwnui5zd9Bba0GCR
Zc9tbLS9G5r8/9u+jJLkbcggz2k/v/4kvTX2jXLDoh5SutQOFMYyQL9qMGSI2f7aV3PDQkgv
NxPQ+2Nf9ZLCa0PM9tjK/MCwoTFQH88V5q2Qnfuumy6oG2QxjBmGndHnrBo1TsifuWHdPToc
FUT1BUiHfJ2y1kaxU03wPUQSOIvXjq/Y7t1r910oPLmiBmy3TYvN7rVjNcH2qD2CwsIO2MsN
lzH/Ivl0pyiR/UMIaY2SJjZikiMcrb7EloYNuruwJtnPdBiort1eHVPZwGhvug7iIAYojGWA
pHZmyBAzDpLyZi5iCKmbTUDVk7P4R1sZQta1lfGBWX1/oDueKGxb8TrfXStdRDdIYdhSZp3R
46wSceu0pjl7fuXgQF0G0jl6x0Yus5NPcO499ImY/Xvj1VM+efwud569t7VNkJTFTVIyxupA
aTh9Kddr1FnqoxRCUlXHLZkcgpAm1QlQEyMgF3leG2IHNyG2B1YNhYH2cKoy3sXrTiIa6QK6
QQrDkmHVGS2OKlEXiWPBTwlDebIk54nBjI8yFg8aDqlHr+71QfUeKmXyZU7Gf4qh8YAlQpz9
Kan/ykQ8cBs3/P5qdfwvnA5FLOY6G6IQucM8gI6aLlEyP+L+zFw2brCbtOfnSgO8mb7Q3Dnl
Ou71GMlbN6YNVwNoLaFWjjWWLpY62KxSdovpO9FF+vwGe/wH07PWAvRBQh8MQUKkfGaTWEw4
QXnT9arpoAOFsQyw9cgmyBCzqSxEUzUQ6kllBKKeHKIUF1kbYjaVKfMDw4bGQH08V5i3Qnbu
u266oG6QxTBmGHZGn7NqNGDCNl+QD1WvOVWffLQ2zt7j5FZPwSk+U02IGQ/uI3KJm1C3edB3
YaJjD7nUs4caWc8p6pANucx2rBgu4pQy1gk8ITQx0UMZ4sAvKHG8a0d37YFJKNrlNZF5FNNH
F0VHmRgSnFoDTzdAX5w/VpPM6FIedrin89KHF2KByB+DJGxe7iRtXcTNDFAYywBVvYUhQ8y4
WUgb+IK4GULaM0yAOjgCcpngtSFmg0SZHxg2NAbq47nCvBWyc9910wV1gyyGMcOwM/qcVSNB
EtYyXVCokmTuAnEwI9M7/fXIXIP5YqxTgMP0ZyxiIY8FFwIny+Qv8gjkpQ9FQiGIXLD4lXIz
z+vMbxR7uPjdlr0whSMkj7GAfiIceafGKx4aNvDmeNG2go8eitULS8LRpLXJSxWU/ro3vT1u
SQx6/vW5IGgqMPLQ+HbBgNx7GNoRbXkQl0uR3+JwrX69dK9uGAboP3wxZAgZr/YlmmsaQhrZ
E6AdtC+S+dvKEDrEozB9YFXfHqgO5ynTVrgei10fXUA3yGCYUladanBWhwSGr3H+OeoQh6Yy
tQfHOf0YaL7UT1/5Ph53On7l2GvjYGlb2X85BvPDENRydMNemvz1OPDHQDE/l7Qi+8JMXNuE
c21Bx1Ei7RcTOf7a40DeY1JB/v6iDw/q4GBf03yyDncOkW/YhW4WzDJzHGKnDO35QxzpSg1m
Co+pJYuzPcL57nNKurSfwKIW+tbn0I9YZbng6LdZCqfqLVv527nI2F6GCJGqgG0qaF4US/JU
WriLvx3eONaQPp/+1v3q3t//9g+f3Q+/ufevH3xyt1/ct6c/ANjESWgKZW5kc3RyZWFtCmVu
ZG9iagoKMTMgMCBvYmoKMjI1OQplbmRvYmoKCjE0IDAgb2JqCjw8L1R5cGUvWE9iamVjdAov
U3VidHlwZS9Gb3JtCi9CQm94WyAtMTc3IDQyMCA3NzIgNDIwLjEgXQovR3JvdXA8PC9TL1Ry
YW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSyB0cnVlPj4KL0xlbmd0aCA4Ci9GaWx0ZXIvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnicAwAAAAABCmVuZHN0cmVhbQplbmRvYmoKCjE1IDAgb2Jq
Cjw8L0NBIDAuNQogICAvY2EgMC41Cj4+CmVuZG9iagoKMTcgMCBvYmoKPDwvTGVuZ3RoIDE4
IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJzlWUuP3DYMvs+v8DnAbkTqZQED
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
ZG9iagoKMTkgMCBvYmoKPDwvVHlwZS9YT2JqZWN0Ci9TdWJ0eXBlL0Zvcm0KL0JCb3hbIC0x
NzcgNDIwIDc3MiA0MjAuMSBdCi9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJH
Qi9LIHRydWU+PgovTGVuZ3RoIDgKL0ZpbHRlci9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJwD
AAAAAAEKZW5kc3RyZWFtCmVuZG9iagoKMjAgMCBvYmoKPDwvQ0EgMC41CiAgIC9jYSAwLjUK
Pj4KZW5kb2JqCgoyMiAwIG9iago8PC9MZW5ndGggMjMgMCBSL0ZpbHRlci9GbGF0ZURlY29k
ZT4+CnN0cmVhbQp4nL1ZS4/bNhC++1fwHGAdPkRSAgwBlu0t0FtQAz0EubVJUSQtkh769zuc
GZJDSrZ30aZYYFeUyHnxm48zXL036u/dV6WVhic/+b1V42D2o/r26+7nN+oP+gY/3z7tluvO
B/gU4wCTr7+ot89WGauuH98fzDRM7mQWM9nBLemvWawbJj3p02wPxsxP9gCDAQY26HF+CjB0
xg2zm9KHMJuD8cbrCB8NLyjLrHZ6go/WJAEmmGX+cP1xd7nu3m1aOIS97yx0F5S1WAviUQdI
dCD5oiewKOm3MRsGigNrh2/kg17Qem3np3horIEJDuxOwyefnYHptroL4wh6UDcKoKVJOwql
GfPTmJZHeLvAD2s9gzJ85PHFXIaRjKBYXfAPCS/y0I8u3mCmtTq90uiJ9hiTqud+VJ3dxy6q
7BF5jj6x8xCeqY0X7WWdEul5mk082GkeXDYkRZYsy/tvj7Be424ssz/YE72uWxBxtgBFMd67
cT+paAIg+4sYGfVZkVd1EHmeGDj1GRZN+VlJcZ/Vb7uPb1hmmJKwLzg5PccsZTUYs+Y0mIpM
HjXisoZq2pddb7SQ02nodBd3pKPCgxoj6a7wpjGsMVo1cd1tBClhaNoHBVkCLzvuSMkGqE7b
PpkLYBOziKBFdECIofSi1HXPFeYI8jQbX3I66CXhjqZJmNujYQ5w+pwBkyEeYuK+1jwNIDQM
3FOyQGRQYqZlnWZd4lNa11T5bolfw/PaxL+Txw13py2CaVaEOPPdBPTJkU2Pp+Id6ZKOrsLu
V0HfYNyXE4VPPJHY4hFRMIrhxPOFHdJoKLlVB5HniUFgduBnJcW17KBHyCdmB3guHLMauKIZ
BkOVSaNGnGSH4kJntJDTaeh1Z3eko9KDEiPprvCmMawxWjVx3W0EKbNDsHF1bjfsQGUC4QER
bgC8Y+WGfFL3h03GPs4xl5zM8OsMSYKSIqEZAXwbvgK4aLBxqyPx34jH7LhVS/VZ40cHwe6q
HIOVEtc1LJzLkRyikscxh84m+oiFyXLC6cs85tTKVMFfJL9NdsSswtwCA5gUYQxUMiKlkQou
BCYDFAw13BHpzWhYekaaIqKVldUwSqqDOfeLHPOY6phK+lCGaQW8x5T4XGlkUt7nBPfe5vN4
lIOIc+ojneBuSpU3jYqgknow1IHkpmnaC2HtIBSNOmTJ+bkIkpTBBndGivWN3F5fNri6VS3O
kaiOqc7+Yo4wUonY9YHI+ZZe36MHbh5GGGSS6DLWW3+/APlPKIaw1zCA8Vz29waZRIv3KiIj
GIKpA7CZoM/p1ygrhgNM2eLN0rvLgGHsWzrI5C0ncwG0qjHweF7mMLAtMRNLwMSlNXwih1y2
wHLOTJYiJsBL/HMu/RObY6tuUReKOJgxUyxRKoUDmSVQ9we6DPPgUnjylFnjZSUolz1oe6ZR
zwZG88xsN2oyBXSf84ZZkpfDQoYjcv02Pw0hrlBbXEwqTGBi5mhuN8tFnEvI6yquY45f2uFk
oXkWVJ4IXnI5fCK6Tq25cD2IiE36KOtEWe/68bBhFuTmjeq77kBk3LC/6aSL/wP4blhs+l25
F8bV7QcEphywhKx1sTLm007A9ZbTBezouKk4foHjYe13+nTDcTcOK9Z6LWFggUD766AWsC5V
BaUVyUiLxORdopRayXN62VhYgn3jTLI+NQ3Od02Db3sGBDiJp43AlGU3co+Zb40e3kQ8Yqq2
YuE1JRCZmC6S+VeU4KJe53AuUJh72gADEJFjHJ6PlEx4TSNISzAIG4mi2NBbbVSxadioR+9j
onc+o2BzY5tbNj5XNffTqdGHbh8+yZ4/bTT8ghQxBGw2BuRwcubbgHorVyJCtYQsgJuyMwfq
pX1pgzFbIJbTvhH+mia2RN/4dU4OKbAib0QMsh8cYFfj3DQBr6+uq/96yfPofrcpVhYIfldI
863j3mszBXn3aMe4OhpaAKBqBoHtMEC/XwIC2g+6R0K5I4kz/RlGIKaPR7dAWHCbvIbOLVDU
EaxHnOJNuacpWz24+ckd7IWTbzNe3uKI7OUFEmn2aAdzXN3absQv6FUBwQc35k7x5ZlKlRv2
GIrCwxhWQcTTTSLTyhJXUVOhMto6Jj+Of8sS1jkohFOL7DR2kgu2zNAmO4zuiQBRooKltoJq
u82OBOfv9DNff+fMBMvWmnNeNiWGZHjIMWjt1xY7XSVbGzbn5H+XiJmD3ZxpBzln3Jrz/lGQ
juk20Dgma+52kJ/hgDo6mJISIvX8RJTQ6sd8oDDDOMdEykxXbyVdHIw4PQvB8ApT71ngk6v/
vVBf1dvLDz9Zrz79pd5ev9lBnf9U73b/APKDtDoKZW5kc3RyZWFtCmVuZG9iagoKMjMgMCBv
YmoKMTc0NgplbmRvYmoKCjI0IDAgb2JqCjw8L1R5cGUvWE9iamVjdAovU3VidHlwZS9Gb3Jt
Ci9CQm94WyAtMTc3IDQyMCA3NzIgNDIwLjEgXQovR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9D
Uy9EZXZpY2VSR0IvSyB0cnVlPj4KL0xlbmd0aCA4Ci9GaWx0ZXIvRmxhdGVEZWNvZGUKPj4K
c3RyZWFtCnicAwAAAAABCmVuZHN0cmVhbQplbmRvYmoKCjI1IDAgb2JqCjw8L0NBIDAuNQog
ICAvY2EgMC41Cj4+CmVuZG9iagoKMjcgMCBvYmoKPDwvTGVuZ3RoIDI4IDAgUi9GaWx0ZXIv
RmxhdGVEZWNvZGU+PgpzdHJlYW0KeJzNWEuL3EYQvs+v6LNh1t3VbxCC0YzWkJvjgRxMTkns
EHYTvDn476e6qtRqqWfWuTiEYRdVP+r51UPSD0Z9PXxRWml88tk/gErOPCT18tvhpzfqT97D
38vnw3Q9+IBbMQIeu/6q3j4aZZy6fvo4gBvBDAbGoxm0NVnPxoz4eBqPdtDOevwLtOlx2Vjt
ypkxDoBXYLBxPAY8Z1K5VNa1tansMEuj9aO+6Kyn0S1SZo1cbC4C5BALgPHn6w+H+Xp4j8ob
Uh5NWxX/5fmgkfgqhv347qDV0eDGswKfHhwTT+oDMeitR/dkth6UAbLePY4ZVQbUKRv0xEDm
o/aaiKwDmgUan2UZcO1ctqZ67uiH9Rj+K3QewQ+QR4vPctzjXU+O4YvZTihTj3huKgtw5uVy
kFQxkRfQW8QibjQzCWOR8Shocv0kcsjZgYKSIeoJw2T4kfbpLKnBjxFPE0MMRBwW48R4i9tF
F7KIbET+QLsQ5P54TMXcJnK94yEhRreOZ7XEUHQ/SXdjq1bEoEyNXaygIVLWZjObaZVdJXub
HqJChz0E9dxQHtHBKq3Ecq4honqiS2mhVMvwSf1++PRGuIZckPksxwtlFk4dAYv0QliRERdK
tQwXGaE1Y6d4Wm/uJOxkV5PCbRtaP21NbizaKLdRfO/f3lUFCBnJkCP+3wIBQR1K1nlKrami
jKNtHyskCHVQgE2LZhbc8xGGNMPCTgiKYxSMWUSOIETUjgnVfm6oNTArsZxrCFdhIZRqGW5c
CilUGYmoyrYj7CK9EK76UyjVMmxhUc3YKZ7WmzsJO9nVpHDbhtZPW5MbizbKbRTf+7d3VYVF
cLi4g0XC7D9zQcVgeykLzpau4QIVzACR6geSEuDK0WvE4o5jrS78BFhQLaMMuXoqyCa7bM8d
N1s8tOUmSF2YUrkVNqzdDpFjuqUmQNeRIBJsS02k1GCLzam7q3NXVPESpU8xUu7l/b0yKuyd
ze1LxBaN715OpvMr+4HvEY+7l0Ps3Qh6clBz2Xgkmi6H3Y2cyi7lHew8M+2uHRV5dL713t7w
LcfDUqzKfJPdeQkYh7J6QqwIJmgqNxkcPYCVcBPhsInXEoUmFzjR8YBQSghiloiqXpqoLHrE
csAEAUx2l84Ip7sgO1fNkGxgE/zwb8Wl2myNlfFB3HHmxCADZRxCKyQUntcpIeU8W12c9KoV
EDrIOYf8znWuMo9r+tSIbIo/ziAUl23xL5b0DQBOhscGVv3ikswpgaef4AaXIKAGZaHs4uKC
MpSeNhog4KDJcxa3jioAhnizQghf1wwol28pKFMl6bDXjnGYpPhhFJeQUfya+FLmehnWYHgl
Egb6uvj94lAa8f86DquC/20cXE5dKVzZ10rKvElMm4TyquEAYtWgvh1ICk9NiSu1wZ2a1jez
q2r0wLAf2XTjiev6IlBZhjX/u3rrkuvqLdYbkPeFtoyLQ3sW0fQtrfRAvLEWHdPf87GrL/XV
5143cs52qVAvSSOVnKAJlV/dfB1A/C0DIHdhrTzJhBZsK3Qn4Trz/GGm0m0KNrG2TmBddnMn
yvje3Stf9FjEHhCaRtZx0HDL282b4bk2xNX7EkKQHOh9YFPq5wtXreaYwBbOG9Yy6llOw1le
qG/PeTa6W0Hkbre0wnN9Q18c3aPBBt3PJjMObQKBdPeiC10cNhdrWtekalK7sVvX8cMkhgqP
GXcMt7YLHsbbmtnBCt7QQgLLJ75R30ODNbmfwYFVXSfCZlrCAWeZdAICVdq/lGzf7efNPjNY
Jit00k0Gdf/U7W8ZsL2v8/Dr/q2KbLXvkURhECdIHixYXNpaoV8btyGbvtK3fi3hgs0XmSU7
LsLe3RvIcZbHF62Wd/lM851+4/UPEYyx7CV/HKyjj3iUZzx96lZdAI0A6zUGt3IGGhRvWgVl
aG9OOvg2N5dunfn4LSedymuHsUsBvGDiyCcwG/XJ4hEs0aHAEjUy2JovY1y68PLZwvLYkeWj
3vppDiuW4WSUDx2XzY3t0GLX72rqi3o7v/tgtfr8t3p7fYGsLn+p94d/ABF3sXMKZW5kc3Ry
ZWFtCmVuZG9iagoKMjggMCBvYmoKMTUzOAplbmRvYmoKCjI5IDAgb2JqCjw8L1R5cGUvWE9i
amVjdAovU3VidHlwZS9Gb3JtCi9CQm94WyAtMTc3IDQyMCA3NzIgNDIwLjEgXQovR3JvdXA8
PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSyB0cnVlPj4KL0xlbmd0aCA4Ci9GaWx0
ZXIvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnicAwAAAAABCmVuZHN0cmVhbQplbmRvYmoKCjMw
IDAgb2JqCjw8L0NBIDAuNQogICAvY2EgMC41Cj4+CmVuZG9iagoKNDAgMCBvYmoKPDwvTGVu
Z3RoIDQxIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAyNDM4MD4+CnN0cmVhbQp4
nN28CXgUx7UwWqe6e/alZ+tZpNk0am0jaSSNVgZQI7QMCIQQAiSBkASSkNgkJCHAOEZOMKtt
iEO4doht4hBvYDNgYuM4McQh/uNrO+Ym2ImNHRPH8b3+bQWSOLlxsEZ/Vc+Ixcm9/3vvf9/3
vu/NaLprOXWq+tSps1Sd1sjQph6kQ2OIQdKq9V2D/+PR+3cjhF5DCMyrRkd8R6S1AZK+jBBW
9A6uXp8VvvQHhJj/QEjJrV63tTf+29LTCGmuIlR3oK+nq/uVsn1hhJrGCI7SPlIwFt+qJPkz
JJ/et35kS631k9+T/Lsk/x/rBlZ1/cDwQydCi86T/Oj6ri2DX+eeZBBqnk7yvg1d63t+nzGe
RvLLEVINDg4Mj/wEpU8itPw1Wj841DO47uQ93ST/KRnffFIG5Es/OpJU0DxmWE6hVKk1Wp3e
YORNZovVJtgdTldKqtvj9fnTAuliRmZWdk4wNy8/VFBYFC4uKS0rr0D/P/lw9yAbGuBmIGPy
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
iTGS4N0nBVTVOjw8kojih+FgcCSIyC+4YljOD49sIrmR4REUDA4PyzDkRzIjQPKkdDg4TFJk
ZVEkwzA8QhPDaJjUo2H6GyFlm2hr2tSxgvDT/wI0xPAzCmVuZHN0cmVhbQplbmRvYmoKCjQx
IDAgb2JqCjE2OTkwCmVuZG9iagoKNDIgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9G
b250TmFtZS9CQUFBQUErTGliZXJhdGlvblNlcmlmLUJvbGQKL0ZsYWdzIDQKL0ZvbnRCQm94
Wy0xODIgLTMwMyAxMDgzIDEwMDddL0l0YWxpY0FuZ2xlIDAKL0FzY2VudCA4OTEKL0Rlc2Nl
bnQgLTIxNgovQ2FwSGVpZ2h0IDEwMDcKL1N0ZW1WIDgwCi9Gb250RmlsZTIgNDAgMCBSCj4+
CmVuZG9iagoKNDMgMCBvYmoKPDwvTGVuZ3RoIDQ3My9GaWx0ZXIvRmxhdGVEZWNvZGU+Pgpz
dHJlYW0KeJxdk02P2jAQhu/5FT5uD6vE43zsSgiJhUXi0A+V9geExNBISxKZcODf1++8biv1
QPTYnhk/Np58e9gdxmHJv4WpO/rFnIexD/423UPnzclfhjGzYvqhW9JIv921nbM85h4ft8Vf
D+N5Wq2y/Htcuy3hYZ42/XTyn7L8a+h9GMaLefq5Pcbx8T7PH/7qx8UU2Xpten+OdT6385f2
6nPNej70cXlYHs8x5V/Aj8fsjejYUqWben+b286Hdrz4bFUUa7Pa79eZH/v/1qqGKadz96sN
MdTG0KKoXtaRRbmuwI78Di6VpQBXjK/BtXLZgBuyBb8wRuNfWUfnN8qNA7+RS/CWMeqw47yA
3zm/B+85DzdbcB77Wvo3ysn/FUz/cgemf4m9LP0buFn611sw/RvNpX8JT5v8NZf+Dmex9Bfc
j6W/0xj6uw2Y/pXO07+Ev9BfcF5J9494Sf5wFvoLfIT+Fc4o9K9xP0J/gafQX3BXQn/ROslf
Y5K/5qb7133pX+JOJPlrPP1jaGT6O/zvjv4OZ3H0d/B09HfwdPR3qOmSP2o6+juc3aX3o0z/
SmvSv9a96F/W+pjTq8WzRt/9aRfT3UOIraLNqT2C7hhG/7d/52lGlv5+A9Z28FoKZW5kc3Ry
ZWFtCmVuZG9iagoKNDQgMCBvYmoKPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvQmFz
ZUZvbnQvQkFBQUFBK0xpYmVyYXRpb25TZXJpZi1Cb2xkCi9GaXJzdENoYXIgMAovTGFzdENo
YXIgNTcKL1dpZHRoc1szNjUgNzIyIDQ0MyA1NTYgMjUwIDcyMiA3NzcgNzIyIDYxMCA1MDAg
Mzg5IDMzMyA1NTYgNDQzIDUwMCA1NTYKNTAwIDcyMiAyNzcgOTQzIDcyMiA1NTYgMjc3IDUw
MCA3MjIgNTU2IDUwMCAyNTAgNTAwIDMzMyA2NjYgNjY2CjMzMyA2NjYgODMzIDMzMyAxMDAw
IDU1NiA1MDAgMjc3IDMzMyA0NDMgNTAwIDQ0MyA5MzAgNTAwIDU2OSA1MDAKNTAwIDUwMCA1
MDAgNTAwIDU1NiA1MDAgNzc3IDcyMiAzMzMgNjEwIF0KL0ZvbnREZXNjcmlwdG9yIDQyIDAg
UgovVG9Vbmljb2RlIDQzIDAgUgo+PgplbmRvYmoKCjQ1IDAgb2JqCjw8L0xlbmd0aCA0NiAw
IFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aDEgMzM0MDQ+PgpzdHJlYW0KeJzUvXt8VNW9
KL6+a+0978ee157MTCaZYc/kMZMwyUxCEkImG8hjQxAGCBgSkwwQEEQlPBWtEJWHPLxgRRS1
Qj0caxGPw6MWalvTc9RTr1XpKdp6bGvqxT6upeVY6vUImdy19kx42PZz//n98xsys9f78V1r
fd9rs37thmXIhIYQQfLSOxYPrptVvxYh9BOEwL504/rA2DQ5QMMjCGFx+eCtd5QlPvwTQuQL
hLT8rbdvWr7D/q0vETLSKrdVrFi2eOBndaYEQhsqaMKkFTThYHaTlsYHaDy04o71d//Jn6qj
8Ydom7NuX710sWFezUSENp6j+c/fsfjuwT9ofsohdNfXaDxw5+I7lt207Jv7afxphHSzBlev
Wz+AQmMIbfk9yx9cu2zwr92P6xAaol+8nqYB/cc+JhrUsDgmHK/R6vQGo8lssQo2u8PpEt0F
Hq+v0F9UHAhOkELhktKy8ki0onJirKo6nqipnVRX3zC5cUpTslmeOm16S2tbuzJjZsesm2bP
Sc2dh/7/9eEfRi6k8E3IigbV3xs+5BjysOfYH2/8zc4a+/L/y1Hoco8n0HPoFHoYfYB68xlt
KIVWog005frPj9BPaSr7pFA3Oop2/YNmj6HTND9XLo32ooP/oFwKPY5Oon+/oZcUugPdS8fy
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
PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0NBQUFBQStMaWJlcmF0aW9uU2VyaWYK
L0ZsYWdzIDQKL0ZvbnRCQm94Wy0xNzYgLTMwMyAxMDA1IDk4MV0vSXRhbGljQW5nbGUgMAov
QXNjZW50IDg5MQovRGVzY2VudCAtMjE2Ci9DYXBIZWlnaHQgOTgxCi9TdGVtViA4MAovRm9u
dEZpbGUyIDQ1IDAgUgo+PgplbmRvYmoKCjQ4IDAgb2JqCjw8L0xlbmd0aCA1NzkvRmlsdGVy
L0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicXZRPj5swEMXvfAqO28MKPLZhV4oiZZONlEP/qNl+
AAJOitQAIuSQb1+/eW4r9ZDoYcbj3zwPU2wPu8PQL8W3eWyPYcnP/dDN4Tbe5zbkp3Dph8xI
3vXtkp70v702U1bEvcfHbQnXw3AeV6us+B7f3Zb5kT9tuvEUPmXF17kLcz9c8qcf22N8Pt6n
6Ve4hmHJy2y9zrtwjnk+N9OX5hoK3fV86OLrfnk8xy3/Aj4eU8hFnw1R2rELt6lpw9wMl5Ct
ynKdr/b7dRaG7r93L8Itp3P7s5ljqImhZentOmpRXe2hLXUF7VTXDtpT19AVYwx0zXWBfuG6
h35VLSX0RrXTs94Y8w69pX6F3lFr/nfm1Dx71XYTtSmZ5wWa/DVyGvLXOMuQv0ZOQ/5qB03+
CrUY8luNJ7/HWSbxoxZDfosaDfmt7iW/gN+Q322hye81JvErJ/mrt6iF/BXihfwCNkn+oxYh
v1VNfou7EPJ75JTkv+rkv8aQ38FDIb9XnfhVk99rfOJXBvI71Cvkd6hFyO/hiSW/hVeW/A4+
W/I7eGLJ7zSG/B4+W/I71eSvcaeW/IJaLPk9GGzqH82f+kcZyG81nvxW1xM/6rKJH/1syS/Q
LvmPc13qf9Xk9xqT/IcnjvyCu3Cp/3F3jvwCP13yH/fryC8ak/oH/I78Nepy5K81P/m97k39
o+vkF9Tlkv/I48kv8NaT34LZkz+2BT789IVjBGBG/RkteXuf5zhWdJDpPMEk6Yfwd9ZN44Rd
+vsNAuUroQplbmRzdHJlYW0KZW5kb2JqCgo0OSAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlw
ZS9UcnVlVHlwZS9CYXNlRm9udC9DQUFBQUErTGliZXJhdGlvblNlcmlmCi9GaXJzdENoYXIg
MAovTGFzdENoYXIgODIKL1dpZHRoc1szNjUgNTU2IDUwMCAzMzMgMjc3IDcyMiA0NDMgMzMz
IDQ0MyAyNTAgNjY2IDUwMCAyNzcgNTAwIDUwMCAyNzcKNzIyIDM4OSA1MDAgNTAwIDc3NyA1
MDAgNTAwIDcyMiA1MDAgNTAwIDUwMCAyNTAgNjEwIDYxMCA1MDAgNTAwCjI3NyAzMzMgNDQz
IDUwMCA1MDAgNzIyIDUwMCA1MDAgNzIyIDk0MyA1MDAgNzIyIDg4OSA3MjIgNzIyIDY2Ngo1
MDAgMzMzIDcyMiA2MTAgNTU2IDkyMCA0NDMgMzMzIDcyMiAzMzMgNjY2IDUwMCA1MDAgNTU2
IDcyMiAyNzcKMjc3IDYxMCA1MDAgNTYzIDUwMCAyMDAgMTgwIDQ3OSAyNTAgNTAwIDUwMCA0
NzkgMzMzIDMzMyA0MDggNzIyCjgzMyA0NDMgNzc3IF0KL0ZvbnREZXNjcmlwdG9yIDQ3IDAg
UgovVG9Vbmljb2RlIDQ4IDAgUgo+PgplbmRvYmoKCjUwIDAgb2JqCjw8L0YxIDQ0IDAgUi9G
MiA0OSAwIFIKPj4KZW5kb2JqCgo1MSAwIG9iago8PC9Gb250IDUwIDAgUgovWE9iamVjdDw8
L1RyMTQgMTQgMCBSL1RyMTkgMTkgMCBSL1RyMjQgMjQgMCBSL1RyMjkgMjkgMCBSL1RyNCA0
IDAgUi9UcjkgOSAwIFI+PgovRXh0R1N0YXRlPDwvRUdTMTAgMTAgMCBSL0VHUzE1IDE1IDAg
Ui9FR1MyMCAyMCAwIFIvRUdTMjUgMjUgMCBSL0VHUzMwIDMwIDAgUi9FR1M1IDUgMCBSPj4K
L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQy9JbWFnZUkvSW1hZ2VCXQo+PgplbmRvYmoKCjEg
MCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCAzOSAwIFIvUmVzb3VyY2VzIDUxIDAgUi9NZWRp
YUJveFswIDAgNTk1IDg0Ml0vQW5ub3RzWwozMyAwIFIgMzQgMCBSIDM1IDAgUiAzNiAwIFIg
MzcgMCBSIDM4IDAgUiBdCi9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9J
IHRydWU+Pi9Db250ZW50cyAyIDAgUj4+CmVuZG9iagoKNiAwIG9iago8PC9UeXBlL1BhZ2Uv
UGFyZW50IDM5IDAgUi9SZXNvdXJjZXMgNTEgMCBSL01lZGlhQm94WzAgMCA1OTUgODQyXS9H
cm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyA3
IDAgUj4+CmVuZG9iagoKMTEgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCAzOSAwIFIvUmVz
b3VyY2VzIDUxIDAgUi9NZWRpYUJveFswIDAgNTk1IDg0Ml0vR3JvdXA8PC9TL1RyYW5zcGFy
ZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4vQ29udGVudHMgMTIgMCBSPj4KZW5kb2JqCgox
NiAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDM5IDAgUi9SZXNvdXJjZXMgNTEgMCBSL01l
ZGlhQm94WzAgMCA1OTUgODQyXS9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJH
Qi9JIHRydWU+Pi9Db250ZW50cyAxNyAwIFI+PgplbmRvYmoKCjIxIDAgb2JqCjw8L1R5cGUv
UGFnZS9QYXJlbnQgMzkgMCBSL1Jlc291cmNlcyA1MSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4
NDJdL0Fubm90c1sKMzEgMCBSIDMyIDAgUiBdCi9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NT
L0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAyMiAwIFI+PgplbmRvYmoKCjI2IDAgb2Jq
Cjw8L1R5cGUvUGFnZS9QYXJlbnQgMzkgMCBSL1Jlc291cmNlcyA1MSAwIFIvTWVkaWFCb3hb
MCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1
ZT4+L0NvbnRlbnRzIDI3IDAgUj4+CmVuZG9iagoKMzkgMCBvYmoKPDwvVHlwZS9QYWdlcwov
UmVzb3VyY2VzIDUxIDAgUgovTWVkaWFCb3hbIDAgMCA1OTUgODQyIF0KL0tpZHNbIDEgMCBS
IDYgMCBSIDExIDAgUiAxNiAwIFIgMjEgMCBSIDI2IDAgUiBdCi9Db3VudCA2Pj4KZW5kb2Jq
CgozMSAwIG9iago8PC9UeXBlL0Fubm90L1N1YnR5cGUvTGluay9Cb3JkZXJbMCAwIDBdL1Jl
Y3RbNTYgMjU3LjYgMzcxLjQgMjcxLjRdL0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkoZnRw
Oi8vZG93bmxvYWQuYXNyb2NrLmNvbS9kcml2ZXJzL0ludGVsL3VzYi9VU0IzXCh2Mi41LjAu
MTlcKS56aXApPj4KPj4KZW5kb2JqCgozMiAwIG9iago8PC9UeXBlL0Fubm90L1N1YnR5cGUv
TGluay9Cb3JkZXJbMCAwIDBdL1JlY3RbNTYgMjg1LjIgNDM2LjMgMjk5XS9BPDwvVHlwZS9B
Y3Rpb24vUy9VUkkvVVJJKGh0dHA6Ly93d3cuYXNyb2NrLmNvbS9tYi9JbnRlbC9CODVNJTIw
UHJvNC8/Y2F0PURvd25sb2FkJm9zPVdpbjc2NCk+Pgo+PgplbmRvYmoKCjMzIDAgb2JqCjw8
L1R5cGUvQW5ub3QvU3VidHlwZS9MaW5rL0JvcmRlclswIDAgMF0vUmVjdFs1NiAyOTUuMiA0
MzkuNCAzMDldL0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkoaHR0cDovL3d3dy54ZW5wcm9q
ZWN0Lm9yZy9kb3dubG9hZHMveGVuLWFyY2hpdmVzL3hlbi00NC1zZXJpZXMveGVuLTQ0MS5o
dG1sKT4+Cj4+CmVuZG9iagoKMzQgMCBvYmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsv
Qm9yZGVyWzAgMCAwXS9SZWN0WzEwOC43IDYyNi40IDI3OS43IDY0MC4yXS9BPDwvVHlwZS9B
Y3Rpb24vUy9VUkkvVVJJKG1haWx0bzp0ZW8tZW4tbWluZ0B6aGFuZy1lbm1pbmcuY29tKT4+
Cj4+CmVuZG9iagoKMzUgMCBvYmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVy
WzAgMCAwXS9SZWN0WzEwOC43IDY0MC4yIDI2OC4zIDY1NF0vQTw8L1R5cGUvQWN0aW9uL1Mv
VVJJL1VSSShtYWlsdG86dGVvLWVuLW1pbmdAdGVvLWVuLW1pbmcuY29tKT4+Cj4+CmVuZG9i
agoKMzYgMCBvYmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVyWzAgMCAwXS9S
ZWN0WzEwOC43IDY1NCAyMzMuNyA2NjcuOF0vQTw8L1R5cGUvQWN0aW9uL1MvVVJJL1VSSSht
YWlsdG86dGVvLmVuLm1pbmdAZ21haWwuY29tKT4+Cj4+CmVuZG9iagoKMzcgMCBvYmoKPDwv
VHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVyWzAgMCAwXS9SZWN0WzExOC43IDY2Ny44
IDI3Ny41IDY4MS42XS9BPDwvVHlwZS9BY3Rpb24vUy9VUkkvVVJJKGh0dHA6Ly93d3cuemhh
bmctZW5taW5nLmNvbS8pPj4KPj4KZW5kb2JqCgozOCAwIG9iago8PC9UeXBlL0Fubm90L1N1
YnR5cGUvTGluay9Cb3JkZXJbMCAwIDBdL1JlY3RbMTE4LjcgNjgxLjYgMjY2LjIgNjk1LjRd
L0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkoaHR0cDovL3d3dy50ZW8tZW4tbWluZy5jb20v
KT4+Cj4+CmVuZG9iagoKNTIgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDM5IDAgUgov
T3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQovTGFuZyhlbi1TRykKPj4KZW5k
b2JqCgo1MyAwIG9iago8PC9DcmVhdG9yPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+
Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2NjAwNjYwMDY5MDA2
MzAwNjUwMDIwMDAzNDAwMkUwMDMyPgovQ3JlYXRpb25EYXRlKEQ6MjAxNDA5MDYwMTM0Mjkr
MDgnMDAnKT4+CmVuZG9iagoKeHJlZgowIDU0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDA1
NjY5OCAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDIyOTkgMDAwMDAgbiAK
MDAwMDAwMjMyMCAwMDAwMCBuIAowMDAwMDAyNDk5IDAwMDAwIG4gCjAwMDAwNTY4OTUgMDAw
MDAgbiAKMDAwMDAwMjUzOSAwMDAwMCBuIAowMDAwMDA0NDUzIDAwMDAwIG4gCjAwMDAwMDQ0
NzQgMDAwMDAgbiAKMDAwMDAwNDY1MyAwMDAwMCBuIAowMDAwMDU3MDM5IDAwMDAwIG4gCjAw
MDAwMDQ2OTQgMDAwMDAgbiAKMDAwMDAwNzAyNiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAw
IG4gCjAwMDAwMDcyMjggMDAwMDAgbiAKMDAwMDA1NzE4NSAwMDAwMCBuIAowMDAwMDA3MjY5
IDAwMDAwIG4gCjAwMDAwMDkxNjQgMDAwMDAgbiAKMDAwMDAwOTE4NiAwMDAwMCBuIAowMDAw
MDA5MzY2IDAwMDAwIG4gCjAwMDAwNTczMzEgMDAwMDAgbiAKMDAwMDAwOTQwNyAwMDAwMCBu
IAowMDAwMDExMjI2IDAwMDAwIG4gCjAwMDAwMTEyNDggMDAwMDAgbiAKMDAwMDAxMTQyOCAw
MDAwMCBuIAowMDAwMDU3NTAyIDAwMDAwIG4gCjAwMDAwMTE0NjkgMDAwMDAgbiAKMDAwMDAx
MzA4MCAwMDAwMCBuIAowMDAwMDEzMTAyIDAwMDAwIG4gCjAwMDAwMTMyODIgMDAwMDAgbiAK
MDAwMDA1Nzc4MiAwMDAwMCBuIAowMDAwMDU3OTY1IDAwMDAwIG4gCjAwMDAwNTgxNDcgMDAw
MDAgbiAKMDAwMDA1ODMzOCAwMDAwMCBuIAowMDAwMDU4NDk0IDAwMDAwIG4gCjAwMDAwNTg2
NDcgMDAwMDAgbiAKMDAwMDA1ODc5NCAwMDAwMCBuIAowMDAwMDU4OTQzIDAwMDAwIG4gCjAw
MDAwNTc2NDggMDAwMDAgbiAKMDAwMDAxMzMyMyAwMDAwMCBuIAowMDAwMDMwNDAwIDAwMDAw
IG4gCjAwMDAwMzA0MjMgMDAwMDAgbiAKMDAwMDAzMDYyNyAwMDAwMCBuIAowMDAwMDMxMTcw
IDAwMDAwIG4gCjAwMDAwMzE1NjcgMDAwMDAgbiAKMDAwMDA1NTA0NyAwMDAwMCBuIAowMDAw
MDU1MDcwIDAwMDAwIG4gCjAwMDAwNTUyNjcgMDAwMDAgbiAKMDAwMDA1NTkxNiAwMDAwMCBu
IAowMDAwMDU2NDA3IDAwMDAwIG4gCjAwMDAwNTY0NTAgMDAwMDAgbiAKMDAwMDA1OTA5MSAw
MDAwMCBuIAowMDAwMDU5MTg5IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1NC9Sb290IDUy
IDAgUgovSW5mbyA1MyAwIFIKL0lEIFsgPDRFQTMyOTgwRDA1OUM0REE3NEIyNEZFRjYwNzg1
RjM5Pgo8NEVBMzI5ODBEMDU5QzREQTc0QjI0RkVGNjA3ODVGMzk+IF0KL0RvY0NoZWNrc3Vt
IC8yNkE0NDg2QzkwMjZBQzE5RUQ3Nzc4NzhBODM2MkIzMwo+PgpzdGFydHhyZWYKNTkzNjQK
JSVFT0YK
--------------060305020809030008090208
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xen.org
http://lists.xen.org/xen-users
--------------060305020809030008090208--


From advisory-board-bounces@lists.xenproject.org Fri Sep 05 19:38:35 2014
Return-path: <advisory-board-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 05 Sep 2014 19:38:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <advisory-board-bounces@lists.xenproject.org>)
	id 1XPzL9-0007qw-DZ; Fri, 05 Sep 2014 19:38:35 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <russell.pavlicek.xen@gmail.com>) id 1XPzHO-0007p9-AA
	for advisory-board@lists.xenproject.org; Fri, 05 Sep 2014 19:34:43 +0000
Received: from [193.109.254.147:10801] by server-16.bemta-14.messagelabs.com
	id 85/CA-16990-1501A045; Fri, 05 Sep 2014 19:34:41 +0000
X-Env-Sender: russell.pavlicek.xen@gmail.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1409945679!13778295!1
X-Originating-IP: [209.85.217.175]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 902 invoked from network); 5 Sep 2014 19:34:40 -0000
Received: from mail-lb0-f175.google.com (HELO mail-lb0-f175.google.com)
	(209.85.217.175)
	by server-8.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Sep 2014 19:34:40 -0000
Received: by mail-lb0-f175.google.com with SMTP id u10so14311928lbd.34
	for <advisory-board@lists.xenproject.org>;
	Fri, 05 Sep 2014 12:34:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:sender:date:message-id:subject:from:to:content-type;
	bh=ulc6eGWIwICyD0fX+HrQcACYzlsHXAIXKDTYEgrJu54=;
	b=1ALHeQTs4PeTKEdBBi7GtbEcnOT2sJZaxi2aM9zqrq487rsSTd629DxjrHedLMI/W4
	fYesXi7f0hgEoEGyyS9q1os1UVaIm4w2vVNopkRN7EfsJHGKnEibp4GrF51L10WyDh0m
	ZiQmIjRihzla5j3+GcXmhq8v3WNqMn16QYBsw6CiGotslvFJ5G2hEV7C7Lr9EYmeG7O2
	1QQsnMx20qfXWW7OCiizSDY55V7F34ktKKyWEY7yXKQj0RkPt2pnGfkDZImhgkfYrOYP
	CMuPMfzsbCYuZCERb/eAWmkRDNcF27E95dVnnX/JAPa8Kdq4NgKxTV+n21QacQt+X0SC
	yAug==
MIME-Version: 1.0
X-Received: by 10.113.3.139 with SMTP id bw11mr455094lbd.98.1409945679044;
	Fri, 05 Sep 2014 12:34:39 -0700 (PDT)
Received: by 10.112.85.7 with HTTP; Fri, 5 Sep 2014 12:34:38 -0700 (PDT)
Date: Fri, 5 Sep 2014 15:34:38 -0400
X-Google-Sender-Auth: eLokyRtfJc8Ctr-ch8l1w3aodcc
Message-ID: <CAHehzX306Q0ga=kPLZziLrfCUMqbw9Xpj4wCv0vOX6eAQZT5JA@mail.gmail.com>
From: Russ Pavlicek <russell.pavlicek@xenproject.org>
To: advisory-board@lists.xenproject.org
Content-Type: multipart/mixed; boundary=001a113494545a58ab0502568f26
X-Mailman-Approved-At: Fri, 05 Sep 2014 19:38:34 +0000
Subject: [Advisory-board] Discount & Promo Sheet for Xen Project User Summit
X-BeenThere: advisory-board@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: Advisory-board discussions <advisory-board@lists.xenproject.org>
List-Id: Advisory-board discussions <advisory-board.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:advisory-board@lists.xenproject.org>
List-Help: <mailto:advisory-board-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=subscribe>
Sender: advisory-board-bounces@lists.xenproject.org
Errors-To: advisory-board-bounces@lists.xenproject.org

--001a113494545a58ab0502568f26
Content-Type: text/plain; charset=UTF-8

Dear Advisory Board Member,

As you are likely well aware, we are having our Xen Project User
Summit on September 15 in New York City.

We still have seats available and we'd like to fill them with people
who have an interest in our Xen Project technology.  To that end, we
have issued a discount code ("XenUser50off") which will reduce the
usual $79 registration fee to just $39.

If you have people in your organization who would benefit from some
high-quality, low-cost Xen Project information, please pass the
attached information sheet to them.

Likewise, if you customers or partners who would benefit from a day of
excellent sessions about Xen Project, please consider inviting them
using the attached as well.

Thank you for your assistance!  And I hope to see your organization
represented at the User Summit!

Russell Pavlicek
Xen Project User Summit Program Coordinator

--001a113494545a58ab0502568f26
Content-Type: application/vnd.oasis.opendocument.text; 
	name="XPUS14-invite.odt"
Content-Disposition: attachment; filename="XPUS14-invite.odt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hzpx8g4d0

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
v0reyfUHAqOyM9MKUpJ8uempSd0SVLW7ac2IamxsRMWJuqoTTfqrYV/S/Wufe675XK9dIBB8fYSY
nmWK/vY3z2dbtiR8un07GgDkBAK46667Ws7Hbk4CwbcJIaYCgUAQB0Q0XyAQCOKAEFOBQCCIA0JM
BQKBIA4IMRUIBII4IMRUIBAI4oAQU4FAIIgDQkwFAoEgDggxFQgEgjggxFQgEAjigBBTgUAgiANC
TAUCgSAOCDEVCASCOCDEVCAQCOKAEFOBQCCIA0JMBQKBIA4IMRUIBII4IMRUIBAI4oAQU4FAIIgD
QkwFAoEgDggxFQgEgjggxFQgEAjigBBTgUAgiANCTAUCgSAOCDEVCASCOCDEVCAQCOKAEFOBQCCI
A0JMBQKBIA4IMRUIBII4IMRUIBAI4oAQU4FAIIgDQkwFAoEgDvx/a9Qh46WQ1H0AAAAASUVORK5C
YIJQSwMEFAAACAAAB5wlRVnywPqHHwQAhx8EAC0AAABQaWN0dXJlcy8xMDAwMDIwMTAwMDAwMkJD
MDAwMDAwREM5RUMzQUM5QS5wbmeJUE5HDQoaCgAAAA1JSERSAAACvAAAANwIBgAAAJLRcjAAAAAZ
dEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADIWlUWHRYTUw6Y29tLmFkb2JlLnht
cAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1Q
IENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPiA8
cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRh
eC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9u
cy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh
cC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBl
L1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRv
d3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBFNUJGRUUzMTQxRDExRTRCNDIyQzhEN0RG
MTdFQTNBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBFNUJGRUU0MTQxRDExRTRCNDIyQzhE
N0RGMTdFQTNBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6
MEU1QkZFRTExNDFEMTFFNEI0MjJDOEQ3REYxN0VBM0EiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5k
aWQ6MEU1QkZFRTIxNDFEMTFFNEI0MjJDOEQ3REYxN0VBM0EiLz4gPC9yZGY6RGVzY3JpcHRpb24+
IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz64A7ifAAQb/ElEQVR4
2kS9CZQl13ke9lW9evvS+zrTMz09+2CAwb6SILiLFENRtKhddpTYVqxj2TnOsXySOKsdJ3Gck81R
4i0nPkeRSEskLRESKS4iAFIgQAAEMJgZzL50T+/L29d6VZXv++8jDZ5mT3fXq7r3v//y/Wt5f/S/
/Tr8lI9sJo2Mn0K/E2LnoJVZu7//uY3Nvc+tdzrPjB9eWPzAE+cyZxenMDioY+hHKBXGkEonuPvS
a/iHv/cKbjdCfPbzT+FvfeGDeOdPvoV/8/pNXFvvo5BKoVzx8Zt/+3M4f2gJcRRh57VL+Lu/++do
8Ll/7Tc+j6eOHsa3//QV/Nlrl9HthwgQ4Tf+2gv44BMXkEk8XPqT1/Gf/8GrmF2awN//u38Jvfvb
+P2vvIbXb+8h8D2ceWQBv/1X/z3M5PNY5T3+i3/xLUycnsd/+OHH8A/+6YtoeT7gAelkiF/9K8/j
8x96FL31HfyT//ubeG2jiv/0b30el//8bXz1nbtI8X6FIMJv/fWP4iPPPoT7r76H/+qffQeHnz6D
z55Zxj/6f7+OgzjFfYT4tV94Cv/JX/0VbFy8hv/4v/znGH/oAr7w9Ar+4MvfxI/utzBZ9PEP//4v
4pETJ/Glf/lH+BffeQd/85c/hm9+84e4tttCPOzjr/7mZ/Abv/xpfPF/+l38q29fxG/++vP41tde
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
AAAAAAAAAAAAAAAcAAAAQ29uZmlndXJhdGlvbnMyL3Byb2dyZXNzYmFyL1BLAwQUAAgICAAHnCVF
AAAAAAAAAAAAAAAAJwAAAENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbAMA
UEsHCAAAAAACAAAAAAAAAFBLAwQUAAAIAAAHnCVFAAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRp
b25zMi9zdGF0dXNiYXIvUEsDBBQAAAgAAAecJUUAAAAAAAAAAAAAAAAfAAAAQ29uZmlndXJhdGlv
bnMyL2ltYWdlcy9CaXRtYXBzL1BLAwQUAAAIAAAHnCVFAAAAAAAAAAAAAAAAGAAAAENvbmZpZ3Vy
YXRpb25zMi90b29sYmFyL1BLAwQUAAAIAAAHnCVFAAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRp
b25zMi9mbG9hdGVyL1BLAwQUAAAIAAAHnCVFAAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25z
Mi90b29scGFuZWwvUEsDBBQAAAgAAAecJUUAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMy
L21lbnViYXIvUEsDBBQAAAgAAAecJUUAAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3Bv
cHVwbWVudS9QSwMEFAAICAgAB5wlRQAAAAAAAAAAAAAAABUAAABNRVRBLUlORi9tYW5pZmVzdC54
bWytlMtugzAQRff9CuRthQ2kVRoUEqU0WXeRfoBjBmLJD+RHFP6+QJVH1aYKKmzsscf3XJux58uj
FMEBjOVaZSjGEQpAMV1wVWXoY7sJX9By8TCXVPESrEtPnaBdp+w5zJA3KtXUcpsqKsGmjqW6BlVo
5iUol37PT3vSOboykKDFQ3DhlVxA2K43zSW79EKENXX7DJFbIpdhCQWnoWtqyBCta8EZdW0aOagC
94bxtU/s4OgQGeJhu/dypygXlrhTF9equuGBS1oB6eYHUQRttHcho2wPd+xuxxU1zTDEO2fOG7Ak
jtovifomip8nfRvlm/XTdBrN4tn4u/sdnbzmX+i3fLbOJ6t8thofbV0jwOK2Pm/odhVBuulBskwr
19XT2LoSHB1d1IJz7Y0f/xROY9gU5R1V22Y9DmbkWpW88qaXsAmhjIGANtSGMG/M33/hf6w73xnr
VWcBe47ZtUIHn5Mfj+viE1BLBwjYaZYCZAEAAJcFAABQSwECFAAUAAAIAAAHnCVFXsYyDCcAAAAn
AAAACAAAAAAAAAAAAAAAAAAAAAAAbWltZXR5cGVQSwECFAAUAAAIAAAHnCVFbJgMWILoAACC6AAA
GAAAAAAAAAAAAAAAAABNAAAAVGh1bWJuYWlscy90aHVtYm5haWwucG5nUEsBAhQAFAAICAgAB5wl
RZMSGJQ0AAAASAAAAAwAAAAAAAAAAAAAAAAABekAAGxheW91dC1jYWNoZVBLAQIUABQAAAgAAAec
JUW17gHhep8AAHqfAAAtAAAAAAAAAAAAAAAAAHPpAABQaWN0dXJlcy8xMDAwMDIwMTAwMDAwMTUz
MDAwMDAwQ0ZFNDc3MDkxOS5wbmdQSwECFAAUAAAIAAAHnCVFWfLA+ocfBACHHwQALQAAAAAAAAAA
AAAAAAA4iQEAUGljdHVyZXMvMTAwMDAyMDEwMDAwMDJCQzAwMDAwMERDOUVDM0FDOUEucG5nUEsB
AhQAFAAICAgAB5wlRTDIwDHXCgAAvEUAAAoAAAAAAAAAAAAAAAAACqkFAHN0eWxlcy54bWxQSwEC
FAAUAAgICAAHnCVF4b9WLLoPAAAaWwAACwAAAAAAAAAAAAAAAAAZtAUAY29udGVudC54bWxQSwEC
FAAUAAgICAAHnCVF2Vuq6MkBAADWAwAACAAAAAAAAAAAAAAAAAAMxAUAbWV0YS54bWxQSwECFAAU
AAgICAAHnCVFgt8GHP0FAABvJwAADAAAAAAAAAAAAAAAAAALxgUAc2V0dGluZ3MueG1sUEsBAhQA
FAAICAgAB5wlRbT3aNIFAQAAgwMAAAwAAAAAAAAAAAAAAAAAQswFAG1hbmlmZXN0LnJkZlBLAQIU
ABQAAAgAAAecJUUAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAIHNBQBDb25maWd1cmF0aW9uczIv
cHJvZ3Jlc3NiYXIvUEsBAhQAFAAICAgAB5wlRQAAAAACAAAAAAAAACcAAAAAAAAAAAAAAAAAu80F
AENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbFBLAQIUABQAAAgAAAecJUUA
AAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAABLOBQBDb25maWd1cmF0aW9uczIvc3RhdHVzYmFyL1BL
AQIUABQAAAgAAAecJUUAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAErOBQBDb25maWd1cmF0aW9u
czIvaW1hZ2VzL0JpdG1hcHMvUEsBAhQAFAAACAAAB5wlRQAAAAAAAAAAAAAAABgAAAAAAAAAAAAA
AAAAh84FAENvbmZpZ3VyYXRpb25zMi90b29sYmFyL1BLAQIUABQAAAgAAAecJUUAAAAAAAAAAAAA
AAAYAAAAAAAAAAAAAAAAAL3OBQBDb25maWd1cmF0aW9uczIvZmxvYXRlci9QSwECFAAUAAAIAAAH
nCVFAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAADzzgUAQ29uZmlndXJhdGlvbnMyL3Rvb2xwYW5l
bC9QSwECFAAUAAAIAAAHnCVFAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAArzwUAQ29uZmlndXJh
dGlvbnMyL21lbnViYXIvUEsBAhQAFAAACAAAB5wlRQAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAA
Yc8FAENvbmZpZ3VyYXRpb25zMi9wb3B1cG1lbnUvUEsBAhQAFAAICAgAB5wlRdhplgJkAQAAlwUA
ABUAAAAAAAAAAAAAAAAAmc8FAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAAFAAUAGAFAABA
0QUAAAA=
--001a113494545a58ab0502568f26
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Advisory-board mailing list
Advisory-board@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board
Archives: http://lists.xenproject.org/archives/html/advisory-board/ - login/pass "member"/"S3gurtasunG4be!"

--001a113494545a58ab0502568f26--


From xen-devel-bounces@lists.xen.org Mon Sep 08 03:54:48 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Sep 2014 03:54:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XQq27-0006wZ-Np; Mon, 08 Sep 2014 03:54:27 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <roy.franz@linaro.org>) id 1XQq24-0006vg-WE
	for xen-devel@lists.xen.org; Mon, 08 Sep 2014 03:54:25 +0000
Received: from [85.158.139.211:62210] by server-6.bemta-5.messagelabs.com id
	C7/05-06284-0782D045; Mon, 08 Sep 2014 03:54:24 +0000
X-Env-Sender: roy.franz@linaro.org
X-Msg-Ref: server-9.tower-206.messagelabs.com!1410148457!13005298!1
X-Originating-IP: [209.85.220.41]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19617 invoked from network); 8 Sep 2014 03:54:19 -0000
Received: from mail-pa0-f41.google.com (HELO mail-pa0-f41.google.com)
	(209.85.220.41)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	8 Sep 2014 03:54:19 -0000
Received: by mail-pa0-f41.google.com with SMTP id bj1so931701pad.14
	for <xen-devel@lists.xen.org>; Sun, 07 Sep 2014 20:54:17 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
	:references;
	bh=0rzG8JddT+hs4NrjDWUXe98PuX8erZe1/D7vDq/Sq0o=;
	b=a+TFlLKZpqdnzPDcH9FSyTyZ1Bw9Zq3RyBehljLsSIO6h2tU0mY+tV3/57sAWFMfFJ
	bPXlWvLzIOxX0gm+8IAGLAwmKBehzzMo9Dzt8lnrPpgExiGptUHAnWYfRbenHt+JHOht
	RhMBLJsklUm8JPicORCZZoguBQAFgcMoJ9mLIaqJWxdW9rPAqG1UNacwxviZjOWbkAbm
	b0fG4N/ZWWjSmavNXqNr36yAqHsx7hBgbW2DE1tC30gWqnIC45rR+MFn34fxYaqMvtKe
	Im0oi9zm79nIUrlGrpfxXu2oiIhR49NjdWNfEzyqlhT8CFtlef1wYoOeWE8+QojvewUC
	CnJQ==
X-Gm-Message-State: ALoCoQnrePQQMKq3wuWX/+Idjs+fUjuGdghHFf3d7jMDSSXYl2xz/QBRc7vX4x6W7V9gAv1hxXRo
X-Received: by 10.68.164.164 with SMTP id yr4mr16272264pbb.57.1410148457297;
	Sun, 07 Sep 2014 20:54:17 -0700 (PDT)
Received: from rfranz-i7.local (c-24-10-97-91.hsd1.ca.comcast.net.
	[24.10.97.91])
	by mx.google.com with ESMTPSA id qy1sm7524053pbc.27.2014.09.07.20.54.15
	for <multiple recipients>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Sun, 07 Sep 2014 20:54:16 -0700 (PDT)
From: Roy Franz <roy.franz@linaro.org>
To: xen-devel@lists.xen.org, ian.campbell@citrix.com,
	stefano.stabellini@citrix.com, tim@xen.org, jbeulich@suse.com, keir@xen.org
Date: Sun,  7 Sep 2014 20:53:47 -0700
Message-Id: <1410148441-18684-2-git-send-email-roy.franz@linaro.org>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1410148441-18684-1-git-send-email-roy.franz@linaro.org>
References: <1410148441-18684-1-git-send-email-roy.franz@linaro.org>
Cc: Roy Franz <roy.franz@linaro.org>, fu.wei@linaro.org,
	linaro-uefi@lists.linaro.org
Subject: [Xen-devel] [PATCH V3 01/15] move x86 EFI boot code to common/efi
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

This moves the boot.c,the file that implements the EFI entry point
to efi/common, and builds with both EFI/non-EFI toolchains.  No code
changes, just file movement and make updates.
Note that since both the EFI and non-EFI versions are built at the
same time, the EFI boot code cannot be included in the common/build_in.o.
In the ARM case, it will always be built in, so the normal common
build infrastructure can be used.
The EFI runtime code is left alone as this patch series just
implements the boot code.

Signed-off-by: Roy Franz <roy.franz@linaro.org>
---
 .gitignore                 |    2 +
 xen/arch/x86/Makefile      |   15 +-
 xen/arch/x86/efi/Makefile  |    4 +-
 xen/arch/x86/efi/boot.c    | 1723 --------------------------------------------
 xen/arch/x86/efi/efi.h     |   39 -
 xen/arch/x86/efi/runtime.c |    2 +-
 xen/common/Makefile        |    1 +
 xen/common/efi/Makefile    |   14 +
 xen/common/efi/boot.c      | 1723 ++++++++++++++++++++++++++++++++++++++++++++
 xen/common/efi/check.c     |    4 +
 xen/common/efi/dummy.c     |    1 +
 xen/common/efi/efi.h       |   39 +
 xen/include/asm-x86/efi.h  |   39 +
 13 files changed, 1837 insertions(+), 1769 deletions(-)
 delete mode 100644 xen/arch/x86/efi/boot.c
 delete mode 100644 xen/arch/x86/efi/efi.h
 create mode 100644 xen/common/efi/Makefile
 create mode 100644 xen/common/efi/boot.c
 create mode 100644 xen/common/efi/check.c
 create mode 100644 xen/common/efi/dummy.c
 create mode 100644 xen/common/efi/efi.h
 create mode 100644 xen/include/asm-x86/efi.h

diff --git a/.gitignore b/.gitignore
index 6d725aa..81ca938 100644
--- a/.gitignore
+++ b/.gitignore
@@ -254,6 +254,8 @@ xen/arch/x86/efi.lds
 xen/arch/x86/efi/check.efi
 xen/arch/x86/efi/disabled
 xen/arch/x86/efi/mkreloc
+xen/common/efi/check.efi
+xen/common/efi/disabled
 xen/ddb/*
 xen/include/headers.chk
 xen/include/asm
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index c1e244d..5256bdf 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -75,6 +75,13 @@ $(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32
 
 ALL_OBJS := $(BASEDIR)/arch/x86/boot/built_in.o $(BASEDIR)/arch/x86/efi/built_in.o $(ALL_OBJS)
 
+
+# This seems to be required to get parallel builds to work, otherwise prelink-efi.o complains about
+# no rule to make boot.init.o
+# Not sure what the right fix is
+$(BASEDIR)/common/efi/boot.init.o: $(BASEDIR)/common/efi/boot.c
+	$(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common/efi/ boot.init.o
+
 ifeq ($(lto),y)
 # Gather all LTO objects together
 prelink_lto.o: $(ALL_OBJS)
@@ -87,13 +94,13 @@ prelink-efi_lto.o: $(ALL_OBJS) efi/runtime.o efi/compat.o
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
 	$(LD) $(LDFLAGS) -r -o $@ $^
 
-prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink-efi_lto.o efi/boot.init.o
+prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink-efi_lto.o $(BASEDIR)/common/efi/boot.init.o
 	$(guard) $(LD) $(LDFLAGS) -r -o $@ $^
 else
 prelink.o: $(ALL_OBJS)
 	$(LD) $(LDFLAGS) -r -o $@ $^
 
-prelink-efi.o: $(ALL_OBJS) efi/boot.init.o efi/runtime.o efi/compat.o
+prelink-efi.o: $(ALL_OBJS) $(BASEDIR)/common/efi/boot.init.o efi/runtime.o efi/compat.o
 	$(guard) $(LD) $(LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
 endif
 
@@ -143,8 +150,8 @@ $(TARGET).efi: prelink-efi.o efi.lds efi/relocs-dummy.o $(BASEDIR)/common/symbol
 	if $(guard) false; then rm -f $@; echo 'EFI support disabled'; fi
 	rm -f $(@D)/.$(@F).[0-9]*
 
-efi/boot.init.o efi/runtime.o efi/compat.o: $(BASEDIR)/arch/x86/efi/built_in.o
-efi/boot.init.o efi/runtime.o efi/compat.o: ;
+efi/runtime.o efi/compat.o: $(BASEDIR)/arch/x86/efi/built_in.o
+efi/runtime.o efi/compat.o: ;
 
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
 	$(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 1daa7ac..609d05b 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -7,8 +7,8 @@ create = test -e $(1) || touch -t 199901010000 $(1)
 efi := $(filter y,$(x86_64)$(shell rm -f disabled))
 efi := $(if $(efi),$(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c check.c 2>disabled && echo y))
 efi := $(if $(efi),$(shell $(LD) -mi386pep --subsystem=10 -o check.efi check.o 2>disabled && echo y))
-efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,boot.init.o); $(call create,runtime.o)))
+efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,runtime.o)))
 
-extra-$(efi) += boot.init.o relocs-dummy.o runtime.o compat.o
+extra-$(efi) += relocs-dummy.o runtime.o compat.o
 
 stub.o: $(extra-y)
diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
deleted file mode 100644
index 3bdc158..0000000
--- a/xen/arch/x86/efi/boot.c
+++ /dev/null
@@ -1,1723 +0,0 @@
-#include "efi.h"
-#include <efi/efiprot.h>
-#include <efi/efipciio.h>
-#include <public/xen.h>
-#include <xen/compile.h>
-#include <xen/ctype.h>
-#include <xen/dmi.h>
-#include <xen/init.h>
-#include <xen/keyhandler.h>
-#include <xen/lib.h>
-#include <xen/mm.h>
-#include <xen/multiboot.h>
-#include <xen/pci_regs.h>
-#include <xen/pfn.h>
-#if EFI_PAGE_SIZE != PAGE_SIZE
-# error Cannot use xen/pfn.h here!
-#endif
-#include <xen/string.h>
-#include <xen/stringify.h>
-#include <xen/vga.h>
-#include <asm/e820.h>
-#include <asm/edd.h>
-#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
-#include <asm/fixmap.h>
-#undef __ASSEMBLY__
-#include <asm/msr.h>
-#include <asm/processor.h>
-
-/* Using SetVirtualAddressMap() is incompatible with kexec: */
-#undef USE_SET_VIRTUAL_ADDRESS_MAP
-
-#define SHIM_LOCK_PROTOCOL_GUID \
-  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
-
-typedef EFI_STATUS
-(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
-    IN VOID *Buffer,
-    IN UINT32 Size);
-
-typedef struct {
-    EFI_SHIM_LOCK_VERIFY Verify;
-} EFI_SHIM_LOCK_PROTOCOL;
-
-extern char start[];
-extern u32 cpuid_ext_features;
-
-union string {
-    CHAR16 *w;
-    char *s;
-    const char *cs;
-};
-
-struct file {
-    UINTN size;
-    union {
-        EFI_PHYSICAL_ADDRESS addr;
-        void *ptr;
-    };
-};
-
-static EFI_BOOT_SERVICES *__initdata efi_bs;
-static EFI_HANDLE __initdata efi_ih;
-
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
-
-static UINT32 __initdata mdesc_ver;
-
-static struct file __initdata cfg;
-static struct file __initdata kernel;
-static struct file __initdata ramdisk;
-static struct file __initdata ucode;
-static struct file __initdata xsm;
-
-static multiboot_info_t __initdata mbi = {
-    .flags = MBI_MODULES | MBI_LOADERNAME
-};
-static module_t __initdata mb_modules[3];
-
-static CHAR16 __initdata newline[] = L"\r\n";
-
-#define PrintStr(s) StdOut->OutputString(StdOut, s)
-#define PrintErr(s) StdErr->OutputString(StdErr, s)
-
-static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
-{
-    if ( Val >= 10 )
-        Buffer = FormatDec(Val / 10, Buffer);
-    *Buffer = (CHAR16)(L'0' + Val % 10);
-    return Buffer + 1;
-}
-
-static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
-{
-    if ( Width > 1 || Val >= 0x10 )
-        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
-    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
-    return Buffer + 1;
-}
-
-static void __init DisplayUint(UINT64 Val, INTN Width)
-{
-    CHAR16 PrintString[32], *end;
-
-    if (Width < 0)
-        end = FormatDec(Val, PrintString);
-    else
-    {
-        PrintStr(L"0x");
-        end = FormatHex(Val, Width, PrintString);
-    }
-    *end = 0;
-    PrintStr(PrintString);
-}
-
-static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
-{
-    CHAR16 *r = d;
-
-    while ( (*d++ = *s++) != 0 )
-        ;
-    return r;
-}
-
-static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
-{
-    while ( *s1 && *s1 == *s2 )
-    {
-        ++s1;
-        ++s2;
-    }
-    return *s1 - *s2;
-}
-
-static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
-{
-    while ( n && *s1 && *s1 == *s2 )
-    {
-        --n;
-        ++s1;
-        ++s2;
-    }
-    return n ? *s1 - *s2 : 0;
-}
-
-static CHAR16 *__init s2w(union string *str)
-{
-    const char *s = str->s;
-    CHAR16 *w;
-    void *ptr;
-
-    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
-                              &ptr) != EFI_SUCCESS )
-        return NULL;
-
-    w = str->w = ptr;
-    do {
-        *w = *s++;
-    } while ( *w++ );
-
-    return str->w;
-}
-
-static char *__init w2s(const union string *str)
-{
-    const CHAR16 *w = str->w;
-    char *s = str->s;
-
-    do {
-        if ( *w > 0x007f )
-            return NULL;
-        *s = *w++;
-    } while ( *s++ );
-
-    return str->s;
-}
-
-static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
-{
-    return guid1->Data1 == guid2->Data1 &&
-           guid1->Data2 == guid2->Data2 &&
-           guid1->Data3 == guid2->Data3 &&
-           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
-}
-
-static void __init noreturn blexit(const CHAR16 *str)
-{
-    if ( str )
-        PrintStr((CHAR16 *)str);
-    PrintStr(newline);
-
-    if ( cfg.addr )
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    if ( kernel.addr )
-        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
-    if ( ramdisk.addr )
-        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
-    if ( ucode.addr )
-        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
-    if ( xsm.addr )
-        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
-
-    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
-    unreachable(); /* not reached */
-}
-
-/* generic routine for printing error messages */
-static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
-{
-    StdOut = StdErr;
-    PrintErr((CHAR16 *)mesg);
-    PrintErr(L": ");
-
-    switch (ErrCode)
-    {
-    case EFI_NOT_FOUND:
-        mesg = L"Not found";
-        break;
-    case EFI_NO_MEDIA:
-        mesg = L"The device has no media";
-        break;
-    case EFI_MEDIA_CHANGED:
-        mesg = L"Media changed";
-        break;
-    case EFI_DEVICE_ERROR:
-        mesg = L"Device error";
-        break;
-    case EFI_VOLUME_CORRUPTED:
-        mesg = L"Volume corrupted";
-        break;
-    case EFI_ACCESS_DENIED:
-        mesg = L"Access denied";
-        break;
-    case EFI_OUT_OF_RESOURCES:
-        mesg = L"Out of resources";
-        break;
-    case EFI_VOLUME_FULL:
-        mesg = L"Volume is full";
-        break;
-    case EFI_SECURITY_VIOLATION:
-        mesg = L"Security violation";
-        break;
-    case EFI_CRC_ERROR:
-        mesg = L"CRC error";
-        break;
-    case EFI_COMPROMISED_DATA:
-        mesg = L"Compromised data";
-        break;
-    default:
-        PrintErr(L"ErrCode: ");
-        DisplayUint(ErrCode, 0);
-        mesg = NULL;
-        break;
-    }
-    blexit(mesg);
-}
-
-static void __init place_string(u32 *addr, const char *s)
-{
-    static char *__initdata alloc = start;
-
-    if ( s && *s )
-    {
-        size_t len1 = strlen(s) + 1;
-        const char *old = (char *)(long)*addr;
-        size_t len2 = *addr ? strlen(old) + 1 : 0;
-
-        alloc -= len1 + len2;
-        /*
-         * Insert new string before already existing one. This is needed
-         * for options passed on the command line to override options from
-         * the configuration file.
-         */
-        memcpy(alloc, s, len1);
-        if ( *addr )
-        {
-            alloc[len1 - 1] = ' ';
-            memcpy(alloc + len1, old, len2);
-        }
-    }
-    *addr = (long)alloc;
-}
-
-static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
-                                    CHAR16 *cmdline, UINTN cmdsize)
-{
-    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
-    bool_t prev_sep = TRUE;
-
-    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
-            cmdsize -= sizeof(*cmdline), ++cmdline )
-    {
-        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
-
-        if ( !prev_sep )
-        {
-            if ( cur_sep )
-                ++ptr;
-            else if ( argv )
-            {
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        else if ( !cur_sep )
-        {
-            if ( !argv )
-                ++argc;
-            else if ( prev && wstrcmp(prev, L"--") == 0 )
-            {
-                union string rest = { .w = cmdline };
-
-                --argv;
-                place_string(&mbi.cmdline, w2s(&rest));
-                break;
-            }
-            else
-            {
-                *argv++ = prev = ptr;
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        prev_sep = cur_sep;
-    }
-    if ( argv )
-        *argv = NULL;
-    return argc;
-}
-
-static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
-                                                CHAR16 **leaf)
-{
-    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
-    EFI_FILE_HANDLE dir_handle;
-    EFI_DEVICE_PATH *dp;
-    CHAR16 *pathend, *ptr;
-    EFI_STATUS ret;
-
-    do {
-        EFI_FILE_IO_INTERFACE *fio;
-
-        /* Get the file system interface. */
-        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
-                                     &fs_protocol, (void **)&fio);
-        if ( EFI_ERROR(ret) )
-            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
-                         ret);
-        ret = fio->OpenVolume(fio, &dir_handle);
-    } while ( ret == EFI_MEDIA_CHANGED );
-    if ( ret != EFI_SUCCESS )
-        PrintErrMesg(L"OpenVolume failure", ret);
-
-#define buffer ((CHAR16 *)keyhandler_scratch)
-#define BUFFERSIZE sizeof(keyhandler_scratch)
-    for ( dp = loaded_image->FilePath, *buffer = 0;
-          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
-          dp = (void *)dp + DevicePathNodeLength(dp) )
-    {
-        FILEPATH_DEVICE_PATH *fp;
-
-        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
-             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
-            blexit(L"Unsupported device path component");
-
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS )
-            {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-        fp = (void *)dp;
-        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
-                          sizeof(*dp) + sizeof(*buffer) )
-            blexit(L"Increase BUFFERSIZE");
-        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
-        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
-    }
-    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
-        if ( *ptr == L'\\' )
-            pathend = ptr;
-    if ( pathend )
-    {
-        *pathend = 0;
-        *leaf = pathend + 1;
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS ) {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-    }
-    else
-        *leaf = buffer;
-#undef BUFFERSIZE
-#undef buffer
-
-    return dir_handle;
-}
-
-static CHAR16 *__init point_tail(CHAR16 *fn)
-{
-    CHAR16 *tail = NULL;
-
-    for ( ; ; ++fn )
-        switch ( *fn )
-        {
-        case 0:
-            return tail;
-        case L'.':
-        case L'-':
-        case L'_':
-            tail = fn;
-            break;
-        }
-}
-
-static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
-                               struct file *file)
-{
-    EFI_FILE_HANDLE FileHandle = NULL;
-    UINT64 size;
-    EFI_STATUS ret;
-    CHAR16 *what = NULL;
-
-    if ( !name )
-        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
-    ret = dir_handle->Open(dir_handle, &FileHandle, name,
-                           EFI_FILE_MODE_READ, 0);
-    if ( file == &cfg && ret == EFI_NOT_FOUND )
-        return 0;
-    if ( EFI_ERROR(ret) )
-        what = L"Open";
-    else
-        ret = FileHandle->SetPosition(FileHandle, -1);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-        ret = FileHandle->GetPosition(FileHandle, &size);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Get size";
-    else
-        ret = FileHandle->SetPosition(FileHandle, 0);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-    {
-        file->addr = min(1UL << (32 + PAGE_SHIFT),
-                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
-        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                    PFN_UP(size), &file->addr);
-    }
-    if ( EFI_ERROR(ret) )
-    {
-        file->addr = 0;
-        what = what ?: L"Allocation";
-    }
-    else
-    {
-        if ( file != &cfg )
-        {
-            PrintStr(name);
-            PrintStr(L": ");
-            DisplayUint(file->addr, 2 * sizeof(file->addr));
-            PrintStr(L"-");
-            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
-            PrintStr(newline);
-            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
-            mb_modules[mbi.mods_count].mod_end = size;
-            ++mbi.mods_count;
-        }
-
-        file->size = size;
-        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
-        if ( !EFI_ERROR(ret) && file->size != size )
-            ret = EFI_ABORTED;
-        if ( EFI_ERROR(ret) )
-            what = L"Read";
-    }
-
-    if ( FileHandle )
-        FileHandle->Close(FileHandle);
-
-    if ( what )
-    {
-        PrintErr(what);
-        PrintErr(L" failed for ");
-        PrintErrMesg(name, ret);
-    }
-
-    return 1;
-}
-
-static void __init pre_parse(const struct file *cfg)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    bool_t start = 1, comment = 0;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        if ( iscntrl(*ptr) )
-        {
-            comment = 0;
-            start = 1;
-            *ptr = 0;
-        }
-        else if ( comment || (start && isspace(*ptr)) )
-            *ptr = 0;
-        else if ( *ptr == '#' || (start && *ptr == ';') )
-        {
-            comment = 1;
-            *ptr = 0;
-        }
-        else
-            start = 0;
-    }
-    if ( cfg->size && end[-1] )
-         PrintStr(L"No newline at end of config file,"
-                   " last line will be ignored.\r\n");
-}
-
-static char *__init get_value(const struct file *cfg, const char *section,
-                              const char *item)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
-    bool_t match = !slen;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        switch ( *ptr )
-        {
-        case 0:
-            continue;
-        case '[':
-            if ( !slen )
-                break;
-            if ( match )
-                return NULL;
-            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
-            break;
-        default:
-            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
-                return ptr + ilen + 1;
-            break;
-        }
-        ptr += strlen(ptr);
-    }
-    return NULL;
-}
-
-static void __init split_value(char *s)
-{
-    while ( *s && isspace(*s) )
-        ++s;
-    place_string(&mb_modules[mbi.mods_count].string, s);
-    while ( *s && !isspace(*s) )
-        ++s;
-    *s = 0;
-}
-
-static void __init edd_put_string(u8 *dst, size_t n, const char *src)
-{
-    while ( n-- && *src )
-       *dst++ = *src++;
-    if ( *src )
-       PrintErrMesg(L"Internal error populating EDD info",
-                    EFI_BUFFER_TOO_SMALL);
-    while ( n-- )
-       *dst++ = ' ';
-}
-#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
-
-static void __init setup_efi_pci(void)
-{
-    EFI_STATUS status;
-    EFI_HANDLE *handles;
-    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
-    UINTN i, nr_pci, size = 0;
-    struct efi_pci_rom *last = NULL;
-
-    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-
-    nr_pci = size / sizeof(*handles);
-    for ( i = 0; i < nr_pci; ++i )
-    {
-        EFI_PCI_IO *pci = NULL;
-        u64 attributes;
-        struct efi_pci_rom *rom, *va;
-        UINTN segment, bus, device, function;
-
-        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
-        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
-            continue;
-
-        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
-                                 &attributes);
-        if ( EFI_ERROR(status) ||
-             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
-             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
-                       &function)) )
-            continue;
-
-        DisplayUint(segment, 4);
-        PrintStr(L":");
-        DisplayUint(bus, 2);
-        PrintStr(L":");
-        DisplayUint(device, 2);
-        PrintStr(L".");
-        DisplayUint(function, 1);
-        PrintStr(L": ROM: ");
-        DisplayUint(pci->RomSize, 0);
-        PrintStr(L" bytes at ");
-        DisplayUint((UINTN)pci->RomImage, 0);
-        PrintStr(newline);
-
-        size = pci->RomSize + sizeof(*rom);
-        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
-                                      (void **)&rom);
-        if ( EFI_ERROR(status) )
-            continue;
-
-        rom->next = NULL;
-        rom->size = pci->RomSize;
-
-        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
-                               &rom->vendor);
-        if ( !EFI_ERROR(status) )
-            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
-                                   &rom->devid);
-        if ( EFI_ERROR(status) )
-        {
-            efi_bs->FreePool(rom);
-            continue;
-        }
-
-        rom->segment = segment;
-        rom->bus = bus;
-        rom->devfn = (device << 3) | function;
-        memcpy(rom->data, pci->RomImage, pci->RomSize);
-
-        va = (void *)rom + DIRECTMAP_VIRT_START;
-        if ( last )
-            last->next = va;
-        else
-            efi_pci_roms = va;
-        last = rom;
-    }
-
-    efi_bs->FreePool(handles);
-}
-
-static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
-{
-   if ( bpp < 0 )
-       return bpp;
-   if ( !mask )
-       return -EINVAL;
-   for ( *pos = 0; !(mask & 1); ++*pos )
-       mask >>= 1;
-   for ( *sz = 0; mask & 1; ++sz)
-       mask >>= 1;
-   if ( mask )
-       return -EINVAL;
-   return max(*pos + *sz, bpp);
-}
-
-extern const intpte_t __page_tables_start[], __page_tables_end[];
-#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
-                           (intpte_t *)(v) < __page_tables_end)
-
-#define PE_BASE_RELOC_ABS      0
-#define PE_BASE_RELOC_HIGHLOW  3
-#define PE_BASE_RELOC_DIR64   10
-
-extern const struct pe_base_relocs {
-    u32 rva;
-    u32 size;
-    u16 entries[];
-} __base_relocs_start[], __base_relocs_end[];
-
-static void __init relocate_image(unsigned long delta)
-{
-    const struct pe_base_relocs *base_relocs;
-
-    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
-    {
-        unsigned int i, n;
-
-        n = (base_relocs->size - sizeof(*base_relocs)) /
-            sizeof(*base_relocs->entries);
-        for ( i = 0; i < n; ++i )
-        {
-            unsigned long addr = xen_phys_start + base_relocs->rva +
-                                 (base_relocs->entries[i] & 0xfff);
-
-            switch ( base_relocs->entries[i] >> 12 )
-            {
-            case PE_BASE_RELOC_ABS:
-                break;
-            case PE_BASE_RELOC_HIGHLOW:
-                if ( delta )
-                {
-                    *(u32 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(u32 *)addr += xen_phys_start;
-                }
-                break;
-            case PE_BASE_RELOC_DIR64:
-                if ( delta )
-                {
-                    *(u64 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(intpte_t *)addr += xen_phys_start;
-                }
-                break;
-            default:
-                blexit(L"Unsupported relocation type");
-            }
-        }
-        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
-    }
-}
-
-extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
-
-static void __init relocate_trampoline(unsigned long phys)
-{
-    const s32 *trampoline_ptr;
-
-    trampoline_phys = phys;
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
-}
-
-void EFIAPI __init noreturn
-efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
-{
-    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
-    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
-    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
-    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
-    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
-    EFI_LOADED_IMAGE *loaded_image;
-    EFI_STATUS status;
-    unsigned int i, argc;
-    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
-    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
-    EFI_HANDLE *handles = NULL;
-    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
-    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
-    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
-    EFI_FILE_HANDLE dir_handle;
-    union string section = { NULL }, name;
-    struct e820entry *e;
-    u64 efer;
-    bool_t base_video = 0;
-
-    efi_ih = ImageHandle;
-    efi_bs = SystemTable->BootServices;
-    efi_rs = SystemTable->RuntimeServices;
-    efi_ct = SystemTable->ConfigurationTable;
-    efi_num_ct = SystemTable->NumberOfTableEntries;
-    efi_version = SystemTable->Hdr.Revision;
-    efi_fw_vendor = SystemTable->FirmwareVendor;
-    efi_fw_revision = SystemTable->FirmwareRevision;
-
-    StdOut = SystemTable->ConOut;
-    StdErr = SystemTable->StdErr ?: StdOut;
-
-    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
-                                    (void **)&loaded_image);
-    if ( status != EFI_SUCCESS )
-        PrintErrMesg(L"No Loaded Image Protocol", status);
-
-    xen_phys_start = (UINTN)loaded_image->ImageBase;
-    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
-        blexit(L"Xen must be loaded below 4Gb.");
-    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
-        blexit(L"Xen must be loaded at a 2Mb boundary.");
-    trampoline_xen_phys_start = xen_phys_start;
-
-    /* Get the file system interface. */
-    dir_handle = get_parent_handle(loaded_image, &file_name);
-
-    argc = get_argv(0, NULL, loaded_image->LoadOptions,
-                    loaded_image->LoadOptionsSize);
-    if ( argc > 0 &&
-         efi_bs->AllocatePool(EfiLoaderData,
-                              (argc + 1) * sizeof(*argv) +
-                                  loaded_image->LoadOptionsSize,
-                              (void **)&argv) == EFI_SUCCESS )
-        get_argv(argc, argv, loaded_image->LoadOptions,
-                 loaded_image->LoadOptionsSize);
-    else
-        argc = 0;
-    for ( i = 1; i < argc; ++i )
-    {
-        CHAR16 *ptr = argv[i];
-
-        if ( !ptr )
-            break;
-        if ( *ptr == L'/' || *ptr == L'-' )
-        {
-            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
-                base_video = 1;
-            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
-                cfg_file_name = ptr + 5;
-            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
-                cfg_file_name = argv[++i];
-            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
-                      (ptr[1] == L'?' && !ptr[2]) )
-            {
-                PrintStr(L"Xen EFI Loader options:\r\n");
-                PrintStr(L"-basevideo   retain current video mode\r\n");
-                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
-                PrintStr(L"-help, -?    display this help\r\n");
-                blexit(NULL);
-            }
-            else
-            {
-                PrintStr(L"WARNING: Unknown command line option '");
-                PrintStr(ptr);
-                PrintStr(L"' ignored\r\n");
-            }
-        }
-        else
-            section.w = ptr;
-    }
-
-    if ( !base_video )
-    {
-        unsigned int best;
-
-        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
-              i < StdOut->Mode->MaxMode; ++i )
-        {
-            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
-                 cols * rows > size )
-            {
-                size = cols * rows;
-                best = i;
-            }
-        }
-        if ( best != StdOut->Mode->Mode )
-            StdOut->SetMode(StdOut, best);
-    }
-
-    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
-             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
-
-    relocate_image(0);
-
-    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
-                           &cols, &rows) == EFI_SUCCESS )
-    {
-        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
-        vga_console_info.u.text_mode_3.columns = cols;
-        vga_console_info.u.text_mode_3.rows = rows;
-        vga_console_info.u.text_mode_3.font_height = 16;
-    }
-
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
-        if ( EFI_ERROR(status) )
-            continue;
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            break;
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( EFI_ERROR(status) )
-        gop = NULL;
-
-    /* Read and parse the config file. */
-    if ( !cfg_file_name )
-    {
-        CHAR16 *tail;
-
-        while ( (tail = point_tail(file_name)) != NULL )
-        {
-            wstrcpy(tail, L".cfg");
-            if ( read_file(dir_handle, file_name, &cfg) )
-                break;
-            *tail = 0;
-        }
-        if ( !tail )
-            blexit(L"No configuration file found.");
-        PrintStr(L"Using configuration file '");
-        PrintStr(file_name);
-        PrintStr(L"'\r\n");
-    }
-    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
-        blexit(L"Configuration file not found.");
-    pre_parse(&cfg);
-
-    if ( section.w )
-        w2s(&section);
-    else
-        section.s = get_value(&cfg, "global", "default");
-
-    for ( ; ; )
-    {
-        name.s = get_value(&cfg, section.s, "kernel");
-        if ( name.s )
-            break;
-        name.s = get_value(&cfg, "global", "chain");
-        if ( !name.s )
-            break;
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-        cfg.addr = 0;
-        if ( !read_file(dir_handle, s2w(&name), &cfg) )
-        {
-            PrintStr(L"Chained configuration file '");
-            PrintStr(name.w);
-            efi_bs->FreePool(name.w);
-            blexit(L"'not found.");
-        }
-        pre_parse(&cfg);
-        efi_bs->FreePool(name.w);
-    }
-    if ( !name.s )
-        blexit(L"No Dom0 kernel image specified.");
-    split_value(name.s);
-    read_file(dir_handle, s2w(&name), &kernel);
-    efi_bs->FreePool(name.w);
-
-    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
-                    (void **)&shim_lock)) &&
-         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
-        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
-
-    name.s = get_value(&cfg, section.s, "ramdisk");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ramdisk);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "ucode");
-    if ( !name.s )
-        name.s = get_value(&cfg, "global", "ucode");
-    if ( name.s )
-    {
-        microcode_set_module(mbi.mods_count);
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ucode);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "xsm");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &xsm);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "options");
-    if ( name.s )
-        place_string(&mbi.cmdline, name.s);
-    /* Insert image name last, as it gets prefixed to the other options. */
-    if ( argc )
-    {
-        name.w = *argv;
-        w2s(&name);
-    }
-    else
-        name.s = "xen";
-    place_string(&mbi.cmdline, name.s);
-
-    cols = rows = depth = 0;
-    if ( !base_video )
-    {
-        name.cs = get_value(&cfg, section.s, "video");
-        if ( !name.cs )
-            name.cs = get_value(&cfg, "global", "video");
-        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
-        {
-            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs )
-                cols = rows = depth = 0;
-        }
-    }
-
-    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    cfg.addr = 0;
-
-    dir_handle->Close(dir_handle);
-
-    if ( gop && !base_video )
-    {
-        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
-        {
-            unsigned int bpp = 0;
-
-            status = gop->QueryMode(gop, i, &info_size, &mode_info);
-            if ( EFI_ERROR(status) )
-                continue;
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelBitMask:
-                bpp = hweight32(mode_info->PixelInformation.RedMask |
-                                mode_info->PixelInformation.GreenMask |
-                                mode_info->PixelInformation.BlueMask);
-                break;
-            case PixelRedGreenBlueReserved8BitPerColor:
-            case PixelBlueGreenRedReserved8BitPerColor:
-                bpp = 24;
-                break;
-            default:
-                continue;
-            }
-            if ( cols == mode_info->HorizontalResolution &&
-                 rows == mode_info->VerticalResolution &&
-                 (!depth || bpp == depth) )
-            {
-                gop_mode = i;
-                break;
-            }
-            if ( !cols && !rows &&
-                 mode_info->HorizontalResolution *
-                 mode_info->VerticalResolution > size )
-            {
-                size = mode_info->HorizontalResolution *
-                       mode_info->VerticalResolution;
-                gop_mode = i;
-            }
-        }
-    }
-
-    if ( mbi.cmdline )
-        mbi.flags |= MBI_CMDLINE;
-    /*
-     * These must not be initialized statically, since the value must
-     * not get relocated when processing base relocations below.
-     */
-    mbi.boot_loader_name = (long)"EFI";
-    mbi.mods_addr = (long)mb_modules;
-
-    place_string(&mbi.mem_upper, NULL);
-
-    /* Collect EDD info. */
-    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
-    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        EFI_BLOCK_IO *bio;
-        EFI_DEV_PATH_PTR devp;
-        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
-        struct edd_device_params *params = &info->edd_device_params;
-        enum { root, acpi, pci, ctrlr } state = root;
-
-        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
-        if ( EFI_ERROR(status) ||
-             bio->Media->RemovableMedia ||
-             bio->Media->LogicalPartition )
-            continue;
-        if ( boot_edd_info_nr < EDD_INFO_MAX )
-        {
-            info->device = 0x80 + boot_edd_info_nr; /* fake */
-            info->version = 0x11;
-            params->length = offsetof(struct edd_device_params, dpte_ptr);
-            params->number_of_sectors = bio->Media->LastBlock + 1;
-            params->bytes_per_sector = bio->Media->BlockSize;
-            params->dpte_ptr = ~0;
-        }
-        ++boot_edd_info_nr;
-        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
-                                        (void **)&devp);
-        if ( EFI_ERROR(status) )
-            continue;
-        for ( ; !IsDevicePathEnd(devp.DevPath);
-              devp.DevPath = NextDevicePathNode(devp.DevPath) )
-        {
-            switch ( DevicePathType(devp.DevPath) )
-            {
-                const u8 *p;
-
-            case ACPI_DEVICE_PATH:
-                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case ACPI_DP:
-                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
-                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
-                        break;
-                    params->interface_path.pci.bus = devp.Acpi->UID;
-                    state = acpi;
-                    break;
-                case EXPANDED_ACPI_DP:
-                    /* XXX */
-                    break;
-                }
-                break;
-            case HARDWARE_DEVICE_PATH:
-                if ( state != acpi ||
-                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
-                     boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = pci;
-                edd_put_string(params->host_bus_type, "PCI");
-                params->interface_path.pci.slot = devp.Pci->Device;
-                params->interface_path.pci.function = devp.Pci->Function;
-                break;
-            case MESSAGING_DEVICE_PATH:
-                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = ctrlr;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case MSG_ATAPI_DP:
-                    edd_put_string(params->interface_type, "ATAPI");
-                    params->interface_path.pci.channel =
-                        devp.Atapi->PrimarySecondary;
-                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
-                    params->device_path.atapi.lun = devp.Atapi->Lun;
-                    break;
-                case MSG_SCSI_DP:
-                    edd_put_string(params->interface_type, "SCSI");
-                    params->device_path.scsi.id = devp.Scsi->Pun;
-                    params->device_path.scsi.lun = devp.Scsi->Lun;
-                    break;
-                case MSG_FIBRECHANNEL_DP:
-                    edd_put_string(params->interface_type, "FIBRE");
-                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
-                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
-                    break;
-                case MSG_1394_DP:
-                    edd_put_string(params->interface_type, "1394");
-                    params->device_path.i1394.eui = devp.F1394->Guid;
-                    break;
-                case MSG_USB_DP:
-                case MSG_USB_CLASS_DP:
-                    edd_put_string(params->interface_type, "USB");
-                    break;
-                case MSG_I2O_DP:
-                    edd_put_string(params->interface_type, "I2O");
-                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
-                    break;
-                default:
-                    continue;
-                }
-                info->version = 0x30;
-                params->length = sizeof(struct edd_device_params);
-                params->key = 0xbedd;
-                params->device_path_info_length =
-                    sizeof(struct edd_device_params) -
-                    offsetof(struct edd_device_params, key);
-                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
-                    params->checksum -= *p;
-                break;
-            case MEDIA_DEVICE_PATH:
-                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
-                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
-                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
-                {
-                    struct mbr_signature *sig = boot_mbr_signature +
-                                                boot_mbr_signature_nr;
-
-                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
-                    memcpy(&sig->signature, devp.HardDrive->Signature,
-                           sizeof(sig->signature));
-                    ++boot_mbr_signature_nr;
-                }
-                break;
-            }
-        }
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( boot_edd_info_nr > EDD_INFO_MAX )
-        boot_edd_info_nr = EDD_INFO_MAX;
-
-    /* XXX Collect EDID info. */
-
-    if ( cpuid_eax(0x80000000) > 0x80000000 )
-    {
-        cpuid_ext_features = cpuid_edx(0x80000001);
-        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
-    }
-
-    /* Obtain basic table pointers. */
-    for ( i = 0; i < efi_num_ct; ++i )
-    {
-        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
-        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
-        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
-        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
-
-        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi20 = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
-	       efi.mps = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
-	       efi.smbios = (long)efi_ct[i].VendorTable;
-    }
-
-    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
-        dmi_efi_get_table((void *)(long)efi.smbios);
-
-    /* Collect PCI ROM contents. */
-    setup_efi_pci();
-
-    /* Get snapshot of variable store parameters. */
-    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
-             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
-                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
-                                       EFI_VARIABLE_RUNTIME_ACCESS,
-                                       &efi_boot_max_var_store_size,
-                                       &efi_boot_remain_var_store_size,
-                                       &efi_boot_max_var_size) :
-             EFI_INCOMPATIBLE_VERSION;
-    if ( EFI_ERROR(status) )
-    {
-        efi_boot_max_var_store_size = 0;
-        efi_boot_remain_var_store_size = 0;
-        efi_boot_max_var_size = status;
-        PrintStr(L"Warning: Could not query variable store: ");
-        DisplayUint(status, 0);
-        PrintStr(newline);
-    }
-
-    /* Allocate space for trampoline (in first Mb). */
-    cfg.addr = 0x100000;
-    cfg.size = trampoline_end - trampoline_start;
-    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                   PFN_UP(cfg.size), &cfg.addr);
-    if ( status == EFI_SUCCESS )
-        relocate_trampoline(cfg.addr);
-    else
-    {
-        cfg.addr = 0;
-        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
-    }
-
-    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
-    for ( i = 0; i < 8; ++i )
-    {
-        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
-        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
-
-        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
-        slot &= L2_PAGETABLE_ENTRIES - 1;
-        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
-    }
-    /* Initialise L3 boot-map page directory entries. */
-    l3_bootmap[l3_table_offset(xen_phys_start)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-
-    if ( gop )
-    {
-        int bpp = 0;
-
-        /* Set graphics mode. */
-        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
-            gop->SetMode(gop, gop_mode);
-
-        /* Get graphics and frame buffer info. */
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelRedGreenBlueReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 0;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 16;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBlueGreenRedReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 16;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 0;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBitMask:
-                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.red_pos,
-                                &vga_console_info.u.vesa_lfb.red_size);
-                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
-                                &vga_console_info.u.vesa_lfb.green_pos,
-                                &vga_console_info.u.vesa_lfb.green_size);
-                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
-                                &vga_console_info.u.vesa_lfb.blue_pos,
-                                &vga_console_info.u.vesa_lfb.blue_size);
-                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.rsvd_pos,
-                                &vga_console_info.u.vesa_lfb.rsvd_size);
-                if ( bpp > 0 )
-                    break;
-                /* fall through */
-            default:
-                PrintErr(L"Current graphics mode is unsupported!\r\n");
-                status = EFI_UNSUPPORTED;
-                break;
-            }
-        if ( !EFI_ERROR(status) )
-        {
-            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
-            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
-            vga_console_info.u.vesa_lfb.width =
-                mode_info->HorizontalResolution;
-            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
-            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
-            vga_console_info.u.vesa_lfb.bytes_per_line =
-                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
-            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
-            vga_console_info.u.vesa_lfb.lfb_size =
-                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
-        }
-    }
-
-    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
-                         &efi_mdesc_size, &mdesc_ver);
-    mbi.mem_upper -= efi_memmap_size;
-    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
-    if ( mbi.mem_upper < xen_phys_start )
-        blexit(L"Out of static memory");
-    efi_memmap = (void *)(long)mbi.mem_upper;
-    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
-                                  &efi_mdesc_size, &mdesc_ver);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot obtain memory map", status);
-
-    /* Populate E820 table and check trampoline area availability. */
-    e = e820map - 1;
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        u32 type;
-
-        switch ( desc->Type )
-        {
-        default:
-            type = E820_RESERVED;
-            break;
-        case EfiConventionalMemory:
-        case EfiBootServicesCode:
-        case EfiBootServicesData:
-            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
-                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
-                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
-            /* fall through */
-        case EfiLoaderCode:
-        case EfiLoaderData:
-            if ( desc->Attribute & EFI_MEMORY_WB )
-                type = E820_RAM;
-            else
-        case EfiUnusableMemory:
-                type = E820_UNUSABLE;
-            break;
-        case EfiACPIReclaimMemory:
-            type = E820_ACPI;
-            break;
-        case EfiACPIMemoryNVS:
-            type = E820_NVS;
-            break;
-        }
-        if ( e820nr && type == e->type &&
-             desc->PhysicalStart == e->addr + e->size )
-            e->size += len;
-        else if ( !len || e820nr >= E820MAX )
-            continue;
-        else
-        {
-            ++e;
-            e->addr = desc->PhysicalStart;
-            e->size = len;
-            e->type = type;
-            ++e820nr;
-        }
-    }
-    if ( !trampoline_phys )
-    {
-        if ( !cfg.addr )
-            blexit(L"No memory for trampoline");
-        relocate_trampoline(cfg.addr);
-    }
-
-    status = efi_bs->ExitBootServices(ImageHandle, map_key);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot exit boot services", status);
-
-    /* Adjust pointers into EFI. */
-    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
-#endif
-    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
-    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
-
-    relocate_image(__XEN_VIRT_START - xen_phys_start);
-    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
-
-    /* Set system registers and transfer control. */
-    asm volatile("pushq $0\n\tpopfq");
-    rdmsrl(MSR_EFER, efer);
-    efer |= EFER_SCE;
-    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
-        efer |= EFER_NX;
-    wrmsrl(MSR_EFER, efer);
-    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
-              X86_CR0_AM | X86_CR0_PG);
-    asm volatile ( "mov    %[cr4], %%cr4\n\t"
-                   "mov    %[cr3], %%cr3\n\t"
-                   "movabs $__start_xen, %[rip]\n\t"
-                   "lgdt   gdt_descr(%%rip)\n\t"
-                   "mov    stack_start(%%rip), %%rsp\n\t"
-                   "mov    %[ds], %%ss\n\t"
-                   "mov    %[ds], %%ds\n\t"
-                   "mov    %[ds], %%es\n\t"
-                   "mov    %[ds], %%fs\n\t"
-                   "mov    %[ds], %%gs\n\t"
-                   "movl   %[cs], 8(%%rsp)\n\t"
-                   "mov    %[rip], (%%rsp)\n\t"
-                   "lretq  %[stkoff]-16"
-                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
-                   : [cr3] "r" (idle_pg_table),
-                     [cr4] "r" (mmu_cr4_features),
-                     [cs] "ir" (__HYPERVISOR_CS),
-                     [ds] "r" (__HYPERVISOR_DS),
-                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
-                     "D" (&mbi)
-                   : "memory" );
-    for( ; ; ); /* not reached */
-}
-
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-static __init void copy_mapping(unsigned long mfn, unsigned long end,
-                                bool_t (*is_valid)(unsigned long smfn,
-                                                   unsigned long emfn))
-{
-    unsigned long next;
-
-    for ( ; mfn < end; mfn = next )
-    {
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
-        l3_pgentry_t *l3src, *l3dst;
-        unsigned long va = (unsigned long)mfn_to_virt(mfn);
-
-        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
-        if ( !is_valid(mfn, min(next, end)) )
-            continue;
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            l3dst = alloc_xen_pagetable();
-            BUG_ON(!l3dst);
-            clear_page(l3dst);
-            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
-                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
-        }
-        else
-            l3dst = l4e_to_l3e(l4e);
-        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
-        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
-    }
-}
-
-static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
-
-    return !(smfn & pfn_hole_mask) &&
-           find_next_bit(pdx_group_valid, sz,
-                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
-}
-
-static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    return 1;
-}
-#endif
-
-#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
-                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
-
-void __init efi_init_memory(void)
-{
-    unsigned int i;
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-    struct rt_extra {
-        struct rt_extra *next;
-        unsigned long smfn, emfn;
-        unsigned int prot;
-    } *extra, *extra_head = NULL;
-#endif
-
-    printk(XENLOG_INFO "EFI memory map:\n");
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        unsigned long smfn, emfn;
-        unsigned int prot = PAGE_HYPERVISOR;
-
-        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
-                           " type=%u attr=%016" PRIx64 "\n",
-               desc->PhysicalStart, desc->PhysicalStart + len - 1,
-               desc->Type, desc->Attribute);
-
-        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
-            continue;
-
-        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
-
-        smfn = PFN_DOWN(desc->PhysicalStart);
-        emfn = PFN_UP(desc->PhysicalStart + len);
-
-        if ( desc->Attribute & EFI_MEMORY_WB )
-            /* nothing */;
-        else if ( desc->Attribute & EFI_MEMORY_WT )
-            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & EFI_MEMORY_WC )
-            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
-            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
-        else
-        {
-            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-            continue;
-        }
-
-        if ( desc->Attribute & EFI_MEMORY_WP )
-            prot &= _PAGE_RW;
-        if ( desc->Attribute & EFI_MEMORY_XP )
-            prot |= _PAGE_NX_BIT;
-
-        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
-             !(smfn & pfn_hole_mask) &&
-             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
-        {
-            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
-                prot &= ~_PAGE_GLOBAL;
-            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
-                                  smfn, emfn - smfn, prot) == 0 )
-                desc->VirtualStart =
-                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
-            else
-                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
-                       smfn, emfn - 1);
-        }
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
-                  (extra = xmalloc(struct rt_extra)) != NULL )
-        {
-            extra->smfn = smfn;
-            extra->emfn = emfn;
-            extra->prot = prot & ~_PAGE_GLOBAL;
-            extra->next = extra_head;
-            extra_head = extra;
-            desc->VirtualStart = desc->PhysicalStart;
-        }
-#endif
-        else
-        {
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-            /* XXX allocate e.g. down from FIXADDR_START */
-#endif
-            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-        }
-    }
-
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
-                                 mdesc_ver, efi_memmap);
-#else
-    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
-    efi_l4_pgtable = alloc_xen_pagetable();
-    BUG_ON(!efi_l4_pgtable);
-    clear_page(efi_l4_pgtable);
-
-    copy_mapping(0, max_page, ram_range_valid);
-
-    /* Insert non-RAM runtime mappings inside the direct map. */
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-
-        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
-             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
-             desc->VirtualStart != desc->PhysicalStart )
-            copy_mapping(PFN_DOWN(desc->PhysicalStart),
-                         PFN_UP(desc->PhysicalStart +
-                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
-                         rt_range_valid);
-    }
-
-    /* Insert non-RAM runtime mappings outside of the direct map. */
-    while ( (extra = extra_head) != NULL )
-    {
-        unsigned long addr = extra->smfn << PAGE_SHIFT;
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
-        l3_pgentry_t *pl3e;
-        l2_pgentry_t *pl2e;
-        l1_pgentry_t *l1t;
-
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            pl3e = alloc_xen_pagetable();
-            BUG_ON(!pl3e);
-            clear_page(pl3e);
-            efi_l4_pgtable[l4_table_offset(addr)] =
-                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
-        }
-        else
-            pl3e = l4e_to_l3e(l4e);
-        pl3e += l3_table_offset(addr);
-        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
-        {
-            pl2e = alloc_xen_pagetable();
-            BUG_ON(!pl2e);
-            clear_page(pl2e);
-            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
-            pl2e = l3e_to_l2e(*pl3e);
-        }
-        pl2e += l2_table_offset(addr);
-        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
-        {
-            l1t = alloc_xen_pagetable();
-            BUG_ON(!l1t);
-            clear_page(l1t);
-            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
-            l1t = l2e_to_l1e(*pl2e);
-        }
-        for ( i = l1_table_offset(addr);
-              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
-              ++i, ++extra->smfn )
-            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
-
-        if ( extra->smfn == extra->emfn )
-        {
-            extra_head = extra->next;
-            xfree(extra);
-        }
-    }
-
-    /* Insert Xen mappings. */
-    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
-          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
-        efi_l4_pgtable[i] = idle_pg_table[i];
-#endif
-}
diff --git a/xen/arch/x86/efi/efi.h b/xen/arch/x86/efi/efi.h
deleted file mode 100644
index a80d5f1..0000000
--- a/xen/arch/x86/efi/efi.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <asm/efibind.h>
-#include <efi/efidef.h>
-#include <efi/efierr.h>
-#include <efi/eficon.h>
-#include <efi/efidevp.h>
-#include <efi/eficapsule.h>
-#include <efi/efiapi.h>
-#include <xen/efi.h>
-#include <xen/spinlock.h>
-#include <asm/page.h>
-
-struct efi_pci_rom {
-    const struct efi_pci_rom *next;
-    u16 vendor, devid, segment;
-    u8 bus, devfn;
-    unsigned long size;
-    unsigned char data[];
-};
-
-extern unsigned int efi_num_ct;
-extern EFI_CONFIGURATION_TABLE *efi_ct;
-
-extern unsigned int efi_version, efi_fw_revision;
-extern const CHAR16 *efi_fw_vendor;
-
-extern EFI_RUNTIME_SERVICES *efi_rs;
-
-extern UINTN efi_memmap_size, efi_mdesc_size;
-extern void *efi_memmap;
-
-extern l4_pgentry_t *efi_l4_pgtable;
-
-extern const struct efi_pci_rom *efi_pci_roms;
-
-extern UINT64 efi_boot_max_var_store_size, efi_boot_remain_var_store_size,
-              efi_boot_max_var_size;
-
-unsigned long efi_rs_enter(void);
-void efi_rs_leave(unsigned long);
diff --git a/xen/arch/x86/efi/runtime.c b/xen/arch/x86/efi/runtime.c
index 166852d..6788a1a 100644
--- a/xen/arch/x86/efi/runtime.c
+++ b/xen/arch/x86/efi/runtime.c
@@ -1,4 +1,4 @@
-#include "efi.h"
+#include <asm/efi.h>
 #include <xen/cache.h>
 #include <xen/errno.h>
 #include <xen/guest_access.h>
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..e5c7044 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -67,4 +67,5 @@ subdir-$(x86_64) += hvm
 subdir-$(coverage) += gcov
 
 subdir-y += libelf
+subdir-y += efi
 subdir-$(HAS_DEVICE_TREE) += libfdt
diff --git a/xen/common/efi/Makefile b/xen/common/efi/Makefile
new file mode 100644
index 0000000..4313a4e
--- /dev/null
+++ b/xen/common/efi/Makefile
@@ -0,0 +1,14 @@
+CFLAGS += -fshort-wchar
+
+obj-y += dummy.o
+
+create = test -e $(1) || touch -t 199901010000 $(1)
+
+efi := $(filter y,$(x86_64)$(shell rm -f disabled))
+efi := $(if $(efi),$(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c check.c 2>disabled && echo y))
+efi := $(if $(efi),$(shell $(LD) -mi386pep --subsystem=10 -o check.efi check.o 2>disabled && echo y))
+efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,boot.init.o); $(call create,runtime.o)))
+
+extra-$(efi) += boot.init.o
+
+dummy.o: boot.init.o $(extra-y)
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
new file mode 100644
index 0000000..14e2f46
--- /dev/null
+++ b/xen/common/efi/boot.c
@@ -0,0 +1,1723 @@
+#include <asm/efi.h>
+#include <efi/efiprot.h>
+#include <efi/efipciio.h>
+#include <public/xen.h>
+#include <xen/compile.h>
+#include <xen/ctype.h>
+#include <xen/dmi.h>
+#include <xen/init.h>
+#include <xen/keyhandler.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/multiboot.h>
+#include <xen/pci_regs.h>
+#include <xen/pfn.h>
+#if EFI_PAGE_SIZE != PAGE_SIZE
+# error Cannot use xen/pfn.h here!
+#endif
+#include <xen/string.h>
+#include <xen/stringify.h>
+#include <xen/vga.h>
+#include <asm/e820.h>
+#include <asm/edd.h>
+#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
+#include <asm/fixmap.h>
+#undef __ASSEMBLY__
+#include <asm/msr.h>
+#include <asm/processor.h>
+
+/* Using SetVirtualAddressMap() is incompatible with kexec: */
+#undef USE_SET_VIRTUAL_ADDRESS_MAP
+
+#define SHIM_LOCK_PROTOCOL_GUID \
+  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
+
+typedef EFI_STATUS
+(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
+    IN VOID *Buffer,
+    IN UINT32 Size);
+
+typedef struct {
+    EFI_SHIM_LOCK_VERIFY Verify;
+} EFI_SHIM_LOCK_PROTOCOL;
+
+extern char start[];
+extern u32 cpuid_ext_features;
+
+union string {
+    CHAR16 *w;
+    char *s;
+    const char *cs;
+};
+
+struct file {
+    UINTN size;
+    union {
+        EFI_PHYSICAL_ADDRESS addr;
+        void *ptr;
+    };
+};
+
+static EFI_BOOT_SERVICES *__initdata efi_bs;
+static EFI_HANDLE __initdata efi_ih;
+
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
+
+static UINT32 __initdata mdesc_ver;
+
+static struct file __initdata cfg;
+static struct file __initdata kernel;
+static struct file __initdata ramdisk;
+static struct file __initdata ucode;
+static struct file __initdata xsm;
+
+static multiboot_info_t __initdata mbi = {
+    .flags = MBI_MODULES | MBI_LOADERNAME
+};
+static module_t __initdata mb_modules[3];
+
+static CHAR16 __initdata newline[] = L"\r\n";
+
+#define PrintStr(s) StdOut->OutputString(StdOut, s)
+#define PrintErr(s) StdErr->OutputString(StdErr, s)
+
+static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
+{
+    if ( Val >= 10 )
+        Buffer = FormatDec(Val / 10, Buffer);
+    *Buffer = (CHAR16)(L'0' + Val % 10);
+    return Buffer + 1;
+}
+
+static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
+{
+    if ( Width > 1 || Val >= 0x10 )
+        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
+    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
+    return Buffer + 1;
+}
+
+static void __init DisplayUint(UINT64 Val, INTN Width)
+{
+    CHAR16 PrintString[32], *end;
+
+    if (Width < 0)
+        end = FormatDec(Val, PrintString);
+    else
+    {
+        PrintStr(L"0x");
+        end = FormatHex(Val, Width, PrintString);
+    }
+    *end = 0;
+    PrintStr(PrintString);
+}
+
+static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
+{
+    CHAR16 *r = d;
+
+    while ( (*d++ = *s++) != 0 )
+        ;
+    return r;
+}
+
+static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
+{
+    while ( *s1 && *s1 == *s2 )
+    {
+        ++s1;
+        ++s2;
+    }
+    return *s1 - *s2;
+}
+
+static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
+{
+    while ( n && *s1 && *s1 == *s2 )
+    {
+        --n;
+        ++s1;
+        ++s2;
+    }
+    return n ? *s1 - *s2 : 0;
+}
+
+static CHAR16 *__init s2w(union string *str)
+{
+    const char *s = str->s;
+    CHAR16 *w;
+    void *ptr;
+
+    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
+                              &ptr) != EFI_SUCCESS )
+        return NULL;
+
+    w = str->w = ptr;
+    do {
+        *w = *s++;
+    } while ( *w++ );
+
+    return str->w;
+}
+
+static char *__init w2s(const union string *str)
+{
+    const CHAR16 *w = str->w;
+    char *s = str->s;
+
+    do {
+        if ( *w > 0x007f )
+            return NULL;
+        *s = *w++;
+    } while ( *s++ );
+
+    return str->s;
+}
+
+static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
+{
+    return guid1->Data1 == guid2->Data1 &&
+           guid1->Data2 == guid2->Data2 &&
+           guid1->Data3 == guid2->Data3 &&
+           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
+}
+
+static void __init noreturn blexit(const CHAR16 *str)
+{
+    if ( str )
+        PrintStr((CHAR16 *)str);
+    PrintStr(newline);
+
+    if ( cfg.addr )
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    if ( kernel.addr )
+        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
+    if ( ramdisk.addr )
+        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
+    if ( ucode.addr )
+        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
+    if ( xsm.addr )
+        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
+
+    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
+    unreachable(); /* not reached */
+}
+
+/* generic routine for printing error messages */
+static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
+{
+    StdOut = StdErr;
+    PrintErr((CHAR16 *)mesg);
+    PrintErr(L": ");
+
+    switch (ErrCode)
+    {
+    case EFI_NOT_FOUND:
+        mesg = L"Not found";
+        break;
+    case EFI_NO_MEDIA:
+        mesg = L"The device has no media";
+        break;
+    case EFI_MEDIA_CHANGED:
+        mesg = L"Media changed";
+        break;
+    case EFI_DEVICE_ERROR:
+        mesg = L"Device error";
+        break;
+    case EFI_VOLUME_CORRUPTED:
+        mesg = L"Volume corrupted";
+        break;
+    case EFI_ACCESS_DENIED:
+        mesg = L"Access denied";
+        break;
+    case EFI_OUT_OF_RESOURCES:
+        mesg = L"Out of resources";
+        break;
+    case EFI_VOLUME_FULL:
+        mesg = L"Volume is full";
+        break;
+    case EFI_SECURITY_VIOLATION:
+        mesg = L"Security violation";
+        break;
+    case EFI_CRC_ERROR:
+        mesg = L"CRC error";
+        break;
+    case EFI_COMPROMISED_DATA:
+        mesg = L"Compromised data";
+        break;
+    default:
+        PrintErr(L"ErrCode: ");
+        DisplayUint(ErrCode, 0);
+        mesg = NULL;
+        break;
+    }
+    blexit(mesg);
+}
+
+static void __init place_string(u32 *addr, const char *s)
+{
+    static char *__initdata alloc = start;
+
+    if ( s && *s )
+    {
+        size_t len1 = strlen(s) + 1;
+        const char *old = (char *)(long)*addr;
+        size_t len2 = *addr ? strlen(old) + 1 : 0;
+
+        alloc -= len1 + len2;
+        /*
+         * Insert new string before already existing one. This is needed
+         * for options passed on the command line to override options from
+         * the configuration file.
+         */
+        memcpy(alloc, s, len1);
+        if ( *addr )
+        {
+            alloc[len1 - 1] = ' ';
+            memcpy(alloc + len1, old, len2);
+        }
+    }
+    *addr = (long)alloc;
+}
+
+static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
+                                    CHAR16 *cmdline, UINTN cmdsize)
+{
+    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
+    bool_t prev_sep = TRUE;
+
+    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
+            cmdsize -= sizeof(*cmdline), ++cmdline )
+    {
+        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
+
+        if ( !prev_sep )
+        {
+            if ( cur_sep )
+                ++ptr;
+            else if ( argv )
+            {
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        else if ( !cur_sep )
+        {
+            if ( !argv )
+                ++argc;
+            else if ( prev && wstrcmp(prev, L"--") == 0 )
+            {
+                union string rest = { .w = cmdline };
+
+                --argv;
+                place_string(&mbi.cmdline, w2s(&rest));
+                break;
+            }
+            else
+            {
+                *argv++ = prev = ptr;
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        prev_sep = cur_sep;
+    }
+    if ( argv )
+        *argv = NULL;
+    return argc;
+}
+
+static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
+                                                CHAR16 **leaf)
+{
+    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
+    EFI_FILE_HANDLE dir_handle;
+    EFI_DEVICE_PATH *dp;
+    CHAR16 *pathend, *ptr;
+    EFI_STATUS ret;
+
+    do {
+        EFI_FILE_IO_INTERFACE *fio;
+
+        /* Get the file system interface. */
+        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
+                                     &fs_protocol, (void **)&fio);
+        if ( EFI_ERROR(ret) )
+            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
+                         ret);
+        ret = fio->OpenVolume(fio, &dir_handle);
+    } while ( ret == EFI_MEDIA_CHANGED );
+    if ( ret != EFI_SUCCESS )
+        PrintErrMesg(L"OpenVolume failure", ret);
+
+#define buffer ((CHAR16 *)keyhandler_scratch)
+#define BUFFERSIZE sizeof(keyhandler_scratch)
+    for ( dp = loaded_image->FilePath, *buffer = 0;
+          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
+          dp = (void *)dp + DevicePathNodeLength(dp) )
+    {
+        FILEPATH_DEVICE_PATH *fp;
+
+        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
+             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
+            blexit(L"Unsupported device path component");
+
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS )
+            {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+        fp = (void *)dp;
+        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
+                          sizeof(*dp) + sizeof(*buffer) )
+            blexit(L"Increase BUFFERSIZE");
+        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
+        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
+    }
+    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
+        if ( *ptr == L'\\' )
+            pathend = ptr;
+    if ( pathend )
+    {
+        *pathend = 0;
+        *leaf = pathend + 1;
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS ) {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+    }
+    else
+        *leaf = buffer;
+#undef BUFFERSIZE
+#undef buffer
+
+    return dir_handle;
+}
+
+static CHAR16 *__init point_tail(CHAR16 *fn)
+{
+    CHAR16 *tail = NULL;
+
+    for ( ; ; ++fn )
+        switch ( *fn )
+        {
+        case 0:
+            return tail;
+        case L'.':
+        case L'-':
+        case L'_':
+            tail = fn;
+            break;
+        }
+}
+
+static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
+                               struct file *file)
+{
+    EFI_FILE_HANDLE FileHandle = NULL;
+    UINT64 size;
+    EFI_STATUS ret;
+    CHAR16 *what = NULL;
+
+    if ( !name )
+        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
+    ret = dir_handle->Open(dir_handle, &FileHandle, name,
+                           EFI_FILE_MODE_READ, 0);
+    if ( file == &cfg && ret == EFI_NOT_FOUND )
+        return 0;
+    if ( EFI_ERROR(ret) )
+        what = L"Open";
+    else
+        ret = FileHandle->SetPosition(FileHandle, -1);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+        ret = FileHandle->GetPosition(FileHandle, &size);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Get size";
+    else
+        ret = FileHandle->SetPosition(FileHandle, 0);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+    {
+        file->addr = min(1UL << (32 + PAGE_SHIFT),
+                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
+        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                    PFN_UP(size), &file->addr);
+    }
+    if ( EFI_ERROR(ret) )
+    {
+        file->addr = 0;
+        what = what ?: L"Allocation";
+    }
+    else
+    {
+        if ( file != &cfg )
+        {
+            PrintStr(name);
+            PrintStr(L": ");
+            DisplayUint(file->addr, 2 * sizeof(file->addr));
+            PrintStr(L"-");
+            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
+            PrintStr(newline);
+            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
+            mb_modules[mbi.mods_count].mod_end = size;
+            ++mbi.mods_count;
+        }
+
+        file->size = size;
+        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
+        if ( !EFI_ERROR(ret) && file->size != size )
+            ret = EFI_ABORTED;
+        if ( EFI_ERROR(ret) )
+            what = L"Read";
+    }
+
+    if ( FileHandle )
+        FileHandle->Close(FileHandle);
+
+    if ( what )
+    {
+        PrintErr(what);
+        PrintErr(L" failed for ");
+        PrintErrMesg(name, ret);
+    }
+
+    return 1;
+}
+
+static void __init pre_parse(const struct file *cfg)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    bool_t start = 1, comment = 0;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        if ( iscntrl(*ptr) )
+        {
+            comment = 0;
+            start = 1;
+            *ptr = 0;
+        }
+        else if ( comment || (start && isspace(*ptr)) )
+            *ptr = 0;
+        else if ( *ptr == '#' || (start && *ptr == ';') )
+        {
+            comment = 1;
+            *ptr = 0;
+        }
+        else
+            start = 0;
+    }
+    if ( cfg->size && end[-1] )
+         PrintStr(L"No newline at end of config file,"
+                   " last line will be ignored.\r\n");
+}
+
+static char *__init get_value(const struct file *cfg, const char *section,
+                              const char *item)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
+    bool_t match = !slen;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        switch ( *ptr )
+        {
+        case 0:
+            continue;
+        case '[':
+            if ( !slen )
+                break;
+            if ( match )
+                return NULL;
+            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
+            break;
+        default:
+            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
+                return ptr + ilen + 1;
+            break;
+        }
+        ptr += strlen(ptr);
+    }
+    return NULL;
+}
+
+static void __init split_value(char *s)
+{
+    while ( *s && isspace(*s) )
+        ++s;
+    place_string(&mb_modules[mbi.mods_count].string, s);
+    while ( *s && !isspace(*s) )
+        ++s;
+    *s = 0;
+}
+
+static void __init edd_put_string(u8 *dst, size_t n, const char *src)
+{
+    while ( n-- && *src )
+       *dst++ = *src++;
+    if ( *src )
+       PrintErrMesg(L"Internal error populating EDD info",
+                    EFI_BUFFER_TOO_SMALL);
+    while ( n-- )
+       *dst++ = ' ';
+}
+#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
+
+static void __init setup_efi_pci(void)
+{
+    EFI_STATUS status;
+    EFI_HANDLE *handles;
+    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
+    UINTN i, nr_pci, size = 0;
+    struct efi_pci_rom *last = NULL;
+
+    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+
+    nr_pci = size / sizeof(*handles);
+    for ( i = 0; i < nr_pci; ++i )
+    {
+        EFI_PCI_IO *pci = NULL;
+        u64 attributes;
+        struct efi_pci_rom *rom, *va;
+        UINTN segment, bus, device, function;
+
+        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
+        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
+            continue;
+
+        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
+                                 &attributes);
+        if ( EFI_ERROR(status) ||
+             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
+             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
+                       &function)) )
+            continue;
+
+        DisplayUint(segment, 4);
+        PrintStr(L":");
+        DisplayUint(bus, 2);
+        PrintStr(L":");
+        DisplayUint(device, 2);
+        PrintStr(L".");
+        DisplayUint(function, 1);
+        PrintStr(L": ROM: ");
+        DisplayUint(pci->RomSize, 0);
+        PrintStr(L" bytes at ");
+        DisplayUint((UINTN)pci->RomImage, 0);
+        PrintStr(newline);
+
+        size = pci->RomSize + sizeof(*rom);
+        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
+                                      (void **)&rom);
+        if ( EFI_ERROR(status) )
+            continue;
+
+        rom->next = NULL;
+        rom->size = pci->RomSize;
+
+        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
+                               &rom->vendor);
+        if ( !EFI_ERROR(status) )
+            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
+                                   &rom->devid);
+        if ( EFI_ERROR(status) )
+        {
+            efi_bs->FreePool(rom);
+            continue;
+        }
+
+        rom->segment = segment;
+        rom->bus = bus;
+        rom->devfn = (device << 3) | function;
+        memcpy(rom->data, pci->RomImage, pci->RomSize);
+
+        va = (void *)rom + DIRECTMAP_VIRT_START;
+        if ( last )
+            last->next = va;
+        else
+            efi_pci_roms = va;
+        last = rom;
+    }
+
+    efi_bs->FreePool(handles);
+}
+
+static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
+{
+   if ( bpp < 0 )
+       return bpp;
+   if ( !mask )
+       return -EINVAL;
+   for ( *pos = 0; !(mask & 1); ++*pos )
+       mask >>= 1;
+   for ( *sz = 0; mask & 1; ++sz)
+       mask >>= 1;
+   if ( mask )
+       return -EINVAL;
+   return max(*pos + *sz, bpp);
+}
+
+extern const intpte_t __page_tables_start[], __page_tables_end[];
+#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
+                           (intpte_t *)(v) < __page_tables_end)
+
+#define PE_BASE_RELOC_ABS      0
+#define PE_BASE_RELOC_HIGHLOW  3
+#define PE_BASE_RELOC_DIR64   10
+
+extern const struct pe_base_relocs {
+    u32 rva;
+    u32 size;
+    u16 entries[];
+} __base_relocs_start[], __base_relocs_end[];
+
+static void __init relocate_image(unsigned long delta)
+{
+    const struct pe_base_relocs *base_relocs;
+
+    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
+    {
+        unsigned int i, n;
+
+        n = (base_relocs->size - sizeof(*base_relocs)) /
+            sizeof(*base_relocs->entries);
+        for ( i = 0; i < n; ++i )
+        {
+            unsigned long addr = xen_phys_start + base_relocs->rva +
+                                 (base_relocs->entries[i] & 0xfff);
+
+            switch ( base_relocs->entries[i] >> 12 )
+            {
+            case PE_BASE_RELOC_ABS:
+                break;
+            case PE_BASE_RELOC_HIGHLOW:
+                if ( delta )
+                {
+                    *(u32 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(u32 *)addr += xen_phys_start;
+                }
+                break;
+            case PE_BASE_RELOC_DIR64:
+                if ( delta )
+                {
+                    *(u64 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(intpte_t *)addr += xen_phys_start;
+                }
+                break;
+            default:
+                blexit(L"Unsupported relocation type");
+            }
+        }
+        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
+    }
+}
+
+extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
+
+static void __init relocate_trampoline(unsigned long phys)
+{
+    const s32 *trampoline_ptr;
+
+    trampoline_phys = phys;
+    /* Apply relocations to trampoline. */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
+
+void EFIAPI __init noreturn
+efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
+{
+    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
+    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
+    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
+    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
+    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
+    EFI_LOADED_IMAGE *loaded_image;
+    EFI_STATUS status;
+    unsigned int i, argc;
+    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
+    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
+    EFI_HANDLE *handles = NULL;
+    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
+    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
+    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
+    EFI_FILE_HANDLE dir_handle;
+    union string section = { NULL }, name;
+    struct e820entry *e;
+    u64 efer;
+    bool_t base_video = 0;
+
+    efi_ih = ImageHandle;
+    efi_bs = SystemTable->BootServices;
+    efi_rs = SystemTable->RuntimeServices;
+    efi_ct = SystemTable->ConfigurationTable;
+    efi_num_ct = SystemTable->NumberOfTableEntries;
+    efi_version = SystemTable->Hdr.Revision;
+    efi_fw_vendor = SystemTable->FirmwareVendor;
+    efi_fw_revision = SystemTable->FirmwareRevision;
+
+    StdOut = SystemTable->ConOut;
+    StdErr = SystemTable->StdErr ?: StdOut;
+
+    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
+                                    (void **)&loaded_image);
+    if ( status != EFI_SUCCESS )
+        PrintErrMesg(L"No Loaded Image Protocol", status);
+
+    xen_phys_start = (UINTN)loaded_image->ImageBase;
+    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
+        blexit(L"Xen must be loaded below 4Gb.");
+    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
+        blexit(L"Xen must be loaded at a 2Mb boundary.");
+    trampoline_xen_phys_start = xen_phys_start;
+
+    /* Get the file system interface. */
+    dir_handle = get_parent_handle(loaded_image, &file_name);
+
+    argc = get_argv(0, NULL, loaded_image->LoadOptions,
+                    loaded_image->LoadOptionsSize);
+    if ( argc > 0 &&
+         efi_bs->AllocatePool(EfiLoaderData,
+                              (argc + 1) * sizeof(*argv) +
+                                  loaded_image->LoadOptionsSize,
+                              (void **)&argv) == EFI_SUCCESS )
+        get_argv(argc, argv, loaded_image->LoadOptions,
+                 loaded_image->LoadOptionsSize);
+    else
+        argc = 0;
+    for ( i = 1; i < argc; ++i )
+    {
+        CHAR16 *ptr = argv[i];
+
+        if ( !ptr )
+            break;
+        if ( *ptr == L'/' || *ptr == L'-' )
+        {
+            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
+                base_video = 1;
+            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
+                cfg_file_name = ptr + 5;
+            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
+                cfg_file_name = argv[++i];
+            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
+                      (ptr[1] == L'?' && !ptr[2]) )
+            {
+                PrintStr(L"Xen EFI Loader options:\r\n");
+                PrintStr(L"-basevideo   retain current video mode\r\n");
+                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
+                PrintStr(L"-help, -?    display this help\r\n");
+                blexit(NULL);
+            }
+            else
+            {
+                PrintStr(L"WARNING: Unknown command line option '");
+                PrintStr(ptr);
+                PrintStr(L"' ignored\r\n");
+            }
+        }
+        else
+            section.w = ptr;
+    }
+
+    if ( !base_video )
+    {
+        unsigned int best;
+
+        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
+              i < StdOut->Mode->MaxMode; ++i )
+        {
+            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
+                 cols * rows > size )
+            {
+                size = cols * rows;
+                best = i;
+            }
+        }
+        if ( best != StdOut->Mode->Mode )
+            StdOut->SetMode(StdOut, best);
+    }
+
+    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
+             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
+
+    relocate_image(0);
+
+    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
+                           &cols, &rows) == EFI_SUCCESS )
+    {
+        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
+        vga_console_info.u.text_mode_3.columns = cols;
+        vga_console_info.u.text_mode_3.rows = rows;
+        vga_console_info.u.text_mode_3.font_height = 16;
+    }
+
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
+        if ( EFI_ERROR(status) )
+            continue;
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            break;
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( EFI_ERROR(status) )
+        gop = NULL;
+
+    /* Read and parse the config file. */
+    if ( !cfg_file_name )
+    {
+        CHAR16 *tail;
+
+        while ( (tail = point_tail(file_name)) != NULL )
+        {
+            wstrcpy(tail, L".cfg");
+            if ( read_file(dir_handle, file_name, &cfg) )
+                break;
+            *tail = 0;
+        }
+        if ( !tail )
+            blexit(L"No configuration file found.");
+        PrintStr(L"Using configuration file '");
+        PrintStr(file_name);
+        PrintStr(L"'\r\n");
+    }
+    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
+        blexit(L"Configuration file not found.");
+    pre_parse(&cfg);
+
+    if ( section.w )
+        w2s(&section);
+    else
+        section.s = get_value(&cfg, "global", "default");
+
+    for ( ; ; )
+    {
+        name.s = get_value(&cfg, section.s, "kernel");
+        if ( name.s )
+            break;
+        name.s = get_value(&cfg, "global", "chain");
+        if ( !name.s )
+            break;
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+        cfg.addr = 0;
+        if ( !read_file(dir_handle, s2w(&name), &cfg) )
+        {
+            PrintStr(L"Chained configuration file '");
+            PrintStr(name.w);
+            efi_bs->FreePool(name.w);
+            blexit(L"'not found.");
+        }
+        pre_parse(&cfg);
+        efi_bs->FreePool(name.w);
+    }
+    if ( !name.s )
+        blexit(L"No Dom0 kernel image specified.");
+    split_value(name.s);
+    read_file(dir_handle, s2w(&name), &kernel);
+    efi_bs->FreePool(name.w);
+
+    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
+                    (void **)&shim_lock)) &&
+         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
+        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
+
+    name.s = get_value(&cfg, section.s, "ramdisk");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ramdisk);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "ucode");
+    if ( !name.s )
+        name.s = get_value(&cfg, "global", "ucode");
+    if ( name.s )
+    {
+        microcode_set_module(mbi.mods_count);
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ucode);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "xsm");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &xsm);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "options");
+    if ( name.s )
+        place_string(&mbi.cmdline, name.s);
+    /* Insert image name last, as it gets prefixed to the other options. */
+    if ( argc )
+    {
+        name.w = *argv;
+        w2s(&name);
+    }
+    else
+        name.s = "xen";
+    place_string(&mbi.cmdline, name.s);
+
+    cols = rows = depth = 0;
+    if ( !base_video )
+    {
+        name.cs = get_value(&cfg, section.s, "video");
+        if ( !name.cs )
+            name.cs = get_value(&cfg, "global", "video");
+        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
+        {
+            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs )
+                cols = rows = depth = 0;
+        }
+    }
+
+    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    cfg.addr = 0;
+
+    dir_handle->Close(dir_handle);
+
+    if ( gop && !base_video )
+    {
+        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
+        {
+            unsigned int bpp = 0;
+
+            status = gop->QueryMode(gop, i, &info_size, &mode_info);
+            if ( EFI_ERROR(status) )
+                continue;
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelBitMask:
+                bpp = hweight32(mode_info->PixelInformation.RedMask |
+                                mode_info->PixelInformation.GreenMask |
+                                mode_info->PixelInformation.BlueMask);
+                break;
+            case PixelRedGreenBlueReserved8BitPerColor:
+            case PixelBlueGreenRedReserved8BitPerColor:
+                bpp = 24;
+                break;
+            default:
+                continue;
+            }
+            if ( cols == mode_info->HorizontalResolution &&
+                 rows == mode_info->VerticalResolution &&
+                 (!depth || bpp == depth) )
+            {
+                gop_mode = i;
+                break;
+            }
+            if ( !cols && !rows &&
+                 mode_info->HorizontalResolution *
+                 mode_info->VerticalResolution > size )
+            {
+                size = mode_info->HorizontalResolution *
+                       mode_info->VerticalResolution;
+                gop_mode = i;
+            }
+        }
+    }
+
+    if ( mbi.cmdline )
+        mbi.flags |= MBI_CMDLINE;
+    /*
+     * These must not be initialized statically, since the value must
+     * not get relocated when processing base relocations below.
+     */
+    mbi.boot_loader_name = (long)"EFI";
+    mbi.mods_addr = (long)mb_modules;
+
+    place_string(&mbi.mem_upper, NULL);
+
+    /* Collect EDD info. */
+    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
+    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        EFI_BLOCK_IO *bio;
+        EFI_DEV_PATH_PTR devp;
+        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
+        struct edd_device_params *params = &info->edd_device_params;
+        enum { root, acpi, pci, ctrlr } state = root;
+
+        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
+        if ( EFI_ERROR(status) ||
+             bio->Media->RemovableMedia ||
+             bio->Media->LogicalPartition )
+            continue;
+        if ( boot_edd_info_nr < EDD_INFO_MAX )
+        {
+            info->device = 0x80 + boot_edd_info_nr; /* fake */
+            info->version = 0x11;
+            params->length = offsetof(struct edd_device_params, dpte_ptr);
+            params->number_of_sectors = bio->Media->LastBlock + 1;
+            params->bytes_per_sector = bio->Media->BlockSize;
+            params->dpte_ptr = ~0;
+        }
+        ++boot_edd_info_nr;
+        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
+                                        (void **)&devp);
+        if ( EFI_ERROR(status) )
+            continue;
+        for ( ; !IsDevicePathEnd(devp.DevPath);
+              devp.DevPath = NextDevicePathNode(devp.DevPath) )
+        {
+            switch ( DevicePathType(devp.DevPath) )
+            {
+                const u8 *p;
+
+            case ACPI_DEVICE_PATH:
+                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case ACPI_DP:
+                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
+                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
+                        break;
+                    params->interface_path.pci.bus = devp.Acpi->UID;
+                    state = acpi;
+                    break;
+                case EXPANDED_ACPI_DP:
+                    /* XXX */
+                    break;
+                }
+                break;
+            case HARDWARE_DEVICE_PATH:
+                if ( state != acpi ||
+                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
+                     boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = pci;
+                edd_put_string(params->host_bus_type, "PCI");
+                params->interface_path.pci.slot = devp.Pci->Device;
+                params->interface_path.pci.function = devp.Pci->Function;
+                break;
+            case MESSAGING_DEVICE_PATH:
+                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = ctrlr;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case MSG_ATAPI_DP:
+                    edd_put_string(params->interface_type, "ATAPI");
+                    params->interface_path.pci.channel =
+                        devp.Atapi->PrimarySecondary;
+                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
+                    params->device_path.atapi.lun = devp.Atapi->Lun;
+                    break;
+                case MSG_SCSI_DP:
+                    edd_put_string(params->interface_type, "SCSI");
+                    params->device_path.scsi.id = devp.Scsi->Pun;
+                    params->device_path.scsi.lun = devp.Scsi->Lun;
+                    break;
+                case MSG_FIBRECHANNEL_DP:
+                    edd_put_string(params->interface_type, "FIBRE");
+                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
+                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
+                    break;
+                case MSG_1394_DP:
+                    edd_put_string(params->interface_type, "1394");
+                    params->device_path.i1394.eui = devp.F1394->Guid;
+                    break;
+                case MSG_USB_DP:
+                case MSG_USB_CLASS_DP:
+                    edd_put_string(params->interface_type, "USB");
+                    break;
+                case MSG_I2O_DP:
+                    edd_put_string(params->interface_type, "I2O");
+                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
+                    break;
+                default:
+                    continue;
+                }
+                info->version = 0x30;
+                params->length = sizeof(struct edd_device_params);
+                params->key = 0xbedd;
+                params->device_path_info_length =
+                    sizeof(struct edd_device_params) -
+                    offsetof(struct edd_device_params, key);
+                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
+                    params->checksum -= *p;
+                break;
+            case MEDIA_DEVICE_PATH:
+                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
+                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
+                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
+                {
+                    struct mbr_signature *sig = boot_mbr_signature +
+                                                boot_mbr_signature_nr;
+
+                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
+                    memcpy(&sig->signature, devp.HardDrive->Signature,
+                           sizeof(sig->signature));
+                    ++boot_mbr_signature_nr;
+                }
+                break;
+            }
+        }
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( boot_edd_info_nr > EDD_INFO_MAX )
+        boot_edd_info_nr = EDD_INFO_MAX;
+
+    /* XXX Collect EDID info. */
+
+    if ( cpuid_eax(0x80000000) > 0x80000000 )
+    {
+        cpuid_ext_features = cpuid_edx(0x80000001);
+        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
+    }
+
+    /* Obtain basic table pointers. */
+    for ( i = 0; i < efi_num_ct; ++i )
+    {
+        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
+        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
+        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
+        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
+
+        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi20 = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
+	       efi.mps = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
+	       efi.smbios = (long)efi_ct[i].VendorTable;
+    }
+
+    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
+        dmi_efi_get_table((void *)(long)efi.smbios);
+
+    /* Collect PCI ROM contents. */
+    setup_efi_pci();
+
+    /* Get snapshot of variable store parameters. */
+    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
+             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
+                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
+                                       EFI_VARIABLE_RUNTIME_ACCESS,
+                                       &efi_boot_max_var_store_size,
+                                       &efi_boot_remain_var_store_size,
+                                       &efi_boot_max_var_size) :
+             EFI_INCOMPATIBLE_VERSION;
+    if ( EFI_ERROR(status) )
+    {
+        efi_boot_max_var_store_size = 0;
+        efi_boot_remain_var_store_size = 0;
+        efi_boot_max_var_size = status;
+        PrintStr(L"Warning: Could not query variable store: ");
+        DisplayUint(status, 0);
+        PrintStr(newline);
+    }
+
+    /* Allocate space for trampoline (in first Mb). */
+    cfg.addr = 0x100000;
+    cfg.size = trampoline_end - trampoline_start;
+    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                   PFN_UP(cfg.size), &cfg.addr);
+    if ( status == EFI_SUCCESS )
+        relocate_trampoline(cfg.addr);
+    else
+    {
+        cfg.addr = 0;
+        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
+    }
+
+    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
+    for ( i = 0; i < 8; ++i )
+    {
+        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
+        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
+
+        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
+        slot &= L2_PAGETABLE_ENTRIES - 1;
+        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
+    }
+    /* Initialise L3 boot-map page directory entries. */
+    l3_bootmap[l3_table_offset(xen_phys_start)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+
+    if ( gop )
+    {
+        int bpp = 0;
+
+        /* Set graphics mode. */
+        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
+            gop->SetMode(gop, gop_mode);
+
+        /* Get graphics and frame buffer info. */
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelRedGreenBlueReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 0;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 16;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBlueGreenRedReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 16;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 0;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBitMask:
+                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.red_pos,
+                                &vga_console_info.u.vesa_lfb.red_size);
+                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
+                                &vga_console_info.u.vesa_lfb.green_pos,
+                                &vga_console_info.u.vesa_lfb.green_size);
+                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
+                                &vga_console_info.u.vesa_lfb.blue_pos,
+                                &vga_console_info.u.vesa_lfb.blue_size);
+                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.rsvd_pos,
+                                &vga_console_info.u.vesa_lfb.rsvd_size);
+                if ( bpp > 0 )
+                    break;
+                /* fall through */
+            default:
+                PrintErr(L"Current graphics mode is unsupported!\r\n");
+                status = EFI_UNSUPPORTED;
+                break;
+            }
+        if ( !EFI_ERROR(status) )
+        {
+            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
+            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
+            vga_console_info.u.vesa_lfb.width =
+                mode_info->HorizontalResolution;
+            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
+            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
+            vga_console_info.u.vesa_lfb.bytes_per_line =
+                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
+            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
+            vga_console_info.u.vesa_lfb.lfb_size =
+                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
+        }
+    }
+
+    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
+                         &efi_mdesc_size, &mdesc_ver);
+    mbi.mem_upper -= efi_memmap_size;
+    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
+    if ( mbi.mem_upper < xen_phys_start )
+        blexit(L"Out of static memory");
+    efi_memmap = (void *)(long)mbi.mem_upper;
+    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
+                                  &efi_mdesc_size, &mdesc_ver);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot obtain memory map", status);
+
+    /* Populate E820 table and check trampoline area availability. */
+    e = e820map - 1;
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        u32 type;
+
+        switch ( desc->Type )
+        {
+        default:
+            type = E820_RESERVED;
+            break;
+        case EfiConventionalMemory:
+        case EfiBootServicesCode:
+        case EfiBootServicesData:
+            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
+                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
+                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
+            /* fall through */
+        case EfiLoaderCode:
+        case EfiLoaderData:
+            if ( desc->Attribute & EFI_MEMORY_WB )
+                type = E820_RAM;
+            else
+        case EfiUnusableMemory:
+                type = E820_UNUSABLE;
+            break;
+        case EfiACPIReclaimMemory:
+            type = E820_ACPI;
+            break;
+        case EfiACPIMemoryNVS:
+            type = E820_NVS;
+            break;
+        }
+        if ( e820nr && type == e->type &&
+             desc->PhysicalStart == e->addr + e->size )
+            e->size += len;
+        else if ( !len || e820nr >= E820MAX )
+            continue;
+        else
+        {
+            ++e;
+            e->addr = desc->PhysicalStart;
+            e->size = len;
+            e->type = type;
+            ++e820nr;
+        }
+    }
+    if ( !trampoline_phys )
+    {
+        if ( !cfg.addr )
+            blexit(L"No memory for trampoline");
+        relocate_trampoline(cfg.addr);
+    }
+
+    status = efi_bs->ExitBootServices(ImageHandle, map_key);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot exit boot services", status);
+
+    /* Adjust pointers into EFI. */
+    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
+#endif
+    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
+    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
+
+    relocate_image(__XEN_VIRT_START - xen_phys_start);
+    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
+
+    /* Set system registers and transfer control. */
+    asm volatile("pushq $0\n\tpopfq");
+    rdmsrl(MSR_EFER, efer);
+    efer |= EFER_SCE;
+    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
+        efer |= EFER_NX;
+    wrmsrl(MSR_EFER, efer);
+    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
+              X86_CR0_AM | X86_CR0_PG);
+    asm volatile ( "mov    %[cr4], %%cr4\n\t"
+                   "mov    %[cr3], %%cr3\n\t"
+                   "movabs $__start_xen, %[rip]\n\t"
+                   "lgdt   gdt_descr(%%rip)\n\t"
+                   "mov    stack_start(%%rip), %%rsp\n\t"
+                   "mov    %[ds], %%ss\n\t"
+                   "mov    %[ds], %%ds\n\t"
+                   "mov    %[ds], %%es\n\t"
+                   "mov    %[ds], %%fs\n\t"
+                   "mov    %[ds], %%gs\n\t"
+                   "movl   %[cs], 8(%%rsp)\n\t"
+                   "mov    %[rip], (%%rsp)\n\t"
+                   "lretq  %[stkoff]-16"
+                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
+                   : [cr3] "r" (idle_pg_table),
+                     [cr4] "r" (mmu_cr4_features),
+                     [cs] "ir" (__HYPERVISOR_CS),
+                     [ds] "r" (__HYPERVISOR_DS),
+                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
+                     "D" (&mbi)
+                   : "memory" );
+    for( ; ; ); /* not reached */
+}
+
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+static __init void copy_mapping(unsigned long mfn, unsigned long end,
+                                bool_t (*is_valid)(unsigned long smfn,
+                                                   unsigned long emfn))
+{
+    unsigned long next;
+
+    for ( ; mfn < end; mfn = next )
+    {
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
+        l3_pgentry_t *l3src, *l3dst;
+        unsigned long va = (unsigned long)mfn_to_virt(mfn);
+
+        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
+        if ( !is_valid(mfn, min(next, end)) )
+            continue;
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            l3dst = alloc_xen_pagetable();
+            BUG_ON(!l3dst);
+            clear_page(l3dst);
+            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
+                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
+        }
+        else
+            l3dst = l4e_to_l3e(l4e);
+        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
+        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
+    }
+}
+
+static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
+
+    return !(smfn & pfn_hole_mask) &&
+           find_next_bit(pdx_group_valid, sz,
+                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
+}
+
+static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    return 1;
+}
+#endif
+
+#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
+                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
+
+void __init efi_init_memory(void)
+{
+    unsigned int i;
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+    struct rt_extra {
+        struct rt_extra *next;
+        unsigned long smfn, emfn;
+        unsigned int prot;
+    } *extra, *extra_head = NULL;
+#endif
+
+    printk(XENLOG_INFO "EFI memory map:\n");
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        unsigned long smfn, emfn;
+        unsigned int prot = PAGE_HYPERVISOR;
+
+        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
+                           " type=%u attr=%016" PRIx64 "\n",
+               desc->PhysicalStart, desc->PhysicalStart + len - 1,
+               desc->Type, desc->Attribute);
+
+        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
+            continue;
+
+        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
+
+        smfn = PFN_DOWN(desc->PhysicalStart);
+        emfn = PFN_UP(desc->PhysicalStart + len);
+
+        if ( desc->Attribute & EFI_MEMORY_WB )
+            /* nothing */;
+        else if ( desc->Attribute & EFI_MEMORY_WT )
+            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & EFI_MEMORY_WC )
+            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
+            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
+        else
+        {
+            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+            continue;
+        }
+
+        if ( desc->Attribute & EFI_MEMORY_WP )
+            prot &= _PAGE_RW;
+        if ( desc->Attribute & EFI_MEMORY_XP )
+            prot |= _PAGE_NX_BIT;
+
+        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
+             !(smfn & pfn_hole_mask) &&
+             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
+        {
+            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
+                prot &= ~_PAGE_GLOBAL;
+            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
+                                  smfn, emfn - smfn, prot) == 0 )
+                desc->VirtualStart =
+                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
+            else
+                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
+                       smfn, emfn - 1);
+        }
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
+                  (extra = xmalloc(struct rt_extra)) != NULL )
+        {
+            extra->smfn = smfn;
+            extra->emfn = emfn;
+            extra->prot = prot & ~_PAGE_GLOBAL;
+            extra->next = extra_head;
+            extra_head = extra;
+            desc->VirtualStart = desc->PhysicalStart;
+        }
+#endif
+        else
+        {
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+            /* XXX allocate e.g. down from FIXADDR_START */
+#endif
+            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+        }
+    }
+
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
+                                 mdesc_ver, efi_memmap);
+#else
+    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
+    efi_l4_pgtable = alloc_xen_pagetable();
+    BUG_ON(!efi_l4_pgtable);
+    clear_page(efi_l4_pgtable);
+
+    copy_mapping(0, max_page, ram_range_valid);
+
+    /* Insert non-RAM runtime mappings inside the direct map. */
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+
+        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
+             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
+             desc->VirtualStart != desc->PhysicalStart )
+            copy_mapping(PFN_DOWN(desc->PhysicalStart),
+                         PFN_UP(desc->PhysicalStart +
+                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
+                         rt_range_valid);
+    }
+
+    /* Insert non-RAM runtime mappings outside of the direct map. */
+    while ( (extra = extra_head) != NULL )
+    {
+        unsigned long addr = extra->smfn << PAGE_SHIFT;
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
+        l3_pgentry_t *pl3e;
+        l2_pgentry_t *pl2e;
+        l1_pgentry_t *l1t;
+
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            pl3e = alloc_xen_pagetable();
+            BUG_ON(!pl3e);
+            clear_page(pl3e);
+            efi_l4_pgtable[l4_table_offset(addr)] =
+                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
+        }
+        else
+            pl3e = l4e_to_l3e(l4e);
+        pl3e += l3_table_offset(addr);
+        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
+        {
+            pl2e = alloc_xen_pagetable();
+            BUG_ON(!pl2e);
+            clear_page(pl2e);
+            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
+            pl2e = l3e_to_l2e(*pl3e);
+        }
+        pl2e += l2_table_offset(addr);
+        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
+        {
+            l1t = alloc_xen_pagetable();
+            BUG_ON(!l1t);
+            clear_page(l1t);
+            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
+            l1t = l2e_to_l1e(*pl2e);
+        }
+        for ( i = l1_table_offset(addr);
+              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
+              ++i, ++extra->smfn )
+            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
+
+        if ( extra->smfn == extra->emfn )
+        {
+            extra_head = extra->next;
+            xfree(extra);
+        }
+    }
+
+    /* Insert Xen mappings. */
+    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
+          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
+        efi_l4_pgtable[i] = idle_pg_table[i];
+#endif
+}
diff --git a/xen/common/efi/check.c b/xen/common/efi/check.c
new file mode 100644
index 0000000..7fedd5a
--- /dev/null
+++ b/xen/common/efi/check.c
@@ -0,0 +1,4 @@
+int __attribute__((__ms_abi__)) test(int i)
+{
+    return i;
+}
diff --git a/xen/common/efi/dummy.c b/xen/common/efi/dummy.c
new file mode 100644
index 0000000..5b4047a
--- /dev/null
+++ b/xen/common/efi/dummy.c
@@ -0,0 +1 @@
+ int dummy(void){return 1;}
diff --git a/xen/common/efi/efi.h b/xen/common/efi/efi.h
new file mode 100644
index 0000000..a80d5f1
--- /dev/null
+++ b/xen/common/efi/efi.h
@@ -0,0 +1,39 @@
+#include <asm/efibind.h>
+#include <efi/efidef.h>
+#include <efi/efierr.h>
+#include <efi/eficon.h>
+#include <efi/efidevp.h>
+#include <efi/eficapsule.h>
+#include <efi/efiapi.h>
+#include <xen/efi.h>
+#include <xen/spinlock.h>
+#include <asm/page.h>
+
+struct efi_pci_rom {
+    const struct efi_pci_rom *next;
+    u16 vendor, devid, segment;
+    u8 bus, devfn;
+    unsigned long size;
+    unsigned char data[];
+};
+
+extern unsigned int efi_num_ct;
+extern EFI_CONFIGURATION_TABLE *efi_ct;
+
+extern unsigned int efi_version, efi_fw_revision;
+extern const CHAR16 *efi_fw_vendor;
+
+extern EFI_RUNTIME_SERVICES *efi_rs;
+
+extern UINTN efi_memmap_size, efi_mdesc_size;
+extern void *efi_memmap;
+
+extern l4_pgentry_t *efi_l4_pgtable;
+
+extern const struct efi_pci_rom *efi_pci_roms;
+
+extern UINT64 efi_boot_max_var_store_size, efi_boot_remain_var_store_size,
+              efi_boot_max_var_size;
+
+unsigned long efi_rs_enter(void);
+void efi_rs_leave(unsigned long);
diff --git a/xen/include/asm-x86/efi.h b/xen/include/asm-x86/efi.h
new file mode 100644
index 0000000..a80d5f1
--- /dev/null
+++ b/xen/include/asm-x86/efi.h
@@ -0,0 +1,39 @@
+#include <asm/efibind.h>
+#include <efi/efidef.h>
+#include <efi/efierr.h>
+#include <efi/eficon.h>
+#include <efi/efidevp.h>
+#include <efi/eficapsule.h>
+#include <efi/efiapi.h>
+#include <xen/efi.h>
+#include <xen/spinlock.h>
+#include <asm/page.h>
+
+struct efi_pci_rom {
+    const struct efi_pci_rom *next;
+    u16 vendor, devid, segment;
+    u8 bus, devfn;
+    unsigned long size;
+    unsigned char data[];
+};
+
+extern unsigned int efi_num_ct;
+extern EFI_CONFIGURATION_TABLE *efi_ct;
+
+extern unsigned int efi_version, efi_fw_revision;
+extern const CHAR16 *efi_fw_vendor;
+
+extern EFI_RUNTIME_SERVICES *efi_rs;
+
+extern UINTN efi_memmap_size, efi_mdesc_size;
+extern void *efi_memmap;
+
+extern l4_pgentry_t *efi_l4_pgtable;
+
+extern const struct efi_pci_rom *efi_pci_roms;
+
+extern UINT64 efi_boot_max_var_store_size, efi_boot_remain_var_store_size,
+              efi_boot_max_var_size;
+
+unsigned long efi_rs_enter(void);
+void efi_rs_leave(unsigned long);
-- 
2.1.0.rc1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Tue Sep 09 02:28:43 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Sep 2014 02:28:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRBAY-0004ck-SD; Tue, 09 Sep 2014 02:28:34 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <mdontu@bitdefender.com>) id 1XRBAW-0004cf-JO
	for xen-devel@lists.xensource.com; Tue, 09 Sep 2014 02:28:33 +0000
Received: from [85.158.143.35:35524] by server-2.bemta-4.messagelabs.com id
	32/8D-04525-FC56E045; Tue, 09 Sep 2014 02:28:31 +0000
X-Env-Sender: mdontu@bitdefender.com
X-Msg-Ref: server-11.tower-21.messagelabs.com!1410229707!12419614!1
X-Originating-IP: [91.199.104.161]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4294 invoked from network); 9 Sep 2014 02:28:27 -0000
Received: from mx01.buh.bitdefender.com (HELO mx.bitdefender.com)
	(91.199.104.161)
	by server-11.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 9 Sep 2014 02:28:27 -0000
Comment: DomainKeys? See http://domainkeys.sourceforge.net/
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=bitdefender.com;
	b=ZM2Z50qfvFEClp5SpE6KdYEkpcumy21n2ObELQsTz3sjqAzvPStpHcBpVttELuxkofrBsccgmbqyZLtY+8TGqbSZGPEQNXMGcs0giIAkmtCbEfeYqRgdIuYqASZGrctenH+80umuO2OviPvOvoBXsViVZG3eSZHOX0xHPqpf6MHievZI0C3Pgo2rXUx2m0J71ESkNlJJxCosa+0AnG76hnv2Ju0jTh+CpO1H2a7qnf9uxN0B3KNnRodeG8LDZkQE5B7/sfR/VT+bQLG/igsubcqO3aF85XYa+TH0W2OMklPVLNEE/t/v2AlC5q4DQ0bf73cos8h6oxF4mLBXKRBqZQ==;
	h=Received:Received:Received:Received:Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding:X-BitDefender-Scanner:X-BitDefender-Spam:X-BitDefender-SpamStamp:X-BitDefender-CF-Stamp;
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=bitdefender.com; h=from:to
	:cc:subject:date:message-id:in-reply-to:references:mime-version
	:content-type:content-transfer-encoding; s=default; bh=py5l70KI0
	NaF6CoS9n/PILg3r7U=; b=At0cEa5ZRcAO/Oc2OY9GMOcA2EGkPaNgdHX7neB1t
	98dqecnI0eiE8+PrRj452gxBA+CzVazsBtmbY1uE0iRud8l5AHwp4XikST2qt1if
	DdK8+Lp5yGqypcHRKPURGwNRNLcSzBqjkpUP5CsLXNmshMcgMI0Qk3gIi4pc9eKO
	xixJQa83sq2f+7+zZDRP54v1FCEESxjyAmGw3e4CIEnaX1GfnbdIsFYqvLf3FDzG
	/eMksdbWV5DDRjsrqXELiUbpI7lrqDTGurRrOEwP7arg+bgw89tw0UK/SMEluA9e
	ztoSfZDH5ExqBdhnITCwLazZdpjzlAgjayKUN05A2j72Q==
Received: (qmail 18907 invoked from network); 9 Sep 2014 05:28:26 +0300
Received: from unknown (HELO mx-sr.buh.bitdefender.com) (10.17.80.103)
	by mx.bitdefender.com with AES256-GCM-SHA384 encrypted SMTP;
	9 Sep 2014 05:28:26 +0300
Received: from smtp03.buh.bitdefender.org (smtp.bitdefender.biz [10.17.80.77])
	by mx-sr.buh.bitdefender.com (Postfix) with ESMTP id 5A11D80066
	for <xen-devel@lists.xensource.com>;
	Tue,  9 Sep 2014 05:28:26 +0300 (EEST)
Received: (qmail 1779 invoked from network); 9 Sep 2014 05:28:26 +0300
Received: from unknown (HELO orange.dsd.bitdefender.biz)
	(mdontu@bitdefender.com@91.199.104.6)
	by smtp03.buh.bitdefender.org with SMTP; 9 Sep 2014 05:28:24 +0300
From: =?UTF-8?q?Mihai=20Don=C8=9Bu?= <mdontu@bitdefender.com>
To: xen-devel@lists.xensource.com
Date: Tue,  9 Sep 2014 05:28:02 +0300
Message-Id: <1410229682-13912-1-git-send-email-mdontu@bitdefender.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <20140909052241.6e6cf6b7@bitdefender.com>
References: <20140909052241.6e6cf6b7@bitdefender.com>
MIME-Version: 1.0
Content-Length:102374
X-BitDefender-Scanner: Clean, Agent: BitDefender qmail 3.1.4 on
	smtp03.buh.bitdefender.org, sigver: 7.56745
X-BitDefender-Spam: No (0)
X-BitDefender-SpamStamp: Build: [Engines: 2.15.3.18020, Dats: 365858,
	Stamp: 3], Multi: [Enabled], BW: [Enabled], RBL DNSBL: [Disabled],
	APM: [Enabled, Score: 500, Flags: 32DF6656; NN_LENGTH;
	NN_LEGIT_NET_SHARE; NN_LEGIT_SUMM_400_WORDS; NN_NO_LINK_NMD;
	NN_LEGIT_BITDEFENDER; NN_LEGIT_S_SQARE_BRACKETS;
	NN_LEGIT_MAILING_LIST_TO], SGN: [Enabled], URL: [Enabled], URI DNSBL:
	[Enabled, Timedout], RTDA: [Enabled, Hit: No, Details: v1.9.3; Id:
	2m1gijp.191104m4j.7q780], total: 0(775)
X-BitDefender-CF-Stamp: none
Cc: =?UTF-8?q?Mihai=20Don=C8=9Bu?= <mdontu@bitdefender.com>, keir@xen.org,
	jbeulich@suse.com
Subject: [Xen-devel] [PATCH 1/3] x86: add support for computing the
	instruction length
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGFuIGlu
c3RydWN0aW9uLiBUaGUgZW50aXJlCmxvZ2ljIHJlbGllcyBvbiBhIHNldCBvZiBvcGNvZGUgdGFi
bGVzIGdlbmVyYXRlZCBieSBnZW4taW5zbi1hdHRyLXg4Ni5hd2sgZnJvbQp4ODYtb3Bjb2RlLW1h
cC50eHQgYW5kIGEgbnVtYmVyIG9mIHNtYWxsIGhlbHBlciBmdW5jdGlvbnMuIEl0IG9yaWdpbmF0
ZWQgaW4KTGludXgsIHdoZXJlIGl0IHdhcyBhZGRlZCBieSBNYXNhbWkgSGlyYW1hdHN1LiBTaW5j
ZSBpdCdzIGFuIGFsbW9zdCBpZGVudGljYWwKY29weSwgaXQncyBzZXBhcmF0ZWQgZnJvbSB0aGUg
eDg2IGVtdWxhdG9yLCBzaW1wbGlmeWluZyBmdXR1cmUgdXBkYXRlcy4KCi0tLQpDaGFuZ2VkIHNp
bmNlIHYxOgogICogYWRqdXN0ZWQgdGhlIGNvZGluZyBzdHlsZSB0byBtYXRjaCB0aGUgcmVzdCBv
ZiB4ZW4KICAqIG1vdmVkIHRoZSBzb3VyY2UgZmlsZXMgaW50byB4ODYveDg2X2VtdWxhdGUKICAq
IHJlcGxhY2VkIGluYXQtdGFibGVzLmMgd2l0aCB4ODYtb3Bjb2RlLW1hcC50eHQgYW5kIGdlbi1p
bnNuLWF0dHIteDg2LmF3awogICAgdGhhdCBhcmUgdXNlZCB0byBnZW5lcmF0ZSBpdAoKU2lnbmVk
LW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgotLS0KIHhlbi9h
cmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIHhlbi9hcmNo
L3g4Ni94ODZfZW11bGF0ZS5jICAgICAgICAgICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gveDg2
L3g4Nl9lbXVsYXRlL2luYXQuYyAgICAgICAgICAgICB8ICA5OCArKysKIHhlbi9hcmNoL3g4Ni94
ODZfZW11bGF0ZS9pbnNuLmMgICAgICAgICAgICAgfCA2MjQgKysrKysrKysrKysrKysrKysrCiB4
ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2LW9wY29kZS1tYXAudHh0IHwgOTYxICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaW5hdC5oICAgICAgICAg
ICAgICAgICAgfCAyMTkgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9pbmF0X3R5cGVzLmgg
ICAgICAgICAgICB8ICAyOSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2luc24uaCAgICAgICAgICAg
ICAgICAgIHwgMjAxICsrKysrKwogeGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3ayAgICAg
ICAgICAgICB8IDM4NiArKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAyNTI5IGluc2VydGlv
bnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3g4
Nl9lbXVsYXRlL2luYXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni94ODZfZW11
bGF0ZS9pbnNuLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUv
eDg2LW9wY29kZS1tYXAudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLXg4
Ni9pbmF0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlw
ZXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS14ODYvaW5zbi5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgeGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3awoKZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQppbmRleCBj
MWUyNDRkLi42MzUyOWQzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUKKysrIGIv
eGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC02Miw3ICs2MiwxMSBAQCBvYmoteSArPSB4c3RhdGUu
bwogCiBvYmotJChjcmFzaF9kZWJ1ZykgKz0gZ2Ric3R1Yi5vCiAKLXg4Nl9lbXVsYXRlLm86IHg4
Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAoraW5hdF90
YWJsZXNfc2NyaXB0ID0gJChCQVNFRElSKS90b29scy9nZW4taW5zbi1hdHRyLXg4Ni5hd2sKK2lu
YXRfdGFibGVzX21hcHMgPSAkKEJBU0VESVIpL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNv
ZGUtbWFwLnR4dAorCit4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHg4
Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggXAorCXg4Nl9lbXVsYXRlL2luYXQuYyB4ODZfZW11bGF0
ZS9pbnNuLmMgeDg2X2VtdWxhdGUvaW5hdC10YWJsZXMuYwogCiBlZmktJCh4ODZfNjQpIDo9ICQo
c2hlbGwgaWYgWyAhIC1yICQoQkFTRURJUikvaW5jbHVkZS94ZW4vY29tcGlsZS5oIC1vIFwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLU8gJChCQVNFRElSKS9pbmNsdWRlL3hlbi9j
b21waWxlLmggXTsgdGhlbiBcCkBAIC0xNjUsOSArMTY5LDEyIEBAIGJvb3QvbWtlbGYzMjogYm9v
dC9ta2VsZjMyLmMKIGVmaS9ta3JlbG9jOiBlZmkvbWtyZWxvYy5jCiAJJChIT1NUQ0MpICQoSE9T
VENGTEFHUykgLWcgLW8gJEAgJDwKIAoreDg2X2VtdWxhdGUvaW5hdC10YWJsZXMuYzogJChpbmF0
X3RhYmxlc19zY3JpcHQpICQoaW5hdF90YWJsZXNfbWFwcykKKwlhd2sgLWYgJChpbmF0X3RhYmxl
c19zY3JpcHQpICQoaW5hdF90YWJsZXNfbWFwcykgPiAkQCB8fCBybSAtZiAkQAorCiAuUEhPTlk6
IGNsZWFuCiBjbGVhbjo6CiAJcm0gLWYgYXNtLW9mZnNldHMucyAqLmxkcyBib290LyoubyBib290
Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKIAlybSAtZiAkKEJBU0VESVIpLy54ZW4tc3ltcy5b
MC05XSogYm9vdC8uKi5kCiAJcm0gLWYgJChCQVNFRElSKS8ueGVuLmVmaS5bMC05XSogZWZpLyou
byBlZmkvLiouZCBlZmkvKi5lZmkgZWZpL2Rpc2FibGVkIGVmaS9ta3JlbG9jCi0Jcm0gLWYgYm9v
dC9yZWxvYy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVsb2MuYmluCisJcm0gLWYgYm9vdC9yZWxv
Yy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVsb2MuYmluIHg4Nl9lbXVsYXRlL2luYXQtdGFibGVz
LmMKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2
L3g4Nl9lbXVsYXRlLmMKaW5kZXggNzliNGFiMy4uMWQ0M2JiMSAxMDA2NDQKLS0tIGEveGVuL2Fy
Y2gveDg2L3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlLmMKQEAg
LTIyLDMgKzIyLDUgQEAKICAgICAgICAgY3B1X2hhc19hbWRfZXJyYXR1bSgmY3VycmVudF9jcHVf
ZGF0YSwgQU1EX0VSUkFUVU1fIyNucikKIAogI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9lbXVs
YXRlLmMiCisjaW5jbHVkZSAieDg2X2VtdWxhdGUvaW5hdC5jIgorI2luY2x1ZGUgIng4Nl9lbXVs
YXRlL2luc24uYyIKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbmF0LmMg
Yi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUvaW5hdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU0MjUxYmEKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYveDg2
X2VtdWxhdGUvaW5hdC5jCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiB4ODYgaW5zdHJ1Y3Rpb24g
YXR0cmlidXRlIHRhYmxlcworICoKKyAqIFdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFtYXRzdSA8bWhp
cmFtYXRAcmVkaGF0LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorICoKKyAqLworI2luY2x1ZGUgPGFzbS9pbnNuLmg+CisKKy8qIEF0dHJpYnV0ZSB0
YWJsZXMgYXJlIGdlbmVyYXRlZCBmcm9tIG9wY29kZSBtYXAgKi8KKyNpbmNsdWRlICJpbmF0LXRh
Ymxlcy5jIgorCisvKiBBdHRyaWJ1dGUgc2VhcmNoIEFQSXMgKi8KK2luc25fYXR0cl90IGluYXRf
Z2V0X29wY29kZV9hdHRyaWJ1dGUoaW5zbl9ieXRlX3Qgb3Bjb2RlKQoreworICAgIHJldHVybiBp
bmF0X3ByaW1hcnlfdGFibGVbb3Bjb2RlXTsKK30KKworaW50IGluYXRfZ2V0X2xhc3RfcHJlZml4
X2lkKGluc25fYnl0ZV90IGxhc3RfcGZ4KQoreworICAgIGluc25fYXR0cl90IGxwZnhfYXR0cjsK
KworICAgIGxwZnhfYXR0ciA9IGluYXRfZ2V0X29wY29kZV9hdHRyaWJ1dGUobGFzdF9wZngpOwor
ICAgIHJldHVybiBpbmF0X2xhc3RfcHJlZml4X2lkKGxwZnhfYXR0cik7Cit9CisKK2luc25fYXR0
cl90IGluYXRfZ2V0X2VzY2FwZV9hdHRyaWJ1dGUoaW5zbl9ieXRlX3Qgb3Bjb2RlLCBpbnQgbHBm
eF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zbl9hdHRyX3Qg
ZXNjX2F0dHIpCit7CisgICAgY29uc3QgaW5zbl9hdHRyX3QgKnRhYmxlOworICAgIGludCBuOwor
CisgICAgbiA9IGluYXRfZXNjYXBlX2lkKGVzY19hdHRyKTsKKworICAgIHRhYmxlID0gaW5hdF9l
c2NhcGVfdGFibGVzW25dWzBdOworICAgIGlmICggIXRhYmxlICkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCBpbmF0X2hhc192YXJpYW50KHRhYmxlW29wY29kZV0pICYmIGxwZnhfaWQgKQor
ICAgIHsKKyAgICAgICAgdGFibGUgPSBpbmF0X2VzY2FwZV90YWJsZXNbbl1bbHBmeF9pZF07Cisg
ICAgICAgIGlmICggIXRhYmxlICkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBy
ZXR1cm4gdGFibGVbb3Bjb2RlXTsKK30KKworaW5zbl9hdHRyX3QgaW5hdF9nZXRfZ3JvdXBfYXR0
cmlidXRlKGluc25fYnl0ZV90IG1vZHJtLCBpbnQgbHBmeF9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNuX2F0dHJfdCBncnBfYXR0cikKK3sKKyAgICBjb25zdCBp
bnNuX2F0dHJfdCAqdGFibGU7CisgICAgaW50IG47CisKKyAgICBuID0gaW5hdF9ncm91cF9pZChn
cnBfYXR0cik7CisKKyAgICB0YWJsZSA9IGluYXRfZ3JvdXBfdGFibGVzW25dWzBdOworICAgIGlm
ICggIXRhYmxlICkKKyAgICAgICAgcmV0dXJuIGluYXRfZ3JvdXBfY29tbW9uX2F0dHJpYnV0ZShn
cnBfYXR0cik7CisgICAgaWYgKCBpbmF0X2hhc192YXJpYW50KHRhYmxlW1g4Nl9NT0RSTV9SRUco
bW9kcm0pXSkgJiYgbHBmeF9pZCApCisgICAgeworICAgICAgICB0YWJsZSA9IGluYXRfZ3JvdXBf
dGFibGVzW25dW2xwZnhfaWRdOworICAgICAgICBpZiAoICF0YWJsZSApCisgICAgICAgICAgICBy
ZXR1cm4gaW5hdF9ncm91cF9jb21tb25fYXR0cmlidXRlKGdycF9hdHRyKTsKKyAgICB9CisgICAg
cmV0dXJuIHRhYmxlW1g4Nl9NT0RSTV9SRUcobW9kcm0pXSB8IGluYXRfZ3JvdXBfY29tbW9uX2F0
dHJpYnV0ZShncnBfYXR0cik7Cit9CisKK2luc25fYXR0cl90IGluYXRfZ2V0X2F2eF9hdHRyaWJ1
dGUoaW5zbl9ieXRlX3Qgb3Bjb2RlLCBpbnNuX2J5dGVfdCB2ZXhfbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zbl9ieXRlX3QgdmV4X3ApCit7CisgICAgY29uc3QgaW5z
bl9hdHRyX3QgKnRhYmxlOworICAgIGlmICggdmV4X20gPiBYODZfVkVYX01fTUFYIHx8IHZleF9w
ID4gSU5BVF9MU1RQRlhfTUFYICkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogQXQgZmlyc3Qs
IHRoaXMgY2hlY2tzIHRoZSBtYXN0ZXIgdGFibGUgKi8KKyAgICB0YWJsZSA9IGluYXRfYXZ4X3Rh
Ymxlc1t2ZXhfbV1bMF07CisgICAgaWYgKCAhdGFibGUgKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAoICFpbmF0X2lzX2dyb3VwKHRhYmxlW29wY29kZV0pICYmIHZleF9wICkKKyAgICB7Cisg
ICAgICAgIC8qIElmIHRoaXMgaXMgbm90IGEgZ3JvdXAsIGdldCBhdHRyaWJ1dGUgZGlyZWN0bHkg
Ki8KKyAgICAgICAgdGFibGUgPSBpbmF0X2F2eF90YWJsZXNbdmV4X21dW3ZleF9wXTsKKyAgICAg
ICAgaWYgKCAhdGFibGUgKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biB0YWJsZVtvcGNvZGVdOworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl
L2luc24uYyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbnNuLmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3NDE2ZQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNo
L3g4Ni94ODZfZW11bGF0ZS9pbnNuLmMKQEAgLTAsMCArMSw2MjQgQEAKKy8qCisgKiB4ODYgaW5z
dHJ1Y3Rpb24gYW5hbHlzaXMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorICoKKyAqIENvcHlyaWdodCAoQykgSUJNIENvcnBvcmF0aW9uLCAyMDAyLCAyMDA0
LCAyMDA5CisgKi8KKworI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KKyNpbmNsdWRlIDxhc20vaW5h
dC5oPgorI2luY2x1ZGUgPGFzbS9pbnNuLmg+CisKKy8qIFZlcmlmeSBuZXh0IHNpemVvZih0KSBi
eXRlcyBjYW4gYmUgb24gdGhlIHNhbWUgaW5zdHJ1Y3Rpb24gKi8KKyNkZWZpbmUgdmFsaWRhdGVf
bmV4dCh0LCBpbnNuLCBuKSBcCisgICAgKChpbnNuKS0+bmV4dF9ieXRlICsgc2l6ZW9mKHQpICsg
biAtIChpbnNuKS0+a2FkZHIgPD0gTUFYX0lOU05fU0laRSkKKworI2RlZmluZSBfX2dldF9uZXh0
KHQsIGluc24pICAgICAgICAgICBcCisgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0
IHIgPSAqKHQgKilpbnNuLT5uZXh0X2J5dGU7ICBcCisgICAgICAgIGluc24tPm5leHRfYnl0ZSAr
PSBzaXplb2YodCk7IFwKKyAgICAgICAgcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9KQorCisjZGVmaW5lIF9fcGVla19uYnl0ZV9uZXh0KHQsIGluc24sIG4pICAgICAg
ICBcCisgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHQgciA9
ICoodCAqKSgoaW5zbiktPm5leHRfYnl0ZSArIG4pOyBcCisgICAgICAgIHI7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0pCisKKyNkZWZpbmUgZ2V0X25leHQo
dCwgaW5zbikgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCB1bmxpa2VseSghdmFsaWRh
dGVfbmV4dCh0LCBpbnNuLCAwKSkgKSBcCisgICAgICAgICAgICBnb3RvIGVycl9vdXQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19nZXRfbmV4dCh0LCBpbnNuKTsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9KQorCisjZGVmaW5lIHBlZWtfbmJ5dGVfbmV4dCh0
LCBpbnNuLCBuKSAgICAgICAgICAgICAgIFwKKyAgICAoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICggdW5saWtlbHkoIXZhbGlkYXRlX25leHQo
dCwgaW5zbiwgbikpICkgXAorICAgICAgICAgICAgZ290byBlcnJfb3V0OyAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIF9fcGVla19uYnl0ZV9uZXh0KHQsIGluc24sIG4pOyAgICAg
ICAgICAgIFwKKyAgICAgICAgfSkKKworI2RlZmluZSBwZWVrX25leHQodCwgaW5zbikgcGVla19u
Ynl0ZV9uZXh0KHQsIGluc24sIDApCisKKy8qKgorICogaW5zbl9pbml0KCkgLSBpbml0aWFsaXpl
IHN0cnVjdCBpbnNuCisgKiBAaW5zbjoJJnN0cnVjdCBpbnNuIHRvIGJlIGluaXRpYWxpemVkCisg
KiBAa2FkZHI6CWFkZHJlc3MgKGluIGtlcm5lbCBtZW1vcnkpIG9mIGluc3RydWN0aW9uIChvciBj
b3B5IHRoZXJlb2YpCisgKiBAeDg2XzY0OgkhMCBmb3IgNjQtYml0IGtlcm5lbCBvciA2NC1iaXQg
YXBwCisgKi8KK3ZvaWQgaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBjb25zdCB2b2lkICpr
YWRkciwgaW50IHg4Nl82NCkKK3sKKyAgICBtZW1zZXQoaW5zbiwgMCwgc2l6ZW9mKCppbnNuKSk7
CisgICAgaW5zbi0+a2FkZHIgPSBrYWRkcjsKKyAgICBpbnNuLT5uZXh0X2J5dGUgPSBrYWRkcjsK
KyAgICBpbnNuLT54ODZfNjQgPSB4ODZfNjQgPyAxIDogMDsKKyAgICBpbnNuLT5vcG5kX2J5dGVz
ID0gNDsKKyAgICBpZiAoIHg4Nl82NCApCisgICAgICAgIGluc24tPmFkZHJfYnl0ZXMgPSA4Owor
ICAgIGVsc2UKKyAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyA9IDQ7Cit9CisKKy8qKgorICogaW5z
bl9nZXRfcHJlZml4ZXMgLSBzY2FuIHg4NiBpbnN0cnVjdGlvbiBwcmVmaXggYnl0ZXMKKyAqIEBp
bnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgorICoKKyAqIFBvcHVsYXRl
cyB0aGUgQGluc24tPnByZWZpeGVzIGJpdG1hcCwgYW5kIHVwZGF0ZXMgQGluc24tPm5leHRfYnl0
ZQorICogdG8gcG9pbnQgdG8gdGhlIChmaXJzdCkgb3Bjb2RlLiAgTm8gZWZmZWN0IGlmIEBpbnNu
LT5wcmVmaXhlcy5nb3QKKyAqIGlzIGFscmVhZHkgc2V0LgorICovCit2b2lkIGluc25fZ2V0X3By
ZWZpeGVzKHN0cnVjdCBpbnNuICppbnNuKQoreworICAgIHN0cnVjdCBpbnNuX2ZpZWxkICpwcmVm
aXhlcyA9ICZpbnNuLT5wcmVmaXhlczsKKyAgICBpbnNuX2F0dHJfdCBhdHRyOworICAgIGluc25f
Ynl0ZV90IGIsIGxiOworICAgIGludCBpLCBuYjsKKworICAgIGlmICggcHJlZml4ZXMtPmdvdCAp
CisgICAgICAgIHJldHVybjsKKworICAgIG5iID0gMDsKKyAgICBsYiA9IDA7CisgICAgYiA9IHBl
ZWtfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7CisgICAgYXR0ciA9IGluYXRfZ2V0X29wY29kZV9h
dHRyaWJ1dGUoYik7CisgICAgd2hpbGUgKCBpbmF0X2lzX2xlZ2FjeV9wcmVmaXgoYXR0cikgKQor
ICAgIHsKKyAgICAgICAgLyogU2tpcCBpZiBzYW1lIHByZWZpeCAqLworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgbmI7IGkrKykKKyAgICAgICAgICAgIGlmICggcHJlZml4ZXMtPmJ5dGVzW2ldID09
IGIgKQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgIGlmICggbmIgPT0gNCAp
CisgICAgICAgICAgICAvKiBJbnZhbGlkIGluc3RydWN0aW9uICovCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgcHJlZml4ZXMtPmJ5dGVzW25iKytdID0gYjsKKyAgICAgICAgaWYgKCBpbmF0
X2lzX2FkZHJlc3Nfc2l6ZV9wcmVmaXgoYXR0cikgKQorICAgICAgICB7CisgICAgICAgICAgICAv
KiBhZGRyZXNzIHNpemUgc3dpdGNoZXMgMi80IG9yIDQvOCAqLworICAgICAgICAgICAgaWYgKCBp
bnNuLT54ODZfNjQgKQorICAgICAgICAgICAgICAgIGluc24tPmFkZHJfYnl0ZXMgXj0gMTI7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyBePSA2Owor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCBpbmF0X2lzX29wZXJhbmRfc2l6ZV9wcmVmaXgo
YXR0cikgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBvcHJhbmQgc2l6ZSBzd2l0Y2hlcyAy
LzQgKi8KKyAgICAgICAgICAgIGluc24tPm9wbmRfYnl0ZXMgXj0gNjsKKyAgICAgICAgfQorICAg
IGZvdW5kOgorICAgICAgICBwcmVmaXhlcy0+bmJ5dGVzKys7CisgICAgICAgIGluc24tPm5leHRf
Ynl0ZSsrOworICAgICAgICBsYiA9IGI7CisgICAgICAgIGIgPSBwZWVrX25leHQoaW5zbl9ieXRl
X3QsIGluc24pOworICAgICAgICBhdHRyID0gaW5hdF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShiKTsK
KyAgICB9CisgICAgLyogU2V0IHRoZSBsYXN0IHByZWZpeCAqLworICAgIGlmICggbGIgJiYgbGIg
IT0gaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10gKQorICAgIHsKKyAgICAgICAgaWYgKCB1bmxpa2Vs
eShpbnNuLT5wcmVmaXhlcy5ieXRlc1szXSkgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBT
d2FwIHRoZSBsYXN0IHByZWZpeCAqLworICAgICAgICAgICAgYiA9IGluc24tPnByZWZpeGVzLmJ5
dGVzWzNdOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5iOyBpKyspCisgICAgICAgICAg
ICAgICAgaWYgKCBwcmVmaXhlcy0+Ynl0ZXNbaV0gPT0gbGIgKQorICAgICAgICAgICAgICAgICAg
ICBwcmVmaXhlcy0+Ynl0ZXNbaV0gPSBiOworICAgICAgICB9CisgICAgICAgIGluc24tPnByZWZp
eGVzLmJ5dGVzWzNdID0gbGI7CisgICAgfQorCisgICAgLyogRGVjb2RlIFJFWCBwcmVmaXggKi8K
KyAgICBpZiAoIGluc24tPng4Nl82NCApCisgICAgeworICAgICAgICBiID0gcGVla19uZXh0KGlu
c25fYnl0ZV90LCBpbnNuKTsKKyAgICAgICAgYXR0ciA9IGluYXRfZ2V0X29wY29kZV9hdHRyaWJ1
dGUoYik7CisgICAgICAgIGlmICggaW5hdF9pc19yZXhfcHJlZml4KGF0dHIpICkKKyAgICAgICAg
eworICAgICAgICAgICAgaW5zbi0+cmV4X3ByZWZpeC52YWx1ZSA9IGI7CisgICAgICAgICAgICBp
bnNuLT5yZXhfcHJlZml4Lm5ieXRlcyA9IDE7CisgICAgICAgICAgICBpbnNuLT5uZXh0X2J5dGUr
KzsKKyAgICAgICAgICAgIGlmICggWDg2X1JFWF9XKGIpICkKKyAgICAgICAgICAgICAgICAvKiBS
RVguVyBvdmVycmlkZXMgb3BuZF9zaXplICovCisgICAgICAgICAgICAgICAgaW5zbi0+b3BuZF9i
eXRlcyA9IDg7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5zbi0+cmV4X3ByZWZpeC5nb3QgPSAx
OworCisgICAgLyogRGVjb2RlIFZFWCBwcmVmaXggKi8KKyAgICBiID0gcGVla19uZXh0KGluc25f
Ynl0ZV90LCBpbnNuKTsKKyAgICBhdHRyID0gaW5hdF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShiKTsK
KyAgICBpZiAoIGluYXRfaXNfdmV4X3ByZWZpeChhdHRyKSApCisgICAgeworICAgICAgICBpbnNu
X2J5dGVfdCBiMiA9IHBlZWtfbmJ5dGVfbmV4dChpbnNuX2J5dGVfdCwgaW5zbiwgMSk7CisgICAg
ICAgIGlmICggIWluc24tPng4Nl82NCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAg
ICAgICAgICAgKiBJbiAzMi1iaXRzIG1vZGUsIGlmIHRoZSBbNzo2XSBiaXRzIChtb2QgYml0cyBv
ZgorICAgICAgICAgICAgICogTW9kUk0pIG9uIHRoZSBzZWNvbmQgYnl0ZSBhcmUgbm90IDExYiwg
aXQgaXMKKyAgICAgICAgICAgICAqIExEUyBvciBMRVMuCisgICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgIGlmICggWDg2X01PRFJNX01PRChiMikgIT0gMyApCisgICAgICAgICAgICAgICAgZ290
byB2ZXhfZW5kOworICAgICAgICB9CisgICAgICAgIGluc24tPnZleF9wcmVmaXguYnl0ZXNbMF0g
PSBiOworICAgICAgICBpbnNuLT52ZXhfcHJlZml4LmJ5dGVzWzFdID0gYjI7CisgICAgICAgIGlm
ICggaW5hdF9pc192ZXgzX3ByZWZpeChhdHRyKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGIy
ID0gcGVla19uYnl0ZV9uZXh0KGluc25fYnl0ZV90LCBpbnNuLCAyKTsKKyAgICAgICAgICAgIGlu
c24tPnZleF9wcmVmaXguYnl0ZXNbMl0gPSBiMjsKKyAgICAgICAgICAgIGluc24tPnZleF9wcmVm
aXgubmJ5dGVzID0gMzsKKyAgICAgICAgICAgIGluc24tPm5leHRfYnl0ZSArPSAzOworICAgICAg
ICAgICAgaWYgKCBpbnNuLT54ODZfNjQgJiYgWDg2X1ZFWF9XKGIyKSApCisgICAgICAgICAgICAg
ICAgLyogVkVYLlcgb3ZlcnJpZGVzIG9wbmRfc2l6ZSAqLworICAgICAgICAgICAgICAgIGluc24t
Pm9wbmRfYnl0ZXMgPSA4OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5uYnl0ZXMgPSAyOworICAgICAgICAgICAgaW5zbi0+
bmV4dF9ieXRlICs9IDI7CisgICAgICAgIH0KKyAgICB9Cit2ZXhfZW5kOgorICAgIGluc24tPnZl
eF9wcmVmaXguZ290ID0gMTsKKworICAgIHByZWZpeGVzLT5nb3QgPSAxOworCitlcnJfb3V0Ogor
ICAgIHJldHVybjsKK30KKworLyoqCisgKiBpbnNuX2dldF9vcGNvZGUgLSBjb2xsZWN0IG9wY29k
ZShzKQorICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCisgKgor
ICogUG9wdWxhdGVzIEBpbnNuLT5vcGNvZGUsIHVwZGF0ZXMgQGluc24tPm5leHRfYnl0ZSB0byBw
b2ludCBwYXN0IHRoZQorICogb3Bjb2RlIGJ5dGUocyksIGFuZCBzZXQgQGluc24tPmF0dHIgKGV4
Y2VwdCBmb3IgZ3JvdXBzKS4KKyAqIElmIG5lY2Vzc2FyeSwgZmlyc3QgY29sbGVjdHMgYW55IHBy
ZWNlZGluZyAocHJlZml4KSBieXRlcy4KKyAqIFNldHMgQGluc24tPm9wY29kZS52YWx1ZSA9IG9w
Y29kZTEuICBObyBlZmZlY3QgaWYgQGluc24tPm9wY29kZS5nb3QKKyAqIGlzIGFscmVhZHkgMS4K
KyAqLwordm9pZCBpbnNuX2dldF9vcGNvZGUoc3RydWN0IGluc24gKmluc24pCit7CisgICAgc3Ry
dWN0IGluc25fZmllbGQgKm9wY29kZSA9ICZpbnNuLT5vcGNvZGU7CisgICAgaW5zbl9ieXRlX3Qg
b3A7CisgICAgaW50IHBmeF9pZDsKKyAgICBpZiAoIG9wY29kZS0+Z290ICkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICggIWluc24tPnByZWZpeGVzLmdvdCApCisgICAgICAgIGluc25fZ2V0X3By
ZWZpeGVzKGluc24pOworCisgICAgLyogR2V0IGZpcnN0IG9wY29kZSAqLworICAgIG9wID0gZ2V0
X25leHQoaW5zbl9ieXRlX3QsIGluc24pOworICAgIG9wY29kZS0+Ynl0ZXNbMF0gPSBvcDsKKyAg
ICBvcGNvZGUtPm5ieXRlcyA9IDE7CisKKyAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBWRVggcHJl
Zml4IG9yIG5vdCAqLworICAgIGlmICggaW5zbl9pc19hdngoaW5zbikgKQorICAgIHsKKyAgICAg
ICAgaW5zbl9ieXRlX3QgbSwgcDsKKyAgICAgICAgbSA9IGluc25fdmV4X21fYml0cyhpbnNuKTsK
KyAgICAgICAgcCA9IGluc25fdmV4X3BfYml0cyhpbnNuKTsKKyAgICAgICAgaW5zbi0+YXR0ciA9
IGluYXRfZ2V0X2F2eF9hdHRyaWJ1dGUob3AsIG0sIHApOworICAgICAgICBpZiAoICFpbmF0X2Fj
Y2VwdF92ZXgoaW5zbi0+YXR0cikgJiYgIWluYXRfaXNfZ3JvdXAoaW5zbi0+YXR0cikgKQorICAg
ICAgICAgICAgaW5zbi0+YXR0ciA9IDA7IC8qIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgYmFkICovCisg
ICAgICAgIGdvdG8gZW5kOyAgICAgICAgICAgLyogVkVYIGhhcyBvbmx5IDEgYnl0ZSBmb3Igb3Bj
b2RlICovCisgICAgfQorCisgICAgaW5zbi0+YXR0ciA9IGluYXRfZ2V0X29wY29kZV9hdHRyaWJ1
dGUob3ApOworICAgIHdoaWxlICggaW5hdF9pc19lc2NhcGUoaW5zbi0+YXR0cikgKQorICAgIHsK
KyAgICAgICAgLyogR2V0IGVzY2FwZWQgb3Bjb2RlICovCisgICAgICAgIG9wID0gZ2V0X25leHQo
aW5zbl9ieXRlX3QsIGluc24pOworICAgICAgICBvcGNvZGUtPmJ5dGVzW29wY29kZS0+bmJ5dGVz
KytdID0gb3A7CisgICAgICAgIHBmeF9pZCA9IGluc25fbGFzdF9wcmVmaXhfaWQoaW5zbik7Cisg
ICAgICAgIGluc24tPmF0dHIgPSBpbmF0X2dldF9lc2NhcGVfYXR0cmlidXRlKG9wLCBwZnhfaWQs
IGluc24tPmF0dHIpOworICAgIH0KKyAgICBpZiAoIGluYXRfbXVzdF92ZXgoaW5zbi0+YXR0cikg
KQorICAgICAgICBpbnNuLT5hdHRyID0gMDsgLyogVGhpcyBpbnN0cnVjdGlvbiBpcyBiYWQgKi8K
K2VuZDoKKyAgICBvcGNvZGUtPmdvdCA9IDE7CisKK2Vycl9vdXQ6CisgICAgcmV0dXJuOworfQor
CisvKioKKyAqIGluc25fZ2V0X21vZHJtIC0gY29sbGVjdCBNb2RSTSBieXRlLCBpZiBhbnkKKyAq
IEBpbnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgorICoKKyAqIFBvcHVs
YXRlcyBAaW5zbi0+bW9kcm0gYW5kIHVwZGF0ZXMgQGluc24tPm5leHRfYnl0ZSB0byBwb2ludCBw
YXN0IHRoZQorICogTW9kUk0gYnl0ZSwgaWYgYW55LiAgSWYgbmVjZXNzYXJ5LCBmaXJzdCBjb2xs
ZWN0cyB0aGUgcHJlY2VkaW5nIGJ5dGVzCisgKiAocHJlZml4ZXMgYW5kIG9wY29kZShzKSkuICBO
byBlZmZlY3QgaWYgQGluc24tPm1vZHJtLmdvdCBpcyBhbHJlYWR5IDEuCisgKi8KK3ZvaWQgaW5z
bl9nZXRfbW9kcm0oc3RydWN0IGluc24gKmluc24pCit7CisgICAgc3RydWN0IGluc25fZmllbGQg
Km1vZHJtID0gJmluc24tPm1vZHJtOworICAgIGluc25fYnl0ZV90IHBmeF9pZCwgbW9kOworICAg
IGlmICggbW9kcm0tPmdvdCApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoICFpbnNuLT5vcGNv
ZGUuZ290ICkKKyAgICAgICAgaW5zbl9nZXRfb3Bjb2RlKGluc24pOworCisgICAgaWYgKCBpbmF0
X2hhc19tb2RybShpbnNuLT5hdHRyKSApCisgICAgeworICAgICAgICBtb2QgPSBnZXRfbmV4dChp
bnNuX2J5dGVfdCwgaW5zbik7CisgICAgICAgIG1vZHJtLT52YWx1ZSA9IG1vZDsKKyAgICAgICAg
bW9kcm0tPm5ieXRlcyA9IDE7CisgICAgICAgIGlmICggaW5hdF9pc19ncm91cChpbnNuLT5hdHRy
KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBmeF9pZCA9IGluc25fbGFzdF9wcmVmaXhfaWQo
aW5zbik7CisgICAgICAgICAgICBpbnNuLT5hdHRyID0gaW5hdF9nZXRfZ3JvdXBfYXR0cmlidXRl
KG1vZCwgcGZ4X2lkLCBpbnNuLT5hdHRyKTsKKyAgICAgICAgICAgIGlmICggaW5zbl9pc19hdngo
aW5zbikgJiYgIWluYXRfYWNjZXB0X3ZleChpbnNuLT5hdHRyKSApCisgICAgICAgICAgICAgICAg
aW5zbi0+YXR0ciA9IDA7IC8qIFRoaXMgaXMgYmFkICovCisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoIGluc24tPng4Nl82NCAmJiBpbmF0X2lzX2ZvcmNlNjQoaW5zbi0+YXR0cikgKQorICAg
ICAgICBpbnNuLT5vcG5kX2J5dGVzID0gODsKKyAgICBtb2RybS0+Z290ID0gMTsKKworZXJyX291
dDoKKyAgICByZXR1cm47Cit9CisKKy8qKgorICogaW5zbl9yaXBfcmVsYXRpdmUoKSAtIERvZXMg
aW5zdHJ1Y3Rpb24gdXNlIFJJUC1yZWxhdGl2ZSBhZGRyZXNzaW5nIG1vZGU/CisgKiBAaW5zbjoJ
JnN0cnVjdCBpbnNuIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24KKyAqCisgKiBJZiBuZWNlc3Nhcnks
IGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQor
ICogTW9kUk0gYnl0ZS4gIE5vIGVmZmVjdCBpZiBAaW5zbi0+eDg2XzY0IGlzIDAuCisgKi8KK2lu
dCBpbnNuX3JpcF9yZWxhdGl2ZShzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICBzdHJ1Y3QgaW5z
bl9maWVsZCAqbW9kcm0gPSAmaW5zbi0+bW9kcm07CisKKyAgICBpZiAoICFpbnNuLT54ODZfNjQg
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoICFtb2RybS0+Z290ICkKKyAgICAgICAgaW5z
bl9nZXRfbW9kcm0oaW5zbik7CisgICAgLyoKKyAgICAgKiBGb3IgcmlwLXJlbGF0aXZlIGluc3Ry
dWN0aW9ucywgdGhlIG1vZCBmaWVsZCAodG9wIDIgYml0cykKKyAgICAgKiBpcyB6ZXJvIGFuZCB0
aGUgci9tIGZpZWxkIChib3R0b20gMyBiaXRzKSBpcyAweDUuCisgICAgICovCisgICAgcmV0dXJu
IChtb2RybS0+bmJ5dGVzICYmIChtb2RybS0+dmFsdWUgJiAweGM3KSA9PSAweDUpOworfQorCisv
KioKKyAqIGluc25fZ2V0X3NpYigpIC0gR2V0IHRoZSBTSUIgYnl0ZSBvZiBpbnN0cnVjdGlvbgor
ICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCisgKgorICogSWYg
bmVjZXNzYXJ5LCBmaXJzdCBjb2xsZWN0cyB0aGUgaW5zdHJ1Y3Rpb24gdXAgdG8gYW5kIGluY2x1
ZGluZyB0aGUKKyAqIE1vZFJNIGJ5dGUuCisgKi8KK3ZvaWQgaW5zbl9nZXRfc2liKHN0cnVjdCBp
bnNuICppbnNuKQoreworICAgIGluc25fYnl0ZV90IG1vZHJtOworCisgICAgaWYgKCBpbnNuLT5z
aWIuZ290ICkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICggIWluc24tPm1vZHJtLmdvdCApCisg
ICAgICAgIGluc25fZ2V0X21vZHJtKGluc24pOworICAgIGlmICggaW5zbi0+bW9kcm0ubmJ5dGVz
ICkKKyAgICB7CisgICAgICAgIG1vZHJtID0gKGluc25fYnl0ZV90KWluc24tPm1vZHJtLnZhbHVl
OworICAgICAgICBpZiAoIGluc24tPmFkZHJfYnl0ZXMgIT0gMiAmJiBYODZfTU9EUk1fTU9EKG1v
ZHJtICkgIT0gMyAmJgorICAgICAgICAgICAgWDg2X01PRFJNX1JNKG1vZHJtKSA9PSA0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpbnNuLT5zaWIudmFsdWUgPSBnZXRfbmV4dChpbnNuX2J5dGVf
dCwgaW5zbik7CisgICAgICAgICAgICBpbnNuLT5zaWIubmJ5dGVzID0gMTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpbnNuLT5zaWIuZ290ID0gMTsKKworZXJyX291dDoKKyAgICByZXR1cm47Cit9
CisKKy8qKgorICogaW5zbl9nZXRfZGlzcGxhY2VtZW50KCkgLSBHZXQgdGhlIGRpc3BsYWNlbWVu
dCBvZiBpbnN0cnVjdGlvbgorICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3Ry
dWN0aW9uCisgKgorICogSWYgbmVjZXNzYXJ5LCBmaXJzdCBjb2xsZWN0cyB0aGUgaW5zdHJ1Y3Rp
b24gdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUKKyAqIFNJQiBieXRlLgorICogRGlzcGxhY2VtZW50
IHZhbHVlIGlzIHNpZ24tZXhwYW5kZWQuCisgKi8KK3ZvaWQgaW5zbl9nZXRfZGlzcGxhY2VtZW50
KHN0cnVjdCBpbnNuICppbnNuKQoreworICAgIGluc25fYnl0ZV90IG1vZCwgcm0sIGJhc2U7CisK
KyAgICBpZiAoIGluc24tPmRpc3BsYWNlbWVudC5nb3QgKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCAhaW5zbi0+c2liLmdvdCApCisgICAgICAgIGluc25fZ2V0X3NpYihpbnNuKTsKKyAgICBp
ZiAoIGluc24tPm1vZHJtLm5ieXRlcyApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBJ
bnRlcnByZXRpbmcgdGhlIG1vZHJtIGJ5dGU6CisgICAgICAgICAqIG1vZCA9IDAwIC0gbm8gZGlz
cGxhY2VtZW50IGZpZWxkcyAoZXhjZXB0aW9ucyBiZWxvdykKKyAgICAgICAgICogbW9kID0gMDEg
LSAxLWJ5dGUgZGlzcGxhY2VtZW50IGZpZWxkCisgICAgICAgICAqIG1vZCA9IDEwIC0gZGlzcGxh
Y2VtZW50IGZpZWxkIGlzIDQgYnl0ZXMsIG9yIDIgYnl0ZXMgaWYKKyAgICAgICAgICogCWFkZHJl
c3Mgc2l6ZSA9IDIgKDB4NjcgcHJlZml4IGluIDMyLWJpdCBtb2RlKQorICAgICAgICAgKiBtb2Qg
PSAxMSAtIG5vIG1lbW9yeSBvcGVyYW5kCisgICAgICAgICAqCisgICAgICAgICAqIElmIGFkZHJl
c3Mgc2l6ZSA9IDIuLi4KKyAgICAgICAgICogbW9kID0gMDAsIHIvbSA9IDExMCAtIGRpc3BsYWNl
bWVudCBmaWVsZCBpcyAyIGJ5dGVzCisgICAgICAgICAqCisgICAgICAgICAqIElmIGFkZHJlc3Mg
c2l6ZSAhPSAyLi4uCisgICAgICAgICAqIG1vZCAhPSAxMSwgci9tID0gMTAwIC0gU0lCIGJ5dGUg
ZXhpc3RzCisgICAgICAgICAqIG1vZCA9IDAwLCBTSUIgYmFzZSA9IDEwMSAtIGRpc3BsYWNlbWVu
dCBmaWVsZCBpcyA0IGJ5dGVzCisgICAgICAgICAqIG1vZCA9IDAwLCByL20gPSAxMDEgLSByaXAt
cmVsYXRpdmUgYWRkcmVzc2luZywgZGlzcGxhY2VtZW50CisgICAgICAgICAqIAlmaWVsZCBpcyA0
IGJ5dGVzCisgICAgICAgICAqLworICAgICAgICBtb2QgPSBYODZfTU9EUk1fTU9EKGluc24tPm1v
ZHJtLnZhbHVlKTsKKyAgICAgICAgcm0gPSBYODZfTU9EUk1fUk0oaW5zbi0+bW9kcm0udmFsdWUp
OworICAgICAgICBiYXNlID0gWDg2X1NJQl9CQVNFKGluc24tPnNpYi52YWx1ZSk7CisgICAgICAg
IGlmICggbW9kID09IDMgKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIGlmICggbW9k
ID09IDEgKQorICAgICAgICB7CisgICAgICAgICAgICBpbnNuLT5kaXNwbGFjZW1lbnQudmFsdWUg
PSBnZXRfbmV4dChjaGFyLCBpbnNuKTsKKyAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVudC5u
Ynl0ZXMgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCBpbnNuLT5hZGRyX2J5dGVz
ID09IDIgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIChtb2QgPT0gMCAmJiBybSA9PSA2
KSB8fCBtb2QgPT0gMiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5zbi0+ZGlz
cGxhY2VtZW50LnZhbHVlID0gZ2V0X25leHQoc2hvcnQsIGluc24pOworICAgICAgICAgICAgICAg
IGluc24tPmRpc3BsYWNlbWVudC5uYnl0ZXMgPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAobW9kID09IDAgJiYg
cm0gPT0gNSkgfHwgbW9kID09IDIgfHwgKG1vZCA9PSAwICYmIGJhc2UgPT0gNSkgKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVudC52YWx1ZSA9IGdldF9u
ZXh0KGludCwgaW5zbik7CisgICAgICAgICAgICAgICAgaW5zbi0+ZGlzcGxhY2VtZW50Lm5ieXRl
cyA9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CitvdXQ6CisgICAgaW5zbi0+
ZGlzcGxhY2VtZW50LmdvdCA9IDE7CisKK2Vycl9vdXQ6CisgICAgcmV0dXJuOworfQorCisvKiBE
ZWNvZGUgbW9mZnNldDE2LzMyLzY0LiBSZXR1cm4gMCBpZiBmYWlsZWQgKi8KK3N0YXRpYyBpbnQg
X19nZXRfbW9mZnNldChzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICBzd2l0Y2ggKCBpbnNuLT5h
ZGRyX2J5dGVzICkKKyAgICB7CisgICAgY2FzZSAyOgorICAgICAgICBpbnNuLT5tb2Zmc2V0MS52
YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKKyAgICAgICAgaW5zbi0+bW9mZnNldDEubmJ5
dGVzID0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICBpbnNuLT5tb2Zm
c2V0MS52YWx1ZSA9IGdldF9uZXh0KGludCwgaW5zbik7CisgICAgICAgIGluc24tPm1vZmZzZXQx
Lm5ieXRlcyA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgODoKKyAgICAgICAgaW5zbi0+
bW9mZnNldDEudmFsdWUgPSBnZXRfbmV4dChpbnQsIGluc24pOworICAgICAgICBpbnNuLT5tb2Zm
c2V0MS5uYnl0ZXMgPSA0OworICAgICAgICBpbnNuLT5tb2Zmc2V0Mi52YWx1ZSA9IGdldF9uZXh0
KGludCwgaW5zbik7CisgICAgICAgIGluc24tPm1vZmZzZXQyLm5ieXRlcyA9IDQ7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6IC8qIG9wbmRfYnl0ZXMgbXVzdCBiZSBtb2RpZmllZCBtYW51
YWxseSAqLworICAgICAgICBnb3RvIGVycl9vdXQ7CisgICAgfQorICAgIGluc24tPm1vZmZzZXQx
LmdvdCA9IGluc24tPm1vZmZzZXQyLmdvdCA9IDE7CisKKyAgICByZXR1cm4gMTsKKworZXJyX291
dDoKKyAgICByZXR1cm4gMDsKK30KKworLyogRGVjb2RlIGltbSB2MzIoSXopLiBSZXR1cm4gMCBp
ZiBmYWlsZWQgKi8KK3N0YXRpYyBpbnQgX19nZXRfaW1tdjMyKHN0cnVjdCBpbnNuICppbnNuKQor
eworICAgIHN3aXRjaCAoIGluc24tPm9wbmRfYnl0ZXMgKQorICAgIHsKKyAgICBjYXNlIDI6Cisg
ICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKKyAg
ICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgNDoKKyAgICBjYXNlIDg6CisgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9u
ZXh0KGludCwgaW5zbik7CisgICAgICAgIGluc24tPmltbWVkaWF0ZS5uYnl0ZXMgPSA0OworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9kaWZpZWQg
bWFudWFsbHkgKi8KKyAgICAgICAgZ290byBlcnJfb3V0OworICAgIH0KKworICAgIHJldHVybiAx
OworCitlcnJfb3V0OgorICAgIHJldHVybiAwOworfQorCisvKiBEZWNvZGUgaW1tIHY2NChJdi9P
diksIFJldHVybiAwIGlmIGZhaWxlZCAqLworc3RhdGljIGludCBfX2dldF9pbW12KHN0cnVjdCBp
bnNuICppbnNuKQoreworICAgIHN3aXRjaCAoIGluc24tPm9wbmRfYnl0ZXMgKQorICAgIHsKKyAg
ICBjYXNlIDI6CisgICAgICAgIGluc24tPmltbWVkaWF0ZTEudmFsdWUgPSBnZXRfbmV4dChzaG9y
dCwgaW5zbik7CisgICAgICAgIGluc24tPmltbWVkaWF0ZTEubmJ5dGVzID0gMjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICBpbnNuLT5pbW1lZGlhdGUxLnZhbHVlID0gZ2V0
X25leHQoaW50LCBpbnNuKTsKKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMS5uYnl0ZXMgPSA0Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGluc24tPmltbWVkaWF0ZTEudmFs
dWUgPSBnZXRfbmV4dChpbnQsIGluc24pOworICAgICAgICBpbnNuLT5pbW1lZGlhdGUxLm5ieXRl
cyA9IDQ7CisgICAgICAgIGluc24tPmltbWVkaWF0ZTIudmFsdWUgPSBnZXRfbmV4dChpbnQsIGlu
c24pOworICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9IDQ7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6IC8qIG9wbmRfYnl0ZXMgbXVzdCBiZSBtb2RpZmllZCBtYW51YWxseSAq
LworICAgICAgICBnb3RvIGVycl9vdXQ7CisgICAgfQorICAgIGluc24tPmltbWVkaWF0ZTEuZ290
ID0gaW5zbi0+aW1tZWRpYXRlMi5nb3QgPSAxOworCisgICAgcmV0dXJuIDE7CitlcnJfb3V0Ogor
ICAgIHJldHVybiAwOworfQorCisvKiBEZWNvZGUgcHRyMTY6MTYvMzIoQXApICovCitzdGF0aWMg
aW50IF9fZ2V0X2ltbXB0cihzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICBzd2l0Y2ggKCBpbnNu
LT5vcG5kX2J5dGVzICkKKyAgICB7CisgICAgY2FzZSAyOgorICAgICAgICBpbnNuLT5pbW1lZGlh
dGUxLnZhbHVlID0gZ2V0X25leHQoc2hvcnQsIGluc24pOworICAgICAgICBpbnNuLT5pbW1lZGlh
dGUxLm5ieXRlcyA9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgaW5z
bi0+aW1tZWRpYXRlMS52YWx1ZSA9IGdldF9uZXh0KGludCwgaW5zbik7CisgICAgICAgIGluc24t
PmltbWVkaWF0ZTEubmJ5dGVzID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAg
ICAgICAvKiBwdHIxNjo2NCBpcyBub3QgZXhpc3QgKG5vIHNlZ21lbnQpICovCisgICAgICAgIHJl
dHVybiAwOworICAgIGRlZmF1bHQ6IC8qIG9wbmRfYnl0ZXMgbXVzdCBiZSBtb2RpZmllZCBtYW51
YWxseSAqLworICAgICAgICBnb3RvIGVycl9vdXQ7CisgICAgfQorICAgIGluc24tPmltbWVkaWF0
ZTIudmFsdWUgPSBnZXRfbmV4dCh1bnNpZ25lZCBzaG9ydCwgaW5zbik7CisgICAgaW5zbi0+aW1t
ZWRpYXRlMi5uYnl0ZXMgPSAyOworICAgIGluc24tPmltbWVkaWF0ZTEuZ290ID0gaW5zbi0+aW1t
ZWRpYXRlMi5nb3QgPSAxOworCisgICAgcmV0dXJuIDE7CitlcnJfb3V0OgorICAgIHJldHVybiAw
OworfQorCisvKioKKyAqIGluc25fZ2V0X2ltbWVkaWF0ZSgpIC0gR2V0IHRoZSBpbW1lZGlhdGVz
IG9mIGluc3RydWN0aW9uCisgKiBAaW5zbjoJJnN0cnVjdCBpbnNuIGNvbnRhaW5pbmcgaW5zdHJ1
Y3Rpb24KKyAqCisgKiBJZiBuZWNlc3NhcnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlv
biB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQorICogZGlzcGxhY2VtZW50IGJ5dGVzLgorICogQmFz
aWNhbGx5LCBtb3N0IG9mIGltbWVkaWF0ZXMgYXJlIHNpZ24tZXhwYW5kZWQuIFVuc2lnbmVkLXZh
bHVlIGNhbiBiZQorICogZ2V0IGJ5IGJpdCBtYXNraW5nIHdpdGggKCgxIDw8IChuYnl0ZXMgKiA4
KSkgLSAxKQorICovCit2b2lkIGluc25fZ2V0X2ltbWVkaWF0ZShzdHJ1Y3QgaW5zbiAqaW5zbikK
K3sKKyAgICBpZiAoIGluc24tPmltbWVkaWF0ZS5nb3QgKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCAhaW5zbi0+ZGlzcGxhY2VtZW50LmdvdCApCisgICAgICAgIGluc25fZ2V0X2Rpc3BsYWNl
bWVudChpbnNuKTsKKworICAgIGlmICggaW5hdF9oYXNfbW9mZnNldChpbnNuLT5hdHRyKSApCisg
ICAgeworICAgICAgICBpZiAoICFfX2dldF9tb2Zmc2V0KGluc24pICkKKyAgICAgICAgICAgIGdv
dG8gZXJyX291dDsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIGlmICggIWluYXRf
aGFzX2ltbWVkaWF0ZShpbnNuLT5hdHRyKSApCisgICAgICAgIC8qIG5vIGltbWVkaWF0ZXMgKi8K
KyAgICAgICAgZ290byBkb25lOworCisgICAgc3dpdGNoICggaW5hdF9pbW1lZGlhdGVfc2l6ZShp
bnNuLT5hdHRyKSApCisgICAgeworICAgIGNhc2UgSU5BVF9JTU1fQllURToKKyAgICAgICAgaW5z
bi0+aW1tZWRpYXRlLnZhbHVlID0gZ2V0X25leHQoY2hhciwgaW5zbik7CisgICAgICAgIGluc24t
PmltbWVkaWF0ZS5uYnl0ZXMgPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElOQVRfSU1N
X1dPUkQ6CisgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBp
bnNuKTsKKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSU5BVF9JTU1fRFdPUkQ6CisgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1
ZSA9IGdldF9uZXh0KGludCwgaW5zbik7CisgICAgICAgIGluc24tPmltbWVkaWF0ZS5uYnl0ZXMg
PSA0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIElOQVRfSU1NX1FXT1JEOgorICAgICAgICBp
bnNuLT5pbW1lZGlhdGUxLnZhbHVlID0gZ2V0X25leHQoaW50LCBpbnNuKTsKKyAgICAgICAgaW5z
bi0+aW1tZWRpYXRlMS5uYnl0ZXMgPSA0OworICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLnZhbHVl
ID0gZ2V0X25leHQoaW50LCBpbnNuKTsKKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMi5uYnl0ZXMg
PSA0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIElOQVRfSU1NX1BUUjoKKyAgICAgICAgaWYg
KCAhX19nZXRfaW1tcHRyKGluc24pICkKKyAgICAgICAgICAgIGdvdG8gZXJyX291dDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJTkFUX0lNTV9WV09SRDMyOgorICAgICAgICBpZiAoICFfX2dl
dF9pbW12MzIoaW5zbikgKQorICAgICAgICAgICAgZ290byBlcnJfb3V0OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIElOQVRfSU1NX1ZXT1JEOgorICAgICAgICBpZiAoICFfX2dldF9pbW12KGlu
c24pICkKKyAgICAgICAgICAgIGdvdG8gZXJyX291dDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgLyogSGVyZSwgaW5zbiBtdXN0IGhhdmUgYW4gaW1tZWRpYXRlLCBidXQg
ZmFpbGVkICovCisgICAgICAgIGdvdG8gZXJyX291dDsKKyAgICB9CisgICAgaWYgKCBpbmF0X2hh
c19zZWNvbmRfaW1tZWRpYXRlKGluc24tPmF0dHIpICkKKyAgICB7CisgICAgICAgIGluc24tPmlt
bWVkaWF0ZTIudmFsdWUgPSBnZXRfbmV4dChjaGFyLCBpbnNuKTsKKyAgICAgICAgaW5zbi0+aW1t
ZWRpYXRlMi5uYnl0ZXMgPSAxOworICAgIH0KK2RvbmU6CisgICAgaW5zbi0+aW1tZWRpYXRlLmdv
dCA9IDE7CisKK2Vycl9vdXQ6CisgICAgcmV0dXJuOworfQorCisvKioKKyAqIGluc25fZ2V0X2xl
bmd0aCgpIC0gR2V0IHRoZSBsZW5ndGggb2YgaW5zdHJ1Y3Rpb24KKyAqIEBpbnNuOgkmc3RydWN0
IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgorICoKKyAqIElmIG5lY2Vzc2FyeSwgZmlyc3Qg
Y29sbGVjdHMgdGhlIGluc3RydWN0aW9uIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlCisgKiBpbW1l
ZGlhdGVzIGJ5dGVzLgorICovCit2b2lkIGluc25fZ2V0X2xlbmd0aChzdHJ1Y3QgaW5zbiAqaW5z
bikKK3sKKyAgICBpZiAoIGluc24tPmxlbmd0aCApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
ICFpbnNuLT5pbW1lZGlhdGUuZ290ICkKKyAgICAgICAgaW5zbl9nZXRfaW1tZWRpYXRlKGluc24p
OworICAgIGluc24tPmxlbmd0aCA9ICh1bnNpZ25lZCBjaGFyKSgodW5zaWduZWQgbG9uZylpbnNu
LT5uZXh0X2J5dGUgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgbG9uZylpbnNuLT5rYWRkcik7Cit9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2Vt
dWxhdGUveDg2LW9wY29kZS1tYXAudHh0IGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1v
cGNvZGUtbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTJiZTdj
Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUt
bWFwLnR4dApAQCAtMCwwICsxLDk2MSBAQAorIyB4ODYgT3Bjb2RlIE1hcHMKKyMKKyMgVGhpcyBp
cyAobW9zdGx5KSBiYXNlZCBvbiBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbnMuCisjIC0gSW50ZWwo
UikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFs
IFZvbC4yQworIyAgICgjMzI2MDE4LTA0N1VTLCBKdW5lIDIwMTMpCisjCisjPE9wY29kZSBtYXBz
PgorIyBUYWJsZTogdGFibGUtbmFtZQorIyBSZWZlcnJlcjogZXNjYXBlZC1uYW1lCisjIEFWWGNv
ZGU6IGF2eC1jb2RlCisjIG9wY29kZTogbW5lbW9uaWN8R3JwWFhYIFtvcGVyYW5kMVssb3BlcmFu
ZDIuLi5dXSBbKGV4dHJhMSlbLChleHRyYTIpLi4uXSBbfCAybmQtbW5lbW9uaWMgLi4uXQorIyAo
b3IpCisjIG9wY29kZTogZXNjYXBlICMgZXNjYXBlZC1uYW1lCisjIEVuZFRhYmxlCisjCisjPGdy
b3VwIG1hcHM+CisjIEdycFRhYmxlOiBHcnBYWFgKKyMgcmVnOiAgbW5lbW9uaWMgW29wZXJhbmQx
WyxvcGVyYW5kMi4uLl1dIFsoZXh0cmExKVssKGV4dHJhMikuLi5dIFt8IDJuZC1tbmVtb25pYyAu
Li5dCisjIEVuZFRhYmxlCisjCisjIEFWWCBTdXBlcnNjcmlwdHMKKyMgICh2KTogdGhpcyBvcGNv
ZGUgcmVxdWlyZXMgVkVYIHByZWZpeC4KKyMgICh2MSk6IHRoaXMgb3Bjb2RlIG9ubHkgc3VwcG9y
dHMgMTI4Yml0IFZFWC4KKyMKKyMgTGFzdCBQcmVmaXggU3VwZXJzY3JpcHRzCisjICAtICg2Nik6
IHRoZSBsYXN0IHByZWZpeCBpcyAweDY2CisjICAtIChGMyk6IHRoZSBsYXN0IHByZWZpeCBpcyAw
eEYzCisjICAtIChGMik6IHRoZSBsYXN0IHByZWZpeCBpcyAweEYyCisjICAtICghRjMpIDogdGhl
IGxhc3QgcHJlZml4IGlzIG5vdCAweEYzIChpbmNsdWRpbmcgbm9uLWxhc3QgcHJlZml4IGNhc2Up
CisjICAtICg2NiZGMik6IEJvdGggMHg2NiBhbmQgMHhGMiBwcmVmaXhlcyBhcmUgc3BlY2lmaWVk
LgorCitUYWJsZTogb25lIGJ5dGUgb3Bjb2RlCitSZWZlcnJlcjoKK0FWWGNvZGU6CisjIDB4MDAg
LSAweDBmCiswMDogQUREIEViLEdiCiswMTogQUREIEV2LEd2CiswMjogQUREIEdiLEViCiswMzog
QUREIEd2LEV2CiswNDogQUREIEFMLEliCiswNTogQUREIHJBWCxJegorMDY6IFBVU0ggRVMgKGk2
NCkKKzA3OiBQT1AgRVMgKGk2NCkKKzA4OiBPUiBFYixHYgorMDk6IE9SIEV2LEd2CiswYTogT1Ig
R2IsRWIKKzBiOiBPUiBHdixFdgorMGM6IE9SIEFMLEliCiswZDogT1IgckFYLEl6CiswZTogUFVT
SCBDUyAoaTY0KQorMGY6IGVzY2FwZSAjIDItYnl0ZSBlc2NhcGUKKyMgMHgxMCAtIDB4MWYKKzEw
OiBBREMgRWIsR2IKKzExOiBBREMgRXYsR3YKKzEyOiBBREMgR2IsRWIKKzEzOiBBREMgR3YsRXYK
KzE0OiBBREMgQUwsSWIKKzE1OiBBREMgckFYLEl6CisxNjogUFVTSCBTUyAoaTY0KQorMTc6IFBP
UCBTUyAoaTY0KQorMTg6IFNCQiBFYixHYgorMTk6IFNCQiBFdixHdgorMWE6IFNCQiBHYixFYgor
MWI6IFNCQiBHdixFdgorMWM6IFNCQiBBTCxJYgorMWQ6IFNCQiByQVgsSXoKKzFlOiBQVVNIIERT
IChpNjQpCisxZjogUE9QIERTIChpNjQpCisjIDB4MjAgLSAweDJmCisyMDogQU5EIEViLEdiCisy
MTogQU5EIEV2LEd2CisyMjogQU5EIEdiLEViCisyMzogQU5EIEd2LEV2CisyNDogQU5EIEFMLEli
CisyNTogQU5EIHJBeCxJegorMjY6IFNFRz1FUyAoUHJlZml4KQorMjc6IERBQSAoaTY0KQorMjg6
IFNVQiBFYixHYgorMjk6IFNVQiBFdixHdgorMmE6IFNVQiBHYixFYgorMmI6IFNVQiBHdixFdgor
MmM6IFNVQiBBTCxJYgorMmQ6IFNVQiByQVgsSXoKKzJlOiBTRUc9Q1MgKFByZWZpeCkKKzJmOiBE
QVMgKGk2NCkKKyMgMHgzMCAtIDB4M2YKKzMwOiBYT1IgRWIsR2IKKzMxOiBYT1IgRXYsR3YKKzMy
OiBYT1IgR2IsRWIKKzMzOiBYT1IgR3YsRXYKKzM0OiBYT1IgQUwsSWIKKzM1OiBYT1IgckFYLEl6
CiszNjogU0VHPVNTIChQcmVmaXgpCiszNzogQUFBIChpNjQpCiszODogQ01QIEViLEdiCiszOTog
Q01QIEV2LEd2CiszYTogQ01QIEdiLEViCiszYjogQ01QIEd2LEV2CiszYzogQ01QIEFMLEliCisz
ZDogQ01QIHJBWCxJegorM2U6IFNFRz1EUyAoUHJlZml4KQorM2Y6IEFBUyAoaTY0KQorIyAweDQw
IC0gMHg0ZgorNDA6IElOQyBlQVggKGk2NCkgfCBSRVggKG82NCkKKzQxOiBJTkMgZUNYIChpNjQp
IHwgUkVYLkIgKG82NCkKKzQyOiBJTkMgZURYIChpNjQpIHwgUkVYLlggKG82NCkKKzQzOiBJTkMg
ZUJYIChpNjQpIHwgUkVYLlhCIChvNjQpCis0NDogSU5DIGVTUCAoaTY0KSB8IFJFWC5SIChvNjQp
Cis0NTogSU5DIGVCUCAoaTY0KSB8IFJFWC5SQiAobzY0KQorNDY6IElOQyBlU0kgKGk2NCkgfCBS
RVguUlggKG82NCkKKzQ3OiBJTkMgZURJIChpNjQpIHwgUkVYLlJYQiAobzY0KQorNDg6IERFQyBl
QVggKGk2NCkgfCBSRVguVyAobzY0KQorNDk6IERFQyBlQ1ggKGk2NCkgfCBSRVguV0IgKG82NCkK
KzRhOiBERUMgZURYIChpNjQpIHwgUkVYLldYIChvNjQpCis0YjogREVDIGVCWCAoaTY0KSB8IFJF
WC5XWEIgKG82NCkKKzRjOiBERUMgZVNQIChpNjQpIHwgUkVYLldSIChvNjQpCis0ZDogREVDIGVC
UCAoaTY0KSB8IFJFWC5XUkIgKG82NCkKKzRlOiBERUMgZVNJIChpNjQpIHwgUkVYLldSWCAobzY0
KQorNGY6IERFQyBlREkgKGk2NCkgfCBSRVguV1JYQiAobzY0KQorIyAweDUwIC0gMHg1ZgorNTA6
IFBVU0ggckFYL3I4IChkNjQpCis1MTogUFVTSCByQ1gvcjkgKGQ2NCkKKzUyOiBQVVNIIHJEWC9y
MTAgKGQ2NCkKKzUzOiBQVVNIIHJCWC9yMTEgKGQ2NCkKKzU0OiBQVVNIIHJTUC9yMTIgKGQ2NCkK
KzU1OiBQVVNIIHJCUC9yMTMgKGQ2NCkKKzU2OiBQVVNIIHJTSS9yMTQgKGQ2NCkKKzU3OiBQVVNI
IHJESS9yMTUgKGQ2NCkKKzU4OiBQT1AgckFYL3I4IChkNjQpCis1OTogUE9QIHJDWC9yOSAoZDY0
KQorNWE6IFBPUCByRFgvcjEwIChkNjQpCis1YjogUE9QIHJCWC9yMTEgKGQ2NCkKKzVjOiBQT1Ag
clNQL3IxMiAoZDY0KQorNWQ6IFBPUCByQlAvcjEzIChkNjQpCis1ZTogUE9QIHJTSS9yMTQgKGQ2
NCkKKzVmOiBQT1AgckRJL3IxNSAoZDY0KQorIyAweDYwIC0gMHg2ZgorNjA6IFBVU0hBL1BVU0hB
RCAoaTY0KQorNjE6IFBPUEEvUE9QQUQgKGk2NCkKKzYyOiBCT1VORCBHdixNYSAoaTY0KQorNjM6
IEFSUEwgRXcsR3cgKGk2NCkgfCBNT1ZTWEQgR3YsRXYgKG82NCkKKzY0OiBTRUc9RlMgKFByZWZp
eCkKKzY1OiBTRUc9R1MgKFByZWZpeCkKKzY2OiBPcGVyYW5kLVNpemUgKFByZWZpeCkKKzY3OiBB
ZGRyZXNzLVNpemUgKFByZWZpeCkKKzY4OiBQVVNIIEl6IChkNjQpCis2OTogSU1VTCBHdixFdixJ
egorNmE6IFBVU0ggSWIgKGQ2NCkKKzZiOiBJTVVMIEd2LEV2LEliCis2YzogSU5TL0lOU0IgWWIs
RFgKKzZkOiBJTlMvSU5TVy9JTlNEIFl6LERYCis2ZTogT1VUUy9PVVRTQiBEWCxYYgorNmY6IE9V
VFMvT1VUU1cvT1VUU0QgRFgsWHoKKyMgMHg3MCAtIDB4N2YKKzcwOiBKTyBKYgorNzE6IEpOTyBK
YgorNzI6IEpCL0pOQUUvSkMgSmIKKzczOiBKTkIvSkFFL0pOQyBKYgorNzQ6IEpaL0pFIEpiCis3
NTogSk5aL0pORSBKYgorNzY6IEpCRS9KTkEgSmIKKzc3OiBKTkJFL0pBIEpiCis3ODogSlMgSmIK
Kzc5OiBKTlMgSmIKKzdhOiBKUC9KUEUgSmIKKzdiOiBKTlAvSlBPIEpiCis3YzogSkwvSk5HRSBK
YgorN2Q6IEpOTC9KR0UgSmIKKzdlOiBKTEUvSk5HIEpiCis3ZjogSk5MRS9KRyBKYgorIyAweDgw
IC0gMHg4ZgorODA6IEdycDEgRWIsSWIgKDFBKQorODE6IEdycDEgRXYsSXogKDFBKQorODI6IEdy
cDEgRWIsSWIgKDFBKSwoaTY0KQorODM6IEdycDEgRXYsSWIgKDFBKQorODQ6IFRFU1QgRWIsR2IK
Kzg1OiBURVNUIEV2LEd2Cis4NjogWENIRyBFYixHYgorODc6IFhDSEcgRXYsR3YKKzg4OiBNT1Yg
RWIsR2IKKzg5OiBNT1YgRXYsR3YKKzhhOiBNT1YgR2IsRWIKKzhiOiBNT1YgR3YsRXYKKzhjOiBN
T1YgRXYsU3cKKzhkOiBMRUEgR3YsTQorOGU6IE1PViBTdyxFdworOGY6IEdycDFBICgxQSkgfCBQ
T1AgRXYgKGQ2NCkKKyMgMHg5MCAtIDB4OWYKKzkwOiBOT1AgfCBQQVVTRSAoRjMpIHwgWENIRyBy
OCxyQVgKKzkxOiBYQ0hHIHJDWC9yOSxyQVgKKzkyOiBYQ0hHIHJEWC9yMTAsckFYCis5MzogWENI
RyByQlgvcjExLHJBWAorOTQ6IFhDSEcgclNQL3IxMixyQVgKKzk1OiBYQ0hHIHJCUC9yMTMsckFY
Cis5NjogWENIRyByU0kvcjE0LHJBWAorOTc6IFhDSEcgckRJL3IxNSxyQVgKKzk4OiBDQlcvQ1dE
RS9DRFFFCis5OTogQ1dEL0NEUS9DUU8KKzlhOiBDQUxMRiBBcCAoaTY0KQorOWI6IEZXQUlUL1dB
SVQKKzljOiBQVVNIRi9EL1EgRnYgKGQ2NCkKKzlkOiBQT1BGL0QvUSBGdiAoZDY0KQorOWU6IFNB
SEYKKzlmOiBMQUhGCisjIDB4YTAgLSAweGFmCithMDogTU9WIEFMLE9iCithMTogTU9WIHJBWCxP
dgorYTI6IE1PViBPYixBTAorYTM6IE1PViBPdixyQVgKK2E0OiBNT1ZTL0IgWWIsWGIKK2E1OiBN
T1ZTL1cvRC9RIFl2LFh2CithNjogQ01QUy9CIFhiLFliCithNzogQ01QUy9XL0QgWHYsWXYKK2E4
OiBURVNUIEFMLEliCithOTogVEVTVCByQVgsSXoKK2FhOiBTVE9TL0IgWWIsQUwKK2FiOiBTVE9T
L1cvRC9RIFl2LHJBWAorYWM6IExPRFMvQiBBTCxYYgorYWQ6IExPRFMvVy9EL1EgckFYLFh2Cith
ZTogU0NBUy9CIEFMLFliCisjIE5vdGU6IFRoZSBNYXkgMjAxMSBJbnRlbCBtYW51YWwgc2hvd3Mg
WHYgZm9yIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIHRoZQorIyBuZXh0IGluc3RydWN0aW9uIGJ1
dCBZdiBpcyBjb3JyZWN0CithZjogU0NBUy9XL0QvUSByQVgsWXYKKyMgMHhiMCAtIDB4YmYKK2Iw
OiBNT1YgQUwvUjhMLEliCitiMTogTU9WIENML1I5TCxJYgorYjI6IE1PViBETC9SMTBMLEliCiti
MzogTU9WIEJML1IxMUwsSWIKK2I0OiBNT1YgQUgvUjEyTCxJYgorYjU6IE1PViBDSC9SMTNMLEli
CitiNjogTU9WIERIL1IxNEwsSWIKK2I3OiBNT1YgQkgvUjE1TCxJYgorYjg6IE1PViByQVgvcjgs
SXYKK2I5OiBNT1YgckNYL3I5LEl2CitiYTogTU9WIHJEWC9yMTAsSXYKK2JiOiBNT1YgckJYL3Ix
MSxJdgorYmM6IE1PViByU1AvcjEyLEl2CitiZDogTU9WIHJCUC9yMTMsSXYKK2JlOiBNT1YgclNJ
L3IxNCxJdgorYmY6IE1PViByREkvcjE1LEl2CisjIDB4YzAgLSAweGNmCitjMDogR3JwMiBFYixJ
YiAoMUEpCitjMTogR3JwMiBFdixJYiAoMUEpCitjMjogUkVUTiBJdyAoZjY0KQorYzM6IFJFVE4K
K2M0OiBMRVMgR3osTXAgKGk2NCkgfCBWRVgrMmJ5dGUgKFByZWZpeCkKK2M1OiBMRFMgR3osTXAg
KGk2NCkgfCBWRVgrMWJ5dGUgKFByZWZpeCkKK2M2OiBHcnAxMUEgRWIsSWIgKDFBKQorYzc6IEdy
cDExQiBFdixJeiAoMUEpCitjODogRU5URVIgSXcsSWIKK2M5OiBMRUFWRSAoZDY0KQorY2E6IFJF
VEYgSXcKK2NiOiBSRVRGCitjYzogSU5UMworY2Q6IElOVCBJYgorY2U6IElOVE8gKGk2NCkKK2Nm
OiBJUkVUL0QvUQorIyAweGQwIC0gMHhkZgorZDA6IEdycDIgRWIsMSAoMUEpCitkMTogR3JwMiBF
diwxICgxQSkKK2QyOiBHcnAyIEViLENMICgxQSkKK2QzOiBHcnAyIEV2LENMICgxQSkKK2Q0OiBB
QU0gSWIgKGk2NCkKK2Q1OiBBQUQgSWIgKGk2NCkKK2Q2OgorZDc6IFhMQVQvWExBVEIKK2Q4OiBF
U0MKK2Q5OiBFU0MKK2RhOiBFU0MKK2RiOiBFU0MKK2RjOiBFU0MKK2RkOiBFU0MKK2RlOiBFU0MK
K2RmOiBFU0MKKyMgMHhlMCAtIDB4ZWYKK2UwOiBMT09QTkUvTE9PUE5aIEpiIChmNjQpCitlMTog
TE9PUEUvTE9PUFogSmIgKGY2NCkKK2UyOiBMT09QIEpiIChmNjQpCitlMzogSnJDWFogSmIgKGY2
NCkKK2U0OiBJTiBBTCxJYgorZTU6IElOIGVBWCxJYgorZTY6IE9VVCBJYixBTAorZTc6IE9VVCBJ
YixlQVgKK2U4OiBDQUxMIEp6IChmNjQpCitlOTogSk1QLW5lYXIgSnogKGY2NCkKK2VhOiBKTVAt
ZmFyIEFwIChpNjQpCitlYjogSk1QLXNob3J0IEpiIChmNjQpCitlYzogSU4gQUwsRFgKK2VkOiBJ
TiBlQVgsRFgKK2VlOiBPVVQgRFgsQUwKK2VmOiBPVVQgRFgsZUFYCisjIDB4ZjAgLSAweGZmCitm
MDogTE9DSyAoUHJlZml4KQorZjE6CitmMjogUkVQTkUgKFByZWZpeCkgfCBYQUNRVUlSRSAoUHJl
Zml4KQorZjM6IFJFUC9SRVBFIChQcmVmaXgpIHwgWFJFTEVBU0UgKFByZWZpeCkKK2Y0OiBITFQK
K2Y1OiBDTUMKK2Y2OiBHcnAzXzEgRWIgKDFBKQorZjc6IEdycDNfMiBFdiAoMUEpCitmODogQ0xD
CitmOTogU1RDCitmYTogQ0xJCitmYjogU1RJCitmYzogQ0xECitmZDogU1RECitmZTogR3JwNCAo
MUEpCitmZjogR3JwNSAoMUEpCitFbmRUYWJsZQorCitUYWJsZTogMi1ieXRlIG9wY29kZSAoMHgw
ZikKK1JlZmVycmVyOiAyLWJ5dGUgZXNjYXBlCitBVlhjb2RlOiAxCisjIDB4MGYgMHgwMC0weDBm
CiswMDogR3JwNiAoMUEpCiswMTogR3JwNyAoMUEpCiswMjogTEFSIEd2LEV3CiswMzogTFNMIEd2
LEV3CiswNDoKKzA1OiBTWVNDQUxMIChvNjQpCiswNjogQ0xUUworMDc6IFNZU1JFVCAobzY0KQor
MDg6IElOVkQKKzA5OiBXQklOVkQKKzBhOgorMGI6IFVEMiAoMUIpCiswYzoKKyMgQU1EJ3MgcHJl
ZmV0Y2ggZ3JvdXAuIEludGVsIHN1cHBvcnRzIHByZWZldGNodygvMSkgb25seS4KKzBkOiBHcnBQ
CiswZTogRkVNTVMKKyMgM0ROb3chIHVzZXMgdGhlIGxhc3QgaW1tIGJ5dGUgYXMgb3Bjb2RlIGV4
dGVuc2lvbi4KKzBmOiAzRE5vdyEgUHEsUXEsSWIKKyMgMHgwZiAweDEwLTB4MWYKKyMgTk9URTog
QWNjb3JkaW5nIHRvIEludGVsIFNETSBvcGNvZGUgbWFwLCB2bW92dXBzIGFuZCB2bW92dXBkIGhh
cyBubyBvcGVyYW5kcworIyBidXQgaXQgYWN0dWFsbHkgaGFzIG9wZXJhbmRzLiBBbmQgYWxzbywg
dm1vdnNzIGFuZCB2bW92c2Qgb25seSBhY2NlcHQgMTI4Yml0LgorIyBNT1ZTUy9NT1ZTRCBoYXMg
dG9vIG1hbnkgZm9ybXMoMykgb24gU0RNLiBUaGlzIG1hcCBqdXN0IHNob3dzIGEgdHlwaWNhbCBm
b3JtLgorIyBNYW55IEFWWCBpbnN0cnVjdGlvbnMgbGFjayB2MSBzdXBlcnNjcmlwdCwgYWNjb3Jk
aW5nIHRvIEludGVsIEFWWC1QcmdyYW1taW5nCisjIFJlZmVyZW5jZSBBLjEKKzEwOiB2bW92dXBz
IFZwcyxXcHMgfCB2bW92dXBkIFZwZCxXcGQgKDY2KSB8IHZtb3ZzcyBWeCxIeCxXc3MgKEYzKSwo
djEpIHwgdm1vdnNkIFZ4LEh4LFdzZCAoRjIpLCh2MSkKKzExOiB2bW92dXBzIFdwcyxWcHMgfCB2
bW92dXBkIFdwZCxWcGQgKDY2KSB8IHZtb3ZzcyBXc3MsSHgsVnNzIChGMyksKHYxKSB8IHZtb3Zz
ZCBXc2QsSHgsVnNkIChGMiksKHYxKQorMTI6IHZtb3ZscHMgVnEsSHEsTXEgKHYxKSB8IHZtb3Zo
bHBzIFZxLEhxLFVxICh2MSkgfCB2bW92bHBkIFZxLEhxLE1xICg2NiksKHYxKSB8IHZtb3ZzbGR1
cCBWeCxXeCAoRjMpIHwgdm1vdmRkdXAgVngsV3ggKEYyKQorMTM6IHZtb3ZscHMgTXEsVnEgKHYx
KSB8IHZtb3ZscGQgTXEsVnEgKDY2KSwodjEpCisxNDogdnVucGNrbHBzIFZ4LEh4LFd4IHwgdnVu
cGNrbHBkIFZ4LEh4LFd4ICg2NikKKzE1OiB2dW5wY2tocHMgVngsSHgsV3ggfCB2dW5wY2tocGQg
VngsSHgsV3ggKDY2KQorMTY6IHZtb3ZocHMgVmRxLEhxLE1xICh2MSkgfCB2bW92bGhwcyBWZHEs
SHEsVXEgKHYxKSB8IHZtb3ZocGQgVmRxLEhxLE1xICg2NiksKHYxKSB8IHZtb3ZzaGR1cCBWeCxX
eCAoRjMpCisxNzogdm1vdmhwcyBNcSxWcSAodjEpIHwgdm1vdmhwZCBNcSxWcSAoNjYpLCh2MSkK
KzE4OiBHcnAxNiAoMUEpCisxOToKKzFhOiBCTkRDTCBFdixHdiB8IEJORENVIEV2LEd2IHwgQk5E
TU9WIEd2LEV2IHwgQk5ETERYIEd2LEV2LEd2CisxYjogQk5EQ04gRXYsR3YgfCBCTkRNT1YgRXYs
R3YgfCBCTkRNSyBHdixFdiB8IEJORFNUWCBFdixHVixHdgorMWM6CisxZDoKKzFlOgorMWY6IE5P
UCBFdgorIyAweDBmIDB4MjAtMHgyZgorMjA6IE1PViBSZCxDZAorMjE6IE1PViBSZCxEZAorMjI6
IE1PViBDZCxSZAorMjM6IE1PViBEZCxSZAorMjQ6CisyNToKKzI2OgorMjc6CisyODogdm1vdmFw
cyBWcHMsV3BzIHwgdm1vdmFwZCBWcGQsV3BkICg2NikKKzI5OiB2bW92YXBzIFdwcyxWcHMgfCB2
bW92YXBkIFdwZCxWcGQgKDY2KQorMmE6IGN2dHBpMnBzIFZwcyxRcGkgfCBjdnRwaTJwZCBWcGQs
UXBpICg2NikgfCB2Y3Z0c2kyc3MgVnNzLEhzcyxFeSAoRjMpLCh2MSkgfCB2Y3Z0c2kyc2QgVnNk
LEhzZCxFeSAoRjIpLCh2MSkKKzJiOiB2bW92bnRwcyBNcHMsVnBzIHwgdm1vdm50cGQgTXBkLFZw
ZCAoNjYpCisyYzogY3Z0dHBzMnBpIFBwaSxXcHMgfCBjdnR0cGQycGkgUHBpLFdwZCAoNjYpIHwg
dmN2dHRzczJzaSBHeSxXc3MgKEYzKSwodjEpIHwgdmN2dHRzZDJzaSBHeSxXc2QgKEYyKSwodjEp
CisyZDogY3Z0cHMycGkgUHBpLFdwcyB8IGN2dHBkMnBpIFFwaSxXcGQgKDY2KSB8IHZjdnRzczJz
aSBHeSxXc3MgKEYzKSwodjEpIHwgdmN2dHNkMnNpIEd5LFdzZCAoRjIpLCh2MSkKKzJlOiB2dWNv
bWlzcyBWc3MsV3NzICh2MSkgfCB2dWNvbWlzZCAgVnNkLFdzZCAoNjYpLCh2MSkKKzJmOiB2Y29t
aXNzIFZzcyxXc3MgKHYxKSB8IHZjb21pc2QgIFZzZCxXc2QgKDY2KSwodjEpCisjIDB4MGYgMHgz
MC0weDNmCiszMDogV1JNU1IKKzMxOiBSRFRTQworMzI6IFJETVNSCiszMzogUkRQTUMKKzM0OiBT
WVNFTlRFUgorMzU6IFNZU0VYSVQKKzM2OgorMzc6IEdFVFNFQworMzg6IGVzY2FwZSAjIDMtYnl0
ZSBlc2NhcGUgMQorMzk6CiszYTogZXNjYXBlICMgMy1ieXRlIGVzY2FwZSAyCiszYjoKKzNjOgor
M2Q6CiszZToKKzNmOgorIyAweDBmIDB4NDAtMHg0ZgorNDA6IENNT1ZPIEd2LEV2Cis0MTogQ01P
Vk5PIEd2LEV2Cis0MjogQ01PVkIvQy9OQUUgR3YsRXYKKzQzOiBDTU9WQUUvTkIvTkMgR3YsRXYK
KzQ0OiBDTU9WRS9aIEd2LEV2Cis0NTogQ01PVk5FL05aIEd2LEV2Cis0NjogQ01PVkJFL05BIEd2
LEV2Cis0NzogQ01PVkEvTkJFIEd2LEV2Cis0ODogQ01PVlMgR3YsRXYKKzQ5OiBDTU9WTlMgR3Ys
RXYKKzRhOiBDTU9WUC9QRSBHdixFdgorNGI6IENNT1ZOUC9QTyBHdixFdgorNGM6IENNT1ZML05H
RSBHdixFdgorNGQ6IENNT1ZOTC9HRSBHdixFdgorNGU6IENNT1ZMRS9ORyBHdixFdgorNGY6IENN
T1ZOTEUvRyBHdixFdgorIyAweDBmIDB4NTAtMHg1ZgorNTA6IHZtb3Ztc2twcyBHeSxVcHMgfCB2
bW92bXNrcGQgR3ksVXBkICg2NikKKzUxOiB2c3FydHBzIFZwcyxXcHMgfCB2c3FydHBkIFZwZCxX
cGQgKDY2KSB8IHZzcXJ0c3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdnNxcnRzZCBWc2QsSHNk
LFdzZCAoRjIpLCh2MSkKKzUyOiB2cnNxcnRwcyBWcHMsV3BzIHwgdnJzcXJ0c3MgVnNzLEhzcyxX
c3MgKEYzKSwodjEpCis1MzogdnJjcHBzIFZwcyxXcHMgfCB2cmNwc3MgVnNzLEhzcyxXc3MgKEYz
KSwodjEpCis1NDogdmFuZHBzIFZwcyxIcHMsV3BzIHwgdmFuZHBkIFZwZCxIcGQsV3BkICg2NikK
KzU1OiB2YW5kbnBzIFZwcyxIcHMsV3BzIHwgdmFuZG5wZCBWcGQsSHBkLFdwZCAoNjYpCis1Njog
dm9ycHMgVnBzLEhwcyxXcHMgfCB2b3JwZCBWcGQsSHBkLFdwZCAoNjYpCis1NzogdnhvcnBzIFZw
cyxIcHMsV3BzIHwgdnhvcnBkIFZwZCxIcGQsV3BkICg2NikKKzU4OiB2YWRkcHMgVnBzLEhwcyxX
cHMgfCB2YWRkcGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZhZGRzcyBWc3MsSHNzLFdzcyAoRjMpLCh2
MSkgfCB2YWRkc2QgVnNkLEhzZCxXc2QgKEYyKSwodjEpCis1OTogdm11bHBzIFZwcyxIcHMsV3Bz
IHwgdm11bHBkIFZwZCxIcGQsV3BkICg2NikgfCB2bXVsc3MgVnNzLEhzcyxXc3MgKEYzKSwodjEp
IHwgdm11bHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQorNWE6IHZjdnRwczJwZCBWcGQsV3BzIHwg
dmN2dHBkMnBzIFZwcyxXcGQgKDY2KSB8IHZjdnRzczJzZCBWc2QsSHgsV3NzIChGMyksKHYxKSB8
IHZjdnRzZDJzcyBWc3MsSHgsV3NkIChGMiksKHYxKQorNWI6IHZjdnRkcTJwcyBWcHMsV2RxIHwg
dmN2dHBzMmRxIFZkcSxXcHMgKDY2KSB8IHZjdnR0cHMyZHEgVmRxLFdwcyAoRjMpCis1YzogdnN1
YnBzIFZwcyxIcHMsV3BzIHwgdnN1YnBkIFZwZCxIcGQsV3BkICg2NikgfCB2c3Vic3MgVnNzLEhz
cyxXc3MgKEYzKSwodjEpIHwgdnN1YnNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQorNWQ6IHZtaW5w
cyBWcHMsSHBzLFdwcyB8IHZtaW5wZCBWcGQsSHBkLFdwZCAoNjYpIHwgdm1pbnNzIFZzcyxIc3Ms
V3NzIChGMyksKHYxKSB8IHZtaW5zZCBWc2QsSHNkLFdzZCAoRjIpLCh2MSkKKzVlOiB2ZGl2cHMg
VnBzLEhwcyxXcHMgfCB2ZGl2cGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZkaXZzcyBWc3MsSHNzLFdz
cyAoRjMpLCh2MSkgfCB2ZGl2c2QgVnNkLEhzZCxXc2QgKEYyKSwodjEpCis1Zjogdm1heHBzIFZw
cyxIcHMsV3BzIHwgdm1heHBkIFZwZCxIcGQsV3BkICg2NikgfCB2bWF4c3MgVnNzLEhzcyxXc3Mg
KEYzKSwodjEpIHwgdm1heHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQorIyAweDBmIDB4NjAtMHg2
ZgorNjA6IHB1bnBja2xidyBQcSxRZCB8IHZwdW5wY2tsYncgVngsSHgsV3ggKDY2KSwodjEpCis2
MTogcHVucGNrbHdkIFBxLFFkIHwgdnB1bnBja2x3ZCBWeCxIeCxXeCAoNjYpLCh2MSkKKzYyOiBw
dW5wY2tsZHEgUHEsUWQgfCB2cHVucGNrbGRxIFZ4LEh4LFd4ICg2NiksKHYxKQorNjM6IHBhY2tz
c3diIFBxLFFxIHwgdnBhY2tzc3diIFZ4LEh4LFd4ICg2NiksKHYxKQorNjQ6IHBjbXBndGIgUHEs
UXEgfCB2cGNtcGd0YiBWeCxIeCxXeCAoNjYpLCh2MSkKKzY1OiBwY21wZ3R3IFBxLFFxIHwgdnBj
bXBndHcgVngsSHgsV3ggKDY2KSwodjEpCis2NjogcGNtcGd0ZCBQcSxRcSB8IHZwY21wZ3RkIFZ4
LEh4LFd4ICg2NiksKHYxKQorNjc6IHBhY2t1c3diIFBxLFFxIHwgdnBhY2t1c3diIFZ4LEh4LFd4
ICg2NiksKHYxKQorNjg6IHB1bnBja2hidyBQcSxRZCB8IHZwdW5wY2toYncgVngsSHgsV3ggKDY2
KSwodjEpCis2OTogcHVucGNraHdkIFBxLFFkIHwgdnB1bnBja2h3ZCBWeCxIeCxXeCAoNjYpLCh2
MSkKKzZhOiBwdW5wY2toZHEgUHEsUWQgfCB2cHVucGNraGRxIFZ4LEh4LFd4ICg2NiksKHYxKQor
NmI6IHBhY2tzc2R3IFBxLFFkIHwgdnBhY2tzc2R3IFZ4LEh4LFd4ICg2NiksKHYxKQorNmM6IHZw
dW5wY2tscWRxIFZ4LEh4LFd4ICg2NiksKHYxKQorNmQ6IHZwdW5wY2tocWRxIFZ4LEh4LFd4ICg2
NiksKHYxKQorNmU6IG1vdmQvcSBQZCxFeSB8IHZtb3ZkL3EgVnksRXkgKDY2KSwodjEpCis2Zjog
bW92cSBQcSxRcSB8IHZtb3ZkcWEgVngsV3ggKDY2KSB8IHZtb3ZkcXUgVngsV3ggKEYzKQorIyAw
eDBmIDB4NzAtMHg3ZgorNzA6IHBzaHVmdyBQcSxRcSxJYiB8IHZwc2h1ZmQgVngsV3gsSWIgKDY2
KSwodjEpIHwgdnBzaHVmaHcgVngsV3gsSWIgKEYzKSwodjEpIHwgdnBzaHVmbHcgVngsV3gsSWIg
KEYyKSwodjEpCis3MTogR3JwMTIgKDFBKQorNzI6IEdycDEzICgxQSkKKzczOiBHcnAxNCAoMUEp
Cis3NDogcGNtcGVxYiBQcSxRcSB8IHZwY21wZXFiIFZ4LEh4LFd4ICg2NiksKHYxKQorNzU6IHBj
bXBlcXcgUHEsUXEgfCB2cGNtcGVxdyBWeCxIeCxXeCAoNjYpLCh2MSkKKzc2OiBwY21wZXFkIFBx
LFFxIHwgdnBjbXBlcWQgVngsSHgsV3ggKDY2KSwodjEpCisjIE5vdGU6IFJlbW92ZSAodiksIGJl
Y2F1c2Ugdnplcm9hbGwgYW5kIHZ6ZXJvdXBwZXIgYmVjb21lcyBlbW1zIHdpdGhvdXQgVkVYLgor
Nzc6IGVtbXMgfCB2emVyb3VwcGVyIHwgdnplcm9hbGwKKzc4OiBWTVJFQUQgRXksR3kKKzc5OiBW
TVdSSVRFIEd5LEV5Cis3YToKKzdiOgorN2M6IHZoYWRkcGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZo
YWRkcHMgVnBzLEhwcyxXcHMgKEYyKQorN2Q6IHZoc3VicGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZo
c3VicHMgVnBzLEhwcyxXcHMgKEYyKQorN2U6IG1vdmQvcSBFeSxQZCB8IHZtb3ZkL3EgRXksVnkg
KDY2KSwodjEpIHwgdm1vdnEgVnEsV3EgKEYzKSwodjEpCis3ZjogbW92cSBRcSxQcSB8IHZtb3Zk
cWEgV3gsVnggKDY2KSB8IHZtb3ZkcXUgV3gsVnggKEYzKQorIyAweDBmIDB4ODAtMHg4ZgorODA6
IEpPIEp6IChmNjQpCis4MTogSk5PIEp6IChmNjQpCis4MjogSkIvSkMvSk5BRSBKeiAoZjY0KQor
ODM6IEpBRS9KTkIvSk5DIEp6IChmNjQpCis4NDogSkUvSlogSnogKGY2NCkKKzg1OiBKTkUvSk5a
IEp6IChmNjQpCis4NjogSkJFL0pOQSBKeiAoZjY0KQorODc6IEpBL0pOQkUgSnogKGY2NCkKKzg4
OiBKUyBKeiAoZjY0KQorODk6IEpOUyBKeiAoZjY0KQorOGE6IEpQL0pQRSBKeiAoZjY0KQorOGI6
IEpOUC9KUE8gSnogKGY2NCkKKzhjOiBKTC9KTkdFIEp6IChmNjQpCis4ZDogSk5ML0pHRSBKeiAo
ZjY0KQorOGU6IEpMRS9KTkcgSnogKGY2NCkKKzhmOiBKTkxFL0pHIEp6IChmNjQpCisjIDB4MGYg
MHg5MC0weDlmCis5MDogU0VUTyBFYgorOTE6IFNFVE5PIEViCis5MjogU0VUQi9DL05BRSBFYgor
OTM6IFNFVEFFL05CL05DIEViCis5NDogU0VURS9aIEViCis5NTogU0VUTkUvTlogRWIKKzk2OiBT
RVRCRS9OQSBFYgorOTc6IFNFVEEvTkJFIEViCis5ODogU0VUUyBFYgorOTk6IFNFVE5TIEViCis5
YTogU0VUUC9QRSBFYgorOWI6IFNFVE5QL1BPIEViCis5YzogU0VUTC9OR0UgRWIKKzlkOiBTRVRO
TC9HRSBFYgorOWU6IFNFVExFL05HIEViCis5ZjogU0VUTkxFL0cgRWIKKyMgMHgwZiAweGEwLTB4
YWYKK2EwOiBQVVNIIEZTIChkNjQpCithMTogUE9QIEZTIChkNjQpCithMjogQ1BVSUQKK2EzOiBC
VCBFdixHdgorYTQ6IFNITEQgRXYsR3YsSWIKK2E1OiBTSExEIEV2LEd2LENMCithNjogR3JwUERM
SworYTc6IEdycFJORworYTg6IFBVU0ggR1MgKGQ2NCkKK2E5OiBQT1AgR1MgKGQ2NCkKK2FhOiBS
U00KK2FiOiBCVFMgRXYsR3YKK2FjOiBTSFJEIEV2LEd2LEliCithZDogU0hSRCBFdixHdixDTAor
YWU6IEdycDE1ICgxQSksKDFDKQorYWY6IElNVUwgR3YsRXYKKyMgMHgwZiAweGIwLTB4YmYKK2Iw
OiBDTVBYQ0hHIEViLEdiCitiMTogQ01QWENIRyBFdixHdgorYjI6IExTUyBHdixNcAorYjM6IEJU
UiBFdixHdgorYjQ6IExGUyBHdixNcAorYjU6IExHUyBHdixNcAorYjY6IE1PVlpYIEd2LEViCiti
NzogTU9WWlggR3YsRXcKK2I4OiBKTVBFICghRjMpIHwgUE9QQ05UIEd2LEV2IChGMykKK2I5OiBH
cnAxMCAoMUEpCitiYTogR3JwOCBFdixJYiAoMUEpCitiYjogQlRDIEV2LEd2CitiYzogQlNGIEd2
LEV2ICghRjMpIHwgVFpDTlQgR3YsRXYgKEYzKQorYmQ6IEJTUiBHdixFdiAoIUYzKSB8IExaQ05U
IEd2LEV2IChGMykKK2JlOiBNT1ZTWCBHdixFYgorYmY6IE1PVlNYIEd2LEV3CisjIDB4MGYgMHhj
MC0weGNmCitjMDogWEFERCBFYixHYgorYzE6IFhBREQgRXYsR3YKK2MyOiB2Y21wcHMgVnBzLEhw
cyxXcHMsSWIgfCB2Y21wcGQgVnBkLEhwZCxXcGQsSWIgKDY2KSB8IHZjbXBzcyBWc3MsSHNzLFdz
cyxJYiAoRjMpLCh2MSkgfCB2Y21wc2QgVnNkLEhzZCxXc2QsSWIgKEYyKSwodjEpCitjMzogbW92
bnRpIE15LEd5CitjNDogcGluc3J3IFBxLFJ5L013LEliIHwgdnBpbnNydyBWZHEsSGRxLFJ5L013
LEliICg2NiksKHYxKQorYzU6IHBleHRydyBHZCxOcSxJYiB8IHZwZXh0cncgR2QsVWRxLEliICg2
NiksKHYxKQorYzY6IHZzaHVmcHMgVnBzLEhwcyxXcHMsSWIgfCB2c2h1ZnBkIFZwZCxIcGQsV3Bk
LEliICg2NikKK2M3OiBHcnA5ICgxQSkKK2M4OiBCU1dBUCBSQVgvRUFYL1I4L1I4RAorYzk6IEJT
V0FQIFJDWC9FQ1gvUjkvUjlECitjYTogQlNXQVAgUkRYL0VEWC9SMTAvUjEwRAorY2I6IEJTV0FQ
IFJCWC9FQlgvUjExL1IxMUQKK2NjOiBCU1dBUCBSU1AvRVNQL1IxMi9SMTJECitjZDogQlNXQVAg
UkJQL0VCUC9SMTMvUjEzRAorY2U6IEJTV0FQIFJTSS9FU0kvUjE0L1IxNEQKK2NmOiBCU1dBUCBS
REkvRURJL1IxNS9SMTVECisjIDB4MGYgMHhkMC0weGRmCitkMDogdmFkZHN1YnBkIFZwZCxIcGQs
V3BkICg2NikgfCB2YWRkc3VicHMgVnBzLEhwcyxXcHMgKEYyKQorZDE6IHBzcmx3IFBxLFFxIHwg
dnBzcmx3IFZ4LEh4LFd4ICg2NiksKHYxKQorZDI6IHBzcmxkIFBxLFFxIHwgdnBzcmxkIFZ4LEh4
LFd4ICg2NiksKHYxKQorZDM6IHBzcmxxIFBxLFFxIHwgdnBzcmxxIFZ4LEh4LFd4ICg2NiksKHYx
KQorZDQ6IHBhZGRxIFBxLFFxIHwgdnBhZGRxIFZ4LEh4LFd4ICg2NiksKHYxKQorZDU6IHBtdWxs
dyBQcSxRcSB8IHZwbXVsbHcgVngsSHgsV3ggKDY2KSwodjEpCitkNjogdm1vdnEgV3EsVnEgKDY2
KSwodjEpIHwgbW92cTJkcSBWZHEsTnEgKEYzKSB8IG1vdmRxMnEgUHEsVXEgKEYyKQorZDc6IHBt
b3Ztc2tiIEdkLE5xIHwgdnBtb3Ztc2tiIEdkLFV4ICg2NiksKHYxKQorZDg6IHBzdWJ1c2IgUHEs
UXEgfCB2cHN1YnVzYiBWeCxIeCxXeCAoNjYpLCh2MSkKK2Q5OiBwc3VidXN3IFBxLFFxIHwgdnBz
dWJ1c3cgVngsSHgsV3ggKDY2KSwodjEpCitkYTogcG1pbnViIFBxLFFxIHwgdnBtaW51YiBWeCxI
eCxXeCAoNjYpLCh2MSkKK2RiOiBwYW5kIFBxLFFxIHwgdnBhbmQgVngsSHgsV3ggKDY2KSwodjEp
CitkYzogcGFkZHVzYiBQcSxRcSB8IHZwYWRkdXNiIFZ4LEh4LFd4ICg2NiksKHYxKQorZGQ6IHBh
ZGR1c3cgUHEsUXEgfCB2cGFkZHVzdyBWeCxIeCxXeCAoNjYpLCh2MSkKK2RlOiBwbWF4dWIgUHEs
UXEgfCB2cG1heHViIFZ4LEh4LFd4ICg2NiksKHYxKQorZGY6IHBhbmRuIFBxLFFxIHwgdnBhbmRu
IFZ4LEh4LFd4ICg2NiksKHYxKQorIyAweDBmIDB4ZTAtMHhlZgorZTA6IHBhdmdiIFBxLFFxIHwg
dnBhdmdiIFZ4LEh4LFd4ICg2NiksKHYxKQorZTE6IHBzcmF3IFBxLFFxIHwgdnBzcmF3IFZ4LEh4
LFd4ICg2NiksKHYxKQorZTI6IHBzcmFkIFBxLFFxIHwgdnBzcmFkIFZ4LEh4LFd4ICg2NiksKHYx
KQorZTM6IHBhdmd3IFBxLFFxIHwgdnBhdmd3IFZ4LEh4LFd4ICg2NiksKHYxKQorZTQ6IHBtdWxo
dXcgUHEsUXEgfCB2cG11bGh1dyBWeCxIeCxXeCAoNjYpLCh2MSkKK2U1OiBwbXVsaHcgUHEsUXEg
fCB2cG11bGh3IFZ4LEh4LFd4ICg2NiksKHYxKQorZTY6IHZjdnR0cGQyZHEgVngsV3BkICg2Nikg
fCB2Y3Z0ZHEycGQgVngsV2RxIChGMykgfCB2Y3Z0cGQyZHEgVngsV3BkIChGMikKK2U3OiBtb3Zu
dHEgTXEsUHEgfCB2bW92bnRkcSBNeCxWeCAoNjYpCitlODogcHN1YnNiIFBxLFFxIHwgdnBzdWJz
YiBWeCxIeCxXeCAoNjYpLCh2MSkKK2U5OiBwc3Vic3cgUHEsUXEgfCB2cHN1YnN3IFZ4LEh4LFd4
ICg2NiksKHYxKQorZWE6IHBtaW5zdyBQcSxRcSB8IHZwbWluc3cgVngsSHgsV3ggKDY2KSwodjEp
CitlYjogcG9yIFBxLFFxIHwgdnBvciBWeCxIeCxXeCAoNjYpLCh2MSkKK2VjOiBwYWRkc2IgUHEs
UXEgfCB2cGFkZHNiIFZ4LEh4LFd4ICg2NiksKHYxKQorZWQ6IHBhZGRzdyBQcSxRcSB8IHZwYWRk
c3cgVngsSHgsV3ggKDY2KSwodjEpCitlZTogcG1heHN3IFBxLFFxIHwgdnBtYXhzdyBWeCxIeCxX
eCAoNjYpLCh2MSkKK2VmOiBweG9yIFBxLFFxIHwgdnB4b3IgVngsSHgsV3ggKDY2KSwodjEpCisj
IDB4MGYgMHhmMC0weGZmCitmMDogdmxkZHF1IFZ4LE14IChGMikKK2YxOiBwc2xsdyBQcSxRcSB8
IHZwc2xsdyBWeCxIeCxXeCAoNjYpLCh2MSkKK2YyOiBwc2xsZCBQcSxRcSB8IHZwc2xsZCBWeCxI
eCxXeCAoNjYpLCh2MSkKK2YzOiBwc2xscSBQcSxRcSB8IHZwc2xscSBWeCxIeCxXeCAoNjYpLCh2
MSkKK2Y0OiBwbXVsdWRxIFBxLFFxIHwgdnBtdWx1ZHEgVngsSHgsV3ggKDY2KSwodjEpCitmNTog
cG1hZGR3ZCBQcSxRcSB8IHZwbWFkZHdkIFZ4LEh4LFd4ICg2NiksKHYxKQorZjY6IHBzYWRidyBQ
cSxRcSB8IHZwc2FkYncgVngsSHgsV3ggKDY2KSwodjEpCitmNzogbWFza21vdnEgUHEsTnEgfCB2
bWFza21vdmRxdSBWeCxVeCAoNjYpLCh2MSkKK2Y4OiBwc3ViYiBQcSxRcSB8IHZwc3ViYiBWeCxI
eCxXeCAoNjYpLCh2MSkKK2Y5OiBwc3VidyBQcSxRcSB8IHZwc3VidyBWeCxIeCxXeCAoNjYpLCh2
MSkKK2ZhOiBwc3ViZCBQcSxRcSB8IHZwc3ViZCBWeCxIeCxXeCAoNjYpLCh2MSkKK2ZiOiBwc3Vi
cSBQcSxRcSB8IHZwc3VicSBWeCxIeCxXeCAoNjYpLCh2MSkKK2ZjOiBwYWRkYiBQcSxRcSB8IHZw
YWRkYiBWeCxIeCxXeCAoNjYpLCh2MSkKK2ZkOiBwYWRkdyBQcSxRcSB8IHZwYWRkdyBWeCxIeCxX
eCAoNjYpLCh2MSkKK2ZlOiBwYWRkZCBQcSxRcSB8IHZwYWRkZCBWeCxIeCxXeCAoNjYpLCh2MSkK
K2ZmOgorRW5kVGFibGUKKworVGFibGU6IDMtYnl0ZSBvcGNvZGUgMSAoMHgwZiAweDM4KQorUmVm
ZXJyZXI6IDMtYnl0ZSBlc2NhcGUgMQorQVZYY29kZTogMgorIyAweDBmIDB4MzggMHgwMC0weDBm
CiswMDogcHNodWZiIFBxLFFxIHwgdnBzaHVmYiBWeCxIeCxXeCAoNjYpLCh2MSkKKzAxOiBwaGFk
ZHcgUHEsUXEgfCB2cGhhZGR3IFZ4LEh4LFd4ICg2NiksKHYxKQorMDI6IHBoYWRkZCBQcSxRcSB8
IHZwaGFkZGQgVngsSHgsV3ggKDY2KSwodjEpCiswMzogcGhhZGRzdyBQcSxRcSB8IHZwaGFkZHN3
IFZ4LEh4LFd4ICg2NiksKHYxKQorMDQ6IHBtYWRkdWJzdyBQcSxRcSB8IHZwbWFkZHVic3cgVngs
SHgsV3ggKDY2KSwodjEpCiswNTogcGhzdWJ3IFBxLFFxIHwgdnBoc3VidyBWeCxIeCxXeCAoNjYp
LCh2MSkKKzA2OiBwaHN1YmQgUHEsUXEgfCB2cGhzdWJkIFZ4LEh4LFd4ICg2NiksKHYxKQorMDc6
IHBoc3Vic3cgUHEsUXEgfCB2cGhzdWJzdyBWeCxIeCxXeCAoNjYpLCh2MSkKKzA4OiBwc2lnbmIg
UHEsUXEgfCB2cHNpZ25iIFZ4LEh4LFd4ICg2NiksKHYxKQorMDk6IHBzaWdudyBQcSxRcSB8IHZw
c2lnbncgVngsSHgsV3ggKDY2KSwodjEpCiswYTogcHNpZ25kIFBxLFFxIHwgdnBzaWduZCBWeCxI
eCxXeCAoNjYpLCh2MSkKKzBiOiBwbXVsaHJzdyBQcSxRcSB8IHZwbXVsaHJzdyBWeCxIeCxXeCAo
NjYpLCh2MSkKKzBjOiB2cGVybWlscHMgVngsSHgsV3ggKDY2KSwodikKKzBkOiB2cGVybWlscGQg
VngsSHgsV3ggKDY2KSwodikKKzBlOiB2dGVzdHBzIFZ4LFd4ICg2NiksKHYpCiswZjogdnRlc3Rw
ZCBWeCxXeCAoNjYpLCh2KQorIyAweDBmIDB4MzggMHgxMC0weDFmCisxMDogcGJsZW5kdmIgVmRx
LFdkcSAoNjYpCisxMToKKzEyOgorMTM6IHZjdnRwaDJwcyBWeCxXeCxJYiAoNjYpLCh2KQorMTQ6
IGJsZW5kdnBzIFZkcSxXZHEgKDY2KQorMTU6IGJsZW5kdnBkIFZkcSxXZHEgKDY2KQorMTY6IHZw
ZXJtcHMgVnFxLEhxcSxXcXEgKDY2KSwodikKKzE3OiB2cHRlc3QgVngsV3ggKDY2KQorMTg6IHZi
cm9hZGNhc3RzcyBWeCxXZCAoNjYpLCh2KQorMTk6IHZicm9hZGNhc3RzZCBWcXEsV3EgKDY2KSwo
dikKKzFhOiB2YnJvYWRjYXN0ZjEyOCBWcXEsTWRxICg2NiksKHYpCisxYjoKKzFjOiBwYWJzYiBQ
cSxRcSB8IHZwYWJzYiBWeCxXeCAoNjYpLCh2MSkKKzFkOiBwYWJzdyBQcSxRcSB8IHZwYWJzdyBW
eCxXeCAoNjYpLCh2MSkKKzFlOiBwYWJzZCBQcSxRcSB8IHZwYWJzZCBWeCxXeCAoNjYpLCh2MSkK
KzFmOgorIyAweDBmIDB4MzggMHgyMC0weDJmCisyMDogdnBtb3ZzeGJ3IFZ4LFV4L01xICg2Niks
KHYxKQorMjE6IHZwbW92c3hiZCBWeCxVeC9NZCAoNjYpLCh2MSkKKzIyOiB2cG1vdnN4YnEgVngs
VXgvTXcgKDY2KSwodjEpCisyMzogdnBtb3ZzeHdkIFZ4LFV4L01xICg2NiksKHYxKQorMjQ6IHZw
bW92c3h3cSBWeCxVeC9NZCAoNjYpLCh2MSkKKzI1OiB2cG1vdnN4ZHEgVngsVXgvTXEgKDY2KSwo
djEpCisyNjoKKzI3OgorMjg6IHZwbXVsZHEgVngsSHgsV3ggKDY2KSwodjEpCisyOTogdnBjbXBl
cXEgVngsSHgsV3ggKDY2KSwodjEpCisyYTogdm1vdm50ZHFhIFZ4LE14ICg2NiksKHYxKQorMmI6
IHZwYWNrdXNkdyBWeCxIeCxXeCAoNjYpLCh2MSkKKzJjOiB2bWFza21vdnBzIFZ4LEh4LE14ICg2
NiksKHYpCisyZDogdm1hc2ttb3ZwZCBWeCxIeCxNeCAoNjYpLCh2KQorMmU6IHZtYXNrbW92cHMg
TXgsSHgsVnggKDY2KSwodikKKzJmOiB2bWFza21vdnBkIE14LEh4LFZ4ICg2NiksKHYpCisjIDB4
MGYgMHgzOCAweDMwLTB4M2YKKzMwOiB2cG1vdnp4YncgVngsVXgvTXEgKDY2KSwodjEpCiszMTog
dnBtb3Z6eGJkIFZ4LFV4L01kICg2NiksKHYxKQorMzI6IHZwbW92enhicSBWeCxVeC9NdyAoNjYp
LCh2MSkKKzMzOiB2cG1vdnp4d2QgVngsVXgvTXEgKDY2KSwodjEpCiszNDogdnBtb3Z6eHdxIFZ4
LFV4L01kICg2NiksKHYxKQorMzU6IHZwbW92enhkcSBWeCxVeC9NcSAoNjYpLCh2MSkKKzM2OiB2
cGVybWQgVnFxLEhxcSxXcXEgKDY2KSwodikKKzM3OiB2cGNtcGd0cSBWeCxIeCxXeCAoNjYpLCh2
MSkKKzM4OiB2cG1pbnNiIFZ4LEh4LFd4ICg2NiksKHYxKQorMzk6IHZwbWluc2QgVngsSHgsV3gg
KDY2KSwodjEpCiszYTogdnBtaW51dyBWeCxIeCxXeCAoNjYpLCh2MSkKKzNiOiB2cG1pbnVkIFZ4
LEh4LFd4ICg2NiksKHYxKQorM2M6IHZwbWF4c2IgVngsSHgsV3ggKDY2KSwodjEpCiszZDogdnBt
YXhzZCBWeCxIeCxXeCAoNjYpLCh2MSkKKzNlOiB2cG1heHV3IFZ4LEh4LFd4ICg2NiksKHYxKQor
M2Y6IHZwbWF4dWQgVngsSHgsV3ggKDY2KSwodjEpCisjIDB4MGYgMHgzOCAweDQwLTB4OGYKKzQw
OiB2cG11bGxkIFZ4LEh4LFd4ICg2NiksKHYxKQorNDE6IHZwaG1pbnBvc3V3IFZkcSxXZHEgKDY2
KSwodjEpCis0MjoKKzQzOgorNDQ6Cis0NTogdnBzcmx2ZC9xIFZ4LEh4LFd4ICg2NiksKHYpCis0
NjogdnBzcmF2ZCBWeCxIeCxXeCAoNjYpLCh2KQorNDc6IHZwc2xsdmQvcSBWeCxIeCxXeCAoNjYp
LCh2KQorIyBTa2lwIDB4NDgtMHg1NworNTg6IHZwYnJvYWRjYXN0ZCBWeCxXeCAoNjYpLCh2KQor
NTk6IHZwYnJvYWRjYXN0cSBWeCxXeCAoNjYpLCh2KQorNWE6IHZicm9hZGNhc3RpMTI4IFZxcSxN
ZHEgKDY2KSwodikKKyMgU2tpcCAweDViLTB4NzcKKzc4OiB2cGJyb2FkY2FzdGIgVngsV3ggKDY2
KSwodikKKzc5OiB2cGJyb2FkY2FzdHcgVngsV3ggKDY2KSwodikKKyMgU2tpcCAweDdhLTB4N2YK
KzgwOiBJTlZFUFQgR3ksTWRxICg2NikKKzgxOiBJTlZQSUQgR3ksTWRxICg2NikKKzgyOiBJTlZQ
Q0lEIEd5LE1kcSAoNjYpCis4YzogdnBtYXNrbW92ZC9xIFZ4LEh4LE14ICg2NiksKHYpCis4ZTog
dnBtYXNrbW92ZC9xIE14LFZ4LEh4ICg2NiksKHYpCisjIDB4MGYgMHgzOCAweDkwLTB4YmYgKEZN
QSkKKzkwOiB2Z2F0aGVyZGQvcSBWeCxIeCxXeCAoNjYpLCh2KQorOTE6IHZnYXRoZXJxZC9xIFZ4
LEh4LFd4ICg2NiksKHYpCis5MjogdmdhdGhlcmRwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCis5Mzog
dmdhdGhlcnFwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCis5NDoKKzk1OgorOTY6IHZmbWFkZHN1YjEz
MnBzL2QgVngsSHgsV3ggKDY2KSwodikKKzk3OiB2Zm1zdWJhZGQxMzJwcy9kIFZ4LEh4LFd4ICg2
NiksKHYpCis5ODogdmZtYWRkMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQorOTk6IHZmbWFkZDEz
MnNzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQorOWE6IHZmbXN1YjEzMnBzL2QgVngsSHgsV3gg
KDY2KSwodikKKzliOiB2Zm1zdWIxMzJzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkKKzljOiB2
Zm5tYWRkMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQorOWQ6IHZmbm1hZGQxMzJzcy9kIFZ4LEh4
LFd4ICg2NiksKHYpLCh2MSkKKzllOiB2Zm5tc3ViMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQor
OWY6IHZmbm1zdWIxMzJzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkKK2E2OiB2Zm1hZGRzdWIy
MTNwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCithNzogdmZtc3ViYWRkMjEzcHMvZCBWeCxIeCxXeCAo
NjYpLCh2KQorYTg6IHZmbWFkZDIxM3BzL2QgVngsSHgsV3ggKDY2KSwodikKK2E5OiB2Zm1hZGQy
MTNzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkKK2FhOiB2Zm1zdWIyMTNwcy9kIFZ4LEh4LFd4
ICg2NiksKHYpCithYjogdmZtc3ViMjEzc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCithYzog
dmZubWFkZDIxM3BzL2QgVngsSHgsV3ggKDY2KSwodikKK2FkOiB2Zm5tYWRkMjEzc3MvZCBWeCxI
eCxXeCAoNjYpLCh2KSwodjEpCithZTogdmZubXN1YjIxM3BzL2QgVngsSHgsV3ggKDY2KSwodikK
K2FmOiB2Zm5tc3ViMjEzc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCitiNjogdmZtYWRkc3Vi
MjMxcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQorYjc6IHZmbXN1YmFkZDIzMXBzL2QgVngsSHgsV3gg
KDY2KSwodikKK2I4OiB2Zm1hZGQyMzFwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCitiOTogdmZtYWRk
MjMxc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCitiYTogdmZtc3ViMjMxcHMvZCBWeCxIeCxX
eCAoNjYpLCh2KQorYmI6IHZmbXN1YjIzMXNzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQorYmM6
IHZmbm1hZGQyMzFwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCitiZDogdmZubWFkZDIzMXNzL2QgVngs
SHgsV3ggKDY2KSwodiksKHYxKQorYmU6IHZmbm1zdWIyMzFwcy9kIFZ4LEh4LFd4ICg2NiksKHYp
CitiZjogdmZubXN1YjIzMXNzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQorIyAweDBmIDB4Mzgg
MHhjMC0weGZmCitkYjogVkFFU0lNQyBWZHEsV2RxICg2NiksKHYxKQorZGM6IFZBRVNFTkMgVmRx
LEhkcSxXZHEgKDY2KSwodjEpCitkZDogVkFFU0VOQ0xBU1QgVmRxLEhkcSxXZHEgKDY2KSwodjEp
CitkZTogVkFFU0RFQyBWZHEsSGRxLFdkcSAoNjYpLCh2MSkKK2RmOiBWQUVTREVDTEFTVCBWZHEs
SGRxLFdkcSAoNjYpLCh2MSkKK2YwOiBNT1ZCRSBHeSxNeSB8IE1PVkJFIEd3LE13ICg2NikgfCBD
UkMzMiBHZCxFYiAoRjIpIHwgQ1JDMzIgR2QsRWIgKDY2JkYyKQorZjE6IE1PVkJFIE15LEd5IHwg
TU9WQkUgTXcsR3cgKDY2KSB8IENSQzMyIEdkLEV5IChGMikgfCBDUkMzMiBHZCxFdyAoNjYmRjIp
CitmMjogQU5ETiBHeSxCeSxFeSAodikKK2YzOiBHcnAxNyAoMUEpCitmNTogQlpISSBHeSxFeSxC
eSAodikgfCBQRVhUIEd5LEJ5LEV5IChGMyksKHYpIHwgUERFUCBHeSxCeSxFeSAoRjIpLCh2KQor
ZjY6IEFEQ1ggR3ksRXkgKDY2KSB8IEFET1ggR3ksRXkgKEYzKSB8IE1VTFggQnksR3ksckRYLEV5
IChGMiksKHYpCitmNzogQkVYVFIgR3ksRXksQnkgKHYpIHwgU0hMWCBHeSxFeSxCeSAoNjYpLCh2
KSB8IFNBUlggR3ksRXksQnkgKEYzKSwodikgfCBTSFJYIEd5LEV5LEJ5IChGMiksKHYpCitFbmRU
YWJsZQorCitUYWJsZTogMy1ieXRlIG9wY29kZSAyICgweDBmIDB4M2EpCitSZWZlcnJlcjogMy1i
eXRlIGVzY2FwZSAyCitBVlhjb2RlOiAzCisjIDB4MGYgMHgzYSAweDAwLTB4ZmYKKzAwOiB2cGVy
bXEgVnFxLFdxcSxJYiAoNjYpLCh2KQorMDE6IHZwZXJtcGQgVnFxLFdxcSxJYiAoNjYpLCh2KQor
MDI6IHZwYmxlbmRkIFZ4LEh4LFd4LEliICg2NiksKHYpCiswMzoKKzA0OiB2cGVybWlscHMgVngs
V3gsSWIgKDY2KSwodikKKzA1OiB2cGVybWlscGQgVngsV3gsSWIgKDY2KSwodikKKzA2OiB2cGVy
bTJmMTI4IFZxcSxIcXEsV3FxLEliICg2NiksKHYpCiswNzoKKzA4OiB2cm91bmRwcyBWeCxXeCxJ
YiAoNjYpCiswOTogdnJvdW5kcGQgVngsV3gsSWIgKDY2KQorMGE6IHZyb3VuZHNzIFZzcyxXc3Ms
SWIgKDY2KSwodjEpCiswYjogdnJvdW5kc2QgVnNkLFdzZCxJYiAoNjYpLCh2MSkKKzBjOiB2Ymxl
bmRwcyBWeCxIeCxXeCxJYiAoNjYpCiswZDogdmJsZW5kcGQgVngsSHgsV3gsSWIgKDY2KQorMGU6
IHZwYmxlbmR3IFZ4LEh4LFd4LEliICg2NiksKHYxKQorMGY6IHBhbGlnbnIgUHEsUXEsSWIgfCB2
cGFsaWduciBWeCxIeCxXeCxJYiAoNjYpLCh2MSkKKzE0OiB2cGV4dHJiIFJkL01iLFZkcSxJYiAo
NjYpLCh2MSkKKzE1OiB2cGV4dHJ3IFJkL013LFZkcSxJYiAoNjYpLCh2MSkKKzE2OiB2cGV4dHJk
L3EgRXksVmRxLEliICg2NiksKHYxKQorMTc6IHZleHRyYWN0cHMgRWQsVmRxLEliICg2NiksKHYx
KQorMTg6IHZpbnNlcnRmMTI4IFZxcSxIcXEsV3FxLEliICg2NiksKHYpCisxOTogdmV4dHJhY3Rm
MTI4IFdkcSxWcXEsSWIgKDY2KSwodikKKzFkOiB2Y3Z0cHMycGggV3gsVngsSWIgKDY2KSwodikK
KzIwOiB2cGluc3JiIFZkcSxIZHEsUnkvTWIsSWIgKDY2KSwodjEpCisyMTogdmluc2VydHBzIFZk
cSxIZHEsVWRxL01kLEliICg2NiksKHYxKQorMjI6IHZwaW5zcmQvcSBWZHEsSGRxLEV5LEliICg2
NiksKHYxKQorMzg6IHZpbnNlcnRpMTI4IFZxcSxIcXEsV3FxLEliICg2NiksKHYpCiszOTogdmV4
dHJhY3RpMTI4IFdkcSxWcXEsSWIgKDY2KSwodikKKzQwOiB2ZHBwcyBWeCxIeCxXeCxJYiAoNjYp
Cis0MTogdmRwcGQgVmRxLEhkcSxXZHEsSWIgKDY2KSwodjEpCis0Mjogdm1wc2FkYncgVngsSHgs
V3gsSWIgKDY2KSwodjEpCis0NDogdnBjbG11bHFkcSBWZHEsSGRxLFdkcSxJYiAoNjYpLCh2MSkK
KzQ2OiB2cGVybTJpMTI4IFZxcSxIcXEsV3FxLEliICg2NiksKHYpCis0YTogdmJsZW5kdnBzIFZ4
LEh4LFd4LEx4ICg2NiksKHYpCis0YjogdmJsZW5kdnBkIFZ4LEh4LFd4LEx4ICg2NiksKHYpCis0
YzogdnBibGVuZHZiIFZ4LEh4LFd4LEx4ICg2NiksKHYxKQorNjA6IHZwY21wZXN0cm0gVmRxLFdk
cSxJYiAoNjYpLCh2MSkKKzYxOiB2cGNtcGVzdHJpIFZkcSxXZHEsSWIgKDY2KSwodjEpCis2Mjog
dnBjbXBpc3RybSBWZHEsV2RxLEliICg2NiksKHYxKQorNjM6IHZwY21waXN0cmkgVmRxLFdkcSxJ
YiAoNjYpLCh2MSkKK2RmOiBWQUVTS0VZR0VOIFZkcSxXZHEsSWIgKDY2KSwodjEpCitmMDogUk9S
WCBHeSxFeSxJYiAoRjIpLCh2KQorRW5kVGFibGUKKworR3JwVGFibGU6IEdycDEKKzA6IEFERAor
MTogT1IKKzI6IEFEQworMzogU0JCCis0OiBBTkQKKzU6IFNVQgorNjogWE9SCis3OiBDTVAKK0Vu
ZFRhYmxlCisKK0dycFRhYmxlOiBHcnAxQQorMDogUE9QCitFbmRUYWJsZQorCitHcnBUYWJsZTog
R3JwMgorMDogUk9MCisxOiBST1IKKzI6IFJDTAorMzogUkNSCis0OiBTSEwvU0FMCis1OiBTSFIK
KzY6Cis3OiBTQVIKK0VuZFRhYmxlCisKK0dycFRhYmxlOiBHcnAzXzEKKzA6IFRFU1QgRWIsSWIK
KzE6CisyOiBOT1QgRWIKKzM6IE5FRyBFYgorNDogTVVMIEFMLEViCis1OiBJTVVMIEFMLEViCis2
OiBESVYgQUwsRWIKKzc6IElESVYgQUwsRWIKK0VuZFRhYmxlCisKK0dycFRhYmxlOiBHcnAzXzIK
KzA6IFRFU1QgRXYsSXoKKzE6CisyOiBOT1QgRXYKKzM6IE5FRyBFdgorNDogTVVMIHJBWCxFdgor
NTogSU1VTCByQVgsRXYKKzY6IERJViByQVgsRXYKKzc6IElESVYgckFYLEV2CitFbmRUYWJsZQor
CitHcnBUYWJsZTogR3JwNAorMDogSU5DIEViCisxOiBERUMgRWIKK0VuZFRhYmxlCisKK0dycFRh
YmxlOiBHcnA1CiswOiBJTkMgRXYKKzE6IERFQyBFdgorMjogQ0FMTE4gRXYgKGY2NCkKKzM6IENB
TExGIEVwCis0OiBKTVBOIEV2IChmNjQpCis1OiBKTVBGIE1wCis2OiBQVVNIIEV2IChkNjQpCis3
OgorRW5kVGFibGUKKworR3JwVGFibGU6IEdycDYKKzA6IFNMRFQgUnYvTXcKKzE6IFNUUiBSdi9N
dworMjogTExEVCBFdworMzogTFRSIEV3Cis0OiBWRVJSIEV3Cis1OiBWRVJXIEV3CitFbmRUYWJs
ZQorCitHcnBUYWJsZTogR3JwNworMDogU0dEVCBNcyB8IFZNQ0FMTCAoMDAxKSwoMTFCKSB8IFZN
TEFVTkNIICgwMTApLCgxMUIpIHwgVk1SRVNVTUUgKDAxMSksKDExQikgfCBWTVhPRkYgKDEwMCks
KDExQikKKzE6IFNJRFQgTXMgfCBNT05JVE9SICgwMDApLCgxMUIpIHwgTVdBSVQgKDAwMSksKDEx
QikgfCBDTEFDICgwMTApLCgxMUIpIHwgU1RBQyAoMDExKSwoMTFCKQorMjogTEdEVCBNcyB8IFhH
RVRCViAoMDAwKSwoMTFCKSB8IFhTRVRCViAoMDAxKSwoMTFCKSB8IFZNRlVOQyAoMTAwKSwoMTFC
KSB8IFhFTkQgKDEwMSkoMTFCKSB8IFhURVNUICgxMTApKDExQikKKzM6IExJRFQgTXMKKzQ6IFNN
U1cgTXcvUnYKKzU6Cis2OiBMTVNXIEV3Cis3OiBJTlZMUEcgTWIgfCBTV0FQR1MgKG82NCksKDAw
MCksKDExQikgfCBSRFRTQ1AgKDAwMSksKDExQikKK0VuZFRhYmxlCisKK0dycFRhYmxlOiBHcnA4
Cis0OiBCVAorNTogQlRTCis2OiBCVFIKKzc6IEJUQworRW5kVGFibGUKKworR3JwVGFibGU6IEdy
cDkKKzE6IENNUFhDSEc4Qi8xNkIgTXEvTWRxCis2OiBWTVBUUkxEIE1xIHwgVk1DTEVBUiBNcSAo
NjYpIHwgVk1YT04gTXEgKEYzKSB8IFJEUkFORCBSdiAoMTFCKQorNzogVk1QVFJTVCBNcSB8IFZN
UFRSU1QgTXEgKEYzKSB8IFJEU0VFRCBSdiAoMTFCKQorRW5kVGFibGUKKworR3JwVGFibGU6IEdy
cDEwCitFbmRUYWJsZQorCisjIEdycDExQSBhbmQgR3JwMTFCIGFyZSBleHByZXNzZWQgYXMgR3Jw
MTEgaW4gSW50ZWwgU0RNCitHcnBUYWJsZTogR3JwMTFBCiswOiBNT1YgRWIsSWIKKzc6IFhBQk9S
VCBJYiAoMDAwKSwoMTFCKQorRW5kVGFibGUKKworR3JwVGFibGU6IEdycDExQgorMDogTU9WIEVi
LEl6Cis3OiBYQkVHSU4gSnogKDAwMCksKDExQikKK0VuZFRhYmxlCisKK0dycFRhYmxlOiBHcnAx
MgorMjogcHNybHcgTnEsSWIgKDExQikgfCB2cHNybHcgSHgsVXgsSWIgKDY2KSwoMTFCKSwodjEp
Cis0OiBwc3JhdyBOcSxJYiAoMTFCKSB8IHZwc3JhdyBIeCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkK
KzY6IHBzbGx3IE5xLEliICgxMUIpIHwgdnBzbGx3IEh4LFV4LEliICg2NiksKDExQiksKHYxKQor
RW5kVGFibGUKKworR3JwVGFibGU6IEdycDEzCisyOiBwc3JsZCBOcSxJYiAoMTFCKSB8IHZwc3Js
ZCBIeCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKKzQ6IHBzcmFkIE5xLEliICgxMUIpIHwgdnBzcmFk
IEh4LFV4LEliICg2NiksKDExQiksKHYxKQorNjogcHNsbGQgTnEsSWIgKDExQikgfCB2cHNsbGQg
SHgsVXgsSWIgKDY2KSwoMTFCKSwodjEpCitFbmRUYWJsZQorCitHcnBUYWJsZTogR3JwMTQKKzI6
IHBzcmxxIE5xLEliICgxMUIpIHwgdnBzcmxxIEh4LFV4LEliICg2NiksKDExQiksKHYxKQorMzog
dnBzcmxkcSBIeCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKKzY6IHBzbGxxIE5xLEliICgxMUIpIHwg
dnBzbGxxIEh4LFV4LEliICg2NiksKDExQiksKHYxKQorNzogdnBzbGxkcSBIeCxVeCxJYiAoNjYp
LCgxMUIpLCh2MSkKK0VuZFRhYmxlCisKK0dycFRhYmxlOiBHcnAxNQorMDogZnhzYXZlIHwgUkRG
U0JBU0UgUnkgKEYzKSwoMTFCKQorMTogZnhzdG9yIHwgUkRHU0JBU0UgUnkgKEYzKSwoMTFCKQor
MjogdmxkbXhjc3IgTWQgKHYxKSB8IFdSRlNCQVNFIFJ5IChGMyksKDExQikKKzM6IHZzdG14Y3Ny
IE1kICh2MSkgfCBXUkdTQkFTRSBSeSAoRjMpLCgxMUIpCis0OiBYU0FWRQorNTogWFJTVE9SIHwg
bGZlbmNlICgxMUIpCis2OiBYU0FWRU9QVCB8IG1mZW5jZSAoMTFCKQorNzogY2xmbHVzaCB8IHNm
ZW5jZSAoMTFCKQorRW5kVGFibGUKKworR3JwVGFibGU6IEdycDE2CiswOiBwcmVmZXRjaCBOVEEK
KzE6IHByZWZldGNoIFQwCisyOiBwcmVmZXRjaCBUMQorMzogcHJlZmV0Y2ggVDIKK0VuZFRhYmxl
CisKK0dycFRhYmxlOiBHcnAxNworMTogQkxTUiBCeSxFeSAodikKKzI6IEJMU01TSyBCeSxFeSAo
dikKKzM6IEJMU0kgQnksRXkgKHYpCitFbmRUYWJsZQorCisjIEFNRCdzIFByZWZldGNoIEdyb3Vw
CitHcnBUYWJsZTogR3JwUAorMDogUFJFRkVUQ0gKKzE6IFBSRUZFVENIVworRW5kVGFibGUKKwor
R3JwVGFibGU6IEdycFBETEsKKzA6IE1PTlRNVUwKKzE6IFhTSEExCisyOiBYU0hBMgorRW5kVGFi
bGUKKworR3JwVGFibGU6IEdycFJORworMDogeHN0b3JlLXJuZworMTogeGNyeXB0LWVjYgorMjog
eGNyeXB0LWNiYworNDogeGNyeXB0LWNmYgorNTogeGNyeXB0LW9mYgorRW5kVGFibGUKZGlmZiAt
LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaW5hdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9p
bmF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiOTA2NgotLS0gL2Rl
di9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW5hdC5oCkBAIC0wLDAgKzEsMjE5IEBA
CisjaWZuZGVmIF9BU01fWDg2X0lOQVRfSAorI2RlZmluZSBfQVNNX1g4Nl9JTkFUX0gKKy8qCisg
KiB4ODYgaW5zdHJ1Y3Rpb24gYXR0cmlidXRlcworICoKKyAqIFdyaXR0ZW4gYnkgTWFzYW1pIEhp
cmFtYXRzdSA8bWhpcmFtYXRAcmVkaGF0LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworI2luY2x1ZGUgPGFzbS9pbmF0X3R5cGVzLmg+
CisKKy8qCisgKiBJbnRlcm5hbCBiaXRzLiBEb24ndCB1c2UgYml0bWFza3MgZGlyZWN0bHksIGJl
Y2F1c2UgdGhlc2UgYml0cyBhcmUKKyAqIHVuc3RhYmxlLiBZb3Ugc2hvdWxkIHVzZSBjaGVja2lu
ZyBmdW5jdGlvbnMuCisgKi8KKworI2RlZmluZSBJTkFUX09QQ09ERV9UQUJMRV9TSVpFIDI1Ngor
I2RlZmluZSBJTkFUX0dST1VQX1RBQkxFX1NJWkUgOAorCisvKiBMZWdhY3kgbGFzdCBwcmVmaXhl
cyAqLworI2RlZmluZSBJTkFUX1BGWF9PUE5EU1ogMSAvKiAweDY2ICovIC8qIExQRlgxICovCisj
ZGVmaW5lIElOQVRfUEZYX1JFUEUgMiAvKiAweEYzICovICAgLyogTFBGWDIgKi8KKyNkZWZpbmUg
SU5BVF9QRlhfUkVQTkUgMyAvKiAweEYyICovICAvKiBMUEZYMyAqLworLyogT3RoZXIgTGVnYWN5
IHByZWZpeGVzICovCisjZGVmaW5lIElOQVRfUEZYX0xPQ0sgNCAgICAvKiAweEYwICovCisjZGVm
aW5lIElOQVRfUEZYX0NTIDUgICAgICAvKiAweDJFICovCisjZGVmaW5lIElOQVRfUEZYX0RTIDYg
ICAgICAvKiAweDNFICovCisjZGVmaW5lIElOQVRfUEZYX0VTIDcgICAgICAvKiAweDI2ICovCisj
ZGVmaW5lIElOQVRfUEZYX0ZTIDggICAgICAvKiAweDY0ICovCisjZGVmaW5lIElOQVRfUEZYX0dT
IDkgICAgICAvKiAweDY1ICovCisjZGVmaW5lIElOQVRfUEZYX1NTIDEwICAgICAvKiAweDM2ICov
CisjZGVmaW5lIElOQVRfUEZYX0FERFJTWiAxMSAvKiAweDY3ICovCisvKiB4ODYtNjQgUkVYIHBy
ZWZpeCAqLworI2RlZmluZSBJTkFUX1BGWF9SRVggMTIgLyogMHg0WCAqLworLyogQVZYIFZFWCBw
cmVmaXhlcyAqLworI2RlZmluZSBJTkFUX1BGWF9WRVgyIDEzIC8qIDItYnl0ZXMgVkVYIHByZWZp
eCAqLworI2RlZmluZSBJTkFUX1BGWF9WRVgzIDE0IC8qIDMtYnl0ZXMgVkVYIHByZWZpeCAqLwor
CisjZGVmaW5lIElOQVRfTFNUUEZYX01BWCAzCisjZGVmaW5lIElOQVRfTEdDUEZYX01BWCAxMQor
CisvKiBJbW1lZGlhdGUgc2l6ZSAqLworI2RlZmluZSBJTkFUX0lNTV9CWVRFIDEKKyNkZWZpbmUg
SU5BVF9JTU1fV09SRCAyCisjZGVmaW5lIElOQVRfSU1NX0RXT1JEIDMKKyNkZWZpbmUgSU5BVF9J
TU1fUVdPUkQgNAorI2RlZmluZSBJTkFUX0lNTV9QVFIgNQorI2RlZmluZSBJTkFUX0lNTV9WV09S
RDMyIDYKKyNkZWZpbmUgSU5BVF9JTU1fVldPUkQgNworCisvKiBMZWdhY3kgcHJlZml4ICovCisj
ZGVmaW5lIElOQVRfUEZYX09GRlMgMAorI2RlZmluZSBJTkFUX1BGWF9CSVRTIDQKKyNkZWZpbmUg
SU5BVF9QRlhfTUFYICgoMSA8PCBJTkFUX1BGWF9CSVRTKSAtIDEpCisjZGVmaW5lIElOQVRfUEZY
X01BU0sgKElOQVRfUEZYX01BWCA8PCBJTkFUX1BGWF9PRkZTKQorLyogRXNjYXBlIG9wY29kZXMg
Ki8KKyNkZWZpbmUgSU5BVF9FU0NfT0ZGUyAoSU5BVF9QRlhfT0ZGUyArIElOQVRfUEZYX0JJVFMp
CisjZGVmaW5lIElOQVRfRVNDX0JJVFMgMgorI2RlZmluZSBJTkFUX0VTQ19NQVggKCgxIDw8IElO
QVRfRVNDX0JJVFMpIC0gMSkKKyNkZWZpbmUgSU5BVF9FU0NfTUFTSyAoSU5BVF9FU0NfTUFYIDw8
IElOQVRfRVNDX09GRlMpCisvKiBHcm91cCBvcGNvZGVzICgxLTE2KSAqLworI2RlZmluZSBJTkFU
X0dSUF9PRkZTIChJTkFUX0VTQ19PRkZTICsgSU5BVF9FU0NfQklUUykKKyNkZWZpbmUgSU5BVF9H
UlBfQklUUyA1CisjZGVmaW5lIElOQVRfR1JQX01BWCAoKDEgPDwgSU5BVF9HUlBfQklUUykgLSAx
KQorI2RlZmluZSBJTkFUX0dSUF9NQVNLIChJTkFUX0dSUF9NQVggPDwgSU5BVF9HUlBfT0ZGUykK
Ky8qIEltbWVkaWF0ZXMgKi8KKyNkZWZpbmUgSU5BVF9JTU1fT0ZGUyAoSU5BVF9HUlBfT0ZGUyAr
IElOQVRfR1JQX0JJVFMpCisjZGVmaW5lIElOQVRfSU1NX0JJVFMgMworI2RlZmluZSBJTkFUX0lN
TV9NQVNLICgoKDEgPDwgSU5BVF9JTU1fQklUUykgLSAxKSA8PCBJTkFUX0lNTV9PRkZTKQorLyog
RmxhZ3MgKi8KKyNkZWZpbmUgSU5BVF9GTEFHX09GRlMgKElOQVRfSU1NX09GRlMgKyBJTkFUX0lN
TV9CSVRTKQorI2RlZmluZSBJTkFUX01PRFJNICgxIDw8IChJTkFUX0ZMQUdfT0ZGUykpCisjZGVm
aW5lIElOQVRfRk9SQ0U2NCAoMSA8PCAoSU5BVF9GTEFHX09GRlMgKyAxKSkKKyNkZWZpbmUgSU5B
VF9TQ05ESU1NICgxIDw8IChJTkFUX0ZMQUdfT0ZGUyArIDIpKQorI2RlZmluZSBJTkFUX01PRkZT
RVQgKDEgPDwgKElOQVRfRkxBR19PRkZTICsgMykpCisjZGVmaW5lIElOQVRfVkFSSUFOVCAoMSA8
PCAoSU5BVF9GTEFHX09GRlMgKyA0KSkKKyNkZWZpbmUgSU5BVF9WRVhPSyAoMSA8PCAoSU5BVF9G
TEFHX09GRlMgKyA1KSkKKyNkZWZpbmUgSU5BVF9WRVhPTkxZICgxIDw8IChJTkFUX0ZMQUdfT0ZG
UyArIDYpKQorLyogQXR0cmlidXRlIG1ha2luZyBtYWNyb3MgZm9yIGF0dHJpYnV0ZSB0YWJsZXMg
Ki8KKyNkZWZpbmUgSU5BVF9NQUtFX1BSRUZJWChwZngpIChwZnggPDwgSU5BVF9QRlhfT0ZGUykK
KyNkZWZpbmUgSU5BVF9NQUtFX0VTQ0FQRShlc2MpIChlc2MgPDwgSU5BVF9FU0NfT0ZGUykKKyNk
ZWZpbmUgSU5BVF9NQUtFX0dST1VQKGdycCkgKChncnAgPDwgSU5BVF9HUlBfT0ZGUykgfCBJTkFU
X01PRFJNKQorI2RlZmluZSBJTkFUX01BS0VfSU1NKGltbSkgKGltbSA8PCBJTkFUX0lNTV9PRkZT
KQorCisvKiBBdHRyaWJ1dGUgc2VhcmNoIEFQSXMgKi8KK2V4dGVybiBpbnNuX2F0dHJfdCBpbmF0
X2dldF9vcGNvZGVfYXR0cmlidXRlKGluc25fYnl0ZV90IG9wY29kZSk7CitleHRlcm4gaW50IGlu
YXRfZ2V0X2xhc3RfcHJlZml4X2lkKGluc25fYnl0ZV90IGxhc3RfcGZ4KTsKK2V4dGVybiBpbnNu
X2F0dHJfdCBpbmF0X2dldF9lc2NhcGVfYXR0cmlidXRlKGluc25fYnl0ZV90IG9wY29kZSwgaW50
IGxwZnhfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnNuX2F0dHJfdCBlc2NfYXR0cik7CitleHRlcm4gaW5zbl9hdHRyX3QgaW5hdF9nZXRfZ3JvdXBf
YXR0cmlidXRlKGluc25fYnl0ZV90IG1vZHJtLCBpbnQgbHBmeF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zbl9hdHRyX3QgZXNjX2F0dHIpOworZXh0
ZXJuIGluc25fYXR0cl90IGluYXRfZ2V0X2F2eF9hdHRyaWJ1dGUoaW5zbl9ieXRlX3Qgb3Bjb2Rl
LCBpbnNuX2J5dGVfdCB2ZXhfbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc25fYnl0ZV90IHZleF9wcCk7CisKKy8qIEF0dHJpYnV0ZSBjaGVja2luZyBmdW5j
dGlvbnMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaXNfbGVnYWN5X3ByZWZpeChpbnNuX2F0
dHJfdCBhdHRyKQoreworICAgIGF0dHIgJj0gSU5BVF9QRlhfTUFTSzsKKyAgICByZXR1cm4gYXR0
ciAmJiBhdHRyIDw9IElOQVRfTEdDUEZYX01BWDsKK30KKworc3RhdGljIGlubGluZSBpbnQgaW5h
dF9pc19hZGRyZXNzX3NpemVfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJu
IChhdHRyICYgSU5BVF9QRlhfTUFTSykgPT0gSU5BVF9QRlhfQUREUlNaOworfQorCitzdGF0aWMg
aW5saW5lIGludCBpbmF0X2lzX29wZXJhbmRfc2l6ZV9wcmVmaXgoaW5zbl9hdHRyX3QgYXR0cikK
K3sKKyAgICByZXR1cm4gKGF0dHIgJiBJTkFUX1BGWF9NQVNLKSA9PSBJTkFUX1BGWF9PUE5EU1o7
Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaXNfcmV4X3ByZWZpeChpbnNuX2F0dHJfdCBh
dHRyKQoreworICAgIHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElOQVRfUEZYX1JF
WDsKK30KKworc3RhdGljIGlubGluZSBpbnQgaW5hdF9sYXN0X3ByZWZpeF9pZChpbnNuX2F0dHJf
dCBhdHRyKQoreworICAgIGlmICggKGF0dHIgJiBJTkFUX1BGWF9NQVNLKSA+IElOQVRfTFNUUEZY
X01BWCApCisgICAgICAgIHJldHVybiAwOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGF0dHIg
JiBJTkFUX1BGWF9NQVNLOworfQorCitzdGF0aWMgaW5saW5lIGludCBpbmF0X2lzX3ZleF9wcmVm
aXgoaW5zbl9hdHRyX3QgYXR0cikKK3sKKyAgICBhdHRyICY9IElOQVRfUEZYX01BU0s7CisgICAg
cmV0dXJuIGF0dHIgPT0gSU5BVF9QRlhfVkVYMiB8fCBhdHRyID09IElOQVRfUEZYX1ZFWDM7Cit9
CisKK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaXNfdmV4M19wcmVmaXgoaW5zbl9hdHRyX3QgYXR0
cikKK3sKKyAgICByZXR1cm4gKGF0dHIgJiBJTkFUX1BGWF9NQVNLKSA9PSBJTkFUX1BGWF9WRVgz
OworfQorCitzdGF0aWMgaW5saW5lIGludCBpbmF0X2lzX2VzY2FwZShpbnNuX2F0dHJfdCBhdHRy
KQoreworICAgIHJldHVybiBhdHRyICYgSU5BVF9FU0NfTUFTSzsKK30KKworc3RhdGljIGlubGlu
ZSBpbnQgaW5hdF9lc2NhcGVfaWQoaW5zbl9hdHRyX3QgYXR0cikKK3sKKyAgICByZXR1cm4gKGF0
dHIgJiBJTkFUX0VTQ19NQVNLKSA+PiBJTkFUX0VTQ19PRkZTOworfQorCitzdGF0aWMgaW5saW5l
IGludCBpbmF0X2lzX2dyb3VwKGluc25fYXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHIg
JiBJTkFUX0dSUF9NQVNLOworfQorCitzdGF0aWMgaW5saW5lIGludCBpbmF0X2dyb3VwX2lkKGlu
c25fYXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJuIChhdHRyICYgSU5BVF9HUlBfTUFTSykgPj4g
SU5BVF9HUlBfT0ZGUzsKK30KKworc3RhdGljIGlubGluZSBpbnQgaW5hdF9ncm91cF9jb21tb25f
YXR0cmlidXRlKGluc25fYXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHIgJiB+SU5BVF9H
UlBfTUFTSzsKK30KKworc3RhdGljIGlubGluZSBpbnQgaW5hdF9oYXNfaW1tZWRpYXRlKGluc25f
YXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHIgJiBJTkFUX0lNTV9NQVNLOworfQorCitz
dGF0aWMgaW5saW5lIGludCBpbmF0X2ltbWVkaWF0ZV9zaXplKGluc25fYXR0cl90IGF0dHIpCit7
CisgICAgcmV0dXJuIChhdHRyICYgSU5BVF9JTU1fTUFTSykgPj4gSU5BVF9JTU1fT0ZGUzsKK30K
Kworc3RhdGljIGlubGluZSBpbnQgaW5hdF9oYXNfbW9kcm0oaW5zbl9hdHRyX3QgYXR0cikKK3sK
KyAgICByZXR1cm4gYXR0ciAmIElOQVRfTU9EUk07Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlu
YXRfaXNfZm9yY2U2NChpbnNuX2F0dHJfdCBhdHRyKQoreworICAgIHJldHVybiBhdHRyICYgSU5B
VF9GT1JDRTY0OworfQorCitzdGF0aWMgaW5saW5lIGludCBpbmF0X2hhc19zZWNvbmRfaW1tZWRp
YXRlKGluc25fYXR0cl90IGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHIgJiBJTkFUX1NDTkRJTU07
Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaGFzX21vZmZzZXQoaW5zbl9hdHRyX3QgYXR0
cikKK3sKKyAgICByZXR1cm4gYXR0ciAmIElOQVRfTU9GRlNFVDsKK30KKworc3RhdGljIGlubGlu
ZSBpbnQgaW5hdF9oYXNfdmFyaWFudChpbnNuX2F0dHJfdCBhdHRyKQoreworICAgIHJldHVybiBh
dHRyICYgSU5BVF9WQVJJQU5UOworfQorCitzdGF0aWMgaW5saW5lIGludCBpbmF0X2FjY2VwdF92
ZXgoaW5zbl9hdHRyX3QgYXR0cikKK3sKKyAgICByZXR1cm4gYXR0ciAmIElOQVRfVkVYT0s7Cit9
CisKK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfbXVzdF92ZXgoaW5zbl9hdHRyX3QgYXR0cikKK3sK
KyAgICByZXR1cm4gYXR0ciAmIElOQVRfVkVYT05MWTsKK30KKworI2VuZGlmIC8qIF9BU01fWDg2
X0lOQVRfSCAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbmF0X3R5cGVzLmgg
Yi94ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42NjJhYzE0Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNt
LXg4Ni9pbmF0X3R5cGVzLmgKQEAgLTAsMCArMSwyOSBAQAorI2lmbmRlZiBfQVNNX1g4Nl9JTkFU
X1RZUEVTX0gKKyNkZWZpbmUgX0FTTV9YODZfSU5BVF9UWVBFU19ICisvKgorICogeDg2IGluc3Ry
dWN0aW9uIGF0dHJpYnV0ZXMKKyAqCisgKiBXcml0dGVuIGJ5IE1hc2FtaSBIaXJhbWF0c3UgPG1o
aXJhbWF0QHJlZGhhdC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KKyAqCisgKi8KKworLyogSW5zdHJ1Y3Rpb24gYXR0cmlidXRlcyAqLwordHlwZWRl
ZiB1bnNpZ25lZCBpbnQgaW5zbl9hdHRyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgaW5zbl9i
eXRlX3Q7Cit0eXBlZGVmIHNpZ25lZCBpbnQgaW5zbl92YWx1ZV90OworCisjZW5kaWYgLyogX0FT
TV9YODZfSU5BVF9UWVBFU19IICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2lu
c24uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW5zbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjczOTc3M2EKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9hc20t
eDg2L2luc24uaApAQCAtMCwwICsxLDIwMSBAQAorI2lmbmRlZiBfQVNNX1g4Nl9JTlNOX0gKKyNk
ZWZpbmUgX0FTTV9YODZfSU5TTl9ICisvKgorICogeDg2IGluc3RydWN0aW9uIGFuYWx5c2lzCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqCisgKiBDb3B5
cmlnaHQgKEMpIElCTSBDb3Jwb3JhdGlvbiwgMjAwOQorICovCisKKy8qIGluc25fYXR0cl90IGlz
IGRlZmluZWQgaW4gaW5hdC5oICovCisjaW5jbHVkZSA8YXNtL2luYXQuaD4KKworc3RydWN0IGlu
c25fZmllbGQKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGluc25fdmFsdWVfdCB2YWx1ZTsKKyAg
ICAgICAgaW5zbl9ieXRlX3QgYnl0ZXNbNF07CisgICAgfTsKKyAgICAvKiAhMCBpZiB3ZSd2ZSBy
dW4gaW5zbl9nZXRfeHh4KCkgZm9yIHRoaXMgZmllbGQgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGdv
dDsKKyAgICB1bnNpZ25lZCBjaGFyIG5ieXRlczsKK307CisKK3N0cnVjdCBpbnNuCit7CisgICAg
c3RydWN0IGluc25fZmllbGQgcHJlZml4ZXM7IC8qCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIFByZWZpeGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBy
ZWZpeGVzLmJ5dGVzWzNdOiBsYXN0IHByZWZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCByZXhfcHJlZml4OyAvKiBSRVggcHJlZml4
ICovCisgICAgc3RydWN0IGluc25fZmllbGQgdmV4X3ByZWZpeDsgLyogVkVYIHByZWZpeCAqLwor
ICAgIHN0cnVjdCBpbnNuX2ZpZWxkIG9wY29kZTsgICAgIC8qCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICogb3Bjb2RlLmJ5dGVzWzBdOiBvcGNvZGUxCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogb3Bjb2RlLmJ5dGVzWzFdOiBvcGNvZGUyCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogb3Bjb2RlLmJ5dGVzWzJdOiBvcGNvZGUzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgc3RydWN0IGluc25fZmll
bGQgbW9kcm07CisgICAgc3RydWN0IGluc25fZmllbGQgc2liOworICAgIHN0cnVjdCBpbnNuX2Zp
ZWxkIGRpc3BsYWNlbWVudDsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCBpbnNuX2ZpZWxk
IGltbWVkaWF0ZTsKKyAgICAgICAgc3RydWN0IGluc25fZmllbGQgbW9mZnNldDE7ICAgLyogZm9y
IDY0Yml0IE1PViAqLworICAgICAgICBzdHJ1Y3QgaW5zbl9maWVsZCBpbW1lZGlhdGUxOyAvKiBm
b3IgNjRiaXQgaW1tIG9yIG9mZjE2LzMyICovCisgICAgfTsKKyAgICB1bmlvbiB7CisgICAgICAg
IHN0cnVjdCBpbnNuX2ZpZWxkIG1vZmZzZXQyOyAgIC8qIGZvciA2NGJpdCBNT1YgKi8KKyAgICAg
ICAgc3RydWN0IGluc25fZmllbGQgaW1tZWRpYXRlMjsgLyogZm9yIDY0Yml0IGltbSBvciBzZWcx
NiAqLworICAgIH07CisKKyAgICBpbnNuX2F0dHJfdCBhdHRyOworICAgIHVuc2lnbmVkIGNoYXIg
b3BuZF9ieXRlczsKKyAgICB1bnNpZ25lZCBjaGFyIGFkZHJfYnl0ZXM7CisgICAgdW5zaWduZWQg
Y2hhciBsZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciB4ODZfNjQ7CisKKyAgICBjb25zdCBpbnNu
X2J5dGVfdCAqa2FkZHI7IC8qIGtlcm5lbCBhZGRyZXNzIG9mIGluc24gdG8gYW5hbHl6ZSAqLwor
ICAgIGNvbnN0IGluc25fYnl0ZV90ICpuZXh0X2J5dGU7Cit9OworCisjZGVmaW5lIE1BWF9JTlNO
X1NJWkUgMTYKKworI2RlZmluZSBYODZfTU9EUk1fTU9EKG1vZHJtKSAoKChtb2RybSkgJiAweGMw
KSA+PiA2KQorI2RlZmluZSBYODZfTU9EUk1fUkVHKG1vZHJtKSAoKChtb2RybSkgJiAweDM4KSA+
PiAzKQorI2RlZmluZSBYODZfTU9EUk1fUk0obW9kcm0pICgobW9kcm0pICYgMHgwNykKKworI2Rl
ZmluZSBYODZfU0lCX1NDQUxFKHNpYikgKCgoc2liKSAmIDB4YzApID4+IDYpCisjZGVmaW5lIFg4
Nl9TSUJfSU5ERVgoc2liKSAoKChzaWIpICYgMHgzOCkgPj4gMykKKyNkZWZpbmUgWDg2X1NJQl9C
QVNFKHNpYikgKChzaWIpICYgMHgwNykKKworI2RlZmluZSBYODZfUkVYX1cocmV4KSAoKHJleCkg
JiA4KQorI2RlZmluZSBYODZfUkVYX1IocmV4KSAoKHJleCkgJiA0KQorI2RlZmluZSBYODZfUkVY
X1gocmV4KSAoKHJleCkgJiAyKQorI2RlZmluZSBYODZfUkVYX0IocmV4KSAoKHJleCkgJiAxKQor
CisvKiBWRVggYml0IGZsYWdzICAqLworI2RlZmluZSBYODZfVkVYX1codmV4KSAoKHZleCkgJiAw
eDgwKSAvKiBWRVgzIEJ5dGUyICovCisjZGVmaW5lIFg4Nl9WRVhfUih2ZXgpICgodmV4KSAmIDB4
ODApIC8qIFZFWDIvMyBCeXRlMSAqLworI2RlZmluZSBYODZfVkVYX1godmV4KSAoKHZleCkgJiAw
eDQwKSAvKiBWRVgzIEJ5dGUxICovCisjZGVmaW5lIFg4Nl9WRVhfQih2ZXgpICgodmV4KSAmIDB4
MjApIC8qIFZFWDMgQnl0ZTEgKi8KKyNkZWZpbmUgWDg2X1ZFWF9MKHZleCkgKCh2ZXgpICYgMHgw
NCkgLyogVkVYMyBCeXRlMiwgVkVYMiBCeXRlMSAqLworLyogVkVYIGJpdCBmaWVsZHMgKi8KKyNk
ZWZpbmUgWDg2X1ZFWDNfTSh2ZXgpICgodmV4KSAmIDB4MWYpICAgICAgIC8qIFZFWDMgQnl0ZTEg
Ki8KKyNkZWZpbmUgWDg2X1ZFWDJfTSAxICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZFWDIu
TSBhbHdheXMgMSAqLworI2RlZmluZSBYODZfVkVYX1YodmV4KSAoKCh2ZXgpICYgMHg3OCkgPj4g
MykgLyogVkVYMyBCeXRlMiwgVkVYMiBCeXRlMSAqLworI2RlZmluZSBYODZfVkVYX1AodmV4KSAo
KHZleCkgJiAweDAzKSAgICAgICAgLyogVkVYMyBCeXRlMiwgVkVYMiBCeXRlMSAqLworI2RlZmlu
ZSBYODZfVkVYX01fTUFYIDB4MWYgICAgICAgICAgICAgICAgICAgLyogVkVYMy5NIE1heGltdW0g
dmFsdWUgKi8KKworZXh0ZXJuIHZvaWQgaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBjb25z
dCB2b2lkICprYWRkciwgaW50IHg4Nl82NCk7CitleHRlcm4gdm9pZCBpbnNuX2dldF9wcmVmaXhl
cyhzdHJ1Y3QgaW5zbiAqaW5zbik7CitleHRlcm4gdm9pZCBpbnNuX2dldF9vcGNvZGUoc3RydWN0
IGluc24gKmluc24pOworZXh0ZXJuIHZvaWQgaW5zbl9nZXRfbW9kcm0oc3RydWN0IGluc24gKmlu
c24pOworZXh0ZXJuIHZvaWQgaW5zbl9nZXRfc2liKHN0cnVjdCBpbnNuICppbnNuKTsKK2V4dGVy
biB2b2lkIGluc25fZ2V0X2Rpc3BsYWNlbWVudChzdHJ1Y3QgaW5zbiAqaW5zbik7CitleHRlcm4g
dm9pZCBpbnNuX2dldF9pbW1lZGlhdGUoc3RydWN0IGluc24gKmluc24pOworZXh0ZXJuIHZvaWQg
aW5zbl9nZXRfbGVuZ3RoKHN0cnVjdCBpbnNuICppbnNuKTsKKworLyogQXR0cmlidXRlIHdpbGwg
YmUgZGV0ZXJtaW5lZCBhZnRlciBnZXR0aW5nIE1vZFJNIChmb3Igb3Bjb2RlIGdyb3VwcykgKi8K
K3N0YXRpYyBpbmxpbmUgdm9pZCBpbnNuX2dldF9hdHRyaWJ1dGUoc3RydWN0IGluc24gKmluc24p
Cit7CisgICAgaW5zbl9nZXRfbW9kcm0oaW5zbik7Cit9CisKKy8qIEluc3RydWN0aW9uIHVzZXMg
UklQLXJlbGF0aXZlIGFkZHJlc3NpbmcgKi8KK2V4dGVybiBpbnQgaW5zbl9yaXBfcmVsYXRpdmUo
c3RydWN0IGluc24gKmluc24pOworCisvKiBJbml0IGluc24gZm9yIGtlcm5lbCB0ZXh0ICovCitz
dGF0aWMgaW5saW5lIHZvaWQga2VybmVsX2luc25faW5pdChzdHJ1Y3QgaW5zbiAqaW5zbiwgY29u
c3Qgdm9pZCAqa2FkZHIpCit7CisjaWZkZWYgQ09ORklHX1g4Nl82NAorICAgIGluc25faW5pdChp
bnNuLCBrYWRkciwgMSk7CisjZWxzZSAvKiBDT05GSUdfWDg2XzMyICovCisgICAgaW5zbl9pbml0
KGluc24sIGthZGRyLCAwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGludCBpbnNuX2lz
X2F2eChzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICBpZiAoICFpbnNuLT5wcmVmaXhlcy5nb3Qg
KQorICAgICAgICBpbnNuX2dldF9wcmVmaXhlcyhpbnNuKTsKKyAgICByZXR1cm4gKGluc24tPnZl
eF9wcmVmaXgudmFsdWUgIT0gMCk7Cit9CisKKy8qIEVuc3VyZSB0aGlzIGluc3RydWN0aW9uIGlz
IGRlY29kZWQgY29tcGxldGVseSAqLworc3RhdGljIGlubGluZSBpbnQgaW5zbl9jb21wbGV0ZShz
dHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICByZXR1cm4gaW5zbi0+b3Bjb2RlLmdvdCAmJiBpbnNu
LT5tb2RybS5nb3QgJiYgaW5zbi0+c2liLmdvdCAmJgorICAgICAgICAgICBpbnNuLT5kaXNwbGFj
ZW1lbnQuZ290ICYmIGluc24tPmltbWVkaWF0ZS5nb3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW5z
bl9ieXRlX3QgaW5zbl92ZXhfbV9iaXRzKHN0cnVjdCBpbnNuICppbnNuKQoreworICAgIGlmICgg
aW5zbi0+dmV4X3ByZWZpeC5uYnl0ZXMgPT0gMiApIC8qIDIgYnl0ZXMgVkVYICovCisgICAgICAg
IHJldHVybiBYODZfVkVYMl9NOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFg4Nl9WRVgzX00o
aW5zbi0+dmV4X3ByZWZpeC5ieXRlc1sxXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW5zbl9ieXRl
X3QgaW5zbl92ZXhfcF9iaXRzKHN0cnVjdCBpbnNuICppbnNuKQoreworICAgIGlmICggaW5zbi0+
dmV4X3ByZWZpeC5uYnl0ZXMgPT0gMiApIC8qIDIgYnl0ZXMgVkVYICovCisgICAgICAgIHJldHVy
biBYODZfVkVYX1AoaW5zbi0+dmV4X3ByZWZpeC5ieXRlc1sxXSk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gWDg2X1ZFWF9QKGluc24tPnZleF9wcmVmaXguYnl0ZXNbMl0pOworfQorCisvKiBH
ZXQgdGhlIGxhc3QgcHJlZml4IGlkIGZyb20gbGFzdCBwcmVmaXggb3IgVkVYIHByZWZpeCAqLwor
c3RhdGljIGlubGluZSBpbnQgaW5zbl9sYXN0X3ByZWZpeF9pZChzdHJ1Y3QgaW5zbiAqaW5zbikK
K3sKKyAgICBpZiAoIGluc25faXNfYXZ4KGluc24pICkKKyAgICAgICAgcmV0dXJuIGluc25fdmV4
X3BfYml0cyhpbnNuKTsgLyogVkVYX3AgaXMgYSBTSU1EIHByZWZpeCBpZCAqLworCisgICAgaWYg
KCBpbnNuLT5wcmVmaXhlcy5ieXRlc1szXSApCisgICAgICAgIHJldHVybiBpbmF0X2dldF9sYXN0
X3ByZWZpeF9pZChpbnNuLT5wcmVmaXhlcy5ieXRlc1szXSk7CisKKyAgICByZXR1cm4gMDsKK30K
KworLyogT2Zmc2V0IG9mIGVhY2ggZmllbGQgZnJvbSBrYWRkciAqLworc3RhdGljIGlubGluZSBp
bnQgaW5zbl9vZmZzZXRfcmV4X3ByZWZpeChzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICByZXR1
cm4gaW5zbi0+cHJlZml4ZXMubmJ5dGVzOworfQorc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZz
ZXRfdmV4X3ByZWZpeChzdHJ1Y3QgaW5zbiAqaW5zbikKK3sKKyAgICByZXR1cm4gaW5zbl9vZmZz
ZXRfcmV4X3ByZWZpeChpbnNuKSArIGluc24tPnJleF9wcmVmaXgubmJ5dGVzOworfQorc3RhdGlj
IGlubGluZSBpbnQgaW5zbl9vZmZzZXRfb3Bjb2RlKHN0cnVjdCBpbnNuICppbnNuKQoreworICAg
IHJldHVybiBpbnNuX29mZnNldF92ZXhfcHJlZml4KGluc24pICsgaW5zbi0+dmV4X3ByZWZpeC5u
Ynl0ZXM7Cit9CitzdGF0aWMgaW5saW5lIGludCBpbnNuX29mZnNldF9tb2RybShzdHJ1Y3QgaW5z
biAqaW5zbikKK3sKKyAgICByZXR1cm4gaW5zbl9vZmZzZXRfb3Bjb2RlKGluc24pICsgaW5zbi0+
b3Bjb2RlLm5ieXRlczsKK30KK3N0YXRpYyBpbmxpbmUgaW50IGluc25fb2Zmc2V0X3NpYihzdHJ1
Y3QgaW5zbiAqaW5zbikKK3sKKyAgICByZXR1cm4gaW5zbl9vZmZzZXRfbW9kcm0oaW5zbikgKyBp
bnNuLT5tb2RybS5uYnl0ZXM7Cit9CitzdGF0aWMgaW5saW5lIGludCBpbnNuX29mZnNldF9kaXNw
bGFjZW1lbnQoc3RydWN0IGluc24gKmluc24pCit7CisgICAgcmV0dXJuIGluc25fb2Zmc2V0X3Np
YihpbnNuKSArIGluc24tPnNpYi5uYnl0ZXM7Cit9CitzdGF0aWMgaW5saW5lIGludCBpbnNuX29m
ZnNldF9pbW1lZGlhdGUoc3RydWN0IGluc24gKmluc24pCit7CisgICAgcmV0dXJuIGluc25fb2Zm
c2V0X2Rpc3BsYWNlbWVudChpbnNuKSArIGluc24tPmRpc3BsYWNlbWVudC5uYnl0ZXM7Cit9CisK
KyNlbmRpZiAvKiBfQVNNX1g4Nl9JTlNOX0ggKi8KZGlmZiAtLWdpdCBhL3hlbi90b29scy9nZW4t
aW5zbi1hdHRyLXg4Ni5hd2sgYi94ZW4vdG9vbHMvZ2VuLWluc24tYXR0ci14ODYuYXdrCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYjhmNDAKLS0tIC9kZXYvbnVsbAorKysg
Yi94ZW4vdG9vbHMvZ2VuLWluc24tYXR0ci14ODYuYXdrCkBAIC0wLDAgKzEsMzg2IEBACisjIS9i
aW4vYXdrIC1mCisjIGdlbi1pbnNuLWF0dHIteDg2LmF3azogSW5zdHJ1Y3Rpb24gYXR0cmlidXRl
IHRhYmxlIGdlbmVyYXRvcgorIyBXcml0dGVuIGJ5IE1hc2FtaSBIaXJhbWF0c3UgPG1oaXJhbWF0
QHJlZGhhdC5jb20+CisjCisjIFVzYWdlOiBhd2sgLWYgZ2VuLWluc24tYXR0ci14ODYuYXdrIHg4
Ni1vcGNvZGUtbWFwLnR4dCA+IGluYXQtdGFibGVzLmMKKworIyBBd2sgaW1wbGVtZW50YXRpb24g
c2FuaXR5IGNoZWNrCitmdW5jdGlvbiBjaGVja19hd2tfaW1wbGVtZW50KCkgeworCWlmIChzcHJp
bnRmKCIleCIsIDApICE9ICIwIikKKwkJcmV0dXJuICJZb3VyIGF3ayBoYXMgYSBwcmludGYtZm9y
bWF0IHByb2JsZW0uIgorCXJldHVybiAiIgorfQorCisjIENsZWFyIHdvcmtpbmcgdmFycworZnVu
Y3Rpb24gY2xlYXJfdmFycygpIHsKKwlkZWxldGUgdGFibGUKKwlkZWxldGUgbHB0YWJsZTIKKwlk
ZWxldGUgbHB0YWJsZTEKKwlkZWxldGUgbHB0YWJsZTMKKwllaWQgPSAtMSAjIGVzY2FwZSBpZAor
CWdpZCA9IC0xICMgZ3JvdXAgaWQKKwlhaWQgPSAtMSAjIEFWWCBpZAorCXRuYW1lID0gIiIKK30K
KworQkVHSU4geworCSMgSW1wbGVtZW50YXRpb24gZXJyb3IgY2hlY2tpbmcKKwlhd2tjaGVja2Vk
ID0gY2hlY2tfYXdrX2ltcGxlbWVudCgpCisJaWYgKGF3a2NoZWNrZWQgIT0gIiIpIHsKKwkJcHJp
bnQgIkVycm9yOiAiIGF3a2NoZWNrZWQgPiAiL2Rldi9zdGRlcnIiCisJCXByaW50ICJQbGVhc2Ug
dHJ5IHRvIHVzZSBnYXdrLiIgPiAiL2Rldi9zdGRlcnIiCisJCWV4aXQgMQorCX0KKworCSMgU2V0
dXAgZ2VuZXJhdGluZyB0YWJsZXMKKwlwcmludCAiLyogeDg2IG9wY29kZSBtYXAgZ2VuZXJhdGVk
IGZyb20geDg2LW9wY29kZS1tYXAudHh0ICovIgorCXByaW50ICIvKiBEbyBub3QgY2hhbmdlIHRo
aXMgY29kZS4gKi9cbiIKKwlnZ2lkID0gMQorCWdlaWQgPSAxCisJZ2FpZCA9IDAKKwlkZWxldGUg
ZXRhYmxlCisJZGVsZXRlIGd0YWJsZQorCWRlbGV0ZSBhdGFibGUKKworCW9wbmRfZXhwciA9ICJe
W0EtWmEtei9dIgorCWV4dF9leHByID0gIl5cXCgiCisJc2VwX2V4cHIgPSAiXlxcfCQiCisJZ3Jv
dXBfZXhwciA9ICJeR3JwWzAtOUEtWmEtel0rIgorCisJaW1tX2V4cHIgPSAiXltJSkFPTF1bYS16
XSIKKwlpbW1fZmxhZ1siSWIiXSA9ICJJTkFUX01BS0VfSU1NKElOQVRfSU1NX0JZVEUpIgorCWlt
bV9mbGFnWyJKYiJdID0gIklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fQllURSkiCisJaW1tX2ZsYWdb
Ikl3Il0gPSAiSU5BVF9NQUtFX0lNTShJTkFUX0lNTV9XT1JEKSIKKwlpbW1fZmxhZ1siSWQiXSA9
ICJJTkFUX01BS0VfSU1NKElOQVRfSU1NX0RXT1JEKSIKKwlpbW1fZmxhZ1siSXEiXSA9ICJJTkFU
X01BS0VfSU1NKElOQVRfSU1NX1FXT1JEKSIKKwlpbW1fZmxhZ1siQXAiXSA9ICJJTkFUX01BS0Vf
SU1NKElOQVRfSU1NX1BUUikiCisJaW1tX2ZsYWdbIkl6Il0gPSAiSU5BVF9NQUtFX0lNTShJTkFU
X0lNTV9WV09SRDMyKSIKKwlpbW1fZmxhZ1siSnoiXSA9ICJJTkFUX01BS0VfSU1NKElOQVRfSU1N
X1ZXT1JEMzIpIgorCWltbV9mbGFnWyJJdiJdID0gIklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fVldP
UkQpIgorCWltbV9mbGFnWyJPYiJdID0gIklOQVRfTU9GRlNFVCIKKwlpbW1fZmxhZ1siT3YiXSA9
ICJJTkFUX01PRkZTRVQiCisJaW1tX2ZsYWdbIkx4Il0gPSAiSU5BVF9NQUtFX0lNTShJTkFUX0lN
TV9CWVRFKSIKKworCW1vZHJtX2V4cHIgPSAiXihbQ0RFR01OUFFSU1VWVy9dW2Etel0rfE5UQXxU
WzAxMl0pIgorCWZvcmNlNjRfZXhwciA9ICJcXChbZGZdNjRcXCkiCisJcmV4X2V4cHIgPSAiXlJF
WChcXC5bWFJXQl0rKSoiCisJZnB1X2V4cHIgPSAiXkVTQyIgIyBUT0RPCisKKwlscHJlZml4MV9l
eHByID0gIlxcKCg2NnwhRjMpXFwpIgorCWxwcmVmaXgyX2V4cHIgPSAiXFwoRjNcXCkiCisJbHBy
ZWZpeDNfZXhwciA9ICJcXCgoRjJ8IUYzfDY2XFwmRjIpXFwpIgorCWxwcmVmaXhfZXhwciA9ICJc
XCgoNjZ8RjJ8RjMpXFwpIgorCW1heF9scHJlZml4ID0gNAorCisJIyBBbGwgb3Bjb2RlcyBzdGFy
dGluZyB3aXRoIGxvd2VyLWNhc2UgJ3YnIG9yIHdpdGggKHYxKSBzdXBlcnNjcmlwdAorCSMgYWNj
ZXB0cyBWRVggcHJlZml4CisJdmV4b2tfb3Bjb2RlX2V4cHIgPSAiXnYuKiIKKwl2ZXhva19leHBy
ID0gIlxcKHYxXFwpIgorCSMgQWxsIG9wY29kZXMgd2l0aCAodikgc3VwZXJzY3JpcHQgc3VwcG9y
dHMgKm9ubHkqIFZFWCBwcmVmaXgKKwl2ZXhvbmx5X2V4cHIgPSAiXFwodlxcKSIKKworCXByZWZp
eF9leHByID0gIlxcKFByZWZpeFxcKSIKKwlwcmVmaXhfbnVtWyJPcGVyYW5kLVNpemUiXSA9ICJJ
TkFUX1BGWF9PUE5EU1oiCisJcHJlZml4X251bVsiUkVQTkUiXSA9ICJJTkFUX1BGWF9SRVBORSIK
KwlwcmVmaXhfbnVtWyJSRVAvUkVQRSJdID0gIklOQVRfUEZYX1JFUEUiCisJcHJlZml4X251bVsi
WEFDUVVJUkUiXSA9ICJJTkFUX1BGWF9SRVBORSIKKwlwcmVmaXhfbnVtWyJYUkVMRUFTRSJdID0g
IklOQVRfUEZYX1JFUEUiCisJcHJlZml4X251bVsiTE9DSyJdID0gIklOQVRfUEZYX0xPQ0siCisJ
cHJlZml4X251bVsiU0VHPUNTIl0gPSAiSU5BVF9QRlhfQ1MiCisJcHJlZml4X251bVsiU0VHPURT
Il0gPSAiSU5BVF9QRlhfRFMiCisJcHJlZml4X251bVsiU0VHPUVTIl0gPSAiSU5BVF9QRlhfRVMi
CisJcHJlZml4X251bVsiU0VHPUZTIl0gPSAiSU5BVF9QRlhfRlMiCisJcHJlZml4X251bVsiU0VH
PUdTIl0gPSAiSU5BVF9QRlhfR1MiCisJcHJlZml4X251bVsiU0VHPVNTIl0gPSAiSU5BVF9QRlhf
U1MiCisJcHJlZml4X251bVsiQWRkcmVzcy1TaXplIl0gPSAiSU5BVF9QRlhfQUREUlNaIgorCXBy
ZWZpeF9udW1bIlZFWCsxYnl0ZSJdID0gIklOQVRfUEZYX1ZFWDIiCisJcHJlZml4X251bVsiVkVY
KzJieXRlIl0gPSAiSU5BVF9QRlhfVkVYMyIKKworCWNsZWFyX3ZhcnMoKQorfQorCitmdW5jdGlv
biBzZW1hbnRpY19lcnJvcihtc2cpIHsKKwlwcmludCAiU2VtYW50aWMgZXJyb3IgYXQgIiBOUiAi
OiAiIG1zZyA+ICIvZGV2L3N0ZGVyciIKKwlleGl0IDEKK30KKworZnVuY3Rpb24gZGVidWcobXNn
KSB7CisJcHJpbnQgIkRFQlVHOiAiIG1zZworfQorCitmdW5jdGlvbiBhcnJheV9zaXplKGFyciwg
ICBpLGMpIHsKKwljID0gMAorCWZvciAoaSBpbiBhcnIpCisJCWMrKworCXJldHVybiBjCit9CisK
Ky9eVGFibGU6LyB7CisJcHJpbnQgIi8qICIgJDAgIiAqLyIKKwlpZiAodG5hbWUgIT0gIiIpCisJ
CXNlbWFudGljX2Vycm9yKCJIaXQgVGFibGU6IGJlZm9yZSBFbmRUYWJsZTouIik7Cit9CisKKy9e
UmVmZXJyZXI6LyB7CisJaWYgKE5GICE9IDEpIHsKKwkJIyBlc2NhcGUgb3Bjb2RlIHRhYmxlCisJ
CXJlZiA9ICIiCisJCWZvciAoaSA9IDI7IGkgPD0gTkY7IGkrKykKKwkJCXJlZiA9IHJlZiAkaQor
CQllaWQgPSBlc2NhcGVbcmVmXQorCQl0bmFtZSA9IHNwcmludGYoImluYXRfZXNjYXBlX3RhYmxl
XyVkIiwgZWlkKQorCX0KK30KKworL15BVlhjb2RlOi8geworCWlmIChORiAhPSAxKSB7CisJCSMg
QVZYL2VzY2FwZSBvcGNvZGUgdGFibGUKKwkJYWlkID0gJDIKKwkJaWYgKGdhaWQgPD0gYWlkKQor
CQkJZ2FpZCA9IGFpZCArIDEKKwkJaWYgKHRuYW1lID09ICIiKQkjIEFWWCBvbmx5IG9wY29kZSB0
YWJsZQorCQkJdG5hbWUgPSBzcHJpbnRmKCJpbmF0X2F2eF90YWJsZV8lZCIsICQyKQorCX0KKwlp
ZiAoYWlkID09IC0xICYmIGVpZCA9PSAtMSkJIyBwcmltYXJ5IG9wY29kZSB0YWJsZQorCQl0bmFt
ZSA9ICJpbmF0X3ByaW1hcnlfdGFibGUiCit9CisKKy9eR3JwVGFibGU6LyB7CisJcHJpbnQgIi8q
ICIgJDAgIiAqLyIKKwlpZiAoISgkMiBpbiBncm91cCkpCisJCXNlbWFudGljX2Vycm9yKCJObyBn
cm91cDogIiAkMiApCisJZ2lkID0gZ3JvdXBbJDJdCisJdG5hbWUgPSAiaW5hdF9ncm91cF90YWJs
ZV8iIGdpZAorfQorCitmdW5jdGlvbiBwcmludF90YWJsZSh0YmwsbmFtZSxmbXQsbikKK3sKKwlw
cmludCAiY29uc3QgaW5zbl9hdHRyX3QgIiBuYW1lICIgPSB7IgorCWZvciAoaSA9IDA7IGkgPCBu
OyBpKyspIHsKKwkJaWQgPSBzcHJpbnRmKGZtdCwgaSkKKwkJaWYgKHRibFtpZF0pCisJCQlwcmlu
dCAiICAgIFsiIGlkICJdID0gIiB0YmxbaWRdICIsIgorCX0KKwlwcmludCAifTsiCit9CisKKy9e
RW5kVGFibGUvIHsKKwlpZiAoZ2lkICE9IC0xKSB7CisJCSMgcHJpbnQgZ3JvdXAgdGFibGVzCisJ
CWlmIChhcnJheV9zaXplKHRhYmxlKSAhPSAwKSB7CisJCQlwcmludF90YWJsZSh0YWJsZSwgdG5h
bWUgIltJTkFUX0dST1VQX1RBQkxFX1NJWkVdIiwKKwkJCQkgICAgIjB4JXgiLCA4KQorCQkJZ3Rh
YmxlW2dpZCwwXSA9IHRuYW1lCisJCX0KKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTEpICE9IDAp
IHsKKwkJCXByaW50X3RhYmxlKGxwdGFibGUxLCB0bmFtZSAiXzFbSU5BVF9HUk9VUF9UQUJMRV9T
SVpFXSIsCisJCQkJICAgICIweCV4IiwgOCkKKwkJCWd0YWJsZVtnaWQsMV0gPSB0bmFtZSAiXzEi
CisJCX0KKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTIpICE9IDApIHsKKwkJCXByaW50X3RhYmxl
KGxwdGFibGUyLCB0bmFtZSAiXzJbSU5BVF9HUk9VUF9UQUJMRV9TSVpFXSIsCisJCQkJICAgICIw
eCV4IiwgOCkKKwkJCWd0YWJsZVtnaWQsMl0gPSB0bmFtZSAiXzIiCisJCX0KKwkJaWYgKGFycmF5
X3NpemUobHB0YWJsZTMpICE9IDApIHsKKwkJCXByaW50X3RhYmxlKGxwdGFibGUzLCB0bmFtZSAi
XzNbSU5BVF9HUk9VUF9UQUJMRV9TSVpFXSIsCisJCQkJICAgICIweCV4IiwgOCkKKwkJCWd0YWJs
ZVtnaWQsM10gPSB0bmFtZSAiXzMiCisJCX0KKwl9IGVsc2UgeworCQkjIHByaW50IHByaW1hcnkv
ZXNjYXBlZCB0YWJsZXMKKwkJaWYgKGFycmF5X3NpemUodGFibGUpICE9IDApIHsKKwkJCXByaW50
X3RhYmxlKHRhYmxlLCB0bmFtZSAiW0lOQVRfT1BDT0RFX1RBQkxFX1NJWkVdIiwKKwkJCQkgICAg
IjB4JTAyeCIsIDI1NikKKwkJCWV0YWJsZVtlaWQsMF0gPSB0bmFtZQorCQkJaWYgKGFpZCA+PSAw
KQorCQkJCWF0YWJsZVthaWQsMF0gPSB0bmFtZQorCQl9CisJCWlmIChhcnJheV9zaXplKGxwdGFi
bGUxKSAhPSAwKSB7CisJCQlwcmludF90YWJsZShscHRhYmxlMSx0bmFtZSAiXzFbSU5BVF9PUENP
REVfVEFCTEVfU0laRV0iLAorCQkJCSAgICAiMHglMDJ4IiwgMjU2KQorCQkJZXRhYmxlW2VpZCwx
XSA9IHRuYW1lICJfMSIKKwkJCWlmIChhaWQgPj0gMCkKKwkJCQlhdGFibGVbYWlkLDFdID0gdG5h
bWUgIl8xIgorCQl9CisJCWlmIChhcnJheV9zaXplKGxwdGFibGUyKSAhPSAwKSB7CisJCQlwcmlu
dF90YWJsZShscHRhYmxlMix0bmFtZSAiXzJbSU5BVF9PUENPREVfVEFCTEVfU0laRV0iLAorCQkJ
CSAgICAiMHglMDJ4IiwgMjU2KQorCQkJZXRhYmxlW2VpZCwyXSA9IHRuYW1lICJfMiIKKwkJCWlm
IChhaWQgPj0gMCkKKwkJCQlhdGFibGVbYWlkLDJdID0gdG5hbWUgIl8yIgorCQl9CisJCWlmIChh
cnJheV9zaXplKGxwdGFibGUzKSAhPSAwKSB7CisJCQlwcmludF90YWJsZShscHRhYmxlMyx0bmFt
ZSAiXzNbSU5BVF9PUENPREVfVEFCTEVfU0laRV0iLAorCQkJCSAgICAiMHglMDJ4IiwgMjU2KQor
CQkJZXRhYmxlW2VpZCwzXSA9IHRuYW1lICJfMyIKKwkJCWlmIChhaWQgPj0gMCkKKwkJCQlhdGFi
bGVbYWlkLDNdID0gdG5hbWUgIl8zIgorCQl9CisJfQorCXByaW50ICIiCisJY2xlYXJfdmFycygp
Cit9CisKK2Z1bmN0aW9uIGFkZF9mbGFncyhvbGQsbmV3KSB7CisJaWYgKG9sZCAmJiBuZXcpCisJ
CXJldHVybiBvbGQgIiB8ICIgbmV3CisJZWxzZSBpZiAob2xkKQorCQlyZXR1cm4gb2xkCisJZWxz
ZQorCQlyZXR1cm4gbmV3Cit9CisKKyMgY29udmVydCBvcGVyYW5kcyB0byBmbGFncy4KK2Z1bmN0
aW9uIGNvbnZlcnRfb3BlcmFuZHMoY291bnQsb3BuZCwgICAgICAgaSxqLGltbSxtb2QpCit7CisJ
aW1tID0gbnVsbAorCW1vZCA9IG51bGwKKwlmb3IgKGogPSAxOyBqIDw9IGNvdW50OyBqKyspIHsK
KwkJaSA9IG9wbmRbal0KKwkJaWYgKG1hdGNoKGksIGltbV9leHByKSA9PSAxKSB7CisJCQlpZiAo
IWltbV9mbGFnW2ldKQorCQkJCXNlbWFudGljX2Vycm9yKCJVbmtub3duIGltbSBvcG5kOiAiIGkp
CisJCQlpZiAoaW1tKSB7CisJCQkJaWYgKGkgIT0gIkliIikKKwkJCQkJc2VtYW50aWNfZXJyb3Io
IlNlY29uZCBJTU0gZXJyb3IiKQorCQkJCWltbSA9IGFkZF9mbGFncyhpbW0sICJJTkFUX1NDTkRJ
TU0iKQorCQkJfSBlbHNlCisJCQkJaW1tID0gaW1tX2ZsYWdbaV0KKwkJfSBlbHNlIGlmIChtYXRj
aChpLCBtb2RybV9leHByKSkKKwkJCW1vZCA9ICJJTkFUX01PRFJNIgorCX0KKwlyZXR1cm4gYWRk
X2ZsYWdzKGltbSwgbW9kKQorfQorCisvXlswLTlhLWZdK1w6LyB7CisJaWYgKE5SID09IDEpCisJ
CW5leHQKKwkjIGdldCBpbmRleAorCWlkeCA9ICIweCIgc3Vic3RyKCQxLCAxLCBpbmRleCgkMSwi
OiIpIC0gMSkKKwlpZiAoaWR4IGluIHRhYmxlKQorCQlzZW1hbnRpY19lcnJvcigiUmVkZWZpbmUg
IiBpZHggIiBpbiAiIHRuYW1lKQorCisJIyBjaGVjayBpZiBlc2NhcGVkIG9wY29kZQorCWlmICgi
ZXNjYXBlIiA9PSAkMikgeworCQlpZiAoJDMgIT0gIiMiKQorCQkJc2VtYW50aWNfZXJyb3IoIk5v
IGVzY2FwZWQgbmFtZSIpCisJCXJlZiA9ICIiCisJCWZvciAoaSA9IDQ7IGkgPD0gTkY7IGkrKykK
KwkJCXJlZiA9IHJlZiAkaQorCQlpZiAocmVmIGluIGVzY2FwZSkKKwkJCXNlbWFudGljX2Vycm9y
KCJSZWRlZmluZSBlc2NhcGUgKCIgcmVmICIpIikKKwkJZXNjYXBlW3JlZl0gPSBnZWlkCisJCWdl
aWQrKworCQl0YWJsZVtpZHhdID0gIklOQVRfTUFLRV9FU0NBUEUoIiBlc2NhcGVbcmVmXSAiKSIK
KwkJbmV4dAorCX0KKworCXZhcmlhbnQgPSBudWxsCisJIyBjb252ZXJ0cworCWkgPSAyCisJd2hp
bGUgKGkgPD0gTkYpIHsKKwkJb3Bjb2RlID0gJChpKyspCisJCWRlbGV0ZSBvcG5kcworCQlleHQg
PSBudWxsCisJCWZsYWdzID0gbnVsbAorCQlvcG5kID0gbnVsbAorCQkjIHBhcnNlIG9uZSBvcGNv
ZGUKKwkJaWYgKG1hdGNoKCRpLCBvcG5kX2V4cHIpKSB7CisJCQlvcG5kID0gJGkKKwkJCWNvdW50
ID0gc3BsaXQoJChpKyspLCBvcG5kcywgIiwiKQorCQkJZmxhZ3MgPSBjb252ZXJ0X29wZXJhbmRz
KGNvdW50LCBvcG5kcykKKwkJfQorCQlpZiAobWF0Y2goJGksIGV4dF9leHByKSkKKwkJCWV4dCA9
ICQoaSsrKQorCQlpZiAobWF0Y2goJGksIHNlcF9leHByKSkKKwkJCWkrKworCQllbHNlIGlmIChp
IDwgTkYpCisJCQlzZW1hbnRpY19lcnJvcigkaSAiIGlzIG5vdCBhIHNlcGFyYXRvciIpCisKKwkJ
IyBjaGVjayBpZiBncm91cCBvcGNvZGUKKwkJaWYgKG1hdGNoKG9wY29kZSwgZ3JvdXBfZXhwcikp
IHsKKwkJCWlmICghKG9wY29kZSBpbiBncm91cCkpIHsKKwkJCQlncm91cFtvcGNvZGVdID0gZ2dp
ZAorCQkJCWdnaWQrKworCQkJfQorCQkJZmxhZ3MgPSBhZGRfZmxhZ3MoZmxhZ3MsICJJTkFUX01B
S0VfR1JPVVAoIiBncm91cFtvcGNvZGVdICIpIikKKwkJfQorCQkjIGNoZWNrIGZvcmNlKG9yIGRl
ZmF1bHQpIDY0Yml0CisJCWlmIChtYXRjaChleHQsIGZvcmNlNjRfZXhwcikpCisJCQlmbGFncyA9
IGFkZF9mbGFncyhmbGFncywgIklOQVRfRk9SQ0U2NCIpCisKKwkJIyBjaGVjayBSRVggcHJlZml4
CisJCWlmIChtYXRjaChvcGNvZGUsIHJleF9leHByKSkKKwkJCWZsYWdzID0gYWRkX2ZsYWdzKGZs
YWdzLCAiSU5BVF9NQUtFX1BSRUZJWChJTkFUX1BGWF9SRVgpIikKKworCQkjIGNoZWNrIGNvcHJv
Y2Vzc29yIGVzY2FwZSA6IFRPRE8KKwkJaWYgKG1hdGNoKG9wY29kZSwgZnB1X2V4cHIpKQorCQkJ
ZmxhZ3MgPSBhZGRfZmxhZ3MoZmxhZ3MsICJJTkFUX01PRFJNIikKKworCQkjIGNoZWNrIFZFWCBj
b2RlcworCQlpZiAobWF0Y2goZXh0LCB2ZXhvbmx5X2V4cHIpKQorCQkJZmxhZ3MgPSBhZGRfZmxh
Z3MoZmxhZ3MsICJJTkFUX1ZFWE9LIHwgSU5BVF9WRVhPTkxZIikKKwkJZWxzZSBpZiAobWF0Y2go
ZXh0LCB2ZXhva19leHByKSB8fCBtYXRjaChvcGNvZGUsIHZleG9rX29wY29kZV9leHByKSkKKwkJ
CWZsYWdzID0gYWRkX2ZsYWdzKGZsYWdzLCAiSU5BVF9WRVhPSyIpCisKKwkJIyBjaGVjayBwcmVm
aXhlcworCQlpZiAobWF0Y2goZXh0LCBwcmVmaXhfZXhwcikpIHsKKwkJCWlmICghcHJlZml4X251
bVtvcGNvZGVdKQorCQkJCXNlbWFudGljX2Vycm9yKCJVbmtub3duIHByZWZpeDogIiBvcGNvZGUp
CisJCQlmbGFncyA9IGFkZF9mbGFncyhmbGFncywgIklOQVRfTUFLRV9QUkVGSVgoIiBwcmVmaXhf
bnVtW29wY29kZV0gIikiKQorCQl9CisJCWlmIChsZW5ndGgoZmxhZ3MpID09IDApCisJCQljb250
aW51ZQorCQkjIGNoZWNrIGlmIGxhc3QgcHJlZml4CisJCWlmIChtYXRjaChleHQsIGxwcmVmaXgx
X2V4cHIpKSB7CisJCQlscHRhYmxlMVtpZHhdID0gYWRkX2ZsYWdzKGxwdGFibGUxW2lkeF0sZmxh
Z3MpCisJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFOVCIKKwkJfQorCQlpZiAobWF0Y2goZXh0LCBs
cHJlZml4Ml9leHByKSkgeworCQkJbHB0YWJsZTJbaWR4XSA9IGFkZF9mbGFncyhscHRhYmxlMltp
ZHhdLGZsYWdzKQorCQkJdmFyaWFudCA9ICJJTkFUX1ZBUklBTlQiCisJCX0KKwkJaWYgKG1hdGNo
KGV4dCwgbHByZWZpeDNfZXhwcikpIHsKKwkJCWxwdGFibGUzW2lkeF0gPSBhZGRfZmxhZ3MobHB0
YWJsZTNbaWR4XSxmbGFncykKKwkJCXZhcmlhbnQgPSAiSU5BVF9WQVJJQU5UIgorCQl9CisJCWlm
ICghbWF0Y2goZXh0LCBscHJlZml4X2V4cHIpKXsKKwkJCXRhYmxlW2lkeF0gPSBhZGRfZmxhZ3Mo
dGFibGVbaWR4XSxmbGFncykKKwkJfQorCX0KKwlpZiAodmFyaWFudCkKKwkJdGFibGVbaWR4XSA9
IGFkZF9mbGFncyh0YWJsZVtpZHhdLHZhcmlhbnQpCit9CisKK0VORCB7CisJaWYgKGF3a2NoZWNr
ZWQgIT0gIiIpCisJCWV4aXQgMQorCSMgcHJpbnQgZXNjYXBlIG9wY29kZSBtYXAncyBhcnJheQor
CXByaW50ICIvKiBFc2NhcGUgb3Bjb2RlIG1hcCBhcnJheSAqLyIKKwlwcmludCAic3RhdGljIGNv
bnN0IGluc25fYXR0cl90ICogY29uc3QgaW5hdF9lc2NhcGVfdGFibGVzW0lOQVRfRVNDX01BWCAr
IDFdIiBcCisJICAgICAgIltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCisJZm9yIChpID0gMDsg
aSA8IGdlaWQ7IGkrKykKKwkJZm9yIChqID0gMDsgaiA8IG1heF9scHJlZml4OyBqKyspCisJCQlp
ZiAoZXRhYmxlW2ksal0pCisJCQkJcHJpbnQgIiAgICBbImkiXVsiaiJdID0gImV0YWJsZVtpLGpd
IiwiCisJcHJpbnQgIn07XG4iCisJIyBwcmludCBncm91cCBvcGNvZGUgbWFwJ3MgYXJyYXkKKwlw
cmludCAiLyogR3JvdXAgb3Bjb2RlIG1hcCBhcnJheSAqLyIKKwlwcmludCAic3RhdGljIGNvbnN0
IGluc25fYXR0cl90ICogY29uc3QgaW5hdF9ncm91cF90YWJsZXNbSU5BVF9HUlBfTUFYICsgMV0i
XAorCSAgICAgICJbSU5BVF9MU1RQRlhfTUFYICsgMV0gPSB7IgorCWZvciAoaSA9IDA7IGkgPCBn
Z2lkOyBpKyspCisJCWZvciAoaiA9IDA7IGogPCBtYXhfbHByZWZpeDsgaisrKQorCQkJaWYgKGd0
YWJsZVtpLGpdKQorCQkJCXByaW50ICIgICAgWyJpIl1bImoiXSA9ICJndGFibGVbaSxqXSIsIgor
CXByaW50ICJ9O1xuIgorCSMgcHJpbnQgQVZYIG9wY29kZSBtYXAncyBhcnJheQorCXByaW50ICIv
KiBBVlggb3Bjb2RlIG1hcCBhcnJheSAqLyIKKwlwcmludCAic3RhdGljIGNvbnN0IGluc25fYXR0
cl90ICogY29uc3QgaW5hdF9hdnhfdGFibGVzW1g4Nl9WRVhfTV9NQVggKyAxXSJcCisJICAgICAg
IltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCisJZm9yIChpID0gMDsgaSA8IGdhaWQ7IGkrKykK
KwkJZm9yIChqID0gMDsgaiA8IG1heF9scHJlZml4OyBqKyspCisJCQlpZiAoYXRhYmxlW2ksal0p
CisJCQkJcHJpbnQgIiAgICBbImkiXVsiaiJdID0gImF0YWJsZVtpLGpdIiwiCisJcHJpbnQgIn07
IgorfQotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0
dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=

From xen-devel-bounces@lists.xen.org Tue Sep 09 08:47:17 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Sep 2014 08:47:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRH4z-0007Mp-Kp; Tue, 09 Sep 2014 08:47:13 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <mdontu@bitdefender.com>) id 1XRH4x-0007Mh-Iz
	for xen-devel@lists.xensource.com; Tue, 09 Sep 2014 08:47:12 +0000
Received: from [85.158.137.68:38334] by server-15.bemta-3.messagelabs.com id
	DC/68-01573-E8EBE045; Tue, 09 Sep 2014 08:47:10 +0000
X-Env-Sender: mdontu@bitdefender.com
X-Msg-Ref: server-5.tower-31.messagelabs.com!1410252426!13366957!1
X-Originating-IP: [91.199.104.161]
X-SpamReason: No, hits=0.2 required=7.0 tests=RCVD_ILLEGAL_IP
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8782 invoked from network); 9 Sep 2014 08:47:06 -0000
Received: from mx01.buh.bitdefender.com (HELO mx.bitdefender.com)
	(91.199.104.161)
	by server-5.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 9 Sep 2014 08:47:06 -0000
Comment: DomainKeys? See http://domainkeys.sourceforge.net/
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=bitdefender.com;
	b=QrbrBQHe1A/N852NMHW2MocO16y940lnKSndBjaQBEBdJvVVJM9D0toPW70c+Mb5kfkw2z0IyYjkdwwuY9YhLKublOfbR2Ag6qkpfPweBRBL2djYw5QoAZ17I/NkYtNSwWhWqial8pJ1iFejQgc5anNt/oLlsfx+e4HOOcfgk94Mhu7tSF2ESV9hDQlmi+qqHbXadan74UZ9VuOaJIAhTnPbyakE7CtMtRJ2OQZSl6t8HGFSCKph/47eSQFy6H5Y5KttS6dGFq1OFEaXqN57WnxLBdTtKEVoCzkG9PUFaIDKLGpl8je29Q/aluj1BzVirD3J9H0joKuYQ8D9QjxM3A==;
	h=Received:Received:Received:Received:Received:Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:Organization:MIME-Version:Content-Type:Content-Transfer-Encoding:X-BitDefender-Scanner:X-BitDefender-Spam:X-BitDefender-SpamStamp:X-BitDefender-CF-Stamp;
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=bitdefender.com; h=date
	:from:to:cc:subject:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding; s=default;
	bh=6oVwDkbgKcXaXST0Qp7PhWRJR+s=; b=RPQn2F7De14YU+fuVPYxB2D5ngYN
	iIGaqHMyWwkTcaw6OwRcjJgrAJznXjlvmPr+SJxBuFMywGvmSVdfdluroLlU3XV4
	8mMqCVQK8+QBRgQOXmFgknE/72dCW8zcnvM6o3FKHpq+hhv55VSs8T7oU/EFJFuP
	Ew98Q8Atzra7Md18bGRllCv2MnWk8it+raudFhNhQlAeWcHIfK8RkPtwS0BRcfMW
	NCCbUsCqGNlIcrmCkZ+6IhFCb72EMuFy8cFZy9znywqfnFEaAgk1QjvpiwsR98Mc
	Mj0ctZS32T4cWV3h0rijxiaSN6RCpCllGhCG2O4eJ1nPRAqjj/5Hsgz6hA==
Received: (qmail 6960 invoked from network); 9 Sep 2014 11:47:05 +0300
Received: from unknown (HELO mx-sr.buh.bitdefender.com) (10.17.80.103)
	by mx.bitdefender.com with AES256-GCM-SHA384 encrypted SMTP;
	9 Sep 2014 11:47:05 +0300
Received: from smtp02.buh.bitdefender.net (smtp.bitdefender.biz [10.17.80.76])
	by mx-sr.buh.bitdefender.com (Postfix) with ESMTP id AED2180064
	for <xen-devel@lists.xensource.com>;
	Tue,  9 Sep 2014 11:47:05 +0300 (EEST)
Received: (qmail 12813 invoked from network); 9 Sep 2014 11:47:05 +0300
Received: from 5-12-80-141.residential.rdsnet.ro (HELO bitdefender.com)
	(mdontu@bitdefender.com@5.12.80.141)
	by smtp02.buh.bitdefender.net with SMTP; 9 Sep 2014 11:47:05 +0300
Date: Tue, 9 Sep 2014 11:47:05 +0300
From: Mihai =?UTF-8?B?RG9uyJt1?= <mdontu@bitdefender.com>
To: xen-devel@lists.xensource.com
Message-ID: <20140909114705.441fbb9e@bitdefender.com>
In-Reply-To: <1410229682-13912-1-git-send-email-mdontu@bitdefender.com>
References: <20140909052241.6e6cf6b7@bitdefender.com>
	<1410229682-13912-1-git-send-email-mdontu@bitdefender.com>
Organization: Bitdefender
MIME-Version: 1.0
X-BitDefender-Scanner: Clean, Agent: BitDefender qmail 3.1.4 on
	smtp02.buh.bitdefender.net, sigver: 7.56749
X-BitDefender-Spam: No (0)
X-BitDefender-SpamStamp: Build: [Engines: 2.15.3.18020, Dats: 365894,
	Stamp: 3], Multi: [Enabled], BW: [Enabled], RBL DNSBL: [Disabled],
	APM: [Enabled, Score: 500, Flags: 32DF6656; NN_LENGTH;
	NN_LEGIT_VALID_REPLY; NN_LEGIT_NET_SHARE; NN_LEGIT_SUMM_400_WORDS;
	NN_NO_LINK_NMD; NN_LEGIT_BITDEFENDER; NN_LEGIT_S_SQARE_BRACKETS;
	NN_LEGIT_MAILING_LIST_TO], SGN: [Enabled], URL: [Enabled], URI DNSBL:
	[Enabled, Timedout], RTDA: [Enabled, Hit: No, Details: v1.9.3; Id:
	2m1ghdn.18uq536q2.3gdiuo], total: 0(775)
X-BitDefender-CF-Stamp: none
Cc: keir@xen.org, Razvan Cojocaru <rcojocaru@bitdefender.com>,
	jbeulich@suse.com
Subject: Re: [Xen-devel] [PATCH 1/3] x86: add support for computing the
 instruction length
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

T24gVHVlc2RheSAwOSBTZXB0ZW1iZXIgMjAxNCAwNToyODowMiBNaWhhaSBEb27Im3Ugd3JvdGU6
Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGFu
IGluc3RydWN0aW9uLiBUaGUgZW50aXJlCj4gbG9naWMgcmVsaWVzIG9uIGEgc2V0IG9mIG9wY29k
ZSB0YWJsZXMgZ2VuZXJhdGVkIGJ5IGdlbi1pbnNuLWF0dHIteDg2LmF3ayBmcm9tCj4geDg2LW9w
Y29kZS1tYXAudHh0IGFuZCBhIG51bWJlciBvZiBzbWFsbCBoZWxwZXIgZnVuY3Rpb25zLiBJdCBv
cmlnaW5hdGVkIGluCj4gTGludXgsIHdoZXJlIGl0IHdhcyBhZGRlZCBieSBNYXNhbWkgSGlyYW1h
dHN1LiBTaW5jZSBpdCdzIGFuIGFsbW9zdCBpZGVudGljYWwKPiBjb3B5LCBpdCdzIHNlcGFyYXRl
ZCBmcm9tIHRoZSB4ODYgZW11bGF0b3IsIHNpbXBsaWZ5aW5nIGZ1dHVyZSB1cGRhdGVzLgo+IAo+
IC0tLQo+IENoYW5nZWQgc2luY2UgdjE6Cj4gICAqIGFkanVzdGVkIHRoZSBjb2Rpbmcgc3R5bGUg
dG8gbWF0Y2ggdGhlIHJlc3Qgb2YgeGVuCj4gICAqIG1vdmVkIHRoZSBzb3VyY2UgZmlsZXMgaW50
byB4ODYveDg2X2VtdWxhdGUKPiAgICogcmVwbGFjZWQgaW5hdC10YWJsZXMuYyB3aXRoIHg4Ni1v
cGNvZGUtbWFwLnR4dCBhbmQgZ2VuLWluc24tYXR0ci14ODYuYXdrCj4gICAgIHRoYXQgYXJlIHVz
ZWQgdG8gZ2VuZXJhdGUgaXQKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250
dUBiaXRkZWZlbmRlci5jb20+CgpUaGVyZSBhcmUgYSBjb3VwbGUgb2YgZGVzaWduIGlzc3VlcyB3
aXRoIHRoaXMgY29kZSB3aGljaCBKYW4gcG9pbnRlZApvdXQgYW5kIHdoaWNoIEkgb3Zlcmxvb2tl
ZC4gSSdtIHNvcnJ5LCBpdCB3YXMgbm90IGludGVudGlvbmFsLiBJJ2xsIGRvCm15IGJlc3QgdG8g
YWRkcmVzcyB0aGVtIGluIGEgZm9sbG93aW5nIGVtYWlsLgoKPiAgeGVuL2FyY2gveDg2L01ha2Vm
aWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQo+ICB4ZW4vYXJjaC94ODYveDg2X2Vt
dWxhdGUuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVs
YXRlL2luYXQuYyAgICAgICAgICAgICB8ICA5OCArKysKPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVs
YXRlL2luc24uYyAgICAgICAgICAgICB8IDYyNCArKysrKysrKysrKysrKysrKysKPiAgeGVuL2Fy
Y2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4dCB8IDk2MSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaW5hdC5oICAgICAgICAgICAg
ICAgICAgfCAyMTkgKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMuaCAg
ICAgICAgICAgIHwgIDI5ICsKPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9pbnNuLmggICAgICAgICAg
ICAgICAgICB8IDIwMSArKysrKysKPiAgeGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3ayAg
ICAgICAgICAgICB8IDM4NiArKysrKysrKysrKwo+ICA5IGZpbGVzIGNoYW5nZWQsIDI1MjkgaW5z
ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo
L3g4Ni94ODZfZW11bGF0ZS9pbmF0LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4
Ni94ODZfZW11bGF0ZS9pbnNuLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni94
ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9p
bmNsdWRlL2FzbS14ODYvaW5hdC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9h
c20teDg2L2luYXRfdHlwZXMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNt
LXg4Ni9pbnNuLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi90b29scy9nZW4taW5zbi1hdHRy
LXg4Ni5hd2sKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2Fy
Y2gveDg2L01ha2VmaWxlCj4gaW5kZXggYzFlMjQ0ZC4uNjM1MjlkMyAxMDA2NDQKPiAtLS0gYS94
ZW4vYXJjaC94ODYvTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKPiBAQCAt
NjIsNyArNjIsMTEgQEAgb2JqLXkgKz0geHN0YXRlLm8KPiAgCj4gIG9iai0kKGNyYXNoX2RlYnVn
KSArPSBnZGJzdHViLm8KPiAgCj4gLXg4Nl9lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVs
YXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+ICtpbmF0X3RhYmxlc19zY3JpcHQgPSAk
KEJBU0VESVIpL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3awo+ICtpbmF0X3RhYmxlc19tYXBz
ID0gJChCQVNFRElSKS9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiAr
Cj4gK3g4Nl9lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUv
eDg2X2VtdWxhdGUuaCBcCj4gKwl4ODZfZW11bGF0ZS9pbmF0LmMgeDg2X2VtdWxhdGUvaW5zbi5j
IHg4Nl9lbXVsYXRlL2luYXQtdGFibGVzLmMKPiAgCj4gIGVmaS0kKHg4Nl82NCkgOj0gJChzaGVs
bCBpZiBbICEgLXIgJChCQVNFRElSKS9pbmNsdWRlL3hlbi9jb21waWxlLmggLW8gXAo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1PICQoQkFTRURJUikvaW5jbHVkZS94ZW4vY29t
cGlsZS5oIF07IHRoZW4gXAo+IEBAIC0xNjUsOSArMTY5LDEyIEBAIGJvb3QvbWtlbGYzMjogYm9v
dC9ta2VsZjMyLmMKPiAgZWZpL21rcmVsb2M6IGVmaS9ta3JlbG9jLmMKPiAgCSQoSE9TVENDKSAk
KEhPU1RDRkxBR1MpIC1nIC1vICRAICQ8Cj4gIAo+ICt4ODZfZW11bGF0ZS9pbmF0LXRhYmxlcy5j
OiAkKGluYXRfdGFibGVzX3NjcmlwdCkgJChpbmF0X3RhYmxlc19tYXBzKQo+ICsJYXdrIC1mICQo
aW5hdF90YWJsZXNfc2NyaXB0KSAkKGluYXRfdGFibGVzX21hcHMpID4gJEAgfHwgcm0gLWYgJEAK
PiArCj4gIC5QSE9OWTogY2xlYW4KPiAgY2xlYW46Ogo+ICAJcm0gLWYgYXNtLW9mZnNldHMucyAq
LmxkcyBib290LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKPiAgCXJtIC1mICQo
QkFTRURJUikvLnhlbi1zeW1zLlswLTldKiBib290Ly4qLmQKPiAgCXJtIC1mICQoQkFTRURJUikv
Lnhlbi5lZmkuWzAtOV0qIGVmaS8qLm8gZWZpLy4qLmQgZWZpLyouZWZpIGVmaS9kaXNhYmxlZCBl
ZmkvbWtyZWxvYwo+IC0Jcm0gLWYgYm9vdC9yZWxvYy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVs
b2MuYmluCj4gKwlybSAtZiBib290L3JlbG9jLlMgYm9vdC9yZWxvYy5sbmsgYm9vdC9yZWxvYy5i
aW4geDg2X2VtdWxhdGUvaW5hdC10YWJsZXMuYwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv
eDg2X2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jCj4gaW5kZXggNzliNGFi
My4uMWQ0M2JiMSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUuYwo+ICsr
KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jCj4gQEAgLTIyLDMgKzIyLDUgQEAKPiAgICAg
ICAgICBjcHVfaGFzX2FtZF9lcnJhdHVtKCZjdXJyZW50X2NwdV9kYXRhLCBBTURfRVJSQVRVTV8j
I25yKQo+ICAKPiAgI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMiCj4gKyNpbmNs
dWRlICJ4ODZfZW11bGF0ZS9pbmF0LmMiCj4gKyNpbmNsdWRlICJ4ODZfZW11bGF0ZS9pbnNuLmMi
Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbmF0LmMgYi94ZW4vYXJj
aC94ODYveDg2X2VtdWxhdGUvaW5hdC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi5lNDI1MWJhCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL3g4Ni94ODZf
ZW11bGF0ZS9pbmF0LmMKPiBAQCAtMCwwICsxLDk4IEBACj4gKy8qCj4gKyAqIHg4NiBpbnN0cnVj
dGlvbiBhdHRyaWJ1dGUgdGFibGVzCj4gKyAqCj4gKyAqIFdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFt
YXRzdSA8bWhpcmFtYXRAcmVkaGF0LmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICog
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAr
ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiAr
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKPiArICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KPiArICoKPiArICov
Cj4gKyNpbmNsdWRlIDxhc20vaW5zbi5oPgo+ICsKPiArLyogQXR0cmlidXRlIHRhYmxlcyBhcmUg
Z2VuZXJhdGVkIGZyb20gb3Bjb2RlIG1hcCAqLwo+ICsjaW5jbHVkZSAiaW5hdC10YWJsZXMuYyIK
PiArCj4gKy8qIEF0dHJpYnV0ZSBzZWFyY2ggQVBJcyAqLwo+ICtpbnNuX2F0dHJfdCBpbmF0X2dl
dF9vcGNvZGVfYXR0cmlidXRlKGluc25fYnl0ZV90IG9wY29kZSkKPiArewo+ICsgICAgcmV0dXJu
IGluYXRfcHJpbWFyeV90YWJsZVtvcGNvZGVdOwo+ICt9Cj4gKwo+ICtpbnQgaW5hdF9nZXRfbGFz
dF9wcmVmaXhfaWQoaW5zbl9ieXRlX3QgbGFzdF9wZngpCj4gK3sKPiArICAgIGluc25fYXR0cl90
IGxwZnhfYXR0cjsKPiArCj4gKyAgICBscGZ4X2F0dHIgPSBpbmF0X2dldF9vcGNvZGVfYXR0cmli
dXRlKGxhc3RfcGZ4KTsKPiArICAgIHJldHVybiBpbmF0X2xhc3RfcHJlZml4X2lkKGxwZnhfYXR0
cik7Cj4gK30KPiArCj4gK2luc25fYXR0cl90IGluYXRfZ2V0X2VzY2FwZV9hdHRyaWJ1dGUoaW5z
bl9ieXRlX3Qgb3Bjb2RlLCBpbnQgbHBmeF9pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnNuX2F0dHJfdCBlc2NfYXR0cikKPiArewo+ICsgICAgY29uc3QgaW5z
bl9hdHRyX3QgKnRhYmxlOwo+ICsgICAgaW50IG47Cj4gKwo+ICsgICAgbiA9IGluYXRfZXNjYXBl
X2lkKGVzY19hdHRyKTsKPiArCj4gKyAgICB0YWJsZSA9IGluYXRfZXNjYXBlX3RhYmxlc1tuXVsw
XTsKPiArICAgIGlmICggIXRhYmxlICkKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIGlmICgg
aW5hdF9oYXNfdmFyaWFudCh0YWJsZVtvcGNvZGVdKSAmJiBscGZ4X2lkICkKPiArICAgIHsKPiAr
ICAgICAgICB0YWJsZSA9IGluYXRfZXNjYXBlX3RhYmxlc1tuXVtscGZ4X2lkXTsKPiArICAgICAg
ICBpZiAoICF0YWJsZSApCj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsgICAg
cmV0dXJuIHRhYmxlW29wY29kZV07Cj4gK30KPiArCj4gK2luc25fYXR0cl90IGluYXRfZ2V0X2dy
b3VwX2F0dHJpYnV0ZShpbnNuX2J5dGVfdCBtb2RybSwgaW50IGxwZnhfaWQsCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX2F0dHJfdCBncnBfYXR0cikKPiArewo+
ICsgICAgY29uc3QgaW5zbl9hdHRyX3QgKnRhYmxlOwo+ICsgICAgaW50IG47Cj4gKwo+ICsgICAg
biA9IGluYXRfZ3JvdXBfaWQoZ3JwX2F0dHIpOwo+ICsKPiArICAgIHRhYmxlID0gaW5hdF9ncm91
cF90YWJsZXNbbl1bMF07Cj4gKyAgICBpZiAoICF0YWJsZSApCj4gKyAgICAgICAgcmV0dXJuIGlu
YXRfZ3JvdXBfY29tbW9uX2F0dHJpYnV0ZShncnBfYXR0cik7Cj4gKyAgICBpZiAoIGluYXRfaGFz
X3ZhcmlhbnQodGFibGVbWDg2X01PRFJNX1JFRyhtb2RybSldKSAmJiBscGZ4X2lkICkKPiArICAg
IHsKPiArICAgICAgICB0YWJsZSA9IGluYXRfZ3JvdXBfdGFibGVzW25dW2xwZnhfaWRdOwo+ICsg
ICAgICAgIGlmICggIXRhYmxlICkKPiArICAgICAgICAgICAgcmV0dXJuIGluYXRfZ3JvdXBfY29t
bW9uX2F0dHJpYnV0ZShncnBfYXR0cik7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdGFibGVbWDg2
X01PRFJNX1JFRyhtb2RybSldIHwgaW5hdF9ncm91cF9jb21tb25fYXR0cmlidXRlKGdycF9hdHRy
KTsKPiArfQo+ICsKPiAraW5zbl9hdHRyX3QgaW5hdF9nZXRfYXZ4X2F0dHJpYnV0ZShpbnNuX2J5
dGVfdCBvcGNvZGUsIGluc25fYnl0ZV90IHZleF9tLAo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluc25fYnl0ZV90IHZleF9wKQo+ICt7Cj4gKyAgICBjb25zdCBpbnNuX2F0
dHJfdCAqdGFibGU7Cj4gKyAgICBpZiAoIHZleF9tID4gWDg2X1ZFWF9NX01BWCB8fCB2ZXhfcCA+
IElOQVRfTFNUUEZYX01BWCApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAvKiBBdCBmaXJz
dCwgdGhpcyBjaGVja3MgdGhlIG1hc3RlciB0YWJsZSAqLwo+ICsgICAgdGFibGUgPSBpbmF0X2F2
eF90YWJsZXNbdmV4X21dWzBdOwo+ICsgICAgaWYgKCAhdGFibGUgKQo+ICsgICAgICAgIHJldHVy
biAwOwo+ICsgICAgaWYgKCAhaW5hdF9pc19ncm91cCh0YWJsZVtvcGNvZGVdKSAmJiB2ZXhfcCAp
Cj4gKyAgICB7Cj4gKyAgICAgICAgLyogSWYgdGhpcyBpcyBub3QgYSBncm91cCwgZ2V0IGF0dHJp
YnV0ZSBkaXJlY3RseSAqLwo+ICsgICAgICAgIHRhYmxlID0gaW5hdF9hdnhfdGFibGVzW3ZleF9t
XVt2ZXhfcF07Cj4gKyAgICAgICAgaWYgKCAhdGFibGUgKQo+ICsgICAgICAgICAgICByZXR1cm4g
MDsKPiArICAgIH0KPiArICAgIHJldHVybiB0YWJsZVtvcGNvZGVdOwo+ICt9Cj4gZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbnNuLmMgYi94ZW4vYXJjaC94ODYveDg2X2Vt
dWxhdGUvaW5zbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ZDc0
MTZlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbnNu
LmMKPiBAQCAtMCwwICsxLDYyNCBAQAo+ICsvKgo+ICsgKiB4ODYgaW5zdHJ1Y3Rpb24gYW5hbHlz
aXMKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiAr
ICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSBJQk0gQ29ycG9y
YXRpb24sIDIwMDIsIDIwMDQsIDIwMDkKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8eGVuL3N0cmlu
Zy5oPgo+ICsjaW5jbHVkZSA8YXNtL2luYXQuaD4KPiArI2luY2x1ZGUgPGFzbS9pbnNuLmg+Cj4g
Kwo+ICsvKiBWZXJpZnkgbmV4dCBzaXplb2YodCkgYnl0ZXMgY2FuIGJlIG9uIHRoZSBzYW1lIGlu
c3RydWN0aW9uICovCj4gKyNkZWZpbmUgdmFsaWRhdGVfbmV4dCh0LCBpbnNuLCBuKSBcCj4gKyAg
ICAoKGluc24pLT5uZXh0X2J5dGUgKyBzaXplb2YodCkgKyBuIC0gKGluc24pLT5rYWRkciA8PSBN
QVhfSU5TTl9TSVpFKQo+ICsKPiArI2RlZmluZSBfX2dldF9uZXh0KHQsIGluc24pICAgICAgICAg
ICBcCj4gKyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB0IHIgPSAqKHQgKilp
bnNuLT5uZXh0X2J5dGU7ICBcCj4gKyAgICAgICAgaW5zbi0+bmV4dF9ieXRlICs9IHNpemVvZih0
KTsgXAo+ICsgICAgICAgIHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICB9KQo+ICsKPiArI2RlZmluZSBfX3BlZWtfbmJ5dGVfbmV4dCh0LCBpbnNuLCBuKSAgICAgICAg
XAo+ICsgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB0
IHIgPSAqKHQgKikoKGluc24pLT5uZXh0X2J5dGUgKyBuKTsgXAo+ICsgICAgICAgIHI7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgfSkKPiArCj4gKyNkZWZp
bmUgZ2V0X25leHQodCwgaW5zbikgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgaWYg
KCB1bmxpa2VseSghdmFsaWRhdGVfbmV4dCh0LCBpbnNuLCAwKSkgKSBcCj4gKyAgICAgICAgICAg
IGdvdG8gZXJyX291dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIF9fZ2V0
X25leHQodCwgaW5zbik7ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB9KQo+ICsK
PiArI2RlZmluZSBwZWVrX25ieXRlX25leHQodCwgaW5zbiwgbikgICAgICAgICAgICAgICBcCj4g
KyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg
ICAgICBpZiAoIHVubGlrZWx5KCF2YWxpZGF0ZV9uZXh0KHQsIGluc24sIG4pKSApIFwKPiArICAg
ICAgICAgICAgZ290byBlcnJfb3V0OyAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgX19wZWVrX25ieXRlX25leHQodCwgaW5zbiwgbik7ICAgICAgICAgICAgXAo+ICsgICAgICAg
IH0pCj4gKwo+ICsjZGVmaW5lIHBlZWtfbmV4dCh0LCBpbnNuKSBwZWVrX25ieXRlX25leHQodCwg
aW5zbiwgMCkKPiArCj4gKy8qKgo+ICsgKiBpbnNuX2luaXQoKSAtIGluaXRpYWxpemUgc3RydWN0
IGluc24KPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiB0byBiZSBpbml0aWFsaXplZAo+ICsgKiBA
a2FkZHI6CWFkZHJlc3MgKGluIGtlcm5lbCBtZW1vcnkpIG9mIGluc3RydWN0aW9uIChvciBjb3B5
IHRoZXJlb2YpCj4gKyAqIEB4ODZfNjQ6CSEwIGZvciA2NC1iaXQga2VybmVsIG9yIDY0LWJpdCBh
cHAKPiArICovCj4gK3ZvaWQgaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBjb25zdCB2b2lk
ICprYWRkciwgaW50IHg4Nl82NCkKPiArewo+ICsgICAgbWVtc2V0KGluc24sIDAsIHNpemVvZigq
aW5zbikpOwo+ICsgICAgaW5zbi0+a2FkZHIgPSBrYWRkcjsKPiArICAgIGluc24tPm5leHRfYnl0
ZSA9IGthZGRyOwo+ICsgICAgaW5zbi0+eDg2XzY0ID0geDg2XzY0ID8gMSA6IDA7Cj4gKyAgICBp
bnNuLT5vcG5kX2J5dGVzID0gNDsKPiArICAgIGlmICggeDg2XzY0ICkKPiArICAgICAgICBpbnNu
LT5hZGRyX2J5dGVzID0gODsKPiArICAgIGVsc2UKPiArICAgICAgICBpbnNuLT5hZGRyX2J5dGVz
ID0gNDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGluc25fZ2V0X3ByZWZpeGVzIC0gc2NhbiB4ODYg
aW5zdHJ1Y3Rpb24gcHJlZml4IGJ5dGVzCj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFp
bmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+ICsgKiBQb3B1bGF0ZXMgdGhlIEBpbnNuLT5wcmVmaXhl
cyBiaXRtYXAsIGFuZCB1cGRhdGVzIEBpbnNuLT5uZXh0X2J5dGUKPiArICogdG8gcG9pbnQgdG8g
dGhlIChmaXJzdCkgb3Bjb2RlLiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5wcmVmaXhlcy5nb3QKPiAr
ICogaXMgYWxyZWFkeSBzZXQuCj4gKyAqLwo+ICt2b2lkIGluc25fZ2V0X3ByZWZpeGVzKHN0cnVj
dCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCAqcHJlZml4ZXMgPSAm
aW5zbi0+cHJlZml4ZXM7Cj4gKyAgICBpbnNuX2F0dHJfdCBhdHRyOwo+ICsgICAgaW5zbl9ieXRl
X3QgYiwgbGI7Cj4gKyAgICBpbnQgaSwgbmI7Cj4gKwo+ICsgICAgaWYgKCBwcmVmaXhlcy0+Z290
ICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgbmIgPSAwOwo+ICsgICAgbGIgPSAwOwo+
ICsgICAgYiA9IHBlZWtfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAgICBhdHRyID0gaW5h
dF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShiKTsKPiArICAgIHdoaWxlICggaW5hdF9pc19sZWdhY3lf
cHJlZml4KGF0dHIpICkKPiArICAgIHsKPiArICAgICAgICAvKiBTa2lwIGlmIHNhbWUgcHJlZml4
ICovCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5iOyBpKyspCj4gKyAgICAgICAgICAgIGlm
ICggcHJlZml4ZXMtPmJ5dGVzW2ldID09IGIgKQo+ICsgICAgICAgICAgICAgICAgZ290byBmb3Vu
ZDsKPiArICAgICAgICBpZiAoIG5iID09IDQgKQo+ICsgICAgICAgICAgICAvKiBJbnZhbGlkIGlu
c3RydWN0aW9uICovCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIHByZWZpeGVzLT5i
eXRlc1tuYisrXSA9IGI7Cj4gKyAgICAgICAgaWYgKCBpbmF0X2lzX2FkZHJlc3Nfc2l6ZV9wcmVm
aXgoYXR0cikgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgLyogYWRkcmVzcyBzaXplIHN3
aXRjaGVzIDIvNCBvciA0LzggKi8KPiArICAgICAgICAgICAgaWYgKCBpbnNuLT54ODZfNjQgKQo+
ICsgICAgICAgICAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyBePSAxMjsKPiArICAgICAgICAgICAg
ZWxzZQo+ICsgICAgICAgICAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyBePSA2Owo+ICsgICAgICAg
IH0KPiArICAgICAgICBlbHNlIGlmICggaW5hdF9pc19vcGVyYW5kX3NpemVfcHJlZml4KGF0dHIp
ICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8qIG9wcmFuZCBzaXplIHN3aXRjaGVzIDIv
NCAqLwo+ICsgICAgICAgICAgICBpbnNuLT5vcG5kX2J5dGVzIF49IDY7Cj4gKyAgICAgICAgfQo+
ICsgICAgZm91bmQ6Cj4gKyAgICAgICAgcHJlZml4ZXMtPm5ieXRlcysrOwo+ICsgICAgICAgIGlu
c24tPm5leHRfYnl0ZSsrOwo+ICsgICAgICAgIGxiID0gYjsKPiArICAgICAgICBiID0gcGVla19u
ZXh0KGluc25fYnl0ZV90LCBpbnNuKTsKPiArICAgICAgICBhdHRyID0gaW5hdF9nZXRfb3Bjb2Rl
X2F0dHJpYnV0ZShiKTsKPiArICAgIH0KPiArICAgIC8qIFNldCB0aGUgbGFzdCBwcmVmaXggKi8K
PiArICAgIGlmICggbGIgJiYgbGIgIT0gaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10gKQo+ICsgICAg
ewo+ICsgICAgICAgIGlmICggdW5saWtlbHkoaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10pICkKPiAr
ICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8qIFN3YXAgdGhlIGxhc3QgcHJlZml4ICovCj4gKyAg
ICAgICAgICAgIGIgPSBpbnNuLT5wcmVmaXhlcy5ieXRlc1szXTsKPiArICAgICAgICAgICAgZm9y
IChpID0gMDsgaSA8IG5iOyBpKyspCj4gKyAgICAgICAgICAgICAgICBpZiAoIHByZWZpeGVzLT5i
eXRlc1tpXSA9PSBsYiApCj4gKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ZXMtPmJ5dGVzW2ld
ID0gYjsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10gPSBs
YjsKPiArICAgIH0KPiArCj4gKyAgICAvKiBEZWNvZGUgUkVYIHByZWZpeCAqLwo+ICsgICAgaWYg
KCBpbnNuLT54ODZfNjQgKQo+ICsgICAgewo+ICsgICAgICAgIGIgPSBwZWVrX25leHQoaW5zbl9i
eXRlX3QsIGluc24pOwo+ICsgICAgICAgIGF0dHIgPSBpbmF0X2dldF9vcGNvZGVfYXR0cmlidXRl
KGIpOwo+ICsgICAgICAgIGlmICggaW5hdF9pc19yZXhfcHJlZml4KGF0dHIpICkKPiArICAgICAg
ICB7Cj4gKyAgICAgICAgICAgIGluc24tPnJleF9wcmVmaXgudmFsdWUgPSBiOwo+ICsgICAgICAg
ICAgICBpbnNuLT5yZXhfcHJlZml4Lm5ieXRlcyA9IDE7Cj4gKyAgICAgICAgICAgIGluc24tPm5l
eHRfYnl0ZSsrOwo+ICsgICAgICAgICAgICBpZiAoIFg4Nl9SRVhfVyhiKSApCj4gKyAgICAgICAg
ICAgICAgICAvKiBSRVguVyBvdmVycmlkZXMgb3BuZF9zaXplICovCj4gKyAgICAgICAgICAgICAg
ICBpbnNuLT5vcG5kX2J5dGVzID0gODsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBpbnNu
LT5yZXhfcHJlZml4LmdvdCA9IDE7Cj4gKwo+ICsgICAgLyogRGVjb2RlIFZFWCBwcmVmaXggKi8K
PiArICAgIGIgPSBwZWVrX25leHQoaW5zbl9ieXRlX3QsIGluc24pOwo+ICsgICAgYXR0ciA9IGlu
YXRfZ2V0X29wY29kZV9hdHRyaWJ1dGUoYik7Cj4gKyAgICBpZiAoIGluYXRfaXNfdmV4X3ByZWZp
eChhdHRyKSApCj4gKyAgICB7Cj4gKyAgICAgICAgaW5zbl9ieXRlX3QgYjIgPSBwZWVrX25ieXRl
X25leHQoaW5zbl9ieXRlX3QsIGluc24sIDEpOwo+ICsgICAgICAgIGlmICggIWluc24tPng4Nl82
NCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBJbiAz
Mi1iaXRzIG1vZGUsIGlmIHRoZSBbNzo2XSBiaXRzIChtb2QgYml0cyBvZgo+ICsgICAgICAgICAg
ICAgKiBNb2RSTSkgb24gdGhlIHNlY29uZCBieXRlIGFyZSBub3QgMTFiLCBpdCBpcwo+ICsgICAg
ICAgICAgICAgKiBMRFMgb3IgTEVTLgo+ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAg
aWYgKCBYODZfTU9EUk1fTU9EKGIyKSAhPSAzICkKPiArICAgICAgICAgICAgICAgIGdvdG8gdmV4
X2VuZDsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5ieXRlc1swXSA9
IGI7Cj4gKyAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5ieXRlc1sxXSA9IGIyOwo+ICsgICAgICAg
IGlmICggaW5hdF9pc192ZXgzX3ByZWZpeChhdHRyKSApCj4gKyAgICAgICAgewo+ICsgICAgICAg
ICAgICBiMiA9IHBlZWtfbmJ5dGVfbmV4dChpbnNuX2J5dGVfdCwgaW5zbiwgMik7Cj4gKyAgICAg
ICAgICAgIGluc24tPnZleF9wcmVmaXguYnl0ZXNbMl0gPSBiMjsKPiArICAgICAgICAgICAgaW5z
bi0+dmV4X3ByZWZpeC5uYnl0ZXMgPSAzOwo+ICsgICAgICAgICAgICBpbnNuLT5uZXh0X2J5dGUg
Kz0gMzsKPiArICAgICAgICAgICAgaWYgKCBpbnNuLT54ODZfNjQgJiYgWDg2X1ZFWF9XKGIyKSAp
Cj4gKyAgICAgICAgICAgICAgICAvKiBWRVguVyBvdmVycmlkZXMgb3BuZF9zaXplICovCj4gKyAg
ICAgICAgICAgICAgICBpbnNuLT5vcG5kX2J5dGVzID0gODsKPiArICAgICAgICB9Cj4gKyAgICAg
ICAgZWxzZQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5uYnl0
ZXMgPSAyOwo+ICsgICAgICAgICAgICBpbnNuLT5uZXh0X2J5dGUgKz0gMjsKPiArICAgICAgICB9
Cj4gKyAgICB9Cj4gK3ZleF9lbmQ6Cj4gKyAgICBpbnNuLT52ZXhfcHJlZml4LmdvdCA9IDE7Cj4g
Kwo+ICsgICAgcHJlZml4ZXMtPmdvdCA9IDE7Cj4gKwo+ICtlcnJfb3V0Ogo+ICsgICAgcmV0dXJu
Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaW5zbl9nZXRfb3Bjb2RlIC0gY29sbGVjdCBvcGNvZGUo
cykKPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCj4gKyAq
Cj4gKyAqIFBvcHVsYXRlcyBAaW5zbi0+b3Bjb2RlLCB1cGRhdGVzIEBpbnNuLT5uZXh0X2J5dGUg
dG8gcG9pbnQgcGFzdCB0aGUKPiArICogb3Bjb2RlIGJ5dGUocyksIGFuZCBzZXQgQGluc24tPmF0
dHIgKGV4Y2VwdCBmb3IgZ3JvdXBzKS4KPiArICogSWYgbmVjZXNzYXJ5LCBmaXJzdCBjb2xsZWN0
cyBhbnkgcHJlY2VkaW5nIChwcmVmaXgpIGJ5dGVzLgo+ICsgKiBTZXRzIEBpbnNuLT5vcGNvZGUu
dmFsdWUgPSBvcGNvZGUxLiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5vcGNvZGUuZ290Cj4gKyAqIGlz
IGFscmVhZHkgMS4KPiArICovCj4gK3ZvaWQgaW5zbl9nZXRfb3Bjb2RlKHN0cnVjdCBpbnNuICpp
bnNuKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCAqb3Bjb2RlID0gJmluc24tPm9wY29k
ZTsKPiArICAgIGluc25fYnl0ZV90IG9wOwo+ICsgICAgaW50IHBmeF9pZDsKPiArICAgIGlmICgg
b3Bjb2RlLT5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiArICAgIGlmICggIWluc24tPnByZWZp
eGVzLmdvdCApCj4gKyAgICAgICAgaW5zbl9nZXRfcHJlZml4ZXMoaW5zbik7Cj4gKwo+ICsgICAg
LyogR2V0IGZpcnN0IG9wY29kZSAqLwo+ICsgICAgb3AgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwg
aW5zbik7Cj4gKyAgICBvcGNvZGUtPmJ5dGVzWzBdID0gb3A7Cj4gKyAgICBvcGNvZGUtPm5ieXRl
cyA9IDE7Cj4gKwo+ICsgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgVkVYIHByZWZpeCBvciBub3Qg
Ki8KPiArICAgIGlmICggaW5zbl9pc19hdngoaW5zbikgKQo+ICsgICAgewo+ICsgICAgICAgIGlu
c25fYnl0ZV90IG0sIHA7Cj4gKyAgICAgICAgbSA9IGluc25fdmV4X21fYml0cyhpbnNuKTsKPiAr
ICAgICAgICBwID0gaW5zbl92ZXhfcF9iaXRzKGluc24pOwo+ICsgICAgICAgIGluc24tPmF0dHIg
PSBpbmF0X2dldF9hdnhfYXR0cmlidXRlKG9wLCBtLCBwKTsKPiArICAgICAgICBpZiAoICFpbmF0
X2FjY2VwdF92ZXgoaW5zbi0+YXR0cikgJiYgIWluYXRfaXNfZ3JvdXAoaW5zbi0+YXR0cikgKQo+
ICsgICAgICAgICAgICBpbnNuLT5hdHRyID0gMDsgLyogVGhpcyBpbnN0cnVjdGlvbiBpcyBiYWQg
Ki8KPiArICAgICAgICBnb3RvIGVuZDsgICAgICAgICAgIC8qIFZFWCBoYXMgb25seSAxIGJ5dGUg
Zm9yIG9wY29kZSAqLwo+ICsgICAgfQo+ICsKPiArICAgIGluc24tPmF0dHIgPSBpbmF0X2dldF9v
cGNvZGVfYXR0cmlidXRlKG9wKTsKPiArICAgIHdoaWxlICggaW5hdF9pc19lc2NhcGUoaW5zbi0+
YXR0cikgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIEdldCBlc2NhcGVkIG9wY29kZSAqLwo+ICsg
ICAgICAgIG9wID0gZ2V0X25leHQoaW5zbl9ieXRlX3QsIGluc24pOwo+ICsgICAgICAgIG9wY29k
ZS0+Ynl0ZXNbb3Bjb2RlLT5uYnl0ZXMrK10gPSBvcDsKPiArICAgICAgICBwZnhfaWQgPSBpbnNu
X2xhc3RfcHJlZml4X2lkKGluc24pOwo+ICsgICAgICAgIGluc24tPmF0dHIgPSBpbmF0X2dldF9l
c2NhcGVfYXR0cmlidXRlKG9wLCBwZnhfaWQsIGluc24tPmF0dHIpOwo+ICsgICAgfQo+ICsgICAg
aWYgKCBpbmF0X211c3RfdmV4KGluc24tPmF0dHIpICkKPiArICAgICAgICBpbnNuLT5hdHRyID0g
MDsgLyogVGhpcyBpbnN0cnVjdGlvbiBpcyBiYWQgKi8KPiArZW5kOgo+ICsgICAgb3Bjb2RlLT5n
b3QgPSAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybjsKPiArfQo+ICsKPiArLyoqCj4g
KyAqIGluc25fZ2V0X21vZHJtIC0gY29sbGVjdCBNb2RSTSBieXRlLCBpZiBhbnkKPiArICogQGlu
c246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCj4gKyAqCj4gKyAqIFBvcHVs
YXRlcyBAaW5zbi0+bW9kcm0gYW5kIHVwZGF0ZXMgQGluc24tPm5leHRfYnl0ZSB0byBwb2ludCBw
YXN0IHRoZQo+ICsgKiBNb2RSTSBieXRlLCBpZiBhbnkuICBJZiBuZWNlc3NhcnksIGZpcnN0IGNv
bGxlY3RzIHRoZSBwcmVjZWRpbmcgYnl0ZXMKPiArICogKHByZWZpeGVzIGFuZCBvcGNvZGUocykp
LiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5tb2RybS5nb3QgaXMgYWxyZWFkeSAxLgo+ICsgKi8KPiAr
dm9pZCBpbnNuX2dldF9tb2RybShzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3RydWN0
IGluc25fZmllbGQgKm1vZHJtID0gJmluc24tPm1vZHJtOwo+ICsgICAgaW5zbl9ieXRlX3QgcGZ4
X2lkLCBtb2Q7Cj4gKyAgICBpZiAoIG1vZHJtLT5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiAr
ICAgIGlmICggIWluc24tPm9wY29kZS5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X29wY29kZShp
bnNuKTsKPiArCj4gKyAgICBpZiAoIGluYXRfaGFzX21vZHJtKGluc24tPmF0dHIpICkKPiArICAg
IHsKPiArICAgICAgICBtb2QgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAgICAg
ICAgbW9kcm0tPnZhbHVlID0gbW9kOwo+ICsgICAgICAgIG1vZHJtLT5uYnl0ZXMgPSAxOwo+ICsg
ICAgICAgIGlmICggaW5hdF9pc19ncm91cChpbnNuLT5hdHRyKSApCj4gKyAgICAgICAgewo+ICsg
ICAgICAgICAgICBwZnhfaWQgPSBpbnNuX2xhc3RfcHJlZml4X2lkKGluc24pOwo+ICsgICAgICAg
ICAgICBpbnNuLT5hdHRyID0gaW5hdF9nZXRfZ3JvdXBfYXR0cmlidXRlKG1vZCwgcGZ4X2lkLCBp
bnNuLT5hdHRyKTsKPiArICAgICAgICAgICAgaWYgKCBpbnNuX2lzX2F2eChpbnNuKSAmJiAhaW5h
dF9hY2NlcHRfdmV4KGluc24tPmF0dHIpICkKPiArICAgICAgICAgICAgICAgIGluc24tPmF0dHIg
PSAwOyAvKiBUaGlzIGlzIGJhZCAqLwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBp
ZiAoIGluc24tPng4Nl82NCAmJiBpbmF0X2lzX2ZvcmNlNjQoaW5zbi0+YXR0cikgKQo+ICsgICAg
ICAgIGluc24tPm9wbmRfYnl0ZXMgPSA4Owo+ICsgICAgbW9kcm0tPmdvdCA9IDE7Cj4gKwo+ICtl
cnJfb3V0Ogo+ICsgICAgcmV0dXJuOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW5zbl9yaXBfcmVs
YXRpdmUoKSAtIERvZXMgaW5zdHJ1Y3Rpb24gdXNlIFJJUC1yZWxhdGl2ZSBhZGRyZXNzaW5nIG1v
ZGU/Cj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsg
Kgo+ICsgKiBJZiBuZWNlc3NhcnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0
byBhbmQgaW5jbHVkaW5nIHRoZQo+ICsgKiBNb2RSTSBieXRlLiAgTm8gZWZmZWN0IGlmIEBpbnNu
LT54ODZfNjQgaXMgMC4KPiArICovCj4gK2ludCBpbnNuX3JpcF9yZWxhdGl2ZShzdHJ1Y3QgaW5z
biAqaW5zbikKPiArewo+ICsgICAgc3RydWN0IGluc25fZmllbGQgKm1vZHJtID0gJmluc24tPm1v
ZHJtOwo+ICsKPiArICAgIGlmICggIWluc24tPng4Nl82NCApCj4gKyAgICAgICAgcmV0dXJuIDA7
Cj4gKyAgICBpZiAoICFtb2RybS0+Z290ICkKPiArICAgICAgICBpbnNuX2dldF9tb2RybShpbnNu
KTsKPiArICAgIC8qCj4gKyAgICAgKiBGb3IgcmlwLXJlbGF0aXZlIGluc3RydWN0aW9ucywgdGhl
IG1vZCBmaWVsZCAodG9wIDIgYml0cykKPiArICAgICAqIGlzIHplcm8gYW5kIHRoZSByL20gZmll
bGQgKGJvdHRvbSAzIGJpdHMpIGlzIDB4NS4KPiArICAgICAqLwo+ICsgICAgcmV0dXJuIChtb2Ry
bS0+bmJ5dGVzICYmIChtb2RybS0+dmFsdWUgJiAweGM3KSA9PSAweDUpOwo+ICt9Cj4gKwo+ICsv
KioKPiArICogaW5zbl9nZXRfc2liKCkgLSBHZXQgdGhlIFNJQiBieXRlIG9mIGluc3RydWN0aW9u
Cj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+
ICsgKiBJZiBuZWNlc3NhcnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0byBh
bmQgaW5jbHVkaW5nIHRoZQo+ICsgKiBNb2RSTSBieXRlLgo+ICsgKi8KPiArdm9pZCBpbnNuX2dl
dF9zaWIoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGluc25fYnl0ZV90IG1vZHJtOwo+
ICsKPiArICAgIGlmICggaW5zbi0+c2liLmdvdCApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAg
aWYgKCAhaW5zbi0+bW9kcm0uZ290ICkKPiArICAgICAgICBpbnNuX2dldF9tb2RybShpbnNuKTsK
PiArICAgIGlmICggaW5zbi0+bW9kcm0ubmJ5dGVzICkKPiArICAgIHsKPiArICAgICAgICBtb2Ry
bSA9IChpbnNuX2J5dGVfdClpbnNuLT5tb2RybS52YWx1ZTsKPiArICAgICAgICBpZiAoIGluc24t
PmFkZHJfYnl0ZXMgIT0gMiAmJiBYODZfTU9EUk1fTU9EKG1vZHJtICkgIT0gMyAmJgo+ICsgICAg
ICAgICAgICBYODZfTU9EUk1fUk0obW9kcm0pID09IDQpCj4gKyAgICAgICAgewo+ICsgICAgICAg
ICAgICBpbnNuLT5zaWIudmFsdWUgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAg
ICAgICAgICAgIGluc24tPnNpYi5uYnl0ZXMgPSAxOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiAr
ICAgIGluc24tPnNpYi5nb3QgPSAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybjsKPiAr
fQo+ICsKPiArLyoqCj4gKyAqIGluc25fZ2V0X2Rpc3BsYWNlbWVudCgpIC0gR2V0IHRoZSBkaXNw
bGFjZW1lbnQgb2YgaW5zdHJ1Y3Rpb24KPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWlu
aW5nIGluc3RydWN0aW9uCj4gKyAqCj4gKyAqIElmIG5lY2Vzc2FyeSwgZmlyc3QgY29sbGVjdHMg
dGhlIGluc3RydWN0aW9uIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlCj4gKyAqIFNJQiBieXRlLgo+
ICsgKiBEaXNwbGFjZW1lbnQgdmFsdWUgaXMgc2lnbi1leHBhbmRlZC4KPiArICovCj4gK3ZvaWQg
aW5zbl9nZXRfZGlzcGxhY2VtZW50KHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpbnNu
X2J5dGVfdCBtb2QsIHJtLCBiYXNlOwo+ICsKPiArICAgIGlmICggaW5zbi0+ZGlzcGxhY2VtZW50
LmdvdCApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgaWYgKCAhaW5zbi0+c2liLmdvdCApCj4g
KyAgICAgICAgaW5zbl9nZXRfc2liKGluc24pOwo+ICsgICAgaWYgKCBpbnNuLT5tb2RybS5uYnl0
ZXMgKQo+ICsgICAgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSW50ZXJwcmV0aW5nIHRo
ZSBtb2RybSBieXRlOgo+ICsgICAgICAgICAqIG1vZCA9IDAwIC0gbm8gZGlzcGxhY2VtZW50IGZp
ZWxkcyAoZXhjZXB0aW9ucyBiZWxvdykKPiArICAgICAgICAgKiBtb2QgPSAwMSAtIDEtYnl0ZSBk
aXNwbGFjZW1lbnQgZmllbGQKPiArICAgICAgICAgKiBtb2QgPSAxMCAtIGRpc3BsYWNlbWVudCBm
aWVsZCBpcyA0IGJ5dGVzLCBvciAyIGJ5dGVzIGlmCj4gKyAgICAgICAgICogCWFkZHJlc3Mgc2l6
ZSA9IDIgKDB4NjcgcHJlZml4IGluIDMyLWJpdCBtb2RlKQo+ICsgICAgICAgICAqIG1vZCA9IDEx
IC0gbm8gbWVtb3J5IG9wZXJhbmQKPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIElmIGFkZHJl
c3Mgc2l6ZSA9IDIuLi4KPiArICAgICAgICAgKiBtb2QgPSAwMCwgci9tID0gMTEwIC0gZGlzcGxh
Y2VtZW50IGZpZWxkIGlzIDIgYnl0ZXMKPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIElmIGFk
ZHJlc3Mgc2l6ZSAhPSAyLi4uCj4gKyAgICAgICAgICogbW9kICE9IDExLCByL20gPSAxMDAgLSBT
SUIgYnl0ZSBleGlzdHMKPiArICAgICAgICAgKiBtb2QgPSAwMCwgU0lCIGJhc2UgPSAxMDEgLSBk
aXNwbGFjZW1lbnQgZmllbGQgaXMgNCBieXRlcwo+ICsgICAgICAgICAqIG1vZCA9IDAwLCByL20g
PSAxMDEgLSByaXAtcmVsYXRpdmUgYWRkcmVzc2luZywgZGlzcGxhY2VtZW50Cj4gKyAgICAgICAg
ICogCWZpZWxkIGlzIDQgYnl0ZXMKPiArICAgICAgICAgKi8KPiArICAgICAgICBtb2QgPSBYODZf
TU9EUk1fTU9EKGluc24tPm1vZHJtLnZhbHVlKTsKPiArICAgICAgICBybSA9IFg4Nl9NT0RSTV9S
TShpbnNuLT5tb2RybS52YWx1ZSk7Cj4gKyAgICAgICAgYmFzZSA9IFg4Nl9TSUJfQkFTRShpbnNu
LT5zaWIudmFsdWUpOwo+ICsgICAgICAgIGlmICggbW9kID09IDMgKQo+ICsgICAgICAgICAgICBn
b3RvIG91dDsKPiArICAgICAgICBpZiAoIG1vZCA9PSAxICkKPiArICAgICAgICB7Cj4gKyAgICAg
ICAgICAgIGluc24tPmRpc3BsYWNlbWVudC52YWx1ZSA9IGdldF9uZXh0KGNoYXIsIGluc24pOwo+
ICsgICAgICAgICAgICBpbnNuLT5kaXNwbGFjZW1lbnQubmJ5dGVzID0gMTsKPiArICAgICAgICB9
Cj4gKyAgICAgICAgZWxzZSBpZiAoIGluc24tPmFkZHJfYnl0ZXMgPT0gMiApCj4gKyAgICAgICAg
ewo+ICsgICAgICAgICAgICBpZiAoIChtb2QgPT0gMCAmJiBybSA9PSA2KSB8fCBtb2QgPT0gMiAp
Cj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVudC52
YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKPiArICAgICAgICAgICAgICAgIGluc24tPmRp
c3BsYWNlbWVudC5uYnl0ZXMgPSAyOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsg
ICAgICAgIGVsc2UKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICggKG1vZCA9PSAwICYm
IHJtID09IDUpIHx8IG1vZCA9PSAyIHx8IChtb2QgPT0gMCAmJiBiYXNlID09IDUpICkKPiArICAg
ICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgaW5zbi0+ZGlzcGxhY2VtZW50LnZhbHVlID0g
Z2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVu
dC5uYnl0ZXMgPSA0Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICtv
dXQ6Cj4gKyAgICBpbnNuLT5kaXNwbGFjZW1lbnQuZ290ID0gMTsKPiArCj4gK2Vycl9vdXQ6Cj4g
KyAgICByZXR1cm47Cj4gK30KPiArCj4gKy8qIERlY29kZSBtb2Zmc2V0MTYvMzIvNjQuIFJldHVy
biAwIGlmIGZhaWxlZCAqLwo+ICtzdGF0aWMgaW50IF9fZ2V0X21vZmZzZXQoc3RydWN0IGluc24g
Kmluc24pCj4gK3sKPiArICAgIHN3aXRjaCAoIGluc24tPmFkZHJfYnl0ZXMgKQo+ICsgICAgewo+
ICsgICAgY2FzZSAyOgo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLnZhbHVlID0gZ2V0X25leHQo
c2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLm5ieXRlcyA9IDI7Cj4gKyAg
ICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDQ6Cj4gKyAgICAgICAgaW5zbi0+bW9mZnNldDEudmFs
dWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLm5ieXRl
cyA9IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDg6Cj4gKyAgICAgICAgaW5zbi0+
bW9mZnNldDEudmFsdWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1v
ZmZzZXQxLm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgaW5zbi0+bW9mZnNldDIudmFsdWUgPSBnZXRf
bmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQyLm5ieXRlcyA9IDQ7Cj4g
KyAgICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9k
aWZpZWQgbWFudWFsbHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKyAg
ICBpbnNuLT5tb2Zmc2V0MS5nb3QgPSBpbnNuLT5tb2Zmc2V0Mi5nb3QgPSAxOwo+ICsKPiArICAg
IHJldHVybiAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsv
KiBEZWNvZGUgaW1tIHYzMihJeikuIFJldHVybiAwIGlmIGZhaWxlZCAqLwo+ICtzdGF0aWMgaW50
IF9fZ2V0X2ltbXYzMihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3dpdGNoICggaW5z
bi0+b3BuZF9ieXRlcyApCj4gKyAgICB7Cj4gKyAgICBjYXNlIDI6Cj4gKyAgICAgICAgaW5zbi0+
aW1tZWRpYXRlLnZhbHVlID0gZ2V0X25leHQoc2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24t
PmltbWVkaWF0ZS5uYnl0ZXMgPSAyOwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSA0Ogo+
ICsgICAgY2FzZSA4Ogo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0
KGludCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDQ7Cj4gKyAg
ICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9kaWZp
ZWQgbWFudWFsbHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKwo+ICsg
ICAgcmV0dXJuIDE7Cj4gKwo+ICtlcnJfb3V0Ogo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g
Ky8qIERlY29kZSBpbW0gdjY0KEl2L092KSwgUmV0dXJuIDAgaWYgZmFpbGVkICovCj4gK3N0YXRp
YyBpbnQgX19nZXRfaW1tdihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3dpdGNoICgg
aW5zbi0+b3BuZF9ieXRlcyApCj4gKyAgICB7Cj4gKyAgICBjYXNlIDI6Cj4gKyAgICAgICAgaW5z
bi0+aW1tZWRpYXRlMS52YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKPiArICAgICAgICBp
bnNuLT5pbW1lZGlhdGUxLm5ieXRlcyA9IDI7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNl
IDQ6Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMS52YWx1ZSA9IGdldF9uZXh0KGludCwgaW5z
bik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMS5uYnl0ZXMgPSA0Owo+ICsgICAgICAgIGJy
ZWFrOwo+ICsgICAgY2FzZSA4Ogo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEudmFsdWUgPSBn
ZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEubmJ5dGVzID0g
NDsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLnZhbHVlID0gZ2V0X25leHQoaW50LCBpbnNu
KTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgYnJl
YWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9kaWZpZWQgbWFudWFs
bHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKyAgICBpbnNuLT5pbW1l
ZGlhdGUxLmdvdCA9IGluc24tPmltbWVkaWF0ZTIuZ290ID0gMTsKPiArCj4gKyAgICByZXR1cm4g
MTsKPiArZXJyX291dDoKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBEZWNvZGUgcHRy
MTY6MTYvMzIoQXApICovCj4gK3N0YXRpYyBpbnQgX19nZXRfaW1tcHRyKHN0cnVjdCBpbnNuICpp
bnNuKQo+ICt7Cj4gKyAgICBzd2l0Y2ggKCBpbnNuLT5vcG5kX2J5dGVzICkKPiArICAgIHsKPiAr
ICAgIGNhc2UgMjoKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUxLnZhbHVlID0gZ2V0X25leHQo
c2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEubmJ5dGVzID0gMjsKPiAr
ICAgICAgICBicmVhazsKPiArICAgIGNhc2UgNDoKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUx
LnZhbHVlID0gZ2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUx
Lm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDg6Cj4gKyAgICAgICAg
LyogcHRyMTY6NjQgaXMgbm90IGV4aXN0IChubyBzZWdtZW50KSAqLwo+ICsgICAgICAgIHJldHVy
biAwOwo+ICsgICAgZGVmYXVsdDogLyogb3BuZF9ieXRlcyBtdXN0IGJlIG1vZGlmaWVkIG1hbnVh
bGx5ICovCj4gKyAgICAgICAgZ290byBlcnJfb3V0Owo+ICsgICAgfQo+ICsgICAgaW5zbi0+aW1t
ZWRpYXRlMi52YWx1ZSA9IGdldF9uZXh0KHVuc2lnbmVkIHNob3J0LCBpbnNuKTsKPiArICAgIGlu
c24tPmltbWVkaWF0ZTIubmJ5dGVzID0gMjsKPiArICAgIGluc24tPmltbWVkaWF0ZTEuZ290ID0g
aW5zbi0+aW1tZWRpYXRlMi5nb3QgPSAxOwo+ICsKPiArICAgIHJldHVybiAxOwo+ICtlcnJfb3V0
Ogo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnNuX2dldF9pbW1lZGlh
dGUoKSAtIEdldCB0aGUgaW1tZWRpYXRlcyBvZiBpbnN0cnVjdGlvbgo+ICsgKiBAaW5zbjoJJnN0
cnVjdCBpbnNuIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24KPiArICoKPiArICogSWYgbmVjZXNzYXJ5
LCBmaXJzdCBjb2xsZWN0cyB0aGUgaW5zdHJ1Y3Rpb24gdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUK
PiArICogZGlzcGxhY2VtZW50IGJ5dGVzLgo+ICsgKiBCYXNpY2FsbHksIG1vc3Qgb2YgaW1tZWRp
YXRlcyBhcmUgc2lnbi1leHBhbmRlZC4gVW5zaWduZWQtdmFsdWUgY2FuIGJlCj4gKyAqIGdldCBi
eSBiaXQgbWFza2luZyB3aXRoICgoMSA8PCAobmJ5dGVzICogOCkpIC0gMSkKPiArICovCj4gK3Zv
aWQgaW5zbl9nZXRfaW1tZWRpYXRlKHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpZiAo
IGluc24tPmltbWVkaWF0ZS5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiArICAgIGlmICggIWlu
c24tPmRpc3BsYWNlbWVudC5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X2Rpc3BsYWNlbWVudChp
bnNuKTsKPiArCj4gKyAgICBpZiAoIGluYXRfaGFzX21vZmZzZXQoaW5zbi0+YXR0cikgKQo+ICsg
ICAgewo+ICsgICAgICAgIGlmICggIV9fZ2V0X21vZmZzZXQoaW5zbikgKQo+ICsgICAgICAgICAg
ICBnb3RvIGVycl9vdXQ7Cj4gKyAgICAgICAgZ290byBkb25lOwo+ICsgICAgfQo+ICsKPiArICAg
IGlmICggIWluYXRfaGFzX2ltbWVkaWF0ZShpbnNuLT5hdHRyKSApCj4gKyAgICAgICAgLyogbm8g
aW1tZWRpYXRlcyAqLwo+ICsgICAgICAgIGdvdG8gZG9uZTsKPiArCj4gKyAgICBzd2l0Y2ggKCBp
bmF0X2ltbWVkaWF0ZV9zaXplKGluc24tPmF0dHIpICkKPiArICAgIHsKPiArICAgIGNhc2UgSU5B
VF9JTU1fQllURToKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUudmFsdWUgPSBnZXRfbmV4dChj
aGFyLCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUubmJ5dGVzID0gMTsKPiArICAg
ICAgICBicmVhazsKPiArICAgIGNhc2UgSU5BVF9JTU1fV09SRDoKPiArICAgICAgICBpbnNuLT5p
bW1lZGlhdGUudmFsdWUgPSBnZXRfbmV4dChzaG9ydCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+
aW1tZWRpYXRlLm5ieXRlcyA9IDI7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRf
SU1NX0RXT1JEOgo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0KGlu
dCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDQ7Cj4gKyAgICAg
ICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1FXT1JEOgo+ICsgICAgICAgIGluc24tPmlt
bWVkaWF0ZTEudmFsdWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmlt
bWVkaWF0ZTEubmJ5dGVzID0gNDsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLnZhbHVlID0g
Z2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9
IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1BUUjoKPiArICAgICAg
ICBpZiAoICFfX2dldF9pbW1wdHIoaW5zbikgKQo+ICsgICAgICAgICAgICBnb3RvIGVycl9vdXQ7
Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1ZXT1JEMzI6Cj4gKyAgICAg
ICAgaWYgKCAhX19nZXRfaW1tdjMyKGluc24pICkKPiArICAgICAgICAgICAgZ290byBlcnJfb3V0
Owo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBJTkFUX0lNTV9WV09SRDoKPiArICAgICAg
ICBpZiAoICFfX2dldF9pbW12KGluc24pICkKPiArICAgICAgICAgICAgZ290byBlcnJfb3V0Owo+
ICsgICAgICAgIGJyZWFrOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICAvKiBIZXJlLCBpbnNu
IG11c3QgaGF2ZSBhbiBpbW1lZGlhdGUsIGJ1dCBmYWlsZWQgKi8KPiArICAgICAgICBnb3RvIGVy
cl9vdXQ7Cj4gKyAgICB9Cj4gKyAgICBpZiAoIGluYXRfaGFzX3NlY29uZF9pbW1lZGlhdGUoaW5z
bi0+YXR0cikgKQo+ICsgICAgewo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTIudmFsdWUgPSBn
ZXRfbmV4dChjaGFyLCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9
IDE7Cj4gKyAgICB9Cj4gK2RvbmU6Cj4gKyAgICBpbnNuLT5pbW1lZGlhdGUuZ290ID0gMTsKPiAr
Cj4gK2Vycl9vdXQ6Cj4gKyAgICByZXR1cm47Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnNuX2dl
dF9sZW5ndGgoKSAtIEdldCB0aGUgbGVuZ3RoIG9mIGluc3RydWN0aW9uCj4gKyAqIEBpbnNuOgkm
c3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+ICsgKiBJZiBuZWNlc3Nh
cnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0byBhbmQgaW5jbHVkaW5nIHRo
ZQo+ICsgKiBpbW1lZGlhdGVzIGJ5dGVzLgo+ICsgKi8KPiArdm9pZCBpbnNuX2dldF9sZW5ndGgo
c3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGlmICggaW5zbi0+bGVuZ3RoICkKPiArICAg
ICAgICByZXR1cm47Cj4gKyAgICBpZiAoICFpbnNuLT5pbW1lZGlhdGUuZ290ICkKPiArICAgICAg
ICBpbnNuX2dldF9pbW1lZGlhdGUoaW5zbik7Cj4gKyAgICBpbnNuLT5sZW5ndGggPSAodW5zaWdu
ZWQgY2hhcikoKHVuc2lnbmVkIGxvbmcpaW5zbi0+bmV4dF9ieXRlIC0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylpbnNuLT5rYWRkcik7Cj4gK30K
PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4
dCBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjFhMmJlN2MKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4dAo+IEBAIC0w
LDAgKzEsOTYxIEBACj4gKyMgeDg2IE9wY29kZSBNYXBzCj4gKyMKPiArIyBUaGlzIGlzIChtb3N0
bHkpIGJhc2VkIG9uIGZvbGxvd2luZyBkb2N1bWVudGF0aW9ucy4KPiArIyAtIEludGVsKFIpIDY0
IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVhbCBWb2wu
MkMKPiArIyAgICgjMzI2MDE4LTA0N1VTLCBKdW5lIDIwMTMpCj4gKyMKPiArIzxPcGNvZGUgbWFw
cz4KPiArIyBUYWJsZTogdGFibGUtbmFtZQo+ICsjIFJlZmVycmVyOiBlc2NhcGVkLW5hbWUKPiAr
IyBBVlhjb2RlOiBhdngtY29kZQo+ICsjIG9wY29kZTogbW5lbW9uaWN8R3JwWFhYIFtvcGVyYW5k
MVssb3BlcmFuZDIuLi5dXSBbKGV4dHJhMSlbLChleHRyYTIpLi4uXSBbfCAybmQtbW5lbW9uaWMg
Li4uXQo+ICsjIChvcikKPiArIyBvcGNvZGU6IGVzY2FwZSAjIGVzY2FwZWQtbmFtZQo+ICsjIEVu
ZFRhYmxlCj4gKyMKPiArIzxncm91cCBtYXBzPgo+ICsjIEdycFRhYmxlOiBHcnBYWFgKPiArIyBy
ZWc6ICBtbmVtb25pYyBbb3BlcmFuZDFbLG9wZXJhbmQyLi4uXV0gWyhleHRyYTEpWywoZXh0cmEy
KS4uLl0gW3wgMm5kLW1uZW1vbmljIC4uLl0KPiArIyBFbmRUYWJsZQo+ICsjCj4gKyMgQVZYIFN1
cGVyc2NyaXB0cwo+ICsjICAodik6IHRoaXMgb3Bjb2RlIHJlcXVpcmVzIFZFWCBwcmVmaXguCj4g
KyMgICh2MSk6IHRoaXMgb3Bjb2RlIG9ubHkgc3VwcG9ydHMgMTI4Yml0IFZFWC4KPiArIwo+ICsj
IExhc3QgUHJlZml4IFN1cGVyc2NyaXB0cwo+ICsjICAtICg2Nik6IHRoZSBsYXN0IHByZWZpeCBp
cyAweDY2Cj4gKyMgIC0gKEYzKTogdGhlIGxhc3QgcHJlZml4IGlzIDB4RjMKPiArIyAgLSAoRjIp
OiB0aGUgbGFzdCBwcmVmaXggaXMgMHhGMgo+ICsjICAtICghRjMpIDogdGhlIGxhc3QgcHJlZml4
IGlzIG5vdCAweEYzIChpbmNsdWRpbmcgbm9uLWxhc3QgcHJlZml4IGNhc2UpCj4gKyMgIC0gKDY2
JkYyKTogQm90aCAweDY2IGFuZCAweEYyIHByZWZpeGVzIGFyZSBzcGVjaWZpZWQuCj4gKwo+ICtU
YWJsZTogb25lIGJ5dGUgb3Bjb2RlCj4gK1JlZmVycmVyOgo+ICtBVlhjb2RlOgo+ICsjIDB4MDAg
LSAweDBmCj4gKzAwOiBBREQgRWIsR2IKPiArMDE6IEFERCBFdixHdgo+ICswMjogQUREIEdiLEVi
Cj4gKzAzOiBBREQgR3YsRXYKPiArMDQ6IEFERCBBTCxJYgo+ICswNTogQUREIHJBWCxJego+ICsw
NjogUFVTSCBFUyAoaTY0KQo+ICswNzogUE9QIEVTIChpNjQpCj4gKzA4OiBPUiBFYixHYgo+ICsw
OTogT1IgRXYsR3YKPiArMGE6IE9SIEdiLEViCj4gKzBiOiBPUiBHdixFdgo+ICswYzogT1IgQUws
SWIKPiArMGQ6IE9SIHJBWCxJego+ICswZTogUFVTSCBDUyAoaTY0KQo+ICswZjogZXNjYXBlICMg
Mi1ieXRlIGVzY2FwZQo+ICsjIDB4MTAgLSAweDFmCj4gKzEwOiBBREMgRWIsR2IKPiArMTE6IEFE
QyBFdixHdgo+ICsxMjogQURDIEdiLEViCj4gKzEzOiBBREMgR3YsRXYKPiArMTQ6IEFEQyBBTCxJ
Ygo+ICsxNTogQURDIHJBWCxJego+ICsxNjogUFVTSCBTUyAoaTY0KQo+ICsxNzogUE9QIFNTIChp
NjQpCj4gKzE4OiBTQkIgRWIsR2IKPiArMTk6IFNCQiBFdixHdgo+ICsxYTogU0JCIEdiLEViCj4g
KzFiOiBTQkIgR3YsRXYKPiArMWM6IFNCQiBBTCxJYgo+ICsxZDogU0JCIHJBWCxJego+ICsxZTog
UFVTSCBEUyAoaTY0KQo+ICsxZjogUE9QIERTIChpNjQpCj4gKyMgMHgyMCAtIDB4MmYKPiArMjA6
IEFORCBFYixHYgo+ICsyMTogQU5EIEV2LEd2Cj4gKzIyOiBBTkQgR2IsRWIKPiArMjM6IEFORCBH
dixFdgo+ICsyNDogQU5EIEFMLEliCj4gKzI1OiBBTkQgckF4LEl6Cj4gKzI2OiBTRUc9RVMgKFBy
ZWZpeCkKPiArMjc6IERBQSAoaTY0KQo+ICsyODogU1VCIEViLEdiCj4gKzI5OiBTVUIgRXYsR3YK
PiArMmE6IFNVQiBHYixFYgo+ICsyYjogU1VCIEd2LEV2Cj4gKzJjOiBTVUIgQUwsSWIKPiArMmQ6
IFNVQiByQVgsSXoKPiArMmU6IFNFRz1DUyAoUHJlZml4KQo+ICsyZjogREFTIChpNjQpCj4gKyMg
MHgzMCAtIDB4M2YKPiArMzA6IFhPUiBFYixHYgo+ICszMTogWE9SIEV2LEd2Cj4gKzMyOiBYT1Ig
R2IsRWIKPiArMzM6IFhPUiBHdixFdgo+ICszNDogWE9SIEFMLEliCj4gKzM1OiBYT1IgckFYLEl6
Cj4gKzM2OiBTRUc9U1MgKFByZWZpeCkKPiArMzc6IEFBQSAoaTY0KQo+ICszODogQ01QIEViLEdi
Cj4gKzM5OiBDTVAgRXYsR3YKPiArM2E6IENNUCBHYixFYgo+ICszYjogQ01QIEd2LEV2Cj4gKzNj
OiBDTVAgQUwsSWIKPiArM2Q6IENNUCByQVgsSXoKPiArM2U6IFNFRz1EUyAoUHJlZml4KQo+ICsz
ZjogQUFTIChpNjQpCj4gKyMgMHg0MCAtIDB4NGYKPiArNDA6IElOQyBlQVggKGk2NCkgfCBSRVgg
KG82NCkKPiArNDE6IElOQyBlQ1ggKGk2NCkgfCBSRVguQiAobzY0KQo+ICs0MjogSU5DIGVEWCAo
aTY0KSB8IFJFWC5YIChvNjQpCj4gKzQzOiBJTkMgZUJYIChpNjQpIHwgUkVYLlhCIChvNjQpCj4g
KzQ0OiBJTkMgZVNQIChpNjQpIHwgUkVYLlIgKG82NCkKPiArNDU6IElOQyBlQlAgKGk2NCkgfCBS
RVguUkIgKG82NCkKPiArNDY6IElOQyBlU0kgKGk2NCkgfCBSRVguUlggKG82NCkKPiArNDc6IElO
QyBlREkgKGk2NCkgfCBSRVguUlhCIChvNjQpCj4gKzQ4OiBERUMgZUFYIChpNjQpIHwgUkVYLlcg
KG82NCkKPiArNDk6IERFQyBlQ1ggKGk2NCkgfCBSRVguV0IgKG82NCkKPiArNGE6IERFQyBlRFgg
KGk2NCkgfCBSRVguV1ggKG82NCkKPiArNGI6IERFQyBlQlggKGk2NCkgfCBSRVguV1hCIChvNjQp
Cj4gKzRjOiBERUMgZVNQIChpNjQpIHwgUkVYLldSIChvNjQpCj4gKzRkOiBERUMgZUJQIChpNjQp
IHwgUkVYLldSQiAobzY0KQo+ICs0ZTogREVDIGVTSSAoaTY0KSB8IFJFWC5XUlggKG82NCkKPiAr
NGY6IERFQyBlREkgKGk2NCkgfCBSRVguV1JYQiAobzY0KQo+ICsjIDB4NTAgLSAweDVmCj4gKzUw
OiBQVVNIIHJBWC9yOCAoZDY0KQo+ICs1MTogUFVTSCByQ1gvcjkgKGQ2NCkKPiArNTI6IFBVU0gg
ckRYL3IxMCAoZDY0KQo+ICs1MzogUFVTSCByQlgvcjExIChkNjQpCj4gKzU0OiBQVVNIIHJTUC9y
MTIgKGQ2NCkKPiArNTU6IFBVU0ggckJQL3IxMyAoZDY0KQo+ICs1NjogUFVTSCByU0kvcjE0IChk
NjQpCj4gKzU3OiBQVVNIIHJESS9yMTUgKGQ2NCkKPiArNTg6IFBPUCByQVgvcjggKGQ2NCkKPiAr
NTk6IFBPUCByQ1gvcjkgKGQ2NCkKPiArNWE6IFBPUCByRFgvcjEwIChkNjQpCj4gKzViOiBQT1Ag
ckJYL3IxMSAoZDY0KQo+ICs1YzogUE9QIHJTUC9yMTIgKGQ2NCkKPiArNWQ6IFBPUCByQlAvcjEz
IChkNjQpCj4gKzVlOiBQT1AgclNJL3IxNCAoZDY0KQo+ICs1ZjogUE9QIHJESS9yMTUgKGQ2NCkK
PiArIyAweDYwIC0gMHg2Zgo+ICs2MDogUFVTSEEvUFVTSEFEIChpNjQpCj4gKzYxOiBQT1BBL1BP
UEFEIChpNjQpCj4gKzYyOiBCT1VORCBHdixNYSAoaTY0KQo+ICs2MzogQVJQTCBFdyxHdyAoaTY0
KSB8IE1PVlNYRCBHdixFdiAobzY0KQo+ICs2NDogU0VHPUZTIChQcmVmaXgpCj4gKzY1OiBTRUc9
R1MgKFByZWZpeCkKPiArNjY6IE9wZXJhbmQtU2l6ZSAoUHJlZml4KQo+ICs2NzogQWRkcmVzcy1T
aXplIChQcmVmaXgpCj4gKzY4OiBQVVNIIEl6IChkNjQpCj4gKzY5OiBJTVVMIEd2LEV2LEl6Cj4g
KzZhOiBQVVNIIEliIChkNjQpCj4gKzZiOiBJTVVMIEd2LEV2LEliCj4gKzZjOiBJTlMvSU5TQiBZ
YixEWAo+ICs2ZDogSU5TL0lOU1cvSU5TRCBZeixEWAo+ICs2ZTogT1VUUy9PVVRTQiBEWCxYYgo+
ICs2ZjogT1VUUy9PVVRTVy9PVVRTRCBEWCxYego+ICsjIDB4NzAgLSAweDdmCj4gKzcwOiBKTyBK
Ygo+ICs3MTogSk5PIEpiCj4gKzcyOiBKQi9KTkFFL0pDIEpiCj4gKzczOiBKTkIvSkFFL0pOQyBK
Ygo+ICs3NDogSlovSkUgSmIKPiArNzU6IEpOWi9KTkUgSmIKPiArNzY6IEpCRS9KTkEgSmIKPiAr
Nzc6IEpOQkUvSkEgSmIKPiArNzg6IEpTIEpiCj4gKzc5OiBKTlMgSmIKPiArN2E6IEpQL0pQRSBK
Ygo+ICs3YjogSk5QL0pQTyBKYgo+ICs3YzogSkwvSk5HRSBKYgo+ICs3ZDogSk5ML0pHRSBKYgo+
ICs3ZTogSkxFL0pORyBKYgo+ICs3ZjogSk5MRS9KRyBKYgo+ICsjIDB4ODAgLSAweDhmCj4gKzgw
OiBHcnAxIEViLEliICgxQSkKPiArODE6IEdycDEgRXYsSXogKDFBKQo+ICs4MjogR3JwMSBFYixJ
YiAoMUEpLChpNjQpCj4gKzgzOiBHcnAxIEV2LEliICgxQSkKPiArODQ6IFRFU1QgRWIsR2IKPiAr
ODU6IFRFU1QgRXYsR3YKPiArODY6IFhDSEcgRWIsR2IKPiArODc6IFhDSEcgRXYsR3YKPiArODg6
IE1PViBFYixHYgo+ICs4OTogTU9WIEV2LEd2Cj4gKzhhOiBNT1YgR2IsRWIKPiArOGI6IE1PViBH
dixFdgo+ICs4YzogTU9WIEV2LFN3Cj4gKzhkOiBMRUEgR3YsTQo+ICs4ZTogTU9WIFN3LEV3Cj4g
KzhmOiBHcnAxQSAoMUEpIHwgUE9QIEV2IChkNjQpCj4gKyMgMHg5MCAtIDB4OWYKPiArOTA6IE5P
UCB8IFBBVVNFIChGMykgfCBYQ0hHIHI4LHJBWAo+ICs5MTogWENIRyByQ1gvcjksckFYCj4gKzky
OiBYQ0hHIHJEWC9yMTAsckFYCj4gKzkzOiBYQ0hHIHJCWC9yMTEsckFYCj4gKzk0OiBYQ0hHIHJT
UC9yMTIsckFYCj4gKzk1OiBYQ0hHIHJCUC9yMTMsckFYCj4gKzk2OiBYQ0hHIHJTSS9yMTQsckFY
Cj4gKzk3OiBYQ0hHIHJESS9yMTUsckFYCj4gKzk4OiBDQlcvQ1dERS9DRFFFCj4gKzk5OiBDV0Qv
Q0RRL0NRTwo+ICs5YTogQ0FMTEYgQXAgKGk2NCkKPiArOWI6IEZXQUlUL1dBSVQKPiArOWM6IFBV
U0hGL0QvUSBGdiAoZDY0KQo+ICs5ZDogUE9QRi9EL1EgRnYgKGQ2NCkKPiArOWU6IFNBSEYKPiAr
OWY6IExBSEYKPiArIyAweGEwIC0gMHhhZgo+ICthMDogTU9WIEFMLE9iCj4gK2ExOiBNT1YgckFY
LE92Cj4gK2EyOiBNT1YgT2IsQUwKPiArYTM6IE1PViBPdixyQVgKPiArYTQ6IE1PVlMvQiBZYixY
Ygo+ICthNTogTU9WUy9XL0QvUSBZdixYdgo+ICthNjogQ01QUy9CIFhiLFliCj4gK2E3OiBDTVBT
L1cvRCBYdixZdgo+ICthODogVEVTVCBBTCxJYgo+ICthOTogVEVTVCByQVgsSXoKPiArYWE6IFNU
T1MvQiBZYixBTAo+ICthYjogU1RPUy9XL0QvUSBZdixyQVgKPiArYWM6IExPRFMvQiBBTCxYYgo+
ICthZDogTE9EUy9XL0QvUSByQVgsWHYKPiArYWU6IFNDQVMvQiBBTCxZYgo+ICsjIE5vdGU6IFRo
ZSBNYXkgMjAxMSBJbnRlbCBtYW51YWwgc2hvd3MgWHYgZm9yIHRoZSBzZWNvbmQgcGFyYW1ldGVy
IG9mIHRoZQo+ICsjIG5leHQgaW5zdHJ1Y3Rpb24gYnV0IFl2IGlzIGNvcnJlY3QKPiArYWY6IFND
QVMvVy9EL1EgckFYLFl2Cj4gKyMgMHhiMCAtIDB4YmYKPiArYjA6IE1PViBBTC9SOEwsSWIKPiAr
YjE6IE1PViBDTC9SOUwsSWIKPiArYjI6IE1PViBETC9SMTBMLEliCj4gK2IzOiBNT1YgQkwvUjEx
TCxJYgo+ICtiNDogTU9WIEFIL1IxMkwsSWIKPiArYjU6IE1PViBDSC9SMTNMLEliCj4gK2I2OiBN
T1YgREgvUjE0TCxJYgo+ICtiNzogTU9WIEJIL1IxNUwsSWIKPiArYjg6IE1PViByQVgvcjgsSXYK
PiArYjk6IE1PViByQ1gvcjksSXYKPiArYmE6IE1PViByRFgvcjEwLEl2Cj4gK2JiOiBNT1YgckJY
L3IxMSxJdgo+ICtiYzogTU9WIHJTUC9yMTIsSXYKPiArYmQ6IE1PViByQlAvcjEzLEl2Cj4gK2Jl
OiBNT1YgclNJL3IxNCxJdgo+ICtiZjogTU9WIHJESS9yMTUsSXYKPiArIyAweGMwIC0gMHhjZgo+
ICtjMDogR3JwMiBFYixJYiAoMUEpCj4gK2MxOiBHcnAyIEV2LEliICgxQSkKPiArYzI6IFJFVE4g
SXcgKGY2NCkKPiArYzM6IFJFVE4KPiArYzQ6IExFUyBHeixNcCAoaTY0KSB8IFZFWCsyYnl0ZSAo
UHJlZml4KQo+ICtjNTogTERTIEd6LE1wIChpNjQpIHwgVkVYKzFieXRlIChQcmVmaXgpCj4gK2M2
OiBHcnAxMUEgRWIsSWIgKDFBKQo+ICtjNzogR3JwMTFCIEV2LEl6ICgxQSkKPiArYzg6IEVOVEVS
IEl3LEliCj4gK2M5OiBMRUFWRSAoZDY0KQo+ICtjYTogUkVURiBJdwo+ICtjYjogUkVURgo+ICtj
YzogSU5UMwo+ICtjZDogSU5UIEliCj4gK2NlOiBJTlRPIChpNjQpCj4gK2NmOiBJUkVUL0QvUQo+
ICsjIDB4ZDAgLSAweGRmCj4gK2QwOiBHcnAyIEViLDEgKDFBKQo+ICtkMTogR3JwMiBFdiwxICgx
QSkKPiArZDI6IEdycDIgRWIsQ0wgKDFBKQo+ICtkMzogR3JwMiBFdixDTCAoMUEpCj4gK2Q0OiBB
QU0gSWIgKGk2NCkKPiArZDU6IEFBRCBJYiAoaTY0KQo+ICtkNjoKPiArZDc6IFhMQVQvWExBVEIK
PiArZDg6IEVTQwo+ICtkOTogRVNDCj4gK2RhOiBFU0MKPiArZGI6IEVTQwo+ICtkYzogRVNDCj4g
K2RkOiBFU0MKPiArZGU6IEVTQwo+ICtkZjogRVNDCj4gKyMgMHhlMCAtIDB4ZWYKPiArZTA6IExP
T1BORS9MT09QTlogSmIgKGY2NCkKPiArZTE6IExPT1BFL0xPT1BaIEpiIChmNjQpCj4gK2UyOiBM
T09QIEpiIChmNjQpCj4gK2UzOiBKckNYWiBKYiAoZjY0KQo+ICtlNDogSU4gQUwsSWIKPiArZTU6
IElOIGVBWCxJYgo+ICtlNjogT1VUIEliLEFMCj4gK2U3OiBPVVQgSWIsZUFYCj4gK2U4OiBDQUxM
IEp6IChmNjQpCj4gK2U5OiBKTVAtbmVhciBKeiAoZjY0KQo+ICtlYTogSk1QLWZhciBBcCAoaTY0
KQo+ICtlYjogSk1QLXNob3J0IEpiIChmNjQpCj4gK2VjOiBJTiBBTCxEWAo+ICtlZDogSU4gZUFY
LERYCj4gK2VlOiBPVVQgRFgsQUwKPiArZWY6IE9VVCBEWCxlQVgKPiArIyAweGYwIC0gMHhmZgo+
ICtmMDogTE9DSyAoUHJlZml4KQo+ICtmMToKPiArZjI6IFJFUE5FIChQcmVmaXgpIHwgWEFDUVVJ
UkUgKFByZWZpeCkKPiArZjM6IFJFUC9SRVBFIChQcmVmaXgpIHwgWFJFTEVBU0UgKFByZWZpeCkK
PiArZjQ6IEhMVAo+ICtmNTogQ01DCj4gK2Y2OiBHcnAzXzEgRWIgKDFBKQo+ICtmNzogR3JwM18y
IEV2ICgxQSkKPiArZjg6IENMQwo+ICtmOTogU1RDCj4gK2ZhOiBDTEkKPiArZmI6IFNUSQo+ICtm
YzogQ0xECj4gK2ZkOiBTVEQKPiArZmU6IEdycDQgKDFBKQo+ICtmZjogR3JwNSAoMUEpCj4gK0Vu
ZFRhYmxlCj4gKwo+ICtUYWJsZTogMi1ieXRlIG9wY29kZSAoMHgwZikKPiArUmVmZXJyZXI6IDIt
Ynl0ZSBlc2NhcGUKPiArQVZYY29kZTogMQo+ICsjIDB4MGYgMHgwMC0weDBmCj4gKzAwOiBHcnA2
ICgxQSkKPiArMDE6IEdycDcgKDFBKQo+ICswMjogTEFSIEd2LEV3Cj4gKzAzOiBMU0wgR3YsRXcK
PiArMDQ6Cj4gKzA1OiBTWVNDQUxMIChvNjQpCj4gKzA2OiBDTFRTCj4gKzA3OiBTWVNSRVQgKG82
NCkKPiArMDg6IElOVkQKPiArMDk6IFdCSU5WRAo+ICswYToKPiArMGI6IFVEMiAoMUIpCj4gKzBj
Ogo+ICsjIEFNRCdzIHByZWZldGNoIGdyb3VwLiBJbnRlbCBzdXBwb3J0cyBwcmVmZXRjaHcoLzEp
IG9ubHkuCj4gKzBkOiBHcnBQCj4gKzBlOiBGRU1NUwo+ICsjIDNETm93ISB1c2VzIHRoZSBsYXN0
IGltbSBieXRlIGFzIG9wY29kZSBleHRlbnNpb24uCj4gKzBmOiAzRE5vdyEgUHEsUXEsSWIKPiAr
IyAweDBmIDB4MTAtMHgxZgo+ICsjIE5PVEU6IEFjY29yZGluZyB0byBJbnRlbCBTRE0gb3Bjb2Rl
IG1hcCwgdm1vdnVwcyBhbmQgdm1vdnVwZCBoYXMgbm8gb3BlcmFuZHMKPiArIyBidXQgaXQgYWN0
dWFsbHkgaGFzIG9wZXJhbmRzLiBBbmQgYWxzbywgdm1vdnNzIGFuZCB2bW92c2Qgb25seSBhY2Nl
cHQgMTI4Yml0Lgo+ICsjIE1PVlNTL01PVlNEIGhhcyB0b28gbWFueSBmb3JtcygzKSBvbiBTRE0u
IFRoaXMgbWFwIGp1c3Qgc2hvd3MgYSB0eXBpY2FsIGZvcm0uCj4gKyMgTWFueSBBVlggaW5zdHJ1
Y3Rpb25zIGxhY2sgdjEgc3VwZXJzY3JpcHQsIGFjY29yZGluZyB0byBJbnRlbCBBVlgtUHJncmFt
bWluZwo+ICsjIFJlZmVyZW5jZSBBLjEKPiArMTA6IHZtb3Z1cHMgVnBzLFdwcyB8IHZtb3Z1cGQg
VnBkLFdwZCAoNjYpIHwgdm1vdnNzIFZ4LEh4LFdzcyAoRjMpLCh2MSkgfCB2bW92c2QgVngsSHgs
V3NkIChGMiksKHYxKQo+ICsxMTogdm1vdnVwcyBXcHMsVnBzIHwgdm1vdnVwZCBXcGQsVnBkICg2
NikgfCB2bW92c3MgV3NzLEh4LFZzcyAoRjMpLCh2MSkgfCB2bW92c2QgV3NkLEh4LFZzZCAoRjIp
LCh2MSkKPiArMTI6IHZtb3ZscHMgVnEsSHEsTXEgKHYxKSB8IHZtb3ZobHBzIFZxLEhxLFVxICh2
MSkgfCB2bW92bHBkIFZxLEhxLE1xICg2NiksKHYxKSB8IHZtb3ZzbGR1cCBWeCxXeCAoRjMpIHwg
dm1vdmRkdXAgVngsV3ggKEYyKQo+ICsxMzogdm1vdmxwcyBNcSxWcSAodjEpIHwgdm1vdmxwZCBN
cSxWcSAoNjYpLCh2MSkKPiArMTQ6IHZ1bnBja2xwcyBWeCxIeCxXeCB8IHZ1bnBja2xwZCBWeCxI
eCxXeCAoNjYpCj4gKzE1OiB2dW5wY2tocHMgVngsSHgsV3ggfCB2dW5wY2tocGQgVngsSHgsV3gg
KDY2KQo+ICsxNjogdm1vdmhwcyBWZHEsSHEsTXEgKHYxKSB8IHZtb3ZsaHBzIFZkcSxIcSxVcSAo
djEpIHwgdm1vdmhwZCBWZHEsSHEsTXEgKDY2KSwodjEpIHwgdm1vdnNoZHVwIFZ4LFd4IChGMykK
PiArMTc6IHZtb3ZocHMgTXEsVnEgKHYxKSB8IHZtb3ZocGQgTXEsVnEgKDY2KSwodjEpCj4gKzE4
OiBHcnAxNiAoMUEpCj4gKzE5Ogo+ICsxYTogQk5EQ0wgRXYsR3YgfCBCTkRDVSBFdixHdiB8IEJO
RE1PViBHdixFdiB8IEJORExEWCBHdixFdixHdgo+ICsxYjogQk5EQ04gRXYsR3YgfCBCTkRNT1Yg
RXYsR3YgfCBCTkRNSyBHdixFdiB8IEJORFNUWCBFdixHVixHdgo+ICsxYzoKPiArMWQ6Cj4gKzFl
Ogo+ICsxZjogTk9QIEV2Cj4gKyMgMHgwZiAweDIwLTB4MmYKPiArMjA6IE1PViBSZCxDZAo+ICsy
MTogTU9WIFJkLERkCj4gKzIyOiBNT1YgQ2QsUmQKPiArMjM6IE1PViBEZCxSZAo+ICsyNDoKPiAr
MjU6Cj4gKzI2Ogo+ICsyNzoKPiArMjg6IHZtb3ZhcHMgVnBzLFdwcyB8IHZtb3ZhcGQgVnBkLFdw
ZCAoNjYpCj4gKzI5OiB2bW92YXBzIFdwcyxWcHMgfCB2bW92YXBkIFdwZCxWcGQgKDY2KQo+ICsy
YTogY3Z0cGkycHMgVnBzLFFwaSB8IGN2dHBpMnBkIFZwZCxRcGkgKDY2KSB8IHZjdnRzaTJzcyBW
c3MsSHNzLEV5IChGMyksKHYxKSB8IHZjdnRzaTJzZCBWc2QsSHNkLEV5IChGMiksKHYxKQo+ICsy
Yjogdm1vdm50cHMgTXBzLFZwcyB8IHZtb3ZudHBkIE1wZCxWcGQgKDY2KQo+ICsyYzogY3Z0dHBz
MnBpIFBwaSxXcHMgfCBjdnR0cGQycGkgUHBpLFdwZCAoNjYpIHwgdmN2dHRzczJzaSBHeSxXc3Mg
KEYzKSwodjEpIHwgdmN2dHRzZDJzaSBHeSxXc2QgKEYyKSwodjEpCj4gKzJkOiBjdnRwczJwaSBQ
cGksV3BzIHwgY3Z0cGQycGkgUXBpLFdwZCAoNjYpIHwgdmN2dHNzMnNpIEd5LFdzcyAoRjMpLCh2
MSkgfCB2Y3Z0c2Qyc2kgR3ksV3NkIChGMiksKHYxKQo+ICsyZTogdnVjb21pc3MgVnNzLFdzcyAo
djEpIHwgdnVjb21pc2QgIFZzZCxXc2QgKDY2KSwodjEpCj4gKzJmOiB2Y29taXNzIFZzcyxXc3Mg
KHYxKSB8IHZjb21pc2QgIFZzZCxXc2QgKDY2KSwodjEpCj4gKyMgMHgwZiAweDMwLTB4M2YKPiAr
MzA6IFdSTVNSCj4gKzMxOiBSRFRTQwo+ICszMjogUkRNU1IKPiArMzM6IFJEUE1DCj4gKzM0OiBT
WVNFTlRFUgo+ICszNTogU1lTRVhJVAo+ICszNjoKPiArMzc6IEdFVFNFQwo+ICszODogZXNjYXBl
ICMgMy1ieXRlIGVzY2FwZSAxCj4gKzM5Ogo+ICszYTogZXNjYXBlICMgMy1ieXRlIGVzY2FwZSAy
Cj4gKzNiOgo+ICszYzoKPiArM2Q6Cj4gKzNlOgo+ICszZjoKPiArIyAweDBmIDB4NDAtMHg0Zgo+
ICs0MDogQ01PVk8gR3YsRXYKPiArNDE6IENNT1ZOTyBHdixFdgo+ICs0MjogQ01PVkIvQy9OQUUg
R3YsRXYKPiArNDM6IENNT1ZBRS9OQi9OQyBHdixFdgo+ICs0NDogQ01PVkUvWiBHdixFdgo+ICs0
NTogQ01PVk5FL05aIEd2LEV2Cj4gKzQ2OiBDTU9WQkUvTkEgR3YsRXYKPiArNDc6IENNT1ZBL05C
RSBHdixFdgo+ICs0ODogQ01PVlMgR3YsRXYKPiArNDk6IENNT1ZOUyBHdixFdgo+ICs0YTogQ01P
VlAvUEUgR3YsRXYKPiArNGI6IENNT1ZOUC9QTyBHdixFdgo+ICs0YzogQ01PVkwvTkdFIEd2LEV2
Cj4gKzRkOiBDTU9WTkwvR0UgR3YsRXYKPiArNGU6IENNT1ZMRS9ORyBHdixFdgo+ICs0ZjogQ01P
Vk5MRS9HIEd2LEV2Cj4gKyMgMHgwZiAweDUwLTB4NWYKPiArNTA6IHZtb3Ztc2twcyBHeSxVcHMg
fCB2bW92bXNrcGQgR3ksVXBkICg2NikKPiArNTE6IHZzcXJ0cHMgVnBzLFdwcyB8IHZzcXJ0cGQg
VnBkLFdwZCAoNjYpIHwgdnNxcnRzcyBWc3MsSHNzLFdzcyAoRjMpLCh2MSkgfCB2c3FydHNkIFZz
ZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1MjogdnJzcXJ0cHMgVnBzLFdwcyB8IHZyc3FydHNzIFZz
cyxIc3MsV3NzIChGMyksKHYxKQo+ICs1MzogdnJjcHBzIFZwcyxXcHMgfCB2cmNwc3MgVnNzLEhz
cyxXc3MgKEYzKSwodjEpCj4gKzU0OiB2YW5kcHMgVnBzLEhwcyxXcHMgfCB2YW5kcGQgVnBkLEhw
ZCxXcGQgKDY2KQo+ICs1NTogdmFuZG5wcyBWcHMsSHBzLFdwcyB8IHZhbmRucGQgVnBkLEhwZCxX
cGQgKDY2KQo+ICs1Njogdm9ycHMgVnBzLEhwcyxXcHMgfCB2b3JwZCBWcGQsSHBkLFdwZCAoNjYp
Cj4gKzU3OiB2eG9ycHMgVnBzLEhwcyxXcHMgfCB2eG9ycGQgVnBkLEhwZCxXcGQgKDY2KQo+ICs1
ODogdmFkZHBzIFZwcyxIcHMsV3BzIHwgdmFkZHBkIFZwZCxIcGQsV3BkICg2NikgfCB2YWRkc3Mg
VnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdmFkZHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1
OTogdm11bHBzIFZwcyxIcHMsV3BzIHwgdm11bHBkIFZwZCxIcGQsV3BkICg2NikgfCB2bXVsc3Mg
VnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm11bHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1
YTogdmN2dHBzMnBkIFZwZCxXcHMgfCB2Y3Z0cGQycHMgVnBzLFdwZCAoNjYpIHwgdmN2dHNzMnNk
IFZzZCxIeCxXc3MgKEYzKSwodjEpIHwgdmN2dHNkMnNzIFZzcyxIeCxXc2QgKEYyKSwodjEpCj4g
KzViOiB2Y3Z0ZHEycHMgVnBzLFdkcSB8IHZjdnRwczJkcSBWZHEsV3BzICg2NikgfCB2Y3Z0dHBz
MmRxIFZkcSxXcHMgKEYzKQo+ICs1YzogdnN1YnBzIFZwcyxIcHMsV3BzIHwgdnN1YnBkIFZwZCxI
cGQsV3BkICg2NikgfCB2c3Vic3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdnN1YnNkIFZzZCxI
c2QsV3NkIChGMiksKHYxKQo+ICs1ZDogdm1pbnBzIFZwcyxIcHMsV3BzIHwgdm1pbnBkIFZwZCxI
cGQsV3BkICg2NikgfCB2bWluc3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm1pbnNkIFZzZCxI
c2QsV3NkIChGMiksKHYxKQo+ICs1ZTogdmRpdnBzIFZwcyxIcHMsV3BzIHwgdmRpdnBkIFZwZCxI
cGQsV3BkICg2NikgfCB2ZGl2c3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdmRpdnNkIFZzZCxI
c2QsV3NkIChGMiksKHYxKQo+ICs1Zjogdm1heHBzIFZwcyxIcHMsV3BzIHwgdm1heHBkIFZwZCxI
cGQsV3BkICg2NikgfCB2bWF4c3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm1heHNkIFZzZCxI
c2QsV3NkIChGMiksKHYxKQo+ICsjIDB4MGYgMHg2MC0weDZmCj4gKzYwOiBwdW5wY2tsYncgUHEs
UWQgfCB2cHVucGNrbGJ3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICs2MTogcHVucGNrbHdkIFBxLFFk
IHwgdnB1bnBja2x3ZCBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjI6IHB1bnBja2xkcSBQcSxRZCB8
IHZwdW5wY2tsZHEgVngsSHgsV3ggKDY2KSwodjEpCj4gKzYzOiBwYWNrc3N3YiBQcSxRcSB8IHZw
YWNrc3N3YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjQ6IHBjbXBndGIgUHEsUXEgfCB2cGNtcGd0
YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjU6IHBjbXBndHcgUHEsUXEgfCB2cGNtcGd0dyBWeCxI
eCxXeCAoNjYpLCh2MSkKPiArNjY6IHBjbXBndGQgUHEsUXEgfCB2cGNtcGd0ZCBWeCxIeCxXeCAo
NjYpLCh2MSkKPiArNjc6IHBhY2t1c3diIFBxLFFxIHwgdnBhY2t1c3diIFZ4LEh4LFd4ICg2Niks
KHYxKQo+ICs2ODogcHVucGNraGJ3IFBxLFFkIHwgdnB1bnBja2hidyBWeCxIeCxXeCAoNjYpLCh2
MSkKPiArNjk6IHB1bnBja2h3ZCBQcSxRZCB8IHZwdW5wY2tod2QgVngsSHgsV3ggKDY2KSwodjEp
Cj4gKzZhOiBwdW5wY2toZHEgUHEsUWQgfCB2cHVucGNraGRxIFZ4LEh4LFd4ICg2NiksKHYxKQo+
ICs2YjogcGFja3NzZHcgUHEsUWQgfCB2cGFja3NzZHcgVngsSHgsV3ggKDY2KSwodjEpCj4gKzZj
OiB2cHVucGNrbHFkcSBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNmQ6IHZwdW5wY2tocWRxIFZ4LEh4
LFd4ICg2NiksKHYxKQo+ICs2ZTogbW92ZC9xIFBkLEV5IHwgdm1vdmQvcSBWeSxFeSAoNjYpLCh2
MSkKPiArNmY6IG1vdnEgUHEsUXEgfCB2bW92ZHFhIFZ4LFd4ICg2NikgfCB2bW92ZHF1IFZ4LFd4
IChGMykKPiArIyAweDBmIDB4NzAtMHg3Zgo+ICs3MDogcHNodWZ3IFBxLFFxLEliIHwgdnBzaHVm
ZCBWeCxXeCxJYiAoNjYpLCh2MSkgfCB2cHNodWZodyBWeCxXeCxJYiAoRjMpLCh2MSkgfCB2cHNo
dWZsdyBWeCxXeCxJYiAoRjIpLCh2MSkKPiArNzE6IEdycDEyICgxQSkKPiArNzI6IEdycDEzICgx
QSkKPiArNzM6IEdycDE0ICgxQSkKPiArNzQ6IHBjbXBlcWIgUHEsUXEgfCB2cGNtcGVxYiBWeCxI
eCxXeCAoNjYpLCh2MSkKPiArNzU6IHBjbXBlcXcgUHEsUXEgfCB2cGNtcGVxdyBWeCxIeCxXeCAo
NjYpLCh2MSkKPiArNzY6IHBjbXBlcWQgUHEsUXEgfCB2cGNtcGVxZCBWeCxIeCxXeCAoNjYpLCh2
MSkKPiArIyBOb3RlOiBSZW1vdmUgKHYpLCBiZWNhdXNlIHZ6ZXJvYWxsIGFuZCB2emVyb3VwcGVy
IGJlY29tZXMgZW1tcyB3aXRob3V0IFZFWC4KPiArNzc6IGVtbXMgfCB2emVyb3VwcGVyIHwgdnpl
cm9hbGwKPiArNzg6IFZNUkVBRCBFeSxHeQo+ICs3OTogVk1XUklURSBHeSxFeQo+ICs3YToKPiAr
N2I6Cj4gKzdjOiB2aGFkZHBkIFZwZCxIcGQsV3BkICg2NikgfCB2aGFkZHBzIFZwcyxIcHMsV3Bz
IChGMikKPiArN2Q6IHZoc3VicGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZoc3VicHMgVnBzLEhwcyxX
cHMgKEYyKQo+ICs3ZTogbW92ZC9xIEV5LFBkIHwgdm1vdmQvcSBFeSxWeSAoNjYpLCh2MSkgfCB2
bW92cSBWcSxXcSAoRjMpLCh2MSkKPiArN2Y6IG1vdnEgUXEsUHEgfCB2bW92ZHFhIFd4LFZ4ICg2
NikgfCB2bW92ZHF1IFd4LFZ4IChGMykKPiArIyAweDBmIDB4ODAtMHg4Zgo+ICs4MDogSk8gSnog
KGY2NCkKPiArODE6IEpOTyBKeiAoZjY0KQo+ICs4MjogSkIvSkMvSk5BRSBKeiAoZjY0KQo+ICs4
MzogSkFFL0pOQi9KTkMgSnogKGY2NCkKPiArODQ6IEpFL0paIEp6IChmNjQpCj4gKzg1OiBKTkUv
Sk5aIEp6IChmNjQpCj4gKzg2OiBKQkUvSk5BIEp6IChmNjQpCj4gKzg3OiBKQS9KTkJFIEp6IChm
NjQpCj4gKzg4OiBKUyBKeiAoZjY0KQo+ICs4OTogSk5TIEp6IChmNjQpCj4gKzhhOiBKUC9KUEUg
SnogKGY2NCkKPiArOGI6IEpOUC9KUE8gSnogKGY2NCkKPiArOGM6IEpML0pOR0UgSnogKGY2NCkK
PiArOGQ6IEpOTC9KR0UgSnogKGY2NCkKPiArOGU6IEpMRS9KTkcgSnogKGY2NCkKPiArOGY6IEpO
TEUvSkcgSnogKGY2NCkKPiArIyAweDBmIDB4OTAtMHg5Zgo+ICs5MDogU0VUTyBFYgo+ICs5MTog
U0VUTk8gRWIKPiArOTI6IFNFVEIvQy9OQUUgRWIKPiArOTM6IFNFVEFFL05CL05DIEViCj4gKzk0
OiBTRVRFL1ogRWIKPiArOTU6IFNFVE5FL05aIEViCj4gKzk2OiBTRVRCRS9OQSBFYgo+ICs5Nzog
U0VUQS9OQkUgRWIKPiArOTg6IFNFVFMgRWIKPiArOTk6IFNFVE5TIEViCj4gKzlhOiBTRVRQL1BF
IEViCj4gKzliOiBTRVROUC9QTyBFYgo+ICs5YzogU0VUTC9OR0UgRWIKPiArOWQ6IFNFVE5ML0dF
IEViCj4gKzllOiBTRVRMRS9ORyBFYgo+ICs5ZjogU0VUTkxFL0cgRWIKPiArIyAweDBmIDB4YTAt
MHhhZgo+ICthMDogUFVTSCBGUyAoZDY0KQo+ICthMTogUE9QIEZTIChkNjQpCj4gK2EyOiBDUFVJ
RAo+ICthMzogQlQgRXYsR3YKPiArYTQ6IFNITEQgRXYsR3YsSWIKPiArYTU6IFNITEQgRXYsR3Ys
Q0wKPiArYTY6IEdycFBETEsKPiArYTc6IEdycFJORwo+ICthODogUFVTSCBHUyAoZDY0KQo+ICth
OTogUE9QIEdTIChkNjQpCj4gK2FhOiBSU00KPiArYWI6IEJUUyBFdixHdgo+ICthYzogU0hSRCBF
dixHdixJYgo+ICthZDogU0hSRCBFdixHdixDTAo+ICthZTogR3JwMTUgKDFBKSwoMUMpCj4gK2Fm
OiBJTVVMIEd2LEV2Cj4gKyMgMHgwZiAweGIwLTB4YmYKPiArYjA6IENNUFhDSEcgRWIsR2IKPiAr
YjE6IENNUFhDSEcgRXYsR3YKPiArYjI6IExTUyBHdixNcAo+ICtiMzogQlRSIEV2LEd2Cj4gK2I0
OiBMRlMgR3YsTXAKPiArYjU6IExHUyBHdixNcAo+ICtiNjogTU9WWlggR3YsRWIKPiArYjc6IE1P
VlpYIEd2LEV3Cj4gK2I4OiBKTVBFICghRjMpIHwgUE9QQ05UIEd2LEV2IChGMykKPiArYjk6IEdy
cDEwICgxQSkKPiArYmE6IEdycDggRXYsSWIgKDFBKQo+ICtiYjogQlRDIEV2LEd2Cj4gK2JjOiBC
U0YgR3YsRXYgKCFGMykgfCBUWkNOVCBHdixFdiAoRjMpCj4gK2JkOiBCU1IgR3YsRXYgKCFGMykg
fCBMWkNOVCBHdixFdiAoRjMpCj4gK2JlOiBNT1ZTWCBHdixFYgo+ICtiZjogTU9WU1ggR3YsRXcK
PiArIyAweDBmIDB4YzAtMHhjZgo+ICtjMDogWEFERCBFYixHYgo+ICtjMTogWEFERCBFdixHdgo+
ICtjMjogdmNtcHBzIFZwcyxIcHMsV3BzLEliIHwgdmNtcHBkIFZwZCxIcGQsV3BkLEliICg2Nikg
fCB2Y21wc3MgVnNzLEhzcyxXc3MsSWIgKEYzKSwodjEpIHwgdmNtcHNkIFZzZCxIc2QsV3NkLEli
IChGMiksKHYxKQo+ICtjMzogbW92bnRpIE15LEd5Cj4gK2M0OiBwaW5zcncgUHEsUnkvTXcsSWIg
fCB2cGluc3J3IFZkcSxIZHEsUnkvTXcsSWIgKDY2KSwodjEpCj4gK2M1OiBwZXh0cncgR2QsTnEs
SWIgfCB2cGV4dHJ3IEdkLFVkcSxJYiAoNjYpLCh2MSkKPiArYzY6IHZzaHVmcHMgVnBzLEhwcyxX
cHMsSWIgfCB2c2h1ZnBkIFZwZCxIcGQsV3BkLEliICg2NikKPiArYzc6IEdycDkgKDFBKQo+ICtj
ODogQlNXQVAgUkFYL0VBWC9SOC9SOEQKPiArYzk6IEJTV0FQIFJDWC9FQ1gvUjkvUjlECj4gK2Nh
OiBCU1dBUCBSRFgvRURYL1IxMC9SMTBECj4gK2NiOiBCU1dBUCBSQlgvRUJYL1IxMS9SMTFECj4g
K2NjOiBCU1dBUCBSU1AvRVNQL1IxMi9SMTJECj4gK2NkOiBCU1dBUCBSQlAvRUJQL1IxMy9SMTNE
Cj4gK2NlOiBCU1dBUCBSU0kvRVNJL1IxNC9SMTRECj4gK2NmOiBCU1dBUCBSREkvRURJL1IxNS9S
MTVECj4gKyMgMHgwZiAweGQwLTB4ZGYKPiArZDA6IHZhZGRzdWJwZCBWcGQsSHBkLFdwZCAoNjYp
IHwgdmFkZHN1YnBzIFZwcyxIcHMsV3BzIChGMikKPiArZDE6IHBzcmx3IFBxLFFxIHwgdnBzcmx3
IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkMjogcHNybGQgUHEsUXEgfCB2cHNybGQgVngsSHgsV3gg
KDY2KSwodjEpCj4gK2QzOiBwc3JscSBQcSxRcSB8IHZwc3JscSBWeCxIeCxXeCAoNjYpLCh2MSkK
PiArZDQ6IHBhZGRxIFBxLFFxIHwgdnBhZGRxIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkNTogcG11
bGx3IFBxLFFxIHwgdnBtdWxsdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZDY6IHZtb3ZxIFdxLFZx
ICg2NiksKHYxKSB8IG1vdnEyZHEgVmRxLE5xIChGMykgfCBtb3ZkcTJxIFBxLFVxIChGMikKPiAr
ZDc6IHBtb3Ztc2tiIEdkLE5xIHwgdnBtb3Ztc2tiIEdkLFV4ICg2NiksKHYxKQo+ICtkODogcHN1
YnVzYiBQcSxRcSB8IHZwc3VidXNiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkOTogcHN1YnVzdyBQ
cSxRcSB8IHZwc3VidXN3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkYTogcG1pbnViIFBxLFFxIHwg
dnBtaW51YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZGI6IHBhbmQgUHEsUXEgfCB2cGFuZCBWeCxI
eCxXeCAoNjYpLCh2MSkKPiArZGM6IHBhZGR1c2IgUHEsUXEgfCB2cGFkZHVzYiBWeCxIeCxXeCAo
NjYpLCh2MSkKPiArZGQ6IHBhZGR1c3cgUHEsUXEgfCB2cGFkZHVzdyBWeCxIeCxXeCAoNjYpLCh2
MSkKPiArZGU6IHBtYXh1YiBQcSxRcSB8IHZwbWF4dWIgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Rm
OiBwYW5kbiBQcSxRcSB8IHZwYW5kbiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArIyAweDBmIDB4ZTAt
MHhlZgo+ICtlMDogcGF2Z2IgUHEsUXEgfCB2cGF2Z2IgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Ux
OiBwc3JhdyBQcSxRcSB8IHZwc3JhdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZTI6IHBzcmFkIFBx
LFFxIHwgdnBzcmFkIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtlMzogcGF2Z3cgUHEsUXEgfCB2cGF2
Z3cgVngsSHgsV3ggKDY2KSwodjEpCj4gK2U0OiBwbXVsaHV3IFBxLFFxIHwgdnBtdWxodXcgVngs
SHgsV3ggKDY2KSwodjEpCj4gK2U1OiBwbXVsaHcgUHEsUXEgfCB2cG11bGh3IFZ4LEh4LFd4ICg2
NiksKHYxKQo+ICtlNjogdmN2dHRwZDJkcSBWeCxXcGQgKDY2KSB8IHZjdnRkcTJwZCBWeCxXZHEg
KEYzKSB8IHZjdnRwZDJkcSBWeCxXcGQgKEYyKQo+ICtlNzogbW92bnRxIE1xLFBxIHwgdm1vdm50
ZHEgTXgsVnggKDY2KQo+ICtlODogcHN1YnNiIFBxLFFxIHwgdnBzdWJzYiBWeCxIeCxXeCAoNjYp
LCh2MSkKPiArZTk6IHBzdWJzdyBQcSxRcSB8IHZwc3Vic3cgVngsSHgsV3ggKDY2KSwodjEpCj4g
K2VhOiBwbWluc3cgUHEsUXEgfCB2cG1pbnN3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtlYjogcG9y
IFBxLFFxIHwgdnBvciBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZWM6IHBhZGRzYiBQcSxRcSB8IHZw
YWRkc2IgVngsSHgsV3ggKDY2KSwodjEpCj4gK2VkOiBwYWRkc3cgUHEsUXEgfCB2cGFkZHN3IFZ4
LEh4LFd4ICg2NiksKHYxKQo+ICtlZTogcG1heHN3IFBxLFFxIHwgdnBtYXhzdyBWeCxIeCxXeCAo
NjYpLCh2MSkKPiArZWY6IHB4b3IgUHEsUXEgfCB2cHhvciBWeCxIeCxXeCAoNjYpLCh2MSkKPiAr
IyAweDBmIDB4ZjAtMHhmZgo+ICtmMDogdmxkZHF1IFZ4LE14IChGMikKPiArZjE6IHBzbGx3IFBx
LFFxIHwgdnBzbGx3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtmMjogcHNsbGQgUHEsUXEgfCB2cHNs
bGQgVngsSHgsV3ggKDY2KSwodjEpCj4gK2YzOiBwc2xscSBQcSxRcSB8IHZwc2xscSBWeCxIeCxX
eCAoNjYpLCh2MSkKPiArZjQ6IHBtdWx1ZHEgUHEsUXEgfCB2cG11bHVkcSBWeCxIeCxXeCAoNjYp
LCh2MSkKPiArZjU6IHBtYWRkd2QgUHEsUXEgfCB2cG1hZGR3ZCBWeCxIeCxXeCAoNjYpLCh2MSkK
PiArZjY6IHBzYWRidyBQcSxRcSB8IHZwc2FkYncgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Y3OiBt
YXNrbW92cSBQcSxOcSB8IHZtYXNrbW92ZHF1IFZ4LFV4ICg2NiksKHYxKQo+ICtmODogcHN1YmIg
UHEsUXEgfCB2cHN1YmIgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Y5OiBwc3VidyBQcSxRcSB8IHZw
c3VidyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZmE6IHBzdWJkIFBxLFFxIHwgdnBzdWJkIFZ4LEh4
LFd4ICg2NiksKHYxKQo+ICtmYjogcHN1YnEgUHEsUXEgfCB2cHN1YnEgVngsSHgsV3ggKDY2KSwo
djEpCj4gK2ZjOiBwYWRkYiBQcSxRcSB8IHZwYWRkYiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZmQ6
IHBhZGR3IFBxLFFxIHwgdnBhZGR3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtmZTogcGFkZGQgUHEs
UXEgfCB2cGFkZGQgVngsSHgsV3ggKDY2KSwodjEpCj4gK2ZmOgo+ICtFbmRUYWJsZQo+ICsKPiAr
VGFibGU6IDMtYnl0ZSBvcGNvZGUgMSAoMHgwZiAweDM4KQo+ICtSZWZlcnJlcjogMy1ieXRlIGVz
Y2FwZSAxCj4gK0FWWGNvZGU6IDIKPiArIyAweDBmIDB4MzggMHgwMC0weDBmCj4gKzAwOiBwc2h1
ZmIgUHEsUXEgfCB2cHNodWZiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICswMTogcGhhZGR3IFBxLFFx
IHwgdnBoYWRkdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMDI6IHBoYWRkZCBQcSxRcSB8IHZwaGFk
ZGQgVngsSHgsV3ggKDY2KSwodjEpCj4gKzAzOiBwaGFkZHN3IFBxLFFxIHwgdnBoYWRkc3cgVngs
SHgsV3ggKDY2KSwodjEpCj4gKzA0OiBwbWFkZHVic3cgUHEsUXEgfCB2cG1hZGR1YnN3IFZ4LEh4
LFd4ICg2NiksKHYxKQo+ICswNTogcGhzdWJ3IFBxLFFxIHwgdnBoc3VidyBWeCxIeCxXeCAoNjYp
LCh2MSkKPiArMDY6IHBoc3ViZCBQcSxRcSB8IHZwaHN1YmQgVngsSHgsV3ggKDY2KSwodjEpCj4g
KzA3OiBwaHN1YnN3IFBxLFFxIHwgdnBoc3Vic3cgVngsSHgsV3ggKDY2KSwodjEpCj4gKzA4OiBw
c2lnbmIgUHEsUXEgfCB2cHNpZ25iIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICswOTogcHNpZ253IFBx
LFFxIHwgdnBzaWdudyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMGE6IHBzaWduZCBQcSxRcSB8IHZw
c2lnbmQgVngsSHgsV3ggKDY2KSwodjEpCj4gKzBiOiBwbXVsaHJzdyBQcSxRcSB8IHZwbXVsaHJz
dyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMGM6IHZwZXJtaWxwcyBWeCxIeCxXeCAoNjYpLCh2KQo+
ICswZDogdnBlcm1pbHBkIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzBlOiB2dGVzdHBzIFZ4LFd4ICg2
NiksKHYpCj4gKzBmOiB2dGVzdHBkIFZ4LFd4ICg2NiksKHYpCj4gKyMgMHgwZiAweDM4IDB4MTAt
MHgxZgo+ICsxMDogcGJsZW5kdmIgVmRxLFdkcSAoNjYpCj4gKzExOgo+ICsxMjoKPiArMTM6IHZj
dnRwaDJwcyBWeCxXeCxJYiAoNjYpLCh2KQo+ICsxNDogYmxlbmR2cHMgVmRxLFdkcSAoNjYpCj4g
KzE1OiBibGVuZHZwZCBWZHEsV2RxICg2NikKPiArMTY6IHZwZXJtcHMgVnFxLEhxcSxXcXEgKDY2
KSwodikKPiArMTc6IHZwdGVzdCBWeCxXeCAoNjYpCj4gKzE4OiB2YnJvYWRjYXN0c3MgVngsV2Qg
KDY2KSwodikKPiArMTk6IHZicm9hZGNhc3RzZCBWcXEsV3EgKDY2KSwodikKPiArMWE6IHZicm9h
ZGNhc3RmMTI4IFZxcSxNZHEgKDY2KSwodikKPiArMWI6Cj4gKzFjOiBwYWJzYiBQcSxRcSB8IHZw
YWJzYiBWeCxXeCAoNjYpLCh2MSkKPiArMWQ6IHBhYnN3IFBxLFFxIHwgdnBhYnN3IFZ4LFd4ICg2
NiksKHYxKQo+ICsxZTogcGFic2QgUHEsUXEgfCB2cGFic2QgVngsV3ggKDY2KSwodjEpCj4gKzFm
Ogo+ICsjIDB4MGYgMHgzOCAweDIwLTB4MmYKPiArMjA6IHZwbW92c3hidyBWeCxVeC9NcSAoNjYp
LCh2MSkKPiArMjE6IHZwbW92c3hiZCBWeCxVeC9NZCAoNjYpLCh2MSkKPiArMjI6IHZwbW92c3hi
cSBWeCxVeC9NdyAoNjYpLCh2MSkKPiArMjM6IHZwbW92c3h3ZCBWeCxVeC9NcSAoNjYpLCh2MSkK
PiArMjQ6IHZwbW92c3h3cSBWeCxVeC9NZCAoNjYpLCh2MSkKPiArMjU6IHZwbW92c3hkcSBWeCxV
eC9NcSAoNjYpLCh2MSkKPiArMjY6Cj4gKzI3Ogo+ICsyODogdnBtdWxkcSBWeCxIeCxXeCAoNjYp
LCh2MSkKPiArMjk6IHZwY21wZXFxIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICsyYTogdm1vdm50ZHFh
IFZ4LE14ICg2NiksKHYxKQo+ICsyYjogdnBhY2t1c2R3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICsy
Yzogdm1hc2ttb3ZwcyBWeCxIeCxNeCAoNjYpLCh2KQo+ICsyZDogdm1hc2ttb3ZwZCBWeCxIeCxN
eCAoNjYpLCh2KQo+ICsyZTogdm1hc2ttb3ZwcyBNeCxIeCxWeCAoNjYpLCh2KQo+ICsyZjogdm1h
c2ttb3ZwZCBNeCxIeCxWeCAoNjYpLCh2KQo+ICsjIDB4MGYgMHgzOCAweDMwLTB4M2YKPiArMzA6
IHZwbW92enhidyBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzE6IHZwbW92enhiZCBWeCxVeC9NZCAo
NjYpLCh2MSkKPiArMzI6IHZwbW92enhicSBWeCxVeC9NdyAoNjYpLCh2MSkKPiArMzM6IHZwbW92
enh3ZCBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzQ6IHZwbW92enh3cSBWeCxVeC9NZCAoNjYpLCh2
MSkKPiArMzU6IHZwbW92enhkcSBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzY6IHZwZXJtZCBWcXEs
SHFxLFdxcSAoNjYpLCh2KQo+ICszNzogdnBjbXBndHEgVngsSHgsV3ggKDY2KSwodjEpCj4gKzM4
OiB2cG1pbnNiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICszOTogdnBtaW5zZCBWeCxIeCxXeCAoNjYp
LCh2MSkKPiArM2E6IHZwbWludXcgVngsSHgsV3ggKDY2KSwodjEpCj4gKzNiOiB2cG1pbnVkIFZ4
LEh4LFd4ICg2NiksKHYxKQo+ICszYzogdnBtYXhzYiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArM2Q6
IHZwbWF4c2QgVngsSHgsV3ggKDY2KSwodjEpCj4gKzNlOiB2cG1heHV3IFZ4LEh4LFd4ICg2Niks
KHYxKQo+ICszZjogdnBtYXh1ZCBWeCxIeCxXeCAoNjYpLCh2MSkKPiArIyAweDBmIDB4MzggMHg0
MC0weDhmCj4gKzQwOiB2cG11bGxkIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICs0MTogdnBobWlucG9z
dXcgVmRxLFdkcSAoNjYpLCh2MSkKPiArNDI6Cj4gKzQzOgo+ICs0NDoKPiArNDU6IHZwc3JsdmQv
cSBWeCxIeCxXeCAoNjYpLCh2KQo+ICs0NjogdnBzcmF2ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs0
NzogdnBzbGx2ZC9xIFZ4LEh4LFd4ICg2NiksKHYpCj4gKyMgU2tpcCAweDQ4LTB4NTcKPiArNTg6
IHZwYnJvYWRjYXN0ZCBWeCxXeCAoNjYpLCh2KQo+ICs1OTogdnBicm9hZGNhc3RxIFZ4LFd4ICg2
NiksKHYpCj4gKzVhOiB2YnJvYWRjYXN0aTEyOCBWcXEsTWRxICg2NiksKHYpCj4gKyMgU2tpcCAw
eDViLTB4NzcKPiArNzg6IHZwYnJvYWRjYXN0YiBWeCxXeCAoNjYpLCh2KQo+ICs3OTogdnBicm9h
ZGNhc3R3IFZ4LFd4ICg2NiksKHYpCj4gKyMgU2tpcCAweDdhLTB4N2YKPiArODA6IElOVkVQVCBH
eSxNZHEgKDY2KQo+ICs4MTogSU5WUElEIEd5LE1kcSAoNjYpCj4gKzgyOiBJTlZQQ0lEIEd5LE1k
cSAoNjYpCj4gKzhjOiB2cG1hc2ttb3ZkL3EgVngsSHgsTXggKDY2KSwodikKPiArOGU6IHZwbWFz
a21vdmQvcSBNeCxWeCxIeCAoNjYpLCh2KQo+ICsjIDB4MGYgMHgzOCAweDkwLTB4YmYgKEZNQSkK
PiArOTA6IHZnYXRoZXJkZC9xIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzkxOiB2Z2F0aGVycWQvcSBW
eCxIeCxXeCAoNjYpLCh2KQo+ICs5MjogdmdhdGhlcmRwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4g
KzkzOiB2Z2F0aGVycXBzL2QgVngsSHgsV3ggKDY2KSwodikKPiArOTQ6Cj4gKzk1Ogo+ICs5Njog
dmZtYWRkc3ViMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5NzogdmZtc3ViYWRkMTMycHMv
ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5ODogdmZtYWRkMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2
KQo+ICs5OTogdmZtYWRkMTMyc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gKzlhOiB2Zm1z
dWIxMzJwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzliOiB2Zm1zdWIxMzJzcy9kIFZ4LEh4LFd4
ICg2NiksKHYpLCh2MSkKPiArOWM6IHZmbm1hZGQxMzJwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4g
KzlkOiB2Zm5tYWRkMTMyc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gKzllOiB2Zm5tc3Vi
MTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5ZjogdmZubXN1YjEzMnNzL2QgVngsSHgsV3gg
KDY2KSwodiksKHYxKQo+ICthNjogdmZtYWRkc3ViMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+
ICthNzogdmZtc3ViYWRkMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthODogdmZtYWRkMjEz
cHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthOTogdmZtYWRkMjEzc3MvZCBWeCxIeCxXeCAoNjYp
LCh2KSwodjEpCj4gK2FhOiB2Zm1zdWIyMTNwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gK2FiOiB2
Zm1zdWIyMTNzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkKPiArYWM6IHZmbm1hZGQyMTNwcy9k
IFZ4LEh4LFd4ICg2NiksKHYpCj4gK2FkOiB2Zm5tYWRkMjEzc3MvZCBWeCxIeCxXeCAoNjYpLCh2
KSwodjEpCj4gK2FlOiB2Zm5tc3ViMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthZjogdmZu
bXN1YjIxM3NzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQo+ICtiNjogdmZtYWRkc3ViMjMxcHMv
ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICtiNzogdmZtc3ViYWRkMjMxcHMvZCBWeCxIeCxXeCAoNjYp
LCh2KQo+ICtiODogdmZtYWRkMjMxcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICtiOTogdmZtYWRk
MjMxc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gK2JhOiB2Zm1zdWIyMzFwcy9kIFZ4LEh4
LFd4ICg2NiksKHYpCj4gK2JiOiB2Zm1zdWIyMzFzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkK
PiArYmM6IHZmbm1hZGQyMzFwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gK2JkOiB2Zm5tYWRkMjMx
c3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gK2JlOiB2Zm5tc3ViMjMxcHMvZCBWeCxIeCxX
eCAoNjYpLCh2KQo+ICtiZjogdmZubXN1YjIzMXNzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQo+
ICsjIDB4MGYgMHgzOCAweGMwLTB4ZmYKPiArZGI6IFZBRVNJTUMgVmRxLFdkcSAoNjYpLCh2MSkK
PiArZGM6IFZBRVNFTkMgVmRxLEhkcSxXZHEgKDY2KSwodjEpCj4gK2RkOiBWQUVTRU5DTEFTVCBW
ZHEsSGRxLFdkcSAoNjYpLCh2MSkKPiArZGU6IFZBRVNERUMgVmRxLEhkcSxXZHEgKDY2KSwodjEp
Cj4gK2RmOiBWQUVTREVDTEFTVCBWZHEsSGRxLFdkcSAoNjYpLCh2MSkKPiArZjA6IE1PVkJFIEd5
LE15IHwgTU9WQkUgR3csTXcgKDY2KSB8IENSQzMyIEdkLEViIChGMikgfCBDUkMzMiBHZCxFYiAo
NjYmRjIpCj4gK2YxOiBNT1ZCRSBNeSxHeSB8IE1PVkJFIE13LEd3ICg2NikgfCBDUkMzMiBHZCxF
eSAoRjIpIHwgQ1JDMzIgR2QsRXcgKDY2JkYyKQo+ICtmMjogQU5ETiBHeSxCeSxFeSAodikKPiAr
ZjM6IEdycDE3ICgxQSkKPiArZjU6IEJaSEkgR3ksRXksQnkgKHYpIHwgUEVYVCBHeSxCeSxFeSAo
RjMpLCh2KSB8IFBERVAgR3ksQnksRXkgKEYyKSwodikKPiArZjY6IEFEQ1ggR3ksRXkgKDY2KSB8
IEFET1ggR3ksRXkgKEYzKSB8IE1VTFggQnksR3ksckRYLEV5IChGMiksKHYpCj4gK2Y3OiBCRVhU
UiBHeSxFeSxCeSAodikgfCBTSExYIEd5LEV5LEJ5ICg2NiksKHYpIHwgU0FSWCBHeSxFeSxCeSAo
RjMpLCh2KSB8IFNIUlggR3ksRXksQnkgKEYyKSwodikKPiArRW5kVGFibGUKPiArCj4gK1RhYmxl
OiAzLWJ5dGUgb3Bjb2RlIDIgKDB4MGYgMHgzYSkKPiArUmVmZXJyZXI6IDMtYnl0ZSBlc2NhcGUg
Mgo+ICtBVlhjb2RlOiAzCj4gKyMgMHgwZiAweDNhIDB4MDAtMHhmZgo+ICswMDogdnBlcm1xIFZx
cSxXcXEsSWIgKDY2KSwodikKPiArMDE6IHZwZXJtcGQgVnFxLFdxcSxJYiAoNjYpLCh2KQo+ICsw
MjogdnBibGVuZGQgVngsSHgsV3gsSWIgKDY2KSwodikKPiArMDM6Cj4gKzA0OiB2cGVybWlscHMg
VngsV3gsSWIgKDY2KSwodikKPiArMDU6IHZwZXJtaWxwZCBWeCxXeCxJYiAoNjYpLCh2KQo+ICsw
NjogdnBlcm0yZjEyOCBWcXEsSHFxLFdxcSxJYiAoNjYpLCh2KQo+ICswNzoKPiArMDg6IHZyb3Vu
ZHBzIFZ4LFd4LEliICg2NikKPiArMDk6IHZyb3VuZHBkIFZ4LFd4LEliICg2NikKPiArMGE6IHZy
b3VuZHNzIFZzcyxXc3MsSWIgKDY2KSwodjEpCj4gKzBiOiB2cm91bmRzZCBWc2QsV3NkLEliICg2
NiksKHYxKQo+ICswYzogdmJsZW5kcHMgVngsSHgsV3gsSWIgKDY2KQo+ICswZDogdmJsZW5kcGQg
VngsSHgsV3gsSWIgKDY2KQo+ICswZTogdnBibGVuZHcgVngsSHgsV3gsSWIgKDY2KSwodjEpCj4g
KzBmOiBwYWxpZ25yIFBxLFFxLEliIHwgdnBhbGlnbnIgVngsSHgsV3gsSWIgKDY2KSwodjEpCj4g
KzE0OiB2cGV4dHJiIFJkL01iLFZkcSxJYiAoNjYpLCh2MSkKPiArMTU6IHZwZXh0cncgUmQvTXcs
VmRxLEliICg2NiksKHYxKQo+ICsxNjogdnBleHRyZC9xIEV5LFZkcSxJYiAoNjYpLCh2MSkKPiAr
MTc6IHZleHRyYWN0cHMgRWQsVmRxLEliICg2NiksKHYxKQo+ICsxODogdmluc2VydGYxMjggVnFx
LEhxcSxXcXEsSWIgKDY2KSwodikKPiArMTk6IHZleHRyYWN0ZjEyOCBXZHEsVnFxLEliICg2Niks
KHYpCj4gKzFkOiB2Y3Z0cHMycGggV3gsVngsSWIgKDY2KSwodikKPiArMjA6IHZwaW5zcmIgVmRx
LEhkcSxSeS9NYixJYiAoNjYpLCh2MSkKPiArMjE6IHZpbnNlcnRwcyBWZHEsSGRxLFVkcS9NZCxJ
YiAoNjYpLCh2MSkKPiArMjI6IHZwaW5zcmQvcSBWZHEsSGRxLEV5LEliICg2NiksKHYxKQo+ICsz
ODogdmluc2VydGkxMjggVnFxLEhxcSxXcXEsSWIgKDY2KSwodikKPiArMzk6IHZleHRyYWN0aTEy
OCBXZHEsVnFxLEliICg2NiksKHYpCj4gKzQwOiB2ZHBwcyBWeCxIeCxXeCxJYiAoNjYpCj4gKzQx
OiB2ZHBwZCBWZHEsSGRxLFdkcSxJYiAoNjYpLCh2MSkKPiArNDI6IHZtcHNhZGJ3IFZ4LEh4LFd4
LEliICg2NiksKHYxKQo+ICs0NDogdnBjbG11bHFkcSBWZHEsSGRxLFdkcSxJYiAoNjYpLCh2MSkK
PiArNDY6IHZwZXJtMmkxMjggVnFxLEhxcSxXcXEsSWIgKDY2KSwodikKPiArNGE6IHZibGVuZHZw
cyBWeCxIeCxXeCxMeCAoNjYpLCh2KQo+ICs0YjogdmJsZW5kdnBkIFZ4LEh4LFd4LEx4ICg2Niks
KHYpCj4gKzRjOiB2cGJsZW5kdmIgVngsSHgsV3gsTHggKDY2KSwodjEpCj4gKzYwOiB2cGNtcGVz
dHJtIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gKzYxOiB2cGNtcGVzdHJpIFZkcSxXZHEsSWIgKDY2
KSwodjEpCj4gKzYyOiB2cGNtcGlzdHJtIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gKzYzOiB2cGNt
cGlzdHJpIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gK2RmOiBWQUVTS0VZR0VOIFZkcSxXZHEsSWIg
KDY2KSwodjEpCj4gK2YwOiBST1JYIEd5LEV5LEliIChGMiksKHYpCj4gK0VuZFRhYmxlCj4gKwo+
ICtHcnBUYWJsZTogR3JwMQo+ICswOiBBREQKPiArMTogT1IKPiArMjogQURDCj4gKzM6IFNCQgo+
ICs0OiBBTkQKPiArNTogU1VCCj4gKzY6IFhPUgo+ICs3OiBDTVAKPiArRW5kVGFibGUKPiArCj4g
K0dycFRhYmxlOiBHcnAxQQo+ICswOiBQT1AKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBH
cnAyCj4gKzA6IFJPTAo+ICsxOiBST1IKPiArMjogUkNMCj4gKzM6IFJDUgo+ICs0OiBTSEwvU0FM
Cj4gKzU6IFNIUgo+ICs2Ogo+ICs3OiBTQVIKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBH
cnAzXzEKPiArMDogVEVTVCBFYixJYgo+ICsxOgo+ICsyOiBOT1QgRWIKPiArMzogTkVHIEViCj4g
KzQ6IE1VTCBBTCxFYgo+ICs1OiBJTVVMIEFMLEViCj4gKzY6IERJViBBTCxFYgo+ICs3OiBJRElW
IEFMLEViCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwM18yCj4gKzA6IFRFU1QgRXYs
SXoKPiArMToKPiArMjogTk9UIEV2Cj4gKzM6IE5FRyBFdgo+ICs0OiBNVUwgckFYLEV2Cj4gKzU6
IElNVUwgckFYLEV2Cj4gKzY6IERJViByQVgsRXYKPiArNzogSURJViByQVgsRXYKPiArRW5kVGFi
bGUKPiArCj4gK0dycFRhYmxlOiBHcnA0Cj4gKzA6IElOQyBFYgo+ICsxOiBERUMgRWIKPiArRW5k
VGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnA1Cj4gKzA6IElOQyBFdgo+ICsxOiBERUMgRXYKPiAr
MjogQ0FMTE4gRXYgKGY2NCkKPiArMzogQ0FMTEYgRXAKPiArNDogSk1QTiBFdiAoZjY0KQo+ICs1
OiBKTVBGIE1wCj4gKzY6IFBVU0ggRXYgKGQ2NCkKPiArNzoKPiArRW5kVGFibGUKPiArCj4gK0dy
cFRhYmxlOiBHcnA2Cj4gKzA6IFNMRFQgUnYvTXcKPiArMTogU1RSIFJ2L013Cj4gKzI6IExMRFQg
RXcKPiArMzogTFRSIEV3Cj4gKzQ6IFZFUlIgRXcKPiArNTogVkVSVyBFdwo+ICtFbmRUYWJsZQo+
ICsKPiArR3JwVGFibGU6IEdycDcKPiArMDogU0dEVCBNcyB8IFZNQ0FMTCAoMDAxKSwoMTFCKSB8
IFZNTEFVTkNIICgwMTApLCgxMUIpIHwgVk1SRVNVTUUgKDAxMSksKDExQikgfCBWTVhPRkYgKDEw
MCksKDExQikKPiArMTogU0lEVCBNcyB8IE1PTklUT1IgKDAwMCksKDExQikgfCBNV0FJVCAoMDAx
KSwoMTFCKSB8IENMQUMgKDAxMCksKDExQikgfCBTVEFDICgwMTEpLCgxMUIpCj4gKzI6IExHRFQg
TXMgfCBYR0VUQlYgKDAwMCksKDExQikgfCBYU0VUQlYgKDAwMSksKDExQikgfCBWTUZVTkMgKDEw
MCksKDExQikgfCBYRU5EICgxMDEpKDExQikgfCBYVEVTVCAoMTEwKSgxMUIpCj4gKzM6IExJRFQg
TXMKPiArNDogU01TVyBNdy9Sdgo+ICs1Ogo+ICs2OiBMTVNXIEV3Cj4gKzc6IElOVkxQRyBNYiB8
IFNXQVBHUyAobzY0KSwoMDAwKSwoMTFCKSB8IFJEVFNDUCAoMDAxKSwoMTFCKQo+ICtFbmRUYWJs
ZQo+ICsKPiArR3JwVGFibGU6IEdycDgKPiArNDogQlQKPiArNTogQlRTCj4gKzY6IEJUUgo+ICs3
OiBCVEMKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnA5Cj4gKzE6IENNUFhDSEc4Qi8x
NkIgTXEvTWRxCj4gKzY6IFZNUFRSTEQgTXEgfCBWTUNMRUFSIE1xICg2NikgfCBWTVhPTiBNcSAo
RjMpIHwgUkRSQU5EIFJ2ICgxMUIpCj4gKzc6IFZNUFRSU1QgTXEgfCBWTVBUUlNUIE1xIChGMykg
fCBSRFNFRUQgUnYgKDExQikKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxMAo+ICtF
bmRUYWJsZQo+ICsKPiArIyBHcnAxMUEgYW5kIEdycDExQiBhcmUgZXhwcmVzc2VkIGFzIEdycDEx
IGluIEludGVsIFNETQo+ICtHcnBUYWJsZTogR3JwMTFBCj4gKzA6IE1PViBFYixJYgo+ICs3OiBY
QUJPUlQgSWIgKDAwMCksKDExQikKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxMUIK
PiArMDogTU9WIEViLEl6Cj4gKzc6IFhCRUdJTiBKeiAoMDAwKSwoMTFCKQo+ICtFbmRUYWJsZQo+
ICsKPiArR3JwVGFibGU6IEdycDEyCj4gKzI6IHBzcmx3IE5xLEliICgxMUIpIHwgdnBzcmx3IEh4
LFV4LEliICg2NiksKDExQiksKHYxKQo+ICs0OiBwc3JhdyBOcSxJYiAoMTFCKSB8IHZwc3JhdyBI
eCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArNjogcHNsbHcgTnEsSWIgKDExQikgfCB2cHNsbHcg
SHgsVXgsSWIgKDY2KSwoMTFCKSwodjEpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3Jw
MTMKPiArMjogcHNybGQgTnEsSWIgKDExQikgfCB2cHNybGQgSHgsVXgsSWIgKDY2KSwoMTFCKSwo
djEpCj4gKzQ6IHBzcmFkIE5xLEliICgxMUIpIHwgdnBzcmFkIEh4LFV4LEliICg2NiksKDExQiks
KHYxKQo+ICs2OiBwc2xsZCBOcSxJYiAoMTFCKSB8IHZwc2xsZCBIeCxVeCxJYiAoNjYpLCgxMUIp
LCh2MSkKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxNAo+ICsyOiBwc3JscSBOcSxJ
YiAoMTFCKSB8IHZwc3JscSBIeCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArMzogdnBzcmxkcSBI
eCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArNjogcHNsbHEgTnEsSWIgKDExQikgfCB2cHNsbHEg
SHgsVXgsSWIgKDY2KSwoMTFCKSwodjEpCj4gKzc6IHZwc2xsZHEgSHgsVXgsSWIgKDY2KSwoMTFC
KSwodjEpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwMTUKPiArMDogZnhzYXZlIHwg
UkRGU0JBU0UgUnkgKEYzKSwoMTFCKQo+ICsxOiBmeHN0b3IgfCBSREdTQkFTRSBSeSAoRjMpLCgx
MUIpCj4gKzI6IHZsZG14Y3NyIE1kICh2MSkgfCBXUkZTQkFTRSBSeSAoRjMpLCgxMUIpCj4gKzM6
IHZzdG14Y3NyIE1kICh2MSkgfCBXUkdTQkFTRSBSeSAoRjMpLCgxMUIpCj4gKzQ6IFhTQVZFCj4g
KzU6IFhSU1RPUiB8IGxmZW5jZSAoMTFCKQo+ICs2OiBYU0FWRU9QVCB8IG1mZW5jZSAoMTFCKQo+
ICs3OiBjbGZsdXNoIHwgc2ZlbmNlICgxMUIpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTog
R3JwMTYKPiArMDogcHJlZmV0Y2ggTlRBCj4gKzE6IHByZWZldGNoIFQwCj4gKzI6IHByZWZldGNo
IFQxCj4gKzM6IHByZWZldGNoIFQyCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwMTcK
PiArMTogQkxTUiBCeSxFeSAodikKPiArMjogQkxTTVNLIEJ5LEV5ICh2KQo+ICszOiBCTFNJIEJ5
LEV5ICh2KQo+ICtFbmRUYWJsZQo+ICsKPiArIyBBTUQncyBQcmVmZXRjaCBHcm91cAo+ICtHcnBU
YWJsZTogR3JwUAo+ICswOiBQUkVGRVRDSAo+ICsxOiBQUkVGRVRDSFcKPiArRW5kVGFibGUKPiAr
Cj4gK0dycFRhYmxlOiBHcnBQRExLCj4gKzA6IE1PTlRNVUwKPiArMTogWFNIQTEKPiArMjogWFNI
QTIKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnBSTkcKPiArMDogeHN0b3JlLXJuZwo+
ICsxOiB4Y3J5cHQtZWNiCj4gKzI6IHhjcnlwdC1jYmMKPiArNDogeGNyeXB0LWNmYgo+ICs1OiB4
Y3J5cHQtb2ZiCj4gK0VuZFRhYmxlCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYv
aW5hdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbmF0LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAuLjQxYjkwNjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLXg4Ni9pbmF0LmgKPiBAQCAtMCwwICsxLDIxOSBAQAo+ICsjaWZuZGVmIF9BU01f
WDg2X0lOQVRfSAo+ICsjZGVmaW5lIF9BU01fWDg2X0lOQVRfSAo+ICsvKgo+ICsgKiB4ODYgaW5z
dHJ1Y3Rpb24gYXR0cmlidXRlcwo+ICsgKgo+ICsgKiBXcml0dGVuIGJ5IE1hc2FtaSBIaXJhbWF0
c3UgPG1oaXJhbWF0QHJlZGhhdC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAq
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCj4gKyAqCj4gKyAqLwo+
ICsjaW5jbHVkZSA8YXNtL2luYXRfdHlwZXMuaD4KPiArCj4gKy8qCj4gKyAqIEludGVybmFsIGJp
dHMuIERvbid0IHVzZSBiaXRtYXNrcyBkaXJlY3RseSwgYmVjYXVzZSB0aGVzZSBiaXRzIGFyZQo+
ICsgKiB1bnN0YWJsZS4gWW91IHNob3VsZCB1c2UgY2hlY2tpbmcgZnVuY3Rpb25zLgo+ICsgKi8K
PiArCj4gKyNkZWZpbmUgSU5BVF9PUENPREVfVEFCTEVfU0laRSAyNTYKPiArI2RlZmluZSBJTkFU
X0dST1VQX1RBQkxFX1NJWkUgOAo+ICsKPiArLyogTGVnYWN5IGxhc3QgcHJlZml4ZXMgKi8KPiAr
I2RlZmluZSBJTkFUX1BGWF9PUE5EU1ogMSAvKiAweDY2ICovIC8qIExQRlgxICovCj4gKyNkZWZp
bmUgSU5BVF9QRlhfUkVQRSAyIC8qIDB4RjMgKi8gICAvKiBMUEZYMiAqLwo+ICsjZGVmaW5lIElO
QVRfUEZYX1JFUE5FIDMgLyogMHhGMiAqLyAgLyogTFBGWDMgKi8KPiArLyogT3RoZXIgTGVnYWN5
IHByZWZpeGVzICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfTE9DSyA0ICAgIC8qIDB4RjAgKi8KPiAr
I2RlZmluZSBJTkFUX1BGWF9DUyA1ICAgICAgLyogMHgyRSAqLwo+ICsjZGVmaW5lIElOQVRfUEZY
X0RTIDYgICAgICAvKiAweDNFICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfRVMgNyAgICAgIC8qIDB4
MjYgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9GUyA4ICAgICAgLyogMHg2NCAqLwo+ICsjZGVmaW5l
IElOQVRfUEZYX0dTIDkgICAgICAvKiAweDY1ICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfU1MgMTAg
ICAgIC8qIDB4MzYgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9BRERSU1ogMTEgLyogMHg2NyAqLwo+
ICsvKiB4ODYtNjQgUkVYIHByZWZpeCAqLwo+ICsjZGVmaW5lIElOQVRfUEZYX1JFWCAxMiAvKiAw
eDRYICovCj4gKy8qIEFWWCBWRVggcHJlZml4ZXMgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9WRVgy
IDEzIC8qIDItYnl0ZXMgVkVYIHByZWZpeCAqLwo+ICsjZGVmaW5lIElOQVRfUEZYX1ZFWDMgMTQg
LyogMy1ieXRlcyBWRVggcHJlZml4ICovCj4gKwo+ICsjZGVmaW5lIElOQVRfTFNUUEZYX01BWCAz
Cj4gKyNkZWZpbmUgSU5BVF9MR0NQRlhfTUFYIDExCj4gKwo+ICsvKiBJbW1lZGlhdGUgc2l6ZSAq
Lwo+ICsjZGVmaW5lIElOQVRfSU1NX0JZVEUgMQo+ICsjZGVmaW5lIElOQVRfSU1NX1dPUkQgMgo+
ICsjZGVmaW5lIElOQVRfSU1NX0RXT1JEIDMKPiArI2RlZmluZSBJTkFUX0lNTV9RV09SRCA0Cj4g
KyNkZWZpbmUgSU5BVF9JTU1fUFRSIDUKPiArI2RlZmluZSBJTkFUX0lNTV9WV09SRDMyIDYKPiAr
I2RlZmluZSBJTkFUX0lNTV9WV09SRCA3Cj4gKwo+ICsvKiBMZWdhY3kgcHJlZml4ICovCj4gKyNk
ZWZpbmUgSU5BVF9QRlhfT0ZGUyAwCj4gKyNkZWZpbmUgSU5BVF9QRlhfQklUUyA0Cj4gKyNkZWZp
bmUgSU5BVF9QRlhfTUFYICgoMSA8PCBJTkFUX1BGWF9CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5B
VF9QRlhfTUFTSyAoSU5BVF9QRlhfTUFYIDw8IElOQVRfUEZYX09GRlMpCj4gKy8qIEVzY2FwZSBv
cGNvZGVzICovCj4gKyNkZWZpbmUgSU5BVF9FU0NfT0ZGUyAoSU5BVF9QRlhfT0ZGUyArIElOQVRf
UEZYX0JJVFMpCj4gKyNkZWZpbmUgSU5BVF9FU0NfQklUUyAyCj4gKyNkZWZpbmUgSU5BVF9FU0Nf
TUFYICgoMSA8PCBJTkFUX0VTQ19CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5BVF9FU0NfTUFTSyAo
SU5BVF9FU0NfTUFYIDw8IElOQVRfRVNDX09GRlMpCj4gKy8qIEdyb3VwIG9wY29kZXMgKDEtMTYp
ICovCj4gKyNkZWZpbmUgSU5BVF9HUlBfT0ZGUyAoSU5BVF9FU0NfT0ZGUyArIElOQVRfRVNDX0JJ
VFMpCj4gKyNkZWZpbmUgSU5BVF9HUlBfQklUUyA1Cj4gKyNkZWZpbmUgSU5BVF9HUlBfTUFYICgo
MSA8PCBJTkFUX0dSUF9CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5BVF9HUlBfTUFTSyAoSU5BVF9H
UlBfTUFYIDw8IElOQVRfR1JQX09GRlMpCj4gKy8qIEltbWVkaWF0ZXMgKi8KPiArI2RlZmluZSBJ
TkFUX0lNTV9PRkZTIChJTkFUX0dSUF9PRkZTICsgSU5BVF9HUlBfQklUUykKPiArI2RlZmluZSBJ
TkFUX0lNTV9CSVRTIDMKPiArI2RlZmluZSBJTkFUX0lNTV9NQVNLICgoKDEgPDwgSU5BVF9JTU1f
QklUUykgLSAxKSA8PCBJTkFUX0lNTV9PRkZTKQo+ICsvKiBGbGFncyAqLwo+ICsjZGVmaW5lIElO
QVRfRkxBR19PRkZTIChJTkFUX0lNTV9PRkZTICsgSU5BVF9JTU1fQklUUykKPiArI2RlZmluZSBJ
TkFUX01PRFJNICgxIDw8IChJTkFUX0ZMQUdfT0ZGUykpCj4gKyNkZWZpbmUgSU5BVF9GT1JDRTY0
ICgxIDw8IChJTkFUX0ZMQUdfT0ZGUyArIDEpKQo+ICsjZGVmaW5lIElOQVRfU0NORElNTSAoMSA8
PCAoSU5BVF9GTEFHX09GRlMgKyAyKSkKPiArI2RlZmluZSBJTkFUX01PRkZTRVQgKDEgPDwgKElO
QVRfRkxBR19PRkZTICsgMykpCj4gKyNkZWZpbmUgSU5BVF9WQVJJQU5UICgxIDw8IChJTkFUX0ZM
QUdfT0ZGUyArIDQpKQo+ICsjZGVmaW5lIElOQVRfVkVYT0sgKDEgPDwgKElOQVRfRkxBR19PRkZT
ICsgNSkpCj4gKyNkZWZpbmUgSU5BVF9WRVhPTkxZICgxIDw8IChJTkFUX0ZMQUdfT0ZGUyArIDYp
KQo+ICsvKiBBdHRyaWJ1dGUgbWFraW5nIG1hY3JvcyBmb3IgYXR0cmlidXRlIHRhYmxlcyAqLwo+
ICsjZGVmaW5lIElOQVRfTUFLRV9QUkVGSVgocGZ4KSAocGZ4IDw8IElOQVRfUEZYX09GRlMpCj4g
KyNkZWZpbmUgSU5BVF9NQUtFX0VTQ0FQRShlc2MpIChlc2MgPDwgSU5BVF9FU0NfT0ZGUykKPiAr
I2RlZmluZSBJTkFUX01BS0VfR1JPVVAoZ3JwKSAoKGdycCA8PCBJTkFUX0dSUF9PRkZTKSB8IElO
QVRfTU9EUk0pCj4gKyNkZWZpbmUgSU5BVF9NQUtFX0lNTShpbW0pIChpbW0gPDwgSU5BVF9JTU1f
T0ZGUykKPiArCj4gKy8qIEF0dHJpYnV0ZSBzZWFyY2ggQVBJcyAqLwo+ICtleHRlcm4gaW5zbl9h
dHRyX3QgaW5hdF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShpbnNuX2J5dGVfdCBvcGNvZGUpOwo+ICtl
eHRlcm4gaW50IGluYXRfZ2V0X2xhc3RfcHJlZml4X2lkKGluc25fYnl0ZV90IGxhc3RfcGZ4KTsK
PiArZXh0ZXJuIGluc25fYXR0cl90IGluYXRfZ2V0X2VzY2FwZV9hdHRyaWJ1dGUoaW5zbl9ieXRl
X3Qgb3Bjb2RlLCBpbnQgbHBmeF9pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zbl9hdHRyX3QgZXNjX2F0dHIpOwo+ICtleHRlcm4gaW5zbl9hdHRy
X3QgaW5hdF9nZXRfZ3JvdXBfYXR0cmlidXRlKGluc25fYnl0ZV90IG1vZHJtLCBpbnQgbHBmeF9p
ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX2F0
dHJfdCBlc2NfYXR0cik7Cj4gK2V4dGVybiBpbnNuX2F0dHJfdCBpbmF0X2dldF9hdnhfYXR0cmli
dXRlKGluc25fYnl0ZV90IG9wY29kZSwgaW5zbl9ieXRlX3QgdmV4X20sCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc25fYnl0ZV90IHZleF9wcCk7Cj4gKwo+
ICsvKiBBdHRyaWJ1dGUgY2hlY2tpbmcgZnVuY3Rpb25zICovCj4gK3N0YXRpYyBpbmxpbmUgaW50
IGluYXRfaXNfbGVnYWN5X3ByZWZpeChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICBhdHRy
ICY9IElOQVRfUEZYX01BU0s7Cj4gKyAgICByZXR1cm4gYXR0ciAmJiBhdHRyIDw9IElOQVRfTEdD
UEZYX01BWDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19hZGRyZXNzX3Np
emVfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiAoYXR0ciAmIElO
QVRfUEZYX01BU0spID09IElOQVRfUEZYX0FERFJTWjsKPiArfQo+ICsKPiArc3RhdGljIGlubGlu
ZSBpbnQgaW5hdF9pc19vcGVyYW5kX3NpemVfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sK
PiArICAgIHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElOQVRfUEZYX09QTkRTWjsK
PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19yZXhfcHJlZml4KGluc25fYXR0
cl90IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElO
QVRfUEZYX1JFWDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9sYXN0X3ByZWZp
eF9pZChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICBpZiAoIChhdHRyICYgSU5BVF9QRlhf
TUFTSykgPiBJTkFUX0xTVFBGWF9NQVggKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgZWxz
ZQo+ICsgICAgICAgIHJldHVybiBhdHRyICYgSU5BVF9QRlhfTUFTSzsKPiArfQo+ICsKPiArc3Rh
dGljIGlubGluZSBpbnQgaW5hdF9pc192ZXhfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sK
PiArICAgIGF0dHIgJj0gSU5BVF9QRlhfTUFTSzsKPiArICAgIHJldHVybiBhdHRyID09IElOQVRf
UEZYX1ZFWDIgfHwgYXR0ciA9PSBJTkFUX1BGWF9WRVgzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s
aW5lIGludCBpbmF0X2lzX3ZleDNfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sKPiArICAg
IHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElOQVRfUEZYX1ZFWDM7Cj4gK30KPiAr
Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaXNfZXNjYXBlKGluc25fYXR0cl90IGF0dHIpCj4g
K3sKPiArICAgIHJldHVybiBhdHRyICYgSU5BVF9FU0NfTUFTSzsKPiArfQo+ICsKPiArc3RhdGlj
IGlubGluZSBpbnQgaW5hdF9lc2NhcGVfaWQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAg
cmV0dXJuIChhdHRyICYgSU5BVF9FU0NfTUFTSykgPj4gSU5BVF9FU0NfT0ZGUzsKPiArfQo+ICsK
PiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19ncm91cChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7
Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfR1JQX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyBp
bmxpbmUgaW50IGluYXRfZ3JvdXBfaWQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0
dXJuIChhdHRyICYgSU5BVF9HUlBfTUFTSykgPj4gSU5BVF9HUlBfT0ZGUzsKPiArfQo+ICsKPiAr
c3RhdGljIGlubGluZSBpbnQgaW5hdF9ncm91cF9jb21tb25fYXR0cmlidXRlKGluc25fYXR0cl90
IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiBhdHRyICYgfklOQVRfR1JQX01BU0s7Cj4gK30KPiAr
Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaGFzX2ltbWVkaWF0ZShpbnNuX2F0dHJfdCBhdHRy
KQo+ICt7Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfSU1NX01BU0s7Cj4gK30KPiArCj4gK3N0
YXRpYyBpbmxpbmUgaW50IGluYXRfaW1tZWRpYXRlX3NpemUoaW5zbl9hdHRyX3QgYXR0cikKPiAr
ewo+ICsgICAgcmV0dXJuIChhdHRyICYgSU5BVF9JTU1fTUFTSykgPj4gSU5BVF9JTU1fT0ZGUzsK
PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9oYXNfbW9kcm0oaW5zbl9hdHRyX3Qg
YXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX01PRFJNOwo+ICt9Cj4gKwo+ICtz
dGF0aWMgaW5saW5lIGludCBpbmF0X2lzX2ZvcmNlNjQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+
ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX0ZPUkNFNjQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp
bmUgaW50IGluYXRfaGFzX3NlY29uZF9pbW1lZGlhdGUoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+
ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX1NDTkRJTU07Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp
bmUgaW50IGluYXRfaGFzX21vZmZzZXQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0
dXJuIGF0dHIgJiBJTkFUX01PRkZTRVQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGlu
YXRfaGFzX3ZhcmlhbnQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIg
JiBJTkFUX1ZBUklBTlQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfYWNjZXB0
X3ZleChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfVkVY
T0s7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfbXVzdF92ZXgoaW5zbl9hdHRy
X3QgYXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX1ZFWE9OTFk7Cj4gK30KPiAr
Cj4gKyNlbmRpZiAvKiBfQVNNX1g4Nl9JTkFUX0ggKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1
ZGUvYXNtLXg4Ni9pbmF0X3R5cGVzLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMu
aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNjYyYWMxNAo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMuaAo+IEBAIC0w
LDAgKzEsMjkgQEAKPiArI2lmbmRlZiBfQVNNX1g4Nl9JTkFUX1RZUEVTX0gKPiArI2RlZmluZSBf
QVNNX1g4Nl9JTkFUX1RZUEVTX0gKPiArLyoKPiArICogeDg2IGluc3RydWN0aW9uIGF0dHJpYnV0
ZXMKPiArICoKPiArICogV3JpdHRlbiBieSBNYXNhbWkgSGlyYW1hdHN1IDxtaGlyYW1hdEByZWRo
YXQuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+
ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgo+ICsgKgo+ICsgKi8KPiArCj4gKy8qIEluc3RydWN0
aW9uIGF0dHJpYnV0ZXMgKi8KPiArdHlwZWRlZiB1bnNpZ25lZCBpbnQgaW5zbl9hdHRyX3Q7Cj4g
K3R5cGVkZWYgdW5zaWduZWQgY2hhciBpbnNuX2J5dGVfdDsKPiArdHlwZWRlZiBzaWduZWQgaW50
IGluc25fdmFsdWVfdDsKPiArCj4gKyNlbmRpZiAvKiBfQVNNX1g4Nl9JTkFUX1RZUEVTX0ggKi8K
PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbnNuLmggYi94ZW4vaW5jbHVkZS9h
c20teDg2L2luc24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzM5
NzczYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2luc24uaAo+
IEBAIC0wLDAgKzEsMjAxIEBACj4gKyNpZm5kZWYgX0FTTV9YODZfSU5TTl9ICj4gKyNkZWZpbmUg
X0FTTV9YODZfSU5TTl9ICj4gKy8qCj4gKyAqIHg4NiBpbnN0cnVjdGlvbiBhbmFseXNpcwo+ICsg
Kgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsg
KiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIElCTSBDb3Jwb3JhdGlvbiwg
MjAwOQo+ICsgKi8KPiArCj4gKy8qIGluc25fYXR0cl90IGlzIGRlZmluZWQgaW4gaW5hdC5oICov
Cj4gKyNpbmNsdWRlIDxhc20vaW5hdC5oPgo+ICsKPiArc3RydWN0IGluc25fZmllbGQKPiArewo+
ICsgICAgdW5pb24gewo+ICsgICAgICAgIGluc25fdmFsdWVfdCB2YWx1ZTsKPiArICAgICAgICBp
bnNuX2J5dGVfdCBieXRlc1s0XTsKPiArICAgIH07Cj4gKyAgICAvKiAhMCBpZiB3ZSd2ZSBydW4g
aW5zbl9nZXRfeHh4KCkgZm9yIHRoaXMgZmllbGQgKi8KPiArICAgIHVuc2lnbmVkIGNoYXIgZ290
Owo+ICsgICAgdW5zaWduZWQgY2hhciBuYnl0ZXM7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW5zbgo+
ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCBwcmVmaXhlczsgLyoKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBQcmVmaXhlcwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHByZWZpeGVzLmJ5dGVzWzNdOiBsYXN0IHByZWZpeAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgcmV4X3By
ZWZpeDsgLyogUkVYIHByZWZpeCAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgdmV4X3ByZWZp
eDsgLyogVkVYIHByZWZpeCAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgb3Bjb2RlOyAgICAg
LyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9wY29kZS5ieXRlc1sw
XTogb3Bjb2RlMQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogb3Bjb2Rl
LmJ5dGVzWzFdOiBvcGNvZGUyCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KiBvcGNvZGUuYnl0ZXNbMl06IG9wY29kZTMKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgbW9kcm07Cj4gKyAgICBzdHJ1Y3Qg
aW5zbl9maWVsZCBzaWI7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCBkaXNwbGFjZW1lbnQ7Cj4g
KyAgICB1bmlvbiB7Cj4gKyAgICAgICAgc3RydWN0IGluc25fZmllbGQgaW1tZWRpYXRlOwo+ICsg
ICAgICAgIHN0cnVjdCBpbnNuX2ZpZWxkIG1vZmZzZXQxOyAgIC8qIGZvciA2NGJpdCBNT1YgKi8K
PiArICAgICAgICBzdHJ1Y3QgaW5zbl9maWVsZCBpbW1lZGlhdGUxOyAvKiBmb3IgNjRiaXQgaW1t
IG9yIG9mZjE2LzMyICovCj4gKyAgICB9Owo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIHN0cnVj
dCBpbnNuX2ZpZWxkIG1vZmZzZXQyOyAgIC8qIGZvciA2NGJpdCBNT1YgKi8KPiArICAgICAgICBz
dHJ1Y3QgaW5zbl9maWVsZCBpbW1lZGlhdGUyOyAvKiBmb3IgNjRiaXQgaW1tIG9yIHNlZzE2ICov
Cj4gKyAgICB9Owo+ICsKPiArICAgIGluc25fYXR0cl90IGF0dHI7Cj4gKyAgICB1bnNpZ25lZCBj
aGFyIG9wbmRfYnl0ZXM7Cj4gKyAgICB1bnNpZ25lZCBjaGFyIGFkZHJfYnl0ZXM7Cj4gKyAgICB1
bnNpZ25lZCBjaGFyIGxlbmd0aDsKPiArICAgIHVuc2lnbmVkIGNoYXIgeDg2XzY0Owo+ICsKPiAr
ICAgIGNvbnN0IGluc25fYnl0ZV90ICprYWRkcjsgLyoga2VybmVsIGFkZHJlc3Mgb2YgaW5zbiB0
byBhbmFseXplICovCj4gKyAgICBjb25zdCBpbnNuX2J5dGVfdCAqbmV4dF9ieXRlOwo+ICt9Owo+
ICsKPiArI2RlZmluZSBNQVhfSU5TTl9TSVpFIDE2Cj4gKwo+ICsjZGVmaW5lIFg4Nl9NT0RSTV9N
T0QobW9kcm0pICgoKG1vZHJtKSAmIDB4YzApID4+IDYpCj4gKyNkZWZpbmUgWDg2X01PRFJNX1JF
Ryhtb2RybSkgKCgobW9kcm0pICYgMHgzOCkgPj4gMykKPiArI2RlZmluZSBYODZfTU9EUk1fUk0o
bW9kcm0pICgobW9kcm0pICYgMHgwNykKPiArCj4gKyNkZWZpbmUgWDg2X1NJQl9TQ0FMRShzaWIp
ICgoKHNpYikgJiAweGMwKSA+PiA2KQo+ICsjZGVmaW5lIFg4Nl9TSUJfSU5ERVgoc2liKSAoKChz
aWIpICYgMHgzOCkgPj4gMykKPiArI2RlZmluZSBYODZfU0lCX0JBU0Uoc2liKSAoKHNpYikgJiAw
eDA3KQo+ICsKPiArI2RlZmluZSBYODZfUkVYX1cocmV4KSAoKHJleCkgJiA4KQo+ICsjZGVmaW5l
IFg4Nl9SRVhfUihyZXgpICgocmV4KSAmIDQpCj4gKyNkZWZpbmUgWDg2X1JFWF9YKHJleCkgKChy
ZXgpICYgMikKPiArI2RlZmluZSBYODZfUkVYX0IocmV4KSAoKHJleCkgJiAxKQo+ICsKPiArLyog
VkVYIGJpdCBmbGFncyAgKi8KPiArI2RlZmluZSBYODZfVkVYX1codmV4KSAoKHZleCkgJiAweDgw
KSAvKiBWRVgzIEJ5dGUyICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9SKHZleCkgKCh2ZXgpICYgMHg4
MCkgLyogVkVYMi8zIEJ5dGUxICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9YKHZleCkgKCh2ZXgpICYg
MHg0MCkgLyogVkVYMyBCeXRlMSAqLwo+ICsjZGVmaW5lIFg4Nl9WRVhfQih2ZXgpICgodmV4KSAm
IDB4MjApIC8qIFZFWDMgQnl0ZTEgKi8KPiArI2RlZmluZSBYODZfVkVYX0wodmV4KSAoKHZleCkg
JiAweDA0KSAvKiBWRVgzIEJ5dGUyLCBWRVgyIEJ5dGUxICovCj4gKy8qIFZFWCBiaXQgZmllbGRz
ICovCj4gKyNkZWZpbmUgWDg2X1ZFWDNfTSh2ZXgpICgodmV4KSAmIDB4MWYpICAgICAgIC8qIFZF
WDMgQnl0ZTEgKi8KPiArI2RlZmluZSBYODZfVkVYMl9NIDEgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogVkVYMi5NIGFsd2F5cyAxICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9WKHZleCkgKCgodmV4
KSAmIDB4NzgpID4+IDMpIC8qIFZFWDMgQnl0ZTIsIFZFWDIgQnl0ZTEgKi8KPiArI2RlZmluZSBY
ODZfVkVYX1AodmV4KSAoKHZleCkgJiAweDAzKSAgICAgICAgLyogVkVYMyBCeXRlMiwgVkVYMiBC
eXRlMSAqLwo+ICsjZGVmaW5lIFg4Nl9WRVhfTV9NQVggMHgxZiAgICAgICAgICAgICAgICAgICAv
KiBWRVgzLk0gTWF4aW11bSB2YWx1ZSAqLwo+ICsKPiArZXh0ZXJuIHZvaWQgaW5zbl9pbml0KHN0
cnVjdCBpbnNuICppbnNuLCBjb25zdCB2b2lkICprYWRkciwgaW50IHg4Nl82NCk7Cj4gK2V4dGVy
biB2b2lkIGluc25fZ2V0X3ByZWZpeGVzKHN0cnVjdCBpbnNuICppbnNuKTsKPiArZXh0ZXJuIHZv
aWQgaW5zbl9nZXRfb3Bjb2RlKHN0cnVjdCBpbnNuICppbnNuKTsKPiArZXh0ZXJuIHZvaWQgaW5z
bl9nZXRfbW9kcm0oc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9z
aWIoc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9kaXNwbGFjZW1l
bnQoc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9pbW1lZGlhdGUo
c3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9sZW5ndGgoc3RydWN0
IGluc24gKmluc24pOwo+ICsKPiArLyogQXR0cmlidXRlIHdpbGwgYmUgZGV0ZXJtaW5lZCBhZnRl
ciBnZXR0aW5nIE1vZFJNIChmb3Igb3Bjb2RlIGdyb3VwcykgKi8KPiArc3RhdGljIGlubGluZSB2
b2lkIGluc25fZ2V0X2F0dHJpYnV0ZShzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgaW5z
bl9nZXRfbW9kcm0oaW5zbik7Cj4gK30KPiArCj4gKy8qIEluc3RydWN0aW9uIHVzZXMgUklQLXJl
bGF0aXZlIGFkZHJlc3NpbmcgKi8KPiArZXh0ZXJuIGludCBpbnNuX3JpcF9yZWxhdGl2ZShzdHJ1
Y3QgaW5zbiAqaW5zbik7Cj4gKwo+ICsvKiBJbml0IGluc24gZm9yIGtlcm5lbCB0ZXh0ICovCj4g
K3N0YXRpYyBpbmxpbmUgdm9pZCBrZXJuZWxfaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBj
b25zdCB2b2lkICprYWRkcikKPiArewo+ICsjaWZkZWYgQ09ORklHX1g4Nl82NAo+ICsgICAgaW5z
bl9pbml0KGluc24sIGthZGRyLCAxKTsKPiArI2Vsc2UgLyogQ09ORklHX1g4Nl8zMiAqLwo+ICsg
ICAgaW5zbl9pbml0KGluc24sIGthZGRyLCAwKTsKPiArI2VuZGlmCj4gK30KPiArCj4gK3N0YXRp
YyBpbmxpbmUgaW50IGluc25faXNfYXZ4KHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBp
ZiAoICFpbnNuLT5wcmVmaXhlcy5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X3ByZWZpeGVzKGlu
c24pOwo+ICsgICAgcmV0dXJuIChpbnNuLT52ZXhfcHJlZml4LnZhbHVlICE9IDApOwo+ICt9Cj4g
Kwo+ICsvKiBFbnN1cmUgdGhpcyBpbnN0cnVjdGlvbiBpcyBkZWNvZGVkIGNvbXBsZXRlbHkgKi8K
PiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9jb21wbGV0ZShzdHJ1Y3QgaW5zbiAqaW5zbikKPiAr
ewo+ICsgICAgcmV0dXJuIGluc24tPm9wY29kZS5nb3QgJiYgaW5zbi0+bW9kcm0uZ290ICYmIGlu
c24tPnNpYi5nb3QgJiYKPiArICAgICAgICAgICBpbnNuLT5kaXNwbGFjZW1lbnQuZ290ICYmIGlu
c24tPmltbWVkaWF0ZS5nb3Q7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW5zbl9ieXRlX3Qg
aW5zbl92ZXhfbV9iaXRzKHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpZiAoIGluc24t
PnZleF9wcmVmaXgubmJ5dGVzID09IDIgKSAvKiAyIGJ5dGVzIFZFWCAqLwo+ICsgICAgICAgIHJl
dHVybiBYODZfVkVYMl9NOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHJldHVybiBYODZfVkVYM19N
KGluc24tPnZleF9wcmVmaXguYnl0ZXNbMV0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGlu
c25fYnl0ZV90IGluc25fdmV4X3BfYml0cyhzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAg
aWYgKCBpbnNuLT52ZXhfcHJlZml4Lm5ieXRlcyA9PSAyICkgLyogMiBieXRlcyBWRVggKi8KPiAr
ICAgICAgICByZXR1cm4gWDg2X1ZFWF9QKGluc24tPnZleF9wcmVmaXguYnl0ZXNbMV0pOwo+ICsg
ICAgZWxzZQo+ICsgICAgICAgIHJldHVybiBYODZfVkVYX1AoaW5zbi0+dmV4X3ByZWZpeC5ieXRl
c1syXSk7Cj4gK30KPiArCj4gKy8qIEdldCB0aGUgbGFzdCBwcmVmaXggaWQgZnJvbSBsYXN0IHBy
ZWZpeCBvciBWRVggcHJlZml4ICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluc25fbGFzdF9wcmVm
aXhfaWQoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGlmICggaW5zbl9pc19hdngoaW5z
bikgKQo+ICsgICAgICAgIHJldHVybiBpbnNuX3ZleF9wX2JpdHMoaW5zbik7IC8qIFZFWF9wIGlz
IGEgU0lNRCBwcmVmaXggaWQgKi8KPiArCj4gKyAgICBpZiAoIGluc24tPnByZWZpeGVzLmJ5dGVz
WzNdICkKPiArICAgICAgICByZXR1cm4gaW5hdF9nZXRfbGFzdF9wcmVmaXhfaWQoaW5zbi0+cHJl
Zml4ZXMuYnl0ZXNbM10pOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBPZmZz
ZXQgb2YgZWFjaCBmaWVsZCBmcm9tIGthZGRyICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluc25f
b2Zmc2V0X3JleF9wcmVmaXgoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIHJldHVybiBp
bnNuLT5wcmVmaXhlcy5uYnl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZz
ZXRfdmV4X3ByZWZpeChzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgcmV0dXJuIGluc25f
b2Zmc2V0X3JleF9wcmVmaXgoaW5zbikgKyBpbnNuLT5yZXhfcHJlZml4Lm5ieXRlczsKPiArfQo+
ICtzdGF0aWMgaW5saW5lIGludCBpbnNuX29mZnNldF9vcGNvZGUoc3RydWN0IGluc24gKmluc24p
Cj4gK3sKPiArICAgIHJldHVybiBpbnNuX29mZnNldF92ZXhfcHJlZml4KGluc24pICsgaW5zbi0+
dmV4X3ByZWZpeC5uYnl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZzZXRf
bW9kcm0oc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIHJldHVybiBpbnNuX29mZnNldF9v
cGNvZGUoaW5zbikgKyBpbnNuLT5vcGNvZGUubmJ5dGVzOwo+ICt9Cj4gK3N0YXRpYyBpbmxpbmUg
aW50IGluc25fb2Zmc2V0X3NpYihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgcmV0dXJu
IGluc25fb2Zmc2V0X21vZHJtKGluc24pICsgaW5zbi0+bW9kcm0ubmJ5dGVzOwo+ICt9Cj4gK3N0
YXRpYyBpbmxpbmUgaW50IGluc25fb2Zmc2V0X2Rpc3BsYWNlbWVudChzdHJ1Y3QgaW5zbiAqaW5z
bikKPiArewo+ICsgICAgcmV0dXJuIGluc25fb2Zmc2V0X3NpYihpbnNuKSArIGluc24tPnNpYi5u
Ynl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZzZXRfaW1tZWRpYXRlKHN0
cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICByZXR1cm4gaW5zbl9vZmZzZXRfZGlzcGxhY2Vt
ZW50KGluc24pICsgaW5zbi0+ZGlzcGxhY2VtZW50Lm5ieXRlczsKPiArfQo+ICsKPiArI2VuZGlm
IC8qIF9BU01fWDg2X0lOU05fSCAqLwo+IGRpZmYgLS1naXQgYS94ZW4vdG9vbHMvZ2VuLWluc24t
YXR0ci14ODYuYXdrIGIveGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3awo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYmJiOGY0MAo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi94ZW4vdG9vbHMvZ2VuLWluc24tYXR0ci14ODYuYXdrCj4gQEAgLTAsMCArMSwzODYgQEAK
PiArIyEvYmluL2F3ayAtZgo+ICsjIGdlbi1pbnNuLWF0dHIteDg2LmF3azogSW5zdHJ1Y3Rpb24g
YXR0cmlidXRlIHRhYmxlIGdlbmVyYXRvcgo+ICsjIFdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFtYXRz
dSA8bWhpcmFtYXRAcmVkaGF0LmNvbT4KPiArIwo+ICsjIFVzYWdlOiBhd2sgLWYgZ2VuLWluc24t
YXR0ci14ODYuYXdrIHg4Ni1vcGNvZGUtbWFwLnR4dCA+IGluYXQtdGFibGVzLmMKPiArCj4gKyMg
QXdrIGltcGxlbWVudGF0aW9uIHNhbml0eSBjaGVjawo+ICtmdW5jdGlvbiBjaGVja19hd2tfaW1w
bGVtZW50KCkgewo+ICsJaWYgKHNwcmludGYoIiV4IiwgMCkgIT0gIjAiKQo+ICsJCXJldHVybiAi
WW91ciBhd2sgaGFzIGEgcHJpbnRmLWZvcm1hdCBwcm9ibGVtLiIKPiArCXJldHVybiAiIgo+ICt9
Cj4gKwo+ICsjIENsZWFyIHdvcmtpbmcgdmFycwo+ICtmdW5jdGlvbiBjbGVhcl92YXJzKCkgewo+
ICsJZGVsZXRlIHRhYmxlCj4gKwlkZWxldGUgbHB0YWJsZTIKPiArCWRlbGV0ZSBscHRhYmxlMQo+
ICsJZGVsZXRlIGxwdGFibGUzCj4gKwllaWQgPSAtMSAjIGVzY2FwZSBpZAo+ICsJZ2lkID0gLTEg
IyBncm91cCBpZAo+ICsJYWlkID0gLTEgIyBBVlggaWQKPiArCXRuYW1lID0gIiIKPiArfQo+ICsK
PiArQkVHSU4gewo+ICsJIyBJbXBsZW1lbnRhdGlvbiBlcnJvciBjaGVja2luZwo+ICsJYXdrY2hl
Y2tlZCA9IGNoZWNrX2F3a19pbXBsZW1lbnQoKQo+ICsJaWYgKGF3a2NoZWNrZWQgIT0gIiIpIHsK
PiArCQlwcmludCAiRXJyb3I6ICIgYXdrY2hlY2tlZCA+ICIvZGV2L3N0ZGVyciIKPiArCQlwcmlu
dCAiUGxlYXNlIHRyeSB0byB1c2UgZ2F3ay4iID4gIi9kZXYvc3RkZXJyIgo+ICsJCWV4aXQgMQo+
ICsJfQo+ICsKPiArCSMgU2V0dXAgZ2VuZXJhdGluZyB0YWJsZXMKPiArCXByaW50ICIvKiB4ODYg
b3Bjb2RlIG1hcCBnZW5lcmF0ZWQgZnJvbSB4ODYtb3Bjb2RlLW1hcC50eHQgKi8iCj4gKwlwcmlu
dCAiLyogRG8gbm90IGNoYW5nZSB0aGlzIGNvZGUuICovXG4iCj4gKwlnZ2lkID0gMQo+ICsJZ2Vp
ZCA9IDEKPiArCWdhaWQgPSAwCj4gKwlkZWxldGUgZXRhYmxlCj4gKwlkZWxldGUgZ3RhYmxlCj4g
KwlkZWxldGUgYXRhYmxlCj4gKwo+ICsJb3BuZF9leHByID0gIl5bQS1aYS16L10iCj4gKwlleHRf
ZXhwciA9ICJeXFwoIgo+ICsJc2VwX2V4cHIgPSAiXlxcfCQiCj4gKwlncm91cF9leHByID0gIl5H
cnBbMC05QS1aYS16XSsiCj4gKwo+ICsJaW1tX2V4cHIgPSAiXltJSkFPTF1bYS16XSIKPiArCWlt
bV9mbGFnWyJJYiJdID0gIklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fQllURSkiCj4gKwlpbW1fZmxh
Z1siSmIiXSA9ICJJTkFUX01BS0VfSU1NKElOQVRfSU1NX0JZVEUpIgo+ICsJaW1tX2ZsYWdbIkl3
Il0gPSAiSU5BVF9NQUtFX0lNTShJTkFUX0lNTV9XT1JEKSIKPiArCWltbV9mbGFnWyJJZCJdID0g
IklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fRFdPUkQpIgo+ICsJaW1tX2ZsYWdbIklxIl0gPSAiSU5B
VF9NQUtFX0lNTShJTkFUX0lNTV9RV09SRCkiCj4gKwlpbW1fZmxhZ1siQXAiXSA9ICJJTkFUX01B
S0VfSU1NKElOQVRfSU1NX1BUUikiCj4gKwlpbW1fZmxhZ1siSXoiXSA9ICJJTkFUX01BS0VfSU1N
KElOQVRfSU1NX1ZXT1JEMzIpIgo+ICsJaW1tX2ZsYWdbIkp6Il0gPSAiSU5BVF9NQUtFX0lNTShJ
TkFUX0lNTV9WV09SRDMyKSIKPiArCWltbV9mbGFnWyJJdiJdID0gIklOQVRfTUFLRV9JTU0oSU5B
VF9JTU1fVldPUkQpIgo+ICsJaW1tX2ZsYWdbIk9iIl0gPSAiSU5BVF9NT0ZGU0VUIgo+ICsJaW1t
X2ZsYWdbIk92Il0gPSAiSU5BVF9NT0ZGU0VUIgo+ICsJaW1tX2ZsYWdbIkx4Il0gPSAiSU5BVF9N
QUtFX0lNTShJTkFUX0lNTV9CWVRFKSIKPiArCj4gKwltb2RybV9leHByID0gIl4oW0NERUdNTlBR
UlNVVlcvXVthLXpdK3xOVEF8VFswMTJdKSIKPiArCWZvcmNlNjRfZXhwciA9ICJcXChbZGZdNjRc
XCkiCj4gKwlyZXhfZXhwciA9ICJeUkVYKFxcLltYUldCXSspKiIKPiArCWZwdV9leHByID0gIl5F
U0MiICMgVE9ETwo+ICsKPiArCWxwcmVmaXgxX2V4cHIgPSAiXFwoKDY2fCFGMylcXCkiCj4gKwls
cHJlZml4Ml9leHByID0gIlxcKEYzXFwpIgo+ICsJbHByZWZpeDNfZXhwciA9ICJcXCgoRjJ8IUYz
fDY2XFwmRjIpXFwpIgo+ICsJbHByZWZpeF9leHByID0gIlxcKCg2NnxGMnxGMylcXCkiCj4gKwlt
YXhfbHByZWZpeCA9IDQKPiArCj4gKwkjIEFsbCBvcGNvZGVzIHN0YXJ0aW5nIHdpdGggbG93ZXIt
Y2FzZSAndicgb3Igd2l0aCAodjEpIHN1cGVyc2NyaXB0Cj4gKwkjIGFjY2VwdHMgVkVYIHByZWZp
eAo+ICsJdmV4b2tfb3Bjb2RlX2V4cHIgPSAiXnYuKiIKPiArCXZleG9rX2V4cHIgPSAiXFwodjFc
XCkiCj4gKwkjIEFsbCBvcGNvZGVzIHdpdGggKHYpIHN1cGVyc2NyaXB0IHN1cHBvcnRzICpvbmx5
KiBWRVggcHJlZml4Cj4gKwl2ZXhvbmx5X2V4cHIgPSAiXFwodlxcKSIKPiArCj4gKwlwcmVmaXhf
ZXhwciA9ICJcXChQcmVmaXhcXCkiCj4gKwlwcmVmaXhfbnVtWyJPcGVyYW5kLVNpemUiXSA9ICJJ
TkFUX1BGWF9PUE5EU1oiCj4gKwlwcmVmaXhfbnVtWyJSRVBORSJdID0gIklOQVRfUEZYX1JFUE5F
Igo+ICsJcHJlZml4X251bVsiUkVQL1JFUEUiXSA9ICJJTkFUX1BGWF9SRVBFIgo+ICsJcHJlZml4
X251bVsiWEFDUVVJUkUiXSA9ICJJTkFUX1BGWF9SRVBORSIKPiArCXByZWZpeF9udW1bIlhSRUxF
QVNFIl0gPSAiSU5BVF9QRlhfUkVQRSIKPiArCXByZWZpeF9udW1bIkxPQ0siXSA9ICJJTkFUX1BG
WF9MT0NLIgo+ICsJcHJlZml4X251bVsiU0VHPUNTIl0gPSAiSU5BVF9QRlhfQ1MiCj4gKwlwcmVm
aXhfbnVtWyJTRUc9RFMiXSA9ICJJTkFUX1BGWF9EUyIKPiArCXByZWZpeF9udW1bIlNFRz1FUyJd
ID0gIklOQVRfUEZYX0VTIgo+ICsJcHJlZml4X251bVsiU0VHPUZTIl0gPSAiSU5BVF9QRlhfRlMi
Cj4gKwlwcmVmaXhfbnVtWyJTRUc9R1MiXSA9ICJJTkFUX1BGWF9HUyIKPiArCXByZWZpeF9udW1b
IlNFRz1TUyJdID0gIklOQVRfUEZYX1NTIgo+ICsJcHJlZml4X251bVsiQWRkcmVzcy1TaXplIl0g
PSAiSU5BVF9QRlhfQUREUlNaIgo+ICsJcHJlZml4X251bVsiVkVYKzFieXRlIl0gPSAiSU5BVF9Q
RlhfVkVYMiIKPiArCXByZWZpeF9udW1bIlZFWCsyYnl0ZSJdID0gIklOQVRfUEZYX1ZFWDMiCj4g
Kwo+ICsJY2xlYXJfdmFycygpCj4gK30KPiArCj4gK2Z1bmN0aW9uIHNlbWFudGljX2Vycm9yKG1z
Zykgewo+ICsJcHJpbnQgIlNlbWFudGljIGVycm9yIGF0ICIgTlIgIjogIiBtc2cgPiAiL2Rldi9z
dGRlcnIiCj4gKwlleGl0IDEKPiArfQo+ICsKPiArZnVuY3Rpb24gZGVidWcobXNnKSB7Cj4gKwlw
cmludCAiREVCVUc6ICIgbXNnCj4gK30KPiArCj4gK2Z1bmN0aW9uIGFycmF5X3NpemUoYXJyLCAg
IGksYykgewo+ICsJYyA9IDAKPiArCWZvciAoaSBpbiBhcnIpCj4gKwkJYysrCj4gKwlyZXR1cm4g
Ywo+ICt9Cj4gKwo+ICsvXlRhYmxlOi8gewo+ICsJcHJpbnQgIi8qICIgJDAgIiAqLyIKPiArCWlm
ICh0bmFtZSAhPSAiIikKPiArCQlzZW1hbnRpY19lcnJvcigiSGl0IFRhYmxlOiBiZWZvcmUgRW5k
VGFibGU6LiIpOwo+ICt9Cj4gKwo+ICsvXlJlZmVycmVyOi8gewo+ICsJaWYgKE5GICE9IDEpIHsK
PiArCQkjIGVzY2FwZSBvcGNvZGUgdGFibGUKPiArCQlyZWYgPSAiIgo+ICsJCWZvciAoaSA9IDI7
IGkgPD0gTkY7IGkrKykKPiArCQkJcmVmID0gcmVmICRpCj4gKwkJZWlkID0gZXNjYXBlW3JlZl0K
PiArCQl0bmFtZSA9IHNwcmludGYoImluYXRfZXNjYXBlX3RhYmxlXyVkIiwgZWlkKQo+ICsJfQo+
ICt9Cj4gKwo+ICsvXkFWWGNvZGU6LyB7Cj4gKwlpZiAoTkYgIT0gMSkgewo+ICsJCSMgQVZYL2Vz
Y2FwZSBvcGNvZGUgdGFibGUKPiArCQlhaWQgPSAkMgo+ICsJCWlmIChnYWlkIDw9IGFpZCkKPiAr
CQkJZ2FpZCA9IGFpZCArIDEKPiArCQlpZiAodG5hbWUgPT0gIiIpCSMgQVZYIG9ubHkgb3Bjb2Rl
IHRhYmxlCj4gKwkJCXRuYW1lID0gc3ByaW50ZigiaW5hdF9hdnhfdGFibGVfJWQiLCAkMikKPiAr
CX0KPiArCWlmIChhaWQgPT0gLTEgJiYgZWlkID09IC0xKQkjIHByaW1hcnkgb3Bjb2RlIHRhYmxl
Cj4gKwkJdG5hbWUgPSAiaW5hdF9wcmltYXJ5X3RhYmxlIgo+ICt9Cj4gKwo+ICsvXkdycFRhYmxl
Oi8gewo+ICsJcHJpbnQgIi8qICIgJDAgIiAqLyIKPiArCWlmICghKCQyIGluIGdyb3VwKSkKPiAr
CQlzZW1hbnRpY19lcnJvcigiTm8gZ3JvdXA6ICIgJDIgKQo+ICsJZ2lkID0gZ3JvdXBbJDJdCj4g
Kwl0bmFtZSA9ICJpbmF0X2dyb3VwX3RhYmxlXyIgZ2lkCj4gK30KPiArCj4gK2Z1bmN0aW9uIHBy
aW50X3RhYmxlKHRibCxuYW1lLGZtdCxuKQo+ICt7Cj4gKwlwcmludCAiY29uc3QgaW5zbl9hdHRy
X3QgIiBuYW1lICIgPSB7Igo+ICsJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewo+ICsJCWlkID0g
c3ByaW50ZihmbXQsIGkpCj4gKwkJaWYgKHRibFtpZF0pCj4gKwkJCXByaW50ICIgICAgWyIgaWQg
Il0gPSAiIHRibFtpZF0gIiwiCj4gKwl9Cj4gKwlwcmludCAifTsiCj4gK30KPiArCj4gKy9eRW5k
VGFibGUvIHsKPiArCWlmIChnaWQgIT0gLTEpIHsKPiArCQkjIHByaW50IGdyb3VwIHRhYmxlcwo+
ICsJCWlmIChhcnJheV9zaXplKHRhYmxlKSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKHRhYmxl
LCB0bmFtZSAiW0lOQVRfR1JPVVBfVEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCV4IiwgOCkK
PiArCQkJZ3RhYmxlW2dpZCwwXSA9IHRuYW1lCj4gKwkJfQo+ICsJCWlmIChhcnJheV9zaXplKGxw
dGFibGUxKSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKGxwdGFibGUxLCB0bmFtZSAiXzFbSU5B
VF9HUk9VUF9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JXgiLCA4KQo+ICsJCQlndGFibGVb
Z2lkLDFdID0gdG5hbWUgIl8xIgo+ICsJCX0KPiArCQlpZiAoYXJyYXlfc2l6ZShscHRhYmxlMikg
IT0gMCkgewo+ICsJCQlwcmludF90YWJsZShscHRhYmxlMiwgdG5hbWUgIl8yW0lOQVRfR1JPVVBf
VEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCV4IiwgOCkKPiArCQkJZ3RhYmxlW2dpZCwyXSA9
IHRuYW1lICJfMiIKPiArCQl9Cj4gKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTMpICE9IDApIHsK
PiArCQkJcHJpbnRfdGFibGUobHB0YWJsZTMsIHRuYW1lICJfM1tJTkFUX0dST1VQX1RBQkxFX1NJ
WkVdIiwKPiArCQkJCSAgICAiMHgleCIsIDgpCj4gKwkJCWd0YWJsZVtnaWQsM10gPSB0bmFtZSAi
XzMiCj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQkjIHByaW50IHByaW1hcnkvZXNjYXBlZCB0YWJs
ZXMKPiArCQlpZiAoYXJyYXlfc2l6ZSh0YWJsZSkgIT0gMCkgewo+ICsJCQlwcmludF90YWJsZSh0
YWJsZSwgdG5hbWUgIltJTkFUX09QQ09ERV9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JTAy
eCIsIDI1NikKPiArCQkJZXRhYmxlW2VpZCwwXSA9IHRuYW1lCj4gKwkJCWlmIChhaWQgPj0gMCkK
PiArCQkJCWF0YWJsZVthaWQsMF0gPSB0bmFtZQo+ICsJCX0KPiArCQlpZiAoYXJyYXlfc2l6ZShs
cHRhYmxlMSkgIT0gMCkgewo+ICsJCQlwcmludF90YWJsZShscHRhYmxlMSx0bmFtZSAiXzFbSU5B
VF9PUENPREVfVEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCUwMngiLCAyNTYpCj4gKwkJCWV0
YWJsZVtlaWQsMV0gPSB0bmFtZSAiXzEiCj4gKwkJCWlmIChhaWQgPj0gMCkKPiArCQkJCWF0YWJs
ZVthaWQsMV0gPSB0bmFtZSAiXzEiCj4gKwkJfQo+ICsJCWlmIChhcnJheV9zaXplKGxwdGFibGUy
KSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKGxwdGFibGUyLHRuYW1lICJfMltJTkFUX09QQ09E
RV9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JTAyeCIsIDI1NikKPiArCQkJZXRhYmxlW2Vp
ZCwyXSA9IHRuYW1lICJfMiIKPiArCQkJaWYgKGFpZCA+PSAwKQo+ICsJCQkJYXRhYmxlW2FpZCwy
XSA9IHRuYW1lICJfMiIKPiArCQl9Cj4gKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTMpICE9IDAp
IHsKPiArCQkJcHJpbnRfdGFibGUobHB0YWJsZTMsdG5hbWUgIl8zW0lOQVRfT1BDT0RFX1RBQkxF
X1NJWkVdIiwKPiArCQkJCSAgICAiMHglMDJ4IiwgMjU2KQo+ICsJCQlldGFibGVbZWlkLDNdID0g
dG5hbWUgIl8zIgo+ICsJCQlpZiAoYWlkID49IDApCj4gKwkJCQlhdGFibGVbYWlkLDNdID0gdG5h
bWUgIl8zIgo+ICsJCX0KPiArCX0KPiArCXByaW50ICIiCj4gKwljbGVhcl92YXJzKCkKPiArfQo+
ICsKPiArZnVuY3Rpb24gYWRkX2ZsYWdzKG9sZCxuZXcpIHsKPiArCWlmIChvbGQgJiYgbmV3KQo+
ICsJCXJldHVybiBvbGQgIiB8ICIgbmV3Cj4gKwllbHNlIGlmIChvbGQpCj4gKwkJcmV0dXJuIG9s
ZAo+ICsJZWxzZQo+ICsJCXJldHVybiBuZXcKPiArfQo+ICsKPiArIyBjb252ZXJ0IG9wZXJhbmRz
IHRvIGZsYWdzLgo+ICtmdW5jdGlvbiBjb252ZXJ0X29wZXJhbmRzKGNvdW50LG9wbmQsICAgICAg
IGksaixpbW0sbW9kKQo+ICt7Cj4gKwlpbW0gPSBudWxsCj4gKwltb2QgPSBudWxsCj4gKwlmb3Ig
KGogPSAxOyBqIDw9IGNvdW50OyBqKyspIHsKPiArCQlpID0gb3BuZFtqXQo+ICsJCWlmIChtYXRj
aChpLCBpbW1fZXhwcikgPT0gMSkgewo+ICsJCQlpZiAoIWltbV9mbGFnW2ldKQo+ICsJCQkJc2Vt
YW50aWNfZXJyb3IoIlVua25vd24gaW1tIG9wbmQ6ICIgaSkKPiArCQkJaWYgKGltbSkgewo+ICsJ
CQkJaWYgKGkgIT0gIkliIikKPiArCQkJCQlzZW1hbnRpY19lcnJvcigiU2Vjb25kIElNTSBlcnJv
ciIpCj4gKwkJCQlpbW0gPSBhZGRfZmxhZ3MoaW1tLCAiSU5BVF9TQ05ESU1NIikKPiArCQkJfSBl
bHNlCj4gKwkJCQlpbW0gPSBpbW1fZmxhZ1tpXQo+ICsJCX0gZWxzZSBpZiAobWF0Y2goaSwgbW9k
cm1fZXhwcikpCj4gKwkJCW1vZCA9ICJJTkFUX01PRFJNIgo+ICsJfQo+ICsJcmV0dXJuIGFkZF9m
bGFncyhpbW0sIG1vZCkKPiArfQo+ICsKPiArL15bMC05YS1mXStcOi8gewo+ICsJaWYgKE5SID09
IDEpCj4gKwkJbmV4dAo+ICsJIyBnZXQgaW5kZXgKPiArCWlkeCA9ICIweCIgc3Vic3RyKCQxLCAx
LCBpbmRleCgkMSwiOiIpIC0gMSkKPiArCWlmIChpZHggaW4gdGFibGUpCj4gKwkJc2VtYW50aWNf
ZXJyb3IoIlJlZGVmaW5lICIgaWR4ICIgaW4gIiB0bmFtZSkKPiArCj4gKwkjIGNoZWNrIGlmIGVz
Y2FwZWQgb3Bjb2RlCj4gKwlpZiAoImVzY2FwZSIgPT0gJDIpIHsKPiArCQlpZiAoJDMgIT0gIiMi
KQo+ICsJCQlzZW1hbnRpY19lcnJvcigiTm8gZXNjYXBlZCBuYW1lIikKPiArCQlyZWYgPSAiIgo+
ICsJCWZvciAoaSA9IDQ7IGkgPD0gTkY7IGkrKykKPiArCQkJcmVmID0gcmVmICRpCj4gKwkJaWYg
KHJlZiBpbiBlc2NhcGUpCj4gKwkJCXNlbWFudGljX2Vycm9yKCJSZWRlZmluZSBlc2NhcGUgKCIg
cmVmICIpIikKPiArCQllc2NhcGVbcmVmXSA9IGdlaWQKPiArCQlnZWlkKysKPiArCQl0YWJsZVtp
ZHhdID0gIklOQVRfTUFLRV9FU0NBUEUoIiBlc2NhcGVbcmVmXSAiKSIKPiArCQluZXh0Cj4gKwl9
Cj4gKwo+ICsJdmFyaWFudCA9IG51bGwKPiArCSMgY29udmVydHMKPiArCWkgPSAyCj4gKwl3aGls
ZSAoaSA8PSBORikgewo+ICsJCW9wY29kZSA9ICQoaSsrKQo+ICsJCWRlbGV0ZSBvcG5kcwo+ICsJ
CWV4dCA9IG51bGwKPiArCQlmbGFncyA9IG51bGwKPiArCQlvcG5kID0gbnVsbAo+ICsJCSMgcGFy
c2Ugb25lIG9wY29kZQo+ICsJCWlmIChtYXRjaCgkaSwgb3BuZF9leHByKSkgewo+ICsJCQlvcG5k
ID0gJGkKPiArCQkJY291bnQgPSBzcGxpdCgkKGkrKyksIG9wbmRzLCAiLCIpCj4gKwkJCWZsYWdz
ID0gY29udmVydF9vcGVyYW5kcyhjb3VudCwgb3BuZHMpCj4gKwkJfQo+ICsJCWlmIChtYXRjaCgk
aSwgZXh0X2V4cHIpKQo+ICsJCQlleHQgPSAkKGkrKykKPiArCQlpZiAobWF0Y2goJGksIHNlcF9l
eHByKSkKPiArCQkJaSsrCj4gKwkJZWxzZSBpZiAoaSA8IE5GKQo+ICsJCQlzZW1hbnRpY19lcnJv
cigkaSAiIGlzIG5vdCBhIHNlcGFyYXRvciIpCj4gKwo+ICsJCSMgY2hlY2sgaWYgZ3JvdXAgb3Bj
b2RlCj4gKwkJaWYgKG1hdGNoKG9wY29kZSwgZ3JvdXBfZXhwcikpIHsKPiArCQkJaWYgKCEob3Bj
b2RlIGluIGdyb3VwKSkgewo+ICsJCQkJZ3JvdXBbb3Bjb2RlXSA9IGdnaWQKPiArCQkJCWdnaWQr
Kwo+ICsJCQl9Cj4gKwkJCWZsYWdzID0gYWRkX2ZsYWdzKGZsYWdzLCAiSU5BVF9NQUtFX0dST1VQ
KCIgZ3JvdXBbb3Bjb2RlXSAiKSIpCj4gKwkJfQo+ICsJCSMgY2hlY2sgZm9yY2Uob3IgZGVmYXVs
dCkgNjRiaXQKPiArCQlpZiAobWF0Y2goZXh0LCBmb3JjZTY0X2V4cHIpKQo+ICsJCQlmbGFncyA9
IGFkZF9mbGFncyhmbGFncywgIklOQVRfRk9SQ0U2NCIpCj4gKwo+ICsJCSMgY2hlY2sgUkVYIHBy
ZWZpeAo+ICsJCWlmIChtYXRjaChvcGNvZGUsIHJleF9leHByKSkKPiArCQkJZmxhZ3MgPSBhZGRf
ZmxhZ3MoZmxhZ3MsICJJTkFUX01BS0VfUFJFRklYKElOQVRfUEZYX1JFWCkiKQo+ICsKPiArCQkj
IGNoZWNrIGNvcHJvY2Vzc29yIGVzY2FwZSA6IFRPRE8KPiArCQlpZiAobWF0Y2gob3Bjb2RlLCBm
cHVfZXhwcikpCj4gKwkJCWZsYWdzID0gYWRkX2ZsYWdzKGZsYWdzLCAiSU5BVF9NT0RSTSIpCj4g
Kwo+ICsJCSMgY2hlY2sgVkVYIGNvZGVzCj4gKwkJaWYgKG1hdGNoKGV4dCwgdmV4b25seV9leHBy
KSkKPiArCQkJZmxhZ3MgPSBhZGRfZmxhZ3MoZmxhZ3MsICJJTkFUX1ZFWE9LIHwgSU5BVF9WRVhP
TkxZIikKPiArCQllbHNlIGlmIChtYXRjaChleHQsIHZleG9rX2V4cHIpIHx8IG1hdGNoKG9wY29k
ZSwgdmV4b2tfb3Bjb2RlX2V4cHIpKQo+ICsJCQlmbGFncyA9IGFkZF9mbGFncyhmbGFncywgIklO
QVRfVkVYT0siKQo+ICsKPiArCQkjIGNoZWNrIHByZWZpeGVzCj4gKwkJaWYgKG1hdGNoKGV4dCwg
cHJlZml4X2V4cHIpKSB7Cj4gKwkJCWlmICghcHJlZml4X251bVtvcGNvZGVdKQo+ICsJCQkJc2Vt
YW50aWNfZXJyb3IoIlVua25vd24gcHJlZml4OiAiIG9wY29kZSkKPiArCQkJZmxhZ3MgPSBhZGRf
ZmxhZ3MoZmxhZ3MsICJJTkFUX01BS0VfUFJFRklYKCIgcHJlZml4X251bVtvcGNvZGVdICIpIikK
PiArCQl9Cj4gKwkJaWYgKGxlbmd0aChmbGFncykgPT0gMCkKPiArCQkJY29udGludWUKPiArCQkj
IGNoZWNrIGlmIGxhc3QgcHJlZml4Cj4gKwkJaWYgKG1hdGNoKGV4dCwgbHByZWZpeDFfZXhwcikp
IHsKPiArCQkJbHB0YWJsZTFbaWR4XSA9IGFkZF9mbGFncyhscHRhYmxlMVtpZHhdLGZsYWdzKQo+
ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFOVCIKPiArCQl9Cj4gKwkJaWYgKG1hdGNoKGV4dCwg
bHByZWZpeDJfZXhwcikpIHsKPiArCQkJbHB0YWJsZTJbaWR4XSA9IGFkZF9mbGFncyhscHRhYmxl
MltpZHhdLGZsYWdzKQo+ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFOVCIKPiArCQl9Cj4gKwkJ
aWYgKG1hdGNoKGV4dCwgbHByZWZpeDNfZXhwcikpIHsKPiArCQkJbHB0YWJsZTNbaWR4XSA9IGFk
ZF9mbGFncyhscHRhYmxlM1tpZHhdLGZsYWdzKQo+ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFO
VCIKPiArCQl9Cj4gKwkJaWYgKCFtYXRjaChleHQsIGxwcmVmaXhfZXhwcikpewo+ICsJCQl0YWJs
ZVtpZHhdID0gYWRkX2ZsYWdzKHRhYmxlW2lkeF0sZmxhZ3MpCj4gKwkJfQo+ICsJfQo+ICsJaWYg
KHZhcmlhbnQpCj4gKwkJdGFibGVbaWR4XSA9IGFkZF9mbGFncyh0YWJsZVtpZHhdLHZhcmlhbnQp
Cj4gK30KPiArCj4gK0VORCB7Cj4gKwlpZiAoYXdrY2hlY2tlZCAhPSAiIikKPiArCQlleGl0IDEK
PiArCSMgcHJpbnQgZXNjYXBlIG9wY29kZSBtYXAncyBhcnJheQo+ICsJcHJpbnQgIi8qIEVzY2Fw
ZSBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQgInN0YXRpYyBjb25zdCBpbnNuX2F0dHJf
dCAqIGNvbnN0IGluYXRfZXNjYXBlX3RhYmxlc1tJTkFUX0VTQ19NQVggKyAxXSIgXAo+ICsJICAg
ICAgIltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCj4gKwlmb3IgKGkgPSAwOyBpIDwgZ2VpZDsg
aSsrKQo+ICsJCWZvciAoaiA9IDA7IGogPCBtYXhfbHByZWZpeDsgaisrKQo+ICsJCQlpZiAoZXRh
YmxlW2ksal0pCj4gKwkJCQlwcmludCAiICAgIFsiaSJdWyJqIl0gPSAiZXRhYmxlW2ksal0iLCIK
PiArCXByaW50ICJ9O1xuIgo+ICsJIyBwcmludCBncm91cCBvcGNvZGUgbWFwJ3MgYXJyYXkKPiAr
CXByaW50ICIvKiBHcm91cCBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQgInN0YXRpYyBj
b25zdCBpbnNuX2F0dHJfdCAqIGNvbnN0IGluYXRfZ3JvdXBfdGFibGVzW0lOQVRfR1JQX01BWCAr
IDFdIlwKPiArCSAgICAgICJbSU5BVF9MU1RQRlhfTUFYICsgMV0gPSB7Igo+ICsJZm9yIChpID0g
MDsgaSA8IGdnaWQ7IGkrKykKPiArCQlmb3IgKGogPSAwOyBqIDwgbWF4X2xwcmVmaXg7IGorKykK
PiArCQkJaWYgKGd0YWJsZVtpLGpdKQo+ICsJCQkJcHJpbnQgIiAgICBbImkiXVsiaiJdID0gImd0
YWJsZVtpLGpdIiwiCj4gKwlwcmludCAifTtcbiIKPiArCSMgcHJpbnQgQVZYIG9wY29kZSBtYXAn
cyBhcnJheQo+ICsJcHJpbnQgIi8qIEFWWCBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQg
InN0YXRpYyBjb25zdCBpbnNuX2F0dHJfdCAqIGNvbnN0IGluYXRfYXZ4X3RhYmxlc1tYODZfVkVY
X01fTUFYICsgMV0iXAo+ICsJICAgICAgIltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCj4gKwlm
b3IgKGkgPSAwOyBpIDwgZ2FpZDsgaSsrKQo+ICsJCWZvciAoaiA9IDA7IGogPCBtYXhfbHByZWZp
eDsgaisrKQo+ICsJCQlpZiAoYXRhYmxlW2ksal0pCj4gKwkJCQlwcmludCAiICAgIFsiaSJdWyJq
Il0gPSAiYXRhYmxlW2ksal0iLCIKPiArCXByaW50ICJ9OyIKPiArfQoKLS0gCk1paGFpIERvbsib
dQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl
dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu
Lm9yZy94ZW4tZGV2ZWwK

From xen-devel-bounces@lists.xen.org Wed Sep 10 00:52:55 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Sep 2014 00:52:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRW93-0006Cc-Hi; Wed, 10 Sep 2014 00:52:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <roy.franz@linaro.org>) id 1XRW91-0006BQ-Cb
	for xen-devel@lists.xen.org; Wed, 10 Sep 2014 00:52:23 +0000
Received: from [193.109.254.147:34725] by server-6.bemta-14.messagelabs.com id
	83/40-01867-6C0AF045; Wed, 10 Sep 2014 00:52:22 +0000
X-Env-Sender: roy.franz@linaro.org
X-Msg-Ref: server-16.tower-27.messagelabs.com!1410310336!9120493!1
X-Originating-IP: [209.85.223.179]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27146 invoked from network); 10 Sep 2014 00:52:17 -0000
Received: from mail-ie0-f179.google.com (HELO mail-ie0-f179.google.com)
	(209.85.223.179)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	10 Sep 2014 00:52:17 -0000
Received: by mail-ie0-f179.google.com with SMTP id rl12so5164677iec.38
	for <xen-devel@lists.xen.org>; Tue, 09 Sep 2014 17:52:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
	:references;
	bh=YlLOrtPRLJZ/WhN7PW+v/n+giAs+3leCCrojIR81sRM=;
	b=EG4TNdbDEw5eCr/gNBGdF6K2iipyHLe5dTI9yEiJf8wKly/jSg3I9rFUpzHS6lEiqT
	HG+CZd1P8Qdh9VVLdL+4YnhNI7Y88JzihbSrHMgoLYCtCbn9Prd8Xed5gbrKuLv5rmBT
	vmf1Gj4SXMqejn9JTGRdcoomztvYorjkopdA8fWCnYHuZZ7Q7Q0+vc88O7KGITBBGzmB
	8YciNL8fw6tvobc5nMREEYSpzrJFhiZxqCBW10OPKvhZYbbHSkmgLTBD5KcfNJ2FYodg
	f9NvblxdfxMzJzJaZuD52tK7C32pCMCkuNt75dUTqCMsirn+u0oHdOGfiDgGjQzAMEnO
	YBUQ==
X-Gm-Message-State: ALoCoQmngbfTlmknOGAbE04lWuMbE0qz87+QU1mXv9vdBoy9NXDGB2u9N2s+XSrdsORyf7WFZrbh
X-Received: by 10.42.48.197 with SMTP id t5mr43377582icf.11.1410310336065;
	Tue, 09 Sep 2014 17:52:16 -0700 (PDT)
Received: from rfranz-v430.caveonetworks.com (64.2.3.195.ptr.us.xo.net.
	[64.2.3.195])
	by mx.google.com with ESMTPSA id dx10sm654825igb.4.2014.09.09.17.52.14
	for <multiple recipients>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 09 Sep 2014 17:52:15 -0700 (PDT)
From: Roy Franz <roy.franz@linaro.org>
To: xen-devel@lists.xen.org, ian.campbell@citrix.com,
	stefano.stabellini@citrix.com, tim@xen.org, jbeulich@suse.com, keir@xen.org
Date: Tue,  9 Sep 2014 17:51:51 -0700
Message-Id: <1410310325-4509-2-git-send-email-roy.franz@linaro.org>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1410310325-4509-1-git-send-email-roy.franz@linaro.org>
References: <1410310325-4509-1-git-send-email-roy.franz@linaro.org>
Cc: Roy Franz <roy.franz@linaro.org>, fu.wei@linaro.org
Subject: [Xen-devel] [PATCH V4 01/15] move x86 EFI boot code to common/efi
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

This moves the boot.c,the file that implements the EFI entry point
to efi/common, and builds with both EFI/non-EFI toolchains.  No code
changes, just file movement and make updates.
Note that since both the EFI and non-EFI versions are built at the
same time, the EFI boot code cannot be included in the common/build_in.o.
In the ARM case, it will always be built in, so the normal common
build infrastructure can be used.
The EFI runtime code is left alone as this patch series just
implements the boot code.

Signed-off-by: Roy Franz <roy.franz@linaro.org>
---
 xen/arch/x86/efi/boot.c                     | 1724 +--------------------------
 xen/arch/x86/efi/runtime.c                  |    2 +-
 xen/common/efi/boot.c                       | 1723 ++++++++++++++++++++++++++
 xen/{arch/x86/efi => include/asm-x86}/efi.h |    0
 4 files changed, 1725 insertions(+), 1724 deletions(-)
 mode change 100644 => 120000 xen/arch/x86/efi/boot.c
 create mode 100644 xen/common/efi/boot.c
 rename xen/{arch/x86/efi => include/asm-x86}/efi.h (100%)

diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
deleted file mode 100644
index 3bdc158..0000000
--- a/xen/arch/x86/efi/boot.c
+++ /dev/null
@@ -1,1723 +0,0 @@
-#include "efi.h"
-#include <efi/efiprot.h>
-#include <efi/efipciio.h>
-#include <public/xen.h>
-#include <xen/compile.h>
-#include <xen/ctype.h>
-#include <xen/dmi.h>
-#include <xen/init.h>
-#include <xen/keyhandler.h>
-#include <xen/lib.h>
-#include <xen/mm.h>
-#include <xen/multiboot.h>
-#include <xen/pci_regs.h>
-#include <xen/pfn.h>
-#if EFI_PAGE_SIZE != PAGE_SIZE
-# error Cannot use xen/pfn.h here!
-#endif
-#include <xen/string.h>
-#include <xen/stringify.h>
-#include <xen/vga.h>
-#include <asm/e820.h>
-#include <asm/edd.h>
-#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
-#include <asm/fixmap.h>
-#undef __ASSEMBLY__
-#include <asm/msr.h>
-#include <asm/processor.h>
-
-/* Using SetVirtualAddressMap() is incompatible with kexec: */
-#undef USE_SET_VIRTUAL_ADDRESS_MAP
-
-#define SHIM_LOCK_PROTOCOL_GUID \
-  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
-
-typedef EFI_STATUS
-(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
-    IN VOID *Buffer,
-    IN UINT32 Size);
-
-typedef struct {
-    EFI_SHIM_LOCK_VERIFY Verify;
-} EFI_SHIM_LOCK_PROTOCOL;
-
-extern char start[];
-extern u32 cpuid_ext_features;
-
-union string {
-    CHAR16 *w;
-    char *s;
-    const char *cs;
-};
-
-struct file {
-    UINTN size;
-    union {
-        EFI_PHYSICAL_ADDRESS addr;
-        void *ptr;
-    };
-};
-
-static EFI_BOOT_SERVICES *__initdata efi_bs;
-static EFI_HANDLE __initdata efi_ih;
-
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
-
-static UINT32 __initdata mdesc_ver;
-
-static struct file __initdata cfg;
-static struct file __initdata kernel;
-static struct file __initdata ramdisk;
-static struct file __initdata ucode;
-static struct file __initdata xsm;
-
-static multiboot_info_t __initdata mbi = {
-    .flags = MBI_MODULES | MBI_LOADERNAME
-};
-static module_t __initdata mb_modules[3];
-
-static CHAR16 __initdata newline[] = L"\r\n";
-
-#define PrintStr(s) StdOut->OutputString(StdOut, s)
-#define PrintErr(s) StdErr->OutputString(StdErr, s)
-
-static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
-{
-    if ( Val >= 10 )
-        Buffer = FormatDec(Val / 10, Buffer);
-    *Buffer = (CHAR16)(L'0' + Val % 10);
-    return Buffer + 1;
-}
-
-static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
-{
-    if ( Width > 1 || Val >= 0x10 )
-        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
-    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
-    return Buffer + 1;
-}
-
-static void __init DisplayUint(UINT64 Val, INTN Width)
-{
-    CHAR16 PrintString[32], *end;
-
-    if (Width < 0)
-        end = FormatDec(Val, PrintString);
-    else
-    {
-        PrintStr(L"0x");
-        end = FormatHex(Val, Width, PrintString);
-    }
-    *end = 0;
-    PrintStr(PrintString);
-}
-
-static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
-{
-    CHAR16 *r = d;
-
-    while ( (*d++ = *s++) != 0 )
-        ;
-    return r;
-}
-
-static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
-{
-    while ( *s1 && *s1 == *s2 )
-    {
-        ++s1;
-        ++s2;
-    }
-    return *s1 - *s2;
-}
-
-static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
-{
-    while ( n && *s1 && *s1 == *s2 )
-    {
-        --n;
-        ++s1;
-        ++s2;
-    }
-    return n ? *s1 - *s2 : 0;
-}
-
-static CHAR16 *__init s2w(union string *str)
-{
-    const char *s = str->s;
-    CHAR16 *w;
-    void *ptr;
-
-    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
-                              &ptr) != EFI_SUCCESS )
-        return NULL;
-
-    w = str->w = ptr;
-    do {
-        *w = *s++;
-    } while ( *w++ );
-
-    return str->w;
-}
-
-static char *__init w2s(const union string *str)
-{
-    const CHAR16 *w = str->w;
-    char *s = str->s;
-
-    do {
-        if ( *w > 0x007f )
-            return NULL;
-        *s = *w++;
-    } while ( *s++ );
-
-    return str->s;
-}
-
-static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
-{
-    return guid1->Data1 == guid2->Data1 &&
-           guid1->Data2 == guid2->Data2 &&
-           guid1->Data3 == guid2->Data3 &&
-           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
-}
-
-static void __init noreturn blexit(const CHAR16 *str)
-{
-    if ( str )
-        PrintStr((CHAR16 *)str);
-    PrintStr(newline);
-
-    if ( cfg.addr )
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    if ( kernel.addr )
-        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
-    if ( ramdisk.addr )
-        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
-    if ( ucode.addr )
-        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
-    if ( xsm.addr )
-        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
-
-    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
-    unreachable(); /* not reached */
-}
-
-/* generic routine for printing error messages */
-static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
-{
-    StdOut = StdErr;
-    PrintErr((CHAR16 *)mesg);
-    PrintErr(L": ");
-
-    switch (ErrCode)
-    {
-    case EFI_NOT_FOUND:
-        mesg = L"Not found";
-        break;
-    case EFI_NO_MEDIA:
-        mesg = L"The device has no media";
-        break;
-    case EFI_MEDIA_CHANGED:
-        mesg = L"Media changed";
-        break;
-    case EFI_DEVICE_ERROR:
-        mesg = L"Device error";
-        break;
-    case EFI_VOLUME_CORRUPTED:
-        mesg = L"Volume corrupted";
-        break;
-    case EFI_ACCESS_DENIED:
-        mesg = L"Access denied";
-        break;
-    case EFI_OUT_OF_RESOURCES:
-        mesg = L"Out of resources";
-        break;
-    case EFI_VOLUME_FULL:
-        mesg = L"Volume is full";
-        break;
-    case EFI_SECURITY_VIOLATION:
-        mesg = L"Security violation";
-        break;
-    case EFI_CRC_ERROR:
-        mesg = L"CRC error";
-        break;
-    case EFI_COMPROMISED_DATA:
-        mesg = L"Compromised data";
-        break;
-    default:
-        PrintErr(L"ErrCode: ");
-        DisplayUint(ErrCode, 0);
-        mesg = NULL;
-        break;
-    }
-    blexit(mesg);
-}
-
-static void __init place_string(u32 *addr, const char *s)
-{
-    static char *__initdata alloc = start;
-
-    if ( s && *s )
-    {
-        size_t len1 = strlen(s) + 1;
-        const char *old = (char *)(long)*addr;
-        size_t len2 = *addr ? strlen(old) + 1 : 0;
-
-        alloc -= len1 + len2;
-        /*
-         * Insert new string before already existing one. This is needed
-         * for options passed on the command line to override options from
-         * the configuration file.
-         */
-        memcpy(alloc, s, len1);
-        if ( *addr )
-        {
-            alloc[len1 - 1] = ' ';
-            memcpy(alloc + len1, old, len2);
-        }
-    }
-    *addr = (long)alloc;
-}
-
-static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
-                                    CHAR16 *cmdline, UINTN cmdsize)
-{
-    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
-    bool_t prev_sep = TRUE;
-
-    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
-            cmdsize -= sizeof(*cmdline), ++cmdline )
-    {
-        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
-
-        if ( !prev_sep )
-        {
-            if ( cur_sep )
-                ++ptr;
-            else if ( argv )
-            {
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        else if ( !cur_sep )
-        {
-            if ( !argv )
-                ++argc;
-            else if ( prev && wstrcmp(prev, L"--") == 0 )
-            {
-                union string rest = { .w = cmdline };
-
-                --argv;
-                place_string(&mbi.cmdline, w2s(&rest));
-                break;
-            }
-            else
-            {
-                *argv++ = prev = ptr;
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        prev_sep = cur_sep;
-    }
-    if ( argv )
-        *argv = NULL;
-    return argc;
-}
-
-static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
-                                                CHAR16 **leaf)
-{
-    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
-    EFI_FILE_HANDLE dir_handle;
-    EFI_DEVICE_PATH *dp;
-    CHAR16 *pathend, *ptr;
-    EFI_STATUS ret;
-
-    do {
-        EFI_FILE_IO_INTERFACE *fio;
-
-        /* Get the file system interface. */
-        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
-                                     &fs_protocol, (void **)&fio);
-        if ( EFI_ERROR(ret) )
-            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
-                         ret);
-        ret = fio->OpenVolume(fio, &dir_handle);
-    } while ( ret == EFI_MEDIA_CHANGED );
-    if ( ret != EFI_SUCCESS )
-        PrintErrMesg(L"OpenVolume failure", ret);
-
-#define buffer ((CHAR16 *)keyhandler_scratch)
-#define BUFFERSIZE sizeof(keyhandler_scratch)
-    for ( dp = loaded_image->FilePath, *buffer = 0;
-          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
-          dp = (void *)dp + DevicePathNodeLength(dp) )
-    {
-        FILEPATH_DEVICE_PATH *fp;
-
-        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
-             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
-            blexit(L"Unsupported device path component");
-
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS )
-            {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-        fp = (void *)dp;
-        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
-                          sizeof(*dp) + sizeof(*buffer) )
-            blexit(L"Increase BUFFERSIZE");
-        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
-        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
-    }
-    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
-        if ( *ptr == L'\\' )
-            pathend = ptr;
-    if ( pathend )
-    {
-        *pathend = 0;
-        *leaf = pathend + 1;
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS ) {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-    }
-    else
-        *leaf = buffer;
-#undef BUFFERSIZE
-#undef buffer
-
-    return dir_handle;
-}
-
-static CHAR16 *__init point_tail(CHAR16 *fn)
-{
-    CHAR16 *tail = NULL;
-
-    for ( ; ; ++fn )
-        switch ( *fn )
-        {
-        case 0:
-            return tail;
-        case L'.':
-        case L'-':
-        case L'_':
-            tail = fn;
-            break;
-        }
-}
-
-static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
-                               struct file *file)
-{
-    EFI_FILE_HANDLE FileHandle = NULL;
-    UINT64 size;
-    EFI_STATUS ret;
-    CHAR16 *what = NULL;
-
-    if ( !name )
-        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
-    ret = dir_handle->Open(dir_handle, &FileHandle, name,
-                           EFI_FILE_MODE_READ, 0);
-    if ( file == &cfg && ret == EFI_NOT_FOUND )
-        return 0;
-    if ( EFI_ERROR(ret) )
-        what = L"Open";
-    else
-        ret = FileHandle->SetPosition(FileHandle, -1);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-        ret = FileHandle->GetPosition(FileHandle, &size);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Get size";
-    else
-        ret = FileHandle->SetPosition(FileHandle, 0);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-    {
-        file->addr = min(1UL << (32 + PAGE_SHIFT),
-                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
-        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                    PFN_UP(size), &file->addr);
-    }
-    if ( EFI_ERROR(ret) )
-    {
-        file->addr = 0;
-        what = what ?: L"Allocation";
-    }
-    else
-    {
-        if ( file != &cfg )
-        {
-            PrintStr(name);
-            PrintStr(L": ");
-            DisplayUint(file->addr, 2 * sizeof(file->addr));
-            PrintStr(L"-");
-            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
-            PrintStr(newline);
-            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
-            mb_modules[mbi.mods_count].mod_end = size;
-            ++mbi.mods_count;
-        }
-
-        file->size = size;
-        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
-        if ( !EFI_ERROR(ret) && file->size != size )
-            ret = EFI_ABORTED;
-        if ( EFI_ERROR(ret) )
-            what = L"Read";
-    }
-
-    if ( FileHandle )
-        FileHandle->Close(FileHandle);
-
-    if ( what )
-    {
-        PrintErr(what);
-        PrintErr(L" failed for ");
-        PrintErrMesg(name, ret);
-    }
-
-    return 1;
-}
-
-static void __init pre_parse(const struct file *cfg)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    bool_t start = 1, comment = 0;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        if ( iscntrl(*ptr) )
-        {
-            comment = 0;
-            start = 1;
-            *ptr = 0;
-        }
-        else if ( comment || (start && isspace(*ptr)) )
-            *ptr = 0;
-        else if ( *ptr == '#' || (start && *ptr == ';') )
-        {
-            comment = 1;
-            *ptr = 0;
-        }
-        else
-            start = 0;
-    }
-    if ( cfg->size && end[-1] )
-         PrintStr(L"No newline at end of config file,"
-                   " last line will be ignored.\r\n");
-}
-
-static char *__init get_value(const struct file *cfg, const char *section,
-                              const char *item)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
-    bool_t match = !slen;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        switch ( *ptr )
-        {
-        case 0:
-            continue;
-        case '[':
-            if ( !slen )
-                break;
-            if ( match )
-                return NULL;
-            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
-            break;
-        default:
-            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
-                return ptr + ilen + 1;
-            break;
-        }
-        ptr += strlen(ptr);
-    }
-    return NULL;
-}
-
-static void __init split_value(char *s)
-{
-    while ( *s && isspace(*s) )
-        ++s;
-    place_string(&mb_modules[mbi.mods_count].string, s);
-    while ( *s && !isspace(*s) )
-        ++s;
-    *s = 0;
-}
-
-static void __init edd_put_string(u8 *dst, size_t n, const char *src)
-{
-    while ( n-- && *src )
-       *dst++ = *src++;
-    if ( *src )
-       PrintErrMesg(L"Internal error populating EDD info",
-                    EFI_BUFFER_TOO_SMALL);
-    while ( n-- )
-       *dst++ = ' ';
-}
-#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
-
-static void __init setup_efi_pci(void)
-{
-    EFI_STATUS status;
-    EFI_HANDLE *handles;
-    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
-    UINTN i, nr_pci, size = 0;
-    struct efi_pci_rom *last = NULL;
-
-    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-
-    nr_pci = size / sizeof(*handles);
-    for ( i = 0; i < nr_pci; ++i )
-    {
-        EFI_PCI_IO *pci = NULL;
-        u64 attributes;
-        struct efi_pci_rom *rom, *va;
-        UINTN segment, bus, device, function;
-
-        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
-        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
-            continue;
-
-        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
-                                 &attributes);
-        if ( EFI_ERROR(status) ||
-             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
-             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
-                       &function)) )
-            continue;
-
-        DisplayUint(segment, 4);
-        PrintStr(L":");
-        DisplayUint(bus, 2);
-        PrintStr(L":");
-        DisplayUint(device, 2);
-        PrintStr(L".");
-        DisplayUint(function, 1);
-        PrintStr(L": ROM: ");
-        DisplayUint(pci->RomSize, 0);
-        PrintStr(L" bytes at ");
-        DisplayUint((UINTN)pci->RomImage, 0);
-        PrintStr(newline);
-
-        size = pci->RomSize + sizeof(*rom);
-        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
-                                      (void **)&rom);
-        if ( EFI_ERROR(status) )
-            continue;
-
-        rom->next = NULL;
-        rom->size = pci->RomSize;
-
-        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
-                               &rom->vendor);
-        if ( !EFI_ERROR(status) )
-            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
-                                   &rom->devid);
-        if ( EFI_ERROR(status) )
-        {
-            efi_bs->FreePool(rom);
-            continue;
-        }
-
-        rom->segment = segment;
-        rom->bus = bus;
-        rom->devfn = (device << 3) | function;
-        memcpy(rom->data, pci->RomImage, pci->RomSize);
-
-        va = (void *)rom + DIRECTMAP_VIRT_START;
-        if ( last )
-            last->next = va;
-        else
-            efi_pci_roms = va;
-        last = rom;
-    }
-
-    efi_bs->FreePool(handles);
-}
-
-static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
-{
-   if ( bpp < 0 )
-       return bpp;
-   if ( !mask )
-       return -EINVAL;
-   for ( *pos = 0; !(mask & 1); ++*pos )
-       mask >>= 1;
-   for ( *sz = 0; mask & 1; ++sz)
-       mask >>= 1;
-   if ( mask )
-       return -EINVAL;
-   return max(*pos + *sz, bpp);
-}
-
-extern const intpte_t __page_tables_start[], __page_tables_end[];
-#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
-                           (intpte_t *)(v) < __page_tables_end)
-
-#define PE_BASE_RELOC_ABS      0
-#define PE_BASE_RELOC_HIGHLOW  3
-#define PE_BASE_RELOC_DIR64   10
-
-extern const struct pe_base_relocs {
-    u32 rva;
-    u32 size;
-    u16 entries[];
-} __base_relocs_start[], __base_relocs_end[];
-
-static void __init relocate_image(unsigned long delta)
-{
-    const struct pe_base_relocs *base_relocs;
-
-    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
-    {
-        unsigned int i, n;
-
-        n = (base_relocs->size - sizeof(*base_relocs)) /
-            sizeof(*base_relocs->entries);
-        for ( i = 0; i < n; ++i )
-        {
-            unsigned long addr = xen_phys_start + base_relocs->rva +
-                                 (base_relocs->entries[i] & 0xfff);
-
-            switch ( base_relocs->entries[i] >> 12 )
-            {
-            case PE_BASE_RELOC_ABS:
-                break;
-            case PE_BASE_RELOC_HIGHLOW:
-                if ( delta )
-                {
-                    *(u32 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(u32 *)addr += xen_phys_start;
-                }
-                break;
-            case PE_BASE_RELOC_DIR64:
-                if ( delta )
-                {
-                    *(u64 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(intpte_t *)addr += xen_phys_start;
-                }
-                break;
-            default:
-                blexit(L"Unsupported relocation type");
-            }
-        }
-        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
-    }
-}
-
-extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
-
-static void __init relocate_trampoline(unsigned long phys)
-{
-    const s32 *trampoline_ptr;
-
-    trampoline_phys = phys;
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
-}
-
-void EFIAPI __init noreturn
-efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
-{
-    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
-    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
-    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
-    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
-    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
-    EFI_LOADED_IMAGE *loaded_image;
-    EFI_STATUS status;
-    unsigned int i, argc;
-    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
-    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
-    EFI_HANDLE *handles = NULL;
-    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
-    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
-    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
-    EFI_FILE_HANDLE dir_handle;
-    union string section = { NULL }, name;
-    struct e820entry *e;
-    u64 efer;
-    bool_t base_video = 0;
-
-    efi_ih = ImageHandle;
-    efi_bs = SystemTable->BootServices;
-    efi_rs = SystemTable->RuntimeServices;
-    efi_ct = SystemTable->ConfigurationTable;
-    efi_num_ct = SystemTable->NumberOfTableEntries;
-    efi_version = SystemTable->Hdr.Revision;
-    efi_fw_vendor = SystemTable->FirmwareVendor;
-    efi_fw_revision = SystemTable->FirmwareRevision;
-
-    StdOut = SystemTable->ConOut;
-    StdErr = SystemTable->StdErr ?: StdOut;
-
-    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
-                                    (void **)&loaded_image);
-    if ( status != EFI_SUCCESS )
-        PrintErrMesg(L"No Loaded Image Protocol", status);
-
-    xen_phys_start = (UINTN)loaded_image->ImageBase;
-    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
-        blexit(L"Xen must be loaded below 4Gb.");
-    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
-        blexit(L"Xen must be loaded at a 2Mb boundary.");
-    trampoline_xen_phys_start = xen_phys_start;
-
-    /* Get the file system interface. */
-    dir_handle = get_parent_handle(loaded_image, &file_name);
-
-    argc = get_argv(0, NULL, loaded_image->LoadOptions,
-                    loaded_image->LoadOptionsSize);
-    if ( argc > 0 &&
-         efi_bs->AllocatePool(EfiLoaderData,
-                              (argc + 1) * sizeof(*argv) +
-                                  loaded_image->LoadOptionsSize,
-                              (void **)&argv) == EFI_SUCCESS )
-        get_argv(argc, argv, loaded_image->LoadOptions,
-                 loaded_image->LoadOptionsSize);
-    else
-        argc = 0;
-    for ( i = 1; i < argc; ++i )
-    {
-        CHAR16 *ptr = argv[i];
-
-        if ( !ptr )
-            break;
-        if ( *ptr == L'/' || *ptr == L'-' )
-        {
-            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
-                base_video = 1;
-            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
-                cfg_file_name = ptr + 5;
-            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
-                cfg_file_name = argv[++i];
-            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
-                      (ptr[1] == L'?' && !ptr[2]) )
-            {
-                PrintStr(L"Xen EFI Loader options:\r\n");
-                PrintStr(L"-basevideo   retain current video mode\r\n");
-                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
-                PrintStr(L"-help, -?    display this help\r\n");
-                blexit(NULL);
-            }
-            else
-            {
-                PrintStr(L"WARNING: Unknown command line option '");
-                PrintStr(ptr);
-                PrintStr(L"' ignored\r\n");
-            }
-        }
-        else
-            section.w = ptr;
-    }
-
-    if ( !base_video )
-    {
-        unsigned int best;
-
-        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
-              i < StdOut->Mode->MaxMode; ++i )
-        {
-            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
-                 cols * rows > size )
-            {
-                size = cols * rows;
-                best = i;
-            }
-        }
-        if ( best != StdOut->Mode->Mode )
-            StdOut->SetMode(StdOut, best);
-    }
-
-    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
-             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
-
-    relocate_image(0);
-
-    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
-                           &cols, &rows) == EFI_SUCCESS )
-    {
-        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
-        vga_console_info.u.text_mode_3.columns = cols;
-        vga_console_info.u.text_mode_3.rows = rows;
-        vga_console_info.u.text_mode_3.font_height = 16;
-    }
-
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
-        if ( EFI_ERROR(status) )
-            continue;
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            break;
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( EFI_ERROR(status) )
-        gop = NULL;
-
-    /* Read and parse the config file. */
-    if ( !cfg_file_name )
-    {
-        CHAR16 *tail;
-
-        while ( (tail = point_tail(file_name)) != NULL )
-        {
-            wstrcpy(tail, L".cfg");
-            if ( read_file(dir_handle, file_name, &cfg) )
-                break;
-            *tail = 0;
-        }
-        if ( !tail )
-            blexit(L"No configuration file found.");
-        PrintStr(L"Using configuration file '");
-        PrintStr(file_name);
-        PrintStr(L"'\r\n");
-    }
-    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
-        blexit(L"Configuration file not found.");
-    pre_parse(&cfg);
-
-    if ( section.w )
-        w2s(&section);
-    else
-        section.s = get_value(&cfg, "global", "default");
-
-    for ( ; ; )
-    {
-        name.s = get_value(&cfg, section.s, "kernel");
-        if ( name.s )
-            break;
-        name.s = get_value(&cfg, "global", "chain");
-        if ( !name.s )
-            break;
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-        cfg.addr = 0;
-        if ( !read_file(dir_handle, s2w(&name), &cfg) )
-        {
-            PrintStr(L"Chained configuration file '");
-            PrintStr(name.w);
-            efi_bs->FreePool(name.w);
-            blexit(L"'not found.");
-        }
-        pre_parse(&cfg);
-        efi_bs->FreePool(name.w);
-    }
-    if ( !name.s )
-        blexit(L"No Dom0 kernel image specified.");
-    split_value(name.s);
-    read_file(dir_handle, s2w(&name), &kernel);
-    efi_bs->FreePool(name.w);
-
-    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
-                    (void **)&shim_lock)) &&
-         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
-        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
-
-    name.s = get_value(&cfg, section.s, "ramdisk");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ramdisk);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "ucode");
-    if ( !name.s )
-        name.s = get_value(&cfg, "global", "ucode");
-    if ( name.s )
-    {
-        microcode_set_module(mbi.mods_count);
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ucode);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "xsm");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &xsm);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "options");
-    if ( name.s )
-        place_string(&mbi.cmdline, name.s);
-    /* Insert image name last, as it gets prefixed to the other options. */
-    if ( argc )
-    {
-        name.w = *argv;
-        w2s(&name);
-    }
-    else
-        name.s = "xen";
-    place_string(&mbi.cmdline, name.s);
-
-    cols = rows = depth = 0;
-    if ( !base_video )
-    {
-        name.cs = get_value(&cfg, section.s, "video");
-        if ( !name.cs )
-            name.cs = get_value(&cfg, "global", "video");
-        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
-        {
-            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs )
-                cols = rows = depth = 0;
-        }
-    }
-
-    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    cfg.addr = 0;
-
-    dir_handle->Close(dir_handle);
-
-    if ( gop && !base_video )
-    {
-        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
-        {
-            unsigned int bpp = 0;
-
-            status = gop->QueryMode(gop, i, &info_size, &mode_info);
-            if ( EFI_ERROR(status) )
-                continue;
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelBitMask:
-                bpp = hweight32(mode_info->PixelInformation.RedMask |
-                                mode_info->PixelInformation.GreenMask |
-                                mode_info->PixelInformation.BlueMask);
-                break;
-            case PixelRedGreenBlueReserved8BitPerColor:
-            case PixelBlueGreenRedReserved8BitPerColor:
-                bpp = 24;
-                break;
-            default:
-                continue;
-            }
-            if ( cols == mode_info->HorizontalResolution &&
-                 rows == mode_info->VerticalResolution &&
-                 (!depth || bpp == depth) )
-            {
-                gop_mode = i;
-                break;
-            }
-            if ( !cols && !rows &&
-                 mode_info->HorizontalResolution *
-                 mode_info->VerticalResolution > size )
-            {
-                size = mode_info->HorizontalResolution *
-                       mode_info->VerticalResolution;
-                gop_mode = i;
-            }
-        }
-    }
-
-    if ( mbi.cmdline )
-        mbi.flags |= MBI_CMDLINE;
-    /*
-     * These must not be initialized statically, since the value must
-     * not get relocated when processing base relocations below.
-     */
-    mbi.boot_loader_name = (long)"EFI";
-    mbi.mods_addr = (long)mb_modules;
-
-    place_string(&mbi.mem_upper, NULL);
-
-    /* Collect EDD info. */
-    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
-    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        EFI_BLOCK_IO *bio;
-        EFI_DEV_PATH_PTR devp;
-        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
-        struct edd_device_params *params = &info->edd_device_params;
-        enum { root, acpi, pci, ctrlr } state = root;
-
-        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
-        if ( EFI_ERROR(status) ||
-             bio->Media->RemovableMedia ||
-             bio->Media->LogicalPartition )
-            continue;
-        if ( boot_edd_info_nr < EDD_INFO_MAX )
-        {
-            info->device = 0x80 + boot_edd_info_nr; /* fake */
-            info->version = 0x11;
-            params->length = offsetof(struct edd_device_params, dpte_ptr);
-            params->number_of_sectors = bio->Media->LastBlock + 1;
-            params->bytes_per_sector = bio->Media->BlockSize;
-            params->dpte_ptr = ~0;
-        }
-        ++boot_edd_info_nr;
-        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
-                                        (void **)&devp);
-        if ( EFI_ERROR(status) )
-            continue;
-        for ( ; !IsDevicePathEnd(devp.DevPath);
-              devp.DevPath = NextDevicePathNode(devp.DevPath) )
-        {
-            switch ( DevicePathType(devp.DevPath) )
-            {
-                const u8 *p;
-
-            case ACPI_DEVICE_PATH:
-                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case ACPI_DP:
-                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
-                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
-                        break;
-                    params->interface_path.pci.bus = devp.Acpi->UID;
-                    state = acpi;
-                    break;
-                case EXPANDED_ACPI_DP:
-                    /* XXX */
-                    break;
-                }
-                break;
-            case HARDWARE_DEVICE_PATH:
-                if ( state != acpi ||
-                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
-                     boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = pci;
-                edd_put_string(params->host_bus_type, "PCI");
-                params->interface_path.pci.slot = devp.Pci->Device;
-                params->interface_path.pci.function = devp.Pci->Function;
-                break;
-            case MESSAGING_DEVICE_PATH:
-                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = ctrlr;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case MSG_ATAPI_DP:
-                    edd_put_string(params->interface_type, "ATAPI");
-                    params->interface_path.pci.channel =
-                        devp.Atapi->PrimarySecondary;
-                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
-                    params->device_path.atapi.lun = devp.Atapi->Lun;
-                    break;
-                case MSG_SCSI_DP:
-                    edd_put_string(params->interface_type, "SCSI");
-                    params->device_path.scsi.id = devp.Scsi->Pun;
-                    params->device_path.scsi.lun = devp.Scsi->Lun;
-                    break;
-                case MSG_FIBRECHANNEL_DP:
-                    edd_put_string(params->interface_type, "FIBRE");
-                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
-                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
-                    break;
-                case MSG_1394_DP:
-                    edd_put_string(params->interface_type, "1394");
-                    params->device_path.i1394.eui = devp.F1394->Guid;
-                    break;
-                case MSG_USB_DP:
-                case MSG_USB_CLASS_DP:
-                    edd_put_string(params->interface_type, "USB");
-                    break;
-                case MSG_I2O_DP:
-                    edd_put_string(params->interface_type, "I2O");
-                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
-                    break;
-                default:
-                    continue;
-                }
-                info->version = 0x30;
-                params->length = sizeof(struct edd_device_params);
-                params->key = 0xbedd;
-                params->device_path_info_length =
-                    sizeof(struct edd_device_params) -
-                    offsetof(struct edd_device_params, key);
-                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
-                    params->checksum -= *p;
-                break;
-            case MEDIA_DEVICE_PATH:
-                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
-                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
-                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
-                {
-                    struct mbr_signature *sig = boot_mbr_signature +
-                                                boot_mbr_signature_nr;
-
-                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
-                    memcpy(&sig->signature, devp.HardDrive->Signature,
-                           sizeof(sig->signature));
-                    ++boot_mbr_signature_nr;
-                }
-                break;
-            }
-        }
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( boot_edd_info_nr > EDD_INFO_MAX )
-        boot_edd_info_nr = EDD_INFO_MAX;
-
-    /* XXX Collect EDID info. */
-
-    if ( cpuid_eax(0x80000000) > 0x80000000 )
-    {
-        cpuid_ext_features = cpuid_edx(0x80000001);
-        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
-    }
-
-    /* Obtain basic table pointers. */
-    for ( i = 0; i < efi_num_ct; ++i )
-    {
-        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
-        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
-        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
-        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
-
-        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi20 = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
-	       efi.mps = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
-	       efi.smbios = (long)efi_ct[i].VendorTable;
-    }
-
-    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
-        dmi_efi_get_table((void *)(long)efi.smbios);
-
-    /* Collect PCI ROM contents. */
-    setup_efi_pci();
-
-    /* Get snapshot of variable store parameters. */
-    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
-             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
-                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
-                                       EFI_VARIABLE_RUNTIME_ACCESS,
-                                       &efi_boot_max_var_store_size,
-                                       &efi_boot_remain_var_store_size,
-                                       &efi_boot_max_var_size) :
-             EFI_INCOMPATIBLE_VERSION;
-    if ( EFI_ERROR(status) )
-    {
-        efi_boot_max_var_store_size = 0;
-        efi_boot_remain_var_store_size = 0;
-        efi_boot_max_var_size = status;
-        PrintStr(L"Warning: Could not query variable store: ");
-        DisplayUint(status, 0);
-        PrintStr(newline);
-    }
-
-    /* Allocate space for trampoline (in first Mb). */
-    cfg.addr = 0x100000;
-    cfg.size = trampoline_end - trampoline_start;
-    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                   PFN_UP(cfg.size), &cfg.addr);
-    if ( status == EFI_SUCCESS )
-        relocate_trampoline(cfg.addr);
-    else
-    {
-        cfg.addr = 0;
-        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
-    }
-
-    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
-    for ( i = 0; i < 8; ++i )
-    {
-        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
-        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
-
-        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
-        slot &= L2_PAGETABLE_ENTRIES - 1;
-        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
-    }
-    /* Initialise L3 boot-map page directory entries. */
-    l3_bootmap[l3_table_offset(xen_phys_start)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-
-    if ( gop )
-    {
-        int bpp = 0;
-
-        /* Set graphics mode. */
-        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
-            gop->SetMode(gop, gop_mode);
-
-        /* Get graphics and frame buffer info. */
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelRedGreenBlueReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 0;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 16;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBlueGreenRedReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 16;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 0;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBitMask:
-                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.red_pos,
-                                &vga_console_info.u.vesa_lfb.red_size);
-                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
-                                &vga_console_info.u.vesa_lfb.green_pos,
-                                &vga_console_info.u.vesa_lfb.green_size);
-                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
-                                &vga_console_info.u.vesa_lfb.blue_pos,
-                                &vga_console_info.u.vesa_lfb.blue_size);
-                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.rsvd_pos,
-                                &vga_console_info.u.vesa_lfb.rsvd_size);
-                if ( bpp > 0 )
-                    break;
-                /* fall through */
-            default:
-                PrintErr(L"Current graphics mode is unsupported!\r\n");
-                status = EFI_UNSUPPORTED;
-                break;
-            }
-        if ( !EFI_ERROR(status) )
-        {
-            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
-            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
-            vga_console_info.u.vesa_lfb.width =
-                mode_info->HorizontalResolution;
-            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
-            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
-            vga_console_info.u.vesa_lfb.bytes_per_line =
-                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
-            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
-            vga_console_info.u.vesa_lfb.lfb_size =
-                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
-        }
-    }
-
-    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
-                         &efi_mdesc_size, &mdesc_ver);
-    mbi.mem_upper -= efi_memmap_size;
-    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
-    if ( mbi.mem_upper < xen_phys_start )
-        blexit(L"Out of static memory");
-    efi_memmap = (void *)(long)mbi.mem_upper;
-    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
-                                  &efi_mdesc_size, &mdesc_ver);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot obtain memory map", status);
-
-    /* Populate E820 table and check trampoline area availability. */
-    e = e820map - 1;
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        u32 type;
-
-        switch ( desc->Type )
-        {
-        default:
-            type = E820_RESERVED;
-            break;
-        case EfiConventionalMemory:
-        case EfiBootServicesCode:
-        case EfiBootServicesData:
-            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
-                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
-                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
-            /* fall through */
-        case EfiLoaderCode:
-        case EfiLoaderData:
-            if ( desc->Attribute & EFI_MEMORY_WB )
-                type = E820_RAM;
-            else
-        case EfiUnusableMemory:
-                type = E820_UNUSABLE;
-            break;
-        case EfiACPIReclaimMemory:
-            type = E820_ACPI;
-            break;
-        case EfiACPIMemoryNVS:
-            type = E820_NVS;
-            break;
-        }
-        if ( e820nr && type == e->type &&
-             desc->PhysicalStart == e->addr + e->size )
-            e->size += len;
-        else if ( !len || e820nr >= E820MAX )
-            continue;
-        else
-        {
-            ++e;
-            e->addr = desc->PhysicalStart;
-            e->size = len;
-            e->type = type;
-            ++e820nr;
-        }
-    }
-    if ( !trampoline_phys )
-    {
-        if ( !cfg.addr )
-            blexit(L"No memory for trampoline");
-        relocate_trampoline(cfg.addr);
-    }
-
-    status = efi_bs->ExitBootServices(ImageHandle, map_key);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot exit boot services", status);
-
-    /* Adjust pointers into EFI. */
-    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
-#endif
-    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
-    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
-
-    relocate_image(__XEN_VIRT_START - xen_phys_start);
-    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
-
-    /* Set system registers and transfer control. */
-    asm volatile("pushq $0\n\tpopfq");
-    rdmsrl(MSR_EFER, efer);
-    efer |= EFER_SCE;
-    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
-        efer |= EFER_NX;
-    wrmsrl(MSR_EFER, efer);
-    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
-              X86_CR0_AM | X86_CR0_PG);
-    asm volatile ( "mov    %[cr4], %%cr4\n\t"
-                   "mov    %[cr3], %%cr3\n\t"
-                   "movabs $__start_xen, %[rip]\n\t"
-                   "lgdt   gdt_descr(%%rip)\n\t"
-                   "mov    stack_start(%%rip), %%rsp\n\t"
-                   "mov    %[ds], %%ss\n\t"
-                   "mov    %[ds], %%ds\n\t"
-                   "mov    %[ds], %%es\n\t"
-                   "mov    %[ds], %%fs\n\t"
-                   "mov    %[ds], %%gs\n\t"
-                   "movl   %[cs], 8(%%rsp)\n\t"
-                   "mov    %[rip], (%%rsp)\n\t"
-                   "lretq  %[stkoff]-16"
-                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
-                   : [cr3] "r" (idle_pg_table),
-                     [cr4] "r" (mmu_cr4_features),
-                     [cs] "ir" (__HYPERVISOR_CS),
-                     [ds] "r" (__HYPERVISOR_DS),
-                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
-                     "D" (&mbi)
-                   : "memory" );
-    for( ; ; ); /* not reached */
-}
-
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-static __init void copy_mapping(unsigned long mfn, unsigned long end,
-                                bool_t (*is_valid)(unsigned long smfn,
-                                                   unsigned long emfn))
-{
-    unsigned long next;
-
-    for ( ; mfn < end; mfn = next )
-    {
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
-        l3_pgentry_t *l3src, *l3dst;
-        unsigned long va = (unsigned long)mfn_to_virt(mfn);
-
-        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
-        if ( !is_valid(mfn, min(next, end)) )
-            continue;
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            l3dst = alloc_xen_pagetable();
-            BUG_ON(!l3dst);
-            clear_page(l3dst);
-            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
-                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
-        }
-        else
-            l3dst = l4e_to_l3e(l4e);
-        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
-        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
-    }
-}
-
-static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
-
-    return !(smfn & pfn_hole_mask) &&
-           find_next_bit(pdx_group_valid, sz,
-                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
-}
-
-static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    return 1;
-}
-#endif
-
-#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
-                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
-
-void __init efi_init_memory(void)
-{
-    unsigned int i;
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-    struct rt_extra {
-        struct rt_extra *next;
-        unsigned long smfn, emfn;
-        unsigned int prot;
-    } *extra, *extra_head = NULL;
-#endif
-
-    printk(XENLOG_INFO "EFI memory map:\n");
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        unsigned long smfn, emfn;
-        unsigned int prot = PAGE_HYPERVISOR;
-
-        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
-                           " type=%u attr=%016" PRIx64 "\n",
-               desc->PhysicalStart, desc->PhysicalStart + len - 1,
-               desc->Type, desc->Attribute);
-
-        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
-            continue;
-
-        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
-
-        smfn = PFN_DOWN(desc->PhysicalStart);
-        emfn = PFN_UP(desc->PhysicalStart + len);
-
-        if ( desc->Attribute & EFI_MEMORY_WB )
-            /* nothing */;
-        else if ( desc->Attribute & EFI_MEMORY_WT )
-            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & EFI_MEMORY_WC )
-            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
-            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
-        else
-        {
-            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-            continue;
-        }
-
-        if ( desc->Attribute & EFI_MEMORY_WP )
-            prot &= _PAGE_RW;
-        if ( desc->Attribute & EFI_MEMORY_XP )
-            prot |= _PAGE_NX_BIT;
-
-        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
-             !(smfn & pfn_hole_mask) &&
-             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
-        {
-            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
-                prot &= ~_PAGE_GLOBAL;
-            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
-                                  smfn, emfn - smfn, prot) == 0 )
-                desc->VirtualStart =
-                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
-            else
-                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
-                       smfn, emfn - 1);
-        }
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
-                  (extra = xmalloc(struct rt_extra)) != NULL )
-        {
-            extra->smfn = smfn;
-            extra->emfn = emfn;
-            extra->prot = prot & ~_PAGE_GLOBAL;
-            extra->next = extra_head;
-            extra_head = extra;
-            desc->VirtualStart = desc->PhysicalStart;
-        }
-#endif
-        else
-        {
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-            /* XXX allocate e.g. down from FIXADDR_START */
-#endif
-            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-        }
-    }
-
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
-                                 mdesc_ver, efi_memmap);
-#else
-    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
-    efi_l4_pgtable = alloc_xen_pagetable();
-    BUG_ON(!efi_l4_pgtable);
-    clear_page(efi_l4_pgtable);
-
-    copy_mapping(0, max_page, ram_range_valid);
-
-    /* Insert non-RAM runtime mappings inside the direct map. */
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-
-        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
-             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
-             desc->VirtualStart != desc->PhysicalStart )
-            copy_mapping(PFN_DOWN(desc->PhysicalStart),
-                         PFN_UP(desc->PhysicalStart +
-                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
-                         rt_range_valid);
-    }
-
-    /* Insert non-RAM runtime mappings outside of the direct map. */
-    while ( (extra = extra_head) != NULL )
-    {
-        unsigned long addr = extra->smfn << PAGE_SHIFT;
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
-        l3_pgentry_t *pl3e;
-        l2_pgentry_t *pl2e;
-        l1_pgentry_t *l1t;
-
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            pl3e = alloc_xen_pagetable();
-            BUG_ON(!pl3e);
-            clear_page(pl3e);
-            efi_l4_pgtable[l4_table_offset(addr)] =
-                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
-        }
-        else
-            pl3e = l4e_to_l3e(l4e);
-        pl3e += l3_table_offset(addr);
-        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
-        {
-            pl2e = alloc_xen_pagetable();
-            BUG_ON(!pl2e);
-            clear_page(pl2e);
-            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
-            pl2e = l3e_to_l2e(*pl3e);
-        }
-        pl2e += l2_table_offset(addr);
-        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
-        {
-            l1t = alloc_xen_pagetable();
-            BUG_ON(!l1t);
-            clear_page(l1t);
-            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
-            l1t = l2e_to_l1e(*pl2e);
-        }
-        for ( i = l1_table_offset(addr);
-              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
-              ++i, ++extra->smfn )
-            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
-
-        if ( extra->smfn == extra->emfn )
-        {
-            extra_head = extra->next;
-            xfree(extra);
-        }
-    }
-
-    /* Insert Xen mappings. */
-    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
-          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
-        efi_l4_pgtable[i] = idle_pg_table[i];
-#endif
-}
diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
new file mode 120000
index 0000000..04e09a6
--- /dev/null
+++ b/xen/arch/x86/efi/boot.c
@@ -0,0 +1 @@
+../../../common/efi/boot.c
\ No newline at end of file
diff --git a/xen/arch/x86/efi/runtime.c b/xen/arch/x86/efi/runtime.c
index 166852d..6788a1a 100644
--- a/xen/arch/x86/efi/runtime.c
+++ b/xen/arch/x86/efi/runtime.c
@@ -1,4 +1,4 @@
-#include "efi.h"
+#include <asm/efi.h>
 #include <xen/cache.h>
 #include <xen/errno.h>
 #include <xen/guest_access.h>
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
new file mode 100644
index 0000000..14e2f46
--- /dev/null
+++ b/xen/common/efi/boot.c
@@ -0,0 +1,1723 @@
+#include <asm/efi.h>
+#include <efi/efiprot.h>
+#include <efi/efipciio.h>
+#include <public/xen.h>
+#include <xen/compile.h>
+#include <xen/ctype.h>
+#include <xen/dmi.h>
+#include <xen/init.h>
+#include <xen/keyhandler.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/multiboot.h>
+#include <xen/pci_regs.h>
+#include <xen/pfn.h>
+#if EFI_PAGE_SIZE != PAGE_SIZE
+# error Cannot use xen/pfn.h here!
+#endif
+#include <xen/string.h>
+#include <xen/stringify.h>
+#include <xen/vga.h>
+#include <asm/e820.h>
+#include <asm/edd.h>
+#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
+#include <asm/fixmap.h>
+#undef __ASSEMBLY__
+#include <asm/msr.h>
+#include <asm/processor.h>
+
+/* Using SetVirtualAddressMap() is incompatible with kexec: */
+#undef USE_SET_VIRTUAL_ADDRESS_MAP
+
+#define SHIM_LOCK_PROTOCOL_GUID \
+  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
+
+typedef EFI_STATUS
+(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
+    IN VOID *Buffer,
+    IN UINT32 Size);
+
+typedef struct {
+    EFI_SHIM_LOCK_VERIFY Verify;
+} EFI_SHIM_LOCK_PROTOCOL;
+
+extern char start[];
+extern u32 cpuid_ext_features;
+
+union string {
+    CHAR16 *w;
+    char *s;
+    const char *cs;
+};
+
+struct file {
+    UINTN size;
+    union {
+        EFI_PHYSICAL_ADDRESS addr;
+        void *ptr;
+    };
+};
+
+static EFI_BOOT_SERVICES *__initdata efi_bs;
+static EFI_HANDLE __initdata efi_ih;
+
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
+
+static UINT32 __initdata mdesc_ver;
+
+static struct file __initdata cfg;
+static struct file __initdata kernel;
+static struct file __initdata ramdisk;
+static struct file __initdata ucode;
+static struct file __initdata xsm;
+
+static multiboot_info_t __initdata mbi = {
+    .flags = MBI_MODULES | MBI_LOADERNAME
+};
+static module_t __initdata mb_modules[3];
+
+static CHAR16 __initdata newline[] = L"\r\n";
+
+#define PrintStr(s) StdOut->OutputString(StdOut, s)
+#define PrintErr(s) StdErr->OutputString(StdErr, s)
+
+static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
+{
+    if ( Val >= 10 )
+        Buffer = FormatDec(Val / 10, Buffer);
+    *Buffer = (CHAR16)(L'0' + Val % 10);
+    return Buffer + 1;
+}
+
+static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
+{
+    if ( Width > 1 || Val >= 0x10 )
+        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
+    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
+    return Buffer + 1;
+}
+
+static void __init DisplayUint(UINT64 Val, INTN Width)
+{
+    CHAR16 PrintString[32], *end;
+
+    if (Width < 0)
+        end = FormatDec(Val, PrintString);
+    else
+    {
+        PrintStr(L"0x");
+        end = FormatHex(Val, Width, PrintString);
+    }
+    *end = 0;
+    PrintStr(PrintString);
+}
+
+static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
+{
+    CHAR16 *r = d;
+
+    while ( (*d++ = *s++) != 0 )
+        ;
+    return r;
+}
+
+static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
+{
+    while ( *s1 && *s1 == *s2 )
+    {
+        ++s1;
+        ++s2;
+    }
+    return *s1 - *s2;
+}
+
+static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
+{
+    while ( n && *s1 && *s1 == *s2 )
+    {
+        --n;
+        ++s1;
+        ++s2;
+    }
+    return n ? *s1 - *s2 : 0;
+}
+
+static CHAR16 *__init s2w(union string *str)
+{
+    const char *s = str->s;
+    CHAR16 *w;
+    void *ptr;
+
+    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
+                              &ptr) != EFI_SUCCESS )
+        return NULL;
+
+    w = str->w = ptr;
+    do {
+        *w = *s++;
+    } while ( *w++ );
+
+    return str->w;
+}
+
+static char *__init w2s(const union string *str)
+{
+    const CHAR16 *w = str->w;
+    char *s = str->s;
+
+    do {
+        if ( *w > 0x007f )
+            return NULL;
+        *s = *w++;
+    } while ( *s++ );
+
+    return str->s;
+}
+
+static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
+{
+    return guid1->Data1 == guid2->Data1 &&
+           guid1->Data2 == guid2->Data2 &&
+           guid1->Data3 == guid2->Data3 &&
+           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
+}
+
+static void __init noreturn blexit(const CHAR16 *str)
+{
+    if ( str )
+        PrintStr((CHAR16 *)str);
+    PrintStr(newline);
+
+    if ( cfg.addr )
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    if ( kernel.addr )
+        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
+    if ( ramdisk.addr )
+        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
+    if ( ucode.addr )
+        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
+    if ( xsm.addr )
+        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
+
+    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
+    unreachable(); /* not reached */
+}
+
+/* generic routine for printing error messages */
+static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
+{
+    StdOut = StdErr;
+    PrintErr((CHAR16 *)mesg);
+    PrintErr(L": ");
+
+    switch (ErrCode)
+    {
+    case EFI_NOT_FOUND:
+        mesg = L"Not found";
+        break;
+    case EFI_NO_MEDIA:
+        mesg = L"The device has no media";
+        break;
+    case EFI_MEDIA_CHANGED:
+        mesg = L"Media changed";
+        break;
+    case EFI_DEVICE_ERROR:
+        mesg = L"Device error";
+        break;
+    case EFI_VOLUME_CORRUPTED:
+        mesg = L"Volume corrupted";
+        break;
+    case EFI_ACCESS_DENIED:
+        mesg = L"Access denied";
+        break;
+    case EFI_OUT_OF_RESOURCES:
+        mesg = L"Out of resources";
+        break;
+    case EFI_VOLUME_FULL:
+        mesg = L"Volume is full";
+        break;
+    case EFI_SECURITY_VIOLATION:
+        mesg = L"Security violation";
+        break;
+    case EFI_CRC_ERROR:
+        mesg = L"CRC error";
+        break;
+    case EFI_COMPROMISED_DATA:
+        mesg = L"Compromised data";
+        break;
+    default:
+        PrintErr(L"ErrCode: ");
+        DisplayUint(ErrCode, 0);
+        mesg = NULL;
+        break;
+    }
+    blexit(mesg);
+}
+
+static void __init place_string(u32 *addr, const char *s)
+{
+    static char *__initdata alloc = start;
+
+    if ( s && *s )
+    {
+        size_t len1 = strlen(s) + 1;
+        const char *old = (char *)(long)*addr;
+        size_t len2 = *addr ? strlen(old) + 1 : 0;
+
+        alloc -= len1 + len2;
+        /*
+         * Insert new string before already existing one. This is needed
+         * for options passed on the command line to override options from
+         * the configuration file.
+         */
+        memcpy(alloc, s, len1);
+        if ( *addr )
+        {
+            alloc[len1 - 1] = ' ';
+            memcpy(alloc + len1, old, len2);
+        }
+    }
+    *addr = (long)alloc;
+}
+
+static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
+                                    CHAR16 *cmdline, UINTN cmdsize)
+{
+    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
+    bool_t prev_sep = TRUE;
+
+    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
+            cmdsize -= sizeof(*cmdline), ++cmdline )
+    {
+        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
+
+        if ( !prev_sep )
+        {
+            if ( cur_sep )
+                ++ptr;
+            else if ( argv )
+            {
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        else if ( !cur_sep )
+        {
+            if ( !argv )
+                ++argc;
+            else if ( prev && wstrcmp(prev, L"--") == 0 )
+            {
+                union string rest = { .w = cmdline };
+
+                --argv;
+                place_string(&mbi.cmdline, w2s(&rest));
+                break;
+            }
+            else
+            {
+                *argv++ = prev = ptr;
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        prev_sep = cur_sep;
+    }
+    if ( argv )
+        *argv = NULL;
+    return argc;
+}
+
+static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
+                                                CHAR16 **leaf)
+{
+    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
+    EFI_FILE_HANDLE dir_handle;
+    EFI_DEVICE_PATH *dp;
+    CHAR16 *pathend, *ptr;
+    EFI_STATUS ret;
+
+    do {
+        EFI_FILE_IO_INTERFACE *fio;
+
+        /* Get the file system interface. */
+        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
+                                     &fs_protocol, (void **)&fio);
+        if ( EFI_ERROR(ret) )
+            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
+                         ret);
+        ret = fio->OpenVolume(fio, &dir_handle);
+    } while ( ret == EFI_MEDIA_CHANGED );
+    if ( ret != EFI_SUCCESS )
+        PrintErrMesg(L"OpenVolume failure", ret);
+
+#define buffer ((CHAR16 *)keyhandler_scratch)
+#define BUFFERSIZE sizeof(keyhandler_scratch)
+    for ( dp = loaded_image->FilePath, *buffer = 0;
+          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
+          dp = (void *)dp + DevicePathNodeLength(dp) )
+    {
+        FILEPATH_DEVICE_PATH *fp;
+
+        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
+             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
+            blexit(L"Unsupported device path component");
+
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS )
+            {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+        fp = (void *)dp;
+        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
+                          sizeof(*dp) + sizeof(*buffer) )
+            blexit(L"Increase BUFFERSIZE");
+        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
+        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
+    }
+    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
+        if ( *ptr == L'\\' )
+            pathend = ptr;
+    if ( pathend )
+    {
+        *pathend = 0;
+        *leaf = pathend + 1;
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS ) {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+    }
+    else
+        *leaf = buffer;
+#undef BUFFERSIZE
+#undef buffer
+
+    return dir_handle;
+}
+
+static CHAR16 *__init point_tail(CHAR16 *fn)
+{
+    CHAR16 *tail = NULL;
+
+    for ( ; ; ++fn )
+        switch ( *fn )
+        {
+        case 0:
+            return tail;
+        case L'.':
+        case L'-':
+        case L'_':
+            tail = fn;
+            break;
+        }
+}
+
+static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
+                               struct file *file)
+{
+    EFI_FILE_HANDLE FileHandle = NULL;
+    UINT64 size;
+    EFI_STATUS ret;
+    CHAR16 *what = NULL;
+
+    if ( !name )
+        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
+    ret = dir_handle->Open(dir_handle, &FileHandle, name,
+                           EFI_FILE_MODE_READ, 0);
+    if ( file == &cfg && ret == EFI_NOT_FOUND )
+        return 0;
+    if ( EFI_ERROR(ret) )
+        what = L"Open";
+    else
+        ret = FileHandle->SetPosition(FileHandle, -1);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+        ret = FileHandle->GetPosition(FileHandle, &size);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Get size";
+    else
+        ret = FileHandle->SetPosition(FileHandle, 0);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+    {
+        file->addr = min(1UL << (32 + PAGE_SHIFT),
+                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
+        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                    PFN_UP(size), &file->addr);
+    }
+    if ( EFI_ERROR(ret) )
+    {
+        file->addr = 0;
+        what = what ?: L"Allocation";
+    }
+    else
+    {
+        if ( file != &cfg )
+        {
+            PrintStr(name);
+            PrintStr(L": ");
+            DisplayUint(file->addr, 2 * sizeof(file->addr));
+            PrintStr(L"-");
+            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
+            PrintStr(newline);
+            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
+            mb_modules[mbi.mods_count].mod_end = size;
+            ++mbi.mods_count;
+        }
+
+        file->size = size;
+        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
+        if ( !EFI_ERROR(ret) && file->size != size )
+            ret = EFI_ABORTED;
+        if ( EFI_ERROR(ret) )
+            what = L"Read";
+    }
+
+    if ( FileHandle )
+        FileHandle->Close(FileHandle);
+
+    if ( what )
+    {
+        PrintErr(what);
+        PrintErr(L" failed for ");
+        PrintErrMesg(name, ret);
+    }
+
+    return 1;
+}
+
+static void __init pre_parse(const struct file *cfg)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    bool_t start = 1, comment = 0;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        if ( iscntrl(*ptr) )
+        {
+            comment = 0;
+            start = 1;
+            *ptr = 0;
+        }
+        else if ( comment || (start && isspace(*ptr)) )
+            *ptr = 0;
+        else if ( *ptr == '#' || (start && *ptr == ';') )
+        {
+            comment = 1;
+            *ptr = 0;
+        }
+        else
+            start = 0;
+    }
+    if ( cfg->size && end[-1] )
+         PrintStr(L"No newline at end of config file,"
+                   " last line will be ignored.\r\n");
+}
+
+static char *__init get_value(const struct file *cfg, const char *section,
+                              const char *item)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
+    bool_t match = !slen;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        switch ( *ptr )
+        {
+        case 0:
+            continue;
+        case '[':
+            if ( !slen )
+                break;
+            if ( match )
+                return NULL;
+            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
+            break;
+        default:
+            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
+                return ptr + ilen + 1;
+            break;
+        }
+        ptr += strlen(ptr);
+    }
+    return NULL;
+}
+
+static void __init split_value(char *s)
+{
+    while ( *s && isspace(*s) )
+        ++s;
+    place_string(&mb_modules[mbi.mods_count].string, s);
+    while ( *s && !isspace(*s) )
+        ++s;
+    *s = 0;
+}
+
+static void __init edd_put_string(u8 *dst, size_t n, const char *src)
+{
+    while ( n-- && *src )
+       *dst++ = *src++;
+    if ( *src )
+       PrintErrMesg(L"Internal error populating EDD info",
+                    EFI_BUFFER_TOO_SMALL);
+    while ( n-- )
+       *dst++ = ' ';
+}
+#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
+
+static void __init setup_efi_pci(void)
+{
+    EFI_STATUS status;
+    EFI_HANDLE *handles;
+    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
+    UINTN i, nr_pci, size = 0;
+    struct efi_pci_rom *last = NULL;
+
+    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+
+    nr_pci = size / sizeof(*handles);
+    for ( i = 0; i < nr_pci; ++i )
+    {
+        EFI_PCI_IO *pci = NULL;
+        u64 attributes;
+        struct efi_pci_rom *rom, *va;
+        UINTN segment, bus, device, function;
+
+        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
+        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
+            continue;
+
+        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
+                                 &attributes);
+        if ( EFI_ERROR(status) ||
+             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
+             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
+                       &function)) )
+            continue;
+
+        DisplayUint(segment, 4);
+        PrintStr(L":");
+        DisplayUint(bus, 2);
+        PrintStr(L":");
+        DisplayUint(device, 2);
+        PrintStr(L".");
+        DisplayUint(function, 1);
+        PrintStr(L": ROM: ");
+        DisplayUint(pci->RomSize, 0);
+        PrintStr(L" bytes at ");
+        DisplayUint((UINTN)pci->RomImage, 0);
+        PrintStr(newline);
+
+        size = pci->RomSize + sizeof(*rom);
+        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
+                                      (void **)&rom);
+        if ( EFI_ERROR(status) )
+            continue;
+
+        rom->next = NULL;
+        rom->size = pci->RomSize;
+
+        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
+                               &rom->vendor);
+        if ( !EFI_ERROR(status) )
+            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
+                                   &rom->devid);
+        if ( EFI_ERROR(status) )
+        {
+            efi_bs->FreePool(rom);
+            continue;
+        }
+
+        rom->segment = segment;
+        rom->bus = bus;
+        rom->devfn = (device << 3) | function;
+        memcpy(rom->data, pci->RomImage, pci->RomSize);
+
+        va = (void *)rom + DIRECTMAP_VIRT_START;
+        if ( last )
+            last->next = va;
+        else
+            efi_pci_roms = va;
+        last = rom;
+    }
+
+    efi_bs->FreePool(handles);
+}
+
+static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
+{
+   if ( bpp < 0 )
+       return bpp;
+   if ( !mask )
+       return -EINVAL;
+   for ( *pos = 0; !(mask & 1); ++*pos )
+       mask >>= 1;
+   for ( *sz = 0; mask & 1; ++sz)
+       mask >>= 1;
+   if ( mask )
+       return -EINVAL;
+   return max(*pos + *sz, bpp);
+}
+
+extern const intpte_t __page_tables_start[], __page_tables_end[];
+#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
+                           (intpte_t *)(v) < __page_tables_end)
+
+#define PE_BASE_RELOC_ABS      0
+#define PE_BASE_RELOC_HIGHLOW  3
+#define PE_BASE_RELOC_DIR64   10
+
+extern const struct pe_base_relocs {
+    u32 rva;
+    u32 size;
+    u16 entries[];
+} __base_relocs_start[], __base_relocs_end[];
+
+static void __init relocate_image(unsigned long delta)
+{
+    const struct pe_base_relocs *base_relocs;
+
+    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
+    {
+        unsigned int i, n;
+
+        n = (base_relocs->size - sizeof(*base_relocs)) /
+            sizeof(*base_relocs->entries);
+        for ( i = 0; i < n; ++i )
+        {
+            unsigned long addr = xen_phys_start + base_relocs->rva +
+                                 (base_relocs->entries[i] & 0xfff);
+
+            switch ( base_relocs->entries[i] >> 12 )
+            {
+            case PE_BASE_RELOC_ABS:
+                break;
+            case PE_BASE_RELOC_HIGHLOW:
+                if ( delta )
+                {
+                    *(u32 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(u32 *)addr += xen_phys_start;
+                }
+                break;
+            case PE_BASE_RELOC_DIR64:
+                if ( delta )
+                {
+                    *(u64 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(intpte_t *)addr += xen_phys_start;
+                }
+                break;
+            default:
+                blexit(L"Unsupported relocation type");
+            }
+        }
+        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
+    }
+}
+
+extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
+
+static void __init relocate_trampoline(unsigned long phys)
+{
+    const s32 *trampoline_ptr;
+
+    trampoline_phys = phys;
+    /* Apply relocations to trampoline. */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
+
+void EFIAPI __init noreturn
+efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
+{
+    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
+    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
+    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
+    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
+    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
+    EFI_LOADED_IMAGE *loaded_image;
+    EFI_STATUS status;
+    unsigned int i, argc;
+    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
+    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
+    EFI_HANDLE *handles = NULL;
+    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
+    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
+    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
+    EFI_FILE_HANDLE dir_handle;
+    union string section = { NULL }, name;
+    struct e820entry *e;
+    u64 efer;
+    bool_t base_video = 0;
+
+    efi_ih = ImageHandle;
+    efi_bs = SystemTable->BootServices;
+    efi_rs = SystemTable->RuntimeServices;
+    efi_ct = SystemTable->ConfigurationTable;
+    efi_num_ct = SystemTable->NumberOfTableEntries;
+    efi_version = SystemTable->Hdr.Revision;
+    efi_fw_vendor = SystemTable->FirmwareVendor;
+    efi_fw_revision = SystemTable->FirmwareRevision;
+
+    StdOut = SystemTable->ConOut;
+    StdErr = SystemTable->StdErr ?: StdOut;
+
+    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
+                                    (void **)&loaded_image);
+    if ( status != EFI_SUCCESS )
+        PrintErrMesg(L"No Loaded Image Protocol", status);
+
+    xen_phys_start = (UINTN)loaded_image->ImageBase;
+    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
+        blexit(L"Xen must be loaded below 4Gb.");
+    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
+        blexit(L"Xen must be loaded at a 2Mb boundary.");
+    trampoline_xen_phys_start = xen_phys_start;
+
+    /* Get the file system interface. */
+    dir_handle = get_parent_handle(loaded_image, &file_name);
+
+    argc = get_argv(0, NULL, loaded_image->LoadOptions,
+                    loaded_image->LoadOptionsSize);
+    if ( argc > 0 &&
+         efi_bs->AllocatePool(EfiLoaderData,
+                              (argc + 1) * sizeof(*argv) +
+                                  loaded_image->LoadOptionsSize,
+                              (void **)&argv) == EFI_SUCCESS )
+        get_argv(argc, argv, loaded_image->LoadOptions,
+                 loaded_image->LoadOptionsSize);
+    else
+        argc = 0;
+    for ( i = 1; i < argc; ++i )
+    {
+        CHAR16 *ptr = argv[i];
+
+        if ( !ptr )
+            break;
+        if ( *ptr == L'/' || *ptr == L'-' )
+        {
+            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
+                base_video = 1;
+            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
+                cfg_file_name = ptr + 5;
+            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
+                cfg_file_name = argv[++i];
+            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
+                      (ptr[1] == L'?' && !ptr[2]) )
+            {
+                PrintStr(L"Xen EFI Loader options:\r\n");
+                PrintStr(L"-basevideo   retain current video mode\r\n");
+                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
+                PrintStr(L"-help, -?    display this help\r\n");
+                blexit(NULL);
+            }
+            else
+            {
+                PrintStr(L"WARNING: Unknown command line option '");
+                PrintStr(ptr);
+                PrintStr(L"' ignored\r\n");
+            }
+        }
+        else
+            section.w = ptr;
+    }
+
+    if ( !base_video )
+    {
+        unsigned int best;
+
+        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
+              i < StdOut->Mode->MaxMode; ++i )
+        {
+            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
+                 cols * rows > size )
+            {
+                size = cols * rows;
+                best = i;
+            }
+        }
+        if ( best != StdOut->Mode->Mode )
+            StdOut->SetMode(StdOut, best);
+    }
+
+    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
+             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
+
+    relocate_image(0);
+
+    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
+                           &cols, &rows) == EFI_SUCCESS )
+    {
+        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
+        vga_console_info.u.text_mode_3.columns = cols;
+        vga_console_info.u.text_mode_3.rows = rows;
+        vga_console_info.u.text_mode_3.font_height = 16;
+    }
+
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
+        if ( EFI_ERROR(status) )
+            continue;
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            break;
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( EFI_ERROR(status) )
+        gop = NULL;
+
+    /* Read and parse the config file. */
+    if ( !cfg_file_name )
+    {
+        CHAR16 *tail;
+
+        while ( (tail = point_tail(file_name)) != NULL )
+        {
+            wstrcpy(tail, L".cfg");
+            if ( read_file(dir_handle, file_name, &cfg) )
+                break;
+            *tail = 0;
+        }
+        if ( !tail )
+            blexit(L"No configuration file found.");
+        PrintStr(L"Using configuration file '");
+        PrintStr(file_name);
+        PrintStr(L"'\r\n");
+    }
+    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
+        blexit(L"Configuration file not found.");
+    pre_parse(&cfg);
+
+    if ( section.w )
+        w2s(&section);
+    else
+        section.s = get_value(&cfg, "global", "default");
+
+    for ( ; ; )
+    {
+        name.s = get_value(&cfg, section.s, "kernel");
+        if ( name.s )
+            break;
+        name.s = get_value(&cfg, "global", "chain");
+        if ( !name.s )
+            break;
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+        cfg.addr = 0;
+        if ( !read_file(dir_handle, s2w(&name), &cfg) )
+        {
+            PrintStr(L"Chained configuration file '");
+            PrintStr(name.w);
+            efi_bs->FreePool(name.w);
+            blexit(L"'not found.");
+        }
+        pre_parse(&cfg);
+        efi_bs->FreePool(name.w);
+    }
+    if ( !name.s )
+        blexit(L"No Dom0 kernel image specified.");
+    split_value(name.s);
+    read_file(dir_handle, s2w(&name), &kernel);
+    efi_bs->FreePool(name.w);
+
+    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
+                    (void **)&shim_lock)) &&
+         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
+        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
+
+    name.s = get_value(&cfg, section.s, "ramdisk");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ramdisk);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "ucode");
+    if ( !name.s )
+        name.s = get_value(&cfg, "global", "ucode");
+    if ( name.s )
+    {
+        microcode_set_module(mbi.mods_count);
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ucode);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "xsm");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &xsm);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "options");
+    if ( name.s )
+        place_string(&mbi.cmdline, name.s);
+    /* Insert image name last, as it gets prefixed to the other options. */
+    if ( argc )
+    {
+        name.w = *argv;
+        w2s(&name);
+    }
+    else
+        name.s = "xen";
+    place_string(&mbi.cmdline, name.s);
+
+    cols = rows = depth = 0;
+    if ( !base_video )
+    {
+        name.cs = get_value(&cfg, section.s, "video");
+        if ( !name.cs )
+            name.cs = get_value(&cfg, "global", "video");
+        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
+        {
+            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs )
+                cols = rows = depth = 0;
+        }
+    }
+
+    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    cfg.addr = 0;
+
+    dir_handle->Close(dir_handle);
+
+    if ( gop && !base_video )
+    {
+        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
+        {
+            unsigned int bpp = 0;
+
+            status = gop->QueryMode(gop, i, &info_size, &mode_info);
+            if ( EFI_ERROR(status) )
+                continue;
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelBitMask:
+                bpp = hweight32(mode_info->PixelInformation.RedMask |
+                                mode_info->PixelInformation.GreenMask |
+                                mode_info->PixelInformation.BlueMask);
+                break;
+            case PixelRedGreenBlueReserved8BitPerColor:
+            case PixelBlueGreenRedReserved8BitPerColor:
+                bpp = 24;
+                break;
+            default:
+                continue;
+            }
+            if ( cols == mode_info->HorizontalResolution &&
+                 rows == mode_info->VerticalResolution &&
+                 (!depth || bpp == depth) )
+            {
+                gop_mode = i;
+                break;
+            }
+            if ( !cols && !rows &&
+                 mode_info->HorizontalResolution *
+                 mode_info->VerticalResolution > size )
+            {
+                size = mode_info->HorizontalResolution *
+                       mode_info->VerticalResolution;
+                gop_mode = i;
+            }
+        }
+    }
+
+    if ( mbi.cmdline )
+        mbi.flags |= MBI_CMDLINE;
+    /*
+     * These must not be initialized statically, since the value must
+     * not get relocated when processing base relocations below.
+     */
+    mbi.boot_loader_name = (long)"EFI";
+    mbi.mods_addr = (long)mb_modules;
+
+    place_string(&mbi.mem_upper, NULL);
+
+    /* Collect EDD info. */
+    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
+    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        EFI_BLOCK_IO *bio;
+        EFI_DEV_PATH_PTR devp;
+        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
+        struct edd_device_params *params = &info->edd_device_params;
+        enum { root, acpi, pci, ctrlr } state = root;
+
+        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
+        if ( EFI_ERROR(status) ||
+             bio->Media->RemovableMedia ||
+             bio->Media->LogicalPartition )
+            continue;
+        if ( boot_edd_info_nr < EDD_INFO_MAX )
+        {
+            info->device = 0x80 + boot_edd_info_nr; /* fake */
+            info->version = 0x11;
+            params->length = offsetof(struct edd_device_params, dpte_ptr);
+            params->number_of_sectors = bio->Media->LastBlock + 1;
+            params->bytes_per_sector = bio->Media->BlockSize;
+            params->dpte_ptr = ~0;
+        }
+        ++boot_edd_info_nr;
+        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
+                                        (void **)&devp);
+        if ( EFI_ERROR(status) )
+            continue;
+        for ( ; !IsDevicePathEnd(devp.DevPath);
+              devp.DevPath = NextDevicePathNode(devp.DevPath) )
+        {
+            switch ( DevicePathType(devp.DevPath) )
+            {
+                const u8 *p;
+
+            case ACPI_DEVICE_PATH:
+                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case ACPI_DP:
+                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
+                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
+                        break;
+                    params->interface_path.pci.bus = devp.Acpi->UID;
+                    state = acpi;
+                    break;
+                case EXPANDED_ACPI_DP:
+                    /* XXX */
+                    break;
+                }
+                break;
+            case HARDWARE_DEVICE_PATH:
+                if ( state != acpi ||
+                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
+                     boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = pci;
+                edd_put_string(params->host_bus_type, "PCI");
+                params->interface_path.pci.slot = devp.Pci->Device;
+                params->interface_path.pci.function = devp.Pci->Function;
+                break;
+            case MESSAGING_DEVICE_PATH:
+                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = ctrlr;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case MSG_ATAPI_DP:
+                    edd_put_string(params->interface_type, "ATAPI");
+                    params->interface_path.pci.channel =
+                        devp.Atapi->PrimarySecondary;
+                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
+                    params->device_path.atapi.lun = devp.Atapi->Lun;
+                    break;
+                case MSG_SCSI_DP:
+                    edd_put_string(params->interface_type, "SCSI");
+                    params->device_path.scsi.id = devp.Scsi->Pun;
+                    params->device_path.scsi.lun = devp.Scsi->Lun;
+                    break;
+                case MSG_FIBRECHANNEL_DP:
+                    edd_put_string(params->interface_type, "FIBRE");
+                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
+                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
+                    break;
+                case MSG_1394_DP:
+                    edd_put_string(params->interface_type, "1394");
+                    params->device_path.i1394.eui = devp.F1394->Guid;
+                    break;
+                case MSG_USB_DP:
+                case MSG_USB_CLASS_DP:
+                    edd_put_string(params->interface_type, "USB");
+                    break;
+                case MSG_I2O_DP:
+                    edd_put_string(params->interface_type, "I2O");
+                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
+                    break;
+                default:
+                    continue;
+                }
+                info->version = 0x30;
+                params->length = sizeof(struct edd_device_params);
+                params->key = 0xbedd;
+                params->device_path_info_length =
+                    sizeof(struct edd_device_params) -
+                    offsetof(struct edd_device_params, key);
+                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
+                    params->checksum -= *p;
+                break;
+            case MEDIA_DEVICE_PATH:
+                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
+                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
+                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
+                {
+                    struct mbr_signature *sig = boot_mbr_signature +
+                                                boot_mbr_signature_nr;
+
+                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
+                    memcpy(&sig->signature, devp.HardDrive->Signature,
+                           sizeof(sig->signature));
+                    ++boot_mbr_signature_nr;
+                }
+                break;
+            }
+        }
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( boot_edd_info_nr > EDD_INFO_MAX )
+        boot_edd_info_nr = EDD_INFO_MAX;
+
+    /* XXX Collect EDID info. */
+
+    if ( cpuid_eax(0x80000000) > 0x80000000 )
+    {
+        cpuid_ext_features = cpuid_edx(0x80000001);
+        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
+    }
+
+    /* Obtain basic table pointers. */
+    for ( i = 0; i < efi_num_ct; ++i )
+    {
+        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
+        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
+        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
+        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
+
+        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi20 = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
+	       efi.mps = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
+	       efi.smbios = (long)efi_ct[i].VendorTable;
+    }
+
+    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
+        dmi_efi_get_table((void *)(long)efi.smbios);
+
+    /* Collect PCI ROM contents. */
+    setup_efi_pci();
+
+    /* Get snapshot of variable store parameters. */
+    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
+             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
+                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
+                                       EFI_VARIABLE_RUNTIME_ACCESS,
+                                       &efi_boot_max_var_store_size,
+                                       &efi_boot_remain_var_store_size,
+                                       &efi_boot_max_var_size) :
+             EFI_INCOMPATIBLE_VERSION;
+    if ( EFI_ERROR(status) )
+    {
+        efi_boot_max_var_store_size = 0;
+        efi_boot_remain_var_store_size = 0;
+        efi_boot_max_var_size = status;
+        PrintStr(L"Warning: Could not query variable store: ");
+        DisplayUint(status, 0);
+        PrintStr(newline);
+    }
+
+    /* Allocate space for trampoline (in first Mb). */
+    cfg.addr = 0x100000;
+    cfg.size = trampoline_end - trampoline_start;
+    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                   PFN_UP(cfg.size), &cfg.addr);
+    if ( status == EFI_SUCCESS )
+        relocate_trampoline(cfg.addr);
+    else
+    {
+        cfg.addr = 0;
+        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
+    }
+
+    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
+    for ( i = 0; i < 8; ++i )
+    {
+        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
+        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
+
+        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
+        slot &= L2_PAGETABLE_ENTRIES - 1;
+        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
+    }
+    /* Initialise L3 boot-map page directory entries. */
+    l3_bootmap[l3_table_offset(xen_phys_start)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+
+    if ( gop )
+    {
+        int bpp = 0;
+
+        /* Set graphics mode. */
+        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
+            gop->SetMode(gop, gop_mode);
+
+        /* Get graphics and frame buffer info. */
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelRedGreenBlueReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 0;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 16;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBlueGreenRedReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 16;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 0;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBitMask:
+                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.red_pos,
+                                &vga_console_info.u.vesa_lfb.red_size);
+                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
+                                &vga_console_info.u.vesa_lfb.green_pos,
+                                &vga_console_info.u.vesa_lfb.green_size);
+                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
+                                &vga_console_info.u.vesa_lfb.blue_pos,
+                                &vga_console_info.u.vesa_lfb.blue_size);
+                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.rsvd_pos,
+                                &vga_console_info.u.vesa_lfb.rsvd_size);
+                if ( bpp > 0 )
+                    break;
+                /* fall through */
+            default:
+                PrintErr(L"Current graphics mode is unsupported!\r\n");
+                status = EFI_UNSUPPORTED;
+                break;
+            }
+        if ( !EFI_ERROR(status) )
+        {
+            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
+            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
+            vga_console_info.u.vesa_lfb.width =
+                mode_info->HorizontalResolution;
+            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
+            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
+            vga_console_info.u.vesa_lfb.bytes_per_line =
+                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
+            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
+            vga_console_info.u.vesa_lfb.lfb_size =
+                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
+        }
+    }
+
+    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
+                         &efi_mdesc_size, &mdesc_ver);
+    mbi.mem_upper -= efi_memmap_size;
+    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
+    if ( mbi.mem_upper < xen_phys_start )
+        blexit(L"Out of static memory");
+    efi_memmap = (void *)(long)mbi.mem_upper;
+    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
+                                  &efi_mdesc_size, &mdesc_ver);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot obtain memory map", status);
+
+    /* Populate E820 table and check trampoline area availability. */
+    e = e820map - 1;
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        u32 type;
+
+        switch ( desc->Type )
+        {
+        default:
+            type = E820_RESERVED;
+            break;
+        case EfiConventionalMemory:
+        case EfiBootServicesCode:
+        case EfiBootServicesData:
+            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
+                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
+                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
+            /* fall through */
+        case EfiLoaderCode:
+        case EfiLoaderData:
+            if ( desc->Attribute & EFI_MEMORY_WB )
+                type = E820_RAM;
+            else
+        case EfiUnusableMemory:
+                type = E820_UNUSABLE;
+            break;
+        case EfiACPIReclaimMemory:
+            type = E820_ACPI;
+            break;
+        case EfiACPIMemoryNVS:
+            type = E820_NVS;
+            break;
+        }
+        if ( e820nr && type == e->type &&
+             desc->PhysicalStart == e->addr + e->size )
+            e->size += len;
+        else if ( !len || e820nr >= E820MAX )
+            continue;
+        else
+        {
+            ++e;
+            e->addr = desc->PhysicalStart;
+            e->size = len;
+            e->type = type;
+            ++e820nr;
+        }
+    }
+    if ( !trampoline_phys )
+    {
+        if ( !cfg.addr )
+            blexit(L"No memory for trampoline");
+        relocate_trampoline(cfg.addr);
+    }
+
+    status = efi_bs->ExitBootServices(ImageHandle, map_key);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot exit boot services", status);
+
+    /* Adjust pointers into EFI. */
+    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
+#endif
+    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
+    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
+
+    relocate_image(__XEN_VIRT_START - xen_phys_start);
+    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
+
+    /* Set system registers and transfer control. */
+    asm volatile("pushq $0\n\tpopfq");
+    rdmsrl(MSR_EFER, efer);
+    efer |= EFER_SCE;
+    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
+        efer |= EFER_NX;
+    wrmsrl(MSR_EFER, efer);
+    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
+              X86_CR0_AM | X86_CR0_PG);
+    asm volatile ( "mov    %[cr4], %%cr4\n\t"
+                   "mov    %[cr3], %%cr3\n\t"
+                   "movabs $__start_xen, %[rip]\n\t"
+                   "lgdt   gdt_descr(%%rip)\n\t"
+                   "mov    stack_start(%%rip), %%rsp\n\t"
+                   "mov    %[ds], %%ss\n\t"
+                   "mov    %[ds], %%ds\n\t"
+                   "mov    %[ds], %%es\n\t"
+                   "mov    %[ds], %%fs\n\t"
+                   "mov    %[ds], %%gs\n\t"
+                   "movl   %[cs], 8(%%rsp)\n\t"
+                   "mov    %[rip], (%%rsp)\n\t"
+                   "lretq  %[stkoff]-16"
+                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
+                   : [cr3] "r" (idle_pg_table),
+                     [cr4] "r" (mmu_cr4_features),
+                     [cs] "ir" (__HYPERVISOR_CS),
+                     [ds] "r" (__HYPERVISOR_DS),
+                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
+                     "D" (&mbi)
+                   : "memory" );
+    for( ; ; ); /* not reached */
+}
+
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+static __init void copy_mapping(unsigned long mfn, unsigned long end,
+                                bool_t (*is_valid)(unsigned long smfn,
+                                                   unsigned long emfn))
+{
+    unsigned long next;
+
+    for ( ; mfn < end; mfn = next )
+    {
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
+        l3_pgentry_t *l3src, *l3dst;
+        unsigned long va = (unsigned long)mfn_to_virt(mfn);
+
+        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
+        if ( !is_valid(mfn, min(next, end)) )
+            continue;
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            l3dst = alloc_xen_pagetable();
+            BUG_ON(!l3dst);
+            clear_page(l3dst);
+            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
+                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
+        }
+        else
+            l3dst = l4e_to_l3e(l4e);
+        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
+        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
+    }
+}
+
+static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
+
+    return !(smfn & pfn_hole_mask) &&
+           find_next_bit(pdx_group_valid, sz,
+                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
+}
+
+static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    return 1;
+}
+#endif
+
+#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
+                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
+
+void __init efi_init_memory(void)
+{
+    unsigned int i;
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+    struct rt_extra {
+        struct rt_extra *next;
+        unsigned long smfn, emfn;
+        unsigned int prot;
+    } *extra, *extra_head = NULL;
+#endif
+
+    printk(XENLOG_INFO "EFI memory map:\n");
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        unsigned long smfn, emfn;
+        unsigned int prot = PAGE_HYPERVISOR;
+
+        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
+                           " type=%u attr=%016" PRIx64 "\n",
+               desc->PhysicalStart, desc->PhysicalStart + len - 1,
+               desc->Type, desc->Attribute);
+
+        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
+            continue;
+
+        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
+
+        smfn = PFN_DOWN(desc->PhysicalStart);
+        emfn = PFN_UP(desc->PhysicalStart + len);
+
+        if ( desc->Attribute & EFI_MEMORY_WB )
+            /* nothing */;
+        else if ( desc->Attribute & EFI_MEMORY_WT )
+            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & EFI_MEMORY_WC )
+            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
+            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
+        else
+        {
+            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+            continue;
+        }
+
+        if ( desc->Attribute & EFI_MEMORY_WP )
+            prot &= _PAGE_RW;
+        if ( desc->Attribute & EFI_MEMORY_XP )
+            prot |= _PAGE_NX_BIT;
+
+        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
+             !(smfn & pfn_hole_mask) &&
+             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
+        {
+            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
+                prot &= ~_PAGE_GLOBAL;
+            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
+                                  smfn, emfn - smfn, prot) == 0 )
+                desc->VirtualStart =
+                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
+            else
+                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
+                       smfn, emfn - 1);
+        }
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
+                  (extra = xmalloc(struct rt_extra)) != NULL )
+        {
+            extra->smfn = smfn;
+            extra->emfn = emfn;
+            extra->prot = prot & ~_PAGE_GLOBAL;
+            extra->next = extra_head;
+            extra_head = extra;
+            desc->VirtualStart = desc->PhysicalStart;
+        }
+#endif
+        else
+        {
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+            /* XXX allocate e.g. down from FIXADDR_START */
+#endif
+            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+        }
+    }
+
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
+                                 mdesc_ver, efi_memmap);
+#else
+    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
+    efi_l4_pgtable = alloc_xen_pagetable();
+    BUG_ON(!efi_l4_pgtable);
+    clear_page(efi_l4_pgtable);
+
+    copy_mapping(0, max_page, ram_range_valid);
+
+    /* Insert non-RAM runtime mappings inside the direct map. */
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+
+        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
+             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
+             desc->VirtualStart != desc->PhysicalStart )
+            copy_mapping(PFN_DOWN(desc->PhysicalStart),
+                         PFN_UP(desc->PhysicalStart +
+                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
+                         rt_range_valid);
+    }
+
+    /* Insert non-RAM runtime mappings outside of the direct map. */
+    while ( (extra = extra_head) != NULL )
+    {
+        unsigned long addr = extra->smfn << PAGE_SHIFT;
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
+        l3_pgentry_t *pl3e;
+        l2_pgentry_t *pl2e;
+        l1_pgentry_t *l1t;
+
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            pl3e = alloc_xen_pagetable();
+            BUG_ON(!pl3e);
+            clear_page(pl3e);
+            efi_l4_pgtable[l4_table_offset(addr)] =
+                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
+        }
+        else
+            pl3e = l4e_to_l3e(l4e);
+        pl3e += l3_table_offset(addr);
+        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
+        {
+            pl2e = alloc_xen_pagetable();
+            BUG_ON(!pl2e);
+            clear_page(pl2e);
+            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
+            pl2e = l3e_to_l2e(*pl3e);
+        }
+        pl2e += l2_table_offset(addr);
+        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
+        {
+            l1t = alloc_xen_pagetable();
+            BUG_ON(!l1t);
+            clear_page(l1t);
+            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
+            l1t = l2e_to_l1e(*pl2e);
+        }
+        for ( i = l1_table_offset(addr);
+              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
+              ++i, ++extra->smfn )
+            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
+
+        if ( extra->smfn == extra->emfn )
+        {
+            extra_head = extra->next;
+            xfree(extra);
+        }
+    }
+
+    /* Insert Xen mappings. */
+    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
+          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
+        efi_l4_pgtable[i] = idle_pg_table[i];
+#endif
+}
diff --git a/xen/arch/x86/efi/efi.h b/xen/include/asm-x86/efi.h
similarity index 100%
rename from xen/arch/x86/efi/efi.h
rename to xen/include/asm-x86/efi.h
-- 
2.1.0.rc1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 10 00:52:55 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Sep 2014 00:52:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRW93-0006Cc-Hi; Wed, 10 Sep 2014 00:52:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <roy.franz@linaro.org>) id 1XRW91-0006BQ-Cb
	for xen-devel@lists.xen.org; Wed, 10 Sep 2014 00:52:23 +0000
Received: from [193.109.254.147:34725] by server-6.bemta-14.messagelabs.com id
	83/40-01867-6C0AF045; Wed, 10 Sep 2014 00:52:22 +0000
X-Env-Sender: roy.franz@linaro.org
X-Msg-Ref: server-16.tower-27.messagelabs.com!1410310336!9120493!1
X-Originating-IP: [209.85.223.179]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27146 invoked from network); 10 Sep 2014 00:52:17 -0000
Received: from mail-ie0-f179.google.com (HELO mail-ie0-f179.google.com)
	(209.85.223.179)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	10 Sep 2014 00:52:17 -0000
Received: by mail-ie0-f179.google.com with SMTP id rl12so5164677iec.38
	for <xen-devel@lists.xen.org>; Tue, 09 Sep 2014 17:52:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
	:references;
	bh=YlLOrtPRLJZ/WhN7PW+v/n+giAs+3leCCrojIR81sRM=;
	b=EG4TNdbDEw5eCr/gNBGdF6K2iipyHLe5dTI9yEiJf8wKly/jSg3I9rFUpzHS6lEiqT
	HG+CZd1P8Qdh9VVLdL+4YnhNI7Y88JzihbSrHMgoLYCtCbn9Prd8Xed5gbrKuLv5rmBT
	vmf1Gj4SXMqejn9JTGRdcoomztvYorjkopdA8fWCnYHuZZ7Q7Q0+vc88O7KGITBBGzmB
	8YciNL8fw6tvobc5nMREEYSpzrJFhiZxqCBW10OPKvhZYbbHSkmgLTBD5KcfNJ2FYodg
	f9NvblxdfxMzJzJaZuD52tK7C32pCMCkuNt75dUTqCMsirn+u0oHdOGfiDgGjQzAMEnO
	YBUQ==
X-Gm-Message-State: ALoCoQmngbfTlmknOGAbE04lWuMbE0qz87+QU1mXv9vdBoy9NXDGB2u9N2s+XSrdsORyf7WFZrbh
X-Received: by 10.42.48.197 with SMTP id t5mr43377582icf.11.1410310336065;
	Tue, 09 Sep 2014 17:52:16 -0700 (PDT)
Received: from rfranz-v430.caveonetworks.com (64.2.3.195.ptr.us.xo.net.
	[64.2.3.195])
	by mx.google.com with ESMTPSA id dx10sm654825igb.4.2014.09.09.17.52.14
	for <multiple recipients>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 09 Sep 2014 17:52:15 -0700 (PDT)
From: Roy Franz <roy.franz@linaro.org>
To: xen-devel@lists.xen.org, ian.campbell@citrix.com,
	stefano.stabellini@citrix.com, tim@xen.org, jbeulich@suse.com, keir@xen.org
Date: Tue,  9 Sep 2014 17:51:51 -0700
Message-Id: <1410310325-4509-2-git-send-email-roy.franz@linaro.org>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1410310325-4509-1-git-send-email-roy.franz@linaro.org>
References: <1410310325-4509-1-git-send-email-roy.franz@linaro.org>
Cc: Roy Franz <roy.franz@linaro.org>, fu.wei@linaro.org
Subject: [Xen-devel] [PATCH V4 01/15] move x86 EFI boot code to common/efi
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

This moves the boot.c,the file that implements the EFI entry point
to efi/common, and builds with both EFI/non-EFI toolchains.  No code
changes, just file movement and make updates.
Note that since both the EFI and non-EFI versions are built at the
same time, the EFI boot code cannot be included in the common/build_in.o.
In the ARM case, it will always be built in, so the normal common
build infrastructure can be used.
The EFI runtime code is left alone as this patch series just
implements the boot code.

Signed-off-by: Roy Franz <roy.franz@linaro.org>
---
 xen/arch/x86/efi/boot.c                     | 1724 +--------------------------
 xen/arch/x86/efi/runtime.c                  |    2 +-
 xen/common/efi/boot.c                       | 1723 ++++++++++++++++++++++++++
 xen/{arch/x86/efi => include/asm-x86}/efi.h |    0
 4 files changed, 1725 insertions(+), 1724 deletions(-)
 mode change 100644 => 120000 xen/arch/x86/efi/boot.c
 create mode 100644 xen/common/efi/boot.c
 rename xen/{arch/x86/efi => include/asm-x86}/efi.h (100%)

diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
deleted file mode 100644
index 3bdc158..0000000
--- a/xen/arch/x86/efi/boot.c
+++ /dev/null
@@ -1,1723 +0,0 @@
-#include "efi.h"
-#include <efi/efiprot.h>
-#include <efi/efipciio.h>
-#include <public/xen.h>
-#include <xen/compile.h>
-#include <xen/ctype.h>
-#include <xen/dmi.h>
-#include <xen/init.h>
-#include <xen/keyhandler.h>
-#include <xen/lib.h>
-#include <xen/mm.h>
-#include <xen/multiboot.h>
-#include <xen/pci_regs.h>
-#include <xen/pfn.h>
-#if EFI_PAGE_SIZE != PAGE_SIZE
-# error Cannot use xen/pfn.h here!
-#endif
-#include <xen/string.h>
-#include <xen/stringify.h>
-#include <xen/vga.h>
-#include <asm/e820.h>
-#include <asm/edd.h>
-#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
-#include <asm/fixmap.h>
-#undef __ASSEMBLY__
-#include <asm/msr.h>
-#include <asm/processor.h>
-
-/* Using SetVirtualAddressMap() is incompatible with kexec: */
-#undef USE_SET_VIRTUAL_ADDRESS_MAP
-
-#define SHIM_LOCK_PROTOCOL_GUID \
-  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
-
-typedef EFI_STATUS
-(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
-    IN VOID *Buffer,
-    IN UINT32 Size);
-
-typedef struct {
-    EFI_SHIM_LOCK_VERIFY Verify;
-} EFI_SHIM_LOCK_PROTOCOL;
-
-extern char start[];
-extern u32 cpuid_ext_features;
-
-union string {
-    CHAR16 *w;
-    char *s;
-    const char *cs;
-};
-
-struct file {
-    UINTN size;
-    union {
-        EFI_PHYSICAL_ADDRESS addr;
-        void *ptr;
-    };
-};
-
-static EFI_BOOT_SERVICES *__initdata efi_bs;
-static EFI_HANDLE __initdata efi_ih;
-
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
-static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
-
-static UINT32 __initdata mdesc_ver;
-
-static struct file __initdata cfg;
-static struct file __initdata kernel;
-static struct file __initdata ramdisk;
-static struct file __initdata ucode;
-static struct file __initdata xsm;
-
-static multiboot_info_t __initdata mbi = {
-    .flags = MBI_MODULES | MBI_LOADERNAME
-};
-static module_t __initdata mb_modules[3];
-
-static CHAR16 __initdata newline[] = L"\r\n";
-
-#define PrintStr(s) StdOut->OutputString(StdOut, s)
-#define PrintErr(s) StdErr->OutputString(StdErr, s)
-
-static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
-{
-    if ( Val >= 10 )
-        Buffer = FormatDec(Val / 10, Buffer);
-    *Buffer = (CHAR16)(L'0' + Val % 10);
-    return Buffer + 1;
-}
-
-static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
-{
-    if ( Width > 1 || Val >= 0x10 )
-        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
-    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
-    return Buffer + 1;
-}
-
-static void __init DisplayUint(UINT64 Val, INTN Width)
-{
-    CHAR16 PrintString[32], *end;
-
-    if (Width < 0)
-        end = FormatDec(Val, PrintString);
-    else
-    {
-        PrintStr(L"0x");
-        end = FormatHex(Val, Width, PrintString);
-    }
-    *end = 0;
-    PrintStr(PrintString);
-}
-
-static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
-{
-    CHAR16 *r = d;
-
-    while ( (*d++ = *s++) != 0 )
-        ;
-    return r;
-}
-
-static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
-{
-    while ( *s1 && *s1 == *s2 )
-    {
-        ++s1;
-        ++s2;
-    }
-    return *s1 - *s2;
-}
-
-static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
-{
-    while ( n && *s1 && *s1 == *s2 )
-    {
-        --n;
-        ++s1;
-        ++s2;
-    }
-    return n ? *s1 - *s2 : 0;
-}
-
-static CHAR16 *__init s2w(union string *str)
-{
-    const char *s = str->s;
-    CHAR16 *w;
-    void *ptr;
-
-    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
-                              &ptr) != EFI_SUCCESS )
-        return NULL;
-
-    w = str->w = ptr;
-    do {
-        *w = *s++;
-    } while ( *w++ );
-
-    return str->w;
-}
-
-static char *__init w2s(const union string *str)
-{
-    const CHAR16 *w = str->w;
-    char *s = str->s;
-
-    do {
-        if ( *w > 0x007f )
-            return NULL;
-        *s = *w++;
-    } while ( *s++ );
-
-    return str->s;
-}
-
-static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
-{
-    return guid1->Data1 == guid2->Data1 &&
-           guid1->Data2 == guid2->Data2 &&
-           guid1->Data3 == guid2->Data3 &&
-           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
-}
-
-static void __init noreturn blexit(const CHAR16 *str)
-{
-    if ( str )
-        PrintStr((CHAR16 *)str);
-    PrintStr(newline);
-
-    if ( cfg.addr )
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    if ( kernel.addr )
-        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
-    if ( ramdisk.addr )
-        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
-    if ( ucode.addr )
-        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
-    if ( xsm.addr )
-        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
-
-    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
-    unreachable(); /* not reached */
-}
-
-/* generic routine for printing error messages */
-static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
-{
-    StdOut = StdErr;
-    PrintErr((CHAR16 *)mesg);
-    PrintErr(L": ");
-
-    switch (ErrCode)
-    {
-    case EFI_NOT_FOUND:
-        mesg = L"Not found";
-        break;
-    case EFI_NO_MEDIA:
-        mesg = L"The device has no media";
-        break;
-    case EFI_MEDIA_CHANGED:
-        mesg = L"Media changed";
-        break;
-    case EFI_DEVICE_ERROR:
-        mesg = L"Device error";
-        break;
-    case EFI_VOLUME_CORRUPTED:
-        mesg = L"Volume corrupted";
-        break;
-    case EFI_ACCESS_DENIED:
-        mesg = L"Access denied";
-        break;
-    case EFI_OUT_OF_RESOURCES:
-        mesg = L"Out of resources";
-        break;
-    case EFI_VOLUME_FULL:
-        mesg = L"Volume is full";
-        break;
-    case EFI_SECURITY_VIOLATION:
-        mesg = L"Security violation";
-        break;
-    case EFI_CRC_ERROR:
-        mesg = L"CRC error";
-        break;
-    case EFI_COMPROMISED_DATA:
-        mesg = L"Compromised data";
-        break;
-    default:
-        PrintErr(L"ErrCode: ");
-        DisplayUint(ErrCode, 0);
-        mesg = NULL;
-        break;
-    }
-    blexit(mesg);
-}
-
-static void __init place_string(u32 *addr, const char *s)
-{
-    static char *__initdata alloc = start;
-
-    if ( s && *s )
-    {
-        size_t len1 = strlen(s) + 1;
-        const char *old = (char *)(long)*addr;
-        size_t len2 = *addr ? strlen(old) + 1 : 0;
-
-        alloc -= len1 + len2;
-        /*
-         * Insert new string before already existing one. This is needed
-         * for options passed on the command line to override options from
-         * the configuration file.
-         */
-        memcpy(alloc, s, len1);
-        if ( *addr )
-        {
-            alloc[len1 - 1] = ' ';
-            memcpy(alloc + len1, old, len2);
-        }
-    }
-    *addr = (long)alloc;
-}
-
-static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
-                                    CHAR16 *cmdline, UINTN cmdsize)
-{
-    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
-    bool_t prev_sep = TRUE;
-
-    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
-            cmdsize -= sizeof(*cmdline), ++cmdline )
-    {
-        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
-
-        if ( !prev_sep )
-        {
-            if ( cur_sep )
-                ++ptr;
-            else if ( argv )
-            {
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        else if ( !cur_sep )
-        {
-            if ( !argv )
-                ++argc;
-            else if ( prev && wstrcmp(prev, L"--") == 0 )
-            {
-                union string rest = { .w = cmdline };
-
-                --argv;
-                place_string(&mbi.cmdline, w2s(&rest));
-                break;
-            }
-            else
-            {
-                *argv++ = prev = ptr;
-                *ptr = *cmdline;
-                *++ptr = 0;
-            }
-        }
-        prev_sep = cur_sep;
-    }
-    if ( argv )
-        *argv = NULL;
-    return argc;
-}
-
-static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
-                                                CHAR16 **leaf)
-{
-    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
-    EFI_FILE_HANDLE dir_handle;
-    EFI_DEVICE_PATH *dp;
-    CHAR16 *pathend, *ptr;
-    EFI_STATUS ret;
-
-    do {
-        EFI_FILE_IO_INTERFACE *fio;
-
-        /* Get the file system interface. */
-        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
-                                     &fs_protocol, (void **)&fio);
-        if ( EFI_ERROR(ret) )
-            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
-                         ret);
-        ret = fio->OpenVolume(fio, &dir_handle);
-    } while ( ret == EFI_MEDIA_CHANGED );
-    if ( ret != EFI_SUCCESS )
-        PrintErrMesg(L"OpenVolume failure", ret);
-
-#define buffer ((CHAR16 *)keyhandler_scratch)
-#define BUFFERSIZE sizeof(keyhandler_scratch)
-    for ( dp = loaded_image->FilePath, *buffer = 0;
-          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
-          dp = (void *)dp + DevicePathNodeLength(dp) )
-    {
-        FILEPATH_DEVICE_PATH *fp;
-
-        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
-             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
-            blexit(L"Unsupported device path component");
-
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS )
-            {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-        fp = (void *)dp;
-        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
-                          sizeof(*dp) + sizeof(*buffer) )
-            blexit(L"Increase BUFFERSIZE");
-        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
-        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
-    }
-    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
-        if ( *ptr == L'\\' )
-            pathend = ptr;
-    if ( pathend )
-    {
-        *pathend = 0;
-        *leaf = pathend + 1;
-        if ( *buffer )
-        {
-            EFI_FILE_HANDLE new_handle;
-
-            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
-                                   EFI_FILE_MODE_READ, 0);
-            if ( ret != EFI_SUCCESS ) {
-                PrintErr(L"Open failed for ");
-                PrintErrMesg(buffer, ret);
-            }
-            dir_handle->Close(dir_handle);
-            dir_handle = new_handle;
-        }
-    }
-    else
-        *leaf = buffer;
-#undef BUFFERSIZE
-#undef buffer
-
-    return dir_handle;
-}
-
-static CHAR16 *__init point_tail(CHAR16 *fn)
-{
-    CHAR16 *tail = NULL;
-
-    for ( ; ; ++fn )
-        switch ( *fn )
-        {
-        case 0:
-            return tail;
-        case L'.':
-        case L'-':
-        case L'_':
-            tail = fn;
-            break;
-        }
-}
-
-static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
-                               struct file *file)
-{
-    EFI_FILE_HANDLE FileHandle = NULL;
-    UINT64 size;
-    EFI_STATUS ret;
-    CHAR16 *what = NULL;
-
-    if ( !name )
-        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
-    ret = dir_handle->Open(dir_handle, &FileHandle, name,
-                           EFI_FILE_MODE_READ, 0);
-    if ( file == &cfg && ret == EFI_NOT_FOUND )
-        return 0;
-    if ( EFI_ERROR(ret) )
-        what = L"Open";
-    else
-        ret = FileHandle->SetPosition(FileHandle, -1);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-        ret = FileHandle->GetPosition(FileHandle, &size);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Get size";
-    else
-        ret = FileHandle->SetPosition(FileHandle, 0);
-    if ( EFI_ERROR(ret) )
-        what = what ?: L"Seek";
-    else
-    {
-        file->addr = min(1UL << (32 + PAGE_SHIFT),
-                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
-        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                    PFN_UP(size), &file->addr);
-    }
-    if ( EFI_ERROR(ret) )
-    {
-        file->addr = 0;
-        what = what ?: L"Allocation";
-    }
-    else
-    {
-        if ( file != &cfg )
-        {
-            PrintStr(name);
-            PrintStr(L": ");
-            DisplayUint(file->addr, 2 * sizeof(file->addr));
-            PrintStr(L"-");
-            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
-            PrintStr(newline);
-            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
-            mb_modules[mbi.mods_count].mod_end = size;
-            ++mbi.mods_count;
-        }
-
-        file->size = size;
-        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
-        if ( !EFI_ERROR(ret) && file->size != size )
-            ret = EFI_ABORTED;
-        if ( EFI_ERROR(ret) )
-            what = L"Read";
-    }
-
-    if ( FileHandle )
-        FileHandle->Close(FileHandle);
-
-    if ( what )
-    {
-        PrintErr(what);
-        PrintErr(L" failed for ");
-        PrintErrMesg(name, ret);
-    }
-
-    return 1;
-}
-
-static void __init pre_parse(const struct file *cfg)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    bool_t start = 1, comment = 0;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        if ( iscntrl(*ptr) )
-        {
-            comment = 0;
-            start = 1;
-            *ptr = 0;
-        }
-        else if ( comment || (start && isspace(*ptr)) )
-            *ptr = 0;
-        else if ( *ptr == '#' || (start && *ptr == ';') )
-        {
-            comment = 1;
-            *ptr = 0;
-        }
-        else
-            start = 0;
-    }
-    if ( cfg->size && end[-1] )
-         PrintStr(L"No newline at end of config file,"
-                   " last line will be ignored.\r\n");
-}
-
-static char *__init get_value(const struct file *cfg, const char *section,
-                              const char *item)
-{
-    char *ptr = cfg->ptr, *end = ptr + cfg->size;
-    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
-    bool_t match = !slen;
-
-    for ( ; ptr < end; ++ptr )
-    {
-        switch ( *ptr )
-        {
-        case 0:
-            continue;
-        case '[':
-            if ( !slen )
-                break;
-            if ( match )
-                return NULL;
-            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
-            break;
-        default:
-            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
-                return ptr + ilen + 1;
-            break;
-        }
-        ptr += strlen(ptr);
-    }
-    return NULL;
-}
-
-static void __init split_value(char *s)
-{
-    while ( *s && isspace(*s) )
-        ++s;
-    place_string(&mb_modules[mbi.mods_count].string, s);
-    while ( *s && !isspace(*s) )
-        ++s;
-    *s = 0;
-}
-
-static void __init edd_put_string(u8 *dst, size_t n, const char *src)
-{
-    while ( n-- && *src )
-       *dst++ = *src++;
-    if ( *src )
-       PrintErrMesg(L"Internal error populating EDD info",
-                    EFI_BUFFER_TOO_SMALL);
-    while ( n-- )
-       *dst++ = ' ';
-}
-#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
-
-static void __init setup_efi_pci(void)
-{
-    EFI_STATUS status;
-    EFI_HANDLE *handles;
-    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
-    UINTN i, nr_pci, size = 0;
-    struct efi_pci_rom *last = NULL;
-
-    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-
-    nr_pci = size / sizeof(*handles);
-    for ( i = 0; i < nr_pci; ++i )
-    {
-        EFI_PCI_IO *pci = NULL;
-        u64 attributes;
-        struct efi_pci_rom *rom, *va;
-        UINTN segment, bus, device, function;
-
-        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
-        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
-            continue;
-
-        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
-                                 &attributes);
-        if ( EFI_ERROR(status) ||
-             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
-             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
-                       &function)) )
-            continue;
-
-        DisplayUint(segment, 4);
-        PrintStr(L":");
-        DisplayUint(bus, 2);
-        PrintStr(L":");
-        DisplayUint(device, 2);
-        PrintStr(L".");
-        DisplayUint(function, 1);
-        PrintStr(L": ROM: ");
-        DisplayUint(pci->RomSize, 0);
-        PrintStr(L" bytes at ");
-        DisplayUint((UINTN)pci->RomImage, 0);
-        PrintStr(newline);
-
-        size = pci->RomSize + sizeof(*rom);
-        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
-                                      (void **)&rom);
-        if ( EFI_ERROR(status) )
-            continue;
-
-        rom->next = NULL;
-        rom->size = pci->RomSize;
-
-        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
-                               &rom->vendor);
-        if ( !EFI_ERROR(status) )
-            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
-                                   &rom->devid);
-        if ( EFI_ERROR(status) )
-        {
-            efi_bs->FreePool(rom);
-            continue;
-        }
-
-        rom->segment = segment;
-        rom->bus = bus;
-        rom->devfn = (device << 3) | function;
-        memcpy(rom->data, pci->RomImage, pci->RomSize);
-
-        va = (void *)rom + DIRECTMAP_VIRT_START;
-        if ( last )
-            last->next = va;
-        else
-            efi_pci_roms = va;
-        last = rom;
-    }
-
-    efi_bs->FreePool(handles);
-}
-
-static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
-{
-   if ( bpp < 0 )
-       return bpp;
-   if ( !mask )
-       return -EINVAL;
-   for ( *pos = 0; !(mask & 1); ++*pos )
-       mask >>= 1;
-   for ( *sz = 0; mask & 1; ++sz)
-       mask >>= 1;
-   if ( mask )
-       return -EINVAL;
-   return max(*pos + *sz, bpp);
-}
-
-extern const intpte_t __page_tables_start[], __page_tables_end[];
-#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
-                           (intpte_t *)(v) < __page_tables_end)
-
-#define PE_BASE_RELOC_ABS      0
-#define PE_BASE_RELOC_HIGHLOW  3
-#define PE_BASE_RELOC_DIR64   10
-
-extern const struct pe_base_relocs {
-    u32 rva;
-    u32 size;
-    u16 entries[];
-} __base_relocs_start[], __base_relocs_end[];
-
-static void __init relocate_image(unsigned long delta)
-{
-    const struct pe_base_relocs *base_relocs;
-
-    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
-    {
-        unsigned int i, n;
-
-        n = (base_relocs->size - sizeof(*base_relocs)) /
-            sizeof(*base_relocs->entries);
-        for ( i = 0; i < n; ++i )
-        {
-            unsigned long addr = xen_phys_start + base_relocs->rva +
-                                 (base_relocs->entries[i] & 0xfff);
-
-            switch ( base_relocs->entries[i] >> 12 )
-            {
-            case PE_BASE_RELOC_ABS:
-                break;
-            case PE_BASE_RELOC_HIGHLOW:
-                if ( delta )
-                {
-                    *(u32 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(u32 *)addr += xen_phys_start;
-                }
-                break;
-            case PE_BASE_RELOC_DIR64:
-                if ( delta )
-                {
-                    *(u64 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(intpte_t *)addr += xen_phys_start;
-                }
-                break;
-            default:
-                blexit(L"Unsupported relocation type");
-            }
-        }
-        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
-    }
-}
-
-extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
-
-static void __init relocate_trampoline(unsigned long phys)
-{
-    const s32 *trampoline_ptr;
-
-    trampoline_phys = phys;
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
-}
-
-void EFIAPI __init noreturn
-efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
-{
-    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
-    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
-    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
-    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
-    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
-    EFI_LOADED_IMAGE *loaded_image;
-    EFI_STATUS status;
-    unsigned int i, argc;
-    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
-    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
-    EFI_HANDLE *handles = NULL;
-    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
-    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
-    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
-    EFI_FILE_HANDLE dir_handle;
-    union string section = { NULL }, name;
-    struct e820entry *e;
-    u64 efer;
-    bool_t base_video = 0;
-
-    efi_ih = ImageHandle;
-    efi_bs = SystemTable->BootServices;
-    efi_rs = SystemTable->RuntimeServices;
-    efi_ct = SystemTable->ConfigurationTable;
-    efi_num_ct = SystemTable->NumberOfTableEntries;
-    efi_version = SystemTable->Hdr.Revision;
-    efi_fw_vendor = SystemTable->FirmwareVendor;
-    efi_fw_revision = SystemTable->FirmwareRevision;
-
-    StdOut = SystemTable->ConOut;
-    StdErr = SystemTable->StdErr ?: StdOut;
-
-    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
-                                    (void **)&loaded_image);
-    if ( status != EFI_SUCCESS )
-        PrintErrMesg(L"No Loaded Image Protocol", status);
-
-    xen_phys_start = (UINTN)loaded_image->ImageBase;
-    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
-        blexit(L"Xen must be loaded below 4Gb.");
-    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
-        blexit(L"Xen must be loaded at a 2Mb boundary.");
-    trampoline_xen_phys_start = xen_phys_start;
-
-    /* Get the file system interface. */
-    dir_handle = get_parent_handle(loaded_image, &file_name);
-
-    argc = get_argv(0, NULL, loaded_image->LoadOptions,
-                    loaded_image->LoadOptionsSize);
-    if ( argc > 0 &&
-         efi_bs->AllocatePool(EfiLoaderData,
-                              (argc + 1) * sizeof(*argv) +
-                                  loaded_image->LoadOptionsSize,
-                              (void **)&argv) == EFI_SUCCESS )
-        get_argv(argc, argv, loaded_image->LoadOptions,
-                 loaded_image->LoadOptionsSize);
-    else
-        argc = 0;
-    for ( i = 1; i < argc; ++i )
-    {
-        CHAR16 *ptr = argv[i];
-
-        if ( !ptr )
-            break;
-        if ( *ptr == L'/' || *ptr == L'-' )
-        {
-            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
-                base_video = 1;
-            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
-                cfg_file_name = ptr + 5;
-            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
-                cfg_file_name = argv[++i];
-            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
-                      (ptr[1] == L'?' && !ptr[2]) )
-            {
-                PrintStr(L"Xen EFI Loader options:\r\n");
-                PrintStr(L"-basevideo   retain current video mode\r\n");
-                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
-                PrintStr(L"-help, -?    display this help\r\n");
-                blexit(NULL);
-            }
-            else
-            {
-                PrintStr(L"WARNING: Unknown command line option '");
-                PrintStr(ptr);
-                PrintStr(L"' ignored\r\n");
-            }
-        }
-        else
-            section.w = ptr;
-    }
-
-    if ( !base_video )
-    {
-        unsigned int best;
-
-        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
-              i < StdOut->Mode->MaxMode; ++i )
-        {
-            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
-                 cols * rows > size )
-            {
-                size = cols * rows;
-                best = i;
-            }
-        }
-        if ( best != StdOut->Mode->Mode )
-            StdOut->SetMode(StdOut, best);
-    }
-
-    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
-             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
-
-    relocate_image(0);
-
-    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
-                           &cols, &rows) == EFI_SUCCESS )
-    {
-        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
-        vga_console_info.u.text_mode_3.columns = cols;
-        vga_console_info.u.text_mode_3.rows = rows;
-        vga_console_info.u.text_mode_3.font_height = 16;
-    }
-
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
-        if ( EFI_ERROR(status) )
-            continue;
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            break;
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( EFI_ERROR(status) )
-        gop = NULL;
-
-    /* Read and parse the config file. */
-    if ( !cfg_file_name )
-    {
-        CHAR16 *tail;
-
-        while ( (tail = point_tail(file_name)) != NULL )
-        {
-            wstrcpy(tail, L".cfg");
-            if ( read_file(dir_handle, file_name, &cfg) )
-                break;
-            *tail = 0;
-        }
-        if ( !tail )
-            blexit(L"No configuration file found.");
-        PrintStr(L"Using configuration file '");
-        PrintStr(file_name);
-        PrintStr(L"'\r\n");
-    }
-    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
-        blexit(L"Configuration file not found.");
-    pre_parse(&cfg);
-
-    if ( section.w )
-        w2s(&section);
-    else
-        section.s = get_value(&cfg, "global", "default");
-
-    for ( ; ; )
-    {
-        name.s = get_value(&cfg, section.s, "kernel");
-        if ( name.s )
-            break;
-        name.s = get_value(&cfg, "global", "chain");
-        if ( !name.s )
-            break;
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-        cfg.addr = 0;
-        if ( !read_file(dir_handle, s2w(&name), &cfg) )
-        {
-            PrintStr(L"Chained configuration file '");
-            PrintStr(name.w);
-            efi_bs->FreePool(name.w);
-            blexit(L"'not found.");
-        }
-        pre_parse(&cfg);
-        efi_bs->FreePool(name.w);
-    }
-    if ( !name.s )
-        blexit(L"No Dom0 kernel image specified.");
-    split_value(name.s);
-    read_file(dir_handle, s2w(&name), &kernel);
-    efi_bs->FreePool(name.w);
-
-    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
-                    (void **)&shim_lock)) &&
-         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
-        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
-
-    name.s = get_value(&cfg, section.s, "ramdisk");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ramdisk);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "ucode");
-    if ( !name.s )
-        name.s = get_value(&cfg, "global", "ucode");
-    if ( name.s )
-    {
-        microcode_set_module(mbi.mods_count);
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &ucode);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "xsm");
-    if ( name.s )
-    {
-        split_value(name.s);
-        read_file(dir_handle, s2w(&name), &xsm);
-        efi_bs->FreePool(name.w);
-    }
-
-    name.s = get_value(&cfg, section.s, "options");
-    if ( name.s )
-        place_string(&mbi.cmdline, name.s);
-    /* Insert image name last, as it gets prefixed to the other options. */
-    if ( argc )
-    {
-        name.w = *argv;
-        w2s(&name);
-    }
-    else
-        name.s = "xen";
-    place_string(&mbi.cmdline, name.s);
-
-    cols = rows = depth = 0;
-    if ( !base_video )
-    {
-        name.cs = get_value(&cfg, section.s, "video");
-        if ( !name.cs )
-            name.cs = get_value(&cfg, "global", "video");
-        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
-        {
-            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs == 'x' )
-                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
-            if ( *name.cs )
-                cols = rows = depth = 0;
-        }
-    }
-
-    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-    cfg.addr = 0;
-
-    dir_handle->Close(dir_handle);
-
-    if ( gop && !base_video )
-    {
-        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
-        {
-            unsigned int bpp = 0;
-
-            status = gop->QueryMode(gop, i, &info_size, &mode_info);
-            if ( EFI_ERROR(status) )
-                continue;
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelBitMask:
-                bpp = hweight32(mode_info->PixelInformation.RedMask |
-                                mode_info->PixelInformation.GreenMask |
-                                mode_info->PixelInformation.BlueMask);
-                break;
-            case PixelRedGreenBlueReserved8BitPerColor:
-            case PixelBlueGreenRedReserved8BitPerColor:
-                bpp = 24;
-                break;
-            default:
-                continue;
-            }
-            if ( cols == mode_info->HorizontalResolution &&
-                 rows == mode_info->VerticalResolution &&
-                 (!depth || bpp == depth) )
-            {
-                gop_mode = i;
-                break;
-            }
-            if ( !cols && !rows &&
-                 mode_info->HorizontalResolution *
-                 mode_info->VerticalResolution > size )
-            {
-                size = mode_info->HorizontalResolution *
-                       mode_info->VerticalResolution;
-                gop_mode = i;
-            }
-        }
-    }
-
-    if ( mbi.cmdline )
-        mbi.flags |= MBI_CMDLINE;
-    /*
-     * These must not be initialized statically, since the value must
-     * not get relocated when processing base relocations below.
-     */
-    mbi.boot_loader_name = (long)"EFI";
-    mbi.mods_addr = (long)mb_modules;
-
-    place_string(&mbi.mem_upper, NULL);
-
-    /* Collect EDD info. */
-    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
-    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
-    size = 0;
-    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
-    if ( status == EFI_BUFFER_TOO_SMALL )
-        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
-    if ( !EFI_ERROR(status) )
-        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
-                                      handles);
-    if ( EFI_ERROR(status) )
-        size = 0;
-    for ( i = 0; i < size / sizeof(*handles); ++i )
-    {
-        EFI_BLOCK_IO *bio;
-        EFI_DEV_PATH_PTR devp;
-        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
-        struct edd_device_params *params = &info->edd_device_params;
-        enum { root, acpi, pci, ctrlr } state = root;
-
-        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
-        if ( EFI_ERROR(status) ||
-             bio->Media->RemovableMedia ||
-             bio->Media->LogicalPartition )
-            continue;
-        if ( boot_edd_info_nr < EDD_INFO_MAX )
-        {
-            info->device = 0x80 + boot_edd_info_nr; /* fake */
-            info->version = 0x11;
-            params->length = offsetof(struct edd_device_params, dpte_ptr);
-            params->number_of_sectors = bio->Media->LastBlock + 1;
-            params->bytes_per_sector = bio->Media->BlockSize;
-            params->dpte_ptr = ~0;
-        }
-        ++boot_edd_info_nr;
-        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
-                                        (void **)&devp);
-        if ( EFI_ERROR(status) )
-            continue;
-        for ( ; !IsDevicePathEnd(devp.DevPath);
-              devp.DevPath = NextDevicePathNode(devp.DevPath) )
-        {
-            switch ( DevicePathType(devp.DevPath) )
-            {
-                const u8 *p;
-
-            case ACPI_DEVICE_PATH:
-                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case ACPI_DP:
-                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
-                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
-                        break;
-                    params->interface_path.pci.bus = devp.Acpi->UID;
-                    state = acpi;
-                    break;
-                case EXPANDED_ACPI_DP:
-                    /* XXX */
-                    break;
-                }
-                break;
-            case HARDWARE_DEVICE_PATH:
-                if ( state != acpi ||
-                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
-                     boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = pci;
-                edd_put_string(params->host_bus_type, "PCI");
-                params->interface_path.pci.slot = devp.Pci->Device;
-                params->interface_path.pci.function = devp.Pci->Function;
-                break;
-            case MESSAGING_DEVICE_PATH:
-                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
-                    break;
-                state = ctrlr;
-                switch ( DevicePathSubType(devp.DevPath) )
-                {
-                case MSG_ATAPI_DP:
-                    edd_put_string(params->interface_type, "ATAPI");
-                    params->interface_path.pci.channel =
-                        devp.Atapi->PrimarySecondary;
-                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
-                    params->device_path.atapi.lun = devp.Atapi->Lun;
-                    break;
-                case MSG_SCSI_DP:
-                    edd_put_string(params->interface_type, "SCSI");
-                    params->device_path.scsi.id = devp.Scsi->Pun;
-                    params->device_path.scsi.lun = devp.Scsi->Lun;
-                    break;
-                case MSG_FIBRECHANNEL_DP:
-                    edd_put_string(params->interface_type, "FIBRE");
-                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
-                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
-                    break;
-                case MSG_1394_DP:
-                    edd_put_string(params->interface_type, "1394");
-                    params->device_path.i1394.eui = devp.F1394->Guid;
-                    break;
-                case MSG_USB_DP:
-                case MSG_USB_CLASS_DP:
-                    edd_put_string(params->interface_type, "USB");
-                    break;
-                case MSG_I2O_DP:
-                    edd_put_string(params->interface_type, "I2O");
-                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
-                    break;
-                default:
-                    continue;
-                }
-                info->version = 0x30;
-                params->length = sizeof(struct edd_device_params);
-                params->key = 0xbedd;
-                params->device_path_info_length =
-                    sizeof(struct edd_device_params) -
-                    offsetof(struct edd_device_params, key);
-                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
-                    params->checksum -= *p;
-                break;
-            case MEDIA_DEVICE_PATH:
-                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
-                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
-                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
-                {
-                    struct mbr_signature *sig = boot_mbr_signature +
-                                                boot_mbr_signature_nr;
-
-                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
-                    memcpy(&sig->signature, devp.HardDrive->Signature,
-                           sizeof(sig->signature));
-                    ++boot_mbr_signature_nr;
-                }
-                break;
-            }
-        }
-    }
-    if ( handles )
-        efi_bs->FreePool(handles);
-    if ( boot_edd_info_nr > EDD_INFO_MAX )
-        boot_edd_info_nr = EDD_INFO_MAX;
-
-    /* XXX Collect EDID info. */
-
-    if ( cpuid_eax(0x80000000) > 0x80000000 )
-    {
-        cpuid_ext_features = cpuid_edx(0x80000001);
-        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
-    }
-
-    /* Obtain basic table pointers. */
-    for ( i = 0; i < efi_num_ct; ++i )
-    {
-        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
-        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
-        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
-        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
-
-        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi20 = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
-	       efi.mps = (long)efi_ct[i].VendorTable;
-        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
-	       efi.smbios = (long)efi_ct[i].VendorTable;
-    }
-
-    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
-        dmi_efi_get_table((void *)(long)efi.smbios);
-
-    /* Collect PCI ROM contents. */
-    setup_efi_pci();
-
-    /* Get snapshot of variable store parameters. */
-    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
-             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
-                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
-                                       EFI_VARIABLE_RUNTIME_ACCESS,
-                                       &efi_boot_max_var_store_size,
-                                       &efi_boot_remain_var_store_size,
-                                       &efi_boot_max_var_size) :
-             EFI_INCOMPATIBLE_VERSION;
-    if ( EFI_ERROR(status) )
-    {
-        efi_boot_max_var_store_size = 0;
-        efi_boot_remain_var_store_size = 0;
-        efi_boot_max_var_size = status;
-        PrintStr(L"Warning: Could not query variable store: ");
-        DisplayUint(status, 0);
-        PrintStr(newline);
-    }
-
-    /* Allocate space for trampoline (in first Mb). */
-    cfg.addr = 0x100000;
-    cfg.size = trampoline_end - trampoline_start;
-    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
-                                   PFN_UP(cfg.size), &cfg.addr);
-    if ( status == EFI_SUCCESS )
-        relocate_trampoline(cfg.addr);
-    else
-    {
-        cfg.addr = 0;
-        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
-    }
-
-    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
-    for ( i = 0; i < 8; ++i )
-    {
-        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
-        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
-
-        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
-        slot &= L2_PAGETABLE_ENTRIES - 1;
-        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
-    }
-    /* Initialise L3 boot-map page directory entries. */
-    l3_bootmap[l3_table_offset(xen_phys_start)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
-        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
-
-    if ( gop )
-    {
-        int bpp = 0;
-
-        /* Set graphics mode. */
-        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
-            gop->SetMode(gop, gop_mode);
-
-        /* Get graphics and frame buffer info. */
-        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
-        if ( !EFI_ERROR(status) )
-            switch ( mode_info->PixelFormat )
-            {
-            case PixelRedGreenBlueReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 0;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 16;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBlueGreenRedReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 16;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 0;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
-                bpp = 32;
-                break;
-            case PixelBitMask:
-                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.red_pos,
-                                &vga_console_info.u.vesa_lfb.red_size);
-                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
-                                &vga_console_info.u.vesa_lfb.green_pos,
-                                &vga_console_info.u.vesa_lfb.green_size);
-                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
-                                &vga_console_info.u.vesa_lfb.blue_pos,
-                                &vga_console_info.u.vesa_lfb.blue_size);
-                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.rsvd_pos,
-                                &vga_console_info.u.vesa_lfb.rsvd_size);
-                if ( bpp > 0 )
-                    break;
-                /* fall through */
-            default:
-                PrintErr(L"Current graphics mode is unsupported!\r\n");
-                status = EFI_UNSUPPORTED;
-                break;
-            }
-        if ( !EFI_ERROR(status) )
-        {
-            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
-            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
-            vga_console_info.u.vesa_lfb.width =
-                mode_info->HorizontalResolution;
-            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
-            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
-            vga_console_info.u.vesa_lfb.bytes_per_line =
-                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
-            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
-            vga_console_info.u.vesa_lfb.lfb_size =
-                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
-        }
-    }
-
-    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
-                         &efi_mdesc_size, &mdesc_ver);
-    mbi.mem_upper -= efi_memmap_size;
-    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
-    if ( mbi.mem_upper < xen_phys_start )
-        blexit(L"Out of static memory");
-    efi_memmap = (void *)(long)mbi.mem_upper;
-    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
-                                  &efi_mdesc_size, &mdesc_ver);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot obtain memory map", status);
-
-    /* Populate E820 table and check trampoline area availability. */
-    e = e820map - 1;
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        u32 type;
-
-        switch ( desc->Type )
-        {
-        default:
-            type = E820_RESERVED;
-            break;
-        case EfiConventionalMemory:
-        case EfiBootServicesCode:
-        case EfiBootServicesData:
-            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
-                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
-                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
-            /* fall through */
-        case EfiLoaderCode:
-        case EfiLoaderData:
-            if ( desc->Attribute & EFI_MEMORY_WB )
-                type = E820_RAM;
-            else
-        case EfiUnusableMemory:
-                type = E820_UNUSABLE;
-            break;
-        case EfiACPIReclaimMemory:
-            type = E820_ACPI;
-            break;
-        case EfiACPIMemoryNVS:
-            type = E820_NVS;
-            break;
-        }
-        if ( e820nr && type == e->type &&
-             desc->PhysicalStart == e->addr + e->size )
-            e->size += len;
-        else if ( !len || e820nr >= E820MAX )
-            continue;
-        else
-        {
-            ++e;
-            e->addr = desc->PhysicalStart;
-            e->size = len;
-            e->type = type;
-            ++e820nr;
-        }
-    }
-    if ( !trampoline_phys )
-    {
-        if ( !cfg.addr )
-            blexit(L"No memory for trampoline");
-        relocate_trampoline(cfg.addr);
-    }
-
-    status = efi_bs->ExitBootServices(ImageHandle, map_key);
-    if ( EFI_ERROR(status) )
-        PrintErrMesg(L"Cannot exit boot services", status);
-
-    /* Adjust pointers into EFI. */
-    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
-#endif
-    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
-    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
-
-    relocate_image(__XEN_VIRT_START - xen_phys_start);
-    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
-
-    /* Set system registers and transfer control. */
-    asm volatile("pushq $0\n\tpopfq");
-    rdmsrl(MSR_EFER, efer);
-    efer |= EFER_SCE;
-    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
-        efer |= EFER_NX;
-    wrmsrl(MSR_EFER, efer);
-    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
-              X86_CR0_AM | X86_CR0_PG);
-    asm volatile ( "mov    %[cr4], %%cr4\n\t"
-                   "mov    %[cr3], %%cr3\n\t"
-                   "movabs $__start_xen, %[rip]\n\t"
-                   "lgdt   gdt_descr(%%rip)\n\t"
-                   "mov    stack_start(%%rip), %%rsp\n\t"
-                   "mov    %[ds], %%ss\n\t"
-                   "mov    %[ds], %%ds\n\t"
-                   "mov    %[ds], %%es\n\t"
-                   "mov    %[ds], %%fs\n\t"
-                   "mov    %[ds], %%gs\n\t"
-                   "movl   %[cs], 8(%%rsp)\n\t"
-                   "mov    %[rip], (%%rsp)\n\t"
-                   "lretq  %[stkoff]-16"
-                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
-                   : [cr3] "r" (idle_pg_table),
-                     [cr4] "r" (mmu_cr4_features),
-                     [cs] "ir" (__HYPERVISOR_CS),
-                     [ds] "r" (__HYPERVISOR_DS),
-                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
-                     "D" (&mbi)
-                   : "memory" );
-    for( ; ; ); /* not reached */
-}
-
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-static __init void copy_mapping(unsigned long mfn, unsigned long end,
-                                bool_t (*is_valid)(unsigned long smfn,
-                                                   unsigned long emfn))
-{
-    unsigned long next;
-
-    for ( ; mfn < end; mfn = next )
-    {
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
-        l3_pgentry_t *l3src, *l3dst;
-        unsigned long va = (unsigned long)mfn_to_virt(mfn);
-
-        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
-        if ( !is_valid(mfn, min(next, end)) )
-            continue;
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            l3dst = alloc_xen_pagetable();
-            BUG_ON(!l3dst);
-            clear_page(l3dst);
-            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
-                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
-        }
-        else
-            l3dst = l4e_to_l3e(l4e);
-        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
-        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
-    }
-}
-
-static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
-
-    return !(smfn & pfn_hole_mask) &&
-           find_next_bit(pdx_group_valid, sz,
-                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
-}
-
-static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
-{
-    return 1;
-}
-#endif
-
-#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
-                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
-
-void __init efi_init_memory(void)
-{
-    unsigned int i;
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-    struct rt_extra {
-        struct rt_extra *next;
-        unsigned long smfn, emfn;
-        unsigned int prot;
-    } *extra, *extra_head = NULL;
-#endif
-
-    printk(XENLOG_INFO "EFI memory map:\n");
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
-        unsigned long smfn, emfn;
-        unsigned int prot = PAGE_HYPERVISOR;
-
-        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
-                           " type=%u attr=%016" PRIx64 "\n",
-               desc->PhysicalStart, desc->PhysicalStart + len - 1,
-               desc->Type, desc->Attribute);
-
-        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
-            continue;
-
-        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
-
-        smfn = PFN_DOWN(desc->PhysicalStart);
-        emfn = PFN_UP(desc->PhysicalStart + len);
-
-        if ( desc->Attribute & EFI_MEMORY_WB )
-            /* nothing */;
-        else if ( desc->Attribute & EFI_MEMORY_WT )
-            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & EFI_MEMORY_WC )
-            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
-        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
-            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
-        else
-        {
-            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-            continue;
-        }
-
-        if ( desc->Attribute & EFI_MEMORY_WP )
-            prot &= _PAGE_RW;
-        if ( desc->Attribute & EFI_MEMORY_XP )
-            prot |= _PAGE_NX_BIT;
-
-        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
-             !(smfn & pfn_hole_mask) &&
-             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
-        {
-            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
-                prot &= ~_PAGE_GLOBAL;
-            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
-                                  smfn, emfn - smfn, prot) == 0 )
-                desc->VirtualStart =
-                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
-            else
-                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
-                       smfn, emfn - 1);
-        }
-#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
-        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
-                  (extra = xmalloc(struct rt_extra)) != NULL )
-        {
-            extra->smfn = smfn;
-            extra->emfn = emfn;
-            extra->prot = prot & ~_PAGE_GLOBAL;
-            extra->next = extra_head;
-            extra_head = extra;
-            desc->VirtualStart = desc->PhysicalStart;
-        }
-#endif
-        else
-        {
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-            /* XXX allocate e.g. down from FIXADDR_START */
-#endif
-            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
-                   smfn, emfn - 1);
-        }
-    }
-
-#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
-                                 mdesc_ver, efi_memmap);
-#else
-    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
-    efi_l4_pgtable = alloc_xen_pagetable();
-    BUG_ON(!efi_l4_pgtable);
-    clear_page(efi_l4_pgtable);
-
-    copy_mapping(0, max_page, ram_range_valid);
-
-    /* Insert non-RAM runtime mappings inside the direct map. */
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
-    {
-        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
-
-        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
-             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
-             desc->VirtualStart != desc->PhysicalStart )
-            copy_mapping(PFN_DOWN(desc->PhysicalStart),
-                         PFN_UP(desc->PhysicalStart +
-                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
-                         rt_range_valid);
-    }
-
-    /* Insert non-RAM runtime mappings outside of the direct map. */
-    while ( (extra = extra_head) != NULL )
-    {
-        unsigned long addr = extra->smfn << PAGE_SHIFT;
-        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
-        l3_pgentry_t *pl3e;
-        l2_pgentry_t *pl2e;
-        l1_pgentry_t *l1t;
-
-        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-        {
-            pl3e = alloc_xen_pagetable();
-            BUG_ON(!pl3e);
-            clear_page(pl3e);
-            efi_l4_pgtable[l4_table_offset(addr)] =
-                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
-        }
-        else
-            pl3e = l4e_to_l3e(l4e);
-        pl3e += l3_table_offset(addr);
-        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
-        {
-            pl2e = alloc_xen_pagetable();
-            BUG_ON(!pl2e);
-            clear_page(pl2e);
-            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
-            pl2e = l3e_to_l2e(*pl3e);
-        }
-        pl2e += l2_table_offset(addr);
-        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
-        {
-            l1t = alloc_xen_pagetable();
-            BUG_ON(!l1t);
-            clear_page(l1t);
-            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
-        }
-        else
-        {
-            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
-            l1t = l2e_to_l1e(*pl2e);
-        }
-        for ( i = l1_table_offset(addr);
-              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
-              ++i, ++extra->smfn )
-            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
-
-        if ( extra->smfn == extra->emfn )
-        {
-            extra_head = extra->next;
-            xfree(extra);
-        }
-    }
-
-    /* Insert Xen mappings. */
-    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
-          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
-        efi_l4_pgtable[i] = idle_pg_table[i];
-#endif
-}
diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
new file mode 120000
index 0000000..04e09a6
--- /dev/null
+++ b/xen/arch/x86/efi/boot.c
@@ -0,0 +1 @@
+../../../common/efi/boot.c
\ No newline at end of file
diff --git a/xen/arch/x86/efi/runtime.c b/xen/arch/x86/efi/runtime.c
index 166852d..6788a1a 100644
--- a/xen/arch/x86/efi/runtime.c
+++ b/xen/arch/x86/efi/runtime.c
@@ -1,4 +1,4 @@
-#include "efi.h"
+#include <asm/efi.h>
 #include <xen/cache.h>
 #include <xen/errno.h>
 #include <xen/guest_access.h>
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
new file mode 100644
index 0000000..14e2f46
--- /dev/null
+++ b/xen/common/efi/boot.c
@@ -0,0 +1,1723 @@
+#include <asm/efi.h>
+#include <efi/efiprot.h>
+#include <efi/efipciio.h>
+#include <public/xen.h>
+#include <xen/compile.h>
+#include <xen/ctype.h>
+#include <xen/dmi.h>
+#include <xen/init.h>
+#include <xen/keyhandler.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/multiboot.h>
+#include <xen/pci_regs.h>
+#include <xen/pfn.h>
+#if EFI_PAGE_SIZE != PAGE_SIZE
+# error Cannot use xen/pfn.h here!
+#endif
+#include <xen/string.h>
+#include <xen/stringify.h>
+#include <xen/vga.h>
+#include <asm/e820.h>
+#include <asm/edd.h>
+#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
+#include <asm/fixmap.h>
+#undef __ASSEMBLY__
+#include <asm/msr.h>
+#include <asm/processor.h>
+
+/* Using SetVirtualAddressMap() is incompatible with kexec: */
+#undef USE_SET_VIRTUAL_ADDRESS_MAP
+
+#define SHIM_LOCK_PROTOCOL_GUID \
+  { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }
+
+typedef EFI_STATUS
+(/* _not_ EFIAPI */ *EFI_SHIM_LOCK_VERIFY) (
+    IN VOID *Buffer,
+    IN UINT32 Size);
+
+typedef struct {
+    EFI_SHIM_LOCK_VERIFY Verify;
+} EFI_SHIM_LOCK_PROTOCOL;
+
+extern char start[];
+extern u32 cpuid_ext_features;
+
+union string {
+    CHAR16 *w;
+    char *s;
+    const char *cs;
+};
+
+struct file {
+    UINTN size;
+    union {
+        EFI_PHYSICAL_ADDRESS addr;
+        void *ptr;
+    };
+};
+
+static EFI_BOOT_SERVICES *__initdata efi_bs;
+static EFI_HANDLE __initdata efi_ih;
+
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
+static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
+
+static UINT32 __initdata mdesc_ver;
+
+static struct file __initdata cfg;
+static struct file __initdata kernel;
+static struct file __initdata ramdisk;
+static struct file __initdata ucode;
+static struct file __initdata xsm;
+
+static multiboot_info_t __initdata mbi = {
+    .flags = MBI_MODULES | MBI_LOADERNAME
+};
+static module_t __initdata mb_modules[3];
+
+static CHAR16 __initdata newline[] = L"\r\n";
+
+#define PrintStr(s) StdOut->OutputString(StdOut, s)
+#define PrintErr(s) StdErr->OutputString(StdErr, s)
+
+static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
+{
+    if ( Val >= 10 )
+        Buffer = FormatDec(Val / 10, Buffer);
+    *Buffer = (CHAR16)(L'0' + Val % 10);
+    return Buffer + 1;
+}
+
+static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer)
+{
+    if ( Width > 1 || Val >= 0x10 )
+        Buffer = FormatHex(Val >> 4, Width ? Width - 1 : 0, Buffer);
+    *Buffer = (CHAR16)((Val &= 0xf) < 10 ? L'0' + Val : L'a' + Val - 10);
+    return Buffer + 1;
+}
+
+static void __init DisplayUint(UINT64 Val, INTN Width)
+{
+    CHAR16 PrintString[32], *end;
+
+    if (Width < 0)
+        end = FormatDec(Val, PrintString);
+    else
+    {
+        PrintStr(L"0x");
+        end = FormatHex(Val, Width, PrintString);
+    }
+    *end = 0;
+    PrintStr(PrintString);
+}
+
+static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s)
+{
+    CHAR16 *r = d;
+
+    while ( (*d++ = *s++) != 0 )
+        ;
+    return r;
+}
+
+static int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2)
+{
+    while ( *s1 && *s1 == *s2 )
+    {
+        ++s1;
+        ++s2;
+    }
+    return *s1 - *s2;
+}
+
+static int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n)
+{
+    while ( n && *s1 && *s1 == *s2 )
+    {
+        --n;
+        ++s1;
+        ++s2;
+    }
+    return n ? *s1 - *s2 : 0;
+}
+
+static CHAR16 *__init s2w(union string *str)
+{
+    const char *s = str->s;
+    CHAR16 *w;
+    void *ptr;
+
+    if ( efi_bs->AllocatePool(EfiLoaderData, (strlen(s) + 1) * sizeof(*w),
+                              &ptr) != EFI_SUCCESS )
+        return NULL;
+
+    w = str->w = ptr;
+    do {
+        *w = *s++;
+    } while ( *w++ );
+
+    return str->w;
+}
+
+static char *__init w2s(const union string *str)
+{
+    const CHAR16 *w = str->w;
+    char *s = str->s;
+
+    do {
+        if ( *w > 0x007f )
+            return NULL;
+        *s = *w++;
+    } while ( *s++ );
+
+    return str->s;
+}
+
+static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
+{
+    return guid1->Data1 == guid2->Data1 &&
+           guid1->Data2 == guid2->Data2 &&
+           guid1->Data3 == guid2->Data3 &&
+           !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
+}
+
+static void __init noreturn blexit(const CHAR16 *str)
+{
+    if ( str )
+        PrintStr((CHAR16 *)str);
+    PrintStr(newline);
+
+    if ( cfg.addr )
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    if ( kernel.addr )
+        efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
+    if ( ramdisk.addr )
+        efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
+    if ( ucode.addr )
+        efi_bs->FreePages(ucode.addr, PFN_UP(ucode.size));
+    if ( xsm.addr )
+        efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
+
+    efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
+    unreachable(); /* not reached */
+}
+
+/* generic routine for printing error messages */
+static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
+{
+    StdOut = StdErr;
+    PrintErr((CHAR16 *)mesg);
+    PrintErr(L": ");
+
+    switch (ErrCode)
+    {
+    case EFI_NOT_FOUND:
+        mesg = L"Not found";
+        break;
+    case EFI_NO_MEDIA:
+        mesg = L"The device has no media";
+        break;
+    case EFI_MEDIA_CHANGED:
+        mesg = L"Media changed";
+        break;
+    case EFI_DEVICE_ERROR:
+        mesg = L"Device error";
+        break;
+    case EFI_VOLUME_CORRUPTED:
+        mesg = L"Volume corrupted";
+        break;
+    case EFI_ACCESS_DENIED:
+        mesg = L"Access denied";
+        break;
+    case EFI_OUT_OF_RESOURCES:
+        mesg = L"Out of resources";
+        break;
+    case EFI_VOLUME_FULL:
+        mesg = L"Volume is full";
+        break;
+    case EFI_SECURITY_VIOLATION:
+        mesg = L"Security violation";
+        break;
+    case EFI_CRC_ERROR:
+        mesg = L"CRC error";
+        break;
+    case EFI_COMPROMISED_DATA:
+        mesg = L"Compromised data";
+        break;
+    default:
+        PrintErr(L"ErrCode: ");
+        DisplayUint(ErrCode, 0);
+        mesg = NULL;
+        break;
+    }
+    blexit(mesg);
+}
+
+static void __init place_string(u32 *addr, const char *s)
+{
+    static char *__initdata alloc = start;
+
+    if ( s && *s )
+    {
+        size_t len1 = strlen(s) + 1;
+        const char *old = (char *)(long)*addr;
+        size_t len2 = *addr ? strlen(old) + 1 : 0;
+
+        alloc -= len1 + len2;
+        /*
+         * Insert new string before already existing one. This is needed
+         * for options passed on the command line to override options from
+         * the configuration file.
+         */
+        memcpy(alloc, s, len1);
+        if ( *addr )
+        {
+            alloc[len1 - 1] = ' ';
+            memcpy(alloc + len1, old, len2);
+        }
+    }
+    *addr = (long)alloc;
+}
+
+static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
+                                    CHAR16 *cmdline, UINTN cmdsize)
+{
+    CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL;
+    bool_t prev_sep = TRUE;
+
+    for ( ; cmdsize > sizeof(*cmdline) && *cmdline;
+            cmdsize -= sizeof(*cmdline), ++cmdline )
+    {
+        bool_t cur_sep = *cmdline == L' ' || *cmdline == L'\t';
+
+        if ( !prev_sep )
+        {
+            if ( cur_sep )
+                ++ptr;
+            else if ( argv )
+            {
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        else if ( !cur_sep )
+        {
+            if ( !argv )
+                ++argc;
+            else if ( prev && wstrcmp(prev, L"--") == 0 )
+            {
+                union string rest = { .w = cmdline };
+
+                --argv;
+                place_string(&mbi.cmdline, w2s(&rest));
+                break;
+            }
+            else
+            {
+                *argv++ = prev = ptr;
+                *ptr = *cmdline;
+                *++ptr = 0;
+            }
+        }
+        prev_sep = cur_sep;
+    }
+    if ( argv )
+        *argv = NULL;
+    return argc;
+}
+
+static EFI_FILE_HANDLE __init get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
+                                                CHAR16 **leaf)
+{
+    static EFI_GUID __initdata fs_protocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
+    EFI_FILE_HANDLE dir_handle;
+    EFI_DEVICE_PATH *dp;
+    CHAR16 *pathend, *ptr;
+    EFI_STATUS ret;
+
+    do {
+        EFI_FILE_IO_INTERFACE *fio;
+
+        /* Get the file system interface. */
+        ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
+                                     &fs_protocol, (void **)&fio);
+        if ( EFI_ERROR(ret) )
+            PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
+                         ret);
+        ret = fio->OpenVolume(fio, &dir_handle);
+    } while ( ret == EFI_MEDIA_CHANGED );
+    if ( ret != EFI_SUCCESS )
+        PrintErrMesg(L"OpenVolume failure", ret);
+
+#define buffer ((CHAR16 *)keyhandler_scratch)
+#define BUFFERSIZE sizeof(keyhandler_scratch)
+    for ( dp = loaded_image->FilePath, *buffer = 0;
+          DevicePathType(dp) != END_DEVICE_PATH_TYPE;
+          dp = (void *)dp + DevicePathNodeLength(dp) )
+    {
+        FILEPATH_DEVICE_PATH *fp;
+
+        if ( DevicePathType(dp) != MEDIA_DEVICE_PATH ||
+             DevicePathSubType(dp) != MEDIA_FILEPATH_DP )
+            blexit(L"Unsupported device path component");
+
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS )
+            {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+        fp = (void *)dp;
+        if ( BUFFERSIZE < DevicePathNodeLength(dp) -
+                          sizeof(*dp) + sizeof(*buffer) )
+            blexit(L"Increase BUFFERSIZE");
+        memcpy(buffer, fp->PathName, DevicePathNodeLength(dp) - sizeof(*dp));
+        buffer[(DevicePathNodeLength(dp) - sizeof(*dp)) / sizeof(*buffer)] = 0;
+    }
+    for ( ptr = buffer, pathend = NULL; *ptr; ++ptr )
+        if ( *ptr == L'\\' )
+            pathend = ptr;
+    if ( pathend )
+    {
+        *pathend = 0;
+        *leaf = pathend + 1;
+        if ( *buffer )
+        {
+            EFI_FILE_HANDLE new_handle;
+
+            ret = dir_handle->Open(dir_handle, &new_handle, buffer,
+                                   EFI_FILE_MODE_READ, 0);
+            if ( ret != EFI_SUCCESS ) {
+                PrintErr(L"Open failed for ");
+                PrintErrMesg(buffer, ret);
+            }
+            dir_handle->Close(dir_handle);
+            dir_handle = new_handle;
+        }
+    }
+    else
+        *leaf = buffer;
+#undef BUFFERSIZE
+#undef buffer
+
+    return dir_handle;
+}
+
+static CHAR16 *__init point_tail(CHAR16 *fn)
+{
+    CHAR16 *tail = NULL;
+
+    for ( ; ; ++fn )
+        switch ( *fn )
+        {
+        case 0:
+            return tail;
+        case L'.':
+        case L'-':
+        case L'_':
+            tail = fn;
+            break;
+        }
+}
+
+static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
+                               struct file *file)
+{
+    EFI_FILE_HANDLE FileHandle = NULL;
+    UINT64 size;
+    EFI_STATUS ret;
+    CHAR16 *what = NULL;
+
+    if ( !name )
+        PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES);
+    ret = dir_handle->Open(dir_handle, &FileHandle, name,
+                           EFI_FILE_MODE_READ, 0);
+    if ( file == &cfg && ret == EFI_NOT_FOUND )
+        return 0;
+    if ( EFI_ERROR(ret) )
+        what = L"Open";
+    else
+        ret = FileHandle->SetPosition(FileHandle, -1);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+        ret = FileHandle->GetPosition(FileHandle, &size);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Get size";
+    else
+        ret = FileHandle->SetPosition(FileHandle, 0);
+    if ( EFI_ERROR(ret) )
+        what = what ?: L"Seek";
+    else
+    {
+        file->addr = min(1UL << (32 + PAGE_SHIFT),
+                         HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
+        ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                    PFN_UP(size), &file->addr);
+    }
+    if ( EFI_ERROR(ret) )
+    {
+        file->addr = 0;
+        what = what ?: L"Allocation";
+    }
+    else
+    {
+        if ( file != &cfg )
+        {
+            PrintStr(name);
+            PrintStr(L": ");
+            DisplayUint(file->addr, 2 * sizeof(file->addr));
+            PrintStr(L"-");
+            DisplayUint(file->addr + size, 2 * sizeof(file->addr));
+            PrintStr(newline);
+            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
+            mb_modules[mbi.mods_count].mod_end = size;
+            ++mbi.mods_count;
+        }
+
+        file->size = size;
+        ret = FileHandle->Read(FileHandle, &file->size, file->ptr);
+        if ( !EFI_ERROR(ret) && file->size != size )
+            ret = EFI_ABORTED;
+        if ( EFI_ERROR(ret) )
+            what = L"Read";
+    }
+
+    if ( FileHandle )
+        FileHandle->Close(FileHandle);
+
+    if ( what )
+    {
+        PrintErr(what);
+        PrintErr(L" failed for ");
+        PrintErrMesg(name, ret);
+    }
+
+    return 1;
+}
+
+static void __init pre_parse(const struct file *cfg)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    bool_t start = 1, comment = 0;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        if ( iscntrl(*ptr) )
+        {
+            comment = 0;
+            start = 1;
+            *ptr = 0;
+        }
+        else if ( comment || (start && isspace(*ptr)) )
+            *ptr = 0;
+        else if ( *ptr == '#' || (start && *ptr == ';') )
+        {
+            comment = 1;
+            *ptr = 0;
+        }
+        else
+            start = 0;
+    }
+    if ( cfg->size && end[-1] )
+         PrintStr(L"No newline at end of config file,"
+                   " last line will be ignored.\r\n");
+}
+
+static char *__init get_value(const struct file *cfg, const char *section,
+                              const char *item)
+{
+    char *ptr = cfg->ptr, *end = ptr + cfg->size;
+    size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
+    bool_t match = !slen;
+
+    for ( ; ptr < end; ++ptr )
+    {
+        switch ( *ptr )
+        {
+        case 0:
+            continue;
+        case '[':
+            if ( !slen )
+                break;
+            if ( match )
+                return NULL;
+            match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
+            break;
+        default:
+            if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
+                return ptr + ilen + 1;
+            break;
+        }
+        ptr += strlen(ptr);
+    }
+    return NULL;
+}
+
+static void __init split_value(char *s)
+{
+    while ( *s && isspace(*s) )
+        ++s;
+    place_string(&mb_modules[mbi.mods_count].string, s);
+    while ( *s && !isspace(*s) )
+        ++s;
+    *s = 0;
+}
+
+static void __init edd_put_string(u8 *dst, size_t n, const char *src)
+{
+    while ( n-- && *src )
+       *dst++ = *src++;
+    if ( *src )
+       PrintErrMesg(L"Internal error populating EDD info",
+                    EFI_BUFFER_TOO_SMALL);
+    while ( n-- )
+       *dst++ = ' ';
+}
+#define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)
+
+static void __init setup_efi_pci(void)
+{
+    EFI_STATUS status;
+    EFI_HANDLE *handles;
+    static EFI_GUID __initdata pci_guid = EFI_PCI_IO_PROTOCOL;
+    UINTN i, nr_pci, size = 0;
+    struct efi_pci_rom *last = NULL;
+
+    status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &pci_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+
+    nr_pci = size / sizeof(*handles);
+    for ( i = 0; i < nr_pci; ++i )
+    {
+        EFI_PCI_IO *pci = NULL;
+        u64 attributes;
+        struct efi_pci_rom *rom, *va;
+        UINTN segment, bus, device, function;
+
+        status = efi_bs->HandleProtocol(handles[i], &pci_guid, (void **)&pci);
+        if ( EFI_ERROR(status) || !pci || !pci->RomImage || !pci->RomSize )
+            continue;
+
+        status = pci->Attributes(pci, EfiPciIoAttributeOperationGet, 0,
+                                 &attributes);
+        if ( EFI_ERROR(status) ||
+             !(attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) ||
+             EFI_ERROR(pci->GetLocation(pci, &segment, &bus, &device,
+                       &function)) )
+            continue;
+
+        DisplayUint(segment, 4);
+        PrintStr(L":");
+        DisplayUint(bus, 2);
+        PrintStr(L":");
+        DisplayUint(device, 2);
+        PrintStr(L".");
+        DisplayUint(function, 1);
+        PrintStr(L": ROM: ");
+        DisplayUint(pci->RomSize, 0);
+        PrintStr(L" bytes at ");
+        DisplayUint((UINTN)pci->RomImage, 0);
+        PrintStr(newline);
+
+        size = pci->RomSize + sizeof(*rom);
+        status = efi_bs->AllocatePool(EfiRuntimeServicesData, size,
+                                      (void **)&rom);
+        if ( EFI_ERROR(status) )
+            continue;
+
+        rom->next = NULL;
+        rom->size = pci->RomSize;
+
+        status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_VENDOR_ID, 1,
+                               &rom->vendor);
+        if ( !EFI_ERROR(status) )
+            status = pci->Pci.Read(pci, EfiPciIoWidthUint16, PCI_DEVICE_ID, 1,
+                                   &rom->devid);
+        if ( EFI_ERROR(status) )
+        {
+            efi_bs->FreePool(rom);
+            continue;
+        }
+
+        rom->segment = segment;
+        rom->bus = bus;
+        rom->devfn = (device << 3) | function;
+        memcpy(rom->data, pci->RomImage, pci->RomSize);
+
+        va = (void *)rom + DIRECTMAP_VIRT_START;
+        if ( last )
+            last->next = va;
+        else
+            efi_pci_roms = va;
+        last = rom;
+    }
+
+    efi_bs->FreePool(handles);
+}
+
+static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz)
+{
+   if ( bpp < 0 )
+       return bpp;
+   if ( !mask )
+       return -EINVAL;
+   for ( *pos = 0; !(mask & 1); ++*pos )
+       mask >>= 1;
+   for ( *sz = 0; mask & 1; ++sz)
+       mask >>= 1;
+   if ( mask )
+       return -EINVAL;
+   return max(*pos + *sz, bpp);
+}
+
+extern const intpte_t __page_tables_start[], __page_tables_end[];
+#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \
+                           (intpte_t *)(v) < __page_tables_end)
+
+#define PE_BASE_RELOC_ABS      0
+#define PE_BASE_RELOC_HIGHLOW  3
+#define PE_BASE_RELOC_DIR64   10
+
+extern const struct pe_base_relocs {
+    u32 rva;
+    u32 size;
+    u16 entries[];
+} __base_relocs_start[], __base_relocs_end[];
+
+static void __init relocate_image(unsigned long delta)
+{
+    const struct pe_base_relocs *base_relocs;
+
+    for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; )
+    {
+        unsigned int i, n;
+
+        n = (base_relocs->size - sizeof(*base_relocs)) /
+            sizeof(*base_relocs->entries);
+        for ( i = 0; i < n; ++i )
+        {
+            unsigned long addr = xen_phys_start + base_relocs->rva +
+                                 (base_relocs->entries[i] & 0xfff);
+
+            switch ( base_relocs->entries[i] >> 12 )
+            {
+            case PE_BASE_RELOC_ABS:
+                break;
+            case PE_BASE_RELOC_HIGHLOW:
+                if ( delta )
+                {
+                    *(u32 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(u32 *)addr += xen_phys_start;
+                }
+                break;
+            case PE_BASE_RELOC_DIR64:
+                if ( delta )
+                {
+                    *(u64 *)addr += delta;
+                    if ( in_page_tables(addr) )
+                        *(intpte_t *)addr += xen_phys_start;
+                }
+                break;
+            default:
+                blexit(L"Unsupported relocation type");
+            }
+        }
+        base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
+    }
+}
+
+extern const s32 __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const s32 __trampoline_seg_start[], __trampoline_seg_stop[];
+
+static void __init relocate_trampoline(unsigned long phys)
+{
+    const s32 *trampoline_ptr;
+
+    trampoline_phys = phys;
+    /* Apply relocations to trampoline. */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
+
+void EFIAPI __init noreturn
+efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
+{
+    static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL;
+    static EFI_GUID __initdata gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
+    static EFI_GUID __initdata bio_guid = BLOCK_IO_PROTOCOL;
+    static EFI_GUID __initdata devp_guid = DEVICE_PATH_PROTOCOL;
+    static EFI_GUID __initdata shim_lock_guid = SHIM_LOCK_PROTOCOL_GUID;
+    EFI_LOADED_IMAGE *loaded_image;
+    EFI_STATUS status;
+    unsigned int i, argc;
+    CHAR16 **argv, *file_name, *cfg_file_name = NULL;
+    UINTN cols, rows, depth, size, map_key, info_size, gop_mode = ~0;
+    EFI_HANDLE *handles = NULL;
+    EFI_SHIM_LOCK_PROTOCOL *shim_lock;
+    EFI_GRAPHICS_OUTPUT_PROTOCOL *gop = NULL;
+    EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info;
+    EFI_FILE_HANDLE dir_handle;
+    union string section = { NULL }, name;
+    struct e820entry *e;
+    u64 efer;
+    bool_t base_video = 0;
+
+    efi_ih = ImageHandle;
+    efi_bs = SystemTable->BootServices;
+    efi_rs = SystemTable->RuntimeServices;
+    efi_ct = SystemTable->ConfigurationTable;
+    efi_num_ct = SystemTable->NumberOfTableEntries;
+    efi_version = SystemTable->Hdr.Revision;
+    efi_fw_vendor = SystemTable->FirmwareVendor;
+    efi_fw_revision = SystemTable->FirmwareRevision;
+
+    StdOut = SystemTable->ConOut;
+    StdErr = SystemTable->StdErr ?: StdOut;
+
+    status = efi_bs->HandleProtocol(ImageHandle, &loaded_image_guid,
+                                    (void **)&loaded_image);
+    if ( status != EFI_SUCCESS )
+        PrintErrMesg(L"No Loaded Image Protocol", status);
+
+    xen_phys_start = (UINTN)loaded_image->ImageBase;
+    if ( (xen_phys_start + loaded_image->ImageSize - 1) >> 32 )
+        blexit(L"Xen must be loaded below 4Gb.");
+    if ( xen_phys_start & ((1 << L2_PAGETABLE_SHIFT) - 1) )
+        blexit(L"Xen must be loaded at a 2Mb boundary.");
+    trampoline_xen_phys_start = xen_phys_start;
+
+    /* Get the file system interface. */
+    dir_handle = get_parent_handle(loaded_image, &file_name);
+
+    argc = get_argv(0, NULL, loaded_image->LoadOptions,
+                    loaded_image->LoadOptionsSize);
+    if ( argc > 0 &&
+         efi_bs->AllocatePool(EfiLoaderData,
+                              (argc + 1) * sizeof(*argv) +
+                                  loaded_image->LoadOptionsSize,
+                              (void **)&argv) == EFI_SUCCESS )
+        get_argv(argc, argv, loaded_image->LoadOptions,
+                 loaded_image->LoadOptionsSize);
+    else
+        argc = 0;
+    for ( i = 1; i < argc; ++i )
+    {
+        CHAR16 *ptr = argv[i];
+
+        if ( !ptr )
+            break;
+        if ( *ptr == L'/' || *ptr == L'-' )
+        {
+            if ( wstrcmp(ptr + 1, L"basevideo") == 0 )
+                base_video = 1;
+            else if ( wstrncmp(ptr + 1, L"cfg=", 4) == 0 )
+                cfg_file_name = ptr + 5;
+            else if ( i + 1 < argc && wstrcmp(ptr + 1, L"cfg") == 0 )
+                cfg_file_name = argv[++i];
+            else if ( wstrcmp(ptr + 1, L"help") == 0 ||
+                      (ptr[1] == L'?' && !ptr[2]) )
+            {
+                PrintStr(L"Xen EFI Loader options:\r\n");
+                PrintStr(L"-basevideo   retain current video mode\r\n");
+                PrintStr(L"-cfg=<file>  specify configuration file\r\n");
+                PrintStr(L"-help, -?    display this help\r\n");
+                blexit(NULL);
+            }
+            else
+            {
+                PrintStr(L"WARNING: Unknown command line option '");
+                PrintStr(ptr);
+                PrintStr(L"' ignored\r\n");
+            }
+        }
+        else
+            section.w = ptr;
+    }
+
+    if ( !base_video )
+    {
+        unsigned int best;
+
+        for ( i = 0, size = 0, best = StdOut->Mode->Mode;
+              i < StdOut->Mode->MaxMode; ++i )
+        {
+            if ( StdOut->QueryMode(StdOut, i, &cols, &rows) == EFI_SUCCESS &&
+                 cols * rows > size )
+            {
+                size = cols * rows;
+                best = i;
+            }
+        }
+        if ( best != StdOut->Mode->Mode )
+            StdOut->SetMode(StdOut, best);
+    }
+
+    PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSION)
+             XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n");
+
+    relocate_image(0);
+
+    if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
+                           &cols, &rows) == EFI_SUCCESS )
+    {
+        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
+        vga_console_info.u.text_mode_3.columns = cols;
+        vga_console_info.u.text_mode_3.rows = rows;
+        vga_console_info.u.text_mode_3.font_height = 16;
+    }
+
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &gop_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        status = efi_bs->HandleProtocol(handles[i], &gop_guid, (void **)&gop);
+        if ( EFI_ERROR(status) )
+            continue;
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            break;
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( EFI_ERROR(status) )
+        gop = NULL;
+
+    /* Read and parse the config file. */
+    if ( !cfg_file_name )
+    {
+        CHAR16 *tail;
+
+        while ( (tail = point_tail(file_name)) != NULL )
+        {
+            wstrcpy(tail, L".cfg");
+            if ( read_file(dir_handle, file_name, &cfg) )
+                break;
+            *tail = 0;
+        }
+        if ( !tail )
+            blexit(L"No configuration file found.");
+        PrintStr(L"Using configuration file '");
+        PrintStr(file_name);
+        PrintStr(L"'\r\n");
+    }
+    else if ( !read_file(dir_handle, cfg_file_name, &cfg) )
+        blexit(L"Configuration file not found.");
+    pre_parse(&cfg);
+
+    if ( section.w )
+        w2s(&section);
+    else
+        section.s = get_value(&cfg, "global", "default");
+
+    for ( ; ; )
+    {
+        name.s = get_value(&cfg, section.s, "kernel");
+        if ( name.s )
+            break;
+        name.s = get_value(&cfg, "global", "chain");
+        if ( !name.s )
+            break;
+        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+        cfg.addr = 0;
+        if ( !read_file(dir_handle, s2w(&name), &cfg) )
+        {
+            PrintStr(L"Chained configuration file '");
+            PrintStr(name.w);
+            efi_bs->FreePool(name.w);
+            blexit(L"'not found.");
+        }
+        pre_parse(&cfg);
+        efi_bs->FreePool(name.w);
+    }
+    if ( !name.s )
+        blexit(L"No Dom0 kernel image specified.");
+    split_value(name.s);
+    read_file(dir_handle, s2w(&name), &kernel);
+    efi_bs->FreePool(name.w);
+
+    if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
+                    (void **)&shim_lock)) &&
+         (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
+        PrintErrMesg(L"Dom0 kernel image could not be verified", status);
+
+    name.s = get_value(&cfg, section.s, "ramdisk");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ramdisk);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "ucode");
+    if ( !name.s )
+        name.s = get_value(&cfg, "global", "ucode");
+    if ( name.s )
+    {
+        microcode_set_module(mbi.mods_count);
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &ucode);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "xsm");
+    if ( name.s )
+    {
+        split_value(name.s);
+        read_file(dir_handle, s2w(&name), &xsm);
+        efi_bs->FreePool(name.w);
+    }
+
+    name.s = get_value(&cfg, section.s, "options");
+    if ( name.s )
+        place_string(&mbi.cmdline, name.s);
+    /* Insert image name last, as it gets prefixed to the other options. */
+    if ( argc )
+    {
+        name.w = *argv;
+        w2s(&name);
+    }
+    else
+        name.s = "xen";
+    place_string(&mbi.cmdline, name.s);
+
+    cols = rows = depth = 0;
+    if ( !base_video )
+    {
+        name.cs = get_value(&cfg, section.s, "video");
+        if ( !name.cs )
+            name.cs = get_value(&cfg, "global", "video");
+        if ( name.cs && !strncmp(name.cs, "gfx-", 4) )
+        {
+            cols = simple_strtoul(name.cs + 4, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                rows = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs == 'x' )
+                depth = simple_strtoul(name.cs + 1, &name.cs, 10);
+            if ( *name.cs )
+                cols = rows = depth = 0;
+        }
+    }
+
+    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    cfg.addr = 0;
+
+    dir_handle->Close(dir_handle);
+
+    if ( gop && !base_video )
+    {
+        for ( i = size = 0; i < gop->Mode->MaxMode; ++i )
+        {
+            unsigned int bpp = 0;
+
+            status = gop->QueryMode(gop, i, &info_size, &mode_info);
+            if ( EFI_ERROR(status) )
+                continue;
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelBitMask:
+                bpp = hweight32(mode_info->PixelInformation.RedMask |
+                                mode_info->PixelInformation.GreenMask |
+                                mode_info->PixelInformation.BlueMask);
+                break;
+            case PixelRedGreenBlueReserved8BitPerColor:
+            case PixelBlueGreenRedReserved8BitPerColor:
+                bpp = 24;
+                break;
+            default:
+                continue;
+            }
+            if ( cols == mode_info->HorizontalResolution &&
+                 rows == mode_info->VerticalResolution &&
+                 (!depth || bpp == depth) )
+            {
+                gop_mode = i;
+                break;
+            }
+            if ( !cols && !rows &&
+                 mode_info->HorizontalResolution *
+                 mode_info->VerticalResolution > size )
+            {
+                size = mode_info->HorizontalResolution *
+                       mode_info->VerticalResolution;
+                gop_mode = i;
+            }
+        }
+    }
+
+    if ( mbi.cmdline )
+        mbi.flags |= MBI_CMDLINE;
+    /*
+     * These must not be initialized statically, since the value must
+     * not get relocated when processing base relocations below.
+     */
+    mbi.boot_loader_name = (long)"EFI";
+    mbi.mods_addr = (long)mb_modules;
+
+    place_string(&mbi.mem_upper, NULL);
+
+    /* Collect EDD info. */
+    BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
+    BUILD_BUG_ON(sizeof(struct edd_device_params) != EDDPARMSIZE);
+    size = 0;
+    status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size, NULL);
+    if ( status == EFI_BUFFER_TOO_SMALL )
+        status = efi_bs->AllocatePool(EfiLoaderData, size, (void **)&handles);
+    if ( !EFI_ERROR(status) )
+        status = efi_bs->LocateHandle(ByProtocol, &bio_guid, NULL, &size,
+                                      handles);
+    if ( EFI_ERROR(status) )
+        size = 0;
+    for ( i = 0; i < size / sizeof(*handles); ++i )
+    {
+        EFI_BLOCK_IO *bio;
+        EFI_DEV_PATH_PTR devp;
+        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
+        struct edd_device_params *params = &info->edd_device_params;
+        enum { root, acpi, pci, ctrlr } state = root;
+
+        status = efi_bs->HandleProtocol(handles[i], &bio_guid, (void **)&bio);
+        if ( EFI_ERROR(status) ||
+             bio->Media->RemovableMedia ||
+             bio->Media->LogicalPartition )
+            continue;
+        if ( boot_edd_info_nr < EDD_INFO_MAX )
+        {
+            info->device = 0x80 + boot_edd_info_nr; /* fake */
+            info->version = 0x11;
+            params->length = offsetof(struct edd_device_params, dpte_ptr);
+            params->number_of_sectors = bio->Media->LastBlock + 1;
+            params->bytes_per_sector = bio->Media->BlockSize;
+            params->dpte_ptr = ~0;
+        }
+        ++boot_edd_info_nr;
+        status = efi_bs->HandleProtocol(handles[i], &devp_guid,
+                                        (void **)&devp);
+        if ( EFI_ERROR(status) )
+            continue;
+        for ( ; !IsDevicePathEnd(devp.DevPath);
+              devp.DevPath = NextDevicePathNode(devp.DevPath) )
+        {
+            switch ( DevicePathType(devp.DevPath) )
+            {
+                const u8 *p;
+
+            case ACPI_DEVICE_PATH:
+                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case ACPI_DP:
+                    if ( devp.Acpi->HID != EISA_PNP_ID(0xA03) &&
+                         devp.Acpi->HID != EISA_PNP_ID(0xA08) )
+                        break;
+                    params->interface_path.pci.bus = devp.Acpi->UID;
+                    state = acpi;
+                    break;
+                case EXPANDED_ACPI_DP:
+                    /* XXX */
+                    break;
+                }
+                break;
+            case HARDWARE_DEVICE_PATH:
+                if ( state != acpi ||
+                     DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
+                     boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = pci;
+                edd_put_string(params->host_bus_type, "PCI");
+                params->interface_path.pci.slot = devp.Pci->Device;
+                params->interface_path.pci.function = devp.Pci->Function;
+                break;
+            case MESSAGING_DEVICE_PATH:
+                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
+                    break;
+                state = ctrlr;
+                switch ( DevicePathSubType(devp.DevPath) )
+                {
+                case MSG_ATAPI_DP:
+                    edd_put_string(params->interface_type, "ATAPI");
+                    params->interface_path.pci.channel =
+                        devp.Atapi->PrimarySecondary;
+                    params->device_path.atapi.device = devp.Atapi->SlaveMaster;
+                    params->device_path.atapi.lun = devp.Atapi->Lun;
+                    break;
+                case MSG_SCSI_DP:
+                    edd_put_string(params->interface_type, "SCSI");
+                    params->device_path.scsi.id = devp.Scsi->Pun;
+                    params->device_path.scsi.lun = devp.Scsi->Lun;
+                    break;
+                case MSG_FIBRECHANNEL_DP:
+                    edd_put_string(params->interface_type, "FIBRE");
+                    params->device_path.fibre.wwid = devp.FibreChannel->WWN;
+                    params->device_path.fibre.lun = devp.FibreChannel->Lun;
+                    break;
+                case MSG_1394_DP:
+                    edd_put_string(params->interface_type, "1394");
+                    params->device_path.i1394.eui = devp.F1394->Guid;
+                    break;
+                case MSG_USB_DP:
+                case MSG_USB_CLASS_DP:
+                    edd_put_string(params->interface_type, "USB");
+                    break;
+                case MSG_I2O_DP:
+                    edd_put_string(params->interface_type, "I2O");
+                    params->device_path.i2o.identity_tag = devp.I2O->Tid;
+                    break;
+                default:
+                    continue;
+                }
+                info->version = 0x30;
+                params->length = sizeof(struct edd_device_params);
+                params->key = 0xbedd;
+                params->device_path_info_length =
+                    sizeof(struct edd_device_params) -
+                    offsetof(struct edd_device_params, key);
+                for ( p = (const u8 *)&params->key; p < &params->checksum; ++p )
+                    params->checksum -= *p;
+                break;
+            case MEDIA_DEVICE_PATH:
+                if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
+                     devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
+                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
+                {
+                    struct mbr_signature *sig = boot_mbr_signature +
+                                                boot_mbr_signature_nr;
+
+                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
+                    memcpy(&sig->signature, devp.HardDrive->Signature,
+                           sizeof(sig->signature));
+                    ++boot_mbr_signature_nr;
+                }
+                break;
+            }
+        }
+    }
+    if ( handles )
+        efi_bs->FreePool(handles);
+    if ( boot_edd_info_nr > EDD_INFO_MAX )
+        boot_edd_info_nr = EDD_INFO_MAX;
+
+    /* XXX Collect EDID info. */
+
+    if ( cpuid_eax(0x80000000) > 0x80000000 )
+    {
+        cpuid_ext_features = cpuid_edx(0x80000001);
+        boot_cpu_data.x86_capability[1] = cpuid_ext_features;
+    }
+
+    /* Obtain basic table pointers. */
+    for ( i = 0; i < efi_num_ct; ++i )
+    {
+        static EFI_GUID __initdata acpi2_guid = ACPI_20_TABLE_GUID;
+        static EFI_GUID __initdata acpi_guid = ACPI_TABLE_GUID;
+        static EFI_GUID __initdata mps_guid = MPS_TABLE_GUID;
+        static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
+
+        if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi20 = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
+	       efi.acpi = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
+	       efi.mps = (long)efi_ct[i].VendorTable;
+        if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
+	       efi.smbios = (long)efi_ct[i].VendorTable;
+    }
+
+    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
+        dmi_efi_get_table((void *)(long)efi.smbios);
+
+    /* Collect PCI ROM contents. */
+    setup_efi_pci();
+
+    /* Get snapshot of variable store parameters. */
+    status = (efi_rs->Hdr.Revision >> 16) >= 2 ?
+             efi_rs->QueryVariableInfo(EFI_VARIABLE_NON_VOLATILE |
+                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
+                                       EFI_VARIABLE_RUNTIME_ACCESS,
+                                       &efi_boot_max_var_store_size,
+                                       &efi_boot_remain_var_store_size,
+                                       &efi_boot_max_var_size) :
+             EFI_INCOMPATIBLE_VERSION;
+    if ( EFI_ERROR(status) )
+    {
+        efi_boot_max_var_store_size = 0;
+        efi_boot_remain_var_store_size = 0;
+        efi_boot_max_var_size = status;
+        PrintStr(L"Warning: Could not query variable store: ");
+        DisplayUint(status, 0);
+        PrintStr(newline);
+    }
+
+    /* Allocate space for trampoline (in first Mb). */
+    cfg.addr = 0x100000;
+    cfg.size = trampoline_end - trampoline_start;
+    status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+                                   PFN_UP(cfg.size), &cfg.addr);
+    if ( status == EFI_SUCCESS )
+        relocate_trampoline(cfg.addr);
+    else
+    {
+        cfg.addr = 0;
+        PrintStr(L"Trampoline space cannot be allocated; will try fallback.\r\n");
+    }
+
+    /* Initialise L2 identity-map and boot-map page table entries (16MB). */
+    for ( i = 0; i < 8; ++i )
+    {
+        unsigned int slot = (xen_phys_start >> L2_PAGETABLE_SHIFT) + i;
+        paddr_t addr = slot << L2_PAGETABLE_SHIFT;
+
+        l2_identmap[slot] = l2e_from_paddr(addr, PAGE_HYPERVISOR|_PAGE_PSE);
+        slot &= L2_PAGETABLE_ENTRIES - 1;
+        l2_bootmap[slot] = l2e_from_paddr(addr, __PAGE_HYPERVISOR|_PAGE_PSE);
+    }
+    /* Initialise L3 boot-map page directory entries. */
+    l3_bootmap[l3_table_offset(xen_phys_start)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+    l3_bootmap[l3_table_offset(xen_phys_start + (8 << L2_PAGETABLE_SHIFT) - 1)] =
+        l3e_from_paddr((UINTN)l2_bootmap, __PAGE_HYPERVISOR);
+
+    if ( gop )
+    {
+        int bpp = 0;
+
+        /* Set graphics mode. */
+        if ( gop_mode < gop->Mode->MaxMode && gop_mode != gop->Mode->Mode )
+            gop->SetMode(gop, gop_mode);
+
+        /* Get graphics and frame buffer info. */
+        status = gop->QueryMode(gop, gop->Mode->Mode, &info_size, &mode_info);
+        if ( !EFI_ERROR(status) )
+            switch ( mode_info->PixelFormat )
+            {
+            case PixelRedGreenBlueReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 0;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 16;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBlueGreenRedReserved8BitPerColor:
+                vga_console_info.u.vesa_lfb.red_pos = 16;
+                vga_console_info.u.vesa_lfb.red_size = 8;
+                vga_console_info.u.vesa_lfb.green_pos = 8;
+                vga_console_info.u.vesa_lfb.green_size = 8;
+                vga_console_info.u.vesa_lfb.blue_pos = 0;
+                vga_console_info.u.vesa_lfb.blue_size = 8;
+                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                bpp = 32;
+                break;
+            case PixelBitMask:
+                bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.red_pos,
+                                &vga_console_info.u.vesa_lfb.red_size);
+                bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
+                                &vga_console_info.u.vesa_lfb.green_pos,
+                                &vga_console_info.u.vesa_lfb.green_size);
+                bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
+                                &vga_console_info.u.vesa_lfb.blue_pos,
+                                &vga_console_info.u.vesa_lfb.blue_size);
+                bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
+                                &vga_console_info.u.vesa_lfb.rsvd_pos,
+                                &vga_console_info.u.vesa_lfb.rsvd_size);
+                if ( bpp > 0 )
+                    break;
+                /* fall through */
+            default:
+                PrintErr(L"Current graphics mode is unsupported!\r\n");
+                status = EFI_UNSUPPORTED;
+                break;
+            }
+        if ( !EFI_ERROR(status) )
+        {
+            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
+            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
+            vga_console_info.u.vesa_lfb.width =
+                mode_info->HorizontalResolution;
+            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
+            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
+            vga_console_info.u.vesa_lfb.bytes_per_line =
+                (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
+            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
+            vga_console_info.u.vesa_lfb.lfb_size =
+                (gop->Mode->FrameBufferSize + 0xffff) >> 16;
+        }
+    }
+
+    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
+                         &efi_mdesc_size, &mdesc_ver);
+    mbi.mem_upper -= efi_memmap_size;
+    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
+    if ( mbi.mem_upper < xen_phys_start )
+        blexit(L"Out of static memory");
+    efi_memmap = (void *)(long)mbi.mem_upper;
+    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
+                                  &efi_mdesc_size, &mdesc_ver);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot obtain memory map", status);
+
+    /* Populate E820 table and check trampoline area availability. */
+    e = e820map - 1;
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        u32 type;
+
+        switch ( desc->Type )
+        {
+        default:
+            type = E820_RESERVED;
+            break;
+        case EfiConventionalMemory:
+        case EfiBootServicesCode:
+        case EfiBootServicesData:
+            if ( !trampoline_phys && desc->PhysicalStart + len <= 0x100000 &&
+                 len >= cfg.size && desc->PhysicalStart + len > cfg.addr )
+                cfg.addr = (desc->PhysicalStart + len - cfg.size) & PAGE_MASK;
+            /* fall through */
+        case EfiLoaderCode:
+        case EfiLoaderData:
+            if ( desc->Attribute & EFI_MEMORY_WB )
+                type = E820_RAM;
+            else
+        case EfiUnusableMemory:
+                type = E820_UNUSABLE;
+            break;
+        case EfiACPIReclaimMemory:
+            type = E820_ACPI;
+            break;
+        case EfiACPIMemoryNVS:
+            type = E820_NVS;
+            break;
+        }
+        if ( e820nr && type == e->type &&
+             desc->PhysicalStart == e->addr + e->size )
+            e->size += len;
+        else if ( !len || e820nr >= E820MAX )
+            continue;
+        else
+        {
+            ++e;
+            e->addr = desc->PhysicalStart;
+            e->size = len;
+            e->type = type;
+            ++e820nr;
+        }
+    }
+    if ( !trampoline_phys )
+    {
+        if ( !cfg.addr )
+            blexit(L"No memory for trampoline");
+        relocate_trampoline(cfg.addr);
+    }
+
+    status = efi_bs->ExitBootServices(ImageHandle, map_key);
+    if ( EFI_ERROR(status) )
+        PrintErrMesg(L"Cannot exit boot services", status);
+
+    /* Adjust pointers into EFI. */
+    efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
+#endif
+    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
+    efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
+
+    relocate_image(__XEN_VIRT_START - xen_phys_start);
+    memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
+
+    /* Set system registers and transfer control. */
+    asm volatile("pushq $0\n\tpopfq");
+    rdmsrl(MSR_EFER, efer);
+    efer |= EFER_SCE;
+    if ( cpuid_ext_features & (1 << (X86_FEATURE_NX & 0x1f)) )
+        efer |= EFER_NX;
+    wrmsrl(MSR_EFER, efer);
+    write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
+              X86_CR0_AM | X86_CR0_PG);
+    asm volatile ( "mov    %[cr4], %%cr4\n\t"
+                   "mov    %[cr3], %%cr3\n\t"
+                   "movabs $__start_xen, %[rip]\n\t"
+                   "lgdt   gdt_descr(%%rip)\n\t"
+                   "mov    stack_start(%%rip), %%rsp\n\t"
+                   "mov    %[ds], %%ss\n\t"
+                   "mov    %[ds], %%ds\n\t"
+                   "mov    %[ds], %%es\n\t"
+                   "mov    %[ds], %%fs\n\t"
+                   "mov    %[ds], %%gs\n\t"
+                   "movl   %[cs], 8(%%rsp)\n\t"
+                   "mov    %[rip], (%%rsp)\n\t"
+                   "lretq  %[stkoff]-16"
+                   : [rip] "=&r" (efer/* any dead 64-bit variable */)
+                   : [cr3] "r" (idle_pg_table),
+                     [cr4] "r" (mmu_cr4_features),
+                     [cs] "ir" (__HYPERVISOR_CS),
+                     [ds] "r" (__HYPERVISOR_DS),
+                     [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
+                     "D" (&mbi)
+                   : "memory" );
+    for( ; ; ); /* not reached */
+}
+
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+static __init void copy_mapping(unsigned long mfn, unsigned long end,
+                                bool_t (*is_valid)(unsigned long smfn,
+                                                   unsigned long emfn))
+{
+    unsigned long next;
+
+    for ( ; mfn < end; mfn = next )
+    {
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)];
+        l3_pgentry_t *l3src, *l3dst;
+        unsigned long va = (unsigned long)mfn_to_virt(mfn);
+
+        next = mfn + (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT));
+        if ( !is_valid(mfn, min(next, end)) )
+            continue;
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            l3dst = alloc_xen_pagetable();
+            BUG_ON(!l3dst);
+            clear_page(l3dst);
+            efi_l4_pgtable[l4_table_offset(mfn << PAGE_SHIFT)] =
+                l4e_from_paddr(virt_to_maddr(l3dst), __PAGE_HYPERVISOR);
+        }
+        else
+            l3dst = l4e_to_l3e(l4e);
+        l3src = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
+        l3dst[l3_table_offset(mfn << PAGE_SHIFT)] = l3src[l3_table_offset(va)];
+    }
+}
+
+static bool_t __init ram_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    unsigned long sz = pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1;
+
+    return !(smfn & pfn_hole_mask) &&
+           find_next_bit(pdx_group_valid, sz,
+                         pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz;
+}
+
+static bool_t __init rt_range_valid(unsigned long smfn, unsigned long emfn)
+{
+    return 1;
+}
+#endif
+
+#define INVALID_VIRTUAL_ADDRESS (0xBAAADUL << \
+                                 (EFI_PAGE_SHIFT + BITS_PER_LONG - 32))
+
+void __init efi_init_memory(void)
+{
+    unsigned int i;
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+    struct rt_extra {
+        struct rt_extra *next;
+        unsigned long smfn, emfn;
+        unsigned int prot;
+    } *extra, *extra_head = NULL;
+#endif
+
+    printk(XENLOG_INFO "EFI memory map:\n");
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
+        unsigned long smfn, emfn;
+        unsigned int prot = PAGE_HYPERVISOR;
+
+        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
+                           " type=%u attr=%016" PRIx64 "\n",
+               desc->PhysicalStart, desc->PhysicalStart + len - 1,
+               desc->Type, desc->Attribute);
+
+        if ( !(desc->Attribute & EFI_MEMORY_RUNTIME) )
+            continue;
+
+        desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
+
+        smfn = PFN_DOWN(desc->PhysicalStart);
+        emfn = PFN_UP(desc->PhysicalStart + len);
+
+        if ( desc->Attribute & EFI_MEMORY_WB )
+            /* nothing */;
+        else if ( desc->Attribute & EFI_MEMORY_WT )
+            prot |= _PAGE_PWT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & EFI_MEMORY_WC )
+            prot |= _PAGE_PAT | MAP_SMALL_PAGES;
+        else if ( desc->Attribute & (EFI_MEMORY_UC | EFI_MEMORY_UCE) )
+            prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES;
+        else
+        {
+            printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+            continue;
+        }
+
+        if ( desc->Attribute & EFI_MEMORY_WP )
+            prot &= _PAGE_RW;
+        if ( desc->Attribute & EFI_MEMORY_XP )
+            prot |= _PAGE_NX_BIT;
+
+        if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
+             !(smfn & pfn_hole_mask) &&
+             !((smfn ^ (emfn - 1)) & ~pfn_pdx_bottom_mask) )
+        {
+            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
+                prot &= ~_PAGE_GLOBAL;
+            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
+                                  smfn, emfn - smfn, prot) == 0 )
+                desc->VirtualStart =
+                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
+            else
+                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
+                       smfn, emfn - 1);
+        }
+#ifndef USE_SET_VIRTUAL_ADDRESS_MAP
+        else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
+                  (extra = xmalloc(struct rt_extra)) != NULL )
+        {
+            extra->smfn = smfn;
+            extra->emfn = emfn;
+            extra->prot = prot & ~_PAGE_GLOBAL;
+            extra->next = extra_head;
+            extra_head = extra;
+            desc->VirtualStart = desc->PhysicalStart;
+        }
+#endif
+        else
+        {
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+            /* XXX allocate e.g. down from FIXADDR_START */
+#endif
+            printk(XENLOG_ERR "No mapping for MFNs %#lx-%#lx\n",
+                   smfn, emfn - 1);
+        }
+    }
+
+#ifdef USE_SET_VIRTUAL_ADDRESS_MAP
+    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
+                                 mdesc_ver, efi_memmap);
+#else
+    /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
+    efi_l4_pgtable = alloc_xen_pagetable();
+    BUG_ON(!efi_l4_pgtable);
+    clear_page(efi_l4_pgtable);
+
+    copy_mapping(0, max_page, ram_range_valid);
+
+    /* Insert non-RAM runtime mappings inside the direct map. */
+    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    {
+        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+
+        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
+             desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
+             desc->VirtualStart != desc->PhysicalStart )
+            copy_mapping(PFN_DOWN(desc->PhysicalStart),
+                         PFN_UP(desc->PhysicalStart +
+                                (desc->NumberOfPages << EFI_PAGE_SHIFT)),
+                         rt_range_valid);
+    }
+
+    /* Insert non-RAM runtime mappings outside of the direct map. */
+    while ( (extra = extra_head) != NULL )
+    {
+        unsigned long addr = extra->smfn << PAGE_SHIFT;
+        l4_pgentry_t l4e = efi_l4_pgtable[l4_table_offset(addr)];
+        l3_pgentry_t *pl3e;
+        l2_pgentry_t *pl2e;
+        l1_pgentry_t *l1t;
+
+        if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        {
+            pl3e = alloc_xen_pagetable();
+            BUG_ON(!pl3e);
+            clear_page(pl3e);
+            efi_l4_pgtable[l4_table_offset(addr)] =
+                l4e_from_paddr(virt_to_maddr(pl3e), __PAGE_HYPERVISOR);
+        }
+        else
+            pl3e = l4e_to_l3e(l4e);
+        pl3e += l3_table_offset(addr);
+        if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
+        {
+            pl2e = alloc_xen_pagetable();
+            BUG_ON(!pl2e);
+            clear_page(pl2e);
+            *pl3e = l3e_from_paddr(virt_to_maddr(pl2e), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l3e_get_flags(*pl3e) & _PAGE_PSE);
+            pl2e = l3e_to_l2e(*pl3e);
+        }
+        pl2e += l2_table_offset(addr);
+        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
+        {
+            l1t = alloc_xen_pagetable();
+            BUG_ON(!l1t);
+            clear_page(l1t);
+            *pl2e = l2e_from_paddr(virt_to_maddr(l1t), __PAGE_HYPERVISOR);
+        }
+        else
+        {
+            BUG_ON(l2e_get_flags(*pl2e) & _PAGE_PSE);
+            l1t = l2e_to_l1e(*pl2e);
+        }
+        for ( i = l1_table_offset(addr);
+              i < L1_PAGETABLE_ENTRIES && extra->smfn < extra->emfn;
+              ++i, ++extra->smfn )
+            l1t[i] = l1e_from_pfn(extra->smfn, extra->prot);
+
+        if ( extra->smfn == extra->emfn )
+        {
+            extra_head = extra->next;
+            xfree(extra);
+        }
+    }
+
+    /* Insert Xen mappings. */
+    for ( i = l4_table_offset(HYPERVISOR_VIRT_START);
+          i < l4_table_offset(DIRECTMAP_VIRT_END); ++i )
+        efi_l4_pgtable[i] = idle_pg_table[i];
+#endif
+}
diff --git a/xen/arch/x86/efi/efi.h b/xen/include/asm-x86/efi.h
similarity index 100%
rename from xen/arch/x86/efi/efi.h
rename to xen/include/asm-x86/efi.h
-- 
2.1.0.rc1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 10 12:34:44 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Sep 2014 12:34:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRh6W-0006TA-7Y; Wed, 10 Sep 2014 12:34:32 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <dslutz@verizon.com>) id 1XRh6T-0006Sy-UY
	for xen-devel@lists.xen.org; Wed, 10 Sep 2014 12:34:30 +0000
Received: from [85.158.143.35:24731] by server-1.bemta-4.messagelabs.com id
	41/92-05872-55540145; Wed, 10 Sep 2014 12:34:29 +0000
X-Env-Sender: dslutz@verizon.com
X-Msg-Ref: server-13.tower-21.messagelabs.com!1410352461!5599947!2
X-Originating-IP: [140.108.26.143]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTQwLjEwOC4yNi4xNDMgPT4gMjYwNTMz\n
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5169 invoked from network); 10 Sep 2014 12:34:26 -0000
Received: from fldsmtpe04.verizon.com (HELO fldsmtpe04.verizon.com)
	(140.108.26.143)
	by server-13.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 10 Sep 2014 12:34:26 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
	d=verizon.com; i=dslutz@verizon.com; q=dns/txt; s=corp;
	t=1410352466; x=1441888466;
	h=from:to:cc:subject:date:message-id:in-reply-to: references;
	bh=kQ3SPawaxCpM+/f3ZpCcOUdQ+QiEGzMDzEKYuXsZ2rE=;
	b=Vj+K9oCxFgqVn6BnaVxSawD1HxM9lyL3PKmkM3XRjgUmqJiPm1yI3stD
	qGobtVH51nUN1LlgriQa+uNTpSblhWIxR9VKRvNmeW1zgJRBUGli2/W4u
	n1RbqGPn22JsEEqfdqHU1pX3WLwtA0tXh3/oxwssMuj+AKE9JvF8A5zM5 4=;
X-IronPort-Anti-Spam-Filtered: false
Received: from unknown (HELO fldsmtpi02.verizon.com) ([166.68.71.144])
	by fldsmtpe04.verizon.com with ESMTP; 10 Sep 2014 12:34:21 +0000
X-VzAPP: 1
X-IronPort-AV: E=Sophos;i="5.04,499,1406592000"; d="scan'208";a="817144947"
Received: from unknown (HELO don-760.CloudSwitch.com) ([162.47.4.133])
	by fldsmtpi02.verizon.com with ESMTP; 10 Sep 2014 12:34:20 +0000
From: Don Slutz <dslutz@verizon.com>
To: xen-devel@lists.xen.org
Date: Wed, 10 Sep 2014 08:34:16 -0400
Message-Id: <1410352457-13826-2-git-send-email-dslutz@verizon.com>
X-Mailer: git-send-email 1.8.4
In-Reply-To: <1410352457-13826-1-git-send-email-dslutz@verizon.com>
References: <1410352457-13826-1-git-send-email-dslutz@verizon.com>
Cc: Keir Fraser <keir@xen.org>, Ian Campbell <ian.campbell@citrix.com>,
	Tim Deegan <tim@xen.org>, Ian Jackson <ian.jackson@eu.citrix.com>,
	Don Slutz <dslutz@verizon.com>, Jan Beulich <jbeulich@suse.com>
Subject: [Xen-devel] [RFC][PATCH v1 1/2] Import checkpatch.pl from QEMU
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

Signed-off-by: Don Slutz <dslutz@verizon.com>
---
 scripts/checkpatch.pl | 2960 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 2960 insertions(+)
 create mode 100755 scripts/checkpatch.pl

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
new file mode 100755
index 0000000..053e432
--- /dev/null
+++ b/scripts/checkpatch.pl
@@ -0,0 +1,2960 @@
+#!/usr/bin/perl -w
+# (c) 2001, Dave Jones. (the file handling bit)
+# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
+# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
+# (c) 2008-2010 Andy Whitcroft <apw@canonical.com>
+# Licensed under the terms of the GNU GPL License version 2
+
+use strict;
+
+my $P = $0;
+$P =~ s@.*/@@g;
+
+my $V = '0.31';
+
+use Getopt::Long qw(:config no_auto_abbrev);
+
+my $quiet = 0;
+my $tree = 1;
+my $chk_signoff = 1;
+my $chk_patch = 1;
+my $tst_only;
+my $emacs = 0;
+my $terse = 0;
+my $file = 0;
+my $check = 0;
+my $summary = 1;
+my $mailback = 0;
+my $summary_file = 0;
+my $root;
+my %debug;
+my $help = 0;
+
+sub help {
+	my ($exitcode) = @_;
+
+	print << "EOM";
+Usage: $P [OPTION]... [FILE]...
+Version: $V
+
+Options:
+  -q, --quiet                quiet
+  --no-tree                  run without a kernel tree
+  --no-signoff               do not check for 'Signed-off-by' line
+  --patch                    treat FILE as patchfile (default)
+  --emacs                    emacs compile window format
+  --terse                    one line per report
+  -f, --file                 treat FILE as regular source file
+  --subjective, --strict     enable more subjective tests
+  --root=PATH                PATH to the kernel tree root
+  --no-summary               suppress the per-file summary
+  --mailback                 only produce a report in case of warnings/errors
+  --summary-file             include the filename in summary
+  --debug KEY=[0|1]          turn on/off debugging of KEY, where KEY is one of
+                             'values', 'possible', 'type', and 'attr' (default
+                             is all off)
+  --test-only=WORD           report only warnings/errors containing WORD
+                             literally
+  -h, --help, --version      display this help and exit
+
+When FILE is - read standard input.
+EOM
+
+	exit($exitcode);
+}
+
+GetOptions(
+	'q|quiet+'	=> \$quiet,
+	'tree!'		=> \$tree,
+	'signoff!'	=> \$chk_signoff,
+	'patch!'	=> \$chk_patch,
+	'emacs!'	=> \$emacs,
+	'terse!'	=> \$terse,
+	'f|file!'	=> \$file,
+	'subjective!'	=> \$check,
+	'strict!'	=> \$check,
+	'root=s'	=> \$root,
+	'summary!'	=> \$summary,
+	'mailback!'	=> \$mailback,
+	'summary-file!'	=> \$summary_file,
+
+	'debug=s'	=> \%debug,
+	'test-only=s'	=> \$tst_only,
+	'h|help'	=> \$help,
+	'version'	=> \$help
+) or help(1);
+
+help(0) if ($help);
+
+my $exit = 0;
+
+if ($#ARGV < 0) {
+	print "$P: no input files\n";
+	exit(1);
+}
+
+my $dbg_values = 0;
+my $dbg_possible = 0;
+my $dbg_type = 0;
+my $dbg_attr = 0;
+my $dbg_adv_dcs = 0;
+my $dbg_adv_checking = 0;
+my $dbg_adv_apw = 0;
+for my $key (keys %debug) {
+	## no critic
+	eval "\${dbg_$key} = '$debug{$key}';";
+	die "$@" if ($@);
+}
+
+my $rpt_cleaners = 0;
+
+if ($terse) {
+	$emacs = 1;
+	$quiet++;
+}
+
+if ($tree) {
+	if (defined $root) {
+		if (!top_of_kernel_tree($root)) {
+			die "$P: $root: --root does not point at a valid tree\n";
+		}
+	} else {
+		if (top_of_kernel_tree('.')) {
+			$root = '.';
+		} elsif ($0 =~ m@(.*)/scripts/[^/]*$@ &&
+						top_of_kernel_tree($1)) {
+			$root = $1;
+		}
+	}
+
+	if (!defined $root) {
+		print "Must be run from the top-level dir. of a kernel tree\n";
+		exit(2);
+	}
+}
+
+my $emitted_corrupt = 0;
+
+our $Ident	= qr{
+			[A-Za-z_][A-Za-z\d_]*
+			(?:\s*\#\#\s*[A-Za-z_][A-Za-z\d_]*)*
+		}x;
+our $Storage	= qr{extern|static|asmlinkage};
+our $Sparse	= qr{
+			__user|
+			__kernel|
+			__force|
+			__iomem|
+			__must_check|
+			__init_refok|
+			__kprobes|
+			__ref
+		}x;
+
+# Notes to $Attribute:
+# We need \b after 'init' otherwise 'initconst' will cause a false positive in a check
+our $Attribute	= qr{
+			const|
+			__percpu|
+			__nocast|
+			__safe|
+			__bitwise__|
+			__packed__|
+			__packed2__|
+			__naked|
+			__maybe_unused|
+			__always_unused|
+			__noreturn|
+			__used|
+			__cold|
+			__noclone|
+			__deprecated|
+			__read_mostly|
+			__kprobes|
+			__(?:mem|cpu|dev|)(?:initdata|initconst|init\b)|
+			____cacheline_aligned|
+			____cacheline_aligned_in_smp|
+			____cacheline_internodealigned_in_smp|
+			__weak
+		  }x;
+our $Modifier;
+our $Inline	= qr{inline|__always_inline|noinline};
+our $Member	= qr{->$Ident|\.$Ident|\[[^]]*\]};
+our $Lval	= qr{$Ident(?:$Member)*};
+
+our $Constant	= qr{(?:[0-9]+|0x[0-9a-fA-F]+)[UL]*};
+our $Assignment	= qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
+our $Compare    = qr{<=|>=|==|!=|<|>};
+our $Operators	= qr{
+			<=|>=|==|!=|
+			=>|->|<<|>>|<|>|!|~|
+			&&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%
+		  }x;
+
+our $NonptrType;
+our $Type;
+our $Declare;
+
+our $UTF8	= qr {
+	[\x09\x0A\x0D\x20-\x7E]              # ASCII
+	| [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
+	|  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
+	| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
+	|  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
+	|  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
+	| [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
+	|  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
+}x;
+
+# There are still some false positives, but this catches most
+# common cases.
+our $typeTypedefs = qr{(?x:
+        [A-Z][A-Z\d_]*[a-z][A-Za-z\d_]*     # camelcase
+        | [A-Z][A-Z\d_]*AIOCB               # all uppercase
+        | [A-Z][A-Z\d_]*CPU                 # all uppercase
+        | QEMUBH                            # all uppercase
+)};
+
+our $logFunctions = qr{(?x:
+	printk|
+	pr_(debug|dbg|vdbg|devel|info|warning|err|notice|alert|crit|emerg|cont)|
+	(dev|netdev|netif)_(printk|dbg|vdbg|info|warn|err|notice|alert|crit|emerg|WARN)|
+	WARN|
+	panic
+)};
+
+our @typeList = (
+	qr{void},
+	qr{(?:unsigned\s+)?char},
+	qr{(?:unsigned\s+)?short},
+	qr{(?:unsigned\s+)?int},
+	qr{(?:unsigned\s+)?long},
+	qr{(?:unsigned\s+)?long\s+int},
+	qr{(?:unsigned\s+)?long\s+long},
+	qr{(?:unsigned\s+)?long\s+long\s+int},
+	qr{unsigned},
+	qr{float},
+	qr{double},
+	qr{bool},
+	qr{struct\s+$Ident},
+	qr{union\s+$Ident},
+	qr{enum\s+$Ident},
+	qr{${Ident}_t},
+	qr{${Ident}_handler},
+	qr{${Ident}_handler_fn},
+);
+our @modifierList = (
+	qr{fastcall},
+);
+
+our $allowed_asm_includes = qr{(?x:
+	irq|
+	memory
+)};
+# memory.h: ARM has a custom one
+
+sub build_types {
+	my $mods = "(?x:  \n" . join("|\n  ", @modifierList) . "\n)";
+	my $all = "(?x:  \n" . join("|\n  ", @typeList) . "\n)";
+	$Modifier	= qr{(?:$Attribute|$Sparse|$mods)};
+	$NonptrType	= qr{
+			(?:$Modifier\s+|const\s+)*
+			(?:
+				(?:typeof|__typeof__)\s*\(\s*\**\s*$Ident\s*\)|
+				(?:$typeTypedefs\b)|
+				(?:${all}\b)
+			)
+			(?:\s+$Modifier|\s+const)*
+		  }x;
+	$Type	= qr{
+			$NonptrType
+			(?:[\s\*]+\s*const|[\s\*]+|(?:\s*\[\s*\])+)?
+			(?:\s+$Inline|\s+$Modifier)*
+		  }x;
+	$Declare	= qr{(?:$Storage\s+)?$Type};
+}
+build_types();
+
+$chk_signoff = 0 if ($file);
+
+my @dep_includes = ();
+my @dep_functions = ();
+my $removal = "Documentation/feature-removal-schedule.txt";
+if ($tree && -f "$root/$removal") {
+	open(my $REMOVE, '<', "$root/$removal") ||
+				die "$P: $removal: open failed - $!\n";
+	while (<$REMOVE>) {
+		if (/^Check:\s+(.*\S)/) {
+			for my $entry (split(/[, ]+/, $1)) {
+				if ($entry =~ m@include/(.*)@) {
+					push(@dep_includes, $1);
+
+				} elsif ($entry !~ m@/@) {
+					push(@dep_functions, $entry);
+				}
+			}
+		}
+	}
+	close($REMOVE);
+}
+
+my @rawlines = ();
+my @lines = ();
+my $vname;
+for my $filename (@ARGV) {
+	my $FILE;
+	if ($file) {
+		open($FILE, '-|', "diff -u /dev/null $filename") ||
+			die "$P: $filename: diff failed - $!\n";
+	} elsif ($filename eq '-') {
+		open($FILE, '<&STDIN');
+	} else {
+		open($FILE, '<', "$filename") ||
+			die "$P: $filename: open failed - $!\n";
+	}
+	if ($filename eq '-') {
+		$vname = 'Your patch';
+	} else {
+		$vname = $filename;
+	}
+	while (<$FILE>) {
+		chomp;
+		push(@rawlines, $_);
+	}
+	close($FILE);
+	if (!process($filename)) {
+		$exit = 1;
+	}
+	@rawlines = ();
+	@lines = ();
+}
+
+exit($exit);
+
+sub top_of_kernel_tree {
+	my ($root) = @_;
+
+	my @tree_check = (
+		"COPYING", "MAINTAINERS", "Makefile",
+		"README", "docs", "VERSION",
+		"vl.c"
+	);
+
+	foreach my $check (@tree_check) {
+		if (! -e $root . '/' . $check) {
+			return 0;
+		}
+	}
+	return 1;
+}
+
+sub expand_tabs {
+	my ($str) = @_;
+
+	my $res = '';
+	my $n = 0;
+	for my $c (split(//, $str)) {
+		if ($c eq "\t") {
+			$res .= ' ';
+			$n++;
+			for (; ($n % 8) != 0; $n++) {
+				$res .= ' ';
+			}
+			next;
+		}
+		$res .= $c;
+		$n++;
+	}
+
+	return $res;
+}
+sub copy_spacing {
+	(my $res = shift) =~ tr/\t/ /c;
+	return $res;
+}
+
+sub line_stats {
+	my ($line) = @_;
+
+	# Drop the diff line leader and expand tabs
+	$line =~ s/^.//;
+	$line = expand_tabs($line);
+
+	# Pick the indent from the front of the line.
+	my ($white) = ($line =~ /^(\s*)/);
+
+	return (length($line), length($white));
+}
+
+my $sanitise_quote = '';
+
+sub sanitise_line_reset {
+	my ($in_comment) = @_;
+
+	if ($in_comment) {
+		$sanitise_quote = '*/';
+	} else {
+		$sanitise_quote = '';
+	}
+}
+sub sanitise_line {
+	my ($line) = @_;
+
+	my $res = '';
+	my $l = '';
+
+	my $qlen = 0;
+	my $off = 0;
+	my $c;
+
+	# Always copy over the diff marker.
+	$res = substr($line, 0, 1);
+
+	for ($off = 1; $off < length($line); $off++) {
+		$c = substr($line, $off, 1);
+
+		# Comments we are wacking completly including the begin
+		# and end, all to $;.
+		if ($sanitise_quote eq '' && substr($line, $off, 2) eq '/*') {
+			$sanitise_quote = '*/';
+
+			substr($res, $off, 2, "$;$;");
+			$off++;
+			next;
+		}
+		if ($sanitise_quote eq '*/' && substr($line, $off, 2) eq '*/') {
+			$sanitise_quote = '';
+			substr($res, $off, 2, "$;$;");
+			$off++;
+			next;
+		}
+		if ($sanitise_quote eq '' && substr($line, $off, 2) eq '//') {
+			$sanitise_quote = '//';
+
+			substr($res, $off, 2, $sanitise_quote);
+			$off++;
+			next;
+		}
+
+		# A \ in a string means ignore the next character.
+		if (($sanitise_quote eq "'" || $sanitise_quote eq '"') &&
+		    $c eq "\\") {
+			substr($res, $off, 2, 'XX');
+			$off++;
+			next;
+		}
+		# Regular quotes.
+		if ($c eq "'" || $c eq '"') {
+			if ($sanitise_quote eq '') {
+				$sanitise_quote = $c;
+
+				substr($res, $off, 1, $c);
+				next;
+			} elsif ($sanitise_quote eq $c) {
+				$sanitise_quote = '';
+			}
+		}
+
+		#print "c<$c> SQ<$sanitise_quote>\n";
+		if ($off != 0 && $sanitise_quote eq '*/' && $c ne "\t") {
+			substr($res, $off, 1, $;);
+		} elsif ($off != 0 && $sanitise_quote eq '//' && $c ne "\t") {
+			substr($res, $off, 1, $;);
+		} elsif ($off != 0 && $sanitise_quote && $c ne "\t") {
+			substr($res, $off, 1, 'X');
+		} else {
+			substr($res, $off, 1, $c);
+		}
+	}
+
+	if ($sanitise_quote eq '//') {
+		$sanitise_quote = '';
+	}
+
+	# The pathname on a #include may be surrounded by '<' and '>'.
+	if ($res =~ /^.\s*\#\s*include\s+\<(.*)\>/) {
+		my $clean = 'X' x length($1);
+		$res =~ s@\<.*\>@<$clean>@;
+
+	# The whole of a #error is a string.
+	} elsif ($res =~ /^.\s*\#\s*(?:error|warning)\s+(.*)\b/) {
+		my $clean = 'X' x length($1);
+		$res =~ s@(\#\s*(?:error|warning)\s+).*@$1$clean@;
+	}
+
+	return $res;
+}
+
+sub ctx_statement_block {
+	my ($linenr, $remain, $off) = @_;
+	my $line = $linenr - 1;
+	my $blk = '';
+	my $soff = $off;
+	my $coff = $off - 1;
+	my $coff_set = 0;
+
+	my $loff = 0;
+
+	my $type = '';
+	my $level = 0;
+	my @stack = ();
+	my $p;
+	my $c;
+	my $len = 0;
+
+	my $remainder;
+	while (1) {
+		@stack = (['', 0]) if ($#stack == -1);
+
+		#warn "CSB: blk<$blk> remain<$remain>\n";
+		# If we are about to drop off the end, pull in more
+		# context.
+		if ($off >= $len) {
+			for (; $remain > 0; $line++) {
+				last if (!defined $lines[$line]);
+				next if ($lines[$line] =~ /^-/);
+				$remain--;
+				$loff = $len;
+				$blk .= $lines[$line] . "\n";
+				$len = length($blk);
+				$line++;
+				last;
+			}
+			# Bail if there is no further context.
+			#warn "CSB: blk<$blk> off<$off> len<$len>\n";
+			if ($off >= $len) {
+				last;
+			}
+		}
+		$p = $c;
+		$c = substr($blk, $off, 1);
+		$remainder = substr($blk, $off);
+
+		#warn "CSB: c<$c> type<$type> level<$level> remainder<$remainder> coff_set<$coff_set>\n";
+
+		# Handle nested #if/#else.
+		if ($remainder =~ /^#\s*(?:ifndef|ifdef|if)\s/) {
+			push(@stack, [ $type, $level ]);
+		} elsif ($remainder =~ /^#\s*(?:else|elif)\b/) {
+			($type, $level) = @{$stack[$#stack - 1]};
+		} elsif ($remainder =~ /^#\s*endif\b/) {
+			($type, $level) = @{pop(@stack)};
+		}
+
+		# Statement ends at the ';' or a close '}' at the
+		# outermost level.
+		if ($level == 0 && $c eq ';') {
+			last;
+		}
+
+		# An else is really a conditional as long as its not else if
+		if ($level == 0 && $coff_set == 0 &&
+				(!defined($p) || $p =~ /(?:\s|\}|\+)/) &&
+				$remainder =~ /^(else)(?:\s|{)/ &&
+				$remainder !~ /^else\s+if\b/) {
+			$coff = $off + length($1) - 1;
+			$coff_set = 1;
+			#warn "CSB: mark coff<$coff> soff<$soff> 1<$1>\n";
+			#warn "[" . substr($blk, $soff, $coff - $soff + 1) . "]\n";
+		}
+
+		if (($type eq '' || $type eq '(') && $c eq '(') {
+			$level++;
+			$type = '(';
+		}
+		if ($type eq '(' && $c eq ')') {
+			$level--;
+			$type = ($level != 0)? '(' : '';
+
+			if ($level == 0 && $coff < $soff) {
+				$coff = $off;
+				$coff_set = 1;
+				#warn "CSB: mark coff<$coff>\n";
+			}
+		}
+		if (($type eq '' || $type eq '{') && $c eq '{') {
+			$level++;
+			$type = '{';
+		}
+		if ($type eq '{' && $c eq '}') {
+			$level--;
+			$type = ($level != 0)? '{' : '';
+
+			if ($level == 0) {
+				if (substr($blk, $off + 1, 1) eq ';') {
+					$off++;
+				}
+				last;
+			}
+		}
+		$off++;
+	}
+	# We are truly at the end, so shuffle to the next line.
+	if ($off == $len) {
+		$loff = $len + 1;
+		$line++;
+		$remain--;
+	}
+
+	my $statement = substr($blk, $soff, $off - $soff + 1);
+	my $condition = substr($blk, $soff, $coff - $soff + 1);
+
+	#warn "STATEMENT<$statement>\n";
+	#warn "CONDITION<$condition>\n";
+
+	#print "coff<$coff> soff<$off> loff<$loff>\n";
+
+	return ($statement, $condition,
+			$line, $remain + 1, $off - $loff + 1, $level);
+}
+
+sub statement_lines {
+	my ($stmt) = @_;
+
+	# Strip the diff line prefixes and rip blank lines at start and end.
+	$stmt =~ s/(^|\n)./$1/g;
+	$stmt =~ s/^\s*//;
+	$stmt =~ s/\s*$//;
+
+	my @stmt_lines = ($stmt =~ /\n/g);
+
+	return $#stmt_lines + 2;
+}
+
+sub statement_rawlines {
+	my ($stmt) = @_;
+
+	my @stmt_lines = ($stmt =~ /\n/g);
+
+	return $#stmt_lines + 2;
+}
+
+sub statement_block_size {
+	my ($stmt) = @_;
+
+	$stmt =~ s/(^|\n)./$1/g;
+	$stmt =~ s/^\s*{//;
+	$stmt =~ s/}\s*$//;
+	$stmt =~ s/^\s*//;
+	$stmt =~ s/\s*$//;
+
+	my @stmt_lines = ($stmt =~ /\n/g);
+	my @stmt_statements = ($stmt =~ /;/g);
+
+	my $stmt_lines = $#stmt_lines + 2;
+	my $stmt_statements = $#stmt_statements + 1;
+
+	if ($stmt_lines > $stmt_statements) {
+		return $stmt_lines;
+	} else {
+		return $stmt_statements;
+	}
+}
+
+sub ctx_statement_full {
+	my ($linenr, $remain, $off) = @_;
+	my ($statement, $condition, $level);
+
+	my (@chunks);
+
+	# Grab the first conditional/block pair.
+	($statement, $condition, $linenr, $remain, $off, $level) =
+				ctx_statement_block($linenr, $remain, $off);
+	#print "F: c<$condition> s<$statement> remain<$remain>\n";
+	push(@chunks, [ $condition, $statement ]);
+	if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:if|else|do)\b/s)) {
+		return ($level, $linenr, @chunks);
+	}
+
+	# Pull in the following conditional/block pairs and see if they
+	# could continue the statement.
+	for (;;) {
+		($statement, $condition, $linenr, $remain, $off, $level) =
+				ctx_statement_block($linenr, $remain, $off);
+		#print "C: c<$condition> s<$statement> remain<$remain>\n";
+		last if (!($remain > 0 && $condition =~ /^(?:\s*\n[+-])*\s*(?:else|do)\b/s));
+		#print "C: push\n";
+		push(@chunks, [ $condition, $statement ]);
+	}
+
+	return ($level, $linenr, @chunks);
+}
+
+sub ctx_block_get {
+	my ($linenr, $remain, $outer, $open, $close, $off) = @_;
+	my $line;
+	my $start = $linenr - 1;
+	my $blk = '';
+	my @o;
+	my @c;
+	my @res = ();
+
+	my $level = 0;
+	my @stack = ($level);
+	for ($line = $start; $remain > 0; $line++) {
+		next if ($rawlines[$line] =~ /^-/);
+		$remain--;
+
+		$blk .= $rawlines[$line];
+
+		# Handle nested #if/#else.
+		if ($lines[$line] =~ /^.\s*#\s*(?:ifndef|ifdef|if)\s/) {
+			push(@stack, $level);
+		} elsif ($lines[$line] =~ /^.\s*#\s*(?:else|elif)\b/) {
+			$level = $stack[$#stack - 1];
+		} elsif ($lines[$line] =~ /^.\s*#\s*endif\b/) {
+			$level = pop(@stack);
+		}
+
+		foreach my $c (split(//, $lines[$line])) {
+			##print "C<$c>L<$level><$open$close>O<$off>\n";
+			if ($off > 0) {
+				$off--;
+				next;
+			}
+
+			if ($c eq $close && $level > 0) {
+				$level--;
+				last if ($level == 0);
+			} elsif ($c eq $open) {
+				$level++;
+			}
+		}
+
+		if (!$outer || $level <= 1) {
+			push(@res, $rawlines[$line]);
+		}
+
+		last if ($level == 0);
+	}
+
+	return ($level, @res);
+}
+sub ctx_block_outer {
+	my ($linenr, $remain) = @_;
+
+	my ($level, @r) = ctx_block_get($linenr, $remain, 1, '{', '}', 0);
+	return @r;
+}
+sub ctx_block {
+	my ($linenr, $remain) = @_;
+
+	my ($level, @r) = ctx_block_get($linenr, $remain, 0, '{', '}', 0);
+	return @r;
+}
+sub ctx_statement {
+	my ($linenr, $remain, $off) = @_;
+
+	my ($level, @r) = ctx_block_get($linenr, $remain, 0, '(', ')', $off);
+	return @r;
+}
+sub ctx_block_level {
+	my ($linenr, $remain) = @_;
+
+	return ctx_block_get($linenr, $remain, 0, '{', '}', 0);
+}
+sub ctx_statement_level {
+	my ($linenr, $remain, $off) = @_;
+
+	return ctx_block_get($linenr, $remain, 0, '(', ')', $off);
+}
+
+sub ctx_locate_comment {
+	my ($first_line, $end_line) = @_;
+
+	# Catch a comment on the end of the line itself.
+	my ($current_comment) = ($rawlines[$end_line - 1] =~ m@.*(/\*.*\*/)\s*(?:\\\s*)?$@);
+	return $current_comment if (defined $current_comment);
+
+	# Look through the context and try and figure out if there is a
+	# comment.
+	my $in_comment = 0;
+	$current_comment = '';
+	for (my $linenr = $first_line; $linenr < $end_line; $linenr++) {
+		my $line = $rawlines[$linenr - 1];
+		#warn "           $line\n";
+		if ($linenr == $first_line and $line =~ m@^.\s*\*@) {
+			$in_comment = 1;
+		}
+		if ($line =~ m@/\*@) {
+			$in_comment = 1;
+		}
+		if (!$in_comment && $current_comment ne '') {
+			$current_comment = '';
+		}
+		$current_comment .= $line . "\n" if ($in_comment);
+		if ($line =~ m@\*/@) {
+			$in_comment = 0;
+		}
+	}
+
+	chomp($current_comment);
+	return($current_comment);
+}
+sub ctx_has_comment {
+	my ($first_line, $end_line) = @_;
+	my $cmt = ctx_locate_comment($first_line, $end_line);
+
+	##print "LINE: $rawlines[$end_line - 1 ]\n";
+	##print "CMMT: $cmt\n";
+
+	return ($cmt ne '');
+}
+
+sub raw_line {
+	my ($linenr, $cnt) = @_;
+
+	my $offset = $linenr - 1;
+	$cnt++;
+
+	my $line;
+	while ($cnt) {
+		$line = $rawlines[$offset++];
+		next if (defined($line) && $line =~ /^-/);
+		$cnt--;
+	}
+
+	return $line;
+}
+
+sub cat_vet {
+	my ($vet) = @_;
+	my ($res, $coded);
+
+	$res = '';
+	while ($vet =~ /([^[:cntrl:]]*)([[:cntrl:]]|$)/g) {
+		$res .= $1;
+		if ($2 ne '') {
+			$coded = sprintf("^%c", unpack('C', $2) + 64);
+			$res .= $coded;
+		}
+	}
+	$res =~ s/$/\$/;
+
+	return $res;
+}
+
+my $av_preprocessor = 0;
+my $av_pending;
+my @av_paren_type;
+my $av_pend_colon;
+
+sub annotate_reset {
+	$av_preprocessor = 0;
+	$av_pending = '_';
+	@av_paren_type = ('E');
+	$av_pend_colon = 'O';
+}
+
+sub annotate_values {
+	my ($stream, $type) = @_;
+
+	my $res;
+	my $var = '_' x length($stream);
+	my $cur = $stream;
+
+	print "$stream\n" if ($dbg_values > 1);
+
+	while (length($cur)) {
+		@av_paren_type = ('E') if ($#av_paren_type < 0);
+		print " <" . join('', @av_paren_type) .
+				"> <$type> <$av_pending>" if ($dbg_values > 1);
+		if ($cur =~ /^(\s+)/o) {
+			print "WS($1)\n" if ($dbg_values > 1);
+			if ($1 =~ /\n/ && $av_preprocessor) {
+				$type = pop(@av_paren_type);
+				$av_preprocessor = 0;
+			}
+
+		} elsif ($cur =~ /^(\(\s*$Type\s*)\)/ && $av_pending eq '_') {
+			print "CAST($1)\n" if ($dbg_values > 1);
+			push(@av_paren_type, $type);
+			$type = 'C';
+
+		} elsif ($cur =~ /^($Type)\s*(?:$Ident|,|\)|\(|\s*$)/) {
+			print "DECLARE($1)\n" if ($dbg_values > 1);
+			$type = 'T';
+
+		} elsif ($cur =~ /^($Modifier)\s*/) {
+			print "MODIFIER($1)\n" if ($dbg_values > 1);
+			$type = 'T';
+
+		} elsif ($cur =~ /^(\#\s*define\s*$Ident)(\(?)/o) {
+			print "DEFINE($1,$2)\n" if ($dbg_values > 1);
+			$av_preprocessor = 1;
+			push(@av_paren_type, $type);
+			if ($2 ne '') {
+				$av_pending = 'N';
+			}
+			$type = 'E';
+
+		} elsif ($cur =~ /^(\#\s*(?:undef\s*$Ident|include\b))/o) {
+			print "UNDEF($1)\n" if ($dbg_values > 1);
+			$av_preprocessor = 1;
+			push(@av_paren_type, $type);
+
+		} elsif ($cur =~ /^(\#\s*(?:ifdef|ifndef|if))/o) {
+			print "PRE_START($1)\n" if ($dbg_values > 1);
+			$av_preprocessor = 1;
+
+			push(@av_paren_type, $type);
+			push(@av_paren_type, $type);
+			$type = 'E';
+
+		} elsif ($cur =~ /^(\#\s*(?:else|elif))/o) {
+			print "PRE_RESTART($1)\n" if ($dbg_values > 1);
+			$av_preprocessor = 1;
+
+			push(@av_paren_type, $av_paren_type[$#av_paren_type]);
+
+			$type = 'E';
+
+		} elsif ($cur =~ /^(\#\s*(?:endif))/o) {
+			print "PRE_END($1)\n" if ($dbg_values > 1);
+
+			$av_preprocessor = 1;
+
+			# Assume all arms of the conditional end as this
+			# one does, and continue as if the #endif was not here.
+			pop(@av_paren_type);
+			push(@av_paren_type, $type);
+			$type = 'E';
+
+		} elsif ($cur =~ /^(\\\n)/o) {
+			print "PRECONT($1)\n" if ($dbg_values > 1);
+
+		} elsif ($cur =~ /^(__attribute__)\s*\(?/o) {
+			print "ATTR($1)\n" if ($dbg_values > 1);
+			$av_pending = $type;
+			$type = 'N';
+
+		} elsif ($cur =~ /^(sizeof)\s*(\()?/o) {
+			print "SIZEOF($1)\n" if ($dbg_values > 1);
+			if (defined $2) {
+				$av_pending = 'V';
+			}
+			$type = 'N';
+
+		} elsif ($cur =~ /^(if|while|for)\b/o) {
+			print "COND($1)\n" if ($dbg_values > 1);
+			$av_pending = 'E';
+			$type = 'N';
+
+		} elsif ($cur =~/^(case)/o) {
+			print "CASE($1)\n" if ($dbg_values > 1);
+			$av_pend_colon = 'C';
+			$type = 'N';
+
+		} elsif ($cur =~/^(return|else|goto|typeof|__typeof__)\b/o) {
+			print "KEYWORD($1)\n" if ($dbg_values > 1);
+			$type = 'N';
+
+		} elsif ($cur =~ /^(\()/o) {
+			print "PAREN('$1')\n" if ($dbg_values > 1);
+			push(@av_paren_type, $av_pending);
+			$av_pending = '_';
+			$type = 'N';
+
+		} elsif ($cur =~ /^(\))/o) {
+			my $new_type = pop(@av_paren_type);
+			if ($new_type ne '_') {
+				$type = $new_type;
+				print "PAREN('$1') -> $type\n"
+							if ($dbg_values > 1);
+			} else {
+				print "PAREN('$1')\n" if ($dbg_values > 1);
+			}
+
+		} elsif ($cur =~ /^($Ident)\s*\(/o) {
+			print "FUNC($1)\n" if ($dbg_values > 1);
+			$type = 'V';
+			$av_pending = 'V';
+
+		} elsif ($cur =~ /^($Ident\s*):(?:\s*\d+\s*(,|=|;))?/) {
+			if (defined $2 && $type eq 'C' || $type eq 'T') {
+				$av_pend_colon = 'B';
+			} elsif ($type eq 'E') {
+				$av_pend_colon = 'L';
+			}
+			print "IDENT_COLON($1,$type>$av_pend_colon)\n" if ($dbg_values > 1);
+			$type = 'V';
+
+		} elsif ($cur =~ /^($Ident|$Constant)/o) {
+			print "IDENT($1)\n" if ($dbg_values > 1);
+			$type = 'V';
+
+		} elsif ($cur =~ /^($Assignment)/o) {
+			print "ASSIGN($1)\n" if ($dbg_values > 1);
+			$type = 'N';
+
+		} elsif ($cur =~/^(;|{|})/) {
+			print "END($1)\n" if ($dbg_values > 1);
+			$type = 'E';
+			$av_pend_colon = 'O';
+
+		} elsif ($cur =~/^(,)/) {
+			print "COMMA($1)\n" if ($dbg_values > 1);
+			$type = 'C';
+
+		} elsif ($cur =~ /^(\?)/o) {
+			print "QUESTION($1)\n" if ($dbg_values > 1);
+			$type = 'N';
+
+		} elsif ($cur =~ /^(:)/o) {
+			print "COLON($1,$av_pend_colon)\n" if ($dbg_values > 1);
+
+			substr($var, length($res), 1, $av_pend_colon);
+			if ($av_pend_colon eq 'C' || $av_pend_colon eq 'L') {
+				$type = 'E';
+			} else {
+				$type = 'N';
+			}
+			$av_pend_colon = 'O';
+
+		} elsif ($cur =~ /^(\[)/o) {
+			print "CLOSE($1)\n" if ($dbg_values > 1);
+			$type = 'N';
+
+		} elsif ($cur =~ /^(-(?![->])|\+(?!\+)|\*|\&\&|\&)/o) {
+			my $variant;
+
+			print "OPV($1)\n" if ($dbg_values > 1);
+			if ($type eq 'V') {
+				$variant = 'B';
+			} else {
+				$variant = 'U';
+			}
+
+			substr($var, length($res), 1, $variant);
+			$type = 'N';
+
+		} elsif ($cur =~ /^($Operators)/o) {
+			print "OP($1)\n" if ($dbg_values > 1);
+			if ($1 ne '++' && $1 ne '--') {
+				$type = 'N';
+			}
+
+		} elsif ($cur =~ /(^.)/o) {
+			print "C($1)\n" if ($dbg_values > 1);
+		}
+		if (defined $1) {
+			$cur = substr($cur, length($1));
+			$res .= $type x length($1);
+		}
+	}
+
+	return ($res, $var);
+}
+
+sub possible {
+	my ($possible, $line) = @_;
+	my $notPermitted = qr{(?:
+		^(?:
+			$Modifier|
+			$Storage|
+			$Type|
+			DEFINE_\S+
+		)$|
+		^(?:
+			goto|
+			return|
+			case|
+			else|
+			asm|__asm__|
+			do
+		)(?:\s|$)|
+		^(?:typedef|struct|enum)\b
+	    )}x;
+	warn "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
+	if ($possible !~ $notPermitted) {
+		# Check for modifiers.
+		$possible =~ s/\s*$Storage\s*//g;
+		$possible =~ s/\s*$Sparse\s*//g;
+		if ($possible =~ /^\s*$/) {
+
+		} elsif ($possible =~ /\s/) {
+			$possible =~ s/\s*$Type\s*//g;
+			for my $modifier (split(' ', $possible)) {
+				if ($modifier !~ $notPermitted) {
+					warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible);
+					push(@modifierList, $modifier);
+				}
+			}
+
+		} else {
+			warn "POSSIBLE: $possible ($line)\n" if ($dbg_possible);
+			push(@typeList, $possible);
+		}
+		build_types();
+	} else {
+		warn "NOTPOSS: $possible ($line)\n" if ($dbg_possible > 1);
+	}
+}
+
+my $prefix = '';
+
+sub report {
+	if (defined $tst_only && $_[0] !~ /\Q$tst_only\E/) {
+		return 0;
+	}
+	my $line = $prefix . $_[0];
+
+	$line = (split('\n', $line))[0] . "\n" if ($terse);
+
+	push(our @report, $line);
+
+	return 1;
+}
+sub report_dump {
+	our @report;
+}
+sub ERROR {
+	if (report("ERROR: $_[0]\n")) {
+		our $clean = 0;
+		our $cnt_error++;
+	}
+}
+sub WARN {
+	if (report("WARNING: $_[0]\n")) {
+		our $clean = 0;
+		our $cnt_warn++;
+	}
+}
+sub CHK {
+	if ($check && report("CHECK: $_[0]\n")) {
+		our $clean = 0;
+		our $cnt_chk++;
+	}
+}
+
+sub check_absolute_file {
+	my ($absolute, $herecurr) = @_;
+	my $file = $absolute;
+
+	##print "absolute<$absolute>\n";
+
+	# See if any suffix of this path is a path within the tree.
+	while ($file =~ s@^[^/]*/@@) {
+		if (-f "$root/$file") {
+			##print "file<$file>\n";
+			last;
+		}
+	}
+	if (! -f _)  {
+		return 0;
+	}
+
+	# It is, so see if the prefix is acceptable.
+	my $prefix = $absolute;
+	substr($prefix, -length($file)) = '';
+
+	##print "prefix<$prefix>\n";
+	if ($prefix ne ".../") {
+		WARN("use relative pathname instead of absolute in changelog text\n" . $herecurr);
+	}
+}
+
+sub process {
+	my $filename = shift;
+
+	my $linenr=0;
+	my $prevline="";
+	my $prevrawline="";
+	my $stashline="";
+	my $stashrawline="";
+
+	my $length;
+	my $indent;
+	my $previndent=0;
+	my $stashindent=0;
+
+	our $clean = 1;
+	my $signoff = 0;
+	my $is_patch = 0;
+
+	our @report = ();
+	our $cnt_lines = 0;
+	our $cnt_error = 0;
+	our $cnt_warn = 0;
+	our $cnt_chk = 0;
+
+	# Trace the real file/line as we go.
+	my $realfile = '';
+	my $realline = 0;
+	my $realcnt = 0;
+	my $here = '';
+	my $in_comment = 0;
+	my $comment_edge = 0;
+	my $first_line = 0;
+	my $p1_prefix = '';
+
+	my $prev_values = 'E';
+
+	# suppression flags
+	my %suppress_ifbraces;
+	my %suppress_whiletrailers;
+	my %suppress_export;
+
+	# Pre-scan the patch sanitizing the lines.
+	# Pre-scan the patch looking for any __setup documentation.
+	#
+	my @setup_docs = ();
+	my $setup_docs = 0;
+
+	sanitise_line_reset();
+	my $line;
+	foreach my $rawline (@rawlines) {
+		$linenr++;
+		$line = $rawline;
+
+		if ($rawline=~/^\+\+\+\s+(\S+)/) {
+			$setup_docs = 0;
+			if ($1 =~ m@Documentation/kernel-parameters.txt$@) {
+				$setup_docs = 1;
+			}
+			#next;
+		}
+		if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
+			$realline=$1-1;
+			if (defined $2) {
+				$realcnt=$3+1;
+			} else {
+				$realcnt=1+1;
+			}
+			$in_comment = 0;
+
+			# Guestimate if this is a continuing comment.  Run
+			# the context looking for a comment "edge".  If this
+			# edge is a close comment then we must be in a comment
+			# at context start.
+			my $edge;
+			my $cnt = $realcnt;
+			for (my $ln = $linenr + 1; $cnt > 0; $ln++) {
+				next if (defined $rawlines[$ln - 1] &&
+					 $rawlines[$ln - 1] =~ /^-/);
+				$cnt--;
+				#print "RAW<$rawlines[$ln - 1]>\n";
+				last if (!defined $rawlines[$ln - 1]);
+				if ($rawlines[$ln - 1] =~ m@(/\*|\*/)@ &&
+				    $rawlines[$ln - 1] !~ m@"[^"]*(?:/\*|\*/)[^"]*"@) {
+					($edge) = $1;
+					last;
+				}
+			}
+			if (defined $edge && $edge eq '*/') {
+				$in_comment = 1;
+			}
+
+			# Guestimate if this is a continuing comment.  If this
+			# is the start of a diff block and this line starts
+			# ' *' then it is very likely a comment.
+			if (!defined $edge &&
+			    $rawlines[$linenr] =~ m@^.\s*(?:\*\*+| \*)(?:\s|$)@)
+			{
+				$in_comment = 1;
+			}
+
+			##print "COMMENT:$in_comment edge<$edge> $rawline\n";
+			sanitise_line_reset($in_comment);
+
+		} elsif ($realcnt && $rawline =~ /^(?:\+| |$)/) {
+			# Standardise the strings and chars within the input to
+			# simplify matching -- only bother with positive lines.
+			$line = sanitise_line($rawline);
+		}
+		push(@lines, $line);
+
+		if ($realcnt > 1) {
+			$realcnt-- if ($line =~ /^(?:\+| |$)/);
+		} else {
+			$realcnt = 0;
+		}
+
+		#print "==>$rawline\n";
+		#print "-->$line\n";
+
+		if ($setup_docs && $line =~ /^\+/) {
+			push(@setup_docs, $line);
+		}
+	}
+
+	$prefix = '';
+
+	$realcnt = 0;
+	$linenr = 0;
+	foreach my $line (@lines) {
+		$linenr++;
+
+		my $rawline = $rawlines[$linenr - 1];
+
+#extract the line range in the file after the patch is applied
+		if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
+			$is_patch = 1;
+			$first_line = $linenr + 1;
+			$realline=$1-1;
+			if (defined $2) {
+				$realcnt=$3+1;
+			} else {
+				$realcnt=1+1;
+			}
+			annotate_reset();
+			$prev_values = 'E';
+
+			%suppress_ifbraces = ();
+			%suppress_whiletrailers = ();
+			%suppress_export = ();
+			next;
+
+# track the line number as we move through the hunk, note that
+# new versions of GNU diff omit the leading space on completely
+# blank context lines so we need to count that too.
+		} elsif ($line =~ /^( |\+|$)/) {
+			$realline++;
+			$realcnt-- if ($realcnt != 0);
+
+			# Measure the line length and indent.
+			($length, $indent) = line_stats($rawline);
+
+			# Track the previous line.
+			($prevline, $stashline) = ($stashline, $line);
+			($previndent, $stashindent) = ($stashindent, $indent);
+			($prevrawline, $stashrawline) = ($stashrawline, $rawline);
+
+			#warn "line<$line>\n";
+
+		} elsif ($realcnt == 1) {
+			$realcnt--;
+		}
+
+		my $hunk_line = ($realcnt != 0);
+
+#make up the handle for any error we report on this line
+		$prefix = "$filename:$realline: " if ($emacs && $file);
+		$prefix = "$filename:$linenr: " if ($emacs && !$file);
+
+		$here = "#$linenr: " if (!$file);
+		$here = "#$realline: " if ($file);
+
+		# extract the filename as it passes
+		if ($line =~ /^diff --git.*?(\S+)$/) {
+			$realfile = $1;
+			$realfile =~ s@^([^/]*)/@@;
+
+		} elsif ($line =~ /^\+\+\+\s+(\S+)/) {
+			$realfile = $1;
+			$realfile =~ s@^([^/]*)/@@;
+
+			$p1_prefix = $1;
+			if (!$file && $tree && $p1_prefix ne '' &&
+			    -e "$root/$p1_prefix") {
+				WARN("patch prefix '$p1_prefix' exists, appears to be a -p0 patch\n");
+			}
+
+			if ($realfile =~ m@^include/asm/@) {
+				ERROR("do not modify files in include/asm, change architecture specific files in include/asm-<architecture>\n" . "$here$rawline\n");
+			}
+			next;
+		}
+
+		$here .= "FILE: $realfile:$realline:" if ($realcnt != 0);
+
+		my $hereline = "$here\n$rawline\n";
+		my $herecurr = "$here\n$rawline\n";
+		my $hereprev = "$here\n$prevrawline\n$rawline\n";
+
+		$cnt_lines++ if ($realcnt != 0);
+
+# Check for incorrect file permissions
+		if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) {
+			my $permhere = $here . "FILE: $realfile\n";
+			if ($realfile =~ /(Makefile|Kconfig|\.c|\.cpp|\.h|\.S|\.tmpl)$/) {
+				ERROR("do not set execute permissions for source files\n" . $permhere);
+			}
+		}
+
+#check the patch for a signoff:
+		if ($line =~ /^\s*signed-off-by:/i) {
+			# This is a signoff, if ugly, so do not double report.
+			$signoff++;
+			if (!($line =~ /^\s*Signed-off-by:/)) {
+				WARN("Signed-off-by: is the preferred form\n" .
+					$herecurr);
+			}
+			if ($line =~ /^\s*signed-off-by:\S/i) {
+				WARN("space required after Signed-off-by:\n" .
+					$herecurr);
+			}
+		}
+
+# Check for wrappage within a valid hunk of the file
+		if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) {
+			ERROR("patch seems to be corrupt (line wrapped?)\n" .
+				$herecurr) if (!$emitted_corrupt++);
+		}
+
+# Check for absolute kernel paths.
+		if ($tree) {
+			while ($line =~ m{(?:^|\s)(/\S*)}g) {
+				my $file = $1;
+
+				if ($file =~ m{^(.*?)(?::\d+)+:?$} &&
+				    check_absolute_file($1, $herecurr)) {
+					#
+				} else {
+					check_absolute_file($file, $herecurr);
+				}
+			}
+		}
+
+# UTF-8 regex found at http://www.w3.org/International/questions/qa-forms-utf-8.en.php
+		if (($realfile =~ /^$/ || $line =~ /^\+/) &&
+		    $rawline !~ m/^$UTF8*$/) {
+			my ($utf8_prefix) = ($rawline =~ /^($UTF8*)/);
+
+			my $blank = copy_spacing($rawline);
+			my $ptr = substr($blank, 0, length($utf8_prefix)) . "^";
+			my $hereptr = "$hereline$ptr\n";
+
+			ERROR("Invalid UTF-8, patch and commit message should be encoded in UTF-8\n" . $hereptr);
+		}
+
+# ignore non-hunk lines and lines being removed
+		next if (!$hunk_line || $line =~ /^-/);
+
+#trailing whitespace
+		if ($line =~ /^\+.*\015/) {
+			my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+			ERROR("DOS line endings\n" . $herevet);
+
+		} elsif ($rawline =~ /^\+.*\S\s+$/ || $rawline =~ /^\+\s+$/) {
+			my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+			ERROR("trailing whitespace\n" . $herevet);
+			$rpt_cleaners = 1;
+		}
+
+# check for Kconfig help text having a real description
+# Only applies when adding the entry originally, after that we do not have
+# sufficient context to determine whether it is indeed long enough.
+		if ($realfile =~ /Kconfig/ &&
+		    $line =~ /\+\s*(?:---)?help(?:---)?$/) {
+			my $length = 0;
+			my $cnt = $realcnt;
+			my $ln = $linenr + 1;
+			my $f;
+			my $is_end = 0;
+			while ($cnt > 0 && defined $lines[$ln - 1]) {
+				$f = $lines[$ln - 1];
+				$cnt-- if ($lines[$ln - 1] !~ /^-/);
+				$is_end = $lines[$ln - 1] =~ /^\+/;
+				$ln++;
+
+				next if ($f =~ /^-/);
+				$f =~ s/^.//;
+				$f =~ s/#.*//;
+				$f =~ s/^\s+//;
+				next if ($f =~ /^$/);
+				if ($f =~ /^\s*config\s/) {
+					$is_end = 1;
+					last;
+				}
+				$length++;
+			}
+			WARN("please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($is_end && $length < 4);
+			#print "is_end<$is_end> length<$length>\n";
+		}
+
+# check we are in a valid source file if not then ignore this hunk
+		next if ($realfile !~ /\.(h|c|cpp|s|S|pl|sh)$/);
+
+#80 column limit
+		if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ &&
+		    $rawline !~ /^.\s*\*\s*\@$Ident\s/ &&
+		    !($line =~ /^\+\s*$logFunctions\s*\(\s*(?:(KERN_\S+\s*|[^"]*))?"[X\t]*"\s*(?:,|\)\s*;)\s*$/ ||
+		    $line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) &&
+		    $length > 80)
+		{
+			WARN("line over 80 characters\n" . $herecurr);
+		}
+
+# check for spaces before a quoted newline
+		if ($rawline =~ /^.*\".*\s\\n/) {
+			WARN("unnecessary whitespace before a quoted newline\n" . $herecurr);
+		}
+
+# check for adding lines without a newline.
+		if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) {
+			WARN("adding a line without newline at end of file\n" . $herecurr);
+		}
+
+# Blackfin: use hi/lo macros
+		if ($realfile =~ m@arch/blackfin/.*\.S$@) {
+			if ($line =~ /\.[lL][[:space:]]*=.*&[[:space:]]*0x[fF][fF][fF][fF]/) {
+				my $herevet = "$here\n" . cat_vet($line) . "\n";
+				ERROR("use the LO() macro, not (... & 0xFFFF)\n" . $herevet);
+			}
+			if ($line =~ /\.[hH][[:space:]]*=.*>>[[:space:]]*16/) {
+				my $herevet = "$here\n" . cat_vet($line) . "\n";
+				ERROR("use the HI() macro, not (... >> 16)\n" . $herevet);
+			}
+		}
+
+# check we are in a valid source file C or perl if not then ignore this hunk
+		next if ($realfile !~ /\.(h|c|cpp|pl)$/);
+
+# in QEMU, no tabs are allowed
+		if ($rawline =~ /^\+.*\t/) {
+			my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+			ERROR("code indent should never use tabs\n" . $herevet);
+			$rpt_cleaners = 1;
+		}
+
+# check we are in a valid C source file if not then ignore this hunk
+		next if ($realfile !~ /\.(h|c|cpp)$/);
+
+# check for RCS/CVS revision markers
+		if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) {
+			WARN("CVS style keyword markers, these will _not_ be updated\n". $herecurr);
+		}
+
+# Blackfin: don't use __builtin_bfin_[cs]sync
+		if ($line =~ /__builtin_bfin_csync/) {
+			my $herevet = "$here\n" . cat_vet($line) . "\n";
+			ERROR("use the CSYNC() macro in asm/blackfin.h\n" . $herevet);
+		}
+		if ($line =~ /__builtin_bfin_ssync/) {
+			my $herevet = "$here\n" . cat_vet($line) . "\n";
+			ERROR("use the SSYNC() macro in asm/blackfin.h\n" . $herevet);
+		}
+
+# Check for potential 'bare' types
+		my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
+		    $realline_next);
+		if ($realcnt && $line =~ /.\s*\S/) {
+			($stat, $cond, $line_nr_next, $remain_next, $off_next) =
+				ctx_statement_block($linenr, $realcnt, 0);
+			$stat =~ s/\n./\n /g;
+			$cond =~ s/\n./\n /g;
+
+			# Find the real next line.
+			$realline_next = $line_nr_next;
+			if (defined $realline_next &&
+			    (!defined $lines[$realline_next - 1] ||
+			     substr($lines[$realline_next - 1], $off_next) =~ /^\s*$/)) {
+				$realline_next++;
+			}
+
+			my $s = $stat;
+			$s =~ s/{.*$//s;
+
+			# Ignore goto labels.
+			if ($s =~ /$Ident:\*$/s) {
+
+			# Ignore functions being called
+			} elsif ($s =~ /^.\s*$Ident\s*\(/s) {
+
+			} elsif ($s =~ /^.\s*else\b/s) {
+
+			# declarations always start with types
+			} elsif ($prev_values eq 'E' && $s =~ /^.\s*(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?((?:\s*$Ident)+?)\b(?:\s+$Sparse)?\s*\**\s*(?:$Ident|\(\*[^\)]*\))(?:\s*$Modifier)?\s*(?:;|=|,|\()/s) {
+				my $type = $1;
+				$type =~ s/\s+/ /g;
+				possible($type, "A:" . $s);
+
+			# definitions in global scope can only start with types
+			} elsif ($s =~ /^.(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?($Ident)\b\s*(?!:)/s) {
+				possible($1, "B:" . $s);
+			}
+
+			# any (foo ... *) is a pointer cast, and foo is a type
+			while ($s =~ /\(($Ident)(?:\s+$Sparse)*[\s\*]+\s*\)/sg) {
+				possible($1, "C:" . $s);
+			}
+
+			# Check for any sort of function declaration.
+			# int foo(something bar, other baz);
+			# void (*store_gdt)(x86_descr_ptr *);
+			if ($prev_values eq 'E' && $s =~ /^(.(?:typedef\s*)?(?:(?:$Storage|$Inline)\s*)*\s*$Type\s*(?:\b$Ident|\(\*\s*$Ident\))\s*)\(/s) {
+				my ($name_len) = length($1);
+
+				my $ctx = $s;
+				substr($ctx, 0, $name_len + 1, '');
+				$ctx =~ s/\)[^\)]*$//;
+
+				for my $arg (split(/\s*,\s*/, $ctx)) {
+					if ($arg =~ /^(?:const\s+)?($Ident)(?:\s+$Sparse)*\s*\**\s*(:?\b$Ident)?$/s || $arg =~ /^($Ident)$/s) {
+
+						possible($1, "D:" . $s);
+					}
+				}
+			}
+
+		}
+
+#
+# Checks which may be anchored in the context.
+#
+
+# Check for switch () and associated case and default
+# statements should be at the same indent.
+		if ($line=~/\bswitch\s*\(.*\)/) {
+			my $err = '';
+			my $sep = '';
+			my @ctx = ctx_block_outer($linenr, $realcnt);
+			shift(@ctx);
+			for my $ctx (@ctx) {
+				my ($clen, $cindent) = line_stats($ctx);
+				if ($ctx =~ /^\+\s*(case\s+|default:)/ &&
+							$indent != $cindent) {
+					$err .= "$sep$ctx\n";
+					$sep = '';
+				} else {
+					$sep = "[...]\n";
+				}
+			}
+			if ($err ne '') {
+				ERROR("switch and case should be at the same indent\n$hereline$err");
+			}
+		}
+
+# if/while/etc brace do not go on next line, unless defining a do while loop,
+# or if that brace on the next line is for something else
+		if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.\s*\#/) {
+			my $pre_ctx = "$1$2";
+
+			my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0);
+			my $ctx_cnt = $realcnt - $#ctx - 1;
+			my $ctx = join("\n", @ctx);
+
+			my $ctx_ln = $linenr;
+			my $ctx_skip = $realcnt;
+
+			while ($ctx_skip > $ctx_cnt || ($ctx_skip == $ctx_cnt &&
+					defined $lines[$ctx_ln - 1] &&
+					$lines[$ctx_ln - 1] =~ /^-/)) {
+				##print "SKIP<$ctx_skip> CNT<$ctx_cnt>\n";
+				$ctx_skip-- if (!defined $lines[$ctx_ln - 1] || $lines[$ctx_ln - 1] !~ /^-/);
+				$ctx_ln++;
+			}
+
+			#print "realcnt<$realcnt> ctx_cnt<$ctx_cnt>\n";
+			#print "pre<$pre_ctx>\nline<$line>\nctx<$ctx>\nnext<$lines[$ctx_ln - 1]>\n";
+
+			if ($ctx !~ /{\s*/ && defined($lines[$ctx_ln -1]) && $lines[$ctx_ln - 1] =~ /^\+\s*{/) {
+				ERROR("that open brace { should be on the previous line\n" .
+					"$here\n$ctx\n$rawlines[$ctx_ln - 1]\n");
+			}
+			if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ &&
+			    $ctx =~ /\)\s*\;\s*$/ &&
+			    defined $lines[$ctx_ln - 1])
+			{
+				my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]);
+				if ($nindent > $indent) {
+					WARN("trailing semicolon indicates no statements, indent implies otherwise\n" .
+						"$here\n$ctx\n$rawlines[$ctx_ln - 1]\n");
+				}
+			}
+		}
+
+# Check relative indent for conditionals and blocks.
+		if ($line =~ /\b(?:(?:if|while|for)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {
+			my ($s, $c) = ($stat, $cond);
+
+			substr($s, 0, length($c), '');
+
+			# Make sure we remove the line prefixes as we have
+			# none on the first line, and are going to readd them
+			# where necessary.
+			$s =~ s/\n./\n/gs;
+
+			# Find out how long the conditional actually is.
+			my @newlines = ($c =~ /\n/gs);
+			my $cond_lines = 1 + $#newlines;
+
+			# We want to check the first line inside the block
+			# starting at the end of the conditional, so remove:
+			#  1) any blank line termination
+			#  2) any opening brace { on end of the line
+			#  3) any do (...) {
+			my $continuation = 0;
+			my $check = 0;
+			$s =~ s/^.*\bdo\b//;
+			$s =~ s/^\s*{//;
+			if ($s =~ s/^\s*\\//) {
+				$continuation = 1;
+			}
+			if ($s =~ s/^\s*?\n//) {
+				$check = 1;
+				$cond_lines++;
+			}
+
+			# Also ignore a loop construct at the end of a
+			# preprocessor statement.
+			if (($prevline =~ /^.\s*#\s*define\s/ ||
+			    $prevline =~ /\\\s*$/) && $continuation == 0) {
+				$check = 0;
+			}
+
+			my $cond_ptr = -1;
+			$continuation = 0;
+			while ($cond_ptr != $cond_lines) {
+				$cond_ptr = $cond_lines;
+
+				# If we see an #else/#elif then the code
+				# is not linear.
+				if ($s =~ /^\s*\#\s*(?:else|elif)/) {
+					$check = 0;
+				}
+
+				# Ignore:
+				#  1) blank lines, they should be at 0,
+				#  2) preprocessor lines, and
+				#  3) labels.
+				if ($continuation ||
+				    $s =~ /^\s*?\n/ ||
+				    $s =~ /^\s*#\s*?/ ||
+				    $s =~ /^\s*$Ident\s*:/) {
+					$continuation = ($s =~ /^.*?\\\n/) ? 1 : 0;
+					if ($s =~ s/^.*?\n//) {
+						$cond_lines++;
+					}
+				}
+			}
+
+			my (undef, $sindent) = line_stats("+" . $s);
+			my $stat_real = raw_line($linenr, $cond_lines);
+
+			# Check if either of these lines are modified, else
+			# this is not this patch's fault.
+			if (!defined($stat_real) ||
+			    $stat !~ /^\+/ && $stat_real !~ /^\+/) {
+				$check = 0;
+			}
+			if (defined($stat_real) && $cond_lines > 1) {
+				$stat_real = "[...]\n$stat_real";
+			}
+
+			#print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n";
+
+			if ($check && (($sindent % 4) != 0 ||
+			    ($sindent <= $indent && $s ne ''))) {
+				WARN("suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
+			}
+		}
+
+		# Track the 'values' across context and added lines.
+		my $opline = $line; $opline =~ s/^./ /;
+		my ($curr_values, $curr_vars) =
+				annotate_values($opline . "\n", $prev_values);
+		$curr_values = $prev_values . $curr_values;
+		if ($dbg_values) {
+			my $outline = $opline; $outline =~ s/\t/ /g;
+			print "$linenr > .$outline\n";
+			print "$linenr > $curr_values\n";
+			print "$linenr >  $curr_vars\n";
+		}
+		$prev_values = substr($curr_values, -1);
+
+#ignore lines not being added
+		if ($line=~/^[^\+]/) {next;}
+
+# TEST: allow direct testing of the type matcher.
+		if ($dbg_type) {
+			if ($line =~ /^.\s*$Declare\s*$/) {
+				ERROR("TEST: is type\n" . $herecurr);
+			} elsif ($dbg_type > 1 && $line =~ /^.+($Declare)/) {
+				ERROR("TEST: is not type ($1 is)\n". $herecurr);
+			}
+			next;
+		}
+# TEST: allow direct testing of the attribute matcher.
+		if ($dbg_attr) {
+			if ($line =~ /^.\s*$Modifier\s*$/) {
+				ERROR("TEST: is attr\n" . $herecurr);
+			} elsif ($dbg_attr > 1 && $line =~ /^.+($Modifier)/) {
+				ERROR("TEST: is not attr ($1 is)\n". $herecurr);
+			}
+			next;
+		}
+
+# check for initialisation to aggregates open brace on the next line
+		if ($line =~ /^.\s*{/ &&
+		    $prevline =~ /(?:^|[^=])=\s*$/) {
+			ERROR("that open brace { should be on the previous line\n" . $hereprev);
+		}
+
+#
+# Checks which are anchored on the added line.
+#
+
+# check for malformed paths in #include statements (uses RAW line)
+		if ($rawline =~ m{^.\s*\#\s*include\s+[<"](.*)[">]}) {
+			my $path = $1;
+			if ($path =~ m{//}) {
+				ERROR("malformed #include filename\n" .
+					$herecurr);
+			}
+		}
+
+# no C99 // comments
+		if ($line =~ m{//}) {
+			ERROR("do not use C99 // comments\n" . $herecurr);
+		}
+		# Remove C99 comments.
+		$line =~ s@//.*@@;
+		$opline =~ s@//.*@@;
+
+# EXPORT_SYMBOL should immediately follow the thing it is exporting, consider
+# the whole statement.
+#print "APW <$lines[$realline_next - 1]>\n";
+		if (defined $realline_next &&
+		    exists $lines[$realline_next - 1] &&
+		    !defined $suppress_export{$realline_next} &&
+		    ($lines[$realline_next - 1] =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
+		     $lines[$realline_next - 1] =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
+			# Handle definitions which produce identifiers with
+			# a prefix:
+			#   XXX(foo);
+			#   EXPORT_SYMBOL(something_foo);
+			my $name = $1;
+			if ($stat =~ /^.([A-Z_]+)\s*\(\s*($Ident)/ &&
+			    $name =~ /^${Ident}_$2/) {
+#print "FOO C name<$name>\n";
+				$suppress_export{$realline_next} = 1;
+
+			} elsif ($stat !~ /(?:
+				\n.}\s*$|
+				^.DEFINE_$Ident\(\Q$name\E\)|
+				^.DECLARE_$Ident\(\Q$name\E\)|
+				^.LIST_HEAD\(\Q$name\E\)|
+				^.(?:$Storage\s+)?$Type\s*\(\s*\*\s*\Q$name\E\s*\)\s*\(|
+				\b\Q$name\E(?:\s+$Attribute)*\s*(?:;|=|\[|\()
+			    )/x) {
+#print "FOO A<$lines[$realline_next - 1]> stat<$stat> name<$name>\n";
+				$suppress_export{$realline_next} = 2;
+			} else {
+				$suppress_export{$realline_next} = 1;
+			}
+		}
+		if (!defined $suppress_export{$linenr} &&
+		    $prevline =~ /^.\s*$/ &&
+		    ($line =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
+		     $line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
+#print "FOO B <$lines[$linenr - 1]>\n";
+			$suppress_export{$linenr} = 2;
+		}
+		if (defined $suppress_export{$linenr} &&
+		    $suppress_export{$linenr} == 2) {
+			WARN("EXPORT_SYMBOL(foo); should immediately follow its function/variable\n" . $herecurr);
+		}
+
+# check for global initialisers.
+		if ($line =~ /^.$Type\s*$Ident\s*(?:\s+$Modifier)*\s*=\s*(0|NULL|false)\s*;/) {
+			ERROR("do not initialise globals to 0 or NULL\n" .
+				$herecurr);
+		}
+# check for static initialisers.
+		if ($line =~ /\bstatic\s.*=\s*(0|NULL|false)\s*;/) {
+			ERROR("do not initialise statics to 0 or NULL\n" .
+				$herecurr);
+		}
+
+# * goes on variable not on type
+		# (char*[ const])
+		if ($line =~ m{\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\)}) {
+			my ($from, $to) = ($1, $1);
+
+			# Should start with a space.
+			$to =~ s/^(\S)/ $1/;
+			# Should not end with a space.
+			$to =~ s/\s+$//;
+			# '*'s should not have spaces between.
+			while ($to =~ s/\*\s+\*/\*\*/) {
+			}
+
+			#print "from<$from> to<$to>\n";
+			if ($from ne $to) {
+				ERROR("\"(foo$from)\" should be \"(foo$to)\"\n" .  $herecurr);
+			}
+		} elsif ($line =~ m{\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident)}) {
+			my ($from, $to, $ident) = ($1, $1, $2);
+
+			# Should start with a space.
+			$to =~ s/^(\S)/ $1/;
+			# Should not end with a space.
+			$to =~ s/\s+$//;
+			# '*'s should not have spaces between.
+			while ($to =~ s/\*\s+\*/\*\*/) {
+			}
+			# Modifiers should have spaces.
+			$to =~ s/(\b$Modifier$)/$1 /;
+
+			#print "from<$from> to<$to> ident<$ident>\n";
+			if ($from ne $to && $ident !~ /^$Modifier$/) {
+				ERROR("\"foo${from}bar\" should be \"foo${to}bar\"\n" .  $herecurr);
+			}
+		}
+
+# # no BUG() or BUG_ON()
+# 		if ($line =~ /\b(BUG|BUG_ON)\b/) {
+# 			print "Try to use WARN_ON & Recovery code rather than BUG() or BUG_ON()\n";
+# 			print "$herecurr";
+# 			$clean = 0;
+# 		}
+
+		if ($line =~ /\bLINUX_VERSION_CODE\b/) {
+			WARN("LINUX_VERSION_CODE should be avoided, code should be for the version to which it is merged\n" . $herecurr);
+		}
+
+# printk should use KERN_* levels.  Note that follow on printk's on the
+# same line do not need a level, so we use the current block context
+# to try and find and validate the current printk.  In summary the current
+# printk includes all preceding printk's which have no newline on the end.
+# we assume the first bad printk is the one to report.
+		if ($line =~ /\bprintk\((?!KERN_)\s*"/) {
+			my $ok = 0;
+			for (my $ln = $linenr - 1; $ln >= $first_line; $ln--) {
+				#print "CHECK<$lines[$ln - 1]\n";
+				# we have a preceding printk if it ends
+				# with "\n" ignore it, else it is to blame
+				if ($lines[$ln - 1] =~ m{\bprintk\(}) {
+					if ($rawlines[$ln - 1] !~ m{\\n"}) {
+						$ok = 1;
+					}
+					last;
+				}
+			}
+			if ($ok == 0) {
+				WARN("printk() should include KERN_ facility level\n" . $herecurr);
+			}
+		}
+
+# function brace can't be on same line, except for #defines of do while,
+# or if closed on same line
+		if (($line=~/$Type\s*$Ident\(.*\).*\s{/) and
+		    !($line=~/\#\s*define.*do\s{/) and !($line=~/}/)) {
+			ERROR("open brace '{' following function declarations go on the next line\n" . $herecurr);
+		}
+
+# open braces for enum, union and struct go on the same line.
+		if ($line =~ /^.\s*{/ &&
+		    $prevline =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident)?\s*$/) {
+			ERROR("open brace '{' following $1 go on the same line\n" . $hereprev);
+		}
+
+# missing space after union, struct or enum definition
+		if ($line =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident)?(?:\s+$Ident)?[=\{]/) {
+		    WARN("missing space after $1 definition\n" . $herecurr);
+		}
+
+# check for spacing round square brackets; allowed:
+#  1. with a type on the left -- int [] a;
+#  2. at the beginning of a line for slice initialisers -- [0...10] = 5,
+#  3. inside a curly brace -- = { [0...10] = 5 }
+		while ($line =~ /(.*?\s)\[/g) {
+			my ($where, $prefix) = ($-[1], $1);
+			if ($prefix !~ /$Type\s+$/ &&
+			    ($where != 0 || $prefix !~ /^.\s+$/) &&
+			    $prefix !~ /{\s+$/) {
+				ERROR("space prohibited before open square bracket '['\n" . $herecurr);
+			}
+		}
+
+# check for spaces between functions and their parentheses.
+		while ($line =~ /($Ident)\s+\(/g) {
+			my $name = $1;
+			my $ctx_before = substr($line, 0, $-[1]);
+			my $ctx = "$ctx_before$name";
+
+			# Ignore those directives where spaces _are_ permitted.
+			if ($name =~ /^(?:
+				if|for|while|switch|return|case|
+				volatile|__volatile__|
+				__attribute__|format|__extension__|
+				asm|__asm__)$/x)
+			{
+
+			# Ignore 'catch (...)' in C++
+			} elsif ($name =~ /^catch$/ && $realfile =~ /(\.cpp|\.h)$/) {
+
+			# cpp #define statements have non-optional spaces, ie
+			# if there is a space between the name and the open
+			# parenthesis it is simply not a parameter group.
+			} elsif ($ctx_before =~ /^.\s*\#\s*define\s*$/) {
+
+			# cpp #elif statement condition may start with a (
+			} elsif ($ctx =~ /^.\s*\#\s*elif\s*$/) {
+
+			# If this whole things ends with a type its most
+			# likely a typedef for a function.
+			} elsif ($ctx =~ /$Type$/) {
+
+			} else {
+				WARN("space prohibited between function name and open parenthesis '('\n" . $herecurr);
+			}
+		}
+# Check operator spacing.
+		if (!($line=~/\#\s*include/)) {
+			my $ops = qr{
+				<<=|>>=|<=|>=|==|!=|
+				\+=|-=|\*=|\/=|%=|\^=|\|=|&=|
+				=>|->|<<|>>|<|>|=|!|~|
+				&&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%|
+				\?|::|:
+			}x;
+			my @elements = split(/($ops|;)/, $opline);
+			my $off = 0;
+
+			my $blank = copy_spacing($opline);
+
+			for (my $n = 0; $n < $#elements; $n += 2) {
+				$off += length($elements[$n]);
+
+				# Pick up the preceding and succeeding characters.
+				my $ca = substr($opline, 0, $off);
+				my $cc = '';
+				if (length($opline) >= ($off + length($elements[$n + 1]))) {
+					$cc = substr($opline, $off + length($elements[$n + 1]));
+				}
+				my $cb = "$ca$;$cc";
+
+				my $a = '';
+				$a = 'V' if ($elements[$n] ne '');
+				$a = 'W' if ($elements[$n] =~ /\s$/);
+				$a = 'C' if ($elements[$n] =~ /$;$/);
+				$a = 'B' if ($elements[$n] =~ /(\[|\()$/);
+				$a = 'O' if ($elements[$n] eq '');
+				$a = 'E' if ($ca =~ /^\s*$/);
+
+				my $op = $elements[$n + 1];
+
+				my $c = '';
+				if (defined $elements[$n + 2]) {
+					$c = 'V' if ($elements[$n + 2] ne '');
+					$c = 'W' if ($elements[$n + 2] =~ /^\s/);
+					$c = 'C' if ($elements[$n + 2] =~ /^$;/);
+					$c = 'B' if ($elements[$n + 2] =~ /^(\)|\]|;)/);
+					$c = 'O' if ($elements[$n + 2] eq '');
+					$c = 'E' if ($elements[$n + 2] =~ /^\s*\\$/);
+				} else {
+					$c = 'E';
+				}
+
+				my $ctx = "${a}x${c}";
+
+				my $at = "(ctx:$ctx)";
+
+				my $ptr = substr($blank, 0, $off) . "^";
+				my $hereptr = "$hereline$ptr\n";
+
+				# Pull out the value of this operator.
+				my $op_type = substr($curr_values, $off + 1, 1);
+
+				# Get the full operator variant.
+				my $opv = $op . substr($curr_vars, $off, 1);
+
+				# Ignore operators passed as parameters.
+				if ($op_type ne 'V' &&
+				    $ca =~ /\s$/ && $cc =~ /^\s*,/) {
+
+#				# Ignore comments
+#				} elsif ($op =~ /^$;+$/) {
+
+				# ; should have either the end of line or a space or \ after it
+				} elsif ($op eq ';') {
+					if ($ctx !~ /.x[WEBC]/ &&
+					    $cc !~ /^\\/ && $cc !~ /^;/) {
+						ERROR("space required after that '$op' $at\n" . $hereptr);
+					}
+
+				# // is a comment
+				} elsif ($op eq '//') {
+
+				# Ignore : used in class declaration in C++
+				} elsif ($opv eq ':B' && $ctx =~ /Wx[WE]/ &&
+						 $line =~ /class/ && $realfile =~ /(\.cpp|\.h)$/) {
+
+				# No spaces for:
+				#   ->
+				#   :   when part of a bitfield
+				} elsif ($op eq '->' || $opv eq ':B') {
+					if ($ctx =~ /Wx.|.xW/) {
+						ERROR("spaces prohibited around that '$op' $at\n" . $hereptr);
+					}
+
+				# , must have a space on the right.
+                                # not required when having a single },{ on one line
+				} elsif ($op eq ',') {
+					if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/ &&
+                                            ($elements[$n] . $elements[$n + 2]) !~ " *}{") {
+						ERROR("space required after that '$op' $at\n" . $hereptr);
+					}
+
+				# '*' as part of a type definition -- reported already.
+				} elsif ($opv eq '*_') {
+					#warn "'*' is part of type\n";
+
+				# unary operators should have a space before and
+				# none after.  May be left adjacent to another
+				# unary operator, or a cast
+				} elsif ($op eq '!' || $op eq '~' ||
+					 $opv eq '*U' || $opv eq '-U' ||
+					 $opv eq '&U' || $opv eq '&&U') {
+					if ($op eq '~' && $ca =~ /::$/ && $realfile =~ /(\.cpp|\.h)$/) {
+						# '~' used as a name of Destructor
+
+					} elsif ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
+						ERROR("space required before that '$op' $at\n" . $hereptr);
+					}
+					if ($op eq '*' && $cc =~/\s*$Modifier\b/) {
+						# A unary '*' may be const
+
+					} elsif ($ctx =~ /.xW/) {
+						ERROR("space prohibited after that '$op' $at\n" . $hereptr);
+					}
+
+				# unary ++ and unary -- are allowed no space on one side.
+				} elsif ($op eq '++' or $op eq '--') {
+					if ($ctx !~ /[WEOBC]x[^W]/ && $ctx !~ /[^W]x[WOBEC]/) {
+						ERROR("space required one side of that '$op' $at\n" . $hereptr);
+					}
+					if ($ctx =~ /Wx[BE]/ ||
+					    ($ctx =~ /Wx./ && $cc =~ /^;/)) {
+						ERROR("space prohibited before that '$op' $at\n" . $hereptr);
+					}
+					if ($ctx =~ /ExW/) {
+						ERROR("space prohibited after that '$op' $at\n" . $hereptr);
+					}
+
+
+				# << and >> may either have or not have spaces both sides
+				} elsif ($op eq '<<' or $op eq '>>' or
+					 $op eq '&' or $op eq '^' or $op eq '|' or
+					 $op eq '+' or $op eq '-' or
+					 $op eq '*' or $op eq '/' or
+					 $op eq '%')
+				{
+					if ($ctx =~ /Wx[^WCE]|[^WCE]xW/) {
+						ERROR("need consistent spacing around '$op' $at\n" .
+							$hereptr);
+					}
+
+				# A colon needs no spaces before when it is
+				# terminating a case value or a label.
+				} elsif ($opv eq ':C' || $opv eq ':L') {
+					if ($ctx =~ /Wx./) {
+						ERROR("space prohibited before that '$op' $at\n" . $hereptr);
+					}
+
+				# All the others need spaces both sides.
+				} elsif ($ctx !~ /[EWC]x[CWE]/) {
+					my $ok = 0;
+
+					if ($realfile =~ /\.cpp|\.h$/) {
+						# Ignore template arguments <...> in C++
+						if (($op eq '<' || $op eq '>') && $line =~ /<.*>/) {
+							$ok = 1;
+						}
+
+						# Ignore :: in C++
+						if ($op eq '::') {
+							$ok = 1;
+						}
+					}
+
+					# Ignore email addresses <foo@bar>
+					if (($op eq '<' &&
+					     $cc =~ /^\S+\@\S+>/) ||
+					    ($op eq '>' &&
+					     $ca =~ /<\S+\@\S+$/))
+					{
+						$ok = 1;
+					}
+
+					# Ignore ?:
+					if (($opv eq ':O' && $ca =~ /\?$/) ||
+					    ($op eq '?' && $cc =~ /^:/)) {
+						$ok = 1;
+					}
+
+					if ($ok == 0) {
+						ERROR("spaces required around that '$op' $at\n" . $hereptr);
+					}
+				}
+				$off += length($elements[$n + 1]);
+			}
+		}
+
+# check for multiple assignments
+		if ($line =~ /^.\s*$Lval\s*=\s*$Lval\s*=(?!=)/) {
+			CHK("multiple assignments should be avoided\n" . $herecurr);
+		}
+
+## # check for multiple declarations, allowing for a function declaration
+## # continuation.
+## 		if ($line =~ /^.\s*$Type\s+$Ident(?:\s*=[^,{]*)?\s*,\s*$Ident.*/ &&
+## 		    $line !~ /^.\s*$Type\s+$Ident(?:\s*=[^,{]*)?\s*,\s*$Type\s*$Ident.*/) {
+##
+## 			# Remove any bracketed sections to ensure we do not
+## 			# falsly report the parameters of functions.
+## 			my $ln = $line;
+## 			while ($ln =~ s/\([^\(\)]*\)//g) {
+## 			}
+## 			if ($ln =~ /,/) {
+## 				WARN("declaring multiple variables together should be avoided\n" . $herecurr);
+## 			}
+## 		}
+
+#need space before brace following if, while, etc
+		if (($line =~ /\(.*\){/ && $line !~ /\($Type\){/) ||
+		    $line =~ /do{/) {
+			ERROR("space required before the open brace '{'\n" . $herecurr);
+		}
+
+# closing brace should have a space following it when it has anything
+# on the line
+		if ($line =~ /}(?!(?:,|;|\)))\S/) {
+			ERROR("space required after that close brace '}'\n" . $herecurr);
+		}
+
+# check spacing on square brackets
+		if ($line =~ /\[\s/ && $line !~ /\[\s*$/) {
+			ERROR("space prohibited after that open square bracket '['\n" . $herecurr);
+		}
+		if ($line =~ /\s\]/) {
+			ERROR("space prohibited before that close square bracket ']'\n" . $herecurr);
+		}
+
+# check spacing on parentheses
+		if ($line =~ /\(\s/ && $line !~ /\(\s*(?:\\)?$/ &&
+		    $line !~ /for\s*\(\s+;/) {
+			ERROR("space prohibited after that open parenthesis '('\n" . $herecurr);
+		}
+		if ($line =~ /(\s+)\)/ && $line !~ /^.\s*\)/ &&
+		    $line !~ /for\s*\(.*;\s+\)/ &&
+		    $line !~ /:\s+\)/) {
+			ERROR("space prohibited before that close parenthesis ')'\n" . $herecurr);
+		}
+
+# Return is not a function.
+		if (defined($stat) && $stat =~ /^.\s*return(\s*)(\(.*);/s) {
+			my $spacing = $1;
+			my $value = $2;
+
+			# Flatten any parentheses
+			$value =~ s/\(/ \(/g;
+			$value =~ s/\)/\) /g;
+			while ($value =~ s/\[[^\{\}]*\]/1/ ||
+			       $value !~ /(?:$Ident|-?$Constant)\s*
+					     $Compare\s*
+					     (?:$Ident|-?$Constant)/x &&
+			       $value =~ s/\([^\(\)]*\)/1/) {
+			}
+#print "value<$value>\n";
+			if ($value =~ /^\s*(?:$Ident|-?$Constant)\s*$/) {
+				ERROR("return is not a function, parentheses are not required\n" . $herecurr);
+
+			} elsif ($spacing !~ /\s+/) {
+				ERROR("space required before the open parenthesis '('\n" . $herecurr);
+			}
+		}
+# Return of what appears to be an errno should normally be -'ve
+		if ($line =~ /^.\s*return\s*(E[A-Z]*)\s*;/) {
+			my $name = $1;
+			if ($name ne 'EOF' && $name ne 'ERROR') {
+				CHK("return of an errno should typically be -ve (return -$1)\n" . $herecurr);
+			}
+		}
+
+# Need a space before open parenthesis after if, while etc
+		if ($line=~/\b(if|while|for|switch)\(/) {
+			ERROR("space required before the open parenthesis '('\n" . $herecurr);
+		}
+
+# Check for illegal assignment in if conditional -- and check for trailing
+# statements after the conditional.
+		if ($line =~ /do\s*(?!{)/) {
+			my ($stat_next) = ctx_statement_block($line_nr_next,
+						$remain_next, $off_next);
+			$stat_next =~ s/\n./\n /g;
+			##print "stat<$stat> stat_next<$stat_next>\n";
+
+			if ($stat_next =~ /^\s*while\b/) {
+				# If the statement carries leading newlines,
+				# then count those as offsets.
+				my ($whitespace) =
+					($stat_next =~ /^((?:\s*\n[+-])*\s*)/s);
+				my $offset =
+					statement_rawlines($whitespace) - 1;
+
+				$suppress_whiletrailers{$line_nr_next +
+								$offset} = 1;
+			}
+		}
+		if (!defined $suppress_whiletrailers{$linenr} &&
+		    $line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) {
+			my ($s, $c) = ($stat, $cond);
+
+			if ($c =~ /\bif\s*\(.*[^<>!=]=[^=].*/s) {
+				ERROR("do not use assignment in if condition\n" . $herecurr);
+			}
+
+			# Find out what is on the end of the line after the
+			# conditional.
+			substr($s, 0, length($c), '');
+			$s =~ s/\n.*//g;
+			$s =~ s/$;//g; 	# Remove any comments
+			if (length($c) && $s !~ /^\s*{?\s*\\*\s*$/ &&
+			    $c !~ /}\s*while\s*/)
+			{
+				# Find out how long the conditional actually is.
+				my @newlines = ($c =~ /\n/gs);
+				my $cond_lines = 1 + $#newlines;
+				my $stat_real = '';
+
+				$stat_real = raw_line($linenr, $cond_lines)
+							. "\n" if ($cond_lines);
+				if (defined($stat_real) && $cond_lines > 1) {
+					$stat_real = "[...]\n$stat_real";
+				}
+
+				ERROR("trailing statements should be on next line\n" . $herecurr . $stat_real);
+			}
+		}
+
+# Check for bitwise tests written as boolean
+		if ($line =~ /
+			(?:
+				(?:\[|\(|\&\&|\|\|)
+				\s*0[xX][0-9]+\s*
+				(?:\&\&|\|\|)
+			|
+				(?:\&\&|\|\|)
+				\s*0[xX][0-9]+\s*
+				(?:\&\&|\|\||\)|\])
+			)/x)
+		{
+			WARN("boolean test with hexadecimal, perhaps just 1 \& or \|?\n" . $herecurr);
+		}
+
+# if and else should not have general statements after it
+		if ($line =~ /^.\s*(?:}\s*)?else\b(.*)/) {
+			my $s = $1;
+			$s =~ s/$;//g; 	# Remove any comments
+			if ($s !~ /^\s*(?:\sif|(?:{|)\s*\\?\s*$)/) {
+				ERROR("trailing statements should be on next line\n" . $herecurr);
+			}
+		}
+# if should not continue a brace
+		if ($line =~ /}\s*if\b/) {
+			ERROR("trailing statements should be on next line\n" .
+				$herecurr);
+		}
+# case and default should not have general statements after them
+		if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g &&
+		    $line !~ /\G(?:
+			(?:\s*$;*)(?:\s*{)?(?:\s*$;*)(?:\s*\\)?\s*$|
+			\s*return\s+
+		    )/xg)
+		{
+			ERROR("trailing statements should be on next line\n" . $herecurr);
+		}
+
+		# Check for }<nl>else {, these must be at the same
+		# indent level to be relevant to each other.
+		if ($prevline=~/}\s*$/ and $line=~/^.\s*else\s*/ and
+						$previndent == $indent) {
+			ERROR("else should follow close brace '}'\n" . $hereprev);
+		}
+
+		if ($prevline=~/}\s*$/ and $line=~/^.\s*while\s*/ and
+						$previndent == $indent) {
+			my ($s, $c) = ctx_statement_block($linenr, $realcnt, 0);
+
+			# Find out what is on the end of the line after the
+			# conditional.
+			substr($s, 0, length($c), '');
+			$s =~ s/\n.*//g;
+
+			if ($s =~ /^\s*;/) {
+				ERROR("while should follow close brace '}'\n" . $hereprev);
+			}
+		}
+
+#studly caps, commented out until figure out how to distinguish between use of existing and adding new
+#		if (($line=~/[\w_][a-z\d]+[A-Z]/) and !($line=~/print/)) {
+#		    print "No studly caps, use _\n";
+#		    print "$herecurr";
+#		    $clean = 0;
+#		}
+
+#no spaces allowed after \ in define
+		if ($line=~/\#\s*define.*\\\s$/) {
+			WARN("Whitepspace after \\ makes next lines useless\n" . $herecurr);
+		}
+
+#warn if <asm/foo.h> is #included and <linux/foo.h> is available (uses RAW line)
+		if ($tree && $rawline =~ m{^.\s*\#\s*include\s*\<asm\/(.*)\.h\>}) {
+			my $file = "$1.h";
+			my $checkfile = "include/linux/$file";
+			if (-f "$root/$checkfile" &&
+			    $realfile ne $checkfile &&
+			    $1 !~ /$allowed_asm_includes/)
+			{
+				if ($realfile =~ m{^arch/}) {
+					CHK("Consider using #include <linux/$file> instead of <asm/$file>\n" . $herecurr);
+				} else {
+					WARN("Use #include <linux/$file> instead of <asm/$file>\n" . $herecurr);
+				}
+			}
+		}
+
+# multi-statement macros should be enclosed in a do while loop, grab the
+# first statement and ensure its the whole macro if its not enclosed
+# in a known good container
+		if ($realfile !~ m@/vmlinux.lds.h$@ &&
+		    $line =~ /^.\s*\#\s*define\s*$Ident(\()?/) {
+			my $ln = $linenr;
+			my $cnt = $realcnt;
+			my ($off, $dstat, $dcond, $rest);
+			my $ctx = '';
+
+			my $args = defined($1);
+
+			# Find the end of the macro and limit our statement
+			# search to that.
+			while ($cnt > 0 && defined $lines[$ln - 1] &&
+				$lines[$ln - 1] =~ /^(?:-|..*\\$)/)
+			{
+				$ctx .= $rawlines[$ln - 1] . "\n";
+				$cnt-- if ($lines[$ln - 1] !~ /^-/);
+				$ln++;
+			}
+			$ctx .= $rawlines[$ln - 1];
+
+			($dstat, $dcond, $ln, $cnt, $off) =
+				ctx_statement_block($linenr, $ln - $linenr + 1, 0);
+			#print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n";
+			#print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n";
+
+			# Extract the remainder of the define (if any) and
+			# rip off surrounding spaces, and trailing \'s.
+			$rest = '';
+			while ($off != 0 || ($cnt > 0 && $rest =~ /\\\s*$/)) {
+				#print "ADDING cnt<$cnt> $off <" . substr($lines[$ln - 1], $off) . "> rest<$rest>\n";
+				if ($off != 0 || $lines[$ln - 1] !~ /^-/) {
+					$rest .= substr($lines[$ln - 1], $off) . "\n";
+					$cnt--;
+				}
+				$ln++;
+				$off = 0;
+			}
+			$rest =~ s/\\\n.//g;
+			$rest =~ s/^\s*//s;
+			$rest =~ s/\s*$//s;
+
+			# Clean up the original statement.
+			if ($args) {
+				substr($dstat, 0, length($dcond), '');
+			} else {
+				$dstat =~ s/^.\s*\#\s*define\s+$Ident\s*//;
+			}
+			$dstat =~ s/$;//g;
+			$dstat =~ s/\\\n.//g;
+			$dstat =~ s/^\s*//s;
+			$dstat =~ s/\s*$//s;
+
+			# Flatten any parentheses and braces
+			while ($dstat =~ s/\([^\(\)]*\)/1/ ||
+			       $dstat =~ s/\{[^\{\}]*\}/1/ ||
+			       $dstat =~ s/\[[^\{\}]*\]/1/)
+			{
+			}
+
+			my $exceptions = qr{
+				$Declare|
+				module_param_named|
+				MODULE_PARAM_DESC|
+				DECLARE_PER_CPU|
+				DEFINE_PER_CPU|
+				__typeof__\(|
+				union|
+				struct|
+				\.$Ident\s*=\s*|
+				^\"|\"$
+			}x;
+			#print "REST<$rest> dstat<$dstat> ctx<$ctx>\n";
+			if ($rest ne '' && $rest ne ',') {
+				if ($rest !~ /while\s*\(/ &&
+				    $dstat !~ /$exceptions/)
+				{
+					ERROR("Macros with multiple statements should be enclosed in a do - while loop\n" . "$here\n$ctx\n");
+				}
+
+			} elsif ($ctx !~ /;/) {
+				if ($dstat ne '' &&
+				    $dstat !~ /^(?:$Ident|-?$Constant)$/ &&
+				    $dstat !~ /$exceptions/ &&
+				    $dstat !~ /^\.$Ident\s*=/ &&
+				    $dstat =~ /$Operators/)
+				{
+					ERROR("Macros with complex values should be enclosed in parenthesis\n" . "$here\n$ctx\n");
+				}
+			}
+		}
+
+# make sure symbols are always wrapped with VMLINUX_SYMBOL() ...
+# all assignments may have only one of the following with an assignment:
+#	.
+#	ALIGN(...)
+#	VMLINUX_SYMBOL(...)
+		if ($realfile eq 'vmlinux.lds.h' && $line =~ /(?:(?:^|\s)$Ident\s*=|=\s*$Ident(?:\s|$))/) {
+			WARN("vmlinux.lds.h needs VMLINUX_SYMBOL() around C-visible symbols\n" . $herecurr);
+		}
+
+# check for missing bracing round if etc
+		if ($line =~ /(^.*)\bif\b/ && $line !~ /\#\s*if/) {
+			my ($level, $endln, @chunks) =
+				ctx_statement_full($linenr, $realcnt, 1);
+                        if ($dbg_adv_apw) {
+                            print "APW: chunks<$#chunks> linenr<$linenr> endln<$endln> level<$level>\n";
+                            print "APW: <<$chunks[1][0]>><<$chunks[1][1]>>\n"
+                                if $#chunks >= 1;
+                        }
+			if ($#chunks >= 0 && $level == 0) {
+				my $allowed = 0;
+				my $seen = 0;
+				my $herectx = $here . "\n";
+				my $ln = $linenr - 1;
+				for my $chunk (@chunks) {
+					my ($cond, $block) = @{$chunk};
+
+					# If the condition carries leading newlines, then count those as offsets.
+					my ($whitespace) = ($cond =~ /^((?:\s*\n[+-])*\s*)/s);
+					my $offset = statement_rawlines($whitespace) - 1;
+
+					#print "COND<$cond> whitespace<$whitespace> offset<$offset>\n";
+
+					# We have looked at and allowed this specific line.
+					$suppress_ifbraces{$ln + $offset} = 1;
+
+					$herectx .= "$rawlines[$ln + $offset]\n[...]\n";
+					$ln += statement_rawlines($block) - 1;
+
+					substr($block, 0, length($cond), '');
+
+					$seen++ if ($block =~ /^\s*{/);
+
+                                        print "APW: cond<$cond> block<$block> allowed<$allowed>\n"
+                                            if $dbg_adv_apw;
+					if (statement_lines($cond) > 1) {
+                                            print "APW: ALLOWED: cond<$cond>\n"
+                                                if $dbg_adv_apw;
+                                            $allowed = 1;
+					}
+					if ($block =~/\b(?:if|for|while)\b/) {
+                                            print "APW: ALLOWED: block<$block>\n"
+                                                if $dbg_adv_apw;
+                                            $allowed = 1;
+					}
+					if (statement_block_size($block) > 1) {
+                                            print "APW: ALLOWED: lines block<$block>\n"
+                                                if $dbg_adv_apw;
+                                            $allowed = 1;
+					}
+				}
+				if ($seen != ($#chunks + 1)) {
+					WARN("braces {} are necessary for all arms of this statement\n" . $herectx);
+				}
+			}
+		}
+		if (!defined $suppress_ifbraces{$linenr - 1} &&
+					$line =~ /\b(if|while|for|else)\b/ &&
+					$line !~ /\#\s*if/ &&
+					$line !~ /\#\s*else/) {
+			my $allowed = 0;
+
+                        # Check the pre-context.
+                        if (substr($line, 0, $-[0]) =~ /(\}\s*)$/) {
+                            my $pre = $1;
+
+                            if ($line !~ /else/) {
+                                print "APW: ALLOWED: pre<$pre> line<$line>\n"
+                                    if $dbg_adv_apw;
+                                $allowed = 1;
+                            }
+                        }
+
+			my ($level, $endln, @chunks) =
+				ctx_statement_full($linenr, $realcnt, $-[0]);
+
+			# Check the condition.
+			my ($cond, $block) = @{$chunks[0]};
+                        print "CHECKING<$linenr> cond<$cond> block<$block>\n"
+                            if $dbg_adv_checking;
+			if (defined $cond) {
+				substr($block, 0, length($cond), '');
+			}
+			if (statement_lines($cond) > 1) {
+                            print "APW: ALLOWED: cond<$cond>\n"
+                                if $dbg_adv_apw;
+                            $allowed = 1;
+			}
+			if ($block =~/\b(?:if|for|while)\b/) {
+                            print "APW: ALLOWED: block<$block>\n"
+                                if $dbg_adv_apw;
+                            $allowed = 1;
+			}
+			if (statement_block_size($block) > 1) {
+                            print "APW: ALLOWED: lines block<$block>\n"
+                                if $dbg_adv_apw;
+                            $allowed = 1;
+			}
+			# Check the post-context.
+			if (defined $chunks[1]) {
+				my ($cond, $block) = @{$chunks[1]};
+				if (defined $cond) {
+					substr($block, 0, length($cond), '');
+				}
+				if ($block =~ /^\s*\{/) {
+                                    print "APW: ALLOWED: chunk-1 block<$block>\n"
+                                        if $dbg_adv_apw;
+                                    $allowed = 1;
+				}
+			}
+                        print "DCS: level=$level block<$block> allowed=$allowed\n"
+                            if $dbg_adv_dcs;
+			if ($level == 0 && $block !~ /^\s*\{/ && !$allowed) {
+				my $herectx = $here . "\n";;
+				my $cnt = statement_rawlines($block);
+
+				for (my $n = 0; $n < $cnt; $n++) {
+					$herectx .= raw_line($linenr, $n) . "\n";;
+				}
+
+				WARN("braces {} are necessary even for single statement blocks\n" . $herectx);
+			}
+		}
+
+# don't include deprecated include files (uses RAW line)
+		for my $inc (@dep_includes) {
+			if ($rawline =~ m@^.\s*\#\s*include\s*\<$inc>@) {
+				ERROR("Don't use <$inc>: see Documentation/feature-removal-schedule.txt\n" . $herecurr);
+			}
+		}
+
+# don't use deprecated functions
+		for my $func (@dep_functions) {
+			if ($line =~ /\b$func\b/) {
+				ERROR("Don't use $func(): see Documentation/feature-removal-schedule.txt\n" . $herecurr);
+			}
+		}
+
+# no volatiles please
+		my $asm_volatile = qr{\b(__asm__|asm)\s+(__volatile__|volatile)\b};
+		if ($line =~ /\bvolatile\b/ && $line !~ /$asm_volatile/) {
+			WARN("Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr);
+		}
+
+# SPIN_LOCK_UNLOCKED & RW_LOCK_UNLOCKED are deprecated
+		if ($line =~ /\b(SPIN_LOCK_UNLOCKED|RW_LOCK_UNLOCKED)/) {
+			ERROR("Use of $1 is deprecated: see Documentation/spinlocks.txt\n" . $herecurr);
+		}
+
+# warn about #if 0
+		if ($line =~ /^.\s*\#\s*if\s+0\b/) {
+			CHK("if this code is redundant consider removing it\n" .
+				$herecurr);
+		}
+
+# check for needless kfree() checks
+		if ($prevline =~ /\bif\s*\(([^\)]*)\)/) {
+			my $expr = $1;
+			if ($line =~ /\bkfree\(\Q$expr\E\);/) {
+				WARN("kfree(NULL) is safe this check is probably not required\n" . $hereprev);
+			}
+		}
+# check for needless usb_free_urb() checks
+		if ($prevline =~ /\bif\s*\(([^\)]*)\)/) {
+			my $expr = $1;
+			if ($line =~ /\busb_free_urb\(\Q$expr\E\);/) {
+				WARN("usb_free_urb(NULL) is safe this check is probably not required\n" . $hereprev);
+			}
+		}
+
+# prefer usleep_range over udelay
+		if ($line =~ /\budelay\s*\(\s*(\w+)\s*\)/) {
+			# ignore udelay's < 10, however
+			if (! (($1 =~ /(\d+)/) && ($1 < 10)) ) {
+				CHK("usleep_range is preferred over udelay; see Documentation/timers/timers-howto.txt\n" . $line);
+			}
+		}
+
+# warn about unexpectedly long msleep's
+		if ($line =~ /\bmsleep\s*\((\d+)\);/) {
+			if ($1 < 20) {
+				WARN("msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt\n" . $line);
+			}
+		}
+
+# warn about #ifdefs in C files
+#		if ($line =~ /^.\s*\#\s*if(|n)def/ && ($realfile =~ /\.c$/)) {
+#			print "#ifdef in C files should be avoided\n";
+#			print "$herecurr";
+#			$clean = 0;
+#		}
+
+# warn about spacing in #ifdefs
+		if ($line =~ /^.\s*\#\s*(ifdef|ifndef|elif)\s\s+/) {
+			ERROR("exactly one space required after that #$1\n" . $herecurr);
+		}
+
+# check for spinlock_t definitions without a comment.
+		if ($line =~ /^.\s*(struct\s+mutex|spinlock_t)\s+\S+;/ ||
+		    $line =~ /^.\s*(DEFINE_MUTEX)\s*\(/) {
+			my $which = $1;
+			if (!ctx_has_comment($first_line, $linenr)) {
+				CHK("$1 definition without comment\n" . $herecurr);
+			}
+		}
+# check for memory barriers without a comment.
+		if ($line =~ /\b(mb|rmb|wmb|read_barrier_depends|smp_mb|smp_rmb|smp_wmb|smp_read_barrier_depends)\(/) {
+			if (!ctx_has_comment($first_line, $linenr)) {
+				CHK("memory barrier without comment\n" . $herecurr);
+			}
+		}
+# check of hardware specific defines
+		if ($line =~ m@^.\s*\#\s*if.*\b(__i386__|__powerpc64__|__sun__|__s390x__)\b@ && $realfile !~ m@include/asm-@) {
+			CHK("architecture specific defines should be avoided\n" .  $herecurr);
+		}
+
+# Check that the storage class is at the beginning of a declaration
+		if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/) {
+			WARN("storage class should be at the beginning of the declaration\n" . $herecurr)
+		}
+
+# check the location of the inline attribute, that it is between
+# storage class and type.
+		if ($line =~ /\b$Type\s+$Inline\b/ ||
+		    $line =~ /\b$Inline\s+$Storage\b/) {
+			ERROR("inline keyword should sit between storage class and type\n" . $herecurr);
+		}
+
+# Check for __inline__ and __inline, prefer inline
+		if ($line =~ /\b(__inline__|__inline)\b/) {
+			WARN("plain inline is preferred over $1\n" . $herecurr);
+		}
+
+# check for sizeof(&)
+		if ($line =~ /\bsizeof\s*\(\s*\&/) {
+			WARN("sizeof(& should be avoided\n" . $herecurr);
+		}
+
+# check for new externs in .c files.
+		if ($realfile =~ /\.c$/ && defined $stat &&
+		    $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
+		{
+			my $function_name = $1;
+			my $paren_space = $2;
+
+			my $s = $stat;
+			if (defined $cond) {
+				substr($s, 0, length($cond), '');
+			}
+			if ($s =~ /^\s*;/ &&
+			    $function_name ne 'uninitialized_var')
+			{
+				WARN("externs should be avoided in .c files\n" .  $herecurr);
+			}
+
+			if ($paren_space =~ /\n/) {
+				WARN("arguments for function declarations should follow identifier\n" . $herecurr);
+			}
+
+		} elsif ($realfile =~ /\.c$/ && defined $stat &&
+		    $stat =~ /^.\s*extern\s+/)
+		{
+			WARN("externs should be avoided in .c files\n" .  $herecurr);
+		}
+
+# checks for new __setup's
+		if ($rawline =~ /\b__setup\("([^"]*)"/) {
+			my $name = $1;
+
+			if (!grep(/$name/, @setup_docs)) {
+				CHK("__setup appears un-documented -- check Documentation/kernel-parameters.txt\n" . $herecurr);
+			}
+		}
+
+# check for pointless casting of kmalloc return
+		if ($line =~ /\*\s*\)\s*k[czm]alloc\b/) {
+			WARN("unnecessary cast may hide bugs, see http://c-faq.com/malloc/mallocnocast.html\n" . $herecurr);
+		}
+
+# check for gcc specific __FUNCTION__
+		if ($line =~ /__FUNCTION__/) {
+			WARN("__func__ should be used instead of gcc specific __FUNCTION__\n"  . $herecurr);
+		}
+
+# check for semaphores used as mutexes
+		if ($line =~ /^.\s*(DECLARE_MUTEX|init_MUTEX)\s*\(/) {
+			WARN("mutexes are preferred for single holder semaphores\n" . $herecurr);
+		}
+# check for semaphores used as mutexes
+		if ($line =~ /^.\s*init_MUTEX_LOCKED\s*\(/) {
+			WARN("consider using a completion\n" . $herecurr);
+
+		}
+# recommend strict_strto* over simple_strto*
+		if ($line =~ /\bsimple_(strto.*?)\s*\(/) {
+			WARN("consider using strict_$1 in preference to simple_$1\n" . $herecurr);
+		}
+# check for __initcall(), use device_initcall() explicitly please
+		if ($line =~ /^.\s*__initcall\s*\(/) {
+			WARN("please use device_initcall() instead of __initcall()\n" . $herecurr);
+		}
+# check for various ops structs, ensure they are const.
+		my $struct_ops = qr{acpi_dock_ops|
+				address_space_operations|
+				backlight_ops|
+				block_device_operations|
+				dentry_operations|
+				dev_pm_ops|
+				dma_map_ops|
+				extent_io_ops|
+				file_lock_operations|
+				file_operations|
+				hv_ops|
+				ide_dma_ops|
+				intel_dvo_dev_ops|
+				item_operations|
+				iwl_ops|
+				kgdb_arch|
+				kgdb_io|
+				kset_uevent_ops|
+				lock_manager_operations|
+				microcode_ops|
+				mtrr_ops|
+				neigh_ops|
+				nlmsvc_binding|
+				pci_raw_ops|
+				pipe_buf_operations|
+				platform_hibernation_ops|
+				platform_suspend_ops|
+				proto_ops|
+				rpc_pipe_ops|
+				seq_operations|
+				snd_ac97_build_ops|
+				soc_pcmcia_socket_ops|
+				stacktrace_ops|
+				sysfs_ops|
+				tty_operations|
+				usb_mon_operations|
+				wd_ops}x;
+		if ($line !~ /\bconst\b/ &&
+		    $line =~ /\bstruct\s+($struct_ops)\b/) {
+			WARN("struct $1 should normally be const\n" .
+				$herecurr);
+		}
+
+# use of NR_CPUS is usually wrong
+# ignore definitions of NR_CPUS and usage to define arrays as likely right
+		if ($line =~ /\bNR_CPUS\b/ &&
+		    $line !~ /^.\s*\s*#\s*if\b.*\bNR_CPUS\b/ &&
+		    $line !~ /^.\s*\s*#\s*define\b.*\bNR_CPUS\b/ &&
+		    $line !~ /^.\s*$Declare\s.*\[[^\]]*NR_CPUS[^\]]*\]/ &&
+		    $line !~ /\[[^\]]*\.\.\.[^\]]*NR_CPUS[^\]]*\]/ &&
+		    $line !~ /\[[^\]]*NR_CPUS[^\]]*\.\.\.[^\]]*\]/)
+		{
+			WARN("usage of NR_CPUS is often wrong - consider using cpu_possible(), num_possible_cpus(), for_each_possible_cpu(), etc\n" . $herecurr);
+		}
+
+# check for %L{u,d,i} in strings
+		my $string;
+		while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) {
+			$string = substr($rawline, $-[1], $+[1] - $-[1]);
+			$string =~ s/%%/__/g;
+			if ($string =~ /(?<!%)%L[udi]/) {
+				WARN("\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr);
+				last;
+			}
+		}
+
+# whine mightly about in_atomic
+		if ($line =~ /\bin_atomic\s*\(/) {
+			if ($realfile =~ m@^drivers/@) {
+				ERROR("do not use in_atomic in drivers\n" . $herecurr);
+			} elsif ($realfile !~ m@^kernel/@) {
+				WARN("use of in_atomic() is incorrect outside core kernel code\n" . $herecurr);
+			}
+		}
+
+# check for lockdep_set_novalidate_class
+		if ($line =~ /^.\s*lockdep_set_novalidate_class\s*\(/ ||
+		    $line =~ /__lockdep_no_validate__\s*\)/ ) {
+			if ($realfile !~ m@^kernel/lockdep@ &&
+			    $realfile !~ m@^include/linux/lockdep@ &&
+			    $realfile !~ m@^drivers/base/core@) {
+				ERROR("lockdep_no_validate class is reserved for device->mutex.\n" . $herecurr);
+			}
+		}
+
+# QEMU specific tests
+		if ($rawline =~ /\b(?:Qemu|QEmu)\b/) {
+			WARN("use QEMU instead of Qemu or QEmu\n" . $herecurr);
+		}
+	}
+
+	# If we have no input at all, then there is nothing to report on
+	# so just keep quiet.
+	if ($#rawlines == -1) {
+		exit(0);
+	}
+
+	# In mailback mode only produce a report in the negative, for
+	# things that appear to be patches.
+	if ($mailback && ($clean == 1 || !$is_patch)) {
+		exit(0);
+	}
+
+	# This is not a patch, and we are are in 'no-patch' mode so
+	# just keep quiet.
+	if (!$chk_patch && !$is_patch) {
+		exit(0);
+	}
+
+	if (!$is_patch) {
+		ERROR("Does not appear to be a unified-diff format patch\n");
+	}
+	if ($is_patch && $chk_signoff && $signoff == 0) {
+		ERROR("Missing Signed-off-by: line(s)\n");
+	}
+
+	print report_dump();
+	if ($summary && !($clean == 1 && $quiet == 1)) {
+		print "$filename " if ($summary_file);
+		print "total: $cnt_error errors, $cnt_warn warnings, " .
+			(($check)? "$cnt_chk checks, " : "") .
+			"$cnt_lines lines checked\n";
+		print "\n" if ($quiet == 0);
+	}
+
+	if ($quiet == 0) {
+		# If there were whitespace errors which cleanpatch can fix
+		# then suggest that.
+#		if ($rpt_cleaners) {
+#			print "NOTE: whitespace errors detected, you may wish to use scripts/cleanpatch or\n";
+#			print "      scripts/cleanfile\n\n";
+#		}
+	}
+
+	if ($clean == 1 && $quiet == 0) {
+		print "$vname has no obvious style problems and is ready for submission.\n"
+	}
+	if ($clean == 0 && $quiet == 0) {
+		print "$vname has style problems, please review.  If any of these errors\n";
+		print "are false positives report them to the maintainer, see\n";
+		print "CHECKPATCH in MAINTAINERS.\n";
+	}
+
+	return $clean;
+}
-- 
1.8.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 10 13:29:23 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Sep 2014 13:29:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRhxE-0002Iy-1r; Wed, 10 Sep 2014 13:29:00 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XRhxA-0002Dd-Tj
	for xen-devel@lists.xen.org; Wed, 10 Sep 2014 13:28:57 +0000
Received: from [85.158.143.35:20063] by server-3.bemta-4.messagelabs.com id
	60/20-06192-81250145; Wed, 10 Sep 2014 13:28:56 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-8.tower-21.messagelabs.com!1410355731!12186816!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19119 invoked from network); 10 Sep 2014 13:28:51 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-8.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 10 Sep 2014 13:28:51 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id F13CF1017F2ED;
	Wed, 10 Sep 2014 15:28:48 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id E70DAC31E22F;
	Wed, 10 Sep 2014 15:28:48 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Wed, 10 Sep 2014 15:28:30 +0200
Message-Id: <1410355726-5599-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1410355726-5599-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1410355726-5599-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH v5 01/17] xen: Relocate mem_access and mem_event
	into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  61 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/config.h     |   3 +
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 31 files changed, 1153 insertions(+), 1056 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8d905d3..9d37743 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -63,8 +63,8 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <public/mem_event.h>
 #include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 32776c3..a9f120a 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..0da6ddc 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..07161a2
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <asm/p2m.h>
+#include <public/memory.h>
+#include <xen/mem_event.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..b4a23fd
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <asm/p2m.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 031672a..44a8106 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1108,6 +1108,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..8a864ce 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -67,6 +67,9 @@
 #define NR_CPUS 256
 #endif
 
+#define CONFIG_MEM_SHARING 1
+#define CONFIG_MEM_PAGING 1
+
 /* Maximum we can support with current vLAPIC ID mapping. */
 #define MAX_HVM_VCPUS 128
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 10 21:01:55 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Sep 2014 21:01:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XRp1K-0006DD-UP; Wed, 10 Sep 2014 21:01:42 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <konrad.wilk@oracle.com>) id 1XRp1J-0006D6-6b
	for xen-devel@lists.xen.org; Wed, 10 Sep 2014 21:01:41 +0000
Received: from [85.158.139.211:65402] by server-4.bemta-5.messagelabs.com id
	97/76-10551-43CB0145; Wed, 10 Sep 2014 21:01:40 +0000
X-Env-Sender: konrad.wilk@oracle.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1410382896!13669407!1
X-Originating-IP: [156.151.31.81]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTU2LjE1MS4zMS44MSA9PiAyODgzMzk=\n
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17390 invoked from network); 10 Sep 2014 21:01:38 -0000
Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81)
	by server-8.tower-206.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 10 Sep 2014 21:01:38 -0000
Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93])
	by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with
	ESMTP id s8AL1E8d016086
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
	Wed, 10 Sep 2014 21:01:15 GMT
Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85])
	by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8AL1E7a017962
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL);
	Wed, 10 Sep 2014 21:01:14 GMT
Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18])
	by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8AL1DtQ017909; Wed, 10 Sep 2014 21:01:13 GMT
Received: from laptop.dumpdata.com (/50.195.21.189)
	by default (Oracle Beehive Gateway v4.0)
	with ESMTP ; Wed, 10 Sep 2014 14:01:12 -0700
Received: by laptop.dumpdata.com (Postfix, from userid 1000)
	id 7AB64DEC8E; Wed, 10 Sep 2014 15:43:36 -0400 (EDT)
Date: Wed, 10 Sep 2014 15:43:36 -0400
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Message-ID: <20140910194336.GB3556@laptop.dumpdata.com>
References: <1409849473-9268-1-git-send-email-anthony.perard@citrix.com>
	<1409849473-9268-2-git-send-email-anthony.perard@citrix.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1409849473-9268-2-git-send-email-anthony.perard@citrix.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-Source-IP: ucsinet21.oracle.com [156.151.31.93]
Cc: EDK2 devel <edk2-devel@lists.sourceforge.net>,
	Xen Devel <xen-devel@lists.xen.org>
Subject: Re: [Xen-devel] [PATCH v2 01/18] OvmfPkg: Add public headers from
 Xen Project.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

T24gVGh1LCBTZXAgMDQsIDIwMTQgYXQgMDU6NTA6NTZQTSArMDEwMCwgQW50aG9ueSBQRVJBUkQg
d3JvdGU6Cj4gVGhpcyBwYXRjaCBpbXBvcnRzIHB1YmxpY3MgaGVhZGVycyBpbiBvcmRlciB0byB1
c2UgZmVhdHVyZXMgZnJvbSBYZW4KPiBsaWtlIFhlblN0b3JlLCBQViBCbG9jay4uLiBUaGVyZSBp
cyBvbmx5IHRoZSBuZWNlc3NhcnkgaGVhZGVyIGZpbGVzIGFuZAo+IHRoZXJlIGFyZSBvbmx5IGEg
ZmV3IG1vZGlmaWNhdGlvbnMgaW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSBmdXR1cmUgbWVyZ2Ugb2YK
PiBtb3JlIHJlY2VudCBoZWFkZXIgKHRoYXQgd291bGQgYmUgbmVjZXNzYXJ5IHRvIGFjY2VzcyBu
ZXcgZmVhdHVyZXMpLgoKSSBhbSBub3QgZXhhY3RseSBzdXJlIHdoeSBjb3BpZWQgdGhlIGZ1bGwg
aGVhZGVycyBpbnN0ZWFkIG9mIApqdXN0IGNvcHlpbmcgd2hhdCBpcyBuZWVkZWQ/CgpBcyBpbiwg
eW91IGhhdmUgZGVmaW5lcyBmb3Igc2VnbWVudHMsIGNwdV91c2VyX3JlZ3MsIGZ1bGwgcmFuZ2UK
b2YgaHlwZXJjYWxscyB0aGF0IHlvdSBhcmUgbm90IHVzaW5nLAoKV2h5IG5vdCB0cmltIHRoaXMg
ZG93biB0byBqdXN0IHdoYXQgeW91IG5lZWQgYW5kIHJpcCB0aGUgcmVzdCBvdXQ/CgpUaGlzIGxp
bms6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTMwMTg1MC90b29scy10by1m
aW5kLWluY2x1ZGVkLWhlYWRlcnMtd2hpY2gtYXJlLXVudXNlZApoYXMgYW4gZXhhbXBsZSBvZiBh
IHRvb2wgdGhhdCBjYW4gYXV0b21hdGljYWxseSBoZWxwIHdpdGggdGhhdC4KCj4gCj4gVGhlcmUg
aXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGUgb3JpZ2luYWwgZmlsZXM6Cj4g
LSBVc2Ugb2YgWmVyb01lbSgpIGluc3RlYWQgb2YgbWVtc2V0KCkKPiAtIFJlcGxhY2UgdHlwZXMg
dG8gYmUgbW9yZSBVRUZJIGNvbXBsaWFudCB1c2luZyBhIHNjcmlwdC4KPiAKPiBDb21tYW5kIHRv
IHJ1biB0byBjaGFuZ2UgdHlwZXM6Cj4gZmluZCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4gLXR5cGUgZiAtbmFtZSAnKi5oJyAtZXhlYyBzZWQKPiAgIC0tcmVnZXhwLWV4dGVu
ZGVkIC0tZmlsZT1maXhfdHlwZV9pbl94ZW5faW5jbHVkZXMuc2VkIC0taW4tcGxhY2Uge30gXDsK
PiAKPiBUaGlzIGxpbmUgaXMgY29tbWVudGVkIGluc3RlYWQgb2YgYmVlbiBjaGFuZ2UgYXMgSSdt
IG5vdCBzdXJlIHdoeSBpdAo+IGRvZXMgbm90IGNvbXBpbGUgKHdoZW4gcy9jaGFyL0NIQVI4Lyks
IGFuZCBpdCBkb2VzIG5vdCBzZWVtcyBuZWNlc3NhcnkKPiBzbyBmYXIuCj4gICAvKiBfX0RFRklO
RV9YRU5fR1VFU1RfSEFORExFKHVjaGFyLCB1bnNpZ25lZCBjaGFyKTsgKi8KPiAgIGluIE92bWZQ
a2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4uaAo+IAo+IEF2b2lk
IGNoYW5naW5nIHRoZSAnbG9uZycgdGhhdCBpcyBub3QgYSB0eXBlICh3aXRoIHRoZSBmaXJzdCBs
aW5lKS4KPiAkIGNhdCBmaXhfdHlwZV9pbl94ZW5faW5jbHVkZXMuc2VkCj4gL2FzIGxvbmcgYXMv
Ygo+IAo+IHMvKFteYS16QS1aMC05X118Xil1aW50OF90KFteYS16QS1aMC05X118JCkvXDFVSU5U
OFwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4pdWludDE2X3QoW15hLXpBLVowLTlfXXwkKS9cMVVJ
TlQxNlwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4pdWludDMyX3QoW15hLXpBLVowLTlfXXwkKS9c
MVVJTlQzMlwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4pdWludDY0X3QoW15hLXpBLVowLTlfXXwk
KS9cMVVJTlQ2NFwyL2cKPiAKPiBzLyhbXmEtekEtWjAtOV9dfF4paW50OF90KFteYS16QS1aMC05
X118JCkvXDFJTlQ4XDIvZwo+IHMvKFteYS16QS1aMC05X118XilpbnQxNl90KFteYS16QS1aMC05
X118JCkvXDFJTlQxNlwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4paW50MzJfdChbXmEtekEtWjAt
OV9dfCQpL1wxSU5UMzJcMi9nCj4gcy8oW15hLXpBLVowLTlfXXxeKWludDY0X3QoW15hLXpBLVow
LTlfXXwkKS9cMUlOVDY0XDIvZwo+IAo+IHMvKFteYS16QS1aMC05X118Xil2b2lkKFteYS16QS1a
MC05X118JCkvXDFWT0lEXDIvZwo+IHMvKFteYS16QS1aMC05X118Xil1bnNpZ25lZCBpbnQoW15h
LXpBLVowLTlfXXwkKS9cMVVJTlQzMlwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4paW50KFteYS16
QS1aMC05X118JCkvXDFJTlQzMlwyL2cKPiBzLyhbXmEtekEtWjAtOV9dfF4pY2hhcihbXmEtekEt
WjAtOV9dfCQpL1wxQ0hBUjhcMi9nCj4gcy8oW15hLXpBLVowLTlfXXxeKXVuc2lnbmVkIGxvbmco
W15hLXpBLVowLTlfXXwkKS9cMVVJTlROXDIvZwo+IHMvKFteYS16QS1aMC05X118Xilsb25nKFte
YS16QS1aMC05X118JCkvXDFJTlROXDIvZwo+IAo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0Nv
cmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjAKPiBTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBF
UkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KPiAtLS0KPiAgLi4uL0luZHVzdHJ5U3Rh
bmRhcmQvWGVuL2FyY2gteDg2L3hlbi14ODZfMzIuaCAgICAgfCAxNzEgKysrKwo+ICAuLi4vSW5k
dXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLXg4Nl82NC5oICAgICB8IDIwMiArKysrKwo+
ICAuLi4vSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4uaCAgICB8IDI3
MyArKysrKysrCj4gIC4uLi9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2V2ZW50X2NoYW5u
ZWwuaCAgIHwgMzgxICsrKysrKysrKwo+ICBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy
ZC9YZW4vZ3JhbnRfdGFibGUuaCB8IDY2MiArKysrKysrKysrKysrKysKPiAgT3ZtZlBrZy9JbmNs
dWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2h2bS9odm1fb3AuaCAgfCAyNzUgKysrKysrKwo+ICBP
dm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaHZtL3BhcmFtcy5oICB8IDE1MCAr
KysrCj4gIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9ibGtpZi5oICAg
IHwgNjA4ICsrKysrKysrKysrKysrCj4gIC4uLi9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVu
L2lvL3Byb3RvY29scy5oICAgIHwgIDQwICsKPiAgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh
bmRhcmQvWGVuL2lvL3JpbmcuaCAgICAgfCAzMTIgKysrKysrKwo+ICBPdm1mUGtnL0luY2x1ZGUv
SW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8veGVuYnVzLmggICB8ICA4MCArKwo+ICBPdm1mUGtnL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8veHNfd2lyZS5oICB8IDEzOCArKysrCj4gIE92
bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9tZW1vcnkuaCAgICAgIHwgNDgwICsr
KysrKysrKysrCj4gIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9zY2hlZC5o
ICAgICAgIHwgMTc0ICsrKysKPiAgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVu
L3RyYWNlLmggICAgICAgfCAzMTAgKysrKysrKwo+ICBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlT
dGFuZGFyZC9YZW4veGVuLWNvbXBhdC5oICB8ICA0NCArCj4gIE92bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi94ZW4uaCAgICAgICAgIHwgODk3ICsrKysrKysrKysrKysrKysrKysr
Kwo+ICAxNyBmaWxlcyBjaGFuZ2VkLCA1MTk3IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4t
eDg2XzMyLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0
YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92
bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4uaAo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2V2ZW50
X2NoYW5uZWwuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5
U3RhbmRhcmQvWGVuL2dyYW50X3RhYmxlLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cv
SW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9odm0vaHZtX29wLmgKPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9odm0vcGFyYW1zLmgK
PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9pby9ibGtpZi5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0
cnlTdGFuZGFyZC9YZW4vaW8vcHJvdG9jb2xzLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQ
a2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby9yaW5nLmgKPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9pby94ZW5idXMuaAo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVu
L2lvL3hzX3dpcmUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgT3ZtZlBrZy9JbmNsdWRlL0luZHVz
dHJ5U3RhbmRhcmQvWGVuL21lbW9yeS5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBPdm1mUGtnL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vc2NoZWQuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg
T3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3RyYWNlLmgKPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4tY29tcGF0
LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk
L1hlbi94ZW4uaAo+IAo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5
U3RhbmRhcmQvWGVuL2FyY2gteDg2L3hlbi14ODZfMzIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMC4uOThmMmYwMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtn
L0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCj4gQEAg
LTAsMCArMSwxNzEgQEAKPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiB4ZW4teDg2XzMy
LmgKPiArICogCj4gKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgMzItYml0IFhlbi4KPiAr
ICogCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAq
IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy
Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiAr
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAq
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBD
b3B5cmlnaHQgKGMpIDIwMDQtMjAwNywgSyBBIEZyYXNlcgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg
X19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fCj4gKyNkZWZpbmUgX19YRU5fUFVC
TElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fCj4gKwo+ICsvKgo+ICsgKiBIeXBlcmNhbGwgaW50
ZXJmYWNlOgo+ICsgKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAlZXNpLCAlZWRpLCAlZWJw
IChhcmd1bWVudHMgMS02KQo+ICsgKiAgT3V0cHV0OiAlZWF4Cj4gKyAqIEFjY2VzcyBpcyB2aWEg
aHlwZXJjYWxsIHBhZ2UgKHNldCB1cCBieSBndWVzdCBsb2FkZXIgb3IgdmlhIGEgWGVuIE1TUik6
Cj4gKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMyCj4gKyAq
IENsb2JiZXJlZDogQXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xv
YmJlcnMgJWVieCwlZWN4KQo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIFRoZXNlIGZsYXQgc2VnbWVu
dHMgYXJlIGluIHRoZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdEVC4gU2luY2UgdGhl
c2UKPiArICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3
aWxsIGJlIGFibGUgdG8gYXZvaWQKPiArICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RULgo+ICsg
Ki8KPiArI2RlZmluZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICov
Cj4gKyNkZWZpbmUgRkxBVF9SSU5HMV9EUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwo+
ICsjZGVmaW5lIEZMQVRfUklORzFfU1MgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KPiAr
I2RlZmluZSBGTEFUX1JJTkczX0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCj4gKyNk
ZWZpbmUgRkxBVF9SSU5HM19EUyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLwo+ICsjZGVm
aW5lIEZMQVRfUklORzNfU1MgMHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KPiArCj4gKyNk
ZWZpbmUgRkxBVF9LRVJORUxfQ1MgRkxBVF9SSU5HMV9DUwo+ICsjZGVmaW5lIEZMQVRfS0VSTkVM
X0RTIEZMQVRfUklORzFfRFMKPiArI2RlZmluZSBGTEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NT
Cj4gKyNkZWZpbmUgRkxBVF9VU0VSX0NTICAgIEZMQVRfUklORzNfQ1MKPiArI2RlZmluZSBGTEFU
X1VTRVJfRFMgICAgRkxBVF9SSU5HM19EUwo+ICsjZGVmaW5lIEZMQVRfVVNFUl9TUyAgICBGTEFU
X1JJTkczX1NTCj4gKwo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAw
eEY1ODAwMDAwCj4gKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUgICAgIDB4RjU4
MDAwMDAKPiArI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUgICAgICAgMHhGNjgwMDAw
MAo+ICsjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUgICAgICBcCj4gKyAgICBta191
bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKPiArI2RlZmluZSBNQUNI
MlBIWVNfVklSVF9TVEFSVF9QQUUgICAgICAgXAo+ICsgICAgbWtfdW5zaWduZWRfbG9uZyhfX01B
Q0gyUEhZU19WSVJUX1NUQVJUX1BBRSkKPiArI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRfUEFF
ICAgICAgICAgXAo+ICsgICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORF9Q
QUUpCj4gKwo+ICsvKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCj4gKyNkZWZpbmUg
X19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfTk9OUEFFIDB4RkMwMDAwMDAKPiArI2RlZmluZSBfX01B
Q0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgMHhGQzAwMDAwMAo+ICsjZGVmaW5lIF9fTUFDSDJQ
SFlTX1ZJUlRfRU5EX05PTlBBRSAgICAweEZDNDAwMDAwCj4gKyNkZWZpbmUgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUX05PTlBBRSAgIFwKPiArICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlRfTk9OUEFFKQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBB
RSAgICBcCj4gKyAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9O
UEFFKQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX0VORF9OT05QQUUgICAgICBcCj4gKyAgICBt
a191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKPiArCj4gKyNkZWZp
bmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfUEFFCj4g
KyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9Q
QUUKPiArI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORCAgICBfX01BQ0gyUEhZU19WSVJUX0VO
RF9QQUUKPiArCj4gKyNpZm5kZWYgSFlQRVJWSVNPUl9WSVJUX1NUQVJUCj4gKyNkZWZpbmUgSFlQ
RVJWSVNPUl9WSVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RB
UlQpCj4gKyNlbmRpZgo+ICsKPiArI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5z
aWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUKQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19W
SVJUX0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EKQo+ICsjZGVm
aW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VORC1NQUNIMlBIWVNf
VklSVF9TVEFSVCk+PjIpCj4gKyNpZm5kZWYgbWFjaGluZV90b19waHlzX21hcHBpbmcKPiArI2Rl
ZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVJTlROICopTUFDSDJQSFlTX1ZJUlRfU1RB
UlQpCj4gKyNlbmRpZgo+ICsKPiArLyogMzItLzY0LWJpdCBpbnZhcmlhYmlsaXR5IGZvciBjb250
cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAqLwo+ICsjaWYgZGVmaW5lZChfX1hFTl9f
KSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCj4gKyN1bmRlZiBfX19ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRQo+ICsjZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUp
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0eXBlICpwOyB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIF9fZ3Vlc3RfaGFuZGxl
XyAjIyBuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgdHlwZWRl
ZiBzdHJ1Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3QgcTsgfTsgfSAgXAo+
ICsgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCj4gKyN1bmRlZiBzZXRfeGVuX2d1
ZXN0X2hhbmRsZV9yYXcKPiArI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2
YWwpICAgICAgICAgICAgICAgICAgXAo+ICsgICAgZG8geyBpZiAoIHNpemVvZihobmQpID09IDgg
KSAqKFVJTlQ2NCAqKSYoaG5kKSA9IDA7ICAgXAo+ICsgICAgICAgICAoaG5kKS5wID0gdmFsOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICB9IHdoaWxlICggMCAp
Cj4gKyNkZWZpbmUgdWludDY0X2FsaWduZWRfdCBVSU5UNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25l
ZCg4KSkpCj4gKyNkZWZpbmUgX19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFu
ZGxlXzY0XyAjIyBuYW1lCj4gKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBfX1hF
Tl9HVUVTVF9IQU5ETEVfNjQobmFtZSkKPiArI2VuZGlmCj4gKwo+ICsjaWZuZGVmIF9fQVNTRU1C
TFlfXwo+ICsKPiArc3RydWN0IGNwdV91c2VyX3JlZ3Mgewo+ICsgICAgVUlOVDMyIGVieDsKPiAr
ICAgIFVJTlQzMiBlY3g7Cj4gKyAgICBVSU5UMzIgZWR4Owo+ICsgICAgVUlOVDMyIGVzaTsKPiAr
ICAgIFVJTlQzMiBlZGk7Cj4gKyAgICBVSU5UMzIgZWJwOwo+ICsgICAgVUlOVDMyIGVheDsKPiAr
ICAgIFVJTlQxNiBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCj4gKyAgICBVSU5UMTYgZW50
cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwo+ICsgICAgVUlOVDMyIGVpcDsKPiArICAgIFVJTlQx
NiBjczsKPiArICAgIFVJTlQ4ICBzYXZlZF91cGNhbGxfbWFzazsKPiArICAgIFVJTlQ4ICBfcGFk
MDsKPiArICAgIFVJTlQzMiBlZmxhZ3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3Vw
Y2FsbF9tYXNrICovCj4gKyAgICBVSU5UMzIgZXNwOwo+ICsgICAgVUlOVDE2IHNzLCBfcGFkMTsK
PiArICAgIFVJTlQxNiBlcywgX3BhZDI7Cj4gKyAgICBVSU5UMTYgZHMsIF9wYWQzOwo+ICsgICAg
VUlOVDE2IGZzLCBfcGFkNDsKPiArICAgIFVJTlQxNiBncywgX3BhZDU7Cj4gK307Cj4gK3R5cGVk
ZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJfcmVnc190Owo+ICtERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3QpOwo+ICsKPiArLyoKPiArICogUGFnZS1kaXJlY3Rv
cnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0IGludG8gYXJjaGl0ZWN0dXJhbCAlY3Iz
Lgo+ICsgKiBXaGVuIGFjY2Vzc2luZyAlY3IzLCBvciBlcXVpdmFsZW50IGZpZWxkIGluIHZjcHVf
Z3Vlc3RfY29udGV4dCwgZ3Vlc3RzCj4gKyAqIG11c3QgdXNlIHRoZSBmb2xsb3dpbmcgYWNjZXNz
b3IgbWFjcm9zIHRvIHBhY2svdW5wYWNrIHZhbGlkIE1GTnMuCj4gKyAqLwo+ICsjZGVmaW5lIHhl
bl9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWduZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCko
cGZuKSA+PiAyMCkpCj4gKyNkZWZpbmUgeGVuX2NyM190b19wZm4oY3IzKSAoKCh1bnNpZ25lZCko
Y3IzKSA+PiAxMikgfCAoKHVuc2lnbmVkKShjcjMpIDw8IDIwKSkKPiArCj4gK3N0cnVjdCBhcmNo
X3ZjcHVfaW5mbyB7Cj4gKyAgICBVSU5UTiBjcjI7Cj4gKyAgICBVSU5UTiBwYWRbNV07IC8qIHNp
emVvZih2Y3B1X2luZm9fdCkgPT0gNjQgKi8KPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgYXJjaF92
Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKPiArCj4gK3N0cnVjdCB4ZW5fY2FsbGJhY2sgewo+
ICsgICAgVUlOVE4gY3M7Cj4gKyAgICBVSU5UTiBlaXA7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0
IHhlbl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKPiArCj4gKyNlbmRpZiAvKiAhX19BU1NFTUJM
WV9fICovCj4gKwo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJf
SF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiAr
ICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiB0YWIt
d2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiArICovCj4g
ZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9hcmNoLXg4
Ni94ZW4teDg2XzY0LmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vYXJj
aC14ODYveGVuLXg4Nl82NC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li43ZmNmNjhkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3Ry
eVN0YW5kYXJkL1hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKPiBAQCAtMCwwICsxLDIwMiBAQAo+
ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIHhlbi14ODZfNjQuaAo+ICsgKiAKPiArICog
R3Vlc3QgT1MgaW50ZXJmYWNlIHRvIHg4NiA2NC1iaXQgWGVuLgo+ICsgKiAKPiArICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD
T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsg
KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAw
NC0yMDA2LCBLIEEgRnJhc2VyCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJD
SF9YODZfWEVOX1g4Nl82NF9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVO
X1g4Nl82NF9IX18KPiArCj4gKy8qCj4gKyAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6Cj4gKyAqICBJ
bnB1dDogICVyZGksICVyc2ksICVyZHgsICVyMTAsICVyOCwgJXI5IChhcmd1bWVudHMgMS02KQo+
ICsgKiAgT3V0cHV0OiAlcmF4Cj4gKyAqIEFjY2VzcyBpcyB2aWEgaHlwZXJjYWxsIHBhZ2UgKHNl
dCB1cCBieSBndWVzdCBsb2FkZXIgb3IgdmlhIGEgWGVuIE1TUik6Cj4gKyAqICBjYWxsIGh5cGVy
Y2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMyCj4gKyAqIENsb2JiZXJlZDogYXJndW1l
bnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJkaSwlcnNpKQo+
ICsgKi8KPiArCj4gKy8qCj4gKyAqIDY0LWJpdCBzZWdtZW50IHNlbGVjdG9ycwo+ICsgKiBUaGVz
ZSBmbGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlvbiBvZiBldmVyeSBH
RFQuIFNpbmNlIHRoZXNlCj4gKyAqIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RU
LCBtYW55IE9TZXMgd2lsbCBiZSBhYmxlIHRvIGF2b2lkCj4gKyAqIGluc3RhbGxpbmcgdGhlaXIg
b3duIEdEVC4KPiArICovCj4gKwo+ICsjZGVmaW5lIEZMQVRfUklORzNfQ1MzMiAweGUwMjMgIC8q
IEdEVCBpbmRleCAyNjAgKi8KPiArI2RlZmluZSBGTEFUX1JJTkczX0NTNjQgMHhlMDMzICAvKiBH
RFQgaW5kZXggMjYxICovCj4gKyNkZWZpbmUgRkxBVF9SSU5HM19EUzMyIDB4ZTAyYiAgLyogR0RU
IGluZGV4IDI2MiAqLwo+ICsjZGVmaW5lIEZMQVRfUklORzNfRFM2NCAweDAwMDAgIC8qIE5VTEwg
c2VsZWN0b3IgKi8KPiArI2RlZmluZSBGTEFUX1JJTkczX1NTMzIgMHhlMDJiICAvKiBHRFQgaW5k
ZXggMjYyICovCj4gKyNkZWZpbmUgRkxBVF9SSU5HM19TUzY0IDB4ZTAyYiAgLyogR0RUIGluZGV4
IDI2MiAqLwo+ICsKPiArI2RlZmluZSBGTEFUX0tFUk5FTF9EUzY0IEZMQVRfUklORzNfRFM2NAo+
ICsjZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIgRkxBVF9SSU5HM19EUzMyCj4gKyNkZWZpbmUgRkxB
VF9LRVJORUxfRFMgICBGTEFUX0tFUk5FTF9EUzY0Cj4gKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1M2
NCBGTEFUX1JJTkczX0NTNjQKPiArI2RlZmluZSBGTEFUX0tFUk5FTF9DUzMyIEZMQVRfUklORzNf
Q1MzMgo+ICsjZGVmaW5lIEZMQVRfS0VSTkVMX0NTICAgRkxBVF9LRVJORUxfQ1M2NAo+ICsjZGVm
aW5lIEZMQVRfS0VSTkVMX1NTNjQgRkxBVF9SSU5HM19TUzY0Cj4gKyNkZWZpbmUgRkxBVF9LRVJO
RUxfU1MzMiBGTEFUX1JJTkczX1NTMzIKPiArI2RlZmluZSBGTEFUX0tFUk5FTF9TUyAgIEZMQVRf
S0VSTkVMX1NTNjQKPiArCj4gKyNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxBVF9SSU5HM19EUzY0
Cj4gKyNkZWZpbmUgRkxBVF9VU0VSX0RTMzIgRkxBVF9SSU5HM19EUzMyCj4gKyNkZWZpbmUgRkxB
VF9VU0VSX0RTICAgRkxBVF9VU0VSX0RTNjQKPiArI2RlZmluZSBGTEFUX1VTRVJfQ1M2NCBGTEFU
X1JJTkczX0NTNjQKPiArI2RlZmluZSBGTEFUX1VTRVJfQ1MzMiBGTEFUX1JJTkczX0NTMzIKPiAr
I2RlZmluZSBGTEFUX1VTRVJfQ1MgICBGTEFUX1VTRVJfQ1M2NAo+ICsjZGVmaW5lIEZMQVRfVVNF
Ul9TUzY0IEZMQVRfUklORzNfU1M2NAo+ICsjZGVmaW5lIEZMQVRfVVNFUl9TUzMyIEZMQVRfUklO
RzNfU1MzMgo+ICsjZGVmaW5lIEZMQVRfVVNFUl9TUyAgIEZMQVRfVVNFUl9TUzY0Cj4gKwo+ICsj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUIDB4RkZGRjgwMDAwMDAwMDAwMAo+ICsjZGVm
aW5lIF9fSFlQRVJWSVNPUl9WSVJUX0VORCAgIDB4RkZGRjg4MDAwMDAwMDAwMAo+ICsjZGVmaW5l
IF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIDB4RkZGRjgwMDAwMDAwMDAwMAo+ICsjZGVmaW5lIF9f
TUFDSDJQSFlTX1ZJUlRfRU5EICAgIDB4RkZGRjgwNDAwMDAwMDAwMAo+ICsKPiArI2lmbmRlZiBI
WVBFUlZJU09SX1ZJUlRfU1RBUlQKPiArI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RBUlQgbWtf
dW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFSVCkKPiArI2RlZmluZSBIWVBFUlZJ
U09SX1ZJUlRfRU5EICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9FTkQpCj4g
KyNlbmRpZgo+ICsKPiArI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5zaWduZWRf
bG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUKQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX0VO
RCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EKQo+ICsjZGVmaW5lIE1B
Q0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VORC1NQUNIMlBIWVNfVklSVF9T
VEFSVCk+PjMpCj4gKyNpZm5kZWYgbWFjaGluZV90b19waHlzX21hcHBpbmcKPiArI2RlZmluZSBt
YWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVJTlROICopSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQo+
ICsjZW5kaWYKPiArCj4gKy8qCj4gKyAqIElOVDMyIEhZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFz
ZShVSU5UMzIgd2hpY2gsIFVJTlROIGJhc2UpCj4gKyAqICBAd2hpY2ggPT0gU0VHQkFTRV8qICA7
ICBAYmFzZSA9PSA2NC1iaXQgYmFzZSBhZGRyZXNzCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNz
Lgo+ICsgKi8KPiArI2RlZmluZSBTRUdCQVNFX0ZTICAgICAgICAgIDAKPiArI2RlZmluZSBTRUdC
QVNFX0dTX1VTRVIgICAgIDEKPiArI2RlZmluZSBTRUdCQVNFX0dTX0tFUk5FTCAgIDIKPiArI2Rl
ZmluZSBTRUdCQVNFX0dTX1VTRVJfU0VMIDMgLyogU2V0IHVzZXIgJWdzIHNwZWNpZmllZCBpbiBi
YXNlWzE1OjBdICovCj4gKwo+ICsvKgo+ICsgKiBJTlQzMiBIWVBFUlZJU09SX2lyZXQoVk9JRCkK
PiArICogQWxsIGFyZ3VtZW50cyBhcmUgb24gdGhlIGtlcm5lbCBzdGFjaywgaW4gdGhlIGZvbGxv
d2luZyBmb3JtYXQuCj4gKyAqIE5ldmVyIHJldHVybnMgaWYgc3VjY2Vzc2Z1bC4gQ3VycmVudCBr
ZXJuZWwgY29udGV4dCBpcyBsb3N0Lgo+ICsgKiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZv
bGxvd3M6Cj4gKyAqICAgUklORzAgLT4gUklORzMga2VybmVsIG1vZGUuCj4gKyAqICAgUklORzEg
LT4gUklORzMga2VybmVsIG1vZGUuCj4gKyAqICAgUklORzIgLT4gUklORzMga2VybmVsIG1vZGUu
Cj4gKyAqICAgUklORzMgLT4gUklORzMgdXNlciBtb2RlLgo+ICsgKiBIb3dldmVyIFJJTkcwIGlu
ZGljYXRlcyB0aGF0IHRoZSBndWVzdCBrZXJuZWwgc2hvdWxkIHJldHVybiB0byBpdGVzZWxmCj4g
KyAqIGRpcmVjdGx5IHdpdGgKPiArICogICAgICBvcmIgICAkMywxKjgoJXJzcCkKPiArICogICAg
ICBpcmV0cQo+ICsgKiBJZiBmbGFncyBjb250YWlucyBWR0NGX2luX3N5c2NhbGw6Cj4gKyAqICAg
UmVzdG9yZSBSQVgsIFJJUCwgUkZMQUdTLCBSU1AuCj4gKyAqICAgRGlzY2FyZCBSMTEsIFJDWCwg
Q1MsIFNTLgo+ICsgKiBPdGhlcndpc2U6Cj4gKyAqICAgUmVzdG9yZSBSQVgsIFIxMSwgUkNYLCBD
UzpSSVAsIFJGTEFHUywgU1M6UlNQLgo+ICsgKiBBbGwgb3RoZXIgcmVnaXN0ZXJzIGFyZSBzYXZl
ZCBvbiBoeXBlcmNhbGwgZW50cnkgYW5kIHJlc3RvcmVkIHRvIHVzZXIuCj4gKyAqLwo+ICsvKiBH
dWVzdCBleGl0ZWQgaW4gU1lTQ0FMTCBjb250ZXh0PyBSZXR1cm4gdG8gZ3Vlc3Qgd2l0aCBTWVNS
RVQ/ICovCj4gKyNkZWZpbmUgX1ZHQ0ZfaW5fc3lzY2FsbCA4Cj4gKyNkZWZpbmUgVkdDRl9pbl9z
eXNjYWxsICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKPiArI2RlZmluZSBWR0NGX0lOX1NZU0NBTEwg
IFZHQ0ZfaW5fc3lzY2FsbAo+ICsKPiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPiArCj4gK3N0cnVj
dCBpcmV0X2NvbnRleHQgewo+ICsgICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9m
IGh5cGVyY2FsbCkuICovCj4gKyAgICBVSU5UNjQgcmF4LCByMTEsIHJjeCwgZmxhZ3MsIHJpcCwg
Y3MsIHJmbGFncywgcnNwLCBzczsKPiArICAgIC8qIEJvdHRvbSBvZiBpcmV0IHN0YWNrIGZyYW1l
LiAqLwo+ICt9Owo+ICsKPiArI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RS
SUNUX0FOU0lfXykKPiArLyogQW5vbnltb3VzIHVuaW9uIGluY2x1ZGVzIGJvdGggMzItIGFuZCA2
NC1iaXQgbmFtZXMgKGUuZy4sIGVheC9yYXgpLiAqLwo+ICsjZGVmaW5lIF9fREVDTF9SRUcobmFt
ZSkgdW5pb24geyBcCj4gKyAgICBVSU5UNjQgciAjIyBuYW1lLCBlICMjIG5hbWU7IFwKPiArICAg
IFVJTlQzMiBfZSAjIyBuYW1lOyBcCj4gK30KPiArI2Vsc2UKPiArLyogTm9uLWdjYyBzb3VyY2Vz
IG11c3QgYWx3YXlzIHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcuLCByYXgpLiAqLwo+
ICsjZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgVUlOVDY0IHIgIyMgbmFtZQo+ICsjZW5kaWYKPiAr
Cj4gK3N0cnVjdCBjcHVfdXNlcl9yZWdzIHsKPiArICAgIFVJTlQ2NCByMTU7Cj4gKyAgICBVSU5U
NjQgcjE0Owo+ICsgICAgVUlOVDY0IHIxMzsKPiArICAgIFVJTlQ2NCByMTI7Cj4gKyAgICBfX0RF
Q0xfUkVHKGJwKTsKPiArICAgIF9fREVDTF9SRUcoYngpOwo+ICsgICAgVUlOVDY0IHIxMTsKPiAr
ICAgIFVJTlQ2NCByMTA7Cj4gKyAgICBVSU5UNjQgcjk7Cj4gKyAgICBVSU5UNjQgcjg7Cj4gKyAg
ICBfX0RFQ0xfUkVHKGF4KTsKPiArICAgIF9fREVDTF9SRUcoY3gpOwo+ICsgICAgX19ERUNMX1JF
RyhkeCk7Cj4gKyAgICBfX0RFQ0xfUkVHKHNpKTsKPiArICAgIF9fREVDTF9SRUcoZGkpOwo+ICsg
ICAgVUlOVDMyIGVycm9yX2NvZGU7ICAgIC8qIHByaXZhdGUgKi8KPiArICAgIFVJTlQzMiBlbnRy
eV92ZWN0b3I7ICAvKiBwcml2YXRlICovCj4gKyAgICBfX0RFQ0xfUkVHKGlwKTsKPiArICAgIFVJ
TlQxNiBjcywgX3BhZDBbMV07Cj4gKyAgICBVSU5UOCAgc2F2ZWRfdXBjYWxsX21hc2s7Cj4gKyAg
ICBVSU5UOCAgX3BhZDFbM107Cj4gKyAgICBfX0RFQ0xfUkVHKGZsYWdzKTsgICAgICAvKiByZmxh
Z3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCj4gKyAgICBfX0RFQ0xfUkVHKHNwKTsKPiAr
ICAgIFVJTlQxNiBzcywgX3BhZDJbM107Cj4gKyAgICBVSU5UMTYgZXMsIF9wYWQzWzNdOwo+ICsg
ICAgVUlOVDE2IGRzLCBfcGFkNFszXTsKPiArICAgIFVJTlQxNiBmcywgX3BhZDVbM107IC8qIE5v
bi16ZXJvID0+IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBmc19iYXNlLiAgICAgKi8KPiArICAgIFVJ
TlQxNiBncywgX3BhZDZbM107IC8qIE5vbi16ZXJvID0+IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBn
c19iYXNlX3Vzci4gKi8KPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBjcHVf
dXNlcl9yZWdzX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNwdV91c2VyX3JlZ3NfdCk7
Cj4gKwo+ICsjdW5kZWYgX19ERUNMX1JFRwo+ICsKPiArI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhw
Zm4pICgoVUlOVE4pKHBmbikgPDwgMTIpCj4gKyNkZWZpbmUgeGVuX2NyM190b19wZm4oY3IzKSAo
KFVJTlROKShjcjMpID4+IDEyKQo+ICsKPiArc3RydWN0IGFyY2hfdmNwdV9pbmZvIHsKPiArICAg
IFVJTlROIGNyMjsKPiArICAgIFVJTlROIHBhZDsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2
NCAqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBhcmNoX3ZjcHVfaW5mbyBhcmNoX3ZjcHVfaW5m
b190Owo+ICsKPiArdHlwZWRlZiBVSU5UTiB4ZW5fY2FsbGJhY2tfdDsKPiArCj4gKyNlbmRpZiAv
KiAhX19BU1NFTUJMWV9fICovCj4gKwo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9YODZfNjRfSF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAq
IG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDog
NAo+ICsgKiB0YWItd2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVu
ZDoKPiArICovCj4gZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk
L1hlbi9hcmNoLXg4Ni94ZW4uaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9hcmNoLXg4Ni94ZW4uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
ZTI5MDZmMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlT
dGFuZGFyZC9YZW4vYXJjaC14ODYveGVuLmgKPiBAQCAtMCwwICsxLDI3MyBAQAo+ICsvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCj4gKyAqIGFyY2gteDg2L3hlbi5oCj4gKyAqIAo+ICsgKiBHdWVzdCBP
UyBpbnRlcmZhY2UgdG8geDg2IFhlbi4KPiArICogCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
PiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg
cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0
cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
Cj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4g
VEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNiwgSyBBIEZy
YXNlcgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICIuLi94ZW4uaCIKPiArCj4gKyNpZm5kZWYgX19Y
RU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9Y
ODZfWEVOX0hfXwo+ICsKPiArLyogU3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQg
aW4gMHgwMDAzMDIwMS4gKi8KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgw
MDAzMDIwMQo+ICsjZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUp
IFwKPiArICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMg
bmFtZQo+ICsjZWxzZQo+ICsjZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUs
IHR5cGUpIFwKPiArICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lCj4g
KyNlbmRpZgo+ICsKPiArLyoKPiArICogWEVOX0dVRVNUX0hBTkRMRSByZXByZXNlbnRzIGEgZ3Vl
c3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYSBmaWVsZAo+ICsgKiBpbiBhIHN0cnVjdCBpbiBt
ZW1vcnkuCj4gKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50IGEgZ3Vlc3QgcG9p
bnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KPiArICogaHlwZXJjYWxsIGFyZ3VtZW50Lgo+ICsgKiBY
RU5fR1VFU1RfSEFORExFX1BBUkFNIGFuZCBYRU5fR1VFU1RfSEFORExFIGFyZSB0aGUgc2FtZSBv
biBYODYgYnV0Cj4gKyAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMu
Cj4gKyAqLwo+ICsjZGVmaW5lIF9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkg
XAo+ICsgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAo+ICsg
ICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY29uc3RfIyNuYW1lLCBjb25zdCB0eXBlKQo+
ICsjZGVmaW5lIERFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUpICAgX19ERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShuYW1lLCBuYW1lKQo+ICsjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1l
KSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKPiArI2RlZmluZSBYRU5fR1VFU1RfSEFO
RExFKG5hbWUpICAgICAgICAgIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKQo+ICsjZGVmaW5lIFhF
Tl9HVUVTVF9IQU5ETEVfUEFSQU0obmFtZSkgICAgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQo+ICsj
ZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9
IHZhbDsgfSB3aGlsZSAoMCkKPiArI2lmZGVmIF9fWEVOX1RPT0xTX18KPiArI2RlZmluZSBnZXRf
eGVuX2d1ZXN0X2hhbmRsZSh2YWwsIGhuZCkgIGRvIHsgdmFsID0gKGhuZCkucDsgfSB3aGlsZSAo
MCkKPiArI2VuZGlmCj4gKyNkZWZpbmUgc2V0X3hlbl9ndWVzdF9oYW5kbGUoaG5kLCB2YWwpIHNl
dF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkKPiArCj4gKyNpZiBkZWZpbmVkKF9faTM4
Nl9fKQo+ICsjaW5jbHVkZSAieGVuLXg4Nl8zMi5oIgo+ICsjZWxpZiBkZWZpbmVkKF9feDg2XzY0
X18pCj4gKyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZiBf
X0FTU0VNQkxZX18KPiArdHlwZWRlZiBVSU5UTiB4ZW5fcGZuX3Q7Cj4gKyNkZWZpbmUgUFJJX3hl
bl9wZm4gImx4Igo+ICsjZW5kaWYKPiArCj4gKyNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5U
UlkgMQo+ICsKPiArI2RlZmluZSBYRU5fSEFWRV9QVl9VUENBTExfTUFTSyAxCj4gKwo+ICsvKgo+
ICsgKiBgaW5jb250ZW50cyAyMDAgc2VnZGVzYyBTZWdtZW50IERlc2NyaXB0b3IgVGFibGVzCj4g
KyAqLwo+ICsvKgo+ICsgKiBgIGVudW0gbmVnX2Vycm5vdmFsCj4gKyAqIGAgSFlQRVJWSVNPUl9z
ZXRfZ2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgVUlOVDMyIGVudHJpZXMpOwo+ICsgKiBg
Cj4gKyAqLwo+ICsvKgo+ICsgKiBBIG51bWJlciBvZiBHRFQgZW50cmllcyBhcmUgcmVzZXJ2ZWQg
YnkgWGVuLiBUaGVzZSBhcmUgbm90IHNpdHVhdGVkIGF0IHRoZQo+ICsgKiBzdGFydCBvZiB0aGUg
R0RUIGJlY2F1c2Ugc29tZSBzdHVwaWQgT1NlcyBleHBvcnQgaGFyZC1jb2RlZCBzZWxlY3RvciB2
YWx1ZXMKPiArICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3
YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBHRFQsCj4gKyAqIHNvIFhlbiBwbGFjZXMgaXRzZWxm
IG91dCBvZiB0aGUgd2F5LCBhdCB0aGUgZmFyIGVuZCBvZiB0aGUgR0RULgo+ICsgKgo+ICsgKiBO
QiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNP
Ul9tbXVleHRfb3AKPiArICovCj4gKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX1BBR0UgIDE0
Cj4gKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRf
UEFHRSAqIDQwOTYpCj4gKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0VOVFJZIChGSVJTVF9S
RVNFUlZFRF9HRFRfQllURSAvIDgpCj4gKwo+ICsKPiArLyoKPiArICogYCBlbnVtIG5lZ19lcnJu
b3ZhbAo+ICsgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1NjQgZGVz
Yyk7Cj4gKyAqIGAKPiArICogYCBAcGEgICBUaGUgbWFjaGluZSBwaHlzaWNhbCBhZGRyZXNzIG9m
IHRoZSBkZXNjcmlwdG9yIHRvCj4gKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBh
IGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KPiArICogYCBAZGVzYyBUaGUgZGVzY3JpcHRv
ciB2YWx1ZSB0byB1cGRhdGUsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBhCj4gKyAqIGAgICAgICAg
bmF0aXZlIGRlc2NyaXB0b3IgdGFibGUgZW50cnkuCj4gKyAqLwo+ICsKPiArLyogTWF4aW11bSBu
dW1iZXIgb2YgdmlydHVhbCBDUFVzIGluIGxlZ2FjeSBtdWx0aS1wcm9jZXNzb3IgZ3Vlc3RzLiAq
Lwo+ICsjZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCj4gKwo+ICsjaWZuZGVmIF9fQVNT
RU1CTFlfXwo+ICsKPiArdHlwZWRlZiBVSU5UTiB4ZW5fdWxvbmdfdDsKPiArI2RlZmluZSBQUklf
eGVuX3Vsb25nICJseCIKPiArCj4gKy8qCj4gKyAqIGAgZW51bSBuZWdfZXJybm92YWwKPiArICog
YCBIWVBFUlZJU09SX3N0YWNrX3N3aXRjaChVSU5UTiBzcywgVUlOVE4gZXNwKTsKPiArICogYAo+
ICsgKiBTZXRzIHRoZSBzdGFjayBzZWdtZW50IGFuZCBwb2ludGVyIGZvciB0aGUgY3VycmVudCB2
Y3B1Lgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIGAgZW51bSBuZWdfZXJybm92YWwKPiArICogYCBI
WVBFUlZJU09SX3NldF90cmFwX3RhYmxlKGNvbnN0IHN0cnVjdCB0cmFwX2luZm8gdHJhcHNbXSk7
Cj4gKyAqIGAKPiArICovCj4gKy8qCj4gKyAqIFNlbmQgYW4gYXJyYXkgb2YgdGhlc2UgdG8gSFlQ
RVJWSVNPUl9zZXRfdHJhcF90YWJsZSgpLgo+ICsgKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGgg
YSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAuCj4gKyAqIFRoZSBwcml2
aWxlZ2UgbGV2ZWwgc3BlY2lmaWVzIHdoaWNoIG1vZGVzIG1heSBlbnRlciBhIHRyYXAgdmlhIGEg
c29mdHdhcmUKPiArICogaW50ZXJydXB0LiBPbiB4ODYvNjQsIHNpbmNlIHJpbmdzIDEgYW5kIDIg
YXJlIHVuYXZhaWxhYmxlLCB3ZSBhbGxvY2F0ZQo+ICsgKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZv
bGxvd3M6Cj4gKyAqICBMZXZlbCA9PSAwOiBOb29uZSBtYXkgZW50ZXIKPiArICogIExldmVsID09
IDE6IEtlcm5lbCBtYXkgZW50ZXIKPiArICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50ZXIK
PiArICogIExldmVsID09IDM6IEV2ZXJ5b25lIG1heSBlbnRlcgo+ICsgKi8KPiArI2RlZmluZSBU
SV9HRVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKPiArI2RlZmluZSBUSV9HRVRf
SUYoX3RpKSAgICAgICAoKF90aSktPmZsYWdzICYgNCkKPiArI2RlZmluZSBUSV9TRVRfRFBMKF90
aSxfZHBsKSAoKF90aSktPmZsYWdzIHw9IChfZHBsKSkKPiArI2RlZmluZSBUSV9TRVRfSUYoX3Rp
LF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQo+ICtzdHJ1Y3QgdHJhcF9p
bmZvIHsKPiArICAgIFVJTlQ4ICAgICAgIHZlY3RvcjsgIC8qIGV4Y2VwdGlvbiB2ZWN0b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgVUlOVDggICAgICAgZmxhZ3M7ICAg
LyogMC0zOiBwcml2aWxlZ2UgbGV2ZWw7IDQ6IGNsZWFyIGV2ZW50IGVuYWJsZT8gICovCj4gKyAg
ICBVSU5UMTYgICAgICBjczsgICAgICAvKiBjb2RlIHNlbGVjdG9yICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KPiArICAgIFVJTlROIGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVj
dCB0cmFwX2luZm8gdHJhcF9pbmZvX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBf
aW5mb190KTsKPiArCj4gK3R5cGVkZWYgVUlOVDY0IHRzY190aW1lc3RhbXBfdDsgLyogUkRUU0Mg
dGltZXN0YW1wICovCj4gKwo+ICsvKgo+ICsgKiBUaGUgZm9sbG93aW5nIGlzIGFsbCBDUFUgY29u
dGV4dC4gTm90ZSB0aGF0IHRoZSBmcHVfY3R4dCBibG9jayBpcyBmaWxsZWQgCj4gKyAqIGluIGJ5
IEZYU0FWRSBpZiB0aGUgQ1BVIGhhcyBmZWF0dXJlIEZYU1I7IG90aGVyd2lzZSBGU0FWRSBpcyB1
c2VkLgo+ICsgKgo+ICsgKiBBbHNvIG5vdGUgdGhhdCB3aGVuIGNhbGxpbmcgRE9NQ1RMX3NldHZj
cHVjb250ZXh0IGFuZCBWQ1BVX2luaXRpYWxpc2UKPiArICogZm9yIEhWTSBhbmQgUFZIIGd1ZXN0
cywgbm90IGFsbCBpbmZvcm1hdGlvbiBpbiB0aGlzIHN0cnVjdHVyZSBpcyB1cGRhdGVkOgo+ICsg
Kgo+ICsgKiAtIEZvciBIVk0gZ3Vlc3RzLCB0aGUgc3RydWN0dXJlcyByZWFkIGluY2x1ZGU6IGZw
dV9jdHh0IChpZgo+ICsgKiBWR0NUX0kzODdfVkFMSUQgaXMgc2V0KSwgZmxhZ3MsIHVzZXJfcmVn
cywgZGVidWdyZWdbKl0KPiArICoKPiArICogLSBQVkggZ3Vlc3RzIGFyZSB0aGUgc2FtZSBhcyBI
Vk0gZ3Vlc3RzLCBidXQgYWRkaXRpb25hbGx5IHVzZSBjdHJscmVnWzNdIHRvCj4gKyAqIHNldCBj
cjMuIEFsbCBvdGhlciBmaWVsZHMgbm90IHVzZWQgc2hvdWxkIGJlIHNldCB0byAwLgo+ICsgKi8K
PiArc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB7Cj4gKyAgICAvKiBGUFUgcmVnaXN0ZXJzIGNv
bWUgZmlyc3Qgc28gdGhleSBjYW4gYmUgYWxpZ25lZCBmb3IgRlhTQVZFL0ZYUlNUT1IuICovCj4g
KyAgICBzdHJ1Y3QgeyBDSEFSOCB4WzUxMl07IH0gZnB1X2N0eHQ7ICAgICAgIC8qIFVzZXItbGV2
ZWwgRlBVIHJlZ2lzdGVycyAgICAgKi8KPiArI2RlZmluZSBWR0NGX0kzODdfVkFMSUQgICAgICAg
ICAgICAgICAgKDE8PDApCj4gKyNkZWZpbmUgVkdDRl9JTl9LRVJORUwgICAgICAgICAgICAgICAg
ICgxPDwyKQo+ICsjZGVmaW5lIF9WR0NGX2kzODdfdmFsaWQgICAgICAgICAgICAgICAwCj4gKyNk
ZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxfVkdDRl9pMzg3X3ZhbGlk
KQo+ICsjZGVmaW5lIF9WR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAyCj4gKyNkZWZpbmUg
VkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAgICgxPDxfVkdDRl9pbl9rZXJuZWwpCj4gKyNk
ZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKPiArI2RlZmluZSBWR0NGX2Zh
aWxzYWZlX2Rpc2FibGVzX2V2ZW50cyAgKDE8PF9WR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50
cykKPiArI2RlZmluZSBfVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cyAgNAo+ICsjZGVmaW5l
IFZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxl
c19ldmVudHMpCj4gKyNkZWZpbmUgX1ZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgIDUKPiAr
I2RlZmluZSBWR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX29ubGluZSkK
PiArICAgIFVJTlROIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgLyogVkdDRl8qIGZsYWdzICAg
ICAgICAgICAgICAgICAqLwo+ICsgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgdXNlcl9yZWdzOyAg
ICAgICAgIC8qIFVzZXItbGV2ZWwgQ1BVIHJlZ2lzdGVycyAgICAgKi8KPiArICAgIHN0cnVjdCB0
cmFwX2luZm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAg
ICAgICAgICovCj4gKyAgICBVSU5UTiBsZHRfYmFzZSwgbGR0X2VudHM7ICAgICAgIC8qIExEVCAo
bGluZWFyIGFkZHJlc3MsICMgZW50cykgKi8KPiArICAgIFVJTlROIGdkdF9mcmFtZXNbMTZdLCBn
ZHRfZW50czsgLyogR0RUIChtYWNoaW5lIGZyYW1lcywgIyBlbnRzKSAqLwo+ICsgICAgVUlOVE4g
a2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1AxKSAg
ICovCj4gKyAgICAvKiBOQi4gVXNlciBwYWdldGFibGUgb24geDg2LzY0IGlzIHBsYWNlZCBpbiBj
dHJscmVnWzFdLiAqLwo+ICsgICAgVUlOVE4gY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAvKiBD
UjAtQ1I3IChjb250cm9sIHJlZ2lzdGVycykgICovCj4gKyAgICBVSU5UTiBkZWJ1Z3JlZ1s4XTsg
ICAgICAgICAgICAgIC8qIERCMC1EQjcgKGRlYnVnIHJlZ2lzdGVycykgICAgKi8KPiArI2lmZGVm
IF9faTM4Nl9fCj4gKyAgICBVSU5UTiBldmVudF9jYWxsYmFja19jczsgICAgICAgIC8qIENTOkVJ
UCBvZiBldmVudCBjYWxsYmFjayAgICAgKi8KPiArICAgIFVJTlROIGV2ZW50X2NhbGxiYWNrX2Vp
cDsKPiArICAgIFVJTlROIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6RUlQIG9mIGZh
aWxzYWZlIGNhbGxiYWNrICAqLwo+ICsgICAgVUlOVE4gZmFpbHNhZmVfY2FsbGJhY2tfZWlwOwo+
ICsjZWxzZQo+ICsgICAgVUlOVE4gZXZlbnRfY2FsbGJhY2tfZWlwOwo+ICsgICAgVUlOVE4gZmFp
bHNhZmVfY2FsbGJhY2tfZWlwOwo+ICsjaWZkZWYgX19YRU5fXwo+ICsgICAgdW5pb24gewo+ICsg
ICAgICAgIFVJTlROIHN5c2NhbGxfY2FsbGJhY2tfZWlwOwo+ICsgICAgICAgIHN0cnVjdCB7Cj4g
KyAgICAgICAgICAgIFVJTlQzMiBldmVudF9jYWxsYmFja19jczsgICAgLyogY29tcGF0IENTIG9m
IGV2ZW50IGNiICAgICAqLwo+ICsgICAgICAgICAgICBVSU5UMzIgZmFpbHNhZmVfY2FsbGJhY2tf
Y3M7IC8qIGNvbXBhdCBDUyBvZiBmYWlsc2FmZSBjYiAgKi8KPiArICAgICAgICB9Owo+ICsgICAg
fTsKPiArI2Vsc2UKPiArICAgIFVJTlROIHN5c2NhbGxfY2FsbGJhY2tfZWlwOwo+ICsjZW5kaWYK
PiArI2VuZGlmCj4gKyAgICBVSU5UTiB2bV9hc3Npc3Q7ICAgICAgICAgICAgICAgIC8qIFZNQVNT
VF9UWVBFXyogYml0bWFwICovCj4gKyNpZmRlZiBfX3g4Nl82NF9fCj4gKyAgICAvKiBTZWdtZW50
IGJhc2UgYWRkcmVzc2VzLiAqLwo+ICsgICAgVUlOVDY0ICAgICAgZnNfYmFzZTsKPiArICAgIFVJ
TlQ2NCAgICAgIGdzX2Jhc2Vfa2VybmVsOwo+ICsgICAgVUlOVDY0ICAgICAgZ3NfYmFzZV91c2Vy
Owo+ICsjZW5kaWYKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0IHZj
cHVfZ3Vlc3RfY29udGV4dF90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X2d1ZXN0
X2NvbnRleHRfdCk7Cj4gKwo+ICtzdHJ1Y3QgYXJjaF9zaGFyZWRfaW5mbyB7Cj4gKyAgICBVSU5U
TiBtYXhfcGZuOyAgICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRh
YmxlICovCj4gKyAgICAvKiBGcmFtZSBjb250YWluaW5nIGxpc3Qgb2YgbWZucyBjb250YWluaW5n
IGxpc3Qgb2YgbWZucyBjb250YWluaW5nIHAybS4gKi8KPiArICAgIHhlbl9wZm5fdCAgICAgcGZu
X3RvX21mbl9mcmFtZV9saXN0X2xpc3Q7Cj4gKyAgICBVSU5UTiBubWlfcmVhc29uOwo+ICsgICAg
VUlOVDY0IHBhZFszMl07Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8g
YXJjaF9zaGFyZWRfaW5mb190Owo+ICsKPiArI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KPiAr
Cj4gKy8qCj4gKyAqIGAgZW51bSBuZWdfZXJybm92YWwKPiArICogYCBIWVBFUlZJU09SX2ZwdV90
YXNrc3dpdGNoKElOVDMyIHNldCk7Cj4gKyAqIGAKPiArICogU2V0cyAoaWYgc2V0IT0wKSBvciBj
bGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIGAgZW51bSBu
ZWdfZXJybm92YWwKPiArICogYCBIWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyhJTlQzMiByZWdubywg
VUlOVE4gdmFsdWUpOwo+ICsgKgo+ICsgKiBgIFVJTlROCj4gKyAqIGAgSFlQRVJWSVNPUl9nZXRf
ZGVidWdyZWcoSU5UMzIgcmVnbm8pOwo+ICsgKiBGb3IgMDw9cmVnPD03LCByZXR1cm5zIHRoZSBk
ZWJ1ZyByZWdpc3RlciB2YWx1ZS4KPiArICogRm9yIG90aGVyIHZhbHVlcyBvZiByZWcsIHJldHVy
bnMgKChVSU5UTiktRUlOVkFMKS4KPiArICogKFVuZm9ydHVuYXRlbHksIHRoaXMgaW50ZXJmYWNl
IGlzIGRlZmVjdGl2ZS4pCj4gKyAqLwo+ICsKPiArLyoKPiArICogUHJlZml4IGZvcmNlcyBlbXVs
YXRpb24gb2Ygc29tZSBub24tdHJhcHBpbmcgaW5zdHJ1Y3Rpb25zLgo+ICsgKiBDdXJyZW50bHkg
b25seSBDUFVJRC4KPiArICovCj4gKyNpZmRlZiBfX0FTU0VNQkxZX18KPiArI2RlZmluZSBYRU5f
RU1VTEFURV9QUkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKPiArI2RlZmlu
ZSBYRU5fQ1BVSUQgICAgICAgICAgWEVOX0VNVUxBVEVfUFJFRklYIGNwdWlkCj4gKyNlbHNlCj4g
KyNkZWZpbmUgWEVOX0VNVUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4
NmUgOyAiCj4gKyNkZWZpbmUgWEVOX0NQVUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCAi
Y3B1aWQiCj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9Y
RU5fSF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMK
PiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiB0
YWItd2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiArICov
Cj4gZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9ldmVu
dF9jaGFubmVsLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZXZlbnRf
Y2hhbm5lbC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hNDVjNjVj
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk
L1hlbi9ldmVudF9jaGFubmVsLmgKPiBAQCAtMCwwICsxLDM4MSBAQAo+ICsvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCj4gKyAqIGV2ZW50X2NoYW5uZWwuaAo+ICsgKgo+ICsgKiBFdmVudCBjaGFubmVs
cyBiZXR3ZWVuIGRvbWFpbnMuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiArICog
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAq
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCwgSyBBIEZyYXNlci4K
PiArICovCj4gKwo+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19FVkVOVF9DSEFOTkVMX0hfXwo+ICsj
ZGVmaW5lIF9fWEVOX1BVQkxJQ19FVkVOVF9DSEFOTkVMX0hfXwo+ICsKPiArI2luY2x1ZGUgInhl
bi5oIgo+ICsKPiArLyoKPiArICogYGluY29udGVudHMgMTUwIGV2dGNobiBFdmVudCBDaGFubmVs
cwo+ICsgKgo+ICsgKiBFdmVudCBjaGFubmVscyBhcmUgdGhlIGJhc2ljIHByaW1pdGl2ZSBwcm92
aWRlZCBieSBYZW4gZm9yIGV2ZW50Cj4gKyAqIG5vdGlmaWNhdGlvbnMuIEFuIGV2ZW50IGlzIHRo
ZSBYZW4gZXF1aXZhbGVudCBvZiBhIGhhcmR3YXJlCj4gKyAqIGludGVycnVwdC4gVGhleSBlc3Nl
bnRpYWxseSBzdG9yZSBvbmUgYml0IG9mIGluZm9ybWF0aW9uLCB0aGUgZXZlbnQKPiArICogb2Yg
aW50ZXJlc3QgaXMgc2lnbmFsbGVkIGJ5IHRyYW5zaXRpb25pbmcgdGhpcyBiaXQgZnJvbSAwIHRv
IDEuCj4gKyAqCj4gKyAqIE5vdGlmaWNhdGlvbnMgYXJlIHJlY2VpdmVkIGJ5IGEgZ3Vlc3Qgdmlh
IGFuIHVwY2FsbCBmcm9tIFhlbiwKPiArICogaW5kaWNhdGluZyB3aGVuIGFuIGV2ZW50IGFycml2
ZXMgKHNldHRpbmcgdGhlIGJpdCkuIEZ1cnRoZXIKPiArICogbm90aWZpY2F0aW9ucyBhcmUgbWFz
a2VkIHVudGlsIHRoZSBiaXQgaXMgY2xlYXJlZCBhZ2FpbiAodGhlcmVmb3JlLAo+ICsgKiBndWVz
dHMgbXVzdCBjaGVjayB0aGUgdmFsdWUgb2YgdGhlIGJpdCBhZnRlciByZS1lbmFibGluZyBldmVu
dAo+ICsgKiBkZWxpdmVyeSB0byBlbnN1cmUgbm8gbWlzc2VkIG5vdGlmaWNhdGlvbnMpLgo+ICsg
Kgo+ICsgKiBFdmVudCBub3RpZmljYXRpb25zIGNhbiBiZSBtYXNrZWQgYnkgc2V0dGluZyBhIGZs
YWc7IHRoaXMgaXMKPiArICogZXF1aXZhbGVudCB0byBkaXNhYmxpbmcgaW50ZXJydXB0cyBhbmQg
Y2FuIGJlIHVzZWQgdG8gZW5zdXJlCj4gKyAqIGF0b21pY2l0eSBvZiBjZXJ0YWluIG9wZXJhdGlv
bnMgaW4gdGhlIGd1ZXN0IGtlcm5lbC4KPiArICoKPiArICogRXZlbnQgY2hhbm5lbHMgYXJlIHJl
cHJlc2VudGVkIGJ5IHRoZSBldnRjaG5fKiBmaWVsZHMgaW4KPiArICogc3RydWN0IHNoYXJlZF9p
bmZvIGFuZCBzdHJ1Y3QgdmNwdV9pbmZvLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIGAgZW51bSBu
ZWdfZXJybm92YWwKPiArICogYCBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AoZW51bSBldmVu
dF9jaGFubmVsX29wIGNtZCwgVk9JRCAqYXJncykKPiArICogYAo+ICsgKiBAY21kICA9PSBFVlRD
SE5PUF8qIChldmVudC1jaGFubmVsIG9wZXJhdGlvbikuCj4gKyAqIEBhcmdzID09IHN0cnVjdCBl
dnRjaG5fKiBPcGVyYXRpb24tc3BlY2lmaWMgZXh0cmEgYXJndW1lbnRzIChOVUxMIGlmIG5vbmUp
Lgo+ICsgKi8KPiArCj4gKy8qIGAgZW51bSBldmVudF9jaGFubmVsX29wIHsgLy8gRVZUQ0hOT1Bf
KiA9PiBzdHJ1Y3QgZXZ0Y2huXyogKi8KPiArI2RlZmluZSBFVlRDSE5PUF9iaW5kX2ludGVyZG9t
YWluIDAKPiArI2RlZmluZSBFVlRDSE5PUF9iaW5kX3ZpcnEgICAgICAgIDEKPiArI2RlZmluZSBF
VlRDSE5PUF9iaW5kX3BpcnEgICAgICAgIDIKPiArI2RlZmluZSBFVlRDSE5PUF9jbG9zZSAgICAg
ICAgICAgIDMKPiArI2RlZmluZSBFVlRDSE5PUF9zZW5kICAgICAgICAgICAgIDQKPiArI2RlZmlu
ZSBFVlRDSE5PUF9zdGF0dXMgICAgICAgICAgIDUKPiArI2RlZmluZSBFVlRDSE5PUF9hbGxvY191
bmJvdW5kICAgIDYKPiArI2RlZmluZSBFVlRDSE5PUF9iaW5kX2lwaSAgICAgICAgIDcKPiArI2Rl
ZmluZSBFVlRDSE5PUF9iaW5kX3ZjcHUgICAgICAgIDgKPiArI2RlZmluZSBFVlRDSE5PUF91bm1h
c2sgICAgICAgICAgIDkKPiArI2RlZmluZSBFVlRDSE5PUF9yZXNldCAgICAgICAgICAgMTAKPiAr
I2RlZmluZSBFVlRDSE5PUF9pbml0X2NvbnRyb2wgICAgMTEKPiArI2RlZmluZSBFVlRDSE5PUF9l
eHBhbmRfYXJyYXkgICAgMTIKPiArI2RlZmluZSBFVlRDSE5PUF9zZXRfcHJpb3JpdHkgICAgMTMK
PiArLyogYCB9ICovCj4gKwo+ICt0eXBlZGVmIFVJTlQzMiBldnRjaG5fcG9ydF90Owo+ICtERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRShldnRjaG5fcG9ydF90KTsKPiArCj4gKy8qCj4gKyAqIEVWVENI
Tk9QX2FsbG9jX3VuYm91bmQ6IEFsbG9jYXRlIGEgcG9ydCBpbiBkb21haW4gPGRvbT4gYW5kIG1h
cmsgYXMKPiArICogYWNjZXB0aW5nIGludGVyZG9tYWluIGJpbmRpbmdzIGZyb20gZG9tYWluIDxy
ZW1vdGVfZG9tPi4gQSBmcmVzaCBwb3J0Cj4gKyAqIGlzIGFsbG9jYXRlZCBpbiA8ZG9tPiBhbmQg
cmV0dXJuZWQgYXMgPHBvcnQ+Lgo+ICsgKiBOT1RFUzoKPiArICogIDEuIElmIHRoZSBjYWxsZXIg
aXMgdW5wcml2aWxlZ2VkIHRoZW4gPGRvbT4gbXVzdCBiZSBET01JRF9TRUxGLgo+ICsgKiAgMi4g
PHJkb20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBsb29wYmFjayBjb25uZWN0aW9ucy4K
PiArICovCj4gK3N0cnVjdCBldnRjaG5fYWxsb2NfdW5ib3VuZCB7Cj4gKyAgICAvKiBJTiBwYXJh
bWV0ZXJzICovCj4gKyAgICBkb21pZF90IGRvbSwgcmVtb3RlX2RvbTsKPiArICAgIC8qIE9VVCBw
YXJhbWV0ZXJzICovCj4gKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cj4gK307Cj4gK3R5cGVkZWYg
c3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIGV2dGNobl9hbGxvY191bmJvdW5kX3Q7Cj4gKwo+
ICsvKgo+ICsgKiBFVlRDSE5PUF9iaW5kX2ludGVyZG9tYWluOiBDb25zdHJ1Y3QgYW4gaW50ZXJk
b21haW4gZXZlbnQgY2hhbm5lbCBiZXR3ZWVuCj4gKyAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQg
PHJlbW90ZV9kb20+LiA8cmVtb3RlX2RvbSxyZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQo+ICsg
KiBhIHBvcnQgdGhhdCBpcyB1bmJvdW5kIGFuZCBtYXJrZWQgYXMgYWNjZXB0aW5nIGJpbmRpbmdz
IGZyb20gdGhlIGNhbGxpbmcKPiArICogZG9tYWluLiBBIGZyZXNoIHBvcnQgaXMgYWxsb2NhdGVk
IGluIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgcmV0dXJuZWQgYXMKPiArICogPGxvY2FsX3BvcnQ+
Lgo+ICsgKgo+ICsgKiBJbiBjYXNlIHRoZSBwZWVyIGRvbWFpbiBoYXMgYWxyZWFkeSB0cmllZCB0
byBzZXQgb3VyIGV2ZW50IGNoYW5uZWwKPiArICogcGVuZGluZywgYmVmb3JlIGl0IHdhcyBib3Vu
ZCwgRVZUQ0hOT1BfYmluZF9pbnRlcmRvbWFpbiBhbHdheXMgc2V0cwo+ICsgKiB0aGUgbG9jYWwg
ZXZlbnQgY2hhbm5lbCBwZW5kaW5nLgo+ICsgKgo+ICsgKiBUaGUgdXN1YWwgcGF0dGVybiBvZiB1
c2UsIGluIHRoZSBndWVzdCdzIHVwY2FsbCAob3Igc3Vic2VxdWVudAo+ICsgKiBoYW5kbGVyKSBp
cyBhcyBmb2xsb3dzOiAoUmUtZW5hYmxlIHRoZSBldmVudCBjaGFubmVsIGZvciBzdWJzZXF1ZW50
Cj4gKyAqIHNpZ25hbGxpbmcgYW5kIHRoZW4pIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHdo
YXRldmVyIGNvbmRpdGlvbgo+ICsgKiBpcyBiZWluZyB3YWl0ZWQgZm9yIGJ5IG90aGVyIG1lYW5z
LCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24gaXMKPiArICogbmVlZGVkIChpZiBhbnkpLgo+ICsg
Kgo+ICsgKiBOT1RFUzoKPiArICogIDEuIDxyZW1vdGVfZG9tPiBtYXkgYmUgRE9NSURfU0VMRiwg
YWxsb3dpbmcgbG9vcGJhY2sgY29ubmVjdGlvbnMuCj4gKyAqLwo+ICtzdHJ1Y3QgZXZ0Y2huX2Jp
bmRfaW50ZXJkb21haW4gewo+ICsgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KPiArICAgIGRvbWlk
X3QgcmVtb3RlX2RvbTsKPiArICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQ7Cj4gKyAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIGV2dGNobl9wb3J0X3QgbG9jYWxfcG9ydDsKPiAr
fTsKPiArdHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gZXZ0Y2huX2JpbmRf
aW50ZXJkb21haW5fdDsKPiArCj4gKy8qCj4gKyAqIEVWVENITk9QX2JpbmRfdmlycTogQmluZCBh
IGxvY2FsIGV2ZW50IGNoYW5uZWwgdG8gVklSUSA8aXJxPiBvbiBzcGVjaWZpZWQKPiArICogdmNw
dS4KPiArICogTk9URVM6Cj4gKyAqICAxLiBWaXJ0dWFsIElSUXMgYXJlIGNsYXNzaWZpZWQgYXMg
cGVyLXZjcHUgb3IgZ2xvYmFsLiBTZWUgdGhlIFZJUlEgbGlzdAo+ICsgKiAgICAgaW4geGVuLmgg
Zm9yIHRoZSBjbGFzc2lmaWNhdGlvbiBvZiBlYWNoIFZJUlEuCj4gKyAqICAyLiBHbG9iYWwgVklS
UXMgbXVzdCBiZSBhbGxvY2F0ZWQgb24gVkNQVTAgYnV0IGNhbiBzdWJzZXF1ZW50bHkgYmUKPiAr
ICogICAgIHJlLWJvdW5kIHZpYSBFVlRDSE5PUF9iaW5kX3ZjcHUuCj4gKyAqICAzLiBQZXItdmNw
dSBWSVJRcyBtYXkgYmUgYm91bmQgdG8gYXQgbW9zdCBvbmUgZXZlbnQgY2hhbm5lbCBwZXIgdmNw
dS4KPiArICogICAgIFRoZSBhbGxvY2F0ZWQgZXZlbnQgY2hhbm5lbCBpcyBib3VuZCB0byB0aGUg
c3BlY2lmaWVkIHZjcHUgYW5kIHRoZQo+ICsgKiAgICAgYmluZGluZyBjYW5ub3QgYmUgY2hhbmdl
ZC4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fYmluZF92aXJxIHsKPiArICAgIC8qIElOIHBhcmFt
ZXRlcnMuICovCj4gKyAgICBVSU5UMzIgdmlycTsgLyogZW51bSB2aXJxICovCj4gKyAgICBVSU5U
MzIgdmNwdTsKPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgZXZ0Y2huX3BvcnRf
dCBwb3J0Owo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fYmluZF92aXJxIGV2dGNobl9i
aW5kX3ZpcnFfdDsKPiArCj4gKy8qCj4gKyAqIEVWVENITk9QX2JpbmRfcGlycTogQmluZCBhIGxv
Y2FsIGV2ZW50IGNoYW5uZWwgdG8gYSByZWFsIElSUSAoUElSUSA8aXJxPikuCj4gKyAqIE5PVEVT
Ogo+ICsgKiAgMS4gQSBwaHlzaWNhbCBJUlEgbWF5IGJlIGJvdW5kIHRvIGF0IG1vc3Qgb25lIGV2
ZW50IGNoYW5uZWwgcGVyIGRvbWFpbi4KPiArICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJp
dmlsZWdlZCBkb21haW4gbWF5IGJpbmQgdG8gYSBwaHlzaWNhbCBJUlEuCj4gKyAqLwo+ICtzdHJ1
Y3QgZXZ0Y2huX2JpbmRfcGlycSB7Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsgICAg
VUlOVDMyIHBpcnE7Cj4gKyNkZWZpbmUgQklORF9QSVJRX19XSUxMX1NIQVJFIDEKPiArICAgIFVJ
TlQzMiBmbGFnczsgLyogQklORF9QSVJRX18qICovCj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4g
Ki8KPiArICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgZXZ0
Y2huX2JpbmRfcGlycSBldnRjaG5fYmluZF9waXJxX3Q7Cj4gKwo+ICsvKgo+ICsgKiBFVlRDSE5P
UF9iaW5kX2lwaTogQmluZCBhIGxvY2FsIGV2ZW50IGNoYW5uZWwgdG8gcmVjZWl2ZSBldmVudHMu
Cj4gKyAqIE5PVEVTOgo+ICsgKiAgMS4gVGhlIGFsbG9jYXRlZCBldmVudCBjaGFubmVsIGlzIGJv
dW5kIHRvIHRoZSBzcGVjaWZpZWQgdmNwdS4gVGhlIGJpbmRpbmcKPiArICogICAgIG1heSBub3Qg
YmUgY2hhbmdlZC4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fYmluZF9pcGkgewo+ICsgICAgVUlO
VDMyIHZjcHU7Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIGV2dGNobl9wb3J0
X3QgcG9ydDsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpIGV2dGNobl9i
aW5kX2lwaV90Owo+ICsKPiArLyoKPiArICogRVZUQ0hOT1BfY2xvc2U6IENsb3NlIGEgbG9jYWwg
ZXZlbnQgY2hhbm5lbCA8cG9ydD4uIElmIHRoZSBjaGFubmVsIGlzCj4gKyAqIGludGVyZG9tYWlu
IHRoZW4gdGhlIHJlbW90ZSBlbmQgaXMgcGxhY2VkIGluIHRoZSB1bmJvdW5kIHN0YXRlCj4gKyAq
IChFVlRDSE5TVEFUX3VuYm91bmQpLCBhd2FpdGluZyBhIG5ldyBjb25uZWN0aW9uLgo+ICsgKi8K
PiArc3RydWN0IGV2dGNobl9jbG9zZSB7Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsg
ICAgZXZ0Y2huX3BvcnRfdCBwb3J0Owo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fY2xv
c2UgZXZ0Y2huX2Nsb3NlX3Q7Cj4gKwo+ICsvKgo+ICsgKiBFVlRDSE5PUF9zZW5kOiBTZW5kIGFu
IGV2ZW50IHRvIHRoZSByZW1vdGUgZW5kIG9mIHRoZSBjaGFubmVsIHdob3NlIGxvY2FsCj4gKyAq
IGVuZHBvaW50IGlzIDxwb3J0Pi4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fc2VuZCB7Cj4gKyAg
ICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgZXZ0Y2huX3BvcnRfdCBwb3J0Owo+ICt9Owo+
ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fc2VuZCBldnRjaG5fc2VuZF90Owo+ICsKPiArLyoKPiAr
ICogRVZUQ0hOT1Bfc3RhdHVzOiBHZXQgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBjb21tdW5p
Y2F0aW9uIGNoYW5uZWwgd2hpY2gKPiArICogaGFzIGFuIGVuZHBvaW50IGF0IDxkb20sIHBvcnQ+
Lgo+ICsgKiBOT1RFUzoKPiArICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURf
U0VMRi4KPiArICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5
IG9idGFpbiB0aGUgc3RhdHVzIG9mIGFuIGV2ZW50Cj4gKyAqICAgICBjaGFubmVsIGZvciB3aGlj
aCA8ZG9tPiBpcyBub3QgRE9NSURfU0VMRi4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fc3RhdHVz
IHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KPiArICAgIGRvbWlkX3QgIGRvbTsKPiArICAg
IGV2dGNobl9wb3J0X3QgcG9ydDsKPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCj4gKyNkZWZp
bmUgRVZUQ0hOU1RBVF9jbG9zZWQgICAgICAgMCAgLyogQ2hhbm5lbCBpcyBub3QgaW4gdXNlLiAg
ICAgICAgICAgICAgICAgKi8KPiArI2RlZmluZSBFVlRDSE5TVEFUX3VuYm91bmQgICAgICAxICAv
KiBDaGFubmVsIGlzIHdhaXRpbmcgaW50ZXJkb20gY29ubmVjdGlvbi4qLwo+ICsjZGVmaW5lIEVW
VENITlNUQVRfaW50ZXJkb21haW4gIDIgIC8qIENoYW5uZWwgaXMgY29ubmVjdGVkIHRvIHJlbW90
ZSBkb21haW4uICovCj4gKyNkZWZpbmUgRVZUQ0hOU1RBVF9waXJxICAgICAgICAgMyAgLyogQ2hh
bm5lbCBpcyBib3VuZCB0byBhIHBoeXMgSVJRIGxpbmUuICAgKi8KPiArI2RlZmluZSBFVlRDSE5T
VEFUX3ZpcnEgICAgICAgICA0ICAvKiBDaGFubmVsIGlzIGJvdW5kIHRvIGEgdmlydHVhbCBJUlEg
bGluZSAqLwo+ICsjZGVmaW5lIEVWVENITlNUQVRfaXBpICAgICAgICAgIDUgIC8qIENoYW5uZWwg
aXMgYm91bmQgdG8gYSB2aXJ0dWFsIElQSSBsaW5lICovCj4gKyAgICBVSU5UMzIgc3RhdHVzOwo+
ICsgICAgVUlOVDMyIHZjcHU7ICAgICAgICAgICAgICAgICAvKiBWQ1BVIHRvIHdoaWNoIHRoaXMg
Y2hhbm5lbCBpcyBib3VuZC4gICAqLwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIHN0cnVjdCB7
Cj4gKyAgICAgICAgICAgIGRvbWlkX3QgZG9tOwo+ICsgICAgICAgIH0gdW5ib3VuZDsgICAgICAg
ICAgICAgICAgIC8qIEVWVENITlNUQVRfdW5ib3VuZCAqLwo+ICsgICAgICAgIHN0cnVjdCB7Cj4g
KyAgICAgICAgICAgIGRvbWlkX3QgZG9tOwo+ICsgICAgICAgICAgICBldnRjaG5fcG9ydF90IHBv
cnQ7Cj4gKyAgICAgICAgfSBpbnRlcmRvbWFpbjsgICAgICAgICAgICAgLyogRVZUQ0hOU1RBVF9p
bnRlcmRvbWFpbiAqLwo+ICsgICAgICAgIFVJTlQzMiBwaXJxOyAgICAgICAgICAgICAvKiBFVlRD
SE5TVEFUX3BpcnEgICAgICAgICovCj4gKyAgICAgICAgVUlOVDMyIHZpcnE7ICAgICAgICAgICAg
IC8qIEVWVENITlNUQVRfdmlycSAgICAgICAgKi8KPiArICAgIH0gdTsKPiArfTsKPiArdHlwZWRl
ZiBzdHJ1Y3QgZXZ0Y2huX3N0YXR1cyBldnRjaG5fc3RhdHVzX3Q7Cj4gKwo+ICsvKgo+ICsgKiBF
VlRDSE5PUF9iaW5kX3ZjcHU6IFNwZWNpZnkgd2hpY2ggdmNwdSBhIGNoYW5uZWwgc2hvdWxkIG5v
dGlmeSB3aGVuIGFuCj4gKyAqIGV2ZW50IGlzIHBlbmRpbmcuCj4gKyAqIE5PVEVTOgo+ICsgKiAg
MS4gSVBJLWJvdW5kIGNoYW5uZWxzIGFsd2F5cyBub3RpZnkgdGhlIHZjcHUgc3BlY2lmaWVkIGF0
IGJpbmQgdGltZS4KPiArICogICAgIFRoaXMgYmluZGluZyBjYW5ub3QgYmUgY2hhbmdlZC4KPiAr
ICogIDIuIFBlci1WQ1BVIFZJUlEgY2hhbm5lbHMgYWx3YXlzIG5vdGlmeSB0aGUgdmNwdSBzcGVj
aWZpZWQgYXQgYmluZCB0aW1lLgo+ICsgKiAgICAgVGhpcyBiaW5kaW5nIGNhbm5vdCBiZSBjaGFu
Z2VkLgo+ICsgKiAgMy4gQWxsIG90aGVyIGNoYW5uZWxzIG5vdGlmeSB2Y3B1MCBieSBkZWZhdWx0
LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdoZW4KPiArICogICAgIHRoZSBjaGFubmVsIGlzIGFsbG9j
YXRlZCAoYSBwb3J0IHRoYXQgaXMgZnJlZWQgYW5kIHN1YnNlcXVlbnRseSByZXVzZWQKPiArICog
ICAgIGhhcyBpdHMgYmluZGluZyByZXNldCB0byB2Y3B1MCkuCj4gKyAqLwo+ICtzdHJ1Y3QgZXZ0
Y2huX2JpbmRfdmNwdSB7Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgZXZ0Y2hu
X3BvcnRfdCBwb3J0Owo+ICsgICAgVUlOVDMyIHZjcHU7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0
IGV2dGNobl9iaW5kX3ZjcHUgZXZ0Y2huX2JpbmRfdmNwdV90Owo+ICsKPiArLyoKPiArICogRVZU
Q0hOT1BfdW5tYXNrOiBVbm1hc2sgdGhlIHNwZWNpZmllZCBsb2NhbCBldmVudC1jaGFubmVsIHBv
cnQgYW5kIGRlbGl2ZXIKPiArICogYSBub3RpZmljYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIFZD
UFUgaWYgYW4gZXZlbnQgaXMgcGVuZGluZy4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fdW5tYXNr
IHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7
Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGV2dGNobl91bm1hc2sgZXZ0Y2huX3VubWFza190Owo+
ICsKPiArLyoKPiArICogRVZUQ0hOT1BfcmVzZXQ6IENsb3NlIGFsbCBldmVudCBjaGFubmVscyBh
c3NvY2lhdGVkIHdpdGggc3BlY2lmaWVkIGRvbWFpbi4KPiArICogTk9URVM6Cj4gKyAqICAxLiA8
ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCj4gKyAqICAyLiBPbmx5IGEgc3Vm
ZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IG90aGVyIHRoYW4gRE9NSURf
U0VMRi4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fcmVzZXQgewo+ICsgICAgLyogSU4gcGFyYW1l
dGVycy4gKi8KPiArICAgIGRvbWlkX3QgZG9tOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRj
aG5fcmVzZXQgZXZ0Y2huX3Jlc2V0X3Q7Cj4gKwo+ICsvKgo+ICsgKiBFVlRDSE5PUF9pbml0X2Nv
bnRyb2w6IGluaXRpYWxpemUgdGhlIGNvbnRyb2wgYmxvY2sgZm9yIHRoZSBGSUZPIEFCSS4KPiAr
ICoKPiArICogTm90ZTogYW55IGV2ZW50cyB0aGF0IGFyZSBjdXJyZW50bHkgcGVuZGluZyB3aWxs
IG5vdCBiZSByZXNlbnQgYW5kCj4gKyAqIHdpbGwgYmUgbG9zdC4gIEd1ZXN0cyBzaG91bGQgY2Fs
bCB0aGlzIGJlZm9yZSBiaW5kaW5nIGFueSBldmVudCB0bwo+ICsgKiBhdm9pZCBsb3NpbmcgYW55
IGV2ZW50cy4KPiArICovCj4gK3N0cnVjdCBldnRjaG5faW5pdF9jb250cm9sIHsKPiArICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBVSU5UNjQgY29udHJvbF9nZm47Cj4gKyAgICBVSU5U
MzIgb2Zmc2V0Owo+ICsgICAgVUlOVDMyIHZjcHU7Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4g
Ki8KPiArICAgIFVJTlQ4IGxpbmtfYml0czsKPiArICAgIFVJTlQ4IF9wYWRbN107Cj4gK307Cj4g
K3R5cGVkZWYgc3RydWN0IGV2dGNobl9pbml0X2NvbnRyb2wgZXZ0Y2huX2luaXRfY29udHJvbF90
Owo+ICsKPiArLyoKPiArICogRVZUQ0hOT1BfZXhwYW5kX2FycmF5OiBhZGQgYW4gYWRkaXRpb25h
bCBwYWdlIHRvIHRoZSBldmVudCBhcnJheS4KPiArICovCj4gK3N0cnVjdCBldnRjaG5fZXhwYW5k
X2FycmF5IHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBVSU5UNjQgYXJyYXlf
Z2ZuOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fZXhwYW5kX2FycmF5IGV2dGNobl9l
eHBhbmRfYXJyYXlfdDsKPiArCj4gKy8qCj4gKyAqIEVWVENITk9QX3NldF9wcmlvcml0eTogc2V0
IHRoZSBwcmlvcml0eSBmb3IgYW4gZXZlbnQgY2hhbm5lbC4KPiArICovCj4gK3N0cnVjdCBldnRj
aG5fc2V0X3ByaW9yaXR5IHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBVSU5U
MzIgcG9ydDsKPiArICAgIFVJTlQzMiBwcmlvcml0eTsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3Qg
ZXZ0Y2huX3NldF9wcmlvcml0eSBldnRjaG5fc2V0X3ByaW9yaXR5X3Q7Cj4gKwo+ICsvKgo+ICsg
KiBgIGVudW0gbmVnX2Vycm5vdmFsCj4gKyAqIGAgSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29w
X2NvbXBhdChzdHJ1Y3QgZXZ0Y2huX29wICpvcCkKPiArICogYAo+ICsgKiBTdXBlcmNlZGVkIGJ5
IG5ldyBldmVudF9jaGFubmVsX29wKCkgaHlwZXJjYWxsIHNpbmNlIDB4MDAwMzAyMDIuCj4gKyAq
Lwo+ICtzdHJ1Y3QgZXZ0Y2huX29wIHsKPiArICAgIFVJTlQzMiBjbWQ7IC8qIGVudW0gZXZlbnRf
Y2hhbm5lbF9vcCAqLwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIHN0cnVjdCBldnRjaG5fYWxs
b2NfdW5ib3VuZCAgICBhbGxvY191bmJvdW5kOwo+ICsgICAgICAgIHN0cnVjdCBldnRjaG5fYmlu
ZF9pbnRlcmRvbWFpbiBiaW5kX2ludGVyZG9tYWluOwo+ICsgICAgICAgIHN0cnVjdCBldnRjaG5f
YmluZF92aXJxICAgICAgICBiaW5kX3ZpcnE7Cj4gKyAgICAgICAgc3RydWN0IGV2dGNobl9iaW5k
X3BpcnEgICAgICAgIGJpbmRfcGlycTsKPiArICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBp
ICAgICAgICAgYmluZF9pcGk7Cj4gKyAgICAgICAgc3RydWN0IGV2dGNobl9jbG9zZSAgICAgICAg
ICAgIGNsb3NlOwo+ICsgICAgICAgIHN0cnVjdCBldnRjaG5fc2VuZCAgICAgICAgICAgICBzZW5k
Owo+ICsgICAgICAgIHN0cnVjdCBldnRjaG5fc3RhdHVzICAgICAgICAgICBzdGF0dXM7Cj4gKyAg
ICAgICAgc3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgICAgICAgIGJpbmRfdmNwdTsKPiArICAgICAg
ICBzdHJ1Y3QgZXZ0Y2huX3VubWFzayAgICAgICAgICAgdW5tYXNrOwo+ICsgICAgfSB1Owo+ICt9
Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fb3AgZXZ0Y2huX29wX3Q7Cj4gK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKGV2dGNobl9vcF90KTsKPiArCj4gKy8qCj4gKyAqIDItbGV2ZWwgQUJJCj4g
KyAqLwo+ICsKPiArI2RlZmluZSBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMgKHNpemVvZih4ZW5fdWxv
bmdfdCkgKiBzaXplb2YoeGVuX3Vsb25nX3QpICogNjQpCj4gKwo+ICsvKgo+ICsgKiBGSUZPIEFC
SQo+ICsgKi8KPiArCj4gKy8qIEV2ZW50cyBtYXkgaGF2ZSBwcmlvcml0aWVzIGZyb20gMCAoaGln
aGVzdCkgdG8gMTUgKGxvd2VzdCkuICovCj4gKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlf
TUFYICAgICAwCj4gKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfREVGQVVMVCA3Cj4gKyNk
ZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfTUlOICAgICAxNQo+ICsKPiArI2RlZmluZSBFVlRD
SE5fRklGT19NQVhfUVVFVUVTIChFVlRDSE5fRklGT19QUklPUklUWV9NSU4gKyAxKQo+ICsKPiAr
dHlwZWRlZiBVSU5UMzIgZXZlbnRfd29yZF90Owo+ICsKPiArI2RlZmluZSBFVlRDSE5fRklGT19Q
RU5ESU5HIDMxCj4gKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fTUFTS0VEICAzMAo+ICsjZGVmaW5lIEVW
VENITl9GSUZPX0xJTktFRCAgMjkKPiArI2RlZmluZSBFVlRDSE5fRklGT19CVVNZICAgIDI4Cj4g
Kwo+ICsjZGVmaW5lIEVWVENITl9GSUZPX0xJTktfQklUUyAxNwo+ICsjZGVmaW5lIEVWVENITl9G
SUZPX0xJTktfTUFTSyAoKDEgPDwgRVZUQ0hOX0ZJRk9fTElOS19CSVRTKSAtIDEpCj4gKwo+ICsj
ZGVmaW5lIEVWVENITl9GSUZPX05SX0NIQU5ORUxTICgxIDw8IEVWVENITl9GSUZPX0xJTktfQklU
UykKPiArCj4gK3N0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2NrIHsKPiArICAgIFVJTlQz
MiByZWFkeTsKPiArICAgIFVJTlQzMiBfcnN2ZDsKPiArICAgIFVJTlQzMiBoZWFkW0VWVENITl9G
SUZPX01BWF9RVUVVRVNdOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBldnRjaG5fZmlmb19jb250
cm9sX2Jsb2NrIGV2dGNobl9maWZvX2NvbnRyb2xfYmxvY2tfdDsKPiArCj4gKyNlbmRpZiAvKiBf
X1hFTl9QVUJMSUNfRVZFTlRfQ0hBTk5FTF9IX18gKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZh
cmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMt
YmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2Rl
OiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0lu
ZHVzdHJ5U3RhbmRhcmQvWGVuL2dyYW50X3RhYmxlLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0
cnlTdGFuZGFyZC9YZW4vZ3JhbnRfdGFibGUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uZjQ2YjQ4ZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1
ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vZ3JhbnRfdGFibGUuaAo+IEBAIC0wLDAgKzEsNjYyIEBA
Cj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogZ3JhbnRfdGFibGUuaAo+ICsgKgo+ICsg
KiBJbnRlcmZhY2UgZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBh
bmQgcmVjZWl2aW5nCj4gKyAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4KPiArICoKPiArICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Cj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
Cj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
Ugo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAo
YykgMjAwNCwgSyBBIEZyYXNlcgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0dS
QU5UX1RBQkxFX0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9IX18KPiAr
Cj4gKyNpbmNsdWRlICJ4ZW4uaCIKPiArCj4gKy8qCj4gKyAqIGBpbmNvbnRlbnRzIDE1MCBnbnR0
YWIgR3JhbnQgVGFibGVzCj4gKyAqCj4gKyAqIFhlbidzIGdyYW50IHRhYmxlcyBwcm92aWRlIGEg
Z2VuZXJpYyBtZWNoYW5pc20gdG8gbWVtb3J5IHNoYXJpbmcKPiArICogYmV0d2VlbiBkb21haW5z
LiBUaGlzIHNoYXJlZCBtZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlucyB0aGUgc3BsaXQKPiArICog
ZGV2aWNlIGRyaXZlcnMgZm9yIGJsb2NrIGFuZCBuZXR3b3JrIElPLgo+ICsgKgo+ICsgKiBFYWNo
IGRvbWFpbiBoYXMgaXRzIG93biBncmFudCB0YWJsZS4gVGhpcyBpcyBhIGRhdGEgc3RydWN0dXJl
IHRoYXQKPiArICogaXMgc2hhcmVkIHdpdGggWGVuOyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0
ZWxsIFhlbiB3aGF0IGtpbmQgb2YKPiArICogcGVybWlzc2lvbnMgb3RoZXIgZG9tYWlucyBoYXZl
IG9uIGl0cyBwYWdlcy4gRW50cmllcyBpbiB0aGUgZ3JhbnQKPiArICogdGFibGUgYXJlIGlkZW50
aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4gQSBncmFudCByZWZlcmVuY2UgaXMgYW4KPiArICog
aW50ZWdlciwgd2hpY2ggaW5kZXhlcyBpbnRvIHRoZSBncmFudCB0YWJsZS4gSXQgYWN0cyBhcyBh
Cj4gKyAqIGNhcGFiaWxpdHkgd2hpY2ggdGhlIGdyYW50ZWUgY2FuIHVzZSB0byBwZXJmb3JtIG9w
ZXJhdGlvbnMgb24gdGhlCj4gKyAqIGdyYW50ZXLigJlzIG1lbW9yeS4KPiArICoKPiArICogVGhp
cyBjYXBhYmlsaXR5LWJhc2VkIHN5c3RlbSBhbGxvd3Mgc2hhcmVkLW1lbW9yeSBjb21tdW5pY2F0
aW9ucwo+ICsgKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBkb21haW5zLiBBIGdyYW50IHJlZmVyZW5j
ZSBhbHNvIGVuY2Fwc3VsYXRlcwo+ICsgKiB0aGUgZGV0YWlscyBvZiBhIHNoYXJlZCBwYWdlLCBy
ZW1vdmluZyB0aGUgbmVlZCBmb3IgYSBkb21haW4gdG8KPiArICoga25vdyB0aGUgcmVhbCBtYWNo
aW5lIGFkZHJlc3Mgb2YgYSBwYWdlIGl0IGlzIHNoYXJpbmcuIFRoaXMgbWFrZXMKPiArICogaXQg
cG9zc2libGUgdG8gc2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRoIGRvbWFpbnMgcnVubmluZyBp
bgo+ICsgKiBmdWxseSB2aXJ0dWFsaXNlZCBtZW1vcnkuCj4gKyAqLwo+ICsKPiArLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIEdSQU5UIFRBQkxFIFJFUFJFU0VOVEFU
SU9OCj4gKyAqLwo+ICsKPiArLyogU29tZSByb3VnaCBndWlkZWxpbmVzIG9uIGFjY2Vzc2luZyBh
bmQgdXBkYXRpbmcgZ3JhbnQtdGFibGUgZW50cmllcwo+ICsgKiBpbiBhIGNvbmN1cnJlbmN5LXNh
ZmUgbWFubmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgTGludXggY29udGFpbnMgYQo+ICsgKiBy
ZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGd1ZXN0IE9TZXMgKGRyaXZlcnMveGVuL2dyYW50
X3RhYmxlLmMsIHNlZQo+ICsgKiBodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVs
L2dpdC90b3J2YWxkcy9saW51eC5naXQ7YT1ibG9iO2Y9ZHJpdmVycy94ZW4vZ3JhbnQtdGFibGUu
YztoYj1IRUFECj4gKyAqCj4gKyAqIE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50LWdlbmVy
YXRpb24geDg2IHByb2Nlc3NvcnMuIEhvd2V2ZXIsIGEKPiArICogICAgIGNvbXBpbGVyIGJhcnJp
ZXIgd2lsbCBzdGlsbCBiZSByZXF1aXJlZC4KPiArICoKPiArICogSW50cm9kdWNpbmcgYSB2YWxp
ZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJsZToKPiArICogIDEuIFdyaXRlIGVudC0+ZG9taWQu
Cj4gKyAqICAyLiBXcml0ZSBlbnQtPmZyYW1lOgo+ICsgKiAgICAgIEdURl9wZXJtaXRfYWNjZXNz
OiAgIEZyYW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJtaXR0ZWQuCj4gKyAqICAgICAgR1RGX2Fj
Y2VwdF90cmFuc2ZlcjogUHNldWRvLXBoeXMgZnJhbWUgc2xvdCBiZWluZyBmaWxsZWQgYnkgbmV3
Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIG9yIHplcm8gaWYgbm9uZS4K
PiArICogIDMuIFdyaXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLgo+ICsgKiAgNC4gV3JpdGUgZW50
LT5mbGFncywgaW5jLiB2YWxpZCB0eXBlLgo+ICsgKgo+ICsgKiBJbnZhbGlkYXRpbmcgYW4gdW51
c2VkIEdURl9wZXJtaXRfYWNjZXNzIGVudHJ5Ogo+ICsgKiAgMS4gZmxhZ3MgPSBlbnQtPmZsYWdz
Lgo+ICsgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3JlYWRpbmd8R1RGX3dyaXRp
bmcpKS4KPiArICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZs
YWdzLCBmbGFncywgMCkuCj4gKyAqICBOQi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNlIG9mIGVu
dHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50IG9uIHN1Y2Nlc3Mgb2YKPiArICogICAgICBzdGVwIDMs
IGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3RybC1kZXAgd3Jp
dGVzLgo+ICsgKgo+ICsgKiBJbnZhbGlkYXRpbmcgYW4gaW4tdXNlIEdURl9wZXJtaXRfYWNjZXNz
IGVudHJ5Ogo+ICsgKiAgVGhpcyBjYW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBhc3Np
c3RhbmNlIGZyb20gdGhlIGRvbWFpbiBjb250cm9sbGVyCj4gKyAqICB3aGljaCBjYW4gc2V0IGEg
dGltZW91dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQgZW50cnkgYW5kIHRha2UgbmVjZXNzYXJ5Cj4g
KyAqICBhY3Rpb24uIChOQi4gVGhpcyBpcyBub3QgeWV0IGltcGxlbWVudGVkISkuCj4gKyAqCj4g
KyAqIEludmFsaWRhdGluZyBhbiB1bnVzZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKPiAr
ICogIDEuIGZsYWdzID0gZW50LT5mbGFncy4KPiArICogIDIuIE9ic2VydmUgdGhhdCAhKGZsYWdz
ICYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkuIFsqXQo+ICsgKiAgMy4gQ2hlY2sgcmVzdWx0IG9m
IFNNUC1zYWZlIENNUFhDSEcoJmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KPiArICogIE5CLiBObyBu
ZWVkIGZvciBXTUIgYXMgcmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRlbnQgb24gc3Vj
Y2VzcyBvZgo+ICsgKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRl
ZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCj4gKyAqICBbKl0gSWYgR1RGX3RyYW5zZmVy
X2NvbW1pdHRlZCBpcyBzZXQgdGhlbiB0aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcuCj4g
KyAqICAgICAgVGhlIGd1ZXN0IG11c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFudCBlbnRyeSB1bnRp
bCB0aGUgYWRkcmVzcyBvZiB0aGUKPiArICogICAgICB0cmFuc2ZlcnJlZCBmcmFtZSBpcyB3cml0
dGVuLiBJdCBpcyBzYWZlIGZvciB0aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5nCj4gKyAqICAgICAg
Zm9yIHRoaXMgdG8gb2NjdXIgKGRldGVjdCBieSBvYnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZCBpbgo+ICsgKiAgICAgIGVudC0+ZmxhZ3MpLgo+ICsgKgo+ICsgKiBJbnZhbGlkYXRpbmcg
YSBjb21taXR0ZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKPiArICogIDEuIFdhaXQgZm9y
IChlbnQtPmZsYWdzICYgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCkuCj4gKyAqCj4gKyAqIENoYW5n
aW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byByZWFkLW9ubHk6Cj4gKyAq
ICBVc2UgU01QLXNhZmUgQ01QWENIRyB0byBzZXQgR1RGX3JlYWRvbmx5LCB3aGlsZSBjaGVja2lu
ZyAhR1RGX3dyaXRpbmcuCj4gKyAqCj4gKyAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3Mg
ZnJvbSByZWFkLW9ubHkgdG8gd3JpdGFibGU6Cj4gKyAqICBVc2UgU01QLXNhZmUgYml0LXNldHRp
bmcgaW5zdHJ1Y3Rpb24uCj4gKyAqLwo+ICsKPiArLyoKPiArICogUmVmZXJlbmNlIHRvIGEgZ3Jh
bnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUuCj4gKyAqLwo+ICt0
eXBlZGVmIFVJTlQzMiBncmFudF9yZWZfdDsKPiArCj4gKy8qCj4gKyAqIEEgZ3JhbnQgdGFibGUg
Y29tcHJpc2VzIGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJpZXMgaW4gb25lIG9yIG1vcmUK
PiArICogcGFnZSBmcmFtZXMgc2hhcmVkIGJldHdlZW4gWGVuIGFuZCBhIGd1ZXN0Lgo+ICsgKiBb
WEVOXTogVGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmlu
ZyBndWVzdC4KPiArICogW0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBieSB0aGUgZ3Vlc3Qg
YW5kIHJlYWQgYnkgWGVuLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIFZlcnNpb24gMSBvZiB0aGUg
Z3JhbnQgdGFibGUgZW50cnkgc3RydWN0dXJlIGlzIG1haW50YWluZWQgcHVyZWx5Cj4gKyAqIGZv
ciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hvdWxkIHVzZSB2ZXJzaW9u
IDIuCj4gKyAqLwo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMGEK
PiArI2RlZmluZSBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeQo+ICsjZGVmaW5lIGdyYW50X2Vu
dHJ5X3YxX3QgZ3JhbnRfZW50cnlfdAo+ICsjZW5kaWYKPiArc3RydWN0IGdyYW50X2VudHJ5X3Yx
IHsKPiArICAgIC8qIEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQgZmxhZyBpbmZvcm1hdGlvbi4g
IFtYRU4sR1NUXSAqLwo+ICsgICAgVUlOVDE2IGZsYWdzOwo+ICsgICAgLyogVGhlIGRvbWFpbiBi
ZWluZyBncmFudGVkIGZvcmVpZ24gcHJpdmlsZWdlcy4gW0dTVF0gKi8KPiArICAgIGRvbWlkX3Qg
IGRvbWlkOwo+ICsgICAgLyoKPiArICAgICAqIEdURl9wZXJtaXRfYWNjZXNzOiBGcmFtZSB0aGF0
IEBkb21pZCBpcyBhbGxvd2VkIHRvIG1hcCBhbmQgYWNjZXNzLiBbR1NUXQo+ICsgICAgICogR1RG
X2FjY2VwdF90cmFuc2ZlcjogRnJhbWUgd2hvc2Ugb3duZXJzaGlwIHRyYW5zZmVycmVkIGJ5IEBk
b21pZC4gW1hFTl0KPiArICAgICAqLwo+ICsgICAgVUlOVDMyIGZyYW1lOwo+ICt9Owo+ICt0eXBl
ZGVmIHN0cnVjdCBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeV92MV90Owo+ICsKPiArLyogVGhl
IGZpcnN0IGZldyBncmFudCB0YWJsZSBlbnRyaWVzIHdpbGwgYmUgcHJlc2VydmVkIGFjcm9zcyBn
cmFudCB0YWJsZQo+ICsgKiB2ZXJzaW9uIGNoYW5nZXMgYW5kIG1heSBiZSBwcmUtcG9wdWxhdGVk
IGF0IGRvbWFpbiBjcmVhdGlvbiBieSB0b29scy4KPiArICovCj4gKyNkZWZpbmUgR05UVEFCX05S
X1JFU0VSVkVEX0VOVFJJRVMgICAgIDgKPiArI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfQ09OU09M
RSAgICAgICAgMAo+ICsjZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9YRU5TVE9SRSAgICAgICAxCj4g
Kwo+ICsvKgo+ICsgKiBUeXBlIG9mIGdyYW50IGVudHJ5Lgo+ICsgKiAgR1RGX2ludmFsaWQ6IFRo
aXMgZ3JhbnQgZW50cnkgZ3JhbnRzIG5vIHByaXZpbGVnZXMuCj4gKyAqICBHVEZfcGVybWl0X2Fj
Y2VzczogQWxsb3cgQGRvbWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1lLgo+ICsgKiAgR1RGX2FjY2Vw
dF90cmFuc2ZlcjogQWxsb3cgQGRvbWlkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBvbmUgcGFn
ZSBmcmFtZQo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBndWVzdC4gWGVuIHdy
aXRlcyB0aGUgcGFnZSBudW1iZXIgdG8gQGZyYW1lLgo+ICsgKiAgR1RGX3RyYW5zaXRpdmU6IEFs
bG93IEBkb21pZCB0byB0cmFuc2l0aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ugb2YKPiArICogICAg
ICAgICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4gQHRyYW5zX2RvbWlkLiAgTm8gbWFwcGluZ3Mg
YXJlIGFsbG93ZWQuCj4gKyAqLwo+ICsjZGVmaW5lIEdURl9pbnZhbGlkICAgICAgICAgKDBVPDww
KQo+ICsjZGVmaW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFVPDwwKQo+ICsjZGVmaW5lIEdURl9h
Y2NlcHRfdHJhbnNmZXIgKDJVPDwwKQo+ICsjZGVmaW5lIEdURl90cmFuc2l0aXZlICAgICAgKDNV
PDwwKQo+ICsjZGVmaW5lIEdURl90eXBlX21hc2sgICAgICAgKDNVPDwwKQo+ICsKPiArLyoKPiAr
ICogU3ViZmxhZ3MgZm9yIEdURl9wZXJtaXRfYWNjZXNzLgo+ICsgKiAgR1RGX3JlYWRvbmx5OiBS
ZXN0cmljdCBAZG9taWQgdG8gcmVhZC1vbmx5IG1hcHBpbmdzIGFuZCBhY2Nlc3Nlcy4gW0dTVF0K
PiArICogIEdURl9yZWFkaW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciBy
ZWFkaW5nIGJ5IEBkb21pZC4gW1hFTl0KPiArICogIEdURl93cml0aW5nOiBHcmFudCBlbnRyeSBp
cyBjdXJyZW50bHkgbWFwcGVkIGZvciB3cml0aW5nIGJ5IEBkb21pZC4gW1hFTl0KPiArICogIEdU
Rl9QQVQsIEdURl9QV1QsIEdURl9QQ0Q6ICh4ODYpIGNhY2hlIGF0dHJpYnV0ZSBmbGFncyBmb3Ig
dGhlIGdyYW50IFtHU1RdCj4gKyAqICBHVEZfc3ViX3BhZ2U6IEdyYW50IGFjY2VzcyB0byBvbmx5
IGEgc3VicmFuZ2Ugb2YgdGhlIHBhZ2UuICBAZG9taWQKPiArICogICAgICAgICAgICAgICAgd2ls
bCBvbmx5IGJlIGFsbG93ZWQgdG8gY29weSBmcm9tIHRoZSBncmFudCwgYW5kIG5vdAo+ICsgKiAg
ICAgICAgICAgICAgICBtYXAgaXQuIFtHU1RdCj4gKyAqLwo+ICsjZGVmaW5lIF9HVEZfcmVhZG9u
bHkgICAgICAgKDIpCj4gKyNkZWZpbmUgR1RGX3JlYWRvbmx5ICAgICAgICAoMVU8PF9HVEZfcmVh
ZG9ubHkpCj4gKyNkZWZpbmUgX0dURl9yZWFkaW5nICAgICAgICAoMykKPiArI2RlZmluZSBHVEZf
cmVhZGluZyAgICAgICAgICgxVTw8X0dURl9yZWFkaW5nKQo+ICsjZGVmaW5lIF9HVEZfd3JpdGlu
ZyAgICAgICAgKDQpCj4gKyNkZWZpbmUgR1RGX3dyaXRpbmcgICAgICAgICAoMVU8PF9HVEZfd3Jp
dGluZykKPiArI2RlZmluZSBfR1RGX1BXVCAgICAgICAgICAgICg1KQo+ICsjZGVmaW5lIEdURl9Q
V1QgICAgICAgICAgICAgKDFVPDxfR1RGX1BXVCkKPiArI2RlZmluZSBfR1RGX1BDRCAgICAgICAg
ICAgICg2KQo+ICsjZGVmaW5lIEdURl9QQ0QgICAgICAgICAgICAgKDFVPDxfR1RGX1BDRCkKPiAr
I2RlZmluZSBfR1RGX1BBVCAgICAgICAgICAgICg3KQo+ICsjZGVmaW5lIEdURl9QQVQgICAgICAg
ICAgICAgKDFVPDxfR1RGX1BBVCkKPiArI2RlZmluZSBfR1RGX3N1Yl9wYWdlICAgICAgICg4KQo+
ICsjZGVmaW5lIEdURl9zdWJfcGFnZSAgICAgICAgKDFVPDxfR1RGX3N1Yl9wYWdlKQo+ICsKPiAr
LyoKPiArICogU3ViZmxhZ3MgZm9yIEdURl9hY2NlcHRfdHJhbnNmZXI6Cj4gKyAqICBHVEZfdHJh
bnNmZXJfY29tbWl0dGVkOiBYZW4gc2V0cyB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBp
cyBjb21taXR0ZWQKPiArICogICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwIG9mIGEgcGFn
ZSBmcmFtZS4gV2hlbiBhIGd1ZXN0IHNlZXMgdGhpcyBmbGFnCj4gKyAqICAgICAgaXQgbXVzdCAv
bm90LyBtb2RpZnkgdGhlIGdyYW50IGVudHJ5IHVudGlsIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQg
aXMKPiArICogICAgICBzZXQgYnkgWGVuLgo+ICsgKiAgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZDog
SXQgaXMgc2FmZSBmb3IgdGhlIGd1ZXN0IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcKPiArICog
ICAgICBhZnRlciByZWFkaW5nIEdURl90cmFuc2Zlcl9jb21taXR0ZWQuIFhlbiB3aWxsIGFsd2F5
cyB3cml0ZSB0aGUgZnJhbWUKPiArICogICAgICBhZGRyZXNzLCBmb2xsb3dlZCBieSBPUmluZyB0
aGlzIGZsYWcsIGluIGEgdGltZWx5IG1hbm5lci4KPiArICovCj4gKyNkZWZpbmUgX0dURl90cmFu
c2Zlcl9jb21taXR0ZWQgKDIpCj4gKyNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAgKDFV
PDxfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkKPiArI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZCAoMykKPiArI2RlZmluZSBHVEZfdHJhbnNmZXJfY29tcGxldGVkICAoMVU8PF9HVEZfdHJh
bnNmZXJfY29tcGxldGVkKQo+ICsKPiArLyoKPiArICogVmVyc2lvbiAyIGdyYW50IHRhYmxlIGVu
dHJpZXMuICBUaGVzZSBmdWxmaWwgdGhlIHNhbWUgcm9sZSBhcwo+ICsgKiB2ZXJzaW9uIDEgZW50
cmllcywgYnV0IGNhbiByZXByZXNlbnQgbW9yZSBjb21wbGljYXRlZCBvcGVyYXRpb25zLgo+ICsg
KiBBbnkgZ2l2ZW4gZG9tYWluIHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJzaW9uIDEgb3IgYSB2ZXJz
aW9uIDIgdGFibGUsCj4gKyAqIGFuZCBldmVyeSBlbnRyeSBpbiB0aGUgdGFibGUgd2lsbCBiZSB0
aGUgc2FtZSB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGUgaW50ZXJmYWNlIGJ5IHdoaWNoIGRvbWFp
bnMgdXNlIGdyYW50IHJlZmVyZW5jZXMgZG9lcyBub3QgZGVwZW5kCj4gKyAqIG9uIHRoZSBncmFu
dCB0YWJsZSB2ZXJzaW9uIGluIHVzZSBieSB0aGUgb3RoZXIgZG9tYWluLgo+ICsgKi8KPiArI2lm
IF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQo+ICsvKgo+ICsgKiBWZXJz
aW9uIDEgYW5kIHZlcnNpb24gMiBncmFudCBlbnRyaWVzIHNoYXJlIGEgY29tbW9uIHByZWZpeC4g
IFRoZQo+ICsgKiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUgZG9jdW1lbnRlZCBhcyBwYXJ0IG9m
IHN0cnVjdAo+ICsgKiBncmFudF9lbnRyeV92MS4KPiArICovCj4gK3N0cnVjdCBncmFudF9lbnRy
eV9oZWFkZXIgewo+ICsgICAgVUlOVDE2IGZsYWdzOwo+ICsgICAgZG9taWRfdCAgZG9taWQ7Cj4g
K307Cj4gK3R5cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9lbnRyeV9oZWFk
ZXJfdDsKPiArCj4gKy8qCj4gKyAqIFZlcnNpb24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3RydWN0
dXJlLgo+ICsgKi8KPiArdW5pb24gZ3JhbnRfZW50cnlfdjIgewo+ICsgICAgZ3JhbnRfZW50cnlf
aGVhZGVyX3QgaGRyOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGlzIG1lbWJlciBpcyB1c2Vk
IGZvciBWMS1zdHlsZSBmdWxsIHBhZ2UgZ3JhbnRzLCB3aGVyZSBlaXRoZXI6Cj4gKyAgICAgKgo+
ICsgICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX2FjY2VwdF90cmFuc2Zlciwgb3IKPiArICAgICAq
IC0tIGhkci50eXBlIGlzIEdURl9wZXJtaXRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgbm90
IHNldC4KPiArICAgICAqCj4gKyAgICAgKiBJbiB0aGF0IGNhc2UsIHRoZSBmcmFtZSBmaWVsZCBo
YXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZQo+ICsgICAgICogZmllbGQgb2YgdGhlIHNhbWUg
bmFtZSBpbiB0aGUgVjEgZW50cnkgc3RydWN0dXJlLgo+ICsgICAgICovCj4gKyAgICBzdHJ1Y3Qg
ewo+ICsgICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKPiArICAgICAgICBVSU5UMzIg
cGFkMDsKPiArICAgICAgICBVSU5UNjQgZnJhbWU7Cj4gKyAgICB9IGZ1bGxfcGFnZTsKPiArCj4g
KyAgICAvKgo+ICsgICAgICogSWYgdGhlIGdyYW50IHR5cGUgaXMgR1RGX2dyYW50X2FjY2VzcyBh
bmQgR1RGX3N1Yl9wYWdlIGlzIHNldCwKPiArICAgICAqIEBkb21pZCBpcyBhbGxvd2VkIHRvIGFj
Y2VzcyBieXRlcyBbQHBhZ2Vfb2ZmLEBwYWdlX29mZitAbGVuZ3RoKQo+ICsgICAgICogaW4gZnJh
bWUgQGZyYW1lLgo+ICsgICAgICovCj4gKyAgICBzdHJ1Y3Qgewo+ICsgICAgICAgIGdyYW50X2Vu
dHJ5X2hlYWRlcl90IGhkcjsKPiArICAgICAgICBVSU5UMTYgcGFnZV9vZmY7Cj4gKyAgICAgICAg
VUlOVDE2IGxlbmd0aDsKPiArICAgICAgICBVSU5UNjQgZnJhbWU7Cj4gKyAgICB9IHN1Yl9wYWdl
Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBJZiB0aGUgZ3JhbnQgaXMgR1RGX3RyYW5zaXRpdmUs
IEBkb21pZCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUKPiArICAgICAqIGdyYW50IEBncmVmIGluIGRv
bWFpbiBAdHJhbnNfZG9taWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKPiArICAgICAqIGRvbWFp
bi4gIE9idmlvdXNseSwgdGhlIHRyYW5zaXRpdmUgYWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQo+
ICsgICAgICogd2l0aCB0aGUgb3JpZ2luYWwgZ3JhbnQuCj4gKyAgICAgKgo+ICsgICAgICogVGhl
IGN1cnJlbnQgdmVyc2lvbiBvZiBYZW4gZG9lcyBub3QgYWxsb3cgdHJhbnNpdGl2ZSBncmFudHMK
PiArICAgICAqIHRvIGJlIG1hcHBlZC4KPiArICAgICAqLwo+ICsgICAgc3RydWN0IHsKPiArICAg
ICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7Cj4gKyAgICAgICAgZG9taWRfdCB0cmFuc19k
b21pZDsKPiArICAgICAgICBVSU5UMTYgcGFkMDsKPiArICAgICAgICBncmFudF9yZWZfdCBncmVm
Owo+ICsgICAgfSB0cmFuc2l0aXZlOwo+ICsKPiArICAgIFVJTlQzMiBfX3NwYWNlcls0XTsgLyog
UGFkIHRvIGEgcG93ZXIgb2YgdHdvICovCj4gK307Cj4gK3R5cGVkZWYgdW5pb24gZ3JhbnRfZW50
cnlfdjIgZ3JhbnRfZW50cnlfdjJfdDsKPiArCj4gK3R5cGVkZWYgVUlOVDE2IGdyYW50X3N0YXR1
c190Owo+ICsKPiArI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KPiArCj4g
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiBHUkFOVCBUQUJMRSBR
VUVSSUVTIEFORCBVU0VTCj4gKyAqLwo+ICsKPiArLyogYCBlbnVtIG5lZ19lcnJub3ZhbAo+ICsg
KiBgIEhZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFudF90YWJsZV9vcCBjbWQsCj4g
KyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICBWT0lEICphcmdzLAo+ICsgKiBgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGNvdW50KQo+ICsgKiBgCj4gKyAqCj4gKyAqIEBh
cmdzIHBvaW50cyB0byBhbiBhcnJheSBvZiBhIHBlci1jb21tYW5kIGRhdGEgc3RydWN0dXJlLiBU
aGUgYXJyYXkKPiArICogaGFzIEBjb3VudCBtZW1iZXJzCj4gKyAqLwo+ICsKPiArLyogYCBlbnVt
IGdyYW50X3RhYmxlX29wIHsgLy8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyogKi8KPiAr
I2RlZmluZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmICAgICAgICAwCj4gKyNkZWZpbmUgR05UVEFC
T1BfdW5tYXBfZ3JhbnRfcmVmICAgICAgMQo+ICsjZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxl
ICAgICAgICAgIDIKPiArI2RlZmluZSBHTlRUQUJPUF9kdW1wX3RhYmxlICAgICAgICAgICAzCj4g
KyNkZWZpbmUgR05UVEFCT1BfdHJhbnNmZXIgICAgICAgICAgICAgNAo+ICsjZGVmaW5lIEdOVFRB
Qk9QX2NvcHkgICAgICAgICAgICAgICAgIDUKPiArI2RlZmluZSBHTlRUQUJPUF9xdWVyeV9zaXpl
ICAgICAgICAgICA2Cj4gKyNkZWZpbmUgR05UVEFCT1BfdW5tYXBfYW5kX3JlcGxhY2UgICAgNwo+
ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCj4gKyNkZWZpbmUg
R05UVEFCT1Bfc2V0X3ZlcnNpb24gICAgICAgICAgOAo+ICsjZGVmaW5lIEdOVFRBQk9QX2dldF9z
dGF0dXNfZnJhbWVzICAgIDkKPiArI2RlZmluZSBHTlRUQUJPUF9nZXRfdmVyc2lvbiAgICAgICAg
ICAxMAo+ICsjZGVmaW5lIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmCSAgICAgIDExCj4gKyNlbmRp
ZiAvKiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fICovCj4gKy8qIGAgfSAqLwo+ICsKPiArLyoK
PiArICogSGFuZGxlIHRvIHRyYWNrIGEgbWFwcGluZyBjcmVhdGVkIHZpYSBhIGdyYW50IHJlZmVy
ZW5jZS4KPiArICovCj4gK3R5cGVkZWYgVUlOVDMyIGdyYW50X2hhbmRsZV90Owo+ICsKPiArLyoK
PiArICogR05UVEFCT1BfbWFwX2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4s
PHJlZj4pIGZvciBhY2Nlc3MKPiArICogYnkgZGV2aWNlcyBhbmQvb3IgaG9zdCBDUFVzLiBJZiBz
dWNjZXNzZnVsLCA8aGFuZGxlPiBpcyBhIHRyYWNraW5nIG51bWJlcgo+ICsgKiB0aGF0IG11c3Qg
YmUgcHJlc2VudGVkIGxhdGVyIHRvIGRlc3Ryb3kgdGhlIG1hcHBpbmcocykuIE9uIGVycm9yLCA8
aGFuZGxlPgo+ICsgKiBpcyBhIG5lZ2F0aXZlIHN0YXR1cyBjb2RlLgo+ICsgKiBOT1RFUzoKPiAr
ICogIDEuIElmIEdOVE1BUF9kZXZpY2VfbWFwIGlzIHNwZWNpZmllZCB0aGVuIDxkZXZfYnVzX2Fk
ZHI+IGlzIHRoZSBhZGRyZXNzCj4gKyAqICAgICB2aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFj
Y2VzcyB0aGUgZ3JhbnRlZCBmcmFtZS4KPiArICogIDIuIElmIEdOVE1BUF9ob3N0X21hcCBpcyBz
cGVjaWZpZWQgdGhlbiBhIG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdAo+ICsgKiAgICAgZWl0aGVy
IGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3Ig
YXQKPiArICogICAgIGEgUFRFIGF0IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhl
IHR5cGUgb2YgbWFwcGluZyB0bwo+ICsgKiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdo
IHRoZSBHTlRNQVBfY29udGFpbnNfcHRlIGZsYWcsIGFuZCB0aGUKPiArICogICAgIGFkZHJlc3Mg
aXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+Lgo+ICsgKiAgMy4gTWFwcGluZ3Mgc2hvdWxkIG9u
bHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYuIElmIGEKPiArICog
ICAgIGhvc3QgbWFwcGluZyBpcyBkZXN0cm95ZWQgYnkgb3RoZXIgbWVhbnMgdGhlbiBpdCBpcyAq
Tk9UKiBndWFyYW50ZWVkCj4gKyAqICAgICB0byBiZSBhY2NvdW50ZWQgdG8gdGhlIGNvcnJlY3Qg
Z3JhbnQgcmVmZXJlbmNlIQo+ICsgKi8KPiArc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmIHsK
PiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBVSU5UNjQgaG9zdF9hZGRyOwo+ICsg
ICAgVUlOVDMyIGZsYWdzOyAgICAgICAgICAgICAgIC8qIEdOVE1BUF8qICovCj4gKyAgICBncmFu
dF9yZWZfdCByZWY7Cj4gKyAgICBkb21pZF90ICBkb207Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVy
cy4gKi8KPiArICAgIElOVDE2ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50
X3N0YXR1cyAqLwo+ICsgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOwo+ICsgICAgVUlOVDY0IGRl
dl9idXNfYWRkcjsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYg
Z250dGFiX21hcF9ncmFudF9yZWZfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFi
X21hcF9ncmFudF9yZWZfdCk7Cj4gKwo+ICsvKgo+ICsgKiBHTlRUQUJPUF91bm1hcF9ncmFudF9y
ZWY6IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCj4gKyAqIHRy
YWNrZWQgYnkgPGhhbmRsZT4uIElmIDxob3N0X2FkZHI+IG9yIDxkZXZfYnVzX2FkZHI+IGlzIHpl
cm8sIHRoYXQKPiArICogZmllbGQgaXMgaWdub3JlZC4gSWYgbm9uLXplcm8sIHRoZXkgbXVzdCBy
ZWZlciB0byBhIGRldmljZS9ob3N0IG1hcHBpbmcKPiArICogdGhhdCBpcyB0cmFja2VkIGJ5IDxo
YW5kbGU+Cj4gKyAqIE5PVEVTOgo+ICsgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4gdW5k
ZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKPiArICogICAgIHRyYWNrZWQg
YnkgPGhhbmRsZT4uCj4gKyAqICAzLiBBZnRlciBleGVjdXRpbmcgYSBiYXRjaCBvZiB1bm1hcHMs
IGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQo+ICsgKiAgICAgbWFwcGluZ3Mgd2lsbCBy
ZW1haW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCj4gKyAqLwo+ICtzdHJ1Y3QgZ250dGFi
X3VubWFwX2dyYW50X3JlZiB7Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgVUlO
VDY0IGhvc3RfYWRkcjsKPiArICAgIFVJTlQ2NCBkZXZfYnVzX2FkZHI7Cj4gKyAgICBncmFudF9o
YW5kbGVfdCBoYW5kbGU7Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIElOVDE2
ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwo+ICt9Owo+
ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIGdudHRhYl91bm1hcF9ncmFu
dF9yZWZfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2dyYW50X3Jl
Zl90KTsKPiArCj4gKy8qCj4gKyAqIEdOVFRBQk9QX3NldHVwX3RhYmxlOiBTZXQgdXAgYSBncmFu
dCB0YWJsZSBmb3IgPGRvbT4gY29tcHJpc2luZyBhdCBsZWFzdAo+ICsgKiA8bnJfZnJhbWVzPiBw
YWdlcy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRlbiB0byB0aGUgPGZyYW1lX2xpc3Q+
Lgo+ICsgKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRlbiwgZXZlbiBpZiB0
aGUgdGFibGUgaXMgbGFyZ2VyLgo+ICsgKiBOT1RFUzoKPiArICogIDEuIDxkb20+IG1heSBiZSBz
cGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KPiArICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJp
dmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KPiArICogIDMu
IFhlbiBtYXkgbm90IHN1cHBvcnQgbW9yZSB0aGFuIGEgc2luZ2xlIGdyYW50LXRhYmxlIHBhZ2Ug
cGVyIGRvbWFpbi4KPiArICovCj4gK3N0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgewo+ICsgICAg
LyogSU4gcGFyYW1ldGVycy4gKi8KPiArICAgIGRvbWlkX3QgIGRvbTsKPiArICAgIFVJTlQzMiBu
cl9mcmFtZXM7Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIElOVDE2ICBzdGF0
dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwo+ICsjaWYgX19YRU5f
SU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDAzMDAKPiArICAgIFhFTl9HVUVTVF9IQU5ETEUo
dWxvbmcpIGZyYW1lX2xpc3Q7Cj4gKyNlbHNlCj4gKyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9w
Zm5fdCkgZnJhbWVfbGlzdDsKPiArI2VuZGlmCj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGdudHRh
Yl9zZXR1cF90YWJsZSBnbnR0YWJfc2V0dXBfdGFibGVfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoZ250dGFiX3NldHVwX3RhYmxlX3QpOwo+ICsKPiArLyoKPiArICogR05UVEFCT1BfZHVt
cF90YWJsZTogRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGdyYW50IHRhYmxlIHRvIHRoZQo+ICsg
KiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBvbmx5Lgo+ICsgKi8KPiArc3RydWN0IGdudHRh
Yl9kdW1wX3RhYmxlIHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBkb21pZF90
IGRvbTsKPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgSU5UMTYgc3RhdHVzOyAg
ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCj4gK307Cj4gK3R5cGVkZWYg
c3RydWN0IGdudHRhYl9kdW1wX3RhYmxlIGdudHRhYl9kdW1wX3RhYmxlX3Q7Cj4gK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKGdudHRhYl9kdW1wX3RhYmxlX3QpOwo+ICsKPiArLyoKPiArICogR05U
VEFCT1BfdHJhbnNmZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRvIGEgZm9yZWlnbiBk
b21haW4uIFRoZQo+ICsgKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3RlcmVk
IGl0cyBpbnRlcmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCj4gKyAqIDxkb21pZCwgcmVmPi4KPiAr
ICoKPiArICogTm90ZSB0aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNp
ZmllZCBwYWdlIG5vIGxvbmdlciBiZWxvbmdzCj4gKyAqIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiAq
dW5sZXNzKiB0aGUgZXJyb3IgaXMgR05UU1RfYmFkX3BhZ2UuCj4gKyAqLwo+ICtzdHJ1Y3QgZ250
dGFiX3RyYW5zZmVyIHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICB4ZW5fcGZu
X3QgICAgIG1mbjsKPiArICAgIGRvbWlkX3QgICAgICAgZG9taWQ7Cj4gKyAgICBncmFudF9yZWZf
dCAgIHJlZjsKPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgSU5UMTYgICAgICAg
c3RhdHVzOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdHJhbnNmZXIgZ250dGFiX3Ry
YW5zZmVyX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl90cmFuc2Zlcl90KTsK
PiArCj4gKwo+ICsvKgo+ICsgKiBHTlRUQUJPUF9jb3B5OiBIeXBlcnZpc29yIGJhc2VkIGNvcHkK
PiArICogc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgY2FuIGJlIGVpdGhlcnMgTUZOcyBvciwgZm9y
IGZvcmVpZ24gZG9tYWlucywKPiArICogZ3JhbnQgcmVmZXJlbmNlcy4gdGhlIGZvcmVpZ24gZG9t
YWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2Vzcwo+ICsgKiBpbiBpdHMgZ3JhbnQgdGFi
bGUuCj4gKyAqCj4gKyAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQgdHlwZSBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KPiArICogb3IgZ3JhbnQgcmVmZXJlbmNlKS4KPiAr
ICoKPiArICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBjb3B5IGRhdGEgYmV0
d2VlbiB0d28gZG9tYWlucwo+ICsgKiB2aWEgYSB0aGlyZCBwYXJ0eSBpZiB0aGUgc291cmNlIGFu
ZCBkZXN0aW5hdGlvbiBkb21haW5zIGhhZCBwcmV2aW91c2x5Cj4gKyAqIGdyYW50IGFwcHJvcHJp
YXRlIGFjY2VzcyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFydHkuCj4gKyAqCj4gKyAq
IHNvdXJjZV9vZmZzZXQgc3BlY2lmaWVzIGFuIG9mZnNldCBpbiB0aGUgc291cmNlIGZyYW1lLCBk
ZXN0X29mZnNldAo+ICsgKiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUgYW5kICBsZW4g
c3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKPiArICogYnl0ZXMgdG8gYmUgY29waWVkLgo+ICsgKi8K
PiArCj4gKyNkZWZpbmUgX0dOVENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKPiArI2RlZmluZSBH
TlRDT1BZX3NvdXJjZV9ncmVmICAgICAgICgxPDxfR05UQ09QWV9zb3VyY2VfZ3JlZikKPiArI2Rl
ZmluZSBfR05UQ09QWV9kZXN0X2dyZWYgICAgICAgICgxKQo+ICsjZGVmaW5lIEdOVENPUFlfZGVz
dF9ncmVmICAgICAgICAgKDE8PF9HTlRDT1BZX2Rlc3RfZ3JlZikKPiArCj4gK3N0cnVjdCBnbnR0
YWJfY29weSB7Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+ICsgICAgc3RydWN0IHsKPiAr
ICAgICAgICB1bmlvbiB7Cj4gKyAgICAgICAgICAgIGdyYW50X3JlZl90IHJlZjsKPiArICAgICAg
ICAgICAgeGVuX3Bmbl90ICAgZ21mbjsKPiArICAgICAgICB9IHU7Cj4gKyAgICAgICAgZG9taWRf
dCAgZG9taWQ7Cj4gKyAgICAgICAgVUlOVDE2IG9mZnNldDsKPiArICAgIH0gc291cmNlLCBkZXN0
Owo+ICsgICAgVUlOVDE2ICAgICAgbGVuOwo+ICsgICAgVUlOVDE2ICAgICAgZmxhZ3M7ICAgICAg
ICAgIC8qIEdOVENPUFlfKiAqLwo+ICsgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCj4gKyAgICBJ
TlQxNiAgICAgICBzdGF0dXM7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGdudHRhYl9jb3B5ICBn
bnR0YWJfY29weV90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsK
PiArCj4gKy8qCj4gKyAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFu
ZCBtYXhpbXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKPiArICogZ3JhbnQgdGFibGUuCj4gKyAqIE5P
VEVTOgo+ICsgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgo+ICsg
KiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgc3BlY2lmeSA8
ZG9tPiAhPSBET01JRF9TRUxGLgo+ICsgKi8KPiArc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIHsK
PiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovCj4gKyAgICBkb21pZF90ICBkb207Cj4gKyAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIFVJTlQzMiBucl9mcmFtZXM7Cj4gKyAgICBVSU5U
MzIgbWF4X25yX2ZyYW1lczsKPiArICAgIElOVDE2ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9
PiBlbnVtIGdyYW50X3N0YXR1cyAqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfcXVl
cnlfc2l6ZSBnbnR0YWJfcXVlcnlfc2l6ZV90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfcXVlcnlfc2l6ZV90KTsKPiArCj4gKy8qCj4gKyAqIEdOVFRBQk9QX3VubWFwX2FuZF9y
ZXBsYWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncwo+ICsg
KiB0cmFja2VkIGJ5IDxoYW5kbGU+IGJ1dCBhdG9taWNhbGx5IHJlcGxhY2UgdGhlIHBhZ2UgdGFi
bGUgZW50cnkgd2l0aCBvbmUKPiArICogcG9pbnRpbmcgdG8gdGhlIG1hY2hpbmUgYWRkcmVzcyB1
bmRlciA8bmV3X2FkZHI+LiAgPG5ld19hZGRyPiB3aWxsIGJlCj4gKyAqIHJlZGlyZWN0ZWQgdG8g
dGhlIG51bGwgZW50cnkuCj4gKyAqIE5PVEVTOgo+ICsgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwg
aW4gYW4gdW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKPiArICogICAg
IHRyYWNrZWQgYnkgPGhhbmRsZT4uCj4gKyAqICAyLiBBZnRlciBleGVjdXRpbmcgYSBiYXRjaCBv
ZiB1bm1hcHMsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQo+ICsgKiAgICAgbWFwcGlu
Z3Mgd2lsbCByZW1haW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCj4gKyAqLwo+ICtzdHJ1
Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIHsKPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICov
Cj4gKyAgICBVSU5UNjQgaG9zdF9hZGRyOwo+ICsgICAgVUlOVDY0IG5ld19hZGRyOwo+ICsgICAg
Z3JhbnRfaGFuZGxlX3QgaGFuZGxlOwo+ICsgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCj4gKyAg
ICBJTlQxNiAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8K
PiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIGdudHRhYl91
bm1hcF9hbmRfcmVwbGFjZV90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdW5t
YXBfYW5kX3JlcGxhY2VfdCk7Cj4gKwo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+
PSAweDAwMDMwMjBhCj4gKy8qCj4gKyAqIEdOVFRBQk9QX3NldF92ZXJzaW9uOiBSZXF1ZXN0IGEg
cGFydGljdWxhciB2ZXJzaW9uIG9mIHRoZSBncmFudAo+ICsgKiB0YWJsZSBzaGFyZWQgdGFibGUg
c3RydWN0dXJlLiAgVGhpcyBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkCj4gKyAqIG9u
Y2UgaW4gYW55IGdpdmVuIGRvbWFpbi4gIEl0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBhbnkg
Z3JhbnRzCj4gKyAqIGFyZSBhY3RpdmF0ZWQ7IG90aGVyd2lzZSwgdGhlIGRvbWFpbiB3aWxsIGJl
IHN0dWNrIHdpdGggdmVyc2lvbiAxLgo+ICsgKiBUaGUgb25seSBkZWZpbmVkIHZlcnNpb25zIGFy
ZSAxIGFuZCAyLgo+ICsgKi8KPiArc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiB7Cj4gKyAgICAv
KiBJTi9PVVQgcGFyYW1ldGVycyAqLwo+ICsgICAgVUlOVDMyIHZlcnNpb247Cj4gK307Cj4gK3R5
cGVkZWYgc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiBnbnR0YWJfc2V0X3ZlcnNpb25fdDsKPiAr
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldF92ZXJzaW9uX3QpOwo+ICsKPiArCj4g
Ky8qCj4gKyAqIEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzOiBHZXQgdGhlIGxpc3Qgb2YgZnJh
bWVzIHVzZWQgdG8gc3RvcmUgZ3JhbnQKPiArICogc3RhdHVzIGZvciA8ZG9tPi4gSW4gZ3JhbnQg
Zm9ybWF0IHZlcnNpb24gMiwgdGhlIHN0YXR1cyBpcyBzZXBhcmF0ZWQKPiArICogZnJvbSB0aGUg
b3RoZXIgc2hhcmVkIGdyYW50IGZpZWxkcyB0byBhbGxvdyBtb3JlIGVmZmljaWVudCBzeW5jaHJv
bml6YXRpb24KPiArICogdXNpbmcgYmFycmllcnMgaW5zdGVhZCBvZiBhdG9taWMgY21wZXhjaCBv
cGVyYXRpb25zLgo+ICsgKiA8bnJfZnJhbWVzPiBzcGVjaWZ5IHRoZSBzaXplIG9mIHZlY3RvciA8
ZnJhbWVfbGlzdD4uCj4gKyAqIFRoZSBmcmFtZSBhZGRyZXNzZXMgYXJlIHJldHVybmVkIGluIHRo
ZSA8ZnJhbWVfbGlzdD4uCj4gKyAqIE9ubHkgPG5yX2ZyYW1lcz4gYWRkcmVzc2VzIGFyZSByZXR1
cm5lZCwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgo+ICsgKiBOT1RFUzoKPiArICogIDEu
IDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KPiArICogIDIuIE9ubHkgYSBz
dWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURf
U0VMRi4KPiArICovCj4gK3N0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMgewo+ICsgICAg
LyogSU4gcGFyYW1ldGVycy4gKi8KPiArICAgIFVJTlQzMiBucl9mcmFtZXM7Cj4gKyAgICBkb21p
ZF90ICBkb207Cj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KPiArICAgIElOVDE2ICBzdGF0
dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwo+ICsgICAgWEVOX0dV
RVNUX0hBTkRMRShVSU5UNjQpIGZyYW1lX2xpc3Q7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGdu
dHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdDsKPiArREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3QpOwo+ICsKPiAr
LyoKPiArICogR05UVEFCT1BfZ2V0X3ZlcnNpb246IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVyc2lv
biB3aGljaCBpcyBpbgo+ICsgKiBlZmZlY3QgZm9yIGRvbWFpbiA8ZG9tPi4KPiArICovCj4gK3N0
cnVjdCBnbnR0YWJfZ2V0X3ZlcnNpb24gewo+ICsgICAgLyogSU4gcGFyYW1ldGVycyAqLwo+ICsg
ICAgZG9taWRfdCBkb207Cj4gKyAgICBVSU5UMTYgcGFkOwo+ICsgICAgLyogT1VUIHBhcmFtZXRl
cnMgKi8KPiArICAgIFVJTlQzMiB2ZXJzaW9uOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0
YWJfZ2V0X3ZlcnNpb24gZ250dGFiX2dldF92ZXJzaW9uX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKGdudHRhYl9nZXRfdmVyc2lvbl90KTsKPiArCj4gKy8qCj4gKyAqIEdOVFRBQk9QX3N3
YXBfZ3JhbnRfcmVmOiBTd2FwIHRoZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4KPiAr
ICovCj4gK3N0cnVjdCBnbnR0YWJfc3dhcF9ncmFudF9yZWYgewo+ICsgICAgLyogSU4gcGFyYW1l
dGVycyAqLwo+ICsgICAgZ3JhbnRfcmVmX3QgcmVmX2E7Cj4gKyAgICBncmFudF9yZWZfdCByZWZf
YjsKPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCj4gKyAgICBJTlQxNiBzdGF0dXM7ICAgICAg
ICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCj4gK307Cj4gK3R5cGVkZWYgc3RydWN0
IGdudHRhYl9zd2FwX2dyYW50X3JlZiBnbnR0YWJfc3dhcF9ncmFudF9yZWZfdDsKPiArREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3QpOwo+ICsKPiArI2VuZGlm
IC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KPiArCj4gKy8qCj4gKyAqIEJpdGZpZWxk
IHZhbHVlcyBmb3IgZ250dGFiX21hcF9ncmFudF9yZWYuZmxhZ3MuCj4gKyAqLwo+ICsgLyogTWFw
IHRoZSBncmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5IEkvTyBkZXZpY2VzLiAqLwo+ICsjZGVmaW5l
IF9HTlRNQVBfZGV2aWNlX21hcCAgICAgICgwKQo+ICsjZGVmaW5lIEdOVE1BUF9kZXZpY2VfbWFw
ICAgICAgICgxPDxfR05UTUFQX2RldmljZV9tYXApCj4gKyAvKiBNYXAgdGhlIGdyYW50IGVudHJ5
IGZvciBhY2Nlc3MgYnkgaG9zdCBDUFVzLiAqLwo+ICsjZGVmaW5lIF9HTlRNQVBfaG9zdF9tYXAg
ICAgICAgICgxKQo+ICsjZGVmaW5lIEdOVE1BUF9ob3N0X21hcCAgICAgICAgICgxPDxfR05UTUFQ
X2hvc3RfbWFwKQo+ICsgLyogQWNjZXNzZXMgdG8gdGhlIGdyYW50ZWQgZnJhbWUgd2lsbCBiZSBy
ZXN0cmljdGVkIHRvIHJlYWQtb25seSBhY2Nlc3MuICovCj4gKyNkZWZpbmUgX0dOVE1BUF9yZWFk
b25seSAgICAgICAgKDIpCj4gKyNkZWZpbmUgR05UTUFQX3JlYWRvbmx5ICAgICAgICAgKDE8PF9H
TlRNQVBfcmVhZG9ubHkpCj4gKyAvKgo+ICsgICogR05UTUFQX2hvc3RfbWFwIHN1YmZsYWc6Cj4g
KyAgKiAgMCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBvbmx5IGJ5IHRoZSBndWVzdCBP
Uy4KPiArICAqICAxID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIGJ5IGd1ZXN0IE9TICsg
Y3VycmVudCBhcHBsaWNhdGlvbi4KPiArICAqLwo+ICsjZGVmaW5lIF9HTlRNQVBfYXBwbGljYXRp
b25fbWFwICgzKQo+ICsjZGVmaW5lIEdOVE1BUF9hcHBsaWNhdGlvbl9tYXAgICgxPDxfR05UTUFQ
X2FwcGxpY2F0aW9uX21hcCkKPiArCj4gKyAvKgo+ICsgICogR05UTUFQX2NvbnRhaW5zX3B0ZSBz
dWJmbGFnOgo+ICsgICogIDAgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyBhIGhvc3Qgdmly
dHVhbCBhZGRyZXNzLgo+ICsgICogIDEgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyB0aGUg
bWFjaGluZSBhZGRlc3Mgb2YgdGhlIFBURSB0byB1cGRhdGUuCj4gKyAgKi8KPiArI2RlZmluZSBf
R05UTUFQX2NvbnRhaW5zX3B0ZSAgICAoNCkKPiArI2RlZmluZSBHTlRNQVBfY29udGFpbnNfcHRl
ICAgICAoMTw8X0dOVE1BUF9jb250YWluc19wdGUpCj4gKwo+ICsjZGVmaW5lIF9HTlRNQVBfY2Fu
X2ZhaWwgICAgICAgICg1KQo+ICsjZGVmaW5lIEdOVE1BUF9jYW5fZmFpbCAgICAgICAgICgxPDxf
R05UTUFQX2Nhbl9mYWlsKQo+ICsKPiArLyoKPiArICogQml0cyB0byBiZSBwbGFjZWQgaW4gZ3Vl
c3Qga2VybmVsIGF2YWlsYWJsZSBQVEUgYml0cyAoYXJjaGl0ZWN0dXJlCj4gKyAqIGRlcGVuZGVu
dDsgb25seSBzdXBwb3J0ZWQgd2hlbiBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyBpcyBz
ZXQpLgo+ICsgKi8KPiArI2RlZmluZSBfR05UTUFQX2d1ZXN0X2F2YWlsMCAgICAoMTYpCj4gKyNk
ZWZpbmUgR05UTUFQX2d1ZXN0X2F2YWlsX21hc2sgKChVSU5UMzIpfjAgPDwgX0dOVE1BUF9ndWVz
dF9hdmFpbDApCj4gKwo+ICsvKgo+ICsgKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1cm5z
LiBBbGwgZXJyb3JzIGFyZSAtdmUuCj4gKyAqLwo+ICsvKiBgIGVudW0gZ3JhbnRfc3RhdHVzIHsg
Ki8KPiArI2RlZmluZSBHTlRTVF9va2F5ICAgICAgICAgICAgICgwKSAgLyogTm9ybWFsIHJldHVy
bi4gICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsjZGVmaW5lIEdOVFNUX2dlbmVyYWxfZXJy
b3IgICAgKC0xKSAvKiBHZW5lcmFsIHVuZGVmaW5lZCBlcnJvci4gICAgICAgICAgICAgICovCj4g
KyNkZWZpbmUgR05UU1RfYmFkX2RvbWFpbiAgICAgICAoLTIpIC8qIFVucmVjb2duc2VkIGRvbWFp
biBpZC4gICAgICAgICAgICAgICAgKi8KPiArI2RlZmluZSBHTlRTVF9iYWRfZ250cmVmICAgICAg
ICgtMykgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgZ250cmVmLiAqLwo+ICsjZGVm
aW5lIEdOVFNUX2JhZF9oYW5kbGUgICAgICAgKC00KSAvKiBVbnJlY29nbmlzZWQgb3IgaW5hcHBy
b3ByaWF0ZSBoYW5kbGUuICovCj4gKyNkZWZpbmUgR05UU1RfYmFkX3ZpcnRfYWRkciAgICAoLTUp
IC8qIEluYXBwcm9wcmlhdGUgdmlydHVhbCBhZGRyZXNzIHRvIG1hcC4gKi8KPiArI2RlZmluZSBH
TlRTVF9iYWRfZGV2X2FkZHIgICAgICgtNikgLyogSW5hcHByb3ByaWF0ZSBkZXZpY2UgYWRkcmVz
cyB0byB1bm1hcC4qLwo+ICsjZGVmaW5lIEdOVFNUX25vX2RldmljZV9zcGFjZSAgKC03KSAvKiBP
dXQgb2Ygc3BhY2UgaW4gSS9PIE1NVS4gICAgICAgICAgICAgICovCj4gKyNkZWZpbmUgR05UU1Rf
cGVybWlzc2lvbl9kZW5pZWQgKC04KSAvKiBOb3QgZW5vdWdoIHByaXZpbGVnZSBmb3Igb3BlcmF0
aW9uLiAgKi8KPiArI2RlZmluZSBHTlRTVF9iYWRfcGFnZSAgICAgICAgICgtOSkgLyogU3BlY2lm
aWVkIHBhZ2Ugd2FzIGludmFsaWQgZm9yIG9wLiAgICAqLwo+ICsjZGVmaW5lIEdOVFNUX2JhZF9j
b3B5X2FyZyAgICAoLTEwKSAvKiBjb3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5LiAg
ICovCj4gKyNkZWZpbmUgR05UU1RfYWRkcmVzc190b29fYmlnICgtMTEpIC8qIHRyYW5zZmVyIHBh
Z2UgYWRkcmVzcyB0b28gbGFyZ2UuICAgICAgKi8KPiArI2RlZmluZSBHTlRTVF9lYWdhaW4gICAg
ICAgICAgKC0xMikgLyogT3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4uICAgICAgICAqLwo+
ICsvKiBgIH0gKi8KPiArCj4gKyNkZWZpbmUgR05UVEFCT1BfZXJyb3JfbXNncyB7ICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgInVuZGVmaW5lZCBlcnJvciIsICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAidW5yZWNvZ25pc2VkIGRvbWFpbiBpZCIsICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICJpbnZhbGlkIGdyYW50IHJlZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgImludmFsaWQgbWFwcGluZyBoYW5kbGUiLCAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAi
aW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgIFwKPiArICAgICJpbnZh
bGlkIGRldmljZSBhZGRyZXNzIiwgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgIm5vIHNwYXJl
IHRyYW5zbGF0aW9uIHNsb3QgaW4gdGhlIEkvTyBNTVUiLCBcCj4gKyAgICAicGVybWlzc2lvbiBk
ZW5pZWQiLCAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICJiYWQgcGFnZSIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgImNvcHkgYXJndW1lbnRzIGNyb3Nz
IHBhZ2UgYm91bmRhcnkiLCAgICAgICBcCj4gKyAgICAicGFnZSBhZGRyZXNzIHNpemUgdG9vIGxh
cmdlIiwgICAgICAgICAgICAgIFwKPiArICAgICJvcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2Fp
biIgICAgICAgICAgICAgXAo+ICt9Cj4gKwo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0dSQU5U
X1RBQkxFX0hfXyAqLwo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2Rl
OiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiAr
ICogdGFiLXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4g
KyAqLwo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4v
aHZtL2h2bV9vcC5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2h2bS9o
dm1fb3AuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNmJmZTExNQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Y
ZW4vaHZtL2h2bV9vcC5oCj4gQEAgLTAsMCArMSwyNzUgQEAKPiArLyoKPiArICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUK
PiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4g
KyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
Ugo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBE
RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSFZNX0hWTV9PUF9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18K
PiArCj4gKyNpbmNsdWRlICIuLi94ZW4uaCIKPiArI2luY2x1ZGUgIi4uL3RyYWNlLmgiCj4gKwo+
ICsvKiBHZXQvc2V0IHN1YmNvbW1hbmRzOiBleHRyYSBhcmd1bWVudCA9PSBwb2ludGVyIHRvIHhl
bl9odm1fcGFyYW0gc3RydWN0LiAqLwo+ICsjZGVmaW5lIEhWTU9QX3NldF9wYXJhbSAgICAgICAg
ICAgMAo+ICsjZGVmaW5lIEhWTU9QX2dldF9wYXJhbSAgICAgICAgICAgMQo+ICtzdHJ1Y3QgeGVu
X2h2bV9wYXJhbSB7Cj4gKyAgICBkb21pZF90ICBkb21pZDsgICAgLyogSU4gKi8KPiArICAgIFVJ
TlQzMiBpbmRleDsgICAgLyogSU4gKi8KPiArICAgIFVJTlQ2NCB2YWx1ZTsgICAgLyogSU4vT1VU
ICovCj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fcGFyYW0geGVuX2h2bV9wYXJhbV90
Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3BhcmFtX3QpOwo+ICsKPiArLyog
U2V0IHRoZSBsb2dpY2FsIGxldmVsIG9mIG9uZSBvZiBhIGRvbWFpbidzIFBDSSBJTlR4IHdpcmVz
LiAqLwo+ICsjZGVmaW5lIEhWTU9QX3NldF9wY2lfaW50eF9sZXZlbCAgMgo+ICtzdHJ1Y3QgeGVu
X2h2bV9zZXRfcGNpX2ludHhfbGV2ZWwgewo+ICsgICAgLyogRG9tYWluIHRvIGJlIHVwZGF0ZWQu
ICovCj4gKyAgICBkb21pZF90ICBkb21pZDsKPiArICAgIC8qIFBDSSBJTlR4IGlkZW50aWZpY2F0
aW9uIGluIFBDSSB0b3BvbG9neSAoZG9tYWluOmJ1czpkZXZpY2U6aW50eCkuICovCj4gKyAgICBV
SU5UOCAgZG9tYWluLCBidXMsIGRldmljZSwgaW50eDsKPiArICAgIC8qIEFzc2VydGlvbiBsZXZl
bCAoMCA9IHVuYXNzZXJ0ZWQsIDEgPSBhc3NlcnRlZCkuICovCj4gKyAgICBVSU5UOCAgbGV2ZWw7
Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X3BjaV9pbnR4X2xldmVsIHhlbl9o
dm1fc2V0X3BjaV9pbnR4X2xldmVsX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fc2V0X3BjaV9pbnR4X2xldmVsX3QpOwo+ICsKPiArLyogU2V0IHRoZSBsb2dpY2FsIGxldmVs
IG9mIG9uZSBvZiBhIGRvbWFpbidzIElTQSBJUlEgd2lyZXMuICovCj4gKyNkZWZpbmUgSFZNT1Bf
c2V0X2lzYV9pcnFfbGV2ZWwgICAzCj4gK3N0cnVjdCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVs
IHsKPiArICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwo+ICsgICAgZG9taWRfdCAgZG9t
aWQ7Cj4gKyAgICAvKiBJU0EgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBieSBJU0EgSVJRICgwLTE1
KS4gKi8KPiArICAgIFVJTlQ4ICBpc2FfaXJxOwo+ICsgICAgLyogQXNzZXJ0aW9uIGxldmVsICgw
ID0gdW5hc3NlcnRlZCwgMSA9IGFzc2VydGVkKS4gKi8KPiArICAgIFVJTlQ4ICBsZXZlbDsKPiAr
fTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfaXNhX2lycV9sZXZlbCB4ZW5faHZtX3Nl
dF9pc2FfaXJxX2xldmVsX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0
X2lzYV9pcnFfbGV2ZWxfdCk7Cj4gKwo+ICsjZGVmaW5lIEhWTU9QX3NldF9wY2lfbGlua19yb3V0
ZSAgNAo+ICtzdHJ1Y3QgeGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGUgewo+ICsgICAgLyogRG9t
YWluIHRvIGJlIHVwZGF0ZWQuICovCj4gKyAgICBkb21pZF90ICBkb21pZDsKPiArICAgIC8qIFBD
SSBsaW5rIGlkZW50aWZpZXIgKDAtMykuICovCj4gKyAgICBVSU5UOCAgbGluazsKPiArICAgIC8q
IElTQSBJUlEgKDEtMTUpLCBvciAwIChkaXNhYmxlIGxpbmspLiAqLwo+ICsgICAgVUlOVDggIGlz
YV9pcnE7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRl
IHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlX3QpOwo+ICsKPiArLyogRmx1c2hlcyBhbGwgVkNQ
VSBUTEJzOiBAYXJnIG11c3QgYmUgTlVMTC4gKi8KPiArI2RlZmluZSBIVk1PUF9mbHVzaF90bGJz
ICAgICAgICAgIDUKPiArCj4gK3R5cGVkZWYgZW51bSB7Cj4gKyAgICBIVk1NRU1fcmFtX3J3LCAg
ICAgICAgICAgICAvKiBOb3JtYWwgcmVhZC93cml0ZSBndWVzdCBSQU0gKi8KPiArICAgIEhWTU1F
TV9yYW1fcm8sICAgICAgICAgICAgIC8qIFJlYWQtb25seTsgd3JpdGVzIGFyZSBkaXNjYXJkZWQg
Ki8KPiArICAgIEhWTU1FTV9tbWlvX2RtLCAgICAgICAgICAgIC8qIFJlYWRzIGFuZCB3cml0ZSBn
byB0byB0aGUgZGV2aWNlIG1vZGVsICovCj4gK30gaHZtbWVtX3R5cGVfdDsKPiArCj4gKy8qIEZv
bGxvd2luZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCj4g
KyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKPiArCj4gKy8q
IFRyYWNrIGRpcnR5IFZSQU0uICovCj4gKyNkZWZpbmUgSFZNT1BfdHJhY2tfZGlydHlfdnJhbSAg
ICA2Cj4gK3N0cnVjdCB4ZW5faHZtX3RyYWNrX2RpcnR5X3ZyYW0gewo+ICsgICAgLyogRG9tYWlu
IHRvIGJlIHRyYWNrZWQuICovCj4gKyAgICBkb21pZF90ICBkb21pZDsKPiArICAgIC8qIEZpcnN0
IHBmbiB0byB0cmFjay4gKi8KPiArICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwo+ICsg
ICAgLyogTnVtYmVyIG9mIHBhZ2VzIHRvIHRyYWNrLiAqLwo+ICsgICAgdWludDY0X2FsaWduZWRf
dCBucjsKPiArICAgIC8qIE9VVCB2YXJpYWJsZS4gKi8KPiArICAgIC8qIERpcnR5IGJpdG1hcCBi
dWZmZXIuICovCj4gKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4KSBkaXJ0eV9iaXRtYXA7
Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fdHJhY2tfZGlydHlfdnJhbSB4ZW5faHZt
X3RyYWNrX2RpcnR5X3ZyYW1fdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV90
cmFja19kaXJ0eV92cmFtX3QpOwo+ICsKPiArLyogTm90aWZ5IHRoYXQgc29tZSBwYWdlcyBnb3Qg
bW9kaWZpZWQgYnkgdGhlIERldmljZSBNb2RlbC4gKi8KPiArI2RlZmluZSBIVk1PUF9tb2RpZmll
ZF9tZW1vcnkgICAgNwo+ICtzdHJ1Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgewo+ICsgICAg
LyogRG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCj4gKyAgICBkb21pZF90ICBkb21pZDsKPiArICAg
IC8qIEZpcnN0IHBmbi4gKi8KPiArICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwo+ICsg
ICAgLyogTnVtYmVyIG9mIHBhZ2VzLiAqLwo+ICsgICAgdWludDY0X2FsaWduZWRfdCBucjsKPiAr
fTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgeGVuX2h2bV9tb2Rp
ZmllZF9tZW1vcnlfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9tb2RpZmll
ZF9tZW1vcnlfdCk7Cj4gKwo+ICsjZGVmaW5lIEhWTU9QX3NldF9tZW1fdHlwZSAgICA4Cj4gKy8q
IE5vdGlmeSB0aGF0IGEgcmVnaW9uIG9mIG1lbW9yeSBpcyB0byBiZSB0cmVhdGVkIGluIGEgc3Bl
Y2lmaWMgd2F5LiAqLwo+ICtzdHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX3R5cGUgewo+ICsgICAgLyog
RG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCj4gKyAgICBkb21pZF90IGRvbWlkOwo+ICsgICAgLyog
TWVtb3J5IHR5cGUgKi8KPiArICAgIFVJTlQxNiBodm1tZW1fdHlwZTsKPiArICAgIC8qIE51bWJl
ciBvZiBwYWdlcy4gKi8KPiArICAgIFVJTlQzMiBucjsKPiArICAgIC8qIEZpcnN0IHBmbi4gKi8K
PiArICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVj
dCB4ZW5faHZtX3NldF9tZW1fdHlwZSB4ZW5faHZtX3NldF9tZW1fdHlwZV90Owo+ICtERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9tZW1fdHlwZV90KTsKPiArCj4gKyNlbmRpZiAv
KiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KPiArCj4gKy8q
IEhpbnQgZnJvbSBQViBkcml2ZXJzIGZvciBwYWdldGFibGUgZGVzdHJ1Y3Rpb24uICovCj4gKyNk
ZWZpbmUgSFZNT1BfcGFnZXRhYmxlX2R5aW5nICAgICAgICA5Cj4gK3N0cnVjdCB4ZW5faHZtX3Bh
Z2V0YWJsZV9keWluZyB7Cj4gKyAgICAvKiBEb21haW4gd2l0aCBhIHBhZ2V0YWJsZSBhYm91dCB0
byBiZSBkZXN0cm95ZWQuICovCj4gKyAgICBkb21pZF90ICBkb21pZDsKPiArICAgIFVJTlQxNiBw
YWRbM107IC8qIGFsaWduIG5leHQgZmllbGQgb24gOC1ieXRlIGJvdW5kYXJ5ICovCj4gKyAgICAv
KiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSB0b3BsZXZlbCBwYWdldGFibGUgZHlpbmcg
Ki8KPiArICAgIFVJTlQ2NCBncGE7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fcGFn
ZXRhYmxlX2R5aW5nIHhlbl9odm1fcGFnZXRhYmxlX2R5aW5nX3Q7Cj4gK0RFRklORV9YRU5fR1VF
U1RfSEFORExFKHhlbl9odm1fcGFnZXRhYmxlX2R5aW5nX3QpOwo+ICsKPiArLyogR2V0IHRoZSBj
dXJyZW50IFhlbiB0aW1lLCBpbiBuYW5vc2Vjb25kcyBzaW5jZSBzeXN0ZW0gYm9vdC4gKi8KPiAr
I2RlZmluZSBIVk1PUF9nZXRfdGltZSAgICAgICAgICAgICAgMTAKPiArc3RydWN0IHhlbl9odm1f
Z2V0X3RpbWUgewo+ICsgICAgVUlOVDY0IG5vdzsgICAgICAvKiBPVVQgKi8KPiArfTsKPiArdHlw
ZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfdGltZSB4ZW5faHZtX2dldF90aW1lX3Q7Cj4gK0RFRklO
RV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fZ2V0X3RpbWVfdCk7Cj4gKwo+ICsjZGVmaW5lIEhW
TU9QX3hlbnRyYWNlICAgICAgICAgICAgICAxMQo+ICtzdHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB7
Cj4gKyAgICBVSU5UMTYgZXZlbnQsIGV4dHJhX2J5dGVzOwo+ICsgICAgVUlOVDggZXh0cmFbVFJB
Q0VfRVhUUkFfTUFYICogc2l6ZW9mKFVJTlQzMildOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCB4
ZW5faHZtX3hlbnRyYWNlIHhlbl9odm1feGVudHJhY2VfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoeGVuX2h2bV94ZW50cmFjZV90KTsKPiArCj4gKy8qIEZvbGxvd2luZyB0b29scy1vbmx5
IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCj4gKyNpZiBkZWZpbmVkKF9fWEVO
X18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKPiArCj4gKyNkZWZpbmUgSFZNT1Bfc2V0X21l
bV9hY2Nlc3MgICAgICAgIDEyCj4gK3R5cGVkZWYgZW51bSB7Cj4gKyAgICBIVk1NRU1fYWNjZXNz
X24sCj4gKyAgICBIVk1NRU1fYWNjZXNzX3IsCj4gKyAgICBIVk1NRU1fYWNjZXNzX3csCj4gKyAg
ICBIVk1NRU1fYWNjZXNzX3J3LAo+ICsgICAgSFZNTUVNX2FjY2Vzc194LAo+ICsgICAgSFZNTUVN
X2FjY2Vzc19yeCwKPiArICAgIEhWTU1FTV9hY2Nlc3Nfd3gsCj4gKyAgICBIVk1NRU1fYWNjZXNz
X3J3eCwKPiArICAgIEhWTU1FTV9hY2Nlc3NfcngycncsICAgICAgIC8qIFBhZ2Ugc3RhcnRzIG9m
ZiBhcyByLXgsIGJ1dCBhdXRvbWF0aWNhbGx5Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBjaGFuZ2UgdG8gci13IG9uIGEgd3JpdGUgKi8KPiArICAgIEhWTU1FTV9hY2Nlc3Nf
bjJyd3gsICAgICAgIC8qIExvZyBhY2Nlc3M6IHN0YXJ0cyBvZmYgYXMgbiwgYXV0b21hdGljYWxs
eSAKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGdvZXMgdG8gcnd4LCBnZW5l
cmF0aW5nIGFuIGV2ZW50IHdpdGhvdXQKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIHBhdXNpbmcgdGhlIHZjcHUgKi8KPiArICAgIEhWTU1FTV9hY2Nlc3NfZGVmYXVsdCAgICAg
IC8qIFRha2UgdGhlIGRvbWFpbiBkZWZhdWx0ICovCj4gK30gaHZtbWVtX2FjY2Vzc190Owo+ICsv
KiBOb3RpZnkgdGhhdCBhIHJlZ2lvbiBvZiBtZW1vcnkgaXMgdG8gaGF2ZSBzcGVjaWZpYyBhY2Nl
c3MgdHlwZXMgKi8KPiArc3RydWN0IHhlbl9odm1fc2V0X21lbV9hY2Nlc3Mgewo+ICsgICAgLyog
RG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCj4gKyAgICBkb21pZF90IGRvbWlkOwo+ICsgICAgLyog
TWVtb3J5IHR5cGUgKi8KPiArICAgIFVJTlQxNiBodm1tZW1fYWNjZXNzOyAvKiBodm1fYWNjZXNz
X3QgKi8KPiArICAgIC8qIE51bWJlciBvZiBwYWdlcywgaWdub3JlZCBvbiBzZXR0aW5nIGRlZmF1
bHQgYWNjZXNzICovCj4gKyAgICBVSU5UMzIgbnI7Cj4gKyAgICAvKiBGaXJzdCBwZm4sIG9yIH4w
dWxsIHRvIHNldCB0aGUgZGVmYXVsdCBhY2Nlc3MgZm9yIG5ldyBwYWdlcyAqLwo+ICsgICAgdWlu
dDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1f
c2V0X21lbV9hY2Nlc3MgeGVuX2h2bV9zZXRfbWVtX2FjY2Vzc190Owo+ICtERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRSh4ZW5faHZtX3NldF9tZW1fYWNjZXNzX3QpOwo+ICsKPiArI2RlZmluZSBIVk1P
UF9nZXRfbWVtX2FjY2VzcyAgICAgICAgMTMKPiArLyogR2V0IHRoZSBzcGVjaWZpYyBhY2Nlc3Mg
dHlwZSBmb3IgdGhhdCByZWdpb24gb2YgbWVtb3J5ICovCj4gK3N0cnVjdCB4ZW5faHZtX2dldF9t
ZW1fYWNjZXNzIHsKPiArICAgIC8qIERvbWFpbiB0byBiZSBxdWVyaWVkLiAqLwo+ICsgICAgZG9t
aWRfdCBkb21pZDsKPiArICAgIC8qIE1lbW9yeSB0eXBlOiBPVVQgKi8KPiArICAgIFVJTlQxNiBo
dm1tZW1fYWNjZXNzOyAvKiBodm1fYWNjZXNzX3QgKi8KPiArICAgIC8qIHBmbiwgb3IgfjB1bGwg
Zm9yIGRlZmF1bHQgYWNjZXNzIGZvciBuZXcgcGFnZXMuICBJTiAqLwo+ICsgICAgdWludDY0X2Fs
aWduZWRfdCBwZm47Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fZ2V0X21lbV9hY2Nl
c3MgeGVuX2h2bV9nZXRfbWVtX2FjY2Vzc190Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5faHZtX2dldF9tZW1fYWNjZXNzX3QpOwo+ICsKPiArI2RlZmluZSBIVk1PUF9pbmplY3RfdHJh
cCAgICAgICAgICAgIDE0Cj4gKy8qIEluamVjdCBhIHRyYXAgaW50byBhIFZDUFUsIHdoaWNoIHdp
bGwgZ2V0IHRha2VuIHVwIG9uIHRoZSBuZXh0Cj4gKyAqIHNjaGVkdWxpbmcgb2YgaXQuIE5vdGUg
dGhhdCB0aGUgY2FsbGVyIHNob3VsZCBrbm93IGVub3VnaCBvZiB0aGUKPiArICogc3RhdGUgb2Yg
dGhlIENQVSBiZWZvcmUgaW5qZWN0aW5nLCB0byBrbm93IHdoYXQgdGhlIGVmZmVjdCBvZgo+ICsg
KiBpbmplY3RpbmcgdGhlIHRyYXAgd2lsbCBiZS4KPiArICovCj4gK3N0cnVjdCB4ZW5faHZtX2lu
amVjdF90cmFwIHsKPiArICAgIC8qIERvbWFpbiB0byBiZSBxdWVyaWVkLiAqLwo+ICsgICAgZG9t
aWRfdCBkb21pZDsKPiArICAgIC8qIFZDUFUgKi8KPiArICAgIFVJTlQzMiB2Y3B1aWQ7Cj4gKyAg
ICAvKiBWZWN0b3IgbnVtYmVyICovCj4gKyAgICBVSU5UMzIgdmVjdG9yOwo+ICsgICAgLyogVHJh
cCB0eXBlIChIVk1PUF9UUkFQXyopICovCj4gKyAgICBVSU5UMzIgdHlwZTsKPiArLyogTkIuIFRo
aXMgZW51bWVyYXRpb24gcHJlY2lzZWx5IG1hdGNoZXMgaHZtLmg6WDg2X0VWRU5UVFlQRV8qICov
Cj4gKyMgZGVmaW5lIEhWTU9QX1RSQVBfZXh0X2ludCAgICAwIC8qIGV4dGVybmFsIGludGVycnVw
dCAqLwo+ICsjIGRlZmluZSBIVk1PUF9UUkFQX25taSAgICAgICAgMiAvKiBubWkgKi8KPiArIyBk
ZWZpbmUgSFZNT1BfVFJBUF9od19leGMgICAgIDMgLyogaGFyZHdhcmUgZXhjZXB0aW9uICovCj4g
KyMgZGVmaW5lIEhWTU9QX1RSQVBfc3dfaW50ICAgICA0IC8qIHNvZnR3YXJlIGludGVycnVwdCAo
Q0Qgbm4pICovCj4gKyMgZGVmaW5lIEhWTU9QX1RSQVBfcHJpX3N3X2V4YyA1IC8qIElDRUJQIChG
MSkgKi8KPiArIyBkZWZpbmUgSFZNT1BfVFJBUF9zd19leGMgICAgIDYgLyogSU5UMyAoQ0MpLCBJ
TlRPIChDRSkgKi8KPiArICAgIC8qIEVycm9yIGNvZGUsIG9yIH4wdSB0byBza2lwICovCj4gKyAg
ICBVSU5UMzIgZXJyb3JfY29kZTsKPiArICAgIC8qIEludHJ1Y3Rpb24gbGVuZ3RoICovCj4gKyAg
ICBVSU5UMzIgaW5zbl9sZW47Cj4gKyAgICAvKiBDUjIgZm9yIHBhZ2UgZmF1bHRzICovCj4gKyAg
ICB1aW50NjRfYWxpZ25lZF90IGNyMjsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9p
bmplY3RfdHJhcCB4ZW5faHZtX2luamVjdF90cmFwX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKHhlbl9odm1faW5qZWN0X3RyYXBfdCk7Cj4gKwo+ICsjZW5kaWYgLyogZGVmaW5lZChfX1hF
Tl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCj4gKwo+ICsjZGVmaW5lIEhWTU9QX2dl
dF9tZW1fdHlwZSAgICAxNQo+ICsvKiBSZXR1cm4gaHZtbWVtX3R5cGVfdCBmb3IgdGhlIHNwZWNp
ZmllZCBwZm4uICovCj4gK3N0cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlwZSB7Cj4gKyAgICAvKiBE
b21haW4gdG8gYmUgcXVlcmllZC4gKi8KPiArICAgIGRvbWlkX3QgZG9taWQ7Cj4gKyAgICAvKiBP
VVQgdmFyaWFibGUuICovCj4gKyAgICBVSU5UMTYgbWVtX3R5cGU7Cj4gKyAgICBVSU5UMTYgcGFk
WzJdOyAvKiBhbGlnbiBuZXh0IGZpZWxkIG9uIDgtYnl0ZSBib3VuZGFyeSAqLwo+ICsgICAgLyog
SU4gdmFyaWFibGUuICovCj4gKyAgICBVSU5UNjQgcGZuOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVj
dCB4ZW5faHZtX2dldF9tZW1fdHlwZSB4ZW5faHZtX2dldF9tZW1fdHlwZV90Owo+ICtERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF9tZW1fdHlwZV90KTsKPiArCj4gKy8qIEZvbGxv
d2luZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCj4gKyNp
ZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKPiArCj4gKy8qIE1T
SSBpbmplY3Rpb24gZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KPiArI2RlZmluZSBIVk1PUF9pbmpl
Y3RfbXNpICAgICAgICAgMTYKPiArc3RydWN0IHhlbl9odm1faW5qZWN0X21zaSB7Cj4gKyAgICAv
KiBEb21haW4gdG8gYmUgaW5qZWN0ZWQgKi8KPiArICAgIGRvbWlkX3QgICBkb21pZDsKPiArICAg
IC8qIERhdGEgLS0gbG93ZXIgMzIgYml0cyAqLwo+ICsgICAgVUlOVDMyICBkYXRhOwo+ICsgICAg
LyogQWRkcmVzcyAoMHhmZWV4eHh4eCkgKi8KPiArICAgIFVJTlQ2NCAgYWRkcjsKPiArfTsKPiAr
dHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9pbmplY3RfbXNpIHhlbl9odm1faW5qZWN0X21zaV90Owo+
ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2luamVjdF9tc2lfdCk7Cj4gKwo+ICsj
ZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCj4g
Kwo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9IVk1fT1BfSF9fICovCj4gZGlmZiAtLWdp
dCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9odm0vcGFyYW1zLmggYi9P
dm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaHZtL3BhcmFtcy5oCj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41MTdhMTg0Cj4gLS0tIC9kZXYvbnVsbAo+
ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9odm0vcGFyYW1zLmgK
PiBAQCAtMCwwICsxLDE1MCBAQAo+ICsvKgo+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+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19IVk1fUEFSQU1TX0hf
Xwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fUEFSQU1TX0hfXwo+ICsKPiArI2luY2x1ZGUg
Imh2bV9vcC5oIgo+ICsKPiArLyoKPiArICogUGFyYW1ldGVyIHNwYWNlIGZvciBIVk1PUF97c2V0
LGdldH1fcGFyYW0uCj4gKyAqLwo+ICsKPiArLyoKPiArICogSG93IHNob3VsZCBDUFUwIGV2ZW50
LWNoYW5uZWwgbm90aWZpY2F0aW9ucyBiZSBkZWxpdmVyZWQ/Cj4gKyAqIHZhbFs2Mzo1Nl0gPT0g
MDogdmFsWzU1OjBdIGlzIGEgZGVsaXZlcnkgR1NJIChHbG9iYWwgU3lzdGVtIEludGVycnVwdCku
Cj4gKyAqIHZhbFs2Mzo1Nl0gPT0gMTogdmFsWzU1OjBdIGlzIGEgZGVsaXZlcnkgUENJIElOVHgg
bGluZSwgYXMgZm9sbG93czoKPiArICogICAgICAgICAgICAgICAgICBEb21haW4gPSB2YWxbNDc6
MzJdLCBCdXMgID0gdmFsWzMxOjE2XSwKPiArICogICAgICAgICAgICAgICAgICBEZXZGbiAgPSB2
YWxbMTU6IDhdLCBJbnRYID0gdmFsWyAxOiAwXQo+ICsgKiB2YWxbNjM6NTZdID09IDI6IHZhbFs3
OjBdIGlzIGEgdmVjdG9yIG51bWJlciwgY2hlY2sgZm9yCj4gKyAqICAgICAgICAgICAgICAgICAg
WEVORkVBVF9odm1fY2FsbGJhY2tfdmVjdG9yIHRvIGtub3cgaWYgdGhpcyBkZWxpdmVyeQo+ICsg
KiAgICAgICAgICAgICAgICAgIG1ldGhvZCBpcyBhdmFpbGFibGUuCj4gKyAqIElmIHZhbCA9PSAw
IHRoZW4gQ1BVMCBldmVudC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBkZWxpdmVyZWQu
Cj4gKyAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9DQUxMQkFDS19JUlEgMAo+ICsKPiArLyoKPiAr
ICogVGhlc2UgYXJlIG5vdCB1c2VkIGJ5IFhlbi4gVGhleSBhcmUgaGVyZSBmb3IgY29udmVuaWVu
Y2Ugb2YgSFZNLWd1ZXN0Cj4gKyAqIHhlbmJ1cyBpbXBsZW1lbnRhdGlvbnMuCj4gKyAqLwo+ICsj
ZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9QRk4gICAgMQo+ICsjZGVmaW5lIEhWTV9QQVJBTV9TVE9S
RV9FVlRDSE4gMgo+ICsKPiArI2RlZmluZSBIVk1fUEFSQU1fUEFFX0VOQUJMRUQgIDQKPiArCj4g
KyNkZWZpbmUgSFZNX1BBUkFNX0lPUkVRX1BGTiAgICA1Cj4gKwo+ICsjZGVmaW5lIEhWTV9QQVJB
TV9CVUZJT1JFUV9QRk4gNgo+ICsjZGVmaW5lIEhWTV9QQVJBTV9CVUZJT1JFUV9FVlRDSE4gMjYK
PiArCj4gKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCj4gKwo+
ICsvKiBFeHBvc2UgVmlyaWRpYW4gaW50ZXJmYWNlcyB0byB0aGlzIEhWTSBndWVzdD8gKi8KPiAr
I2RlZmluZSBIVk1fUEFSQU1fVklSSURJQU4gICAgIDkKPiArCj4gKyNlbmRpZgo+ICsKPiArLyoK
PiArICogU2V0IG1vZGUgZm9yIHZpcnR1YWwgdGltZXJzIChjdXJyZW50bHkgeDg2IG9ubHkpOgo+
ICsgKiAgZGVsYXlfZm9yX21pc3NlZF90aWNrcyAoZGVmYXVsdCk6Cj4gKyAqICAgRG8gbm90IGFk
dmFuY2UgYSB2Y3B1J3MgdGltZSBiZXlvbmQgdGhlIGNvcnJlY3QgZGVsaXZlcnkgdGltZSBmb3IK
PiArICogICBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUgdG8gcHJlZW1wdGlv
bi4gRGVsaXZlciBtaXNzZWQKPiArICogICBpbnRlcnJ1cHRzIHdoZW4gdGhlIHZjcHUgaXMgcmVz
Y2hlZHVsZWQgYW5kIGFkdmFuY2UgdGhlIHZjcHUncyB2aXJ0dWFsCj4gKyAqICAgdGltZSBzdGVw
d2lzZSBmb3IgZWFjaCBvbmUuCj4gKyAqICBub19kZWxheV9mb3JfbWlzc2VkX3RpY2tzOgo+ICsg
KiAgIEFzIGFib3ZlLCBtaXNzZWQgaW50ZXJydXB0cyBhcmUgZGVsaXZlcmVkLCBidXQgZ3Vlc3Qg
dGltZSBhbHdheXMgdHJhY2tzCj4gKyAqICAgd2FsbGNsb2NrIChpLmUuLCByZWFsKSB0aW1lIHdo
aWxlIGRvaW5nIHNvLgo+ICsgKiAgbm9fbWlzc2VkX3RpY2tzX3BlbmRpbmc6Cj4gKyAqICAgTm8g
bWlzc2VkIGludGVycnVwdHMgYXJlIGhlbGQgcGVuZGluZy4gSW5zdGVhZCwgdG8gZW5zdXJlIHRp
Y2tzIGFyZQo+ICsgKiAgIGRlbGl2ZXJlZCBhdCBzb21lIG5vbi16ZXJvIHJhdGUsIGlmIHdlIGRl
dGVjdCBtaXNzZWQgdGlja3MgdGhlbiB0aGUKPiArICogICBpbnRlcm5hbCB0aWNrIGFsYXJtIGlz
IG5vdCBkaXNhYmxlZCBpZiB0aGUgVkNQVSBpcyBwcmVlbXB0ZWQgZHVyaW5nIHRoZQo+ICsgKiAg
IG5leHQgdGljayBwZXJpb2QuCj4gKyAqICBvbmVfbWlzc2VkX3RpY2tfcGVuZGluZzoKPiArICog
ICBNaXNzZWQgaW50ZXJydXB0cyBhcmUgY29sbGFwc2VkIHRvZ2V0aGVyIGFuZCBkZWxpdmVyZWQg
YXMgb25lICdsYXRlIHRpY2snLgo+ICsgKiAgIEd1ZXN0IHRpbWUgYWx3YXlzIHRyYWNrcyB3YWxs
Y2xvY2sgKGkuZS4sIHJlYWwpIHRpbWUuCj4gKyAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9USU1F
Ul9NT0RFICAgMTAKPiArI2RlZmluZSBIVk1QVE1fZGVsYXlfZm9yX21pc3NlZF90aWNrcyAgICAw
Cj4gKyNkZWZpbmUgSFZNUFRNX25vX2RlbGF5X2Zvcl9taXNzZWRfdGlja3MgMQo+ICsjZGVmaW5l
IEhWTVBUTV9ub19taXNzZWRfdGlja3NfcGVuZGluZyAgIDIKPiArI2RlZmluZSBIVk1QVE1fb25l
X21pc3NlZF90aWNrX3BlbmRpbmcgICAzCj4gKwo+ICsvKiBCb29sZWFuOiBFbmFibGUgdmlydHVh
bCBIUEVUIChoaWdoLXByZWNpc2lvbiBldmVudCB0aW1lcik/ICh4ODYtb25seSkgKi8KPiArI2Rl
ZmluZSBIVk1fUEFSQU1fSFBFVF9FTkFCTEVEIDExCj4gKwo+ICsvKiBJZGVudGl0eS1tYXAgcGFn
ZSBkaXJlY3RvcnkgdXNlZCBieSBJbnRlbCBFUFQgd2hlbiBDUjAuUEc9MC4gKi8KPiArI2RlZmlu
ZSBIVk1fUEFSQU1fSURFTlRfUFQgICAgIDEyCj4gKwo+ICsvKiBEZXZpY2UgTW9kZWwgZG9tYWlu
LCBkZWZhdWx0cyB0byAwLiAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9ETV9ET01BSU4gICAgMTMK
PiArCj4gKy8qIEFDUEkgUyBzdGF0ZTogY3VycmVudGx5IHN1cHBvcnQgUzAgYW5kIFMzIG9uIHg4
Ni4gKi8KPiArI2RlZmluZSBIVk1fUEFSQU1fQUNQSV9TX1NUQVRFIDE0Cj4gKwo+ICsvKiBUU1Mg
dXNlZCBvbiBJbnRlbCB3aGVuIENSMC5QRT0wLiAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9WTTg2
X1RTUyAgICAgMTUKPiArCj4gKy8qIEJvb2xlYW46IEVuYWJsZSBhbGlnbmluZyBhbGwgcGVyaW9k
aWMgdnB0cyB0byByZWR1Y2UgaW50ZXJydXB0cyAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9WUFRf
QUxJR04gICAgMTYKPiArCj4gKy8qIENvbnNvbGUgZGVidWcgc2hhcmVkIG1lbW9yeSByaW5nIGFu
ZCBldmVudCBjaGFubmVsICovCj4gKyNkZWZpbmUgSFZNX1BBUkFNX0NPTlNPTEVfUEZOICAgIDE3
Cj4gKyNkZWZpbmUgSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOIDE4Cj4gKwo+ICsvKgo+ICsgKiBT
ZWxlY3QgbG9jYXRpb24gb2YgQUNQSSBQTTFhIGFuZCBUTVIgY29udHJvbCBibG9ja3MuIEN1cnJl
bnRseSB0d28gbG9jYXRpb25zCj4gKyAqIGFyZSBzdXBwb3J0ZWQsIHNwZWNpZmllZCBieSB2ZXJz
aW9uIDAgb3IgMSBpbiB0aGlzIHBhcmFtZXRlcjoKPiArICogICAtIDA6IGRlZmF1bHQsIHVzZSB0
aGUgb2xkIGFkZHJlc3Nlcwo+ICsgKiAgICAgICAgUE0xQV9FVlQgPT0gMHgxZjQwOyBQTTFBX0NO
VCA9PSAweDFmNDQ7IFBNX1RNUiA9PSAweDFmNDgKPiArICogICAtIDE6IHVzZSB0aGUgbmV3IGRl
ZmF1bHQgcWVtdSBhZGRyZXNzZXMKPiArICogICAgICAgIFBNMUFfRVZUID09IDB4YjAwMDsgUE0x
QV9DTlQgPT0gMHhiMDA0OyBQTV9UTVIgPT0gMHhiMDA4Cj4gKyAqIFlvdSBjYW4gZmluZCB0aGVz
ZSBhZGRyZXNzIGRlZmluaXRpb25zIGluIDxodm0vaW9yZXEuaD4KPiArICovCj4gKyNkZWZpbmUg
SFZNX1BBUkFNX0FDUElfSU9QT1JUU19MT0NBVElPTiAxOQo+ICsKPiArLyogRW5hYmxlIGJsb2Nr
aW5nIG1lbW9yeSBldmVudHMsIGFzeW5jIG9yIHN5bmMgKHBhdXNlIHZjcHUgdW50aWwgcmVzcG9u
c2UpIAo+ICsgKiBvbmNoYW5nZW9ubHkgaW5kaWNhdGVzIG1lc3NhZ2VzIG9ubHkgb24gYSBjaGFu
Z2Ugb2YgdmFsdWUgKi8KPiArI2RlZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX0NSMCAgICAg
ICAgICAyMAo+ICsjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1IzICAgICAgICAgIDIx
Cj4gKyNkZWZpbmUgSFZNX1BBUkFNX01FTU9SWV9FVkVOVF9DUjQgICAgICAgICAgMjIKPiArI2Rl
ZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX0lOVDMgICAgICAgICAyMwo+ICsjZGVmaW5lIEhW
TV9QQVJBTV9NRU1PUllfRVZFTlRfU0lOR0xFX1NURVAgIDI1Cj4gKyNkZWZpbmUgSFZNX1BBUkFN
X01FTU9SWV9FVkVOVF9NU1IgICAgICAgICAgMzAKPiArCj4gKyNkZWZpbmUgSFZNUE1FX01PREVf
TUFTSyAgICAgICAoMyA8PCAwKQo+ICsjZGVmaW5lIEhWTVBNRV9tb2RlX2Rpc2FibGVkICAgMAo+
ICsjZGVmaW5lIEhWTVBNRV9tb2RlX2FzeW5jICAgICAgMQo+ICsjZGVmaW5lIEhWTVBNRV9tb2Rl
X3N5bmMgICAgICAgMgo+ICsjZGVmaW5lIEhWTVBNRV9vbmNoYW5nZW9ubHkgICAgKDEgPDwgMikK
PiArCj4gKy8qIEJvb2xlYW46IEVuYWJsZSBuZXN0ZWRodm0gKGh2bSBvbmx5KSAqLwo+ICsjZGVm
aW5lIEhWTV9QQVJBTV9ORVNURURIVk0gICAgMjQKPiArCj4gKy8qIFBhcmFtcyBmb3IgdGhlIG1l
bSBldmVudCByaW5ncyAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9QQUdJTkdfUklOR19QRk4gICAy
Nwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9BQ0NFU1NfUklOR19QRk4gICAyOAo+ICsjZGVmaW5lIEhW
TV9QQVJBTV9TSEFSSU5HX1JJTkdfUEZOICAyOQo+ICsKPiArLyogU0hVVERPV05fKiBhY3Rpb24g
aW4gY2FzZSBvZiBhIHRyaXBsZSBmYXVsdCAqLwo+ICsjZGVmaW5lIEhWTV9QQVJBTV9UUklQTEVf
RkFVTFRfUkVBU09OIDMxCj4gKwo+ICsjZGVmaW5lIEhWTV9OUl9QQVJBTVMgICAgICAgICAgMzIK
PiArCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX1BBUkFNU19IX18gKi8KPiBkaWZmIC0t
Z2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL2Jsa2lmLmggYi9P
dm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8vYmxraWYuaAo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMmYwYmI4Ygo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8vYmxraWYuaAo+IEBA
IC0wLDAgKzEsNjA4IEBACj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogYmxraWYuaAo+
ICsgKgo+ICsgKiBVbmlmaWVkIGJsb2NrLWRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vl
c3QgT1Nlcy4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4g
KyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu
Cj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4g
KyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBLZWlyIEZyYXNlcgo+ICsgKiBDb3B5
cmlnaHQgKGMpIDIwMTIsIFNwZWN0cmEgTG9naWMgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsj
aWZuZGVmIF9fWEVOX1BVQkxJQ19JT19CTEtJRl9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNf
SU9fQkxLSUZfSF9fCj4gKwo+ICsjaW5jbHVkZSAicmluZy5oIgo+ICsjaW5jbHVkZSAiLi4vZ3Jh
bnRfdGFibGUuaCIKPiArCj4gKy8qCj4gKyAqIEZyb250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IFdo
ZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQo+ICsgKiBub3RpZmljYXRpb24g
Y2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxX2V2ZW50IChpLmUuLCB0aGUgZ2VuZXJpYwo+
ICsgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFj
a2VuZHMgbXVzdCBzZXQKPiArICogcmVxX2V2ZW50IGFwcHJvcHJpYXRlbHkgKGUuZy4sIHVzaW5n
IFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgo+ICsgKgo+ICsgKiBCYWNrLT5mcm9u
dCBub3RpZmljYXRpb25zOiBXaGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwgc2VuZGluZyBh
Cj4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBvbiByc3BfZXZlbnQg
KGkuZS4sIHRoZSBnZW5lcmljCj4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0
aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKPiArICogcnNwX2V2ZW50IGFwcHJv
cHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUygpKS4K
PiArICovCj4gKwo+ICsjaWZuZGVmIGJsa2lmX3ZkZXZfdAo+ICsjZGVmaW5lIGJsa2lmX3ZkZXZf
dCAgIFVJTlQxNgo+ICsjZW5kaWYKPiArI2RlZmluZSBibGtpZl9zZWN0b3JfdCBVSU5UNjQKPiAr
Cj4gKy8qCj4gKyAqIEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgo+ICsgKiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBY
ZW4gYmxvY2sgZHJpdmVyIHV0aWxpemUgbm9kZXMgd2l0aGluIHRoZSBYZW5TdG9yZSB0bwo+ICsg
KiBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFy
YW1ldGVycy4gIFRoaXMKPiArICogc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNo
IHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKPiArICogYmFja2VuZCBwb3J0aW9u
cyBvZiB0aGUgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRpb24uCj4gKyAq
Cj4gKyAqIEFsbCBkYXRhIGluIHRoZSBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gIE5v
ZGVzIHNwZWNpZnlpbmcgbnVtZXJpYwo+ICsgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1h
bC4gIEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUKPiArICogZXhwcmVzc2Vk
IGFzIGZpeGVkIHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252
ZXJzaW9uCj4gKyAqIG9mIGEgcHJvcGVybHkgZm9ybWF0ZWQgbm9kZSBzdHJpbmcsIHdpdGhvdXQg
bG9zcyBvZiBpbmZvcm1hdGlvbi4KPiArICoKPiArICogQW55IHNwZWNpZmllZCBkZWZhdWx0IHZh
bHVlIGlzIGluIGVmZmVjdCBpZiB0aGUgY29ycmVzcG9uZGluZyBYZW5CdXMgbm9kZQo+ICsgKiBp
cyBub3QgcHJlc2VudCBpbiB0aGUgWGVuU3RvcmUuCj4gKyAqCj4gKyAqIFhlblN0b3JlIG5vZGVz
IGluIHNlY3Rpb25zIG1hcmtlZCAiUFJJVkFURSIgYXJlIHNvbGVseSBmb3IgdXNlIGJ5IHRoZQo+
ICsgKiBkcml2ZXIgc2lkZSB3aG9zZSBYZW5CdXMgdHJlZSBjb250YWlucyB0aGVtLgo+ICsgKgo+
ICsgKiBYZW5TdG9yZSBub2RlcyBtYXJrZWQgIkRFUFJFQ0FURUQiIGluIHRoZWlyIG5vdGVzIHNl
Y3Rpb24gc2hvdWxkIG9ubHkgYmUKPiArICogdXNlZCB0byBwcm92aWRlIGludGVyb3BlcmFiaWxp
dHkgd2l0aCBsZWdhY3kgaW1wbGVtZW50YXRpb25zLgo+ICsgKgo+ICsgKiBTZWUgdGhlIFhlbkJ1
cyBzdGF0ZSB0cmFuc2l0aW9uIGRpYWdyYW0gYmVsb3cgZm9yIGRldGFpbHMgb24gd2hlbiBYZW5C
dXMKPiArICogbm9kZXMgbXVzdCBiZSBwdWJsaXNoZWQgYW5kIHdoZW4gdGhleSBjYW4gYmUgcXVl
cmllZC4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCj4gKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLSBCYWNrZW5kIERldmljZSBJZGVudGlmaWNh
dGlvbiAoUFJJVkFURSkgLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIG1vZGUKPiArICog
ICAgICBWYWx1ZXM6ICAgICAgICAgInIiIChyZWFkIG9ubHkpLCAidyIgKHdyaXRhYmxlKQo+ICsg
Kgo+ICsgKiAgICAgIFRoZSByZWFkIG9yIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byB0aGUg
YmFja2luZyBzdG9yZSB0byBiZQo+ICsgKiAgICAgIGdyYW50ZWQgdG8gdGhlIGZyb250ZW5kLgo+
ICsgKgo+ICsgKiBwYXJhbXMKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgc3RyaW5nCj4gKyAq
Cj4gKyAqICAgICAgQSBmcmVlIGZvcm1hdHRlZCBzdHJpbmcgcHJvdmlkaW5nIHN1ZmZpY2llbnQg
aW5mb3JtYXRpb24gZm9yIHRoZQo+ICsgKiAgICAgIGJhY2tlbmQgZHJpdmVyIHRvIG9wZW4gdGhl
IGJhY2tpbmcgZGV2aWNlLiAgKGUuZy4gdGhlIHBhdGggdG8gdGhlCj4gKyAqICAgICAgZmlsZSBv
ciBibG9jayBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBiYWNraW5nIHN0b3JlLikKPiArICoKPiAr
ICogdHlwZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAiZmlsZSIsICJwaHkiLCAidGFwIgo+
ICsgKgo+ICsgKiAgICAgIFRoZSB0eXBlIG9mIHRoZSBiYWNraW5nIGRldmljZS9vYmplY3QuCj4g
KyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZlYXR1cmVzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBmZWF0dXJlLWJhcnJpZXIK
PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8xIChib29sZWFuKQo+ICsgKiAgICAgIERlZmF1
bHQgVmFsdWU6ICAwCj4gKyAqCj4gKyAqICAgICAgQSB2YWx1ZSBvZiAiMSIgaW5kaWNhdGVzIHRo
YXQgdGhlIGJhY2tlbmQgY2FuIHByb2Nlc3MgcmVxdWVzdHMKPiArICogICAgICBjb250YWluaW5n
IHRoZSBCTEtJRl9PUF9XUklURV9CQVJSSUVSIHJlcXVlc3Qgb3Bjb2RlLiAgUmVxdWVzdHMKPiAr
ICogICAgICBvZiB0aGlzIHR5cGUgbWF5IHN0aWxsIGJlIHJldHVybmVkIGF0IGFueSB0aW1lIHdp
dGggdGhlCj4gKyAqICAgICAgQkxLSUZfUlNQX0VPUE5PVFNVUFAgcmVzdWx0IGNvZGUuCj4gKyAq
Cj4gKyAqIGZlYXR1cmUtZmx1c2gtY2FjaGUKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8x
IChib29sZWFuKQo+ICsgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCj4gKyAqCj4gKyAqICAgICAg
QSB2YWx1ZSBvZiAiMSIgaW5kaWNhdGVzIHRoYXQgdGhlIGJhY2tlbmQgY2FuIHByb2Nlc3MgcmVx
dWVzdHMKPiArICogICAgICBjb250YWluaW5nIHRoZSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEUg
cmVxdWVzdCBvcGNvZGUuICBSZXF1ZXN0cwo+ICsgKiAgICAgIG9mIHRoaXMgdHlwZSBtYXkgc3Rp
bGwgYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUgd2l0aCB0aGUKPiArICogICAgICBCTEtJRl9SU1Bf
RU9QTk9UU1VQUCByZXN1bHQgY29kZS4KPiArICoKPiArICogZmVhdHVyZS1kaXNjYXJkCj4gKyAq
ICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKPiArICogICAgICBEZWZhdWx0IFZh
bHVlOiAgMAo+ICsgKgo+ICsgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRo
ZSBiYWNrZW5kIGNhbiBwcm9jZXNzIHJlcXVlc3RzCj4gKyAqICAgICAgY29udGFpbmluZyB0aGUg
QkxLSUZfT1BfRElTQ0FSRCByZXF1ZXN0IG9wY29kZS4gIFJlcXVlc3RzCj4gKyAqICAgICAgb2Yg
dGhpcyB0eXBlIG1heSBzdGlsbCBiZSByZXR1cm5lZCBhdCBhbnkgdGltZSB3aXRoIHRoZQo+ICsg
KiAgICAgIEJMS0lGX1JTUF9FT1BOT1RTVVBQIHJlc3VsdCBjb2RlLgo+ICsgKgo+ICsgKiBmZWF0
dXJlLXBlcnNpc3RlbnQKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8xIChib29sZWFuKQo+
ICsgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCj4gKyAqICAgICAgTm90ZXM6IDcKPiArICoKPiAr
ICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFja2VuZCBjYW4ga2Vl
cCB0aGUgZ3JhbnRzIHVzZWQKPiArICogICAgICBieSB0aGUgZnJvbnRlbmQgZHJpdmVyIG1hcHBl
ZCwgc28gdGhlIHNhbWUgc2V0IG9mIGdyYW50cyBzaG91bGQgYmUKPiArICogICAgICB1c2VkIGlu
IGFsbCB0cmFuc2FjdGlvbnMuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBncmFudHMgdGhlIGJhY2tl
bmQKPiArICogICAgICBjYW4gbWFwIHBlcnNpc3RlbnRseSBkZXBlbmRzIG9uIHRoZSBpbXBsZW1l
bnRhdGlvbiwgYnV0IGlkZWFsbHkgaXQKPiArICogICAgICBzaG91bGQgYmUgUklOR19TSVpFICog
QkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNULiBVc2luZyB0aGlzCj4gKyAqICAgICAgZmVh
dHVyZSB0aGUgYmFja2VuZCBkb2Vzbid0IG5lZWQgdG8gdW5tYXAgZWFjaCBncmFudCwgcHJldmVu
dGluZwo+ICsgKiAgICAgIGNvc3RseSBUTEIgZmx1c2hlcy4gVGhlIGJhY2tlbmQgZHJpdmVyIHNo
b3VsZCBvbmx5IG1hcCBncmFudHMKPiArICogICAgICBwZXJzaXN0ZW50bHkgaWYgdGhlIGZyb250
ZW5kIHN1cHBvcnRzIGl0LiBJZiBhIGJhY2tlbmQgZHJpdmVyIGNob29zZXMKPiArICogICAgICB0
byB1c2UgdGhlIHBlcnNpc3RlbnQgcHJvdG9jb2wgd2hlbiB0aGUgZnJvbnRlbmQgZG9lc24ndCBz
dXBwb3J0IGl0LAo+ICsgKiAgICAgIGl0IHdpbGwgcHJvYmFibHkgaGl0IHRoZSBtYXhpbXVtIG51
bWJlciBvZiBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cwo+ICsgKiAgICAgIChkdWUgdG8gdGhl
IGZhY3QgdGhhdCB0aGUgZnJvbnRlbmQgd29uJ3QgYmUgcmV1c2luZyB0aGUgc2FtZSBncmFudHMp
LAo+ICsgKiAgICAgIGFuZCBmYWxsIGJhY2sgdG8gbm9uLXBlcnNpc3RlbnQgbW9kZS4gQmFja2Vu
ZCBpbXBsZW1lbnRhdGlvbnMgbWF5Cj4gKyAqICAgICAgc2hyaW5rIG9yIGV4cGFuZCB0aGUgbnVt
YmVyIG9mIHBlcnNpc3RlbnRseSBtYXBwZWQgZ3JhbnRzIHdpdGhvdXQKPiArICogICAgICBub3Rp
ZnlpbmcgdGhlIGZyb250ZW5kIGRlcGVuZGluZyBvbiBtZW1vcnkgY29uc3RyYWludHMgKHRoaXMg
bWlnaHQKPiArICogICAgICBjYXVzZSBhIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uKS4KPiArICoK
PiArICogICAgICBJZiBhIGJhY2tlbmQgZHJpdmVyIHdhbnRzIHRvIGxpbWl0IHRoZSBtYXhpbXVt
IG51bWJlciBvZiBwZXJzaXN0ZW50bHkKPiArICogICAgICBtYXBwZWQgZ3JhbnRzIHRvIGEgdmFs
dWUgbGVzcyB0aGFuIFJJTkdfU0laRSAqCj4gKyAqICAgICAgQkxLSUZfTUFYX1NFR01FTlRTX1BF
Ul9SRVFVRVNUIGEgTFJVIHN0cmF0ZWd5IHNob3VsZCBiZSB1c2VkIHRvCj4gKyAqICAgICAgZGlz
Y2FyZCB0aGUgZ3JhbnRzIHRoYXQgYXJlIGxlc3MgY29tbW9ubHkgdXNlZC4gVXNpbmcgYSBMUlUg
aW4gdGhlCj4gKyAqICAgICAgYmFja2VuZCBkcml2ZXIgcGFpcmVkIHdpdGggYSBMSUZPIHF1ZXVl
IGluIHRoZSBmcm9udGVuZCB3aWxsCj4gKyAqICAgICAgYWxsb3cgdXMgdG8gaGF2ZSBiZXR0ZXIg
cGVyZm9ybWFuY2UgaW4gdGhpcyBzY2VuYXJpby4KPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQo+ICsgKgo+ICsgKiBtYXgtcmluZy1wYWdlLW9yZGVyCj4gKyAqICAgICAgVmFsdWVzOiAg
ICAgICAgIDxVSU5UMzI+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICogICAgICBO
b3RlczogICAgICAgICAgMSwgMwo+ICsgKgo+ICsgKiAgICAgIFRoZSBtYXhpbXVtIHN1cHBvcnRl
ZCBzaXplIG9mIHRoZSByZXF1ZXN0IHJpbmcgYnVmZmVyIGluIHVuaXRzIG9mCj4gKyAqICAgICAg
bGIobWFjaGluZSBwYWdlcykuIChlLmcuIDAgPT0gMSBwYWdlLCAgMSA9IDIgcGFnZXMsIDIgPT0g
NCBwYWdlcywKPiArICogICAgICBldGMuKS4KPiArICoKPiArICogbWF4LXJpbmctcGFnZXMKPiAr
ICogICAgICBWYWx1ZXM6ICAgICAgICAgPFVJTlQzMj4KPiArICogICAgICBEZWZhdWx0IFZhbHVl
OiAgMQo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICBERVBSRUNBVEVELCAyLCAzCj4gKyAqCj4g
KyAqICAgICAgVGhlIG1heGltdW0gc3VwcG9ydGVkIHNpemUgb2YgdGhlIHJlcXVlc3QgcmluZyBi
dWZmZXIgaW4gdW5pdHMgb2YKPiArICogICAgICBtYWNoaW5lIHBhZ2VzLiAgVGhlIHZhbHVlIG11
c3QgYmUgYSBwb3dlciBvZiAyLgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
QmFja2VuZCBEZXZpY2UgUHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAq
Cj4gKyAqIGRpc2NhcmQtYWxpZ25tZW50Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5U
MzI+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICogICAgICBOb3RlczogICAgICAg
ICAgNCwgNQo+ICsgKgo+ICsgKiAgICAgIFRoZSBvZmZzZXQsIGluIGJ5dGVzIGZyb20gdGhlIGJl
Z2lubmluZyBvZiB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UsCj4gKyAqICAgICAgdG8gdGhlIGZp
cnN0LCBhZGRyZXNzYWJsZSwgZGlzY2FyZCBleHRlbnQgb24gdGhlIHVuZGVybHlpbmcgZGV2aWNl
Lgo+ICsgKgo+ICsgKiBkaXNjYXJkLWdyYW51bGFyaXR5Cj4gKyAqICAgICAgVmFsdWVzOiAgICAg
ICAgIDxVSU5UMzI+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDwic2VjdG9yLXNpemUiPgo+
ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICA0Cj4gKyAqCj4gKyAqICAgICAgVGhlIHNpemUsIGlu
IGJ5dGVzLCBvZiB0aGUgaW5kaXZpZHVhbGx5IGFkZHJlc3NhYmxlIGRpc2NhcmQgZXh0ZW50cwo+
ICsgKiAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZS4KPiArICoKPiArICogZGlzY2FyZC1z
ZWN1cmUKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8xIChib29sZWFuKQo+ICsgKiAgICAg
IERlZmF1bHQgVmFsdWU6ICAwCj4gKyAqICAgICAgTm90ZXM6ICAgICAgICAgIDEwCj4gKyAqCj4g
KyAqICAgICAgQSB2YWx1ZSBvZiAiMSIgaW5kaWNhdGVzIHRoYXQgdGhlIGJhY2tlbmQgY2FuIHBy
b2Nlc3MgQkxLSUZfT1BfRElTQ0FSRAo+ICsgKiAgICAgIHJlcXVlc3RzIHdpdGggdGhlIEJMS0lG
X0RJU0NBUkRfU0VDVVJFIGZsYWcgc2V0Lgo+ICsgKgo+ICsgKiBpbmZvCj4gKyAqICAgICAgVmFs
dWVzOiAgICAgICAgIDxVSU5UMzI+IChiaXRtYXApCj4gKyAqCj4gKyAqICAgICAgQSBjb2xsZWN0
aW9uIG9mIGJpdCBmbGFncyBkZXNjcmliaW5nIGF0dHJpYnV0ZXMgb2YgdGhlIGJhY2tpbmcKPiAr
ICogICAgICBkZXZpY2UuICBUaGUgVkRJU0tfKiBtYWNyb3MgZGVmaW5lIHRoZSBtZWFuaW5nIG9m
IGVhY2ggYml0Cj4gKyAqICAgICAgbG9jYXRpb24uCj4gKyAqCj4gKyAqIHNlY3Rvci1zaXplCj4g
KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5UMzI+Cj4gKyAqCj4gKyAqICAgICAgVGhlIGxv
Z2ljYWwgc2VjdG9yIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgYmFja2VuZCBkZXZpY2UuCj4gKyAq
Cj4gKyAqIHBoeXNpY2FsLXNlY3Rvci1zaXplCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxV
SU5UMzI+Cj4gKyAqCj4gKyAqICAgICAgVGhlIHBoeXNpY2FsIHNlY3RvciBzaXplLCBpbiBieXRl
cywgb2YgdGhlIGJhY2tlbmQgZGV2aWNlLgo+ICsgKgo+ICsgKiBzZWN0b3JzCj4gKyAqICAgICAg
VmFsdWVzOiAgICAgICAgIDxVSU5UNjQ+Cj4gKyAqCj4gKyAqICAgICAgVGhlIHNpemUgb2YgdGhl
IGJhY2tlbmQgZGV2aWNlLCBleHByZXNzZWQgaW4gdW5pdHMgb2YgaXRzIGxvZ2ljYWwKPiArICog
ICAgICBzZWN0b3Igc2l6ZSAoInNlY3Rvci1zaXplIikuCj4gKyAqCj4gKyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMg
Tm9kZXMKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQo+ICsgKgo+ICsgKiBldmVudC1jaGFubmVsCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg
IDxVSU5UMzI+Cj4gKyAqCj4gKyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBldmVu
dCBjaGFubmVsIHVzZWQgdG8gc2lnbmFsIGFjdGl2aXR5Cj4gKyAqICAgICAgaW4gdGhlIHJpbmcg
YnVmZmVyLgo+ICsgKgo+ICsgKiByaW5nLXJlZgo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8
VUlOVDMyPgo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICA2Cj4gKyAqCj4gKyAqICAgICAgVGhl
IFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQg
dG8gbWFwCj4gKyAqICAgICAgdGhlIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIHJp
bmcgYnVmZmVyLgo+ICsgKgo+ICsgKiByaW5nLXJlZiV1Cj4gKyAqICAgICAgVmFsdWVzOiAgICAg
ICAgIDxVSU5UMzI+Cj4gKyAqICAgICAgTm90ZXM6ICAgICAgICAgIDYKPiArICoKPiArICogICAg
ICBGb3IgYSBmcm9udGVuZCBwcm92aWRpbmcgYSBtdWx0aS1wYWdlIHJpbmcsIGEgIm51bWJlciBv
ZiByaW5nIHBhZ2VzIgo+ICsgKiAgICAgIHNpemVkIGxpc3Qgb2Ygbm9kZXMsIGVhY2ggY29udGFp
bmluZyBhIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcKPiArICogICAgICBwZXJtaXNzaW9u
IGZvciB0aGUgYmFja2VuZCB0byBtYXAgdGhlIHBhZ2Ugb2YgdGhlIHJpbmcgbG9jYXRlZAo+ICsg
KiAgICAgIGF0IHBhZ2UgaW5kZXggIiV1Ii4gIFBhZ2UgaW5kZXhlcyBhcmUgemVybyBiYXNlZC4K
PiArICoKPiArICogcHJvdG9jb2wKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgc3RyaW5nIChY
RU5fSU9fUFJPVE9fQUJJXyopCj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIFhFTl9JT19QUk9U
T19BQklfTkFUSVZFCj4gKyAqCj4gKyAqICAgICAgVGhlIG1hY2hpbmUgQUJJIHJ1bGVzIGdvdmVy
bmluZyB0aGUgZm9ybWF0IG9mIGFsbCByaW5nIHJlcXVlc3QgYW5kCj4gKyAqICAgICAgcmVzcG9u
c2Ugc3RydWN0dXJlcy4KPiArICoKPiArICogcmluZy1wYWdlLW9yZGVyCj4gKyAqICAgICAgVmFs
dWVzOiAgICAgICAgIDxVSU5UMzI+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICog
ICAgICBNYXhpbXVtIFZhbHVlOiAgTUFYKGZmcyhtYXgtcmluZy1wYWdlcykgLSAxLCBtYXgtcmlu
Zy1wYWdlLW9yZGVyKQo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICAxLCAzCj4gKyAqCj4gKyAq
ICAgICAgVGhlIHNpemUgb2YgdGhlIGZyb250ZW5kIGFsbG9jYXRlZCByZXF1ZXN0IHJpbmcgYnVm
ZmVyIGluIHVuaXRzCj4gKyAqICAgICAgb2YgbGIobWFjaGluZSBwYWdlcykuIChlLmcuIDAgPT0g
MSBwYWdlLCAxID0gMiBwYWdlcywgMiA9PSA0IHBhZ2VzLAo+ICsgKiAgICAgIGV0Yy4pLgo+ICsg
Kgo+ICsgKiBudW0tcmluZy1wYWdlcwo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8VUlOVDMy
Pgo+ICsgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAxCj4gKyAqICAgICAgTWF4aW11bSBWYWx1ZTog
IE1BWChtYXgtcmluZy1wYWdlcywoMHgxIDw8IG1heC1yaW5nLXBhZ2Utb3JkZXIpKQo+ICsgKiAg
ICAgIE5vdGVzOiAgICAgICAgICBERVBSRUNBVEVELCAyLCAzCj4gKyAqCj4gKyAqICAgICAgVGhl
IHNpemUgb2YgdGhlIGZyb250ZW5kIGFsbG9jYXRlZCByZXF1ZXN0IHJpbmcgYnVmZmVyIGluIHVu
aXRzIG9mCj4gKyAqICAgICAgbWFjaGluZSBwYWdlcy4gIFRoZSB2YWx1ZSBtdXN0IGJlIGEgcG93
ZXIgb2YgMi4KPiArICoKPiArICogZmVhdHVyZS1wZXJzaXN0ZW50Cj4gKyAqICAgICAgVmFsdWVz
OiAgICAgICAgIDAvMSAoYm9vbGVhbikKPiArICogICAgICBEZWZhdWx0IFZhbHVlOiAgMAo+ICsg
KiAgICAgIE5vdGVzOiA3LCA4LCA5Cj4gKyAqCj4gKyAqICAgICAgQSB2YWx1ZSBvZiAiMSIgaW5k
aWNhdGVzIHRoYXQgdGhlIGZyb250ZW5kIHdpbGwgcmV1c2UgdGhlIHNhbWUgZ3JhbnRzCj4gKyAq
ICAgICAgZm9yIGFsbCB0cmFuc2FjdGlvbnMsIGFsbG93aW5nIHRoZSBiYWNrZW5kIHRvIG1hcCB0
aGVtIHdpdGggd3JpdGUKPiArICogICAgICBhY2Nlc3MgKGV2ZW4gd2hlbiBpdCBzaG91bGQgYmUg
cmVhZC1vbmx5KS4gSWYgdGhlIGZyb250ZW5kIGhpdHMgdGhlCj4gKyAqICAgICAgbWF4aW11bSBu
dW1iZXIgb2YgYWxsb3dlZCBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cywgaXQgY2FuIGZhbGxi
YWNrCj4gKyAqICAgICAgdG8gbm9uIHBlcnNpc3RlbnQgbW9kZS4gVGhpcyB3aWxsIGNhdXNlIGEg
cGVyZm9ybWFuY2UgZGVncmFkYXRpb24sCj4gKyAqICAgICAgc2luY2UgdGhlIHRoZSBiYWNrZW5k
IGRyaXZlciB3aWxsIHN0aWxsIHRyeSB0byBtYXAgdGhvc2UgZ3JhbnRzCj4gKyAqICAgICAgcGVy
c2lzdGVudGx5LiBTaW5jZSB0aGUgcGVyc2lzdGVudCBncmFudHMgcHJvdG9jb2wgaXMgY29tcGF0
aWJsZSB3aXRoCj4gKyAqICAgICAgdGhlIHByZXZpb3VzIHByb3RvY29sLCBhIGZyb250ZW5kIGRy
aXZlciBjYW4gY2hvb3NlIHRvIHdvcmsgaW4KPiArICogICAgICBwZXJzaXN0ZW50IG1vZGUgZXZl
biB3aGVuIHRoZSBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KPiArICoKPiArICogICAgICBJ
dCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBmcm9udGVuZCBkcml2ZXIgc3RvcmVzIHRoZSBwZXJz
aXN0ZW50bHkKPiArICogICAgICBtYXBwZWQgZ3JhbnRzIGluIGEgTElGTyBxdWV1ZSwgc28gYSBz
dWJzZXQgb2YgYWxsIHBlcnNpc3RlbnRseSBtYXBwZWQKPiArICogICAgICBncmFudHMgZ2V0cyB1
c2VkIGNvbW1vbmx5LiBUaGlzIGlzIGRvbmUgaW4gY2FzZSB0aGUgYmFja2VuZCBkcml2ZXIKPiAr
ICogICAgICBkZWNpZGVzIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwZXJzaXN0ZW50
bHkgbWFwcGVkIGdyYW50cwo+ICsgKiAgICAgIHRvIGEgdmFsdWUgbGVzcyB0aGFuIFJJTkdfU0la
RSAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVC4KPiArICoKPiArICotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFZpcnR1YWwgRGV2aWNlIFByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBkZXZpY2UtdHlwZQo+ICsgKiAgICAgIFZhbHVlczogICAg
ICAgICAiZGlzayIsICJjZHJvbSIsICJmbG9wcHkiLCBldGMuCj4gKyAqCj4gKyAqIHZpcnR1YWwt
ZGV2aWNlCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxVSU5UMzI+Cj4gKyAqCj4gKyAqICAg
ICAgQSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBwaHlzaWNhbCBkZXZpY2UgdG8gdmlydHVhbGl6ZSB3
aXRoaW4gdGhlCj4gKyAqICAgICAgZnJvbnRlbmQncyBkb21haW4uICAoZS5nLiAiVGhlIGZpcnN0
IEFUQSBkaXNrIiwgIlRoZSB0aGlyZCBTQ1NJCj4gKyAqICAgICAgZGlzayIsIGV0Yy4pCj4gKyAq
Cj4gKyAqICAgICAgU2VlIGRvY3MvbWlzYy92YmQtaW50ZXJmYWNlLnR4dCBmb3IgZGV0YWlscyBv
biB0aGUgZm9ybWF0IG9mIHRoaXMKPiArICogICAgICB2YWx1ZS4KPiArICoKPiArICogTm90ZXMK
PiArICogLS0tLS0KPiArICogKDEpIE11bHRpLXBhZ2UgcmluZyBidWZmZXIgc2NoZW1lIGZpcnN0
IGRldmVsb3BlZCBpbiB0aGUgQ2l0cml4IFhlblNlcnZlcgo+ICsgKiAgICAgUFYgZHJpdmVycy4K
PiArICogKDIpIE11bHRpLXBhZ2UgcmluZyBidWZmZXIgc2NoZW1lIGZpcnN0IHVzZWQgaW4gc29t
ZSBSZWRIYXQgZGlzdHJpYnV0aW9ucwo+ICsgKiAgICAgaW5jbHVkaW5nIGEgZGlzdHJpYnV0aW9u
IGRlcGxveWVkIG9uIGNlcnRhaW4gbm9kZXMgb2YgdGhlIEFtYXpvbgo+ICsgKiAgICAgRUMyIGNs
dXN0ZXIuCj4gKyAqICgzKSBTdXBwb3J0IGZvciBtdWx0aS1wYWdlIHJpbmcgYnVmZmVycyB3YXMg
aW1wbGVtZW50ZWQgaW5kZXBlbmRlbnRseSwKPiArICogICAgIGluIHNsaWdodGx5IGRpZmZlcmVu
dCBmb3JtcywgYnkgYm90aCBDaXRyaXggYW5kIFJlZEhhdC9BbWF6b24uCj4gKyAqICAgICBGb3Ig
ZnVsbCBpbnRlcm9wZXJhYmlsaXR5LCBibG9jayBmcm9udCBhbmQgYmFja2VuZHMgc2hvdWxkIHB1
Ymxpc2gKPiArICogICAgIGlkZW50aWNhbCByaW5nIHBhcmFtZXRlcnMsIGFkanVzdGVkIGZvciB1
bml0IGRpZmZlcmVuY2VzLCB0byB0aGUKPiArICogICAgIFhlblN0b3JlIG5vZGVzIHVzZWQgaW4g
Ym90aCBzY2hlbWVzLgo+ICsgKiAoNCkgRGV2aWNlcyB0aGF0IHN1cHBvcnQgZGlzY2FyZCBmdW5j
dGlvbmFsaXR5IG1heSBpbnRlcm5hbGx5IGFsbG9jYXRlIHNwYWNlCj4gKyAqICAgICAoZGlzY2Fy
ZGFibGUgZXh0ZW50cykgaW4gdW5pdHMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gdGhlIGV4cG9ydGVk
IGxvZ2ljYWwKPiArICogICAgIGJsb2NrIHNpemUuIElmIHRoZSBiYWNraW5nIGRldmljZSBoYXMg
c3VjaCBkaXNjYXJkYWJsZSBleHRlbnRzIHRoZQo+ICsgKiAgICAgYmFja2VuZCBzaG91bGQgcHJv
dmlkZSBib3RoIGRpc2NhcmQtZ3JhbnVsYXJpdHkgYW5kIGRpc2NhcmQtYWxpZ25tZW50Lgo+ICsg
KiAgICAgUHJvdmlkaW5nIGp1c3Qgb25lIG9mIHRoZSB0d28gbWF5IGJlIGNvbnNpZGVyZWQgYW4g
ZXJyb3IgYnkgdGhlIGZyb250ZW5kLgo+ICsgKiAgICAgQmFja2VuZHMgc3VwcG9ydGluZyBkaXNj
YXJkIHNob3VsZCBpbmNsdWRlIGRpc2NhcmQtZ3JhbnVsYXJpdHkgYW5kCj4gKyAqICAgICBkaXNj
YXJkLWFsaWdubWVudCBldmVuIGlmIGl0IHN1cHBvcnRzIGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBz
ZWN0b3JzLgo+ICsgKiAgICAgRnJvbnRlbmRzIHNob3VsZCBhc3N1bWUgZGlzY2FyZC1hbGlnbm1l
bnQgPT0gMCBhbmQgZGlzY2FyZC1ncmFudWxhcml0eQo+ICsgKiAgICAgPT0gc2VjdG9yIHNpemUg
aWYgdGhlc2Uga2V5cyBhcmUgbWlzc2luZy4KPiArICogKDUpIFRoZSBkaXNjYXJkLWFsaWdubWVu
dCBwYXJhbWV0ZXIgYWxsb3dzIGEgcGh5c2ljYWwgZGV2aWNlIHRvIGJlCj4gKyAqICAgICBwYXJ0
aXRpb25lZCBpbnRvIHZpcnR1YWwgZGV2aWNlcyB0aGF0IGRvIG5vdCBuZWNlc3NhcmlseSBiZWdp
biBvcgo+ICsgKiAgICAgZW5kIG9uIGEgZGlzY2FyZGFibGUgZXh0ZW50IGJvdW5kYXJ5Lgo+ICsg
KiAoNikgV2hlbiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHBhZ2UgYWxsb2NhdGVkIHRvIHRoZSBy
ZXF1ZXN0IHJpbmcsCj4gKyAqICAgICAncmluZy1yZWYnIGlzIHVzZWQgdG8gY29tbXVuaWNhdGUg
dGhlIGdyYW50IHJlZmVyZW5jZSBmb3IgdGhpcwo+ICsgKiAgICAgcGFnZSB0byB0aGUgYmFja2Vu
ZC4gIFdoZW4gdXNpbmcgYSBtdWx0aS1wYWdlIHJpbmcsIHRoZSAncmluZy1yZWYnCj4gKyAqICAg
ICBub2RlIGlzIG5vdCBjcmVhdGVkLiAgSW5zdGVhZCAncmluZy1yZWYwJyAtICdyaW5nLXJlZk4n
IGFyZSB1c2VkLgo+ICsgKiAoNykgV2hlbiB1c2luZyBwZXJzaXN0ZW50IGdyYW50cyBkYXRhIGhh
cyB0byBiZSBjb3BpZWQgZnJvbS90byB0aGUgcGFnZQo+ICsgKiAgICAgd2hlcmUgdGhlIGdyYW50
IGlzIGN1cnJlbnRseSBtYXBwZWQuIFRoZSBvdmVyaGVhZCBvZiBkb2luZyB0aGlzIGNvcHkKPiAr
ICogICAgIGhvd2V2ZXIgZG9lc24ndCBzdXBwcmVzcyB0aGUgc3BlZWQgaW1wcm92ZW1lbnQgb2Yg
bm90IGhhdmluZyB0byB1bm1hcAo+ICsgKiAgICAgdGhlIGdyYW50cy4KPiArICogKDgpIFRoZSBm
cm9udGVuZCBkcml2ZXIgaGFzIHRvIGFsbG93IHRoZSBiYWNrZW5kIGRyaXZlciB0byBtYXAgYWxs
IGdyYW50cwo+ICsgKiAgICAgd2l0aCB3cml0ZSBhY2Nlc3MsIGV2ZW4gd2hlbiB0aGV5IHNob3Vs
ZCBiZSBtYXBwZWQgcmVhZC1vbmx5LCBzaW5jZQo+ICsgKiAgICAgZnVydGhlciByZXF1ZXN0cyBt
YXkgcmV1c2UgdGhlc2UgZ3JhbnRzIGFuZCByZXF1aXJlIHdyaXRlIHBlcm1pc3Npb25zLgo+ICsg
KiAoOSkgTGludXggaW1wbGVtZW50YXRpb24gZG9lc24ndCBoYXZlIGEgbGltaXQgb24gdGhlIG1h
eGltdW0gbnVtYmVyIG9mCj4gKyAqICAgICBncmFudHMgdGhhdCBjYW4gYmUgcGVyc2lzdGVudGx5
IG1hcHBlZCBpbiB0aGUgZnJvbnRlbmQgZHJpdmVyLCBidXQKPiArICogICAgIGR1ZSB0byB0aGUg
ZnJvbnRlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIGl0IHNob3VsZCBuZXZlciBiZSBiaWdnZXIK
PiArICogICAgIHRoYW4gUklOR19TSVpFICogQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNU
Lgo+ICsgKigxMCkgVGhlIGRpc2NhcmQtc2VjdXJlIHByb3BlcnR5IG1heSBiZSBwcmVzZW50IGFu
ZCB3aWxsIGJlIHNldCB0byAxIGlmIHRoZQo+ICsgKiAgICAgYmFja2luZyBkZXZpY2Ugc3VwcG9y
dHMgc2VjdXJlIGRpc2NhcmQuCj4gKyAqLwo+ICsKPiArLyoKPiArICogU1RBVEUgRElBR1JBTVMK
PiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdGFydHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgo+
ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogVG9vbCBzdGFjayBjcmVhdGVzIGZy
b250IGFuZCBiYWNrIG5vZGVzIHdpdGggc3RhdGUgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcuCj4g
KyAqCj4gKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrCj4gKyAq
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Cj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nICAgICAgICAg
ICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZwo+ICsgKiAgbyBRdWVyeSB2aXJ0dWFsIGRldmlj
ZSAgICAgICAgICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgaWRlbnRpZmljYXRpb24KPiAr
ICogICAgcHJvcGVydGllcy4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCj4gKyAqICBv
IFNldHVwIE9TIGRldmljZSBpbnN0YW5jZS4gICAgICAgICAgbyBPcGVuIGFuZCB2YWxpZGF0ZSBi
YWNrZW5kIGRldmljZS4KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvIFB1Ymxpc2ggYmFja2VuZCBmZWF0dXJlcyBhbmQKPiArICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBwYXJhbWV0ZXJzLgo+ICsgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+
ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0
V2FpdAo+ICsgKgo+ICsgKiBvIFF1ZXJ5IGJhY2tlbmQgZmVhdHVyZXMgYW5kCj4gKyAqICAgdHJh
bnNwb3J0IHBhcmFtZXRlcnMuCj4gKyAqIG8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgdGhlCj4g
KyAqICAgcmVxdWVzdCByaW5nLgo+ICsgKiBvIFB1Ymxpc2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMK
PiArICogICB0aGF0IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmluZwo+ICsgKiAgIHRoaXMgY29ubmVj
dGlvbi4KPiArICogICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgIHwKPiArICogICAg
ICAgICAgICAgIFYKPiArICogWGVuYnVzU3RhdGVJbml0aWFsaXNlZAo+ICsgKgo+ICsgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgZnJvbnRlbmQgdHJhbnNw
b3J0IHBhcmFtZXRlcnMuCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbyBDb25uZWN0IHRvIHRoZSByZXF1ZXN0IHJpbmcgYW5kCj4gKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCBjaGFubmVsLgo+ICsgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUHVibGlzaCBiYWNrZW5kIGRldmljZSBwcm9w
ZXJ0aWVzLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQKPiArICoKPiArICogIG8gUXVlcnkgYmFja2VuZCBk
ZXZpY2UgcHJvcGVydGllcy4KPiArICogIG8gRmluYWxpemUgT1MgdmlydHVhbCBkZXZpY2UKPiAr
ICogICAgaW5zdGFuY2UuCj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICB8
Cj4gKyAqICAgICAgICAgICAgICBWCj4gKyAqIFhlbmJ1c1N0YXRlQ29ubmVjdGVkCj4gKyAqCj4g
KyAqIE5vdGU6IERyaXZlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBhbnkgb3B0aW9uYWwgZmVhdHVy
ZXMsIG9yIHRoZSBuZWdvdGlhdGlvbgo+ICsgKiAgICAgICBvZiB0cmFuc3BvcnQgcGFyYW1ldGVy
cywgY2FuIHNraXAgY2VydGFpbiBzdGF0ZXMgaW4gdGhlIHN0YXRlIG1hY2hpbmU6Cj4gKyAqCj4g
KyAqICAgICAgIG8gQSBmcm9udGVuZCBtYXkgdHJhbnNpdGlvbiB0byBYZW5idXNTdGF0ZUluaXRp
YWxpc2VkIHdpdGhvdXQKPiArICogICAgICAgICB3YWl0aW5nIGZvciB0aGUgYmFja2VuZCB0byBl
bnRlciBYZW5idXNTdGF0ZUluaXRXYWl0LiAgSW4gdGhpcwo+ICsgKiAgICAgICAgIGNhc2UsIGRl
ZmF1bHQgdHJhbnNwb3J0IHBhcmFtZXRlcnMgYXJlIGluIGVmZmVjdCBhbmQgYW55Cj4gKyAqICAg
ICAgICAgdHJhbnNwb3J0IHBhcmFtZXRlcnMgcHVibGlzaGVkIGJ5IHRoZSBmcm9udGVuZCBtdXN0
IGNvbnRhaW4KPiArICogICAgICAgICB0aGVpciBkZWZhdWx0IHZhbHVlcy4KPiArICoKPiArICog
ICAgICAgbyBBIGJhY2tlbmQgbWF5IHRyYW5zaXRpb24gdG8gWGVuYnVzU3RhdGVJbml0aWFsaXNl
ZCwgYnlwYXNzaW5nCj4gKyAqICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdCwgd2l0aG91dCB3
YWl0aW5nIGZvciB0aGUgZnJvbnRlbmQgdG8gZmlyc3QKPiArICogICAgICAgICBlbnRlciB0aGUg
WGVuYnVzU3RhdGVJbml0aWFsaXNlZCBzdGF0ZS4gIEluIHRoaXMgY2FzZSwgZGVmYXVsdAo+ICsg
KiAgICAgICAgIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGFyZSBpbiBlZmZlY3QgYW5kIGFueSB0cmFu
c3BvcnQgcGFyYW1ldGVycwo+ICsgKiAgICAgICAgIHB1Ymxpc2hlZCBieSB0aGUgYmFja2VuZCBt
dXN0IGNvbnRhaW4gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCj4gKyAqCj4gKyAqICAgICAgIERyaXZl
cnMgdGhhdCBzdXBwb3J0IG9wdGlvbmFsIGZlYXR1cmVzIGFuZC9vciB0cmFuc3BvcnQgcGFyYW1l
dGVyCj4gKyAqICAgICAgIG5lZ290aWF0aW9uIG11c3QgdG9sZXJhdGUgdGhlc2UgYWRkaXRpb25h
bCBzdGF0ZSB0cmFuc2l0aW9uIHBhdGhzLgo+ICsgKiAgICAgICBJbiBnZW5lcmFsIHRoaXMgbWVh
bnMgcGVyZm9ybWluZyB0aGUgd29yayBvZiBhbnkgc2tpcHBlZCBzdGF0ZQo+ICsgKiAgICAgICB0
cmFuc2l0aW9uLCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwZXJmb3JtZWQsIGluIGFkZGl0
aW9uIHRvIHRoZQo+ICsgKiAgICAgICB3b3JrIGFzc29jaWF0ZWQgd2l0aCBlbnRyeSBpbnRvIHRo
ZSBjdXJyZW50IHN0YXRlLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIFJFUVVFU1QgQ09ERVMuCj4g
KyAqLwo+ICsjZGVmaW5lIEJMS0lGX09QX1JFQUQgICAgICAgICAgICAgIDAKPiArI2RlZmluZSBC
TEtJRl9PUF9XUklURSAgICAgICAgICAgICAxCj4gKy8qCj4gKyAqIEFsbCB3cml0ZXMgaXNzdWVk
IHByaW9yIHRvIGEgcmVxdWVzdCB3aXRoIHRoZSBCTEtJRl9PUF9XUklURV9CQVJSSUVSCj4gKyAq
IG9wZXJhdGlvbiBjb2RlICgiYmFycmllciByZXF1ZXN0IikgbXVzdCBiZSBjb21wbGV0ZWQgcHJp
b3IgdG8gdGhlCj4gKyAqIGV4ZWN1dGlvbiBvZiB0aGUgYmFycmllciByZXF1ZXN0LiAgQWxsIHdy
aXRlcyBpc3N1ZWQgYWZ0ZXIgdGhlIGJhcnJpZXIKPiArICogcmVxdWVzdCBtdXN0IG5vdCBleGVj
dXRlIHVudGlsIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBiYXJyaWVyIHJlcXVlc3QuCj4g
KyAqCj4gKyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWJhcnJpZXIiIFhlbkJ1cyBub2RlIGRv
Y3VtZW50YXRpb24gYWJvdmUuCj4gKyAqLwo+ICsjZGVmaW5lIEJMS0lGX09QX1dSSVRFX0JBUlJJ
RVIgICAgIDIKPiArLyoKPiArICogQ29tbWl0IGFueSB1bmNvbW1pdHRlZCBjb250ZW50cyBvZiB0
aGUgYmFja2luZyBkZXZpY2UncyB2b2xhdGlsZSBjYWNoZQo+ICsgKiB0byBzdGFibGUgc3RvcmFn
ZS4KPiArICoKPiArICogT3B0aW9uYWwuICBTZWUgImZlYXR1cmUtZmx1c2gtY2FjaGUiIFhlbkJ1
cyBub2RlIGRvY3VtZW50YXRpb24gYWJvdmUuCj4gKyAqLwo+ICsjZGVmaW5lIEJMS0lGX09QX0ZM
VVNIX0RJU0tDQUNIRSAgIDMKPiArLyoKPiArICogVXNlZCBpbiBTTEVTIHNvdXJjZXMgZm9yIGRl
dmljZSBzcGVjaWZpYyBjb21tYW5kIHBhY2tldAo+ICsgKiBjb250YWluZWQgd2l0aGluIHRoZSBy
ZXF1ZXN0LiBSZXNlcnZlZCBmb3IgdGhhdCBwdXJwb3NlLgo+ICsgKi8KPiArI2RlZmluZSBCTEtJ
Rl9PUF9SRVNFUlZFRF8xICAgICAgICA0Cj4gKy8qCj4gKyAqIEluZGljYXRlIHRvIHRoZSBiYWNr
ZW5kIGRldmljZSB0aGF0IGEgcmVnaW9uIG9mIHN0b3JhZ2UgaXMgbm8gbG9uZ2VyIGluCj4gKyAq
IHVzZSwgYW5kIG1heSBiZSBkaXNjYXJkZWQgYXQgYW55IHRpbWUgd2l0aG91dCBpbXBhY3QgdG8g
dGhlIGNsaWVudC4gIElmCj4gKyAqIHRoZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSBmbGFnIGlzIHNl
dCBvbiB0aGUgcmVxdWVzdCwgYWxsIGNvcGllcyBvZiB0aGUKPiArICogZGlzY2FyZGVkIHJlZ2lv
biBvbiB0aGUgZGV2aWNlIG11c3QgYmUgcmVuZGVyZWQgdW5yZWNvdmVyYWJsZSBiZWZvcmUgdGhl
Cj4gKyAqIGNvbW1hbmQgcmV0dXJucy4KPiArICoKPiArICogVGhpcyBvcGVyYXRpb24gaXMgYW5h
bG9nb3VzIHRvIHBlcmZvcm1pbmcgYSB0cmltIChBVEEpIG9yIHVuYW1wIChTQ1NJKSwKPiArICog
Y29tbWFuZCBvbiBhIG5hdGl2ZSBkZXZpY2UuCj4gKyAqCj4gKyAqIE1vcmUgaW5mb3JtYXRpb24g
YWJvdXQgdHJpbS91bm1hcCBvcGVyYXRpb25zIGNhbiBiZSBmb3VuZCBhdDoKPiArICogaHR0cDov
L3QxMy5vcmcvRG9jdW1lbnRzL1VwbG9hZGVkRG9jdW1lbnRzL2RvY3MyMDA4Lwo+ICsgKiAgICAg
ZTA3MTU0cjYtRGF0YV9TZXRfTWFuYWdlbWVudF9Qcm9wb3NhbF9mb3JfQVRBLUFDUzIuZG9jCj4g
KyAqIGh0dHA6Ly93d3cuc2VhZ2F0ZS5jb20vc3RhdGljZmlsZXMvc3VwcG9ydC9kaXNjL21hbnVh
bHMvCj4gKyAqICAgICBJbnRlcmZhY2UlMjBtYW51YWxzLzEwMDI5MzA2OGMucGRmCj4gKyAqCj4g
KyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWRpc2NhcmQiLCAiZGlzY2FyZC1hbGlnbm1lbnQi
LAo+ICsgKiAiZGlzY2FyZC1ncmFudWxhcml0eSIsIGFuZCAiZGlzY2FyZC1zZWN1cmUiIGluIHRo
ZSBYZW5CdXMgbm9kZQo+ICsgKiBkb2N1bWVudGF0aW9uIGFib3ZlLgo+ICsgKi8KPiArI2RlZmlu
ZSBCTEtJRl9PUF9ESVNDQVJEICAgICAgICAgICA1Cj4gKwo+ICsvKgo+ICsgKiBSZWNvZ25pemVk
IGlmICJmZWF0dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50cyIgaW4gcHJlc2VudCBpbiB0aGUgYmFj
a2VuZAo+ICsgKiB4ZW5idXMgaW5mby4gVGhlICJmZWF0dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50
cyIgbm9kZSBjb250YWlucyB0aGUgbWF4aW11bQo+ICsgKiBudW1iZXIgb2Ygc2VnbWVudHMgYWxs
b3dlZCBieSB0aGUgYmFja2VuZCBwZXIgcmVxdWVzdC4gSWYgdGhlIG5vZGUgaXMKPiArICogcHJl
c2VudCwgdGhlIGZyb250ZW5kIG1pZ2h0IHVzZSBibGtpZl9yZXF1ZXN0X2luZGlyZWN0IHN0cnVj
dHMgaW4gb3JkZXIgdG8KPiArICogaXNzdWUgcmVxdWVzdHMgd2l0aCBtb3JlIHRoYW4gQkxLSUZf
TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICgxMSkuIFRoZQo+ICsgKiBtYXhpbXVtIG51bWJlciBv
ZiBpbmRpcmVjdCBzZWdtZW50cyBpcyBmaXhlZCBieSB0aGUgYmFja2VuZCwgYnV0IHRoZQo+ICsg
KiBmcm9udGVuZCBjYW4gaXNzdWUgcmVxdWVzdHMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGlyZWN0
IHNlZ21lbnRzIGFzIGxvbmcgYXMKPiArICogaXQncyBsZXNzIHRoYW4gdGhlIG51bWJlciBwcm92
aWRlZCBieSB0aGUgYmFja2VuZC4gVGhlIGluZGlyZWN0X2dyZWZzIGZpZWxkCj4gKyAqIGluIGJs
a2lmX3JlcXVlc3RfaW5kaXJlY3Qgc2hvdWxkIGJlIGZpbGxlZCBieSB0aGUgZnJvbnRlbmQgd2l0
aCB0aGUKPiArICogZ3JhbnQgcmVmZXJlbmNlcyBvZiB0aGUgcGFnZXMgdGhhdCBhcmUgaG9sZGlu
ZyB0aGUgaW5kaXJlY3Qgc2VnbWVudHMuCj4gKyAqIFRoZXNlIHBhZ2VzIGFyZSBmaWxsZWQgd2l0
aCBhbiBhcnJheSBvZiBibGtpZl9yZXF1ZXN0X3NlZ21lbnQgdGhhdCBob2xkIHRoZQo+ICsgKiBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgc2VnbWVudHMuIFRoZSBudW1iZXIgb2YgaW5kaXJlY3QgcGFn
ZXMgdG8gdXNlIGlzCj4gKyAqIGRldGVybWluZWQgYnkgdGhlIG51bWJlciBvZiBzZWdtZW50cyBh
biBpbmRpcmVjdCByZXF1ZXN0IGNvbnRhaW5zLiBFdmVyeQo+ICsgKiBpbmRpcmVjdCBwYWdlIGNh
biBjb250YWluIGEgbWF4aW11bSBvZgo+ICsgKiAoUEFHRV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBi
bGtpZl9yZXF1ZXN0X3NlZ21lbnQpKSBzZWdtZW50cywgc28gdG8KPiArICogY2FsY3VsYXRlIHRo
ZSBudW1iZXIgb2YgaW5kaXJlY3QgcGFnZXMgdG8gdXNlIHdlIGhhdmUgdG8gZG8KPiArICogY2Vp
bChpbmRpcmVjdF9zZWdtZW50cyAvIChQQUdFX1NJWkUgLyBzaXplb2Yoc3RydWN0IGJsa2lmX3Jl
cXVlc3Rfc2VnbWVudCkpKS4KPiArICoKPiArICogSWYgYSBiYWNrZW5kIGRvZXMgbm90IHJlY29n
bml6ZSBCTEtJRl9PUF9JTkRJUkVDVCwgaXQgc2hvdWxkICpub3QqCj4gKyAqIGNyZWF0ZSB0aGUg
ImZlYXR1cmUtbWF4LWluZGlyZWN0LXNlZ21lbnRzIiBub2RlIQo+ICsgKi8KPiArI2RlZmluZSBC
TEtJRl9PUF9JTkRJUkVDVCAgICAgICAgICA2Cj4gKwo+ICsvKgo+ICsgKiBNYXhpbXVtIHNjYXR0
ZXIvZ2F0aGVyIHNlZ21lbnRzIHBlciByZXF1ZXN0Lgo+ICsgKiBUaGlzIGlzIGNhcmVmdWxseSBj
aG9zZW4gc28gdGhhdCBzaXplb2YoYmxraWZfcmluZ190KSA8PSBQQUdFX1NJWkUuCj4gKyAqIE5C
LiBUaGlzIGNvdWxkIGJlIDEyIGlmIHRoZSByaW5nIGluZGV4ZXMgd2VyZW4ndCBzdG9yZWQgaW4g
dGhlIHNhbWUgcGFnZS4KPiArICovCj4gKyNkZWZpbmUgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9S
RVFVRVNUIDExCj4gKwo+ICsvKgo+ICsgKiBNYXhpbXVtIG51bWJlciBvZiBpbmRpcmVjdCBwYWdl
cyB0byB1c2UgcGVyIHJlcXVlc3QuCj4gKyAqLwo+ICsjZGVmaW5lIEJMS0lGX01BWF9JTkRJUkVD
VF9QQUdFU19QRVJfUkVRVUVTVCA4Cj4gKwo+ICsvKgo+ICsgKiBOQi4gZmlyc3Rfc2VjdCBhbmQg
bGFzdF9zZWN0IGluIGJsa2lmX3JlcXVlc3Rfc2VnbWVudCwgYXMgd2VsbCBhcwo+ICsgKiBzZWN0
b3JfbnVtYmVyIGluIGJsa2lmX3JlcXVlc3QsIGFyZSBhbHdheXMgZXhwcmVzc2VkIGluIDUxMi1i
eXRlIHVuaXRzLgo+ICsgKiBIb3dldmVyIHRoZXkgbXVzdCBiZSBwcm9wZXJseSBhbGlnbmVkIHRv
IHRoZSByZWFsIHNlY3RvciBzaXplIG9mIHRoZQo+ICsgKiBwaHlzaWNhbCBkaXNrLCB3aGljaCBp
cyByZXBvcnRlZCBpbiB0aGUgInBoeXNpY2FsLXNlY3Rvci1zaXplIiBub2RlIGluCj4gKyAqIHRo
ZSBiYWNrZW5kIHhlbmJ1cyBpbmZvLiBBbHNvIHRoZSB4ZW5idXMgInNlY3RvcnMiIG5vZGUgaXMg
ZXhwcmVzc2VkIGluCj4gKyAqIDUxMi1ieXRlIHVuaXRzLgo+ICsgKi8KPiArc3RydWN0IGJsa2lm
X3JlcXVlc3Rfc2VnbWVudCB7Cj4gKyAgICBncmFudF9yZWZfdCBncmVmOyAgICAgICAgLyogcmVm
ZXJlbmNlIHRvIEkvTyBidWZmZXIgZnJhbWUgICAgICAgICovCj4gKyAgICAvKiBAZmlyc3Rfc2Vj
dDogZmlyc3Qgc2VjdG9yIGluIGZyYW1lIHRvIHRyYW5zZmVyIChpbmNsdXNpdmUpLiAgICovCj4g
KyAgICAvKiBAbGFzdF9zZWN0OiBsYXN0IHNlY3RvciBpbiBmcmFtZSB0byB0cmFuc2ZlciAoaW5j
bHVzaXZlKS4gICAgICovCj4gKyAgICBVSU5UOCAgICAgZmlyc3Rfc2VjdCwgbGFzdF9zZWN0Owo+
ICt9Owo+ICsKPiArLyoKPiArICogU3RhcnRpbmcgcmluZyBlbGVtZW50IGZvciBhbnkgSS9PIHJl
cXVlc3QuCj4gKyAqLwo+ICtzdHJ1Y3QgYmxraWZfcmVxdWVzdCB7Cj4gKyAgICBVSU5UOCAgICAg
ICAgb3BlcmF0aW9uOyAgICAvKiBCTEtJRl9PUF8/Pz8gICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KPiArICAgIFVJTlQ4ICAgICAgICBucl9zZWdtZW50czsgIC8qIG51bWJlciBvZiBzZWdtZW50
cyAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgYmxraWZfdmRldl90ICAgaGFuZGxlOyAgICAg
ICAvKiBvbmx5IGZvciByZWFkL3dyaXRlIHJlcXVlc3RzICAgICAgICAgKi8KPiArICAgIFVJTlQ2
NCAgICAgICBpZDsgICAgICAgICAgIC8qIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiBy
ZXNwICAqLwo+ICsgICAgYmxraWZfc2VjdG9yX3Qgc2VjdG9yX251bWJlcjsvKiBzdGFydCBzZWN0
b3IgaWR4IG9uIGRpc2sgKHIvdyBvbmx5KSAgKi8KPiArICAgIHN0cnVjdCBibGtpZl9yZXF1ZXN0
X3NlZ21lbnQgc2VnW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Cj4gK307Cj4gK3R5
cGVkZWYgc3RydWN0IGJsa2lmX3JlcXVlc3QgYmxraWZfcmVxdWVzdF90Owo+ICsKPiArLyoKPiAr
ICogQ2FzdCB0byB0aGlzIHN0cnVjdHVyZSB3aGVuIGJsa2lmX3JlcXVlc3Qub3BlcmF0aW9uID09
IEJMS0lGX09QX0RJU0NBUkQKPiArICogc2l6ZW9mKHN0cnVjdCBibGtpZl9yZXF1ZXN0X2Rpc2Nh
cmQpIDw9IHNpemVvZihzdHJ1Y3QgYmxraWZfcmVxdWVzdCkKPiArICovCj4gK3N0cnVjdCBibGtp
Zl9yZXF1ZXN0X2Rpc2NhcmQgewo+ICsgICAgVUlOVDggICAgICAgIG9wZXJhdGlvbjsgICAgLyog
QkxLSUZfT1BfRElTQ0FSRCAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICBVSU5UOCAgICAg
ICAgZmxhZzsgICAgICAgICAvKiBCTEtJRl9ESVNDQVJEX1NFQ1VSRSBvciB6ZXJvICAgICAgICAg
Ki8KPiArI2RlZmluZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSAoMTw8MCkgIC8qIGlnbm9yZWQgaWYg
ZGlzY2FyZC1zZWN1cmU9MCAgICAgICovCj4gKyAgICBibGtpZl92ZGV2X3QgICBoYW5kbGU7ICAg
ICAgIC8qIHNhbWUgYXMgZm9yIHJlYWQvd3JpdGUgcmVxdWVzdHMgICAgICAqLwo+ICsgICAgVUlO
VDY0ICAgICAgIGlkOyAgICAgICAgICAgLyogcHJpdmF0ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGlu
IHJlc3AgICovCj4gKyAgICBibGtpZl9zZWN0b3JfdCBzZWN0b3JfbnVtYmVyOy8qIHN0YXJ0IHNl
Y3RvciBpZHggb24gZGlzayAgICAgICAgICAgICAqLwo+ICsgICAgVUlOVDY0ICAgICAgIG5yX3Nl
Y3RvcnM7ICAgLyogbnVtYmVyIG9mIGNvbnRpZ3VvdXMgc2VjdG9ycyB0byBkaXNjYXJkKi8KPiAr
fTsKPiArdHlwZWRlZiBzdHJ1Y3QgYmxraWZfcmVxdWVzdF9kaXNjYXJkIGJsa2lmX3JlcXVlc3Rf
ZGlzY2FyZF90Owo+ICsKPiArc3RydWN0IGJsa2lmX3JlcXVlc3RfaW5kaXJlY3Qgewo+ICsgICAg
VUlOVDggICAgICAgIG9wZXJhdGlvbjsgICAgLyogQkxLSUZfT1BfSU5ESVJFQ1QgICAgICAgICAg
ICAgICAgICAgICovCj4gKyAgICBVSU5UOCAgICAgICAgaW5kaXJlY3Rfb3A7ICAvKiBCTEtJRl9P
UF97UkVBRC9XUklURX0gICAgICAgICAgICAgICAgKi8KPiArICAgIFVJTlQxNiAgICAgICBucl9z
ZWdtZW50czsgIC8qIG51bWJlciBvZiBzZWdtZW50cyAgICAgICAgICAgICAgICAgICAqLwo+ICsg
ICAgVUlOVDY0ICAgICAgIGlkOyAgICAgICAgICAgLyogcHJpdmF0ZSBndWVzdCB2YWx1ZSwgZWNo
b2VkIGluIHJlc3AgICovCj4gKyAgICBibGtpZl9zZWN0b3JfdCBzZWN0b3JfbnVtYmVyOy8qIHN0
YXJ0IHNlY3RvciBpZHggb24gZGlzayAoci93IG9ubHkpICAqLwo+ICsgICAgYmxraWZfdmRldl90
ICAgaGFuZGxlOyAgICAgICAvKiBzYW1lIGFzIGZvciByZWFkL3dyaXRlIHJlcXVlc3RzICAgICAg
Ki8KPiArICAgIGdyYW50X3JlZl90ICAgIGluZGlyZWN0X2dyZWZzW0JMS0lGX01BWF9JTkRJUkVD
VF9QQUdFU19QRVJfUkVRVUVTVF07Cj4gKyNpZmRlZiBfX2kzODZfXwo+ICsgICAgVUlOVDY0ICAg
ICAgIHBhZDsgICAgICAgICAgLyogTWFrZSBpdCA2NCBieXRlIGFsaWduZWQgb24gaTM4NiAgICAg
ICovCj4gKyNlbmRpZgo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBibGtpZl9yZXF1ZXN0X2luZGly
ZWN0IGJsa2lmX3JlcXVlc3RfaW5kaXJlY3RfdDsKPiArCj4gK3N0cnVjdCBibGtpZl9yZXNwb25z
ZSB7Cj4gKyAgICBVSU5UNjQgICAgICAgIGlkOyAgICAgICAgICAgICAgLyogY29waWVkIGZyb20g
cmVxdWVzdCAqLwo+ICsgICAgVUlOVDggICAgICAgICBvcGVyYXRpb247ICAgICAgIC8qIGNvcGll
ZCBmcm9tIHJlcXVlc3QgKi8KPiArICAgIElOVDE2ICAgICAgICAgc3RhdHVzOyAgICAgICAgICAv
KiBCTEtJRl9SU1BfPz8/ICAgICAgICovCj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IGJsa2lmX3Jl
c3BvbnNlIGJsa2lmX3Jlc3BvbnNlX3Q7Cj4gKwo+ICsvKgo+ICsgKiBTVEFUVVMgUkVUVVJOIENP
REVTLgo+ICsgKi8KPiArIC8qIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIChvbmx5IGhhcHBlbnMg
b24gYmFycmllciB3cml0ZXMpLiAqLwo+ICsjZGVmaW5lIEJMS0lGX1JTUF9FT1BOT1RTVVBQICAt
Mgo+ICsgLyogT3BlcmF0aW9uIGZhaWxlZCBmb3Igc29tZSB1bnNwZWNpZmllZCByZWFzb24gKC1F
SU8pLiAqLwo+ICsjZGVmaW5lIEJMS0lGX1JTUF9FUlJPUiAgICAgICAtMQo+ICsgLyogT3BlcmF0
aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuICovCj4gKyNkZWZpbmUgQkxLSUZfUlNQX09LQVkg
ICAgICAgICAwCj4gKwo+ICsvKgo+ICsgKiBHZW5lcmF0ZSBibGtpZiByaW5nIHN0cnVjdHVyZXMg
YW5kIHR5cGVzLgo+ICsgKi8KPiArREVGSU5FX1JJTkdfVFlQRVMoYmxraWYsIHN0cnVjdCBibGtp
Zl9yZXF1ZXN0LCBzdHJ1Y3QgYmxraWZfcmVzcG9uc2UpOwo+ICsKPiArI2RlZmluZSBWRElTS19D
RFJPTSAgICAgICAgMHgxCj4gKyNkZWZpbmUgVkRJU0tfUkVNT1ZBQkxFICAgIDB4Mgo+ICsjZGVm
aW5lIFZESVNLX1JFQURPTkxZICAgICAweDQKPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNf
SU9fQkxLSUZfSF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1v
ZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+
ICsgKiB0YWItd2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoK
PiArICovCj4gZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hl
bi9pby9wcm90b2NvbHMuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9p
by9wcm90b2NvbHMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uODBi
MTk2Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4vaW8vcHJvdG9jb2xzLmgKPiBAQCAtMCwwICsxLDQwIEBACj4gKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKPiArICogcHJvdG9jb2xzLmgKPiArICogCj4gKyAqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAq
IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs
IHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+
ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAr
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O
RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElO
R1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFJPVE9DT0xT
X0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BST1RPQ09MU19IX18KPiArCj4gKyNkZWZpbmUgWEVOX0lP
X1BST1RPX0FCSV9YODZfMzIgICAgICJ4ODZfMzItYWJpIgo+ICsjZGVmaW5lIFhFTl9JT19QUk9U
T19BQklfWDg2XzY0ICAgICAieDg2XzY0LWFiaSIKPiArI2RlZmluZSBYRU5fSU9fUFJPVE9fQUJJ
X0FSTSAgICAgICAgImFybS1hYmkiCj4gKwo+ICsjaWYgZGVmaW5lZChfX2kzODZfXykKPiArIyBk
ZWZpbmUgWEVOX0lPX1BST1RPX0FCSV9OQVRJVkUgWEVOX0lPX1BST1RPX0FCSV9YODZfMzIKPiAr
I2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQo+ICsjIGRlZmluZSBYRU5fSU9fUFJPVE9fQUJJX05B
VElWRSBYRU5fSU9fUFJPVE9fQUJJX1g4Nl82NAo+ICsjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8
IGRlZmluZWQoX19hYXJjaDY0X18pCj4gKyMgZGVmaW5lIFhFTl9JT19QUk9UT19BQklfTkFUSVZF
IFhFTl9JT19QUk9UT19BQklfQVJNCj4gKyNlbHNlCj4gKyMgZXJyb3IgYXJjaCBmaXh1cCBuZWVk
ZWQgaGVyZQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8vcmluZy5oIGIvT3ZtZlBrZy9JbmNsdWRlL0lu
ZHVzdHJ5U3RhbmRhcmQvWGVuL2lvL3JpbmcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uYThlOWVhMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1
ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vaW8vcmluZy5oCj4gQEAgLTAsMCArMSwzMTIgQEAKPiAr
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiByaW5nLmgKPiArICogCj4gKyAqIFNoYXJlZCBw
cm9kdWNlci1jb25zdW1lciByaW5nIG1hY3Jvcy4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICog
cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4g
KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsg
KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIFRpbSBEZWVnYW4gYW5kIEFuZHJldyBXYXJm
aWVsZCBOb3ZlbWJlciAyMDA0Lgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0lP
X1JJTkdfSF9fCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCj4gKwo+ICsjaW5j
bHVkZSAiLi4veGVuLWNvbXBhdC5oIgo+ICsKPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18gPCAweDAwMDMwMjA4Cj4gKyNkZWZpbmUgeGVuX21iKCkgIG1iKCkKPiArI2RlZmluZSB4ZW5f
cm1iKCkgcm1iKCkKPiArI2RlZmluZSB4ZW5fd21iKCkgd21iKCkKPiArI2VuZGlmCj4gKwo+ICt0
eXBlZGVmIFVJTlQzMiBSSU5HX0lEWDsKPiArCj4gKy8qIFJvdW5kIGEgMzItYml0IHVuc2lnbmVk
IGNvbnN0YW50IGRvd24gdG8gdGhlIG5lYXJlc3QgcG93ZXIgb2YgdHdvLiAqLwo+ICsjZGVmaW5l
IF9fUkQyKF94KSAgKCgoX3gpICYgMHgwMDAwMDAwMikgPyAweDIgICAgICAgICAgICAgICAgICA6
ICgoX3gpICYgMHgxKSkKPiArI2RlZmluZSBfX1JENChfeCkgICgoKF94KSAmIDB4MDAwMDAwMGMp
ID8gX19SRDIoKF94KT4+Mik8PDIgICAgOiBfX1JEMihfeCkpCj4gKyNkZWZpbmUgX19SRDgoX3gp
ICAoKChfeCkgJiAweDAwMDAwMGYwKSA/IF9fUkQ0KChfeCk+PjQpPDw0ICAgIDogX19SRDQoX3gp
KQo+ICsjZGVmaW5lIF9fUkQxNihfeCkgKCgoX3gpICYgMHgwMDAwZmYwMCkgPyBfX1JEOCgoX3gp
Pj44KTw8OCAgICA6IF9fUkQ4KF94KSkKPiArI2RlZmluZSBfX1JEMzIoX3gpICgoKF94KSAmIDB4
ZmZmZjAwMDApID8gX19SRDE2KChfeCk+PjE2KTw8MTYgOiBfX1JEMTYoX3gpKQo+ICsKPiArLyoK
PiArICogQ2FsY3VsYXRlIHNpemUgb2YgYSBzaGFyZWQgcmluZywgZ2l2ZW4gdGhlIHRvdGFsIGF2
YWlsYWJsZSBzcGFjZSBmb3IgdGhlCj4gKyAqIHJpbmcgYW5kIGluZGV4ZXMgKF9zeiksIGFuZCB0
aGUgbmFtZSB0YWcgb2YgdGhlIHJlcXVlc3QvcmVzcG9uc2Ugc3RydWN0dXJlLgo+ICsgKiBBIHJp
bmcgY29udGFpbnMgYXMgbWFueSBlbnRyaWVzIGFzIHdpbGwgZml0LCByb3VuZGVkIGRvd24gdG8g
dGhlIG5lYXJlc3QgCj4gKyAqIHBvd2VyIG9mIHR3byAoc28gd2UgY2FuIG1hc2sgd2l0aCAoc2l6
ZS0xKSB0byBsb29wIGFyb3VuZCkuCj4gKyAqLwo+ICsjZGVmaW5lIF9fQ09OU1RfUklOR19TSVpF
KF9zLCBfc3opIFwKPiArICAgIChfX1JEMzIoKChfc3opIC0gb2Zmc2V0b2Yoc3RydWN0IF9zIyNf
c3JpbmcsIHJpbmcpKSAvIFwKPiArCSAgICBzaXplb2YoKChzdHJ1Y3QgX3MjI19zcmluZyAqKTAp
LT5yaW5nWzBdKSkpCj4gKy8qCj4gKyAqIFRoZSBzYW1lIGZvciBwYXNzaW5nIGluIGFuIGFjdHVh
bCBwb2ludGVyIGluc3RlYWQgb2YgYSBuYW1lIHRhZy4KPiArICovCj4gKyNkZWZpbmUgX19SSU5H
X1NJWkUoX3MsIF9zeikgXAo+ICsgICAgKF9fUkQzMigoKF9zeikgLSAoSU5UTikoX3MpLT5yaW5n
ICsgKElOVE4pKF9zKSkgLyBzaXplb2YoKF9zKS0+cmluZ1swXSkpKQo+ICsKPiArLyoKPiArICog
TWFjcm9zIHRvIG1ha2UgdGhlIGNvcnJlY3QgQyBkYXRhdHlwZXMgZm9yIGEgbmV3IGtpbmQgb2Yg
cmluZy4KPiArICogCj4gKyAqIFRvIG1ha2UgYSBuZXcgcmluZyBkYXRhdHlwZSwgeW91IG5lZWQg
dG8gaGF2ZSB0d28gbWVzc2FnZSBzdHJ1Y3R1cmVzLAo+ICsgKiBsZXQncyBzYXkgcmVxdWVzdF90
LCBhbmQgcmVzcG9uc2VfdCBhbHJlYWR5IGRlZmluZWQuCj4gKyAqCj4gKyAqIEluIGEgaGVhZGVy
IHdoZXJlIHlvdSB3YW50IHRoZSByaW5nIGRhdGF0eXBlIGRlY2xhcmVkLCB5b3UgdGhlbiBkbzoK
PiArICoKPiArICogICAgIERFRklORV9SSU5HX1RZUEVTKG15dGFnLCByZXF1ZXN0X3QsIHJlc3Bv
bnNlX3QpOwo+ICsgKgo+ICsgKiBUaGVzZSBleHBhbmQgb3V0IHRvIGdpdmUgeW91IGEgc2V0IG9m
IHR5cGVzLCBhcyB5b3UgY2FuIHNlZSBiZWxvdy4KPiArICogVGhlIG1vc3QgaW1wb3J0YW50IG9m
IHRoZXNlIGFyZToKPiArICogCj4gKyAqICAgICBteXRhZ19zcmluZ190ICAgICAgLSBUaGUgc2hh
cmVkIHJpbmcuCj4gKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgLSBUaGUgJ2Zyb250JyBoYWxm
IG9mIHRoZSByaW5nLgo+ICsgKiAgICAgbXl0YWdfYmFja19yaW5nX3QgIC0gVGhlICdiYWNrJyBo
YWxmIG9mIHRoZSByaW5nLgo+ICsgKgo+ICsgKiBUbyBpbml0aWFsaXplIGEgcmluZyBpbiB5b3Vy
IGNvZGUgeW91IG5lZWQgdG8ga25vdyB0aGUgbG9jYXRpb24gYW5kIHNpemUKPiArICogb2YgdGhl
IHNoYXJlZCBtZW1vcnkgYXJlYSAoUEFHRV9TSVpFLCBmb3IgaW5zdGFuY2UpLiBUbyBpbml0aWFs
aXNlCj4gKyAqIHRoZSBmcm9udCBoYWxmOgo+ICsgKgo+ICsgKiAgICAgbXl0YWdfZnJvbnRfcmlu
Z190IGZyb250X3Jpbmc7Cj4gKyAqICAgICBTSEFSRURfUklOR19JTklUKChteXRhZ19zcmluZ190
ICopc2hhcmVkX3BhZ2UpOwo+ICsgKiAgICAgRlJPTlRfUklOR19JTklUKCZmcm9udF9yaW5nLCAo
bXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlLCBQQUdFX1NJWkUpOwo+ICsgKgo+ICsgKiBJbml0
aWFsaXppbmcgdGhlIGJhY2sgZm9sbG93cyBzaW1pbGFybHkgKG5vdGUgdGhhdCBvbmx5IHRoZSBm
cm9udAo+ICsgKiBpbml0aWFsaXplcyB0aGUgc2hhcmVkIHJpbmcpOgo+ICsgKgo+ICsgKiAgICAg
bXl0YWdfYmFja19yaW5nX3QgYmFja19yaW5nOwo+ICsgKiAgICAgQkFDS19SSU5HX0lOSVQoJmJh
Y2tfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFnZSwgUEFHRV9TSVpFKTsKPiArICov
Cj4gKwo+ICsjZGVmaW5lIERFRklORV9SSU5HX1RZUEVTKF9fbmFtZSwgX19yZXFfdCwgX19yc3Bf
dCkgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArLyogU2hhcmVk
IHJpbmcgZW50cnkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICt1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICBfX3JlcV90IHJlcTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIF9f
cnNwX3QgcnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArLyog
U2hhcmVkIHJpbmcgcGFnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICBSSU5HX0lEWCByZXFfcHJv
ZCwgcmVxX2V2ZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgIFJJTkdfSURYIHJzcF9wcm9kLCByc3BfZXZlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgc3RydWN0IHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICAgICAgVUlOVDggc21hcnRwb2xsX2FjdGl2ZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB9IG5ldGlmOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIHN0cnVjdCB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgIFVJTlQ4IG1zZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgfSB0YXBpZl91c2VyOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICBVSU5UOCBw
dnRfcGFkWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgIH0gcHJpdmF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgVUlOVDggX19wYWRbNDRdOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgdW5pb24gX19uYW1l
IyNfc3JpbmdfZW50cnkgcmluZ1sxXTsgLyogdmFyaWFibGUtbGVuZ3RoICovICAgICAgICAgICBc
Cj4gK307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsvKiAiRnJvbnQiIGVu
ZCdzIHByaXZhdGUgdmFyaWFibGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gK3N0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIFJJTkdfSURYIHJlcV9wcm9kX3B2dDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgUklOR19J
RFggcnNwX2NvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICBVSU5UMzIgbnJfZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKPiArICAgIHN0cnVjdCBfX25hbWUjI19zcmluZyAqc3Jpbmc7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICt9OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArLyogIkJhY2siIGVuZCdzIHByaXZhdGUgdmFyaWFi
bGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtzdHJ1Y3QgX19u
YW1lIyNfYmFja19yaW5nIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICBSSU5HX0lEWCByc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIFJJTkdfSURYIHJlcV9jb25zOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgVUlO
VDMyIG5yX2VudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICBzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgKnNyaW5nOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKy8qIFN5bnRhY3RpYyBzdWdhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArdHlwZWRlZiBzdHJ1Y3QgX19uYW1lIyNfc3Jp
bmcgX19uYW1lIyNfc3JpbmdfdDsgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICt0eXBlZGVm
IHN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIF9fbmFtZSMjX2Zyb250X3JpbmdfdDsgICAgICAg
ICAgICAgICBcCj4gK3R5cGVkZWYgc3RydWN0IF9fbmFtZSMjX2JhY2tfcmluZyBfX25hbWUjI19i
YWNrX3JpbmdfdAo+ICsKPiArLyoKPiArICogTWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgcmluZ3Mu
Cj4gKyAqIAo+ICsgKiBGUk9OVF9SSU5HX3doYXRldmVyIHdvcmtzIG9uIHRoZSAiZnJvbnQgZW5k
IiBvZiBhIHJpbmc6IGhlcmUgCj4gKyAqIHJlcXVlc3RzIGFyZSBwdXNoZWQgb24gdG8gdGhlIHJp
bmcgYW5kIHJlc3BvbnNlcyB0YWtlbiBvZmYgaXQuCj4gKyAqIAo+ICsgKiBCQUNLX1JJTkdfd2hh
dGV2ZXIgd29ya3Mgb24gdGhlICJiYWNrIGVuZCIgb2YgYSByaW5nOiBoZXJlIAo+ICsgKiByZXF1
ZXN0cyBhcmUgdGFrZW4gb2ZmIHRoZSByaW5nIGFuZCByZXNwb25zZXMgcHV0IG9uLgo+ICsgKiAK
PiArICogTi5CLiB0aGVzZSBtYWNyb3MgZG8gTk8gSU5URVJMT0NLUyBPUiBGTE9XIENPTlRST0wu
IAo+ICsgKiBUaGlzIGlzIE9LIGluIDEtZm9yLTEgcmVxdWVzdC1yZXNwb25zZSBzaXR1YXRpb25z
IHdoZXJlIHRoZSAKPiArICogcmVxdWVzdG9yIChmcm9udCBlbmQpIG5ldmVyIGhhcyBtb3JlIHRo
YW4gUklOR19TSVpFKCktMQo+ICsgKiBvdXRzdGFuZGluZyByZXF1ZXN0cy4KPiArICovCj4gKwo+
ICsvKiBJbml0aWFsaXNpbmcgZW1wdHkgcmluZ3MgKi8KPiArI2RlZmluZSBTSEFSRURfUklOR19J
TklUKF9zKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgKF9zKS0+cmVxX3Byb2QgID0gKF9zKS0+cnNwX3Byb2QgID0gMDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAoX3MpLT5yZXFfZXZlbnQgPSAoX3MpLT5yc3BfZXZlbnQg
PSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChWT0lEKVplcm9NZW0o
KF9zKS0+cHJpdmF0ZS5wdnRfcGFkLCBzaXplb2YoKF9zKS0+cHJpdmF0ZS5wdnRfcGFkKSk7IFwK
PiArICAgIChWT0lEKVplcm9NZW0oKF9zKS0+X19wYWQsIHNpemVvZigoX3MpLT5fX3BhZCkpOyAg
ICAgICAgICAgICAgICAgIFwKPiArfSB3aGlsZSgwKQo+ICsKPiArI2RlZmluZSBGUk9OVF9SSU5H
X0lOSVQoX3IsIF9zLCBfX3NpemUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgKF9yKS0+cmVxX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAoX3IpLT5yc3BfY29ucyA9IDA7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChfciktPm5yX2Vu
dHMgPSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgKF9yKS0+c3JpbmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK30gd2hpbGUgKDApCj4gKwo+ICsjZGVmaW5lIEJBQ0tf
UklOR19JTklUKF9yLCBfcywgX19zaXplKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAoX3IpLT5yc3BfcHJvZF9wdnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChfciktPnJlcV9jb25zID0gMDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgKF9yKS0+
bnJfZW50cyA9IF9fUklOR19TSVpFKF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICAoX3IpLT5zcmluZyA9IChfcyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfSB3aGlsZSAoMCkKPiArCj4gKy8qIEhvdyBi
aWcgaXMgdGhpcyByaW5nPyAqLwo+ICsjZGVmaW5lIFJJTkdfU0laRShfcikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAoKF9yKS0+bnJf
ZW50cykKPiArCj4gKy8qIE51bWJlciBvZiBmcmVlIHJlcXVlc3RzIChmb3IgdXNlIG9uIGZyb250
IHNpZGUgb25seSkuICovCj4gKyNkZWZpbmUgUklOR19GUkVFX1JFUVVFU1RTKF9yKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChSSU5HX1NJWkUoX3Ip
IC0gKChfciktPnJlcV9wcm9kX3B2dCAtIChfciktPnJzcF9jb25zKSkKPiArCj4gKy8qIFRlc3Qg
aWYgdGhlcmUgaXMgYW4gZW1wdHkgc2xvdCBhdmFpbGFibGUgb24gdGhlIGZyb250IHJpbmcuCj4g
KyAqIChUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmcm9tIHRoZSBmcm9udC4gKQo+ICsgKi8KPiAr
I2RlZmluZSBSSU5HX0ZVTEwoX3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgKFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgPT0gMCkKPiAr
Cj4gKy8qIFRlc3QgaWYgdGhlcmUgYXJlIG91dHN0YW5kaW5nIG1lc3NhZ2VzIHRvIGJlIHByb2Nl
c3NlZCBvbiBhIHJpbmcuICovCj4gKyNkZWZpbmUgUklOR19IQVNfVU5DT05TVU1FRF9SRVNQT05T
RVMoX3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICgoX3IpLT5zcmlu
Zy0+cnNwX3Byb2QgLSAoX3IpLT5yc3BfY29ucykKPiArCj4gKyNpZmRlZiBfX0dOVUNfXwo+ICsj
ZGVmaW5lIFJJTkdfSEFTX1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICBVSU5UMzIgcmVxID0gKF9yKS0+c3JpbmctPnJlcV9wcm9k
IC0gKF9yKS0+cmVxX2NvbnM7ICAgICAgICAgIFwKPiArICAgIFVJTlQzMiByc3AgPSBSSU5HX1NJ
WkUoX3IpIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICgo
X3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICByZXEgPCByc3AgPyByZXEgOiByc3A7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfSkKPiArI2Vsc2UKPiArLyogU2FtZSBhcyBh
Ym92ZSwgYnV0IHdpdGhvdXQgdGhlIG5pY2UgR0NDICh7IC4uLiB9KSBzeW50YXguICovCj4gKyNk
ZWZpbmUgUklOR19IQVNfVU5DT05TVU1FRF9SRVFVRVNUUyhfcikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKPiArICAgICgoKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJl
cV9jb25zKSA8ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAoUklOR19TSVpFKF9y
KSAtICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCkpKSA/ICAgICAgICBcCj4g
KyAgICAgKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zKSA6ICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAoUklOR19TSVpFKF9yKSAtICgoX3IpLT5yZXFfY29u
cyAtIChfciktPnJzcF9wcm9kX3B2dCkpKQo+ICsjZW5kaWYKPiArCj4gKy8qIERpcmVjdCBhY2Nl
c3MgdG8gaW5kaXZpZHVhbCByaW5nIGVsZW1lbnRzLCBieSBpbmRleC4gKi8KPiArI2RlZmluZSBS
SU5HX0dFVF9SRVFVRVNUKF9yLCBfaWR4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgKCYoKF9yKS0+c3JpbmctPnJpbmdbKChfaWR4KSAmIChSSU5HX1NJWkUo
X3IpIC0gMSkpXS5yZXEpKQo+ICsKPiArI2RlZmluZSBSSU5HX0dFVF9SRVNQT05TRShfciwgX2lk
eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgKCYoKF9yKS0+
c3JpbmctPnJpbmdbKChfaWR4KSAmIChSSU5HX1NJWkUoX3IpIC0gMSkpXS5yc3ApKQo+ICsKPiAr
LyogTG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb246IFdvdWxkIHRoZSBzcGVjaWZpZWQgaW5kZXgg
b3ZlcmZsb3cgdGhlIHJpbmc/ICovCj4gKyNkZWZpbmUgUklOR19SRVFVRVNUX0NPTlNfT1ZFUkZM
T1coX3IsIF9jb25zKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICgoKF9jb25z
KSAtIChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklOR19TSVpFKF9yKSkKPiArCj4gKy8qIElsbC1i
ZWhhdmVkIGZyb250ZW5kIGRldGVybWluYXRpb246IENhbiB0aGVyZSBiZSB0aGlzIG1hbnkgcmVx
dWVzdHM/ICovCj4gKyNkZWZpbmUgUklOR19SRVFVRVNUX1BST0RfT1ZFUkZMT1coX3IsIF9wcm9k
KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICgoKF9wcm9kKSAtIChfciktPnJz
cF9wcm9kX3B2dCkgPiBSSU5HX1NJWkUoX3IpKQo+ICsKPiArI2RlZmluZSBSSU5HX1BVU0hfUkVR
VUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVzdHMgL2JlZm9yZS8gdXBkYXRlZCBwcm9k
dWNlciBpbmRleCAqLyBcCj4gKyAgICAoX3IpLT5zcmluZy0+cmVxX3Byb2QgPSAoX3IpLT5yZXFf
cHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfSB3aGlsZSAoMCkKPiArCj4g
KyNkZWZpbmUgUklOR19QVVNIX1JFU1BPTlNFUyhfcikgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNwcyAv
YmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAo+ICsgICAgKF9yKS0+c3Jpbmct
PnJzcF9wcm9kID0gKF9yKS0+cnNwX3Byb2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK30gd2hpbGUgKDApCj4gKwo+ICsvKgo+ICsgKiBOb3RpZmljYXRpb24gaG9sZC1vZmYgKHJl
cV9ldmVudCBhbmQgcnNwX2V2ZW50KToKPiArICogCj4gKyAqIFdoZW4gcXVldWVpbmcgcmVxdWVz
dHMgb3IgcmVzcG9uc2VzIG9uIGEgc2hhcmVkIHJpbmcsIGl0IG1heSBub3QgYWx3YXlzIGJlCj4g
KyAqIG5lY2Vzc2FyeSB0byBub3RpZnkgdGhlIHJlbW90ZSBlbmQuIEZvciBleGFtcGxlLCBpZiBy
ZXF1ZXN0cyBhcmUgaW4gZmxpZ2h0Cj4gKyAqIGluIGEgYmFja2VuZCwgdGhlIGZyb250IG1heSBi
ZSBhYmxlIHRvIHF1ZXVlIGZ1cnRoZXIgcmVxdWVzdHMgd2l0aG91dAo+ICsgKiBub3RpZnlpbmcg
dGhlIGJhY2sgKGlmIHRoZSBiYWNrIGNoZWNrcyBmb3IgbmV3IHJlcXVlc3RzIHdoZW4gaXQgcXVl
dWVzCj4gKyAqIHJlc3BvbnNlcykuCj4gKyAqIAo+ICsgKiBXaGVuIGVucXVldWluZyByZXF1ZXN0
cyBvciByZXNwb25zZXM6Cj4gKyAqIAo+ICsgKiAgVXNlIFJJTkdfUFVTSF97UkVRVUVTVFMsUkVT
UE9OU0VTfV9BTkRfQ0hFQ0tfTk9USUZZKCkuIFRoZSBzZWNvbmQgYXJndW1lbnQKPiArICogIGlz
IGEgYm9vbGVhbiByZXR1cm4gdmFsdWUuIFRydWUgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY2VpdmVy
IHJlcXVpcmVzIGFuCj4gKyAqICBhc3luY2hyb25vdXMgbm90aWZpY2F0aW9uLgo+ICsgKiAKPiAr
ICogQWZ0ZXIgZGVxdWV1aW5nIHJlcXVlc3RzIG9yIHJlc3BvbnNlcyAoYmVmb3JlIHNsZWVwaW5n
IHRoZSBjb25uZWN0aW9uKToKPiArICogCj4gKyAqICBVc2UgUklOR19GSU5BTF9DSEVDS19GT1Jf
UkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoKS4KPiArICogIFRo
ZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBib29sZWFuIHJldHVybiB2YWx1ZS4gVHJ1ZSBpbmRpY2F0
ZXMgdGhhdCB0aGVyZQo+ICsgKiAgYXJlIHBlbmRpbmcgbWVzc2FnZXMgb24gdGhlIHJpbmcgKGku
ZS4sIHRoZSBjb25uZWN0aW9uIHNob3VsZCBub3QgYmUgcHV0Cj4gKyAqICB0byBzbGVlcCkuCj4g
KyAqIAo+ICsgKiAgVGhlc2UgbWFjcm9zIHdpbGwgc2V0IHRoZSByZXFfZXZlbnQvcnNwX2V2ZW50
IGZpZWxkIHRvIHRyaWdnZXIgYQo+ICsgKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5IG5leHQg
bWVzc2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bwo+ICsgKiAgY3JlYXRlIGJh
dGNoZXMgb2Ygd29yayAoaS5lLiwgb25seSByZWNlaXZlIGEgbm90aWZpY2F0aW9uIGFmdGVyIHNl
dmVyYWwKPiArICogIG1lc3NhZ2VzIGhhdmUgYmVlbiBlbnF1ZXVlZCkgdGhlbiB5b3Ugd2lsbCBu
ZWVkIHRvIGNyZWF0ZSBhIGN1c3RvbWlzZWQKPiArICogIHZlcnNpb24gb2YgdGhlIEZJTkFMX0NI
RUNLIG1hY3JvIGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlIGV2ZW50Cj4gKyAqICBm
aWVsZCBhcHByb3ByaWF0ZWx5Lgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgUklOR19QVVNIX1JFUVVF
U1RTX0FORF9DSEVDS19OT1RJRlkoX3IsIF9ub3RpZnkpIGRvIHsgICAgICAgICAgIFwKPiArICAg
IFJJTkdfSURYIF9fb2xkID0gKF9yKS0+c3JpbmctPnJlcV9wcm9kOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgUklOR19JRFggX19uZXcgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICB4ZW5fd21iKCk7IC8qIGJh
Y2sgc2VlcyByZXF1ZXN0cyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovIFwKPiAr
ICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9IF9fbmV3OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgeGVuX21iKCk7IC8qIGJhY2sgc2VlcyBuZXcgcmVxdWVz
dHMgL2JlZm9yZS8gd2UgY2hlY2sgcmVxX2V2ZW50ICovICBcCj4gKyAgICAoX25vdGlmeSkgPSAo
KFJJTkdfSURYKShfX25ldyAtIChfciktPnNyaW5nLT5yZXFfZXZlbnQpIDwgICAgICAgICAgIFwK
PiArICAgICAgICAgICAgICAgICAoUklOR19JRFgpKF9fbmV3IC0gX19vbGQpKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICt9IHdoaWxlICgwKQo+ICsKPiArI2RlZmluZSBSSU5HX1BV
U0hfUkVTUE9OU0VTX0FORF9DSEVDS19OT1RJRlkoX3IsIF9ub3RpZnkpIGRvIHsgICAgICAgICAg
XAo+ICsgICAgUklOR19JRFggX19vbGQgPSAoX3IpLT5zcmluZy0+cnNwX3Byb2Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICBSSU5HX0lEWCBfX25ldyA9IChfciktPnJzcF9w
cm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIHhlbl93bWIo
KTsgLyogZnJvbnQgc2VlcyByZXNwcyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICov
ICAgXAo+ICsgICAgKF9yKS0+c3JpbmctPnJzcF9wcm9kID0gX19uZXc7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICB4ZW5fbWIoKTsgLyogZnJvbnQgc2VlcyBu
ZXcgcmVzcHMgL2JlZm9yZS8gd2UgY2hlY2sgcnNwX2V2ZW50ICovICAgIFwKPiArICAgIChfbm90
aWZ5KSA9ICgoUklOR19JRFgpKF9fbmV3IC0gKF9yKS0+c3JpbmctPnJzcF9ldmVudCkgPCAgICAg
ICAgICAgXAo+ICsgICAgICAgICAgICAgICAgIChSSU5HX0lEWCkoX19uZXcgLSBfX29sZCkpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30gd2hpbGUgKDApCj4gKwo+ICsjZGVmaW5l
IFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKF9yLCBfd29ya190b19kbykgZG8geyAgICAg
ICAgICAgICBcCj4gKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19IQVNfVU5DT05TVU1FRF9SRVFV
RVNUUyhfcik7ICAgICAgICAgICAgICAgICAgIFwKPiArICAgIGlmIChfd29ya190b19kbykgYnJl
YWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
KF9yKS0+c3JpbmctPnJlcV9ldmVudCA9IChfciktPnJlcV9jb25zICsgMTsgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICB4ZW5fbWIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChfd29ya190b19kbykgPSBS
SU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKF9yKTsgICAgICAgICAgICAgICAgICAgXAo+ICt9
IHdoaWxlICgwKQo+ICsKPiArI2RlZmluZSBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMo
X3IsIF93b3JrX3RvX2RvKSBkbyB7ICAgICAgICAgICAgXAo+ICsgICAgKF93b3JrX3RvX2RvKSA9
IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCj4g
KyAgICBpZiAoX3dvcmtfdG9fZG8pIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgIChfciktPnNyaW5nLT5yc3BfZXZlbnQgPSAoX3IpLT5y
c3BfY29ucyArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgeGVuX21iKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19IQVNfVU5DT05TVU1FRF9SRVNQT05TRVMoX3Ip
OyAgICAgICAgICAgICAgICAgIFwKPiArfSB3aGlsZSAoMCkKPiArCj4gKyNlbmRpZiAvKiBfX1hF
Tl9QVUJMSUNfSU9fUklOR19IX18gKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlhYmxlczoK
PiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFzaWMtb2Zm
c2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiAr
ICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh
bmRhcmQvWGVuL2lvL3hlbmJ1cy5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQv
WGVuL2lvL3hlbmJ1cy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45
MjdmOWRiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0
YW5kYXJkL1hlbi9pby94ZW5idXMuaAo+IEBAIC0wLDAgKzEsODAgQEAKPiArLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCj4gKyAqIHhlbmJ1cy5oCj4gKyAqCj4gKyAqIFhlbmJ1cyBwcm90b2NvbCBkZXRh
aWxzLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiArICog
c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiAr
ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4g
KyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
Rwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICoK
PiArICogQ29weXJpZ2h0IChDKSAyMDA1IFhlblNvdXJjZSBMdGQuCj4gKyAqLwo+ICsKPiArI2lm
bmRlZiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSAo+ICsjZGVmaW5lIF9YRU5fUFVCTElDX0lPX1hF
TkJVU19ICj4gKwo+ICsvKgo+ICsgKiBUaGUgc3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVu
YnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11bmljYXRpb24KPiArICogc3RhdHVzIG9mIGluaXRp
YWxpc2F0aW9uIGFjcm9zcyB0aGUgYnVzLiAgU3RhdGVzIGhlcmUgaW1wbHkgbm90aGluZyBhYm91
dAo+ICsgKiB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFu
ZCB0aGUga2VybmVsJ3MgZGV2aWNlCj4gKyAqIGxheWVycy4KPiArICovCj4gK2VudW0geGVuYnVz
X3N0YXRlIHsKPiArICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAgICA9IDAsCj4gKwo+ICsgICAg
WGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgID0gMSwKPiArCj4gKyAgICAvKgo+ICsgICAgICogSW5p
dFdhaXQ6IEZpbmlzaGVkIGVhcmx5IGluaXRpYWxpc2F0aW9uIGJ1dCB3YWl0aW5nIGZvciBpbmZv
cm1hdGlvbgo+ICsgICAgICogZnJvbSB0aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMuCj4gKyAg
ICAgKi8KPiArICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQgICAgICA9IDIsCj4gKwo+ICsgICAgLyoK
PiArICAgICAqIEluaXRpYWxpc2VkOiBXYWl0aW5nIGZvciBhIGNvbm5lY3Rpb24gZnJvbSB0aGUg
cGVlci4KPiArICAgICAqLwo+ICsgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNlZCAgID0gMywKPiAr
Cj4gKyAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAo+ICsKPiArICAgIC8qCj4gKyAg
ICAgKiBDbG9zaW5nOiBUaGUgZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8gYW4gZXJyb3Ig
b3IgYW4gdW5wbHVnIGV2ZW50Lgo+ICsgICAgICovCj4gKyAgICBYZW5idXNTdGF0ZUNsb3Npbmcg
ICAgICAgPSA1LAo+ICsKPiArICAgIFhlbmJ1c1N0YXRlQ2xvc2VkICAgICAgICA9IDYsCj4gKwo+
ICsgICAgLyoKPiArICAgICAqIFJlY29uZmlndXJpbmc6IFRoZSBkZXZpY2UgaXMgYmVpbmcgcmVj
b25maWd1cmVkLgo+ICsgICAgICovCj4gKyAgICBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgPSA3
LAo+ICsKPiArICAgIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkICA9IDgKPiArfTsKPiArdHlwZWRl
ZiBlbnVtIHhlbmJ1c19zdGF0ZSBYZW5idXNTdGF0ZTsKPiArCj4gKyNlbmRpZiAvKiBfWEVOX1BV
QkxJQ19JT19YRU5CVVNfSCAqLwo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsg
KiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6
IDQKPiArICogdGFiLXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBF
bmQ6Cj4gKyAqLwo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy
ZC9YZW4vaW8veHNfd2lyZS5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVu
L2lvL3hzX3dpcmUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNGE5
ZTY2Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu
ZGFyZC9YZW4vaW8veHNfd2lyZS5oCj4gQEAgLTAsMCArMSwxMzggQEAKPiArLyoKPiArICogRGV0
YWlscyBvZiB0aGUgIndpcmUiIHByb3RvY29sIGJldHdlZW4gWGVuIFN0b3JlIERhZW1vbiBhbmQg
Y2xpZW50Cj4gKyAqIGxpYnJhcnkgb3IgZ3Vlc3Qga2VybmVsLgo+ICsgKgo+ICsgKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiArICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICog
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
PiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICog
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAq
IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDA1
IFJ1c3R5IFJ1c3NlbGwgSUJNIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfWFNf
V0lSRV9ICj4gKyNkZWZpbmUgX1hTX1dJUkVfSAo+ICsKPiArZW51bSB4c2Rfc29ja21zZ190eXBl
Cj4gK3sKPiArICAgIFhTX0RFQlVHLAo+ICsgICAgWFNfRElSRUNUT1JZLAo+ICsgICAgWFNfUkVB
RCwKPiArICAgIFhTX0dFVF9QRVJNUywKPiArICAgIFhTX1dBVENILAo+ICsgICAgWFNfVU5XQVRD
SCwKPiArICAgIFhTX1RSQU5TQUNUSU9OX1NUQVJULAo+ICsgICAgWFNfVFJBTlNBQ1RJT05fRU5E
LAo+ICsgICAgWFNfSU5UUk9EVUNFLAo+ICsgICAgWFNfUkVMRUFTRSwKPiArICAgIFhTX0dFVF9E
T01BSU5fUEFUSCwKPiArICAgIFhTX1dSSVRFLAo+ICsgICAgWFNfTUtESVIsCj4gKyAgICBYU19S
TSwKPiArICAgIFhTX1NFVF9QRVJNUywKPiArICAgIFhTX1dBVENIX0VWRU5ULAo+ICsgICAgWFNf
RVJST1IsCj4gKyAgICBYU19JU19ET01BSU5fSU5UUk9EVUNFRCwKPiArICAgIFhTX1JFU1VNRSwK
PiArICAgIFhTX1NFVF9UQVJHRVQsCj4gKyAgICBYU19SRVNUUklDVCwKPiArICAgIFhTX1JFU0VU
X1dBVENIRVMKPiArfTsKPiArCj4gKyNkZWZpbmUgWFNfV1JJVEVfTk9ORSAiTk9ORSIKPiArI2Rl
ZmluZSBYU19XUklURV9DUkVBVEUgIkNSRUFURSIKPiArI2RlZmluZSBYU19XUklURV9DUkVBVEVf
RVhDTCAiQ1JFQVRFfEVYQ0wiCj4gKwo+ICsvKiBXZSBoYW5kIGVycm9ycyBhcyBzdHJpbmdzLCBm
b3IgcG9ydGFiaWxpdHkuICovCj4gK3N0cnVjdCB4c2RfZXJyb3JzCj4gK3sKPiArICAgIElOVDMy
IGVycm51bTsKPiArICAgIGNvbnN0IENIQVI4ICplcnJzdHJpbmc7Cj4gK307Cj4gKyNpZmRlZiBF
SU5WQUwKPiArI2RlZmluZSBYU0RfRVJST1IoeCkgeyB4LCAjeCB9Cj4gKy8qIExJTlRFRDogc3Rh
dGljIHVudXNlZCAqLwo+ICtzdGF0aWMgc3RydWN0IHhzZF9lcnJvcnMgeHNkX2Vycm9yc1tdCj4g
KyNpZiBkZWZpbmVkKF9fR05VQ19fKQo+ICtfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ICsjZW5k
aWYKPiArICAgID0gewo+ICsgICAgWFNEX0VSUk9SKEVJTlZBTCksCj4gKyAgICBYU0RfRVJST1Io
RUFDQ0VTKSwKPiArICAgIFhTRF9FUlJPUihFRVhJU1QpLAo+ICsgICAgWFNEX0VSUk9SKEVJU0RJ
UiksCj4gKyAgICBYU0RfRVJST1IoRU5PRU5UKSwKPiArICAgIFhTRF9FUlJPUihFTk9NRU0pLAo+
ICsgICAgWFNEX0VSUk9SKEVOT1NQQyksCj4gKyAgICBYU0RfRVJST1IoRUlPKSwKPiArICAgIFhT
RF9FUlJPUihFTk9URU1QVFkpLAo+ICsgICAgWFNEX0VSUk9SKEVOT1NZUyksCj4gKyAgICBYU0Rf
RVJST1IoRVJPRlMpLAo+ICsgICAgWFNEX0VSUk9SKEVCVVNZKSwKPiArICAgIFhTRF9FUlJPUihF
QUdBSU4pLAo+ICsgICAgWFNEX0VSUk9SKEVJU0NPTk4pLAo+ICsgICAgWFNEX0VSUk9SKEUyQklH
KQo+ICt9Owo+ICsjZW5kaWYKPiArCj4gK3N0cnVjdCB4c2Rfc29ja21zZwo+ICt7Cj4gKyAgICBV
SU5UMzIgdHlwZTsgIC8qIFhTXz8/PyAqLwo+ICsgICAgVUlOVDMyIHJlcV9pZDsvKiBSZXF1ZXN0
IGlkZW50aWZpZXIsIGVjaG9lZCBpbiBkYWVtb24ncyByZXNwb25zZS4gICovCj4gKyAgICBVSU5U
MzIgdHhfaWQ7IC8qIFRyYW5zYWN0aW9uIGlkICgwIGlmIG5vdCByZWxhdGVkIHRvIGEgdHJhbnNh
Y3Rpb24pLiAqLwo+ICsgICAgVUlOVDMyIGxlbjsgICAvKiBMZW5ndGggb2YgZGF0YSBmb2xsb3dp
bmcgdGhpcy4gKi8KPiArCj4gKyAgICAvKiBHZW5lcmFsbHkgZm9sbG93ZWQgYnkgbnVsLXRlcm1p
bmF0ZWQgc3RyaW5nKHMpLiAqLwo+ICt9Owo+ICsKPiArZW51bSB4c193YXRjaF90eXBlCj4gK3sK
PiArICAgIFhTX1dBVENIX1BBVEggPSAwLAo+ICsgICAgWFNfV0FUQ0hfVE9LRU4KPiArfTsKPiAr
Cj4gKy8qCj4gKyAqIGBpbmNvbnRlbnRzIDE1MCB4ZW5zdG9yZV9zdHJ1Y3QgWGVuU3RvcmUgd2ly
ZSBwcm90b2NvbC4KPiArICoKPiArICogSW50ZXItZG9tYWluIHNoYXJlZCBtZW1vcnkgY29tbXVu
aWNhdGlvbnMuICovCj4gKyNkZWZpbmUgWEVOU1RPUkVfUklOR19TSVpFIDEwMjQKPiArdHlwZWRl
ZiBVSU5UMzIgWEVOU1RPUkVfUklOR19JRFg7Cj4gKyNkZWZpbmUgTUFTS19YRU5TVE9SRV9JRFgo
aWR4KSAoKGlkeCkgJiAoWEVOU1RPUkVfUklOR19TSVpFLTEpKQo+ICtzdHJ1Y3QgeGVuc3RvcmVf
ZG9tYWluX2ludGVyZmFjZSB7Cj4gKyAgICBDSEFSOCByZXFbWEVOU1RPUkVfUklOR19TSVpFXTsg
LyogUmVxdWVzdHMgdG8geGVuc3RvcmUgZGFlbW9uLiAqLwo+ICsgICAgQ0hBUjggcnNwW1hFTlNU
T1JFX1JJTkdfU0laRV07IC8qIFJlcGxpZXMgYW5kIGFzeW5jIHdhdGNoIGV2ZW50cy4gKi8KPiAr
ICAgIFhFTlNUT1JFX1JJTkdfSURYIHJlcV9jb25zLCByZXFfcHJvZDsKPiArICAgIFhFTlNUT1JF
X1JJTkdfSURYIHJzcF9jb25zLCByc3BfcHJvZDsKPiArfTsKPiArCj4gKy8qIFZpb2xhdGluZyB0
aGlzIGlzIHZlcnkgYmFkLiAgU2VlIGRvY3MvbWlzYy94ZW5zdG9yZS50eHQuICovCj4gKyNkZWZp
bmUgWEVOU1RPUkVfUEFZTE9BRF9NQVggNDA5Ngo+ICsKPiArLyogVmlvbGF0aW5nIHRoZXNlIGp1
c3QgZ2V0cyB5b3UgYW4gZXJyb3IgYmFjayAqLwo+ICsjZGVmaW5lIFhFTlNUT1JFX0FCU19QQVRI
X01BWCAzMDcyCj4gKyNkZWZpbmUgWEVOU1RPUkVfUkVMX1BBVEhfTUFYIDIwNDgKPiArCj4gKyNl
bmRpZiAvKiBfWFNfV0lSRV9IICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4g
KyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNl
dDogNAo+ICsgKiB0YWItd2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAq
IEVuZDoKPiArICovCj4gZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5k
YXJkL1hlbi9tZW1vcnkuaCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9t
ZW1vcnkuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOTNiNzNiNQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Y
ZW4vbWVtb3J5LmgKPiBAQCAtMCwwICsxLDQ4MCBAQAo+ICsvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Cj4gKyAqIG1lbW9yeS5oCj4gKyAqIAo+ICsgKiBNZW1vcnkgcmVzZXJ2YXRpb24gYW5kIGluZm9y
bWF0aW9uLgo+ICsgKiAKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4g
KyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu
Cj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4g
KyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNSwgS2VpciBGcmFzZXIgPGtlaXJAeGVuc291cmNl
LmNvbT4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19NRU1PUllfSF9fCj4gKyNk
ZWZpbmUgX19YRU5fUFVCTElDX01FTU9SWV9IX18KPiArCj4gKyNpbmNsdWRlICJ4ZW4uaCIKPiAr
Cj4gKy8qCj4gKyAqIEluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZSBzcGVjaWZpZWQgZG9tYWluJ3Mg
bWVtb3J5IHJlc2VydmF0aW9uLiBSZXR1cm5zIHRoZQo+ICsgKiBudW1iZXIgb2YgZXh0ZW50cyBz
dWNjZXNzZnVsbHkgYWxsb2NhdGVkIG9yIGZyZWVkLgo+ICsgKiBhcmcgPT0gYWRkciBvZiBzdHJ1
Y3QgeGVuX21lbW9yeV9yZXNlcnZhdGlvbi4KPiArICovCj4gKyNkZWZpbmUgWEVOTUVNX2luY3Jl
YXNlX3Jlc2VydmF0aW9uIDAKPiArI2RlZmluZSBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24g
MQo+ICsjZGVmaW5lIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwICAgICA2Cj4gKwo+ICsjaWYgX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjA5Cj4gKy8qCj4gKyAqIE1heGltdW0g
IyBiaXRzIGFkZHJlc3NhYmxlIGJ5IHRoZSB1c2VyIG9mIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIChl
LmcuLCBJL08gCj4gKyAqIGRldmljZXMgb2Z0ZW4gaGF2ZSBhIDMyLWJpdCBsaW1pdGF0aW9uIGV2
ZW4gaW4gNjQtYml0IHN5c3RlbXMpLiBJZiB6ZXJvIAo+ICsgKiB0aGVuIHRoZSB1c2VyIGhhcyBu
byBhZGRyZXNzaW5nIHJlc3RyaWN0aW9uLiBUaGlzIGZpZWxkIGlzIG5vdCB1c2VkIGJ5IAo+ICsg
KiBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24uCj4gKyAqLwo+ICsjZGVmaW5lIFhFTk1FTUZf
YWRkcmVzc19iaXRzKHgpICAgICAoeCkKPiArI2RlZmluZSBYRU5NRU1GX2dldF9hZGRyZXNzX2Jp
dHMoeCkgKCh4KSAmIDB4ZmZ1KQo+ICsvKiBOVU1BIG5vZGUgdG8gYWxsb2NhdGUgZnJvbS4gKi8K
PiArI2RlZmluZSBYRU5NRU1GX25vZGUoeCkgICAgICgoKHgpICsgMSkgPDwgOCkKPiArI2RlZmlu
ZSBYRU5NRU1GX2dldF9ub2RlKHgpICgoKCh4KSA+PiA4KSAtIDEpICYgMHhmZnUpCj4gKy8qIEZs
YWcgdG8gcG9wdWxhdGUgcGh5c21hcCB3aXRoIHBvcHVsYXRlLW9uLWRlbWFuZCBlbnRyaWVzICov
Cj4gKyNkZWZpbmUgWEVOTUVNRl9wb3B1bGF0ZV9vbl9kZW1hbmQgKDE8PDE2KQo+ICsvKiBGbGFn
IHRvIHJlcXVlc3QgYWxsb2NhdGlvbiBvbmx5IGZyb20gdGhlIG5vZGUgc3BlY2lmaWVkICovCj4g
KyNkZWZpbmUgWEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QgICgxPDwxNykKPiArI2RlZmluZSBY
RU5NRU1GX2V4YWN0X25vZGUobikgKFhFTk1FTUZfbm9kZShuKSB8IFhFTk1FTUZfZXhhY3Rfbm9k
ZV9yZXF1ZXN0KQo+ICsjZW5kaWYKPiArCj4gK3N0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9u
IHsKPiArCj4gKyAgICAvKgo+ICsgICAgICogWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uOgo+
ICsgICAgICogICBPVVQ6IE1GTiAoKm5vdCogR01GTikgYmFzZXMgb2YgZXh0ZW50cyB0aGF0IHdl
cmUgYWxsb2NhdGVkCj4gKyAgICAgKiBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb246Cj4gKyAg
ICAgKiAgIElOOiAgR01GTiBiYXNlcyBvZiBleHRlbnRzIHRvIGZyZWUKPiArICAgICAqIFhFTk1F
TV9wb3B1bGF0ZV9waHlzbWFwOgo+ICsgICAgICogICBJTjogIEdQRk4gYmFzZXMgb2YgZXh0ZW50
cyB0byBwb3B1bGF0ZSB3aXRoIG1lbW9yeQo+ICsgICAgICogICBPVVQ6IEdNRk4gYmFzZXMgb2Yg
ZXh0ZW50cyB0aGF0IHdlcmUgYWxsb2NhdGVkCj4gKyAgICAgKiAgIChOQi4gVGhpcyBjb21tYW5k
IGFsc28gdXBkYXRlcyB0aGUgbWFjaF90b19waHlzIHRyYW5zbGF0aW9uIHRhYmxlKQo+ICsgICAg
ICogWEVOTUVNX2NsYWltX3BhZ2VzOgo+ICsgICAgICogICBJTjogbXVzdCBiZSB6ZXJvCj4gKyAg
ICAgKi8KPiArICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Bmbl90KSBleHRlbnRfc3RhcnQ7Cj4g
Kwo+ICsgICAgLyogTnVtYmVyIG9mIGV4dGVudHMsIGFuZCBzaXplL2FsaWdubWVudCBvZiBlYWNo
ICgyXmV4dGVudF9vcmRlciBwYWdlcykuICovCj4gKyAgICB4ZW5fdWxvbmdfdCAgICBucl9leHRl
bnRzOwo+ICsgICAgVUlOVDMyICAgZXh0ZW50X29yZGVyOwo+ICsKPiArI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwOQo+ICsgICAgLyogWEVOTUVNRiBmbGFncy4gKi8K
PiArICAgIFVJTlQzMiAgIG1lbV9mbGFnczsKPiArI2Vsc2UKPiArICAgIFVJTlQzMiAgIGFkZHJl
c3NfYml0czsKPiArI2VuZGlmCj4gKwo+ICsgICAgLyoKPiArICAgICAqIERvbWFpbiB3aG9zZSBy
ZXNlcnZhdGlvbiBpcyBiZWluZyBjaGFuZ2VkLgo+ICsgICAgICogVW5wcml2aWxlZ2VkIGRvbWFp
bnMgY2FuIHNwZWNpZnkgb25seSBET01JRF9TRUxGLgo+ICsgICAgICovCj4gKyAgICBkb21pZF90
ICAgICAgICBkb21pZDsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbW9yeV9yZXNlcnZh
dGlvbiB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9tZW1vcnlfcmVzZXJ2YXRpb25fdCk7Cj4gKwo+ICsvKgo+ICsgKiBBbiBhdG9taWMgZXhj
aGFuZ2Ugb2YgbWVtb3J5IHBhZ2VzLiBJZiByZXR1cm4gY29kZSBpcyB6ZXJvIHRoZW4KPiArICog
QG91dC5leHRlbnRfbGlzdCBwcm92aWRlcyBHTUZOcyBvZiB0aGUgbmV3bHktYWxsb2NhdGVkIG1l
bW9yeS4KPiArICogUmV0dXJucyB6ZXJvIG9uIGNvbXBsZXRlIHN1Y2Nlc3MsIG90aGVyd2lzZSBh
IG5lZ2F0aXZlIGVycm9yIGNvZGUuCj4gKyAqIE9uIGNvbXBsZXRlIHN1Y2Nlc3MgdGhlbiBhbHdh
eXMgQG5yX2V4Y2hhbmdlZCA9PSBAaW4ubnJfZXh0ZW50cy4KPiArICogT24gcGFydGlhbCBzdWNj
ZXNzIEBucl9leGNoYW5nZWQgaW5kaWNhdGVzIGhvdyBtdWNoIHdvcmsgd2FzIGRvbmUuCj4gKyAq
Lwo+ICsjZGVmaW5lIFhFTk1FTV9leGNoYW5nZSAgICAgICAgICAgICAxMQo+ICtzdHJ1Y3QgeGVu
X21lbW9yeV9leGNoYW5nZSB7Cj4gKyAgICAvKgo+ICsgICAgICogW0lOXSBEZXRhaWxzIG9mIG1l
bW9yeSBleHRlbnRzIHRvIGJlIGV4Y2hhbmdlZCAoR01GTiBiYXNlcykuCj4gKyAgICAgKiBOb3Rl
IHRoYXQgQGluLmFkZHJlc3NfYml0cyBpcyBpZ25vcmVkIGFuZCB1bnVzZWQuCj4gKyAgICAgKi8K
PiArICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIGluOwo+ICsKPiArICAgIC8qCj4g
KyAgICAgKiBbSU4vT1VUXSBEZXRhaWxzIG9mIG5ldyBtZW1vcnkgZXh0ZW50cy4KPiArICAgICAq
IFdlIHJlcXVpcmUgdGhhdDoKPiArICAgICAqICAxLiBAaW4uZG9taWQgPT0gQG91dC5kb21pZAo+
ICsgICAgICogIDIuIEBpbi5ucl9leHRlbnRzICA8PCBAaW4uZXh0ZW50X29yZGVyID09IAo+ICsg
ICAgICogICAgIEBvdXQubnJfZXh0ZW50cyA8PCBAb3V0LmV4dGVudF9vcmRlcgo+ICsgICAgICog
IDMuIEBpbi5leHRlbnRfc3RhcnQgYW5kIEBvdXQuZXh0ZW50X3N0YXJ0IGxpc3RzIG11c3Qgbm90
IG92ZXJsYXAKPiArICAgICAqICA0LiBAb3V0LmV4dGVudF9zdGFydCBsaXN0cyBHUEZOIGJhc2Vz
IHRvIGJlIHBvcHVsYXRlZAo+ICsgICAgICogIDUuIEBvdXQuZXh0ZW50X3N0YXJ0IGlzIG92ZXJ3
cml0dGVuIHdpdGggYWxsb2NhdGVkIEdNRk4gYmFzZXMKPiArICAgICAqLwo+ICsgICAgc3RydWN0
IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gb3V0Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBbT1VU
XSBOdW1iZXIgb2YgaW5wdXQgZXh0ZW50cyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bGx5IGV4Y2hhbmdl
ZDoKPiArICAgICAqICAxLiBUaGUgZmlyc3QgQG5yX2V4Y2hhbmdlZCBpbnB1dCBleHRlbnRzIHdl
cmUgc3VjY2Vzc2Z1bGx5Cj4gKyAgICAgKiAgICAgZGVhbGxvY2F0ZWQuCj4gKyAgICAgKiAgMi4g
VGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgZW50cmllcyBpbiB0aGUgb3V0cHV0IGV4dGVudCBsaXN0
IGNvcnJlY3RseQo+ICsgICAgICogICAgIGluZGljYXRlIHRoZSBHTUZOcyB0aGF0IHdlcmUgc3Vj
Y2Vzc2Z1bGx5IGV4Y2hhbmdlZC4KPiArICAgICAqICAzLiBBbGwgb3RoZXIgaW5wdXQgYW5kIG91
dHB1dCBleHRlbnRzIGFyZSB1bnRvdWNoZWQuCj4gKyAgICAgKiAgNC4gSWYgbm90IGFsbCBpbnB1
dCBleGVudHMgYXJlIGV4Y2hhbmdlZCB0aGVuIHRoZSByZXR1cm4gY29kZSBvZiB0aGlzCj4gKyAg
ICAgKiAgICAgY29tbWFuZCB3aWxsIGJlIG5vbi16ZXJvLgo+ICsgICAgICogIDUuIFRISVMgRklF
TEQgTVVTVCBCRSBJTklUSUFMSVNFRCBUTyBaRVJPIEJZIFRIRSBDQUxMRVIhCj4gKyAgICAgKi8K
PiArICAgIHhlbl91bG9uZ190IG5yX2V4Y2hhbmdlZDsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3Qg
eGVuX21lbW9yeV9leGNoYW5nZSB4ZW5fbWVtb3J5X2V4Y2hhbmdlX3Q7Cj4gK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHhlbl9tZW1vcnlfZXhjaGFuZ2VfdCk7Cj4gKwo+ICsvKgo+ICsgKiBSZXR1
cm5zIHRoZSBtYXhpbXVtIG1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG1hcHBlZCBSQU0gaW4gdGhp
cyBzeXN0ZW0uCj4gKyAqIFRoaXMgY29tbWFuZCBhbHdheXMgc3VjY2VlZHMgKGl0IG5ldmVyIHJl
dHVybnMgYW4gZXJyb3IgY29kZSkuCj4gKyAqIGFyZyA9PSBOVUxMLgo+ICsgKi8KPiArI2RlZmlu
ZSBYRU5NRU1fbWF4aW11bV9yYW1fcGFnZSAgICAgMgo+ICsKPiArLyoKPiArICogUmV0dXJucyB0
aGUgY3VycmVudCBvciBtYXhpbXVtIG1lbW9yeSByZXNlcnZhdGlvbiwgaW4gcGFnZXMsIG9mIHRo
ZQo+ICsgKiBzcGVjaWZpZWQgZG9tYWluIChtYXkgYmUgRE9NSURfU0VMRikuIFJldHVybnMgLXZl
IGVycmNvZGUgb24gZmFpbHVyZS4KPiArICogYXJnID09IGFkZHIgb2YgZG9taWRfdC4KPiArICov
Cj4gKyNkZWZpbmUgWEVOTUVNX2N1cnJlbnRfcmVzZXJ2YXRpb24gIDMKPiArI2RlZmluZSBYRU5N
RU1fbWF4aW11bV9yZXNlcnZhdGlvbiAgNAo+ICsKPiArLyoKPiArICogUmV0dXJucyB0aGUgbWF4
aW11bSBHUEZOIGluIHVzZSBieSB0aGUgZ3Vlc3QsIG9yIC12ZSBlcnJjb2RlIG9uIGZhaWx1cmUu
Cj4gKyAqLwo+ICsjZGVmaW5lIFhFTk1FTV9tYXhpbXVtX2dwZm4gICAgICAgICAxNAo+ICsKPiAr
LyoKPiArICogUmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzIG9mIDJNQiBleHRlbnRzIGNvbXBy
aXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cwo+ICsgKiBtYXBwaW5nIHRhYmxlLiBBcmNoaXRlY3R1
cmVzIHdoaWNoIGRvIG5vdCBoYXZlIGEgbTJwIHRhYmxlIGRvIG5vdCBpbXBsZW1lbnQKPiArICog
dGhpcyBjb21tYW5kLgo+ICsgKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWZuX2xpc3Rf
dC4KPiArICovCj4gKyNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX21mbl9saXN0ICAgIDUKPiArc3Ry
dWN0IHhlbl9tYWNocGh5c19tZm5fbGlzdCB7Cj4gKyAgICAvKgo+ICsgICAgICogU2l6ZSBvZiB0
aGUgJ2V4dGVudF9zdGFydCcgYXJyYXkuIEZld2VyIGVudHJpZXMgd2lsbCBiZSBmaWxsZWQgaWYg
dGhlCj4gKyAgICAgKiBtYWNocGh5cyB0YWJsZSBpcyBzbWFsbGVyIHRoYW4gbWF4X2V4dGVudHMg
KiAyTUIuCj4gKyAgICAgKi8KPiArICAgIFVJTlQzMiBtYXhfZXh0ZW50czsKPiArCj4gKyAgICAv
Kgo+ICsgICAgICogUG9pbnRlciB0byBidWZmZXIgdG8gZmlsbCB3aXRoIGxpc3Qgb2YgZXh0ZW50
IHN0YXJ0cy4gSWYgdGhlcmUgYXJlCj4gKyAgICAgKiBhbnkgbGFyZ2UgZGlzY29udGlndWl0aWVz
IGluIHRoZSBtYWNoaW5lIGFkZHJlc3Mgc3BhY2UsIDJNQiBnYXBzIGluCj4gKyAgICAgKiB0aGUg
bWFjaHBoeXMgdGFibGUgd2lsbCBiZSByZXByZXNlbnRlZCBieSBhbiBNRk4gYmFzZSBvZiB6ZXJv
Lgo+ICsgICAgICovCj4gKyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0
YXJ0Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBOdW1iZXIgb2YgZXh0ZW50cyB3cml0dGVuIHRv
IHRoZSBhYm92ZSBhcnJheS4gVGhpcyB3aWxsIGJlIHNtYWxsZXIKPiArICAgICAqIHRoYW4gJ21h
eF9leHRlbnRzJyBpZiB0aGUgbWFjaHBoeXMgdGFibGUgaXMgc21hbGxlciB0aGFuIG1heF9lICog
Mk1CLgo+ICsgICAgICovCj4gKyAgICBVSU5UMzIgbnJfZXh0ZW50czsKPiArfTsKPiArdHlwZWRl
ZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21mbl9saXN0IHhlbl9tYWNocGh5c19tZm5fbGlzdF90Owo+
ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWFjaHBoeXNfbWZuX2xpc3RfdCk7Cj4gKwo+
ICsvKgo+ICsgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBpbiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2Ug
b2YgdGhlIG1hY2hpbmVfdG9fcGh5cwo+ICsgKiBtYXBwaW5nIHRhYmxlLiBBcmNoaXRlY3R1cmVz
IHdoaWNoIGRvIG5vdCBoYXZlIGEgbTJwIHRhYmxlLCBvciB3aGljaCBkbyBub3QKPiArICogbWFw
IGl0IGJ5IGRlZmF1bHQgaW50byBndWVzdCBhZGRyZXNzIHNwYWNlLCBkbyBub3QgaW1wbGVtZW50
IHRoaXMgY29tbWFuZC4KPiArICogYXJnID09IGFkZHIgb2YgeGVuX21hY2hwaHlzX21hcHBpbmdf
dC4KPiArICovCj4gKyNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX21hcHBpbmcgICAgIDEyCj4gK3N0
cnVjdCB4ZW5fbWFjaHBoeXNfbWFwcGluZyB7Cj4gKyAgICB4ZW5fdWxvbmdfdCB2X3N0YXJ0LCB2
X2VuZDsgLyogU3RhcnQgYW5kIGVuZCB2aXJ0dWFsIGFkZHJlc3Nlcy4gICAqLwo+ICsgICAgeGVu
X3Vsb25nX3QgbWF4X21mbjsgICAgICAgIC8qIE1heGltdW0gTUZOIHRoYXQgY2FuIGJlIGxvb2tl
ZCB1cC4gKi8KPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21hcHBpbmcgeGVu
X21hY2hwaHlzX21hcHBpbmdfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21hY2hw
aHlzX21hcHBpbmdfdCk7Cj4gKwo+ICsvKiBTb3VyY2UgbWFwcGluZyBzcGFjZS4gKi8KPiArLyog
YCBlbnVtIHBoeXNfbWFwX3NwYWNlIHsgKi8KPiArI2RlZmluZSBYRU5NQVBTUEFDRV9zaGFyZWRf
aW5mbyAgMCAvKiBzaGFyZWQgaW5mbyBwYWdlICovCj4gKyNkZWZpbmUgWEVOTUFQU1BBQ0VfZ3Jh
bnRfdGFibGUgIDEgLyogZ3JhbnQgdGFibGUgcGFnZSAqLwo+ICsjZGVmaW5lIFhFTk1BUFNQQUNF
X2dtZm4gICAgICAgICAyIC8qIEdNRk4gKi8KPiArI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuX3Jh
bmdlICAgMyAvKiBHTUZOIHJhbmdlLCBYRU5NRU1fYWRkX3RvX3BoeXNtYXAgb25seS4gKi8KPiAr
I2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuX2ZvcmVpZ24gNCAvKiBHTUZOIGZyb20gYW5vdGhlciBk
b20sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogWEVOTUVNX2FkZF90
b19waHlzbWFwX2JhdGNoIG9ubHkuICovCj4gKy8qIGAgfSAqLwo+ICsKPiArLyoKPiArICogU2V0
cyB0aGUgR1BGTiBhdCB3aGljaCBhIHBhcnRpY3VsYXIgcGFnZSBhcHBlYXJzIGluIHRoZSBzcGVj
aWZpZWQgZ3Vlc3Qncwo+ICsgKiBwc2V1ZG9waHlzaWNhbCBhZGRyZXNzIHNwYWNlLgo+ICsgKiBh
cmcgPT0gYWRkciBvZiB4ZW5fYWRkX3RvX3BoeXNtYXBfdC4KPiArICovCj4gKyNkZWZpbmUgWEVO
TUVNX2FkZF90b19waHlzbWFwICAgICAgNwo+ICtzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwIHsK
PiArICAgIC8qIFdoaWNoIGRvbWFpbiB0byBjaGFuZ2UgdGhlIG1hcHBpbmcgZm9yLiAqLwo+ICsg
ICAgZG9taWRfdCBkb21pZDsKPiArCj4gKyAgICAvKiBOdW1iZXIgb2YgcGFnZXMgdG8gZ28gdGhy
b3VnaCBmb3IgZ21mbl9yYW5nZSAqLwo+ICsgICAgVUlOVDE2ICAgIHNpemU7Cj4gKwo+ICsgICAg
VUlOVDMyIHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFwX3NwYWNlICovCj4gKwo+ICsjZGVmaW5l
IFhFTk1BUElEWF9ncmFudF90YWJsZV9zdGF0dXMgMHg4MDAwMDAwMAo+ICsKPiArICAgIC8qIElu
ZGV4IGludG8gc3BhY2UgYmVpbmcgbWFwcGVkLiAqLwo+ICsgICAgeGVuX3Vsb25nX3QgaWR4Owo+
ICsKPiArICAgIC8qIEdQRk4gaW4gZG9taWQgd2hlcmUgdGhlIHNvdXJjZSBtYXBwaW5nIHBhZ2Ug
c2hvdWxkIGFwcGVhci4gKi8KPiArICAgIHhlbl9wZm5fdCAgICAgZ3BmbjsKPiArfTsKPiArdHlw
ZWRlZiBzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwIHhlbl9hZGRfdG9fcGh5c21hcF90Owo+ICtE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRkX3RvX3BoeXNtYXBfdCk7Cj4gKwo+ICsvKiBB
IGJhdGNoZWQgdmVyc2lvbiBvZiBhZGRfdG9fcGh5c21hcC4gKi8KPiArI2RlZmluZSBYRU5NRU1f
YWRkX3RvX3BoeXNtYXBfYmF0Y2ggMjMKPiArc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9iYXRj
aCB7Cj4gKyAgICAvKiBJTiAqLwo+ICsgICAgLyogV2hpY2ggZG9tYWluIHRvIGNoYW5nZSB0aGUg
bWFwcGluZyBmb3IuICovCj4gKyAgICBkb21pZF90IGRvbWlkOwo+ICsgICAgVUlOVDE2IHNwYWNl
OyAvKiA9PiBlbnVtIHBoeXNfbWFwX3NwYWNlICovCj4gKwo+ICsgICAgLyogTnVtYmVyIG9mIHBh
Z2VzIHRvIGdvIHRocm91Z2ggKi8KPiArICAgIFVJTlQxNiBzaXplOwo+ICsgICAgZG9taWRfdCBm
b3JlaWduX2RvbWlkOyAvKiBJRkYgZ21mbl9mb3JlaWduICovCj4gKwo+ICsgICAgLyogSW5kZXhl
cyBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KPiArICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVu
X3Vsb25nX3QpIGlkeHM7Cj4gKwo+ICsgICAgLyogR1BGTiBpbiBkb21pZCB3aGVyZSB0aGUgc291
cmNlIG1hcHBpbmcgcGFnZSBzaG91bGQgYXBwZWFyLiAqLwo+ICsgICAgWEVOX0dVRVNUX0hBTkRM
RSh4ZW5fcGZuX3QpIGdwZm5zOwo+ICsKPiArICAgIC8qIE9VVCAqLwo+ICsKPiArICAgIC8qIFBl
ciBpbmRleCBlcnJvciBjb2RlLiAqLwo+ICsgICAgWEVOX0dVRVNUX0hBTkRMRShJTlQzMikgZXJy
czsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwX2JhdGNoIHhlbl9h
ZGRfdG9fcGh5c21hcF9iYXRjaF90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRk
X3RvX3BoeXNtYXBfYmF0Y2hfdCk7Cj4gKwo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05f
XyA8IDB4MDAwNDA0MDAKPiArI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXBfcmFuZ2UgWEVO
TUVNX2FkZF90b19waHlzbWFwX2JhdGNoCj4gKyNkZWZpbmUgeGVuX2FkZF90b19waHlzbWFwX3Jh
bmdlIHhlbl9hZGRfdG9fcGh5c21hcF9iYXRjaAo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3Rv
X3BoeXNtYXBfYmF0Y2ggeGVuX2FkZF90b19waHlzbWFwX3JhbmdlX3Q7Cj4gK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHhlbl9hZGRfdG9fcGh5c21hcF9yYW5nZV90KTsKPiArI2VuZGlmCj4gKwo+
ICsvKgo+ICsgKiBVbm1hcHMgdGhlIHBhZ2UgYXBwZWFyaW5nIGF0IGEgcGFydGljdWxhciBHUEZO
IGZyb20gdGhlIHNwZWNpZmllZCBndWVzdCdzCj4gKyAqIHBzZXVkb3BoeXNpY2FsIGFkZHJlc3Mg
c3BhY2UuCj4gKyAqIGFyZyA9PSBhZGRyIG9mIHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QuCj4g
KyAqLwo+ICsjZGVmaW5lIFhFTk1FTV9yZW1vdmVfZnJvbV9waHlzbWFwICAgICAgMTUKPiArc3Ry
dWN0IHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwIHsKPiArICAgIC8qIFdoaWNoIGRvbWFpbiB0byBj
aGFuZ2UgdGhlIG1hcHBpbmcgZm9yLiAqLwo+ICsgICAgZG9taWRfdCBkb21pZDsKPiArCj4gKyAg
ICAvKiBHUEZOIG9mIHRoZSBjdXJyZW50IG1hcHBpbmcgb2YgdGhlIHBhZ2UuICovCj4gKyAgICB4
ZW5fcGZuX3QgICAgIGdwZm47Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhlbl9yZW1vdmVfZnJv
bV9waHlzbWFwIHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QpOwo+ICsKPiArLyoqKiBSRU1PVkVEICoq
Ki8KPiArLyojZGVmaW5lIFhFTk1FTV90cmFuc2xhdGVfZ3Bmbl9saXN0ICA4Ki8KPiArCj4gKy8q
Cj4gKyAqIFJldHVybnMgdGhlIHBzZXVkby1waHlzaWNhbCBtZW1vcnkgbWFwIGFzIGl0IHdhcyB3
aGVuIHRoZSBkb21haW4KPiArICogd2FzIHN0YXJ0ZWQgKHNwZWNpZmllZCBieSBYRU5NRU1fc2V0
X21lbW9yeV9tYXApLgo+ICsgKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWVtb3J5X21hcF90Lgo+ICsg
Ki8KPiArI2RlZmluZSBYRU5NRU1fbWVtb3J5X21hcCAgICAgICAgICAgOQo+ICtzdHJ1Y3QgeGVu
X21lbW9yeV9tYXAgewo+ICsgICAgLyoKPiArICAgICAqIE9uIGNhbGwgdGhlIG51bWJlciBvZiBl
bnRyaWVzIHdoaWNoIGNhbiBiZSBzdG9yZWQgaW4gYnVmZmVyLiBPbgo+ICsgICAgICogcmV0dXJu
IHRoZSBudW1iZXIgb2YgZW50cmllcyB3aGljaCBoYXZlIGJlZW4gc3RvcmVkIGluCj4gKyAgICAg
KiBidWZmZXIuCj4gKyAgICAgKi8KPiArICAgIFVJTlQzMiBucl9lbnRyaWVzOwo+ICsKPiArICAg
IC8qCj4gKyAgICAgKiBFbnRyaWVzIGluIHRoZSBidWZmZXIgYXJlIGluIHRoZSBzYW1lIGZvcm1h
dCBhcyByZXR1cm5lZCBieSB0aGUKPiArICAgICAqIEJJT1MgSU5UIDB4MTUgRUFYPTB4RTgyMCBj
YWxsLgo+ICsgICAgICovCj4gKyAgICBYRU5fR1VFU1RfSEFORExFKFZPSUQpIGJ1ZmZlcjsKPiAr
fTsKPiArdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbW9yeV9tYXAgeGVuX21lbW9yeV9tYXBfdDsKPiAr
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21lbW9yeV9tYXBfdCk7Cj4gKwo+ICsvKgo+ICsg
KiBSZXR1cm5zIHRoZSByZWFsIHBoeXNpY2FsIG1lbW9yeSBtYXAuIFBhc3NlcyB0aGUgc2FtZSBz
dHJ1Y3R1cmUgYXMKPiArICogWEVOTUVNX21lbW9yeV9tYXAuCj4gKyAqIGFyZyA9PSBhZGRyIG9m
IHhlbl9tZW1vcnlfbWFwX3QuCj4gKyAqLwo+ICsjZGVmaW5lIFhFTk1FTV9tYWNoaW5lX21lbW9y
eV9tYXAgICAxMAo+ICsKPiArLyoKPiArICogU2V0IHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWVtb3J5
IG1hcCBvZiBhIGRvbWFpbiwgYXMgcmV0dXJuZWQgYnkKPiArICogWEVOTUVNX21lbW9yeV9tYXAu
Cj4gKyAqIGFyZyA9PSBhZGRyIG9mIHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdC4KPiArICovCj4g
KyNkZWZpbmUgWEVOTUVNX3NldF9tZW1vcnlfbWFwICAgICAgIDEzCj4gK3N0cnVjdCB4ZW5fZm9y
ZWlnbl9tZW1vcnlfbWFwIHsKPiArICAgIGRvbWlkX3QgZG9taWQ7Cj4gKyAgICBzdHJ1Y3QgeGVu
X21lbW9yeV9tYXAgbWFwOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fZm9yZWlnbl9tZW1v
cnlfbWFwIHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdDsKPiArREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoeGVuX2ZvcmVpZ25fbWVtb3J5X21hcF90KTsKPiArCj4gKyNkZWZpbmUgWEVOTUVNX3NldF9w
b2RfdGFyZ2V0ICAgICAgIDE2Cj4gKyNkZWZpbmUgWEVOTUVNX2dldF9wb2RfdGFyZ2V0ICAgICAg
IDE3Cj4gK3N0cnVjdCB4ZW5fcG9kX3RhcmdldCB7Cj4gKyAgICAvKiBJTiAqLwo+ICsgICAgVUlO
VDY0IHRhcmdldF9wYWdlczsKPiArICAgIC8qIE9VVCAqLwo+ICsgICAgVUlOVDY0IHRvdF9wYWdl
czsKPiArICAgIFVJTlQ2NCBwb2RfY2FjaGVfcGFnZXM7Cj4gKyAgICBVSU5UNjQgcG9kX2VudHJp
ZXM7Cj4gKyAgICAvKiBJTiAqLwo+ICsgICAgZG9taWRfdCBkb21pZDsKPiArfTsKPiArdHlwZWRl
ZiBzdHJ1Y3QgeGVuX3BvZF90YXJnZXQgeGVuX3BvZF90YXJnZXRfdDsKPiArCj4gKyNpZiBkZWZp
bmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKPiArCj4gKyNpZm5kZWYgdWlu
dDY0X2FsaWduZWRfdAo+ICsjZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgVUlOVDY0Cj4gKyNlbmRp
Zgo+ICsKPiArLyoKPiArICogR2V0IHRoZSBudW1iZXIgb2YgTUZOcyBzYXZlZCB0aHJvdWdoIG1l
bW9yeSBzaGFyaW5nLgo+ICsgKiBUaGUgY2FsbCBuZXZlciBmYWlscy4gCj4gKyAqLwo+ICsjZGVm
aW5lIFhFTk1FTV9nZXRfc2hhcmluZ19mcmVlZF9wYWdlcyAgICAxOAo+ICsjZGVmaW5lIFhFTk1F
TV9nZXRfc2hhcmluZ19zaGFyZWRfcGFnZXMgICAxOQo+ICsKPiArI2RlZmluZSBYRU5NRU1fcGFn
aW5nX29wICAgICAgICAgICAgICAgICAgICAyMAo+ICsjZGVmaW5lIFhFTk1FTV9wYWdpbmdfb3Bf
bm9taW5hdGUgICAgICAgICAgIDAKPiArI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX2V2aWN0ICAg
ICAgICAgICAgICAxCj4gKyNkZWZpbmUgWEVOTUVNX3BhZ2luZ19vcF9wcmVwICAgICAgICAgICAg
ICAgMgo+ICsKPiArI2RlZmluZSBYRU5NRU1fYWNjZXNzX29wICAgICAgICAgICAgICAgICAgICAy
MQo+ICsjZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3BfcmVzdW1lICAgICAgICAgICAgIDAKPiArCj4g
K3N0cnVjdCB4ZW5fbWVtX2V2ZW50X29wIHsKPiArICAgIFVJTlQ4ICAgICBvcDsgICAgICAgICAv
KiBYRU5NRU1fKl9vcF8qICovCj4gKyAgICBkb21pZF90ICAgICBkb21haW47Cj4gKyAgICAKPiAr
Cj4gKyAgICAvKiBQQUdJTkdfUFJFUCBJTjogYnVmZmVyIHRvIGltbWVkaWF0ZWx5IGZpbGwgcGFn
ZSBpbiAqLwo+ICsgICAgdWludDY0X2FsaWduZWRfdCAgICBidWZmZXI7Cj4gKyAgICAvKiBPdGhl
ciBPUHMgKi8KPiArICAgIHVpbnQ2NF9hbGlnbmVkX3QgICAgZ2ZuOyAgICAgICAgICAgLyogSU46
ICBnZm4gb2YgcGFnZSBiZWluZyBvcGVyYXRlZCBvbiAqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVj
dCB4ZW5fbWVtX2V2ZW50X29wIHhlbl9tZW1fZXZlbnRfb3BfdDsKPiArREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoeGVuX21lbV9ldmVudF9vcF90KTsKPiArCj4gKyNkZWZpbmUgWEVOTUVNX3NoYXJp
bmdfb3AgICAgICAgICAgICAgICAgICAgMjIKPiArI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9u
b21pbmF0ZV9nZm4gICAgICAwCj4gKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Bfbm9taW5hdGVf
Z3JlZiAgICAgMQo+ICsjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3NoYXJlICAgICAgICAgICAg
IDIKPiArI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9yZXN1bWUgICAgICAgICAgICAzCj4gKyNk
ZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ2ZuICAgICAgICAgNAo+ICsjZGVmaW5lIFhF
Tk1FTV9zaGFyaW5nX29wX2RlYnVnX21mbiAgICAgICAgIDUKPiArI2RlZmluZSBYRU5NRU1fc2hh
cmluZ19vcF9kZWJ1Z19ncmVmICAgICAgICA2Cj4gKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Bf
YWRkX3BoeXNtYXAgICAgICAgNwo+ICsjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2F1ZGl0ICAg
ICAgICAgICAgIDgKPiArCj4gKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfU19IQU5ETEVfSU5W
QUxJRCAgKC0xMCkKPiArI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9DX0hBTkRMRV9JTlZBTElE
ICAoLTkpCj4gKwo+ICsvKiBUaGUgZm9sbG93aW5nIGFsbG93cyBzaGFyaW5nIG9mIGdyYW50IHJl
ZnMuIFRoaXMgaXMgdXNlZnVsCj4gKyAqIGZvciBzaGFyaW5nIHV0aWxpdGllcyBzaXR0aW5nIGFz
ICJmaWx0ZXJzIiBpbiBJTyBiYWNrZW5kcwo+ICsgKiAoZS5nLiBtZW1zaHIgKyBibGt0YXAoMikp
LiBUaGUgSU8gYmFja2VuZCBpcyBvbmx5IGV4cG9zZWQgCj4gKyAqIHRvIGdyYW50IHJlZmVyZW5j
ZXMsIGFuZCB0aGlzIGFsbG93cyBzaGFyaW5nIG9mIHRoZSBncmVmcyAqLwo+ICsjZGVmaW5lIFhF
Tk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUZfRkxBRyAgICgxVUxMIDw8IDYyKQo+ICsKPiAr
I2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9NQUtFX0dSRUYoZmllbGQsIHZhbCkgIFwK
PiArICAgIChmaWVsZCkgPSAoWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfSVNfR1JFRl9GTEFHIHwg
dmFsKQo+ICsjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUYoZmllbGQpICAg
ICAgICAgXAo+ICsgICAgKChmaWVsZCkgJiBYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVG
X0ZMQUcpCj4gKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfR0VUX0dSRUYoZmllbGQp
ICAgICAgICBcCj4gKyAgICAoKGZpZWxkKSAmICh+WEVOTUVNX1NIQVJJTkdfT1BfRklFTERfSVNf
R1JFRl9GTEFHKSkKPiArCj4gK3N0cnVjdCB4ZW5fbWVtX3NoYXJpbmdfb3Agewo+ICsgICAgVUlO
VDggICAgIG9wOyAgICAgLyogWEVOTUVNX3NoYXJpbmdfb3BfKiAqLwo+ICsgICAgZG9taWRfdCAg
ICAgZG9tYWluOwo+ICsKPiArICAgIHVuaW9uIHsKPiArICAgICAgICBzdHJ1Y3QgbWVtX3NoYXJp
bmdfb3Bfbm9taW5hdGUgeyAgLyogT1BfTk9NSU5BVEVfeHh4ICAgICAgICAgICAqLwo+ICsgICAg
ICAgICAgICB1bmlvbiB7Cj4gKyAgICAgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IGdmbjsg
ICAgIC8qIElOOiBnZm4gdG8gbm9taW5hdGUgICAgICAgKi8KPiArICAgICAgICAgICAgICAgIFVJ
TlQzMiAgICAgIGdyYW50X3JlZjsgIC8qIElOOiBncmFudCByZWYgdG8gbm9taW5hdGUgKi8KPiAr
ICAgICAgICAgICAgfSB1Owo+ICsgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90ICBoYW5kbGU7
ICAgICAvKiBPVVQ6IHRoZSBoYW5kbGUgICAgICAgICAgICovCj4gKyAgICAgICAgfSBub21pbmF0
ZTsKPiArICAgICAgICBzdHJ1Y3QgbWVtX3NoYXJpbmdfb3Bfc2hhcmUgeyAgICAgLyogT1BfU0hB
UkUvQUREX1BIWVNNQVAgKi8KPiArICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBzb3VyY2Vf
Z2ZuOyAgICAvKiBJTjogdGhlIGdmbiBvZiB0aGUgc291cmNlIHBhZ2UgKi8KPiArICAgICAgICAg
ICAgdWludDY0X2FsaWduZWRfdCBzb3VyY2VfaGFuZGxlOyAvKiBJTjogaGFuZGxlIHRvIHRoZSBz
b3VyY2UgcGFnZSAqLwo+ICsgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IGNsaWVudF9nZm47
ICAgIC8qIElOOiB0aGUgY2xpZW50IGdmbiAqLwo+ICsgICAgICAgICAgICB1aW50NjRfYWxpZ25l
ZF90IGNsaWVudF9oYW5kbGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIGNsaWVudCBwYWdlICovCj4g
KyAgICAgICAgICAgIGRvbWlkX3QgIGNsaWVudF9kb21haW47IC8qIElOOiB0aGUgY2xpZW50IGRv
bWFpbiBpZCAqLwo+ICsgICAgICAgIH0gc2hhcmU7IAo+ICsgICAgICAgIHN0cnVjdCBtZW1fc2hh
cmluZ19vcF9kZWJ1ZyB7ICAgICAvKiBPUF9ERUJVR194eHggKi8KPiArICAgICAgICAgICAgdW5p
b24gewo+ICsgICAgICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBnZm47ICAgICAgLyogSU46
IGdmbiB0byBkZWJ1ZyAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgdWludDY0X2FsaWdu
ZWRfdCBtZm47ICAgICAgLyogSU46IG1mbiB0byBkZWJ1ZyAgICAgICAgICAqLwo+ICsgICAgICAg
ICAgICAgICAgVUlOVDMyIGdyZWY7ICAgICAvKiBJTjogZ3JlZiB0byBkZWJ1ZyAgICAgICAgICov
Cj4gKyAgICAgICAgICAgIH0gdTsKPiArICAgICAgICB9IGRlYnVnOwo+ICsgICAgfSB1Owo+ICt9
Owo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fbWVtX3NoYXJpbmdfb3AgeGVuX21lbV9zaGFyaW5nX29w
X3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1fc2hhcmluZ19vcF90KTsKPiAr
Cj4gKy8qCj4gKyAqIEF0dGVtcHQgdG8gc3Rha2UgYSBjbGFpbSBmb3IgYSBkb21haW4gb24gYSBx
dWFudGl0eSBvZiBwYWdlcwo+ICsgKiBvZiBzeXN0ZW0gUkFNLCBidXQgX25vdF8gYXNzaWduIHNw
ZWNpZmljIHBhZ2VmcmFtZXMuICBPbmx5Cj4gKyAqIGFyaXRobWV0aWMgaXMgcGVyZm9ybWVkIHNv
IHRoZSBoeXBlcmNhbGwgaXMgdmVyeSBmYXN0IGFuZCBuZWVkCj4gKyAqIG5vdCBiZSBwcmVlbXB0
aWJsZSwgdGh1cyBzaWRlc3RlcHBpbmcgdGltZS1vZi1jaGVjay10aW1lLW9mLXVzZQo+ICsgKiBy
YWNlcyBmb3IgbWVtb3J5IGFsbG9jYXRpb24uICBSZXR1cm5zIDAgaWYgdGhlIGh5cGVydmlzb3Ig
cGFnZQo+ICsgKiBhbGxvY2F0b3IgaGFzIGF0b21pY2FsbHkgYW5kIHN1Y2Nlc3NmdWxseSBjbGFp
bWVkIHRoZSByZXF1ZXN0ZWQKPiArICogbnVtYmVyIG9mIHBhZ2VzLCBlbHNlIG5vbi16ZXJvLgo+
ICsgKgo+ICsgKiBBbnkgZG9tYWluIG1heSBoYXZlIG9ubHkgb25lIGFjdGl2ZSBjbGFpbS4gIFdo
ZW4gc3VmZmljaWVudCBtZW1vcnkKPiArICogaGFzIGJlZW4gYWxsb2NhdGVkIHRvIHJlc29sdmUg
dGhlIGNsYWltLCB0aGUgY2xhaW0gc2lsZW50bHkgZXhwaXJlcy4KPiArICogQ2xhaW1pbmcgemVy
byBwYWdlcyBlZmZlY3RpdmVseSByZXNldHMgYW55IG91dHN0YW5kaW5nIGNsYWltIGFuZAo+ICsg
KiBpcyBhbHdheXMgc3VjY2Vzc2Z1bC4KPiArICoKPiArICogTm90ZSB0aGF0IGEgdmFsaWQgY2xh
aW0gbWF5IGJlIHN0YWtlZCBldmVuIGFmdGVyIG1lbW9yeSBoYXMgYmVlbgo+ICsgKiBhbGxvY2F0
ZWQgZm9yIGEgZG9tYWluLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2xhaW0gaXMgbm90IGluY3JlbWVu
dGFsLAo+ICsgKiBpLmUuIGlmIHRoZSBkb21haW4ncyB0b3RfcGFnZXMgaXMgMywgYW5kIGEgY2xh
aW0gaXMgc3Rha2VkIGZvciAxMCwKPiArICogb25seSA3IGFkZGl0aW9uYWwgcGFnZXMgYXJlIGNs
YWltZWQuCj4gKyAqCj4gKyAqIENhbGxlciBtdXN0IGJlIHByaXZpbGVnZWQgb3IgdGhlIGh5cGVy
Y2FsbCBmYWlscy4KPiArICovCj4gKyNkZWZpbmUgWEVOTUVNX2NsYWltX3BhZ2VzICAgICAgICAg
ICAgICAgICAgMjQKPiArCj4gKy8qCj4gKyAqIFhFTk1FTV9jbGFpbV9wYWdlcyBmbGFncyAtIHRo
ZSBhcmUgbm8gZmxhZ3MgYXQgdGhpcyB0aW1lLgo+ICsgKiBUaGUgemVybyB2YWx1ZSBpcyBhcHBy
b3BpYXRlLgo+ICsgKi8KPiArCj4gKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmlu
ZWQoX19YRU5fVE9PTFNfXykgKi8KPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfTUVNT1JZ
X0hfXyAqLwo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4g
KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogdGFi
LXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAqLwo+
IGRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vc2NoZWQu
aCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9zY2hlZC5oCj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5iOTMxMjNmCj4gLS0tIC9kZXYvbnVsbAo+
ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1hlbi9zY2hlZC5oCj4gQEAg
LTAsMCArMSwxNzQgQEAKPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiBzY2hlZC5oCj4g
KyAqCj4gKyAqIFNjaGVkdWxlciBzdGF0ZSBpbnRlcmFjdGlvbnMKPiArICoKPiArICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD
T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsg
KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAw
NSwgS2VpciBGcmFzZXIgPGtlaXJAeGVuc291cmNlLmNvbT4KPiArICovCj4gKwo+ICsjaWZuZGVm
IF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfU0NIRURfSF9f
Cj4gKwo+ICsjaW5jbHVkZSAiZXZlbnRfY2hhbm5lbC5oIgo+ICsKPiArLyoKPiArICogYGluY29u
dGVudHMgMTUwIHNjaGVkIEd1ZXN0IFNjaGVkdWxlciBPcGVyYXRpb25zCj4gKyAqCj4gKyAqIFRo
ZSBTQ0hFRE9QIGludGVyZmFjZSBwcm92aWRlcyBtZWNoYW5pc21zIGZvciBhIGd1ZXN0IHRvIGlu
dGVyYWN0Cj4gKyAqIHdpdGggdGhlIHNjaGVkdWxlciwgaW5jbHVkaW5nIHlpZWxkLCBibG9ja2lu
ZyBhbmQgc2h1dHRpbmcgaXRzZWxmCj4gKyAqIGRvd24uCj4gKyAqLwo+ICsKPiArLyoKPiArICog
VGhlIHByb3RvdHlwZSBmb3IgdGhpcyBoeXBlcmNhbGwgaXM6Cj4gKyAqIGAgSU5UTiBIWVBFUlZJ
U09SX3NjaGVkX29wKGVudW0gc2NoZWRfb3AgY21kLCBWT0lEICphcmcsIC4uLikKPiArICoKPiAr
ICogQGNtZCA9PSBTQ0hFRE9QXz8/PyAoc2NoZWR1bGVyIG9wZXJhdGlvbikuCj4gKyAqIEBhcmcg
PT0gT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3VtZW50KHMpLCBhcyBkZXNjcmliZWQgYmVs
b3cuCj4gKyAqIC4uLiAgPT0gQWRkaXRpb25hbCBPcGVyYXRpb24tc3BlY2lmaWMgZXh0cmEgYXJn
dW1lbnRzLCBkZXNjcmliZWQgYmVsb3cuCj4gKyAqCj4gKyAqIFZlcnNpb25zIG9mIFhlbiBwcmlv
ciB0byAzLjAuMiBwcm92aWRlZCBvbmx5IHRoZSBmb2xsb3dpbmcgbGVnYWN5IHZlcnNpb24KPiAr
ICogb2YgdGhpcyBoeXBlcmNhbGwsIHN1cHBvcnRpbmcgb25seSB0aGUgY29tbWFuZHMgeWllbGQs
IGJsb2NrIGFuZCBzaHV0ZG93bjoKPiArICogIElOVE4gc2NoZWRfb3AoSU5UMzIgY21kLCBVSU5U
TiBhcmcpCj4gKyAqIEBjbWQgPT0gU0NIRURPUF8/Pz8gKHNjaGVkdWxlciBvcGVyYXRpb24pLgo+
ICsgKiBAYXJnID09IDAgICAgICAgICAgICAgICAoU0NIRURPUF95aWVsZCBhbmQgU0NIRURPUF9i
bG9jaykKPiArICogICAgICA9PSBTSFVURE9XTl8qIGNvZGUgKFNDSEVET1Bfc2h1dGRvd24pCj4g
KyAqCj4gKyAqIFRoaXMgbGVnYWN5IHZlcnNpb24gaXMgYXZhaWxhYmxlIHRvIG5ldyBndWVzdHMg
YXM6Cj4gKyAqIGAgSU5UTiBIWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdChlbnVtIHNjaGVkX29w
IGNtZCwgVUlOVE4gYXJnKQo+ICsgKi8KPiArCj4gKy8qIGAgZW51bSBzY2hlZF9vcCB7IC8vIFND
SEVET1BfKiA9PiBzdHJ1Y3Qgc2NoZWRfKiAqLwo+ICsvKgo+ICsgKiBWb2x1bnRhcmlseSB5aWVs
ZCB0aGUgQ1BVLgo+ICsgKiBAYXJnID09IE5VTEwuCj4gKyAqLwo+ICsjZGVmaW5lIFNDSEVET1Bf
eWllbGQgICAgICAgMAo+ICsKPiArLyoKPiArICogQmxvY2sgZXhlY3V0aW9uIG9mIHRoaXMgVkNQ
VSB1bnRpbCBhbiBldmVudCBpcyByZWNlaXZlZCBmb3IgcHJvY2Vzc2luZy4KPiArICogSWYgY2Fs
bGVkIHdpdGggZXZlbnQgdXBjYWxscyBtYXNrZWQsIHRoaXMgb3BlcmF0aW9uIHdpbGwgYXRvbWlj
YWxseQo+ICsgKiByZWVuYWJsZSBldmVudCBkZWxpdmVyeSBhbmQgY2hlY2sgZm9yIHBlbmRpbmcg
ZXZlbnRzIGJlZm9yZSBibG9ja2luZyB0aGUKPiArICogVkNQVS4gVGhpcyBhdm9pZHMgYSAid2Fr
ZXVwIHdhaXRpbmciIHJhY2UuCj4gKyAqIEBhcmcgPT0gTlVMTC4KPiArICovCj4gKyNkZWZpbmUg
U0NIRURPUF9ibG9jayAgICAgICAxCj4gKwo+ICsvKgo+ICsgKiBIYWx0IGV4ZWN1dGlvbiBvZiB0
aGlzIGRvbWFpbiAoYWxsIFZDUFVzKSBhbmQgbm90aWZ5IHRoZSBzeXN0ZW0gY29udHJvbGxlci4K
PiArICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3NodXRkb3duX3Qgc3RydWN0dXJlLgo+ICsg
Kgo+ICsgKiBJZiB0aGUgc2NoZWRfc2h1dGRvd25fdCByZWFzb24gaXMgU0hVVERPV05fc3VzcGVu
ZCB0aGVuIHRoaXMKPiArICogaHlwZXJjYWxsIHRha2VzIGFuIGFkZGl0aW9uYWwgZXh0cmEgYXJn
dW1lbnQgd2hpY2ggc2hvdWxkIGJlIHRoZQo+ICsgKiBNRk4gb2YgdGhlIGd1ZXN0J3Mgc3RhcnRf
aW5mb190Lgo+ICsgKgo+ICsgKiBJbiBhZGRpdGlvbiwgd2hpY2ggcmVhc29uIGlzIFNIVVRET1dO
X3N1c3BlbmQgdGhpcyBoeXBlcmNhbGwKPiArICogcmV0dXJucyAxIGlmIHN1c3BlbmQgd2FzIGNh
bmNlbGxlZCBvciB0aGUgZG9tYWluIHdhcyBtZXJlbHkKPiArICogY2hlY2twb2ludGVkLCBhbmQg
MCBpZiBpdCBpcyByZXN1bWluZyBpbiBhIG5ldyBkb21haW4uCj4gKyAqLwo+ICsjZGVmaW5lIFND
SEVET1Bfc2h1dGRvd24gICAgMgo+ICsKPiArLyoKPiArICogUG9sbCBhIHNldCBvZiBldmVudC1j
aGFubmVsIHBvcnRzLiBSZXR1cm4gd2hlbiBvbmUgb3IgbW9yZSBhcmUgcGVuZGluZy4gQW4KPiAr
ICogb3B0aW9uYWwgdGltZW91dCBtYXkgYmUgc3BlY2lmaWVkLgo+ICsgKiBAYXJnID09IHBvaW50
ZXIgdG8gc2NoZWRfcG9sbF90IHN0cnVjdHVyZS4KPiArICovCj4gKyNkZWZpbmUgU0NIRURPUF9w
b2xsICAgICAgICAzCj4gKwo+ICsvKgo+ICsgKiBEZWNsYXJlIGEgc2h1dGRvd24gZm9yIGFub3Ro
ZXIgZG9tYWluLiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBpcwo+ICsgKiBpbiBpbnRl
cnByZXRpbmcgc2h1dGRvd24gcmVxdWVzdHMgYW5kIHJlYXNvbnMgZm9yIGZ1bGx5LXZpcnR1YWxp
emVkCj4gKyAqIGRvbWFpbnMuICBBIHBhcmEtdmlydHVhbGl6ZWQgZG9tYWluIG1heSB1c2UgU0NI
RURPUF9zaHV0ZG93biBkaXJlY3RseS4KPiArICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3Jl
bW90ZV9zaHV0ZG93bl90IHN0cnVjdHVyZS4KPiArICovCj4gKyNkZWZpbmUgU0NIRURPUF9yZW1v
dGVfc2h1dGRvd24gICAgICAgIDQKPiArCj4gKy8qCj4gKyAqIExhdGNoIGEgc2h1dGRvd24gY29k
ZSwgc28gdGhhdCB3aGVuIHRoZSBkb21haW4gbGF0ZXIgc2h1dHMgZG93biBpdAo+ICsgKiByZXBv
cnRzIHRoaXMgY29kZSB0byB0aGUgY29udHJvbCB0b29scy4KPiArICogQGFyZyA9PSBzY2hlZF9z
aHV0ZG93bl90LCBhcyBmb3IgU0NIRURPUF9zaHV0ZG93bi4KPiArICovCj4gKyNkZWZpbmUgU0NI
RURPUF9zaHV0ZG93bl9jb2RlIDUKPiArCj4gKy8qCj4gKyAqIFNldHVwLCBwb2tlIGFuZCBkZXN0
cm95IGEgZG9tYWluIHdhdGNoZG9nIHRpbWVyLgo+ICsgKiBAYXJnID09IHBvaW50ZXIgdG8gc2No
ZWRfd2F0Y2hkb2dfdCBzdHJ1Y3R1cmUuCj4gKyAqIFdpdGggaWQgPT0gMCwgc2V0dXAgYSBkb21h
aW4gd2F0Y2hkb2cgdGltZXIgdG8gY2F1c2UgZG9tYWluIHNodXRkb3duCj4gKyAqICAgICAgICAg
ICAgICAgYWZ0ZXIgdGltZW91dCwgcmV0dXJucyB3YXRjaGRvZyBpZC4KPiArICogV2l0aCBpZCAh
PSAwIGFuZCB0aW1lb3V0ID09IDAsIGRlc3Ryb3kgZG9tYWluIHdhdGNoZG9nIHRpbWVyLgo+ICsg
KiBXaXRoIGlkICE9IDAgYW5kIHRpbWVvdXQgIT0gMCwgcG9rZSB3YXRjaGRvZyB0aW1lciBhbmQg
c2V0IG5ldyB0aW1lb3V0Lgo+ICsgKi8KPiArI2RlZmluZSBTQ0hFRE9QX3dhdGNoZG9nICAgIDYK
PiArLyogYCB9ICovCj4gKwo+ICtzdHJ1Y3Qgc2NoZWRfc2h1dGRvd24gewo+ICsgICAgVUlOVDMy
IHJlYXNvbjsgLyogU0hVVERPV05fKiA9PiBlbnVtIHNjaGVkX3NodXRkb3duX3JlYXNvbiAqLwo+
ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBzY2hlZF9zaHV0ZG93biBzY2hlZF9zaHV0ZG93bl90Owo+
ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShzY2hlZF9zaHV0ZG93bl90KTsKPiArCj4gK3N0cnVj
dCBzY2hlZF9wb2xsIHsKPiArICAgIFhFTl9HVUVTVF9IQU5ETEUoZXZ0Y2huX3BvcnRfdCkgcG9y
dHM7Cj4gKyAgICBVSU5UMzIgbnJfcG9ydHM7Cj4gKyAgICBVSU5UNjQgdGltZW91dDsKPiArfTsK
PiArdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfcG9sbCBzY2hlZF9wb2xsX3Q7Cj4gK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHNjaGVkX3BvbGxfdCk7Cj4gKwo+ICtzdHJ1Y3Qgc2NoZWRfcmVtb3RlX3No
dXRkb3duIHsKPiArICAgIGRvbWlkX3QgZG9tYWluX2lkOyAgICAgICAgIC8qIFJlbW90ZSBkb21h
aW4gSUQgKi8KPiArICAgIFVJTlQzMiByZWFzb247ICAgICAgIC8qIFNIVVRET1dOXyogPT4gZW51
bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24gKi8KPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRf
cmVtb3RlX3NodXRkb3duIHNjaGVkX3JlbW90ZV9zaHV0ZG93bl90Owo+ICtERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShzY2hlZF9yZW1vdGVfc2h1dGRvd25fdCk7Cj4gKwo+ICtzdHJ1Y3Qgc2NoZWRf
d2F0Y2hkb2cgewo+ICsgICAgVUlOVDMyIGlkOyAgICAgICAgICAgICAgICAvKiB3YXRjaGRvZyBJ
RCAqLwo+ICsgICAgVUlOVDMyIHRpbWVvdXQ7ICAgICAgICAgICAvKiB0aW1lb3V0ICovCj4gK307
Cj4gK3R5cGVkZWYgc3RydWN0IHNjaGVkX3dhdGNoZG9nIHNjaGVkX3dhdGNoZG9nX3Q7Cj4gK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3dhdGNoZG9nX3QpOwo+ICsKPiArLyoKPiArICog
UmVhc29uIGNvZGVzIGZvciBTQ0hFRE9QX3NodXRkb3duLiBUaGVzZSBtYXkgYmUgaW50ZXJwcmV0
ZWQgYnkgY29udHJvbAo+ICsgKiBzb2Z0d2FyZSB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRl
IGFjdGlvbi4gRm9yIHRoZSBtb3N0IHBhcnQsIFhlbiBkb2VzCj4gKyAqIG5vdCBjYXJlIGFib3V0
IHRoZSBzaHV0ZG93biBjb2RlLgo+ICsgKi8KPiArLyogYCBlbnVtIHNjaGVkX3NodXRkb3duX3Jl
YXNvbiB7ICovCj4gKyNkZWZpbmUgU0hVVERPV05fcG93ZXJvZmYgICAwICAvKiBEb21haW4gZXhp
dGVkIG5vcm1hbGx5LiBDbGVhbiB1cCBhbmQga2lsbC4gKi8KPiArI2RlZmluZSBTSFVURE9XTl9y
ZWJvb3QgICAgIDEgIC8qIENsZWFuIHVwLCBraWxsLCBhbmQgdGhlbiByZXN0YXJ0LiAgICAgICAg
ICAqLwo+ICsjZGVmaW5lIFNIVVRET1dOX3N1c3BlbmQgICAgMiAgLyogQ2xlYW4gdXAsIHNhdmUg
c3VzcGVuZCBpbmZvLCBraWxsLiAgICAgICAgICovCj4gKyNkZWZpbmUgU0hVVERPV05fY3Jhc2gg
ICAgICAzICAvKiBUZWxsIGNvbnRyb2xsZXIgd2UndmUgY3Jhc2hlZC4gICAgICAgICAgICAgKi8K
PiArI2RlZmluZSBTSFVURE9XTl93YXRjaGRvZyAgIDQgIC8qIFJlc3RhcnQgYmVjYXVzZSB3YXRj
aGRvZyB0aW1lIGV4cGlyZWQuICAgICAqLwo+ICsjZGVmaW5lIFNIVVRET1dOX01BWCAgICAgICAg
NCAgLyogTWF4aW11bSB2YWxpZCBzaHV0ZG93biByZWFzb24uICAgICAgICAgICAgICovCj4gKy8q
IGAgfSAqLwo+ICsKPiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18gKi8KPiArCj4g
Ky8qCj4gKyAqIExvY2FsIHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5
bGU6ICJCU0QiCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsg
KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEv
T3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3RyYWNlLmggYi9Pdm1mUGtnL0lu
Y2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vdHJhY2UuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMC4uZjczMzRjZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Pdm1mUGtn
L0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YZW4vdHJhY2UuaAo+IEBAIC0wLDAgKzEsMzEwIEBA
Cj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogaW5jbHVkZS9wdWJsaWMvdHJhY2UuaAo+
ICsgKiAKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiAr
ICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp
dGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwg
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+
ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAr
ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAq
IE1hcmsgV2lsbGlhbXNvbiwgKEMpIDIwMDQgSW50ZWwgUmVzZWFyY2ggQ2FtYnJpZGdlCj4gKyAq
IENvcHlyaWdodCAoQykgMjAwNSBCaW4gUmVuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9Q
VUJMSUNfVFJBQ0VfSF9fCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX1RSQUNFX0hfXwo+ICsKPiAr
I2RlZmluZSBUUkFDRV9FWFRSQV9NQVggICAgNwo+ICsjZGVmaW5lIFRSQUNFX0VYVFJBX1NISUZU
IDI4Cj4gKwo+ICsvKiBUcmFjZSBjbGFzc2VzICovCj4gKyNkZWZpbmUgVFJDX0NMU19TSElGVCAx
Ngo+ICsjZGVmaW5lIFRSQ19HRU4gICAgICAweDAwMDFmMDAwICAgIC8qIEdlbmVyYWwgdHJhY2Ug
ICAgICAgICAgICAqLwo+ICsjZGVmaW5lIFRSQ19TQ0hFRCAgICAweDAwMDJmMDAwICAgIC8qIFhl
biBTY2hlZHVsZXIgdHJhY2UgICAgICAqLwo+ICsjZGVmaW5lIFRSQ19ET00wT1AgICAweDAwMDRm
MDAwICAgIC8qIFhlbiBET00wIG9wZXJhdGlvbiB0cmFjZSAqLwo+ICsjZGVmaW5lIFRSQ19IVk0g
ICAgICAweDAwMDhmMDAwICAgIC8qIFhlbiBIVk0gdHJhY2UgICAgICAgICAgICAqLwo+ICsjZGVm
aW5lIFRSQ19NRU0gICAgICAweDAwMTBmMDAwICAgIC8qIFhlbiBtZW1vcnkgdHJhY2UgICAgICAg
ICAqLwo+ICsjZGVmaW5lIFRSQ19QViAgICAgICAweDAwMjBmMDAwICAgIC8qIFhlbiBQViB0cmFj
ZXMgICAgICAgICAgICAqLwo+ICsjZGVmaW5lIFRSQ19TSEFET1cgICAweDAwNDBmMDAwICAgIC8q
IFhlbiBzaGFkb3cgdHJhY2luZyAgICAgICAqLwo+ICsjZGVmaW5lIFRSQ19IVyAgICAgICAweDAw
ODBmMDAwICAgIC8qIFhlbiBoYXJkd2FyZS1yZWxhdGVkIHRyYWNlcyAqLwo+ICsjZGVmaW5lIFRS
Q19HVUVTVCAgICAweDA4MDBmMDAwICAgIC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMgICAqLwo+
ICsjZGVmaW5lIFRSQ19BTEwgICAgICAweDBmZmZmMDAwCj4gKyNkZWZpbmUgVFJDX0hEX1RPX0VW
RU5UKHgpICgoeCkmMHgwZmZmZmZmZikKPiArI2RlZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVM
PDwzMSkKPiArI2RlZmluZSBUUkNfSERfSU5DTFVERVNfQ1lDTEVfQ09VTlQoeCkgKCAhISggKHgp
ICYgVFJDX0hEX0NZQ0xFX0ZMQUcgKSApCj4gKyNkZWZpbmUgVFJDX0hEX0VYVFJBKHgpICAgICgo
KHgpPj5UUkFDRV9FWFRSQV9TSElGVCkmVFJBQ0VfRVhUUkFfTUFYKQo+ICsKPiArLyogVHJhY2Ug
c3ViY2xhc3NlcyAqLwo+ICsjZGVmaW5lIFRSQ19TVUJDTFNfU0hJRlQgMTIKPiArCj4gKy8qIHRy
YWNlIHN1YmNsYXNzZXMgZm9yIFNWTSAqLwo+ICsjZGVmaW5lIFRSQ19IVk1fRU5UUllFWElUIDB4
MDAwODEwMDAgICAvKiBWTUVOVFJZIGFuZCAjVk1FWElUICAgICAgICovCj4gKyNkZWZpbmUgVFJD
X0hWTV9IQU5ETEVSICAgMHgwMDA4MjAwMCAgIC8qIHZhcmlvdXMgSFZNIGhhbmRsZXJzICAgICAg
Ki8KPiArCj4gKyNkZWZpbmUgVFJDX1NDSEVEX01JTiAgICAgICAweDAwMDIxMDAwICAgLyogSnVz
dCBydW5zdGF0ZSBjaGFuZ2VzICovCj4gKyNkZWZpbmUgVFJDX1NDSEVEX0NMQVNTICAgICAweDAw
MDIyMDAwICAgLyogU2NoZWR1bGVyLXNwZWNpZmljICAgICovCj4gKyNkZWZpbmUgVFJDX1NDSEVE
X1ZFUkJPU0UgICAweDAwMDI4MDAwICAgLyogTW9yZSBpbmNsdXNpdmUgc2NoZWR1bGluZyAqLwo+
ICsKPiArLyoKPiArICogVGhlIGhpZ2hlc3QgMyBiaXRzIG9mIHRoZSBsYXN0IDEyIGJpdHMgb2Yg
VFJDX1NDSEVEX0NMQVNTIGFib3ZlIGFyZQo+ICsgKiByZXNlcnZlZCBmb3IgZW5jb2Rpbmcgd2hh
dCBzY2hlZHVsZXIgcHJvZHVjZWQgdGhlIGluZm9ybWF0aW9uLiBUaGUKPiArICogYWN0dWFsIGV2
ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxhc3QgOSBiaXRzLgo+ICsgKgo+ICsgKiBUaGlzIG1lYW5z
IHdlIGhhdmUgOCBzY2hlZHVsaW5nIElEcyBhdmFpbGFibGUgKHdoaWNoIG1lYW5zIGF0IG1vc3Qg
OAo+ICsgKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcgZXZlbnRzKSBhbmQsIGluIGVhY2ggc2NoZWR1
bGVyLCB1cCB0byA1MTIKPiArICogZGlmZmVyZW50IGV2ZW50cy4KPiArICovCj4gKyNkZWZpbmUg
VFJDX1NDSEVEX0lEX0JJVFMgMwo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9JRF9TSElGVCAoVFJDX1NV
QkNMU19TSElGVCAtIFRSQ19TQ0hFRF9JRF9CSVRTKQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9JRF9N
QVNLICgoKDFVTDw8VFJDX1NDSEVEX0lEX0JJVFMpIC0gMSkgPDwgVFJDX1NDSEVEX0lEX1NISUZU
KQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NIRURfSURfTUFTSykpCj4g
Kwo+ICsvKiBQZXItc2NoZWR1bGVyIElEcywgdG8gaWRlbnRpZnkgc2NoZWR1bGVyIHNwZWNpZmlj
IGV2ZW50cyAqLwo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQgICAwCj4gKyNkZWZpbmUgVFJD
X1NDSEVEX0NTQ0hFRDIgIDEKPiArI2RlZmluZSBUUkNfU0NIRURfU0VERiAgICAgMgo+ICsjZGVm
aW5lIFRSQ19TQ0hFRF9BUklOQzY1MyAzCj4gKwo+ICsvKiBQZXItc2NoZWR1bGVyIHRyYWNpbmcg
Ki8KPiArI2RlZmluZSBUUkNfU0NIRURfQ0xBU1NfRVZUKF9jLCBfZSkgXAo+ICsgICggKCBUUkNf
U0NIRURfQ0xBU1MgfCBcCj4gKyAgICAgICgoVFJDX1NDSEVEXyMjX2MgPDwgVFJDX1NDSEVEX0lE
X1NISUZUKSAmIFRSQ19TQ0hFRF9JRF9NQVNLKSApICsgXAo+ICsgICAgKF9lICYgVFJDX1NDSEVE
X0VWVF9NQVNLKSApCj4gKwo+ICsvKiBUcmFjZSBjbGFzc2VzIGZvciBIYXJkd2FyZSAqLwo+ICsj
ZGVmaW5lIFRSQ19IV19QTSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8qIFBvd2VyIG1hbmFnZW1l
bnQgdHJhY2VzICovCj4gKyNkZWZpbmUgVFJDX0hXX0lSUSAgICAgICAgICAweDAwODAyMDAwICAg
LyogVHJhY2VzIHJlbGF0aW5nIHRvIHRoZSBoYW5kbGluZyBvZiBJUlFzICovCj4gKwo+ICsvKiBU
cmFjZSBldmVudHMgcGVyIGNsYXNzICovCj4gKyNkZWZpbmUgVFJDX0xPU1RfUkVDT1JEUyAgICAg
ICAgKFRSQ19HRU4gKyAxKQo+ICsjZGVmaW5lIFRSQ19UUkFDRV9XUkFQX0JVRkZFUiAgKFRSQ19H
RU4gKyAyKQo+ICsjZGVmaW5lIFRSQ19UUkFDRV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsgMykK
PiArCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1JVTlNUQVRFX0NIQU5HRSAgIChUUkNfU0NIRURfTUlO
ICsgMSkKPiArI2RlZmluZSBUUkNfU0NIRURfQ09OVElOVUVfUlVOTklORyAgKFRSQ19TQ0hFRF9N
SU4gKyAyKQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9ET01fQUREICAgICAgICAoVFJDX1NDSEVEX1ZF
UkJPU0UgKyAgMSkKPiArI2RlZmluZSBUUkNfU0NIRURfRE9NX1JFTSAgICAgICAgKFRSQ19TQ0hF
RF9WRVJCT1NFICsgIDIpCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1NMRUVQICAgICAgICAgIChUUkNf
U0NIRURfVkVSQk9TRSArICAzKQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9XQUtFICAgICAgICAgICAo
VFJDX1NDSEVEX1ZFUkJPU0UgKyAgNCkKPiArI2RlZmluZSBUUkNfU0NIRURfWUlFTEQgICAgICAg
ICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDUpCj4gKyNkZWZpbmUgVFJDX1NDSEVEX0JMT0NLICAg
ICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA2KQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9TSFVU
RE9XTiAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNykKPiArI2RlZmluZSBUUkNfU0NIRURf
Q1RMICAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDgpCj4gKyNkZWZpbmUgVFJDX1ND
SEVEX0FESkRPTSAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA5KQo+ICsjZGVmaW5lIFRS
Q19TQ0hFRF9TV0lUQ0ggICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMCkKPiArI2RlZmlu
ZSBUUkNfU0NIRURfU19USU1FUl9GTiAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTEpCj4gKyNk
ZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4gICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEyKQo+
ICsjZGVmaW5lIFRSQ19TQ0hFRF9ET01fVElNRVJfRk4gICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAx
MykKPiArI2RlZmluZSBUUkNfU0NIRURfU1dJVENIX0lORlBSRVYgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgMTQpCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhUIChUUkNfU0NIRURfVkVS
Qk9TRSArIDE1KQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9TSFVURE9XTl9DT0RFICAoVFJDX1NDSEVE
X1ZFUkJPU0UgKyAxNikKPiArCj4gKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX01BUCAgICAg
IChUUkNfTUVNICsgMSkKPiArI2RlZmluZSBUUkNfTUVNX1BBR0VfR1JBTlRfVU5NQVAgICAgKFRS
Q19NRU0gKyAyKQo+ICsjZGVmaW5lIFRSQ19NRU1fUEFHRV9HUkFOVF9UUkFOU0ZFUiAoVFJDX01F
TSArIDMpCj4gKyNkZWZpbmUgVFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAgIChUUkNfTUVNICsg
NCkKPiArI2RlZmluZSBUUkNfTUVNX0RFQ1JFQVNFX1JFU0VSVkFUSU9OIChUUkNfTUVNICsgNSkK
PiArI2RlZmluZSBUUkNfTUVNX1BPRF9QT1BVTEFURSAgICAgICAgKFRSQ19NRU0gKyAxNikKPiAr
I2RlZmluZSBUUkNfTUVNX1BPRF9aRVJPX1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykKPiArI2Rl
ZmluZSBUUkNfTUVNX1BPRF9TVVBFUlBBR0VfU1BMSU5URVIgKFRSQ19NRU0gKyAxOCkKPiArCj4g
KyNkZWZpbmUgVFJDX1BWX0VOVFJZICAgMHgwMDIwMTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBv
aW50cyBmb3IgUFYgZ3Vlc3RzLiAqLwo+ICsjZGVmaW5lIFRSQ19QVl9TVUJDQUxMIDB4MDAyMDIw
MDAgLyogU3ViLWNhbGwgaW4gYSBtdWx0aWNhbGwgaHlwZXJjYWxsICovCj4gKwo+ICsjZGVmaW5l
IFRSQ19QVl9IWVBFUkNBTEwgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAxKQo+ICsjZGVm
aW5lIFRSQ19QVl9UUkFQICAgICAgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAzKQo+ICsj
ZGVmaW5lIFRSQ19QVl9QQUdFX0ZBVUxUICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA0KQo+
ICsjZGVmaW5lIFRSQ19QVl9GT1JDRURfSU5WQUxJRF9PUCAgICAgKFRSQ19QVl9FTlRSWSArICA1
KQo+ICsjZGVmaW5lIFRSQ19QVl9FTVVMQVRFX1BSSVZPUCAgICAgICAgKFRSQ19QVl9FTlRSWSAr
ICA2KQo+ICsjZGVmaW5lIFRSQ19QVl9FTVVMQVRFXzRHQiAgICAgICAgICAgKFRSQ19QVl9FTlRS
WSArICA3KQo+ICsjZGVmaW5lIFRSQ19QVl9NQVRIX1NUQVRFX1JFU1RPUkUgICAgKFRSQ19QVl9F
TlRSWSArICA4KQo+ICsjZGVmaW5lIFRSQ19QVl9QQUdJTkdfRklYVVAgICAgICAgICAgKFRSQ19Q
Vl9FTlRSWSArICA5KQo+ICsjZGVmaW5lIFRSQ19QVl9HRFRfTERUX01BUFBJTkdfRkFVTFQgKFRS
Q19QVl9FTlRSWSArIDEwKQo+ICsjZGVmaW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTiAgICAgICAg
KFRSQ19QVl9FTlRSWSArIDExKQo+ICsjZGVmaW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTl9QQUUg
ICAgKFRSQ19QVl9FTlRSWSArIDEyKQo+ICsjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjIgICAg
ICAgICAgKFRSQ19QVl9FTlRSWSArIDEzKQo+ICsjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfU1VC
Q0FMTCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQpCj4gKwo+ICsvKgo+ICsgKiBUUkNfUFZfSFlQ
RVJDQUxMX1YyIGZvcm1hdAo+ICsgKgo+ICsgKiBPbmx5IHNvbWUgb2YgdGhlIGh5cGVyY2FsbCBh
cmd1bWVudCBhcmUgcmVjb3JkZWQuIEJpdCBmaWVsZHMgQTAgdG8KPiArICogQTUgaW4gdGhlIGZp
cnN0IGV4dHJhIHdvcmQgYXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMgcHJlc2VudCBhbmQKPiAr
ICogdGhlIGFyZ3VtZW50cyB0aGVtc2VsdmVzIGFyZSBwYWNrZWQgc2VxdWVudGlhbGx5IGluIHRo
ZSBmb2xsb3dpbmcKPiArICogd29yZHMuCj4gKyAqCj4gKyAqIFRoZSBUUkNfNjRfRkxBRyBiaXQg
aXMgbm90IHNldCBmb3IgdGhlc2UgZXZlbnRzIChldmVuIGlmIHRoZXJlIGFyZQo+ICsgKiA2NC1i
aXQgYXJndW1lbnRzIGluIHRoZSByZWNvcmQpLgo+ICsgKgo+ICsgKiBXb3JkCj4gKyAqIDAgICAg
Yml0IDMxIDMwfDI5IDI4fDI3IDI2fDI1IDI0fDIzIDIyfDIxIDIwfDE5IC4uLiAwCj4gKyAqICAg
ICAgICAgIEE1ICAgfEE0ICAgfEEzICAgfEEyICAgfEExICAgfEEwICAgfEh5cGVyY2FsbCBvcAo+
ICsgKiAxICAgIEZpcnN0IDMyIGJpdCAob3IgbG93IHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcg
aW4gcmVjb3JkCj4gKyAqIDIgICAgU2Vjb25kIDMyIGJpdCAob3IgaGlnaCB3b3JkIG9mIGZpcnN0
IDY0IGJpdCkgYXJnIGluIHJlY29yZAo+ICsgKiAuLi4KPiArICoKPiArICogQTAtQTUgYml0Zmll
bGQgdmFsdWVzOgo+ICsgKgo+ICsgKiAgIDAwYiAgQXJndW1lbnQgbm90IHByZXNlbnQKPiArICog
ICAwMWIgIDMyLWJpdCBhcmd1bWVudCBwcmVzZW50Cj4gKyAqICAgMTBiICA2NC1iaXQgYXJndW1l
bnQgcHJlc2VudAo+ICsgKiAgIDExYiAgUmVzZXJ2ZWQKPiArICovCj4gKyNkZWZpbmUgVFJDX1BW
X0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4MSA8PCAoMjAgKyAyKihpKSkpCj4gKyNkZWZpbmUg
VFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfNjQoaSkgKDB4MiA8PCAoMjAgKyAyKihpKSkpCj4gKyNk
ZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfTUFTSyAgKDB4ZmZmMDAwMDApCj4gKwo+ICsj
ZGVmaW5lIFRSQ19TSEFET1dfTk9UX1NIQURPVyAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cg
KyAgMSkKPiArI2RlZmluZSBUUkNfU0hBRE9XX0ZBU1RfUFJPUEFHQVRFICAgICAgICAgICAgIChU
UkNfU0hBRE9XICsgIDIpCj4gKyNkZWZpbmUgVFJDX1NIQURPV19GQVNUX01NSU8gICAgICAgICAg
ICAgICAgICAoVFJDX1NIQURPVyArICAzKQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfRkFMU0VfRkFT
VF9QQVRIICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNCkKPiArI2RlZmluZSBUUkNfU0hBRE9X
X01NSU8gICAgICAgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDUpCj4gKyNkZWZpbmUg
VFJDX1NIQURPV19GSVhVUCAgICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA2KQo+
ICsjZGVmaW5lIFRSQ19TSEFET1dfRE9NRl9EWUlORyAgICAgICAgICAgICAgICAgKFRSQ19TSEFE
T1cgKyAgNykKPiArI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEUgICAgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDgpCj4gKyNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9X
X1VTRVIgICAgICAoVFJDX1NIQURPVyArICA5KQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFU
RV9VTlNIQURPV19FVlRJTkogICAgKFRSQ19TSEFET1cgKyAxMCkKPiArI2RlZmluZSBUUkNfU0hB
RE9XX0VNVUxBVEVfVU5TSEFET1dfVU5IQU5ETEVEIChUUkNfU0hBRE9XICsgMTEpCj4gKyNkZWZp
bmUgVFJDX1NIQURPV19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEy
KQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfUFJFQUxMT0NfVU5QSU4gICAgICAgICAgICAgKFRSQ19T
SEFET1cgKyAxMykKPiArI2RlZmluZSBUUkNfU0hBRE9XX1JFU1lOQ19GVUxMICAgICAgICAgICAg
ICAgIChUUkNfU0hBRE9XICsgMTQpCj4gKyNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAg
ICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDE1KQo+ICsKPiArLyogdHJhY2UgZXZlbnRzIHBl
ciBzdWJjbGFzcyAqLwo+ICsjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkK
PiArI2RlZmluZSBUUkNfSFZNX1ZNRU5UUlkgICAgICAgICAoVFJDX0hWTV9FTlRSWUVYSVQgKyAw
eDAxKQo+ICsjZGVmaW5lIFRSQ19IVk1fVk1FWElUICAgICAgICAgIChUUkNfSFZNX0VOVFJZRVhJ
VCArIDB4MDIpCj4gKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5U
UllFWElUICsgVFJDXzY0X0ZMQUcgKyAweDAyKQo+ICsjZGVmaW5lIFRSQ19IVk1fUEZfWEVOICAg
ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAxKQo+ICsjZGVmaW5lIFRSQ19IVk1fUEZfWEVO
NjQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDEpCj4gKyNkZWZp
bmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIpCj4gKyNk
ZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1Q2NCAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9G
TEFHICsgMHgwMikKPiArI2RlZmluZSBUUkNfSFZNX0lOSl9FWEMgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgwMykKPiArI2RlZmluZSBUUkNfSFZNX0lOSl9WSVJRICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwNCkKPiArI2RlZmluZSBUUkNfSFZNX1JFSU5KX1ZJUlEgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgwNSkKPiArI2RlZmluZSBUUkNfSFZNX0lPX1JFQUQgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgwNikKPiArI2RlZmluZSBUUkNfSFZNX0lPX1dSSVRFICAgICAg
ICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykKPiArI2RlZmluZSBUUkNfSFZNX0NSX1JFQUQgICAg
ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwOCkKPiArI2RlZmluZSBUUkNfSFZNX0NSX1JFQUQ2
NCAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDA4KQo+ICsjZGVmaW5l
IFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA5KQo+ICsjZGVm
aW5lIFRSQ19IVk1fQ1JfV1JJVEU2NCAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxB
RyArIDB4MDkpCj4gKyNkZWZpbmUgVFJDX0hWTV9EUl9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIDB4MEEpCj4gKyNkZWZpbmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MEIpCj4gKyNkZWZpbmUgVFJDX0hWTV9NU1JfUkVBRCAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MEMpCj4gKyNkZWZpbmUgVFJDX0hWTV9NU1JfV1JJVEUgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MEQpCj4gKyNkZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MEUpCj4gKyNkZWZpbmUgVFJDX0hWTV9JTlRSICAgICAgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEYpCj4gKyNkZWZpbmUgVFJDX0hWTV9OTUkgICAgICAg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTApCj4gKyNkZWZpbmUgVFJDX0hWTV9TTUkgICAg
ICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTEpCj4gKyNkZWZpbmUgVFJDX0hWTV9WTU1D
QUxMICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTIpCj4gKyNkZWZpbmUgVFJDX0hWTV9I
TFQgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTMpCj4gKyNkZWZpbmUgVFJDX0hW
TV9JTlZMUEcgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTQpCj4gKyNkZWZpbmUgVFJD
X0hWTV9JTlZMUEc2NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgx
NCkKPiArI2RlZmluZSBUUkNfSFZNX01DRSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgxNSkKPiArI2RlZmluZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVS
ICsgMHgxNikKPiArI2RlZmluZSBUUkNfSFZNX0lPTUVNX1JFQUQgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgxNykKPiArI2RlZmluZSBUUkNfSFZNX0NMVFMgICAgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgxOCkKPiArI2RlZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgxOSkKPiArI2RlZmluZSBUUkNfSFZNX0xNU1c2NCAgICAgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDE5KQo+ICsjZGVmaW5lIFRSQ19IVk1fUkRU
U0MgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDFhKQo+ICsjZGVmaW5lIFRSQ19IVk1f
SU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIwKQo+ICsjZGVmaW5lIFRSQ19I
Vk1fTlBGICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxKQo+ICsjZGVmaW5lIFRS
Q19IVk1fUkVBTE1PREVfRU1VTEFURSAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMikKPiArI2RlZmlu
ZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjMpCj4gKyNk
ZWZpbmUgVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI0KQo+
ICsjZGVmaW5lIFRSQ19IVk1fVkxBUElDICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgy
NSkKPiArCj4gKyNkZWZpbmUgVFJDX0hWTV9JT1BPUlRfV1JJVEUgICAgKFRSQ19IVk1fSEFORExF
UiArIDB4MjE2KQo+ICsjZGVmaW5lIFRSQ19IVk1fSU9NRU1fV1JJVEUgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDIxNykKPiArCj4gKy8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCj4g
KyNkZWZpbmUgVFJDX1BNX0ZSRVFfQ0hBTkdFICAgICAgKFRSQ19IV19QTSArIDB4MDEpCj4gKyNk
ZWZpbmUgVFJDX1BNX0lETEVfRU5UUlkgICAgICAgKFRSQ19IV19QTSArIDB4MDIpCj4gKyNkZWZp
bmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCj4gKwo+ICsvKiBU
cmFjZSBldmVudHMgZm9yIElSUXMgKi8KPiArI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5V
UF9ERUxBWSAoVFJDX0hXX0lSUSArIDB4MSkKPiArI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xF
QU5VUCAgICAgICAoVFJDX0hXX0lSUSArIDB4MikKPiArI2RlZmluZSBUUkNfSFdfSVJRX0JJTkRf
VkVDVE9SICAgICAgICAoVFJDX0hXX0lSUSArIDB4MykKPiArI2RlZmluZSBUUkNfSFdfSVJRX0NM
RUFSX1ZFQ1RPUiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkKPiArI2RlZmluZSBUUkNfSFdfSVJR
X01PVkVfRklOSVNIICAgICAgICAoVFJDX0hXX0lSUSArIDB4NSkKPiArI2RlZmluZSBUUkNfSFdf
SVJRX0FTU0lHTl9WRUNUT1IgICAgICAoVFJDX0hXX0lSUSArIDB4NikKPiArI2RlZmluZSBUUkNf
SFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4NykKPiArI2RlZmluZSBU
UkNfSFdfSVJRX0hBTkRMRUQgICAgICAgICAgICAoVFJDX0hXX0lSUSArIDB4OCkKPiArCj4gKy8q
Cj4gKyAqIEV2ZW50IEZsYWdzCj4gKyAqCj4gKyAqIFNvbWUgZXZlbnRzIChlLmcsIFRSQ19QVl9U
UkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVsdGlwbGUKPiArICogcmVjb3JkIGZv
cm1hdHMuICBUaGVzZSBldmVudCBmbGFncyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZQo+ICsgKiBk
aWZmZXJlbnQgZm9ybWF0cy4KPiArICovCj4gKyNkZWZpbmUgVFJDXzY0X0ZMQUcgMHgxMDAgLyog
QWRkcmVzc2VzIGFyZSA2NCBiaXRzIChpbnN0ZWFkIG9mIDMyIGJpdHMpICovCj4gKwo+ICsvKiBU
aGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciByZWNvcmQuICov
Cj4gK3N0cnVjdCB0X3JlYyB7Cj4gKyAgICBVSU5UMzIgZXZlbnQ6Mjg7Cj4gKyAgICBVSU5UMzIg
ZXh0cmFfdTMyOjM7ICAgICAgICAgLyogIyBlbnRyaWVzIGluIHRyYWlsaW5nIGV4dHJhX3UzMltd
IGFycmF5ICovCj4gKyAgICBVSU5UMzIgY3ljbGVzX2luY2x1ZGVkOjE7ICAgLyogdS5jeWNsZXMg
b3IgdS5ub19jeWNsZXM/ICovCj4gKyAgICB1bmlvbiB7Cj4gKyAgICAgICAgc3RydWN0IHsKPiAr
ICAgICAgICAgICAgVUlOVDMyIGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3VudGVy
IHRpbWVzdGFtcCAqLwo+ICsgICAgICAgICAgICBVSU5UMzIgZXh0cmFfdTMyWzddOyAgICAgICAg
IC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KPiArICAgICAgICB9IGN5Y2xlczsKPiArICAgICAgICBz
dHJ1Y3Qgewo+ICsgICAgICAgICAgICBVSU5UMzIgZXh0cmFfdTMyWzddOyAgICAgICAgIC8qIGV2
ZW50IGRhdGEgaXRlbXMgKi8KPiArICAgICAgICB9IG5vY3ljbGVzOwo+ICsgICAgfSB1Owo+ICt9
Owo+ICsKPiArLyoKPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIG1ldGFkYXRhIGZv
ciBhIHNpbmdsZSB0cmFjZSBidWZmZXIuICBUaGUgaGVhZAo+ICsgKiBmaWVsZCwgaW5kZXhlcyBp
bnRvIGFuIGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgo+ICsgKi8KPiArc3RydWN0IHRfYnVmIHsK
PiArICAgIC8qIEFzc3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBnZW5lcmFs
bHkgbm90IGEgcG93ZXIgb2YgMi4KPiArICAgICAqIENPTlMgYW5kIFBST0QgYXJlIGluY3JlbWVu
dGVkIG1vZHVsbyAoMipYKToKPiArICAgICAqICAgICAwIDw9IGNvbnMgPCAyKlgKPiArICAgICAq
ICAgICAwIDw9IHByb2QgPCAyKlgKPiArICAgICAqIFRoaXMgaXMgZG9uZSBiZWNhdXNlIGFkZGl0
aW9uIG1vZHVsbyBYIGJyZWFrcyBhdCAyXjMyIHdoZW4gWCBpcyBub3QgYQo+ICsgICAgICogcG93
ZXIgb2YgMjoKPiArICAgICAqICAgICAoKCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAoMl4z
MikgJSBYCj4gKyAgICAgKi8KPiArICAgIFVJTlQzMiBjb25zOyAgIC8qIE9mZnNldCBvZiBuZXh0
IGl0ZW0gdG8gYmUgY29uc3VtZWQgYnkgY29udHJvbCB0b29scy4gKi8KPiArICAgIFVJTlQzMiBw
cm9kOyAgIC8qIE9mZnNldCBvZiBuZXh0IGl0ZW0gdG8gYmUgcHJvZHVjZWQgYnkgWGVuLiAgICAg
ICAgICAgKi8KPiArICAgIC8qICBSZWNvcmRzIGZvbGxvdyBpbW1lZGlhdGVseSBhZnRlciB0aGUg
bWV0YS1kYXRhIGhlYWRlci4gICAgKi8KPiArfTsKPiArCj4gKy8qIFN0cnVjdHVyZSB1c2VkIHRv
IHBhc3MgTUZOcyB0byB0aGUgdHJhY2UgYnVmZmVycyBiYWNrIHRvIHRyYWNlIGNvbnN1bWVycy4K
PiArICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgc3RydWN0dXJlIHdoZXJl
IHRoZSBtZm4gbGlzdCB3aWxsIGJlIGhlbGQuCj4gKyAqIE1GTnMgd2lsbCBiZSBhdCAoKFVJTlRO
ICopKHRfaW5mbykpKyh0X2luZm8tPmNwdV9vZmZzZXRbY3B1XSkuCj4gKyAqLwo+ICtzdHJ1Y3Qg
dF9pbmZvIHsKPiArICAgIFVJTlQxNiB0YnVmX3NpemU7IC8qIFNpemUgaW4gcGFnZXMgb2YgZWFj
aCB0cmFjZSBidWZmZXIgKi8KPiArICAgIFVJTlQxNiBtZm5fb2Zmc2V0W107ICAvKiBPZmZzZXQg
d2l0aGluIHRfaW5mbyBzdHJ1Y3R1cmUgb2YgdGhlIHBhZ2UgbGlzdCBwZXIgY3B1ICovCj4gKyAg
ICAvKiBNRk4gbGlzdHMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGhlYWRlciAqLwo+ICt9Owo+ICsK
PiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18gKi8KPiArCj4gKy8qCj4gKyAqIExv
Y2FsIHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4g
KyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFi
cy1tb2RlOiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNs
dWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi1jb21wYXQuaCBiL092bWZQa2cvSW5jbHVkZS9J
bmR1c3RyeVN0YW5kYXJkL1hlbi94ZW4tY29tcGF0LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IDAwMDAwMDAuLjNlYjgwYTAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvT3ZtZlBrZy9J
bmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi1jb21wYXQuaAo+IEBAIC0wLDAgKzEsNDQg
QEAKPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiB4ZW4tY29tcGF0LmgKPiArICogCj4g
KyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byBYZW4uICBDb21wYXRpYmlsaXR5IGxheWVyLgo+ICsg
KiAKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICog
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICog
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKPiArICovCj4gKwo+ICsjaWZuZGVm
IF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5f
Q09NUEFUX0hfXwo+ICsKPiArI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05f
XyAweDAwMDQwNDAwCj4gKwo+ICsjaWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVO
X1RPT0xTX18pCj4gKy8qIFhlbiBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGlt
cGxlbWVudHMgdGhlIGxhdGVzdCBpbnRlcmZhY2UuICovCj4gKyNkZWZpbmUgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXwo+ICsjZWxpZiAh
ZGVmaW5lZChfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fKQo+ICsvKiBHdWVzdHMgd2hpY2ggZG8g
bm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdldCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KPiArI2Rl
ZmluZSBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDB4MDAwMDAwMDAKPiArI2VuZGlmCj4gKwo+
ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+IF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0Vf
VkVSU0lPTl9fCj4gKyNlcnJvciAiVGhlc2UgaGVhZGVyIGZpbGVzIGRvIG5vdCBzdXBwb3J0IHRo
ZSByZXF1ZXN0ZWQgaW50ZXJmYWNlIHZlcnNpb24uIgo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9J
bmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWGVuL3hlbi5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVz
dHJ5U3RhbmRhcmQvWGVuL3hlbi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi5lMTlmMzBjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1
c3RyeVN0YW5kYXJkL1hlbi94ZW4uaAo+IEBAIC0wLDAgKzEsODk3IEBACj4gKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKPiArICogeGVuLmgKPiArICogCj4gKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0
byBYZW4uCj4gKyAqIAo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBt
b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiAr
ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K
PiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
Cj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiAr
ICoKPiArICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCj4gKyAqLwo+ICsKPiArI2lm
bmRlZiBfX1hFTl9QVUJMSUNfWEVOX0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5fSF9f
Cj4gKwo+ICsjaW5jbHVkZSAieGVuLWNvbXBhdC5oIgo+ICsKPiArI2lmIGRlZmluZWQoX19pMzg2
X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKPiArI2luY2x1ZGUgImFyY2gteDg2L3hlbi5oIgo+
ICsjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKQo+ICsjaW5j
bHVkZSAiYXJjaC1hcm0uaCIKPiArI2Vsc2UKPiArI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRl
Y3R1cmUiCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPiArLyogR3Vlc3Qg
aGFuZGxlcyBmb3IgcHJpbWl0aXZlIEMgdHlwZXMuICovCj4gK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKENIQVI4KTsKPiArLyogX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1Y2hhciwgdW5zaWdu
ZWQgY2hhcik7ICovCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKElOVDMyKTsKPiArX19ERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAgVUlOVDMyKTsKPiArI2lmIF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKElOVE4p
Owo+ICtfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVsb25nLCBVSU5UTik7Cj4gKyNlbmRpZgo+
ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShWT0lEKTsKPiArCj4gK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKFVJTlQ2NCk7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCk7Cj4g
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsKPiArI2VuZGlmCj4gKwo+ICsv
Kgo+ICsgKiBIWVBFUkNBTExTCj4gKyAqLwo+ICsKPiArLyogYGluY29udGVudHMgMTAwIGhjYWxs
cyBMaXN0IG9mIGh5cGVyY2FsbHMKPiArICogYCBlbnVtIGh5cGVyY2FsbF9udW0geyAvLyBfX0hZ
UEVSVklTT1JfKiA9PiBIWVBFUlZJU09SXyooKQo+ICsgKi8KPiArCj4gKyNkZWZpbmUgX19IWVBF
UlZJU09SX3NldF90cmFwX3RhYmxlICAgICAgICAwCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX21t
dV91cGRhdGUgICAgICAgICAgICAxCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9nZHQgICAg
ICAgICAgICAgICAyCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAg
ICAzCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9jYWxsYmFja3MgICAgICAgICA0Cj4gKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoICAgICAgICA1Cj4gKyNkZWZpbmUgX19I
WVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdCAgICAgICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMw
MTAxICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3BsYXRmb3JtX29wICAgICAgICAgICA3Cj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyAgICAgICAgICA4Cj4gKyNkZWZpbmUg
X19IWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyAgICAgICAgICA5Cj4gKyNkZWZpbmUgX19IWVBFUlZJ
U09SX3VwZGF0ZV9kZXNjcmlwdG9yICAgIDEwCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX21lbW9y
eV9vcCAgICAgICAgICAgIDEyCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX211bHRpY2FsbCAgICAg
ICAgICAgIDEzCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nICAgIDE0
Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90aW1lcl9vcCAgICAgICAgIDE1Cj4gKyNkZWZp
bmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0IDE2IC8qIGNvbXBhdCBzaW5j
ZSAweDAwMDMwMjAyICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hlbl92ZXJzaW9uICAgICAg
ICAgIDE3Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2NvbnNvbGVfaW8gICAgICAgICAgIDE4Cj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0ICAgIDE5IC8qIGNvbXBhdCBz
aW5jZSAweDAwMDMwMjAyICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2dyYW50X3RhYmxlX29w
ICAgICAgIDIwCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZtX2Fzc2lzdCAgICAgICAgICAgIDIx
Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluIDIy
Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2lyZXQgICAgICAgICAgICAgICAgIDIzIC8qIHg4NiBv
bmx5ICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZjcHVfb3AgICAgICAgICAgICAgIDI0Cj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8qIHg4Ni82NCBv
bmx5ICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdWV4dF9vcCAgICAgICAgICAgIDI2Cj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX3hzbV9vcCAgICAgICAgICAgICAgIDI3Cj4gKyNkZWZpbmUg
X19IWVBFUlZJU09SX25taV9vcCAgICAgICAgICAgICAgIDI4Cj4gKyNkZWZpbmUgX19IWVBFUlZJ
U09SX3NjaGVkX29wICAgICAgICAgICAgIDI5Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2NhbGxi
YWNrX29wICAgICAgICAgIDMwCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29wICAg
ICAgICAgIDMxCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AgICAgIDMy
Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgICAgICAgICAgIDMzCj4gKyNkZWZp
bmUgX19IWVBFUlZJU09SX2h2bV9vcCAgICAgICAgICAgICAgIDM0Cj4gKyNkZWZpbmUgX19IWVBF
UlZJU09SX3N5c2N0bCAgICAgICAgICAgICAgIDM1Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2Rv
bWN0bCAgICAgICAgICAgICAgIDM2Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2tleGVjX29wICAg
ICAgICAgICAgIDM3Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3RtZW1fb3AgICAgICAgICAgICAg
IDM4Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2VydmVkX29wICAgICAgIDM5IC8qIHJl
c2VydmVkIGZvciBYZW5DbGllbnQgKi8KPiArCj4gKy8qIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBo
eXBlcmNhbGwgZGVmaW5pdGlvbnMuICovCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMCAg
ICAgICAgICAgICAgIDQ4Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMSAgICAgICAgICAg
ICAgIDQ5Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMiAgICAgICAgICAgICAgIDUwCj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMyAgICAgICAgICAgICAgIDUxCj4gKyNkZWZpbmUg
X19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAgICAgIDUyCj4gKyNkZWZpbmUgX19IWVBFUlZJ
U09SX2FyY2hfNSAgICAgICAgICAgICAgIDUzCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hf
NiAgICAgICAgICAgICAgIDU0Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNyAgICAgICAg
ICAgICAgIDU1Cj4gKwo+ICsvKiBgIH0gKi8KPiArCj4gKy8qCj4gKyAqIEhZUEVSQ0FMTCBDT01Q
QVRJQklMSVRZLgo+ICsgKi8KPiArCj4gKy8qIE5ldyBzY2hlZF9vcCBoeXBlcmNhbGwgaW50cm9k
dWNlZCBpbiAweDAwMDMwMTAxLiAqLwo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8
IDB4MDAwMzAxMDEKPiArI3VuZGVmIF9fSFlQRVJWSVNPUl9zY2hlZF9vcAo+ICsjZGVmaW5lIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcCBfX0hZUEVSVklTT1Jfc2NoZWRfb3BfY29tcGF0Cj4gKyNlbmRp
Zgo+ICsKPiArLyogTmV3IGV2ZW50LWNoYW5uZWwgYW5kIHBoeXNkZXYgaHlwZXJjYWxscyBpbnRy
b2R1Y2VkIGluIDB4MDAwMzAyMDIuICovCj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9f
IDwgMHgwMDAzMDIwMgo+ICsjdW5kZWYgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AKPiAr
I2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcCBfX0hZUEVSVklTT1JfZXZlbnRf
Y2hhbm5lbF9vcF9jb21wYXQKPiArI3VuZGVmIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wCj4gKyNk
ZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29t
cGF0Cj4gKyNlbmRpZgo+ICsKPiArLyogTmV3IHBsYXRmb3JtX29wIGh5cGVyY2FsbCBpbnRyb2R1
Y2VkIGluIDB4MDAwMzAyMDQuICovCj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDAzMDIwNAo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9kb20wX29wIF9fSFlQRVJWSVNPUl9w
bGF0Zm9ybV9vcAo+ICsjZW5kaWYKPiArCj4gKy8qIAo+ICsgKiBWSVJUVUFMIElOVEVSUlVQVFMK
PiArICogCj4gKyAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2Vp
dmUgZnJvbSBYZW4uCj4gKyAqIAo+ICsgKiBJbiB0aGUgc2lkZSBjb21tZW50cywgJ1YuJyBkZW5v
dGVzIGEgcGVyLVZDUFUgVklSUSB3aGlsZSAnRy4nIGRlbm90ZXMgYQo+ICsgKiBnbG9iYWwgVklS
US4gVGhlIGZvcm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fubm90IGJlIHJl
LWJvdW5kLgo+ICsgKiBUaGUgbGF0dGVyIGNhbiBiZSBhbGxvY2F0ZWQgb25seSBvbmNlIHBlciBn
dWVzdDogdGhleSBtdXN0IGluaXRpYWxseSBiZQo+ICsgKiBhbGxvY2F0ZWQgdG8gVkNQVTAgYnV0
IGNhbiBzdWJzZXF1ZW50bHkgYmUgcmUtYm91bmQuCj4gKyAqLwo+ICsvKiBgIGVudW0gdmlycSB7
ICovCj4gKyNkZWZpbmUgVklSUV9USU1FUiAgICAgIDAgIC8qIFYuIFRpbWViYXNlIHVwZGF0ZSwg
YW5kL29yIHJlcXVlc3RlZCB0aW1lb3V0LiAgKi8KPiArI2RlZmluZSBWSVJRX0RFQlVHICAgICAg
MSAgLyogVi4gUmVxdWVzdCBndWVzdCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwo+
ICsjZGVmaW5lIFZJUlFfQ09OU09MRSAgICAyICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQg
b24gZW1lcmdlbmN5IGNvbnNvbGUuICovCj4gKyNkZWZpbmUgVklSUV9ET01fRVhDICAgIDMgIC8q
IEcuIChET00wKSBFeGNlcHRpb25hbCBldmVudCBmb3Igc29tZSBkb21haW4uICAgKi8KPiArI2Rl
ZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyogRy4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVj
b3JkcyBhdmFpbGFibGUuICAqLwo+ICsjZGVmaW5lIFZJUlFfREVCVUdHRVIgICA2ICAvKiBHLiAo
RE9NMCkgQSBkb21haW4gaGFzIHBhdXNlZCBmb3IgZGVidWdnaW5nLiAgICovCj4gKyNkZWZpbmUg
VklSUV9YRU5PUFJPRiAgIDcgIC8qIFYuIFhlbk9wcm9maWxlIGludGVycnVwdDogbmV3IHNhbXBs
ZSBhdmFpbGFibGUgKi8KPiArI2RlZmluZSBWSVJRX0NPTl9SSU5HICAgOCAgLyogRy4gKERPTTAp
IEJ5dGVzIHJlY2VpdmVkIG9uIGNvbnNvbGUgICAgICAgICAgICAqLwo+ICsjZGVmaW5lIFZJUlFf
UENQVV9TVEFURSA5ICAvKiBHLiAoRE9NMCkgUENQVSBzdGF0ZSBjaGFuZ2VkICAgICAgICAgICAg
ICAgICAgICovCj4gKyNkZWZpbmUgVklSUV9NRU1fRVZFTlQgIDEwIC8qIEcuIChET00wKSBBIG1l
bW9yeSBldmVudCBoYXMgb2NjdXJlZCAgICAgICAgICAgKi8KPiArI2RlZmluZSBWSVJRX1hDX1JF
U0VSVkVEIDExIC8qIEcuIFJlc2VydmVkIGZvciBYZW5DbGllbnQgICAgICAgICAgICAgICAgICAg
ICAqLwo+ICsjZGVmaW5lIFZJUlFfRU5PTUVNICAgICAxMiAvKiBHLiAoRE9NMCkgTG93IG9uIGhl
YXAgbWVtb3J5ICAgICAgICovCj4gKwo+ICsvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgVklSUSBk
ZWZpbml0aW9ucy4gKi8KPiArI2RlZmluZSBWSVJRX0FSQ0hfMCAgICAxNgo+ICsjZGVmaW5lIFZJ
UlFfQVJDSF8xICAgIDE3Cj4gKyNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKPiArI2RlZmluZSBW
SVJRX0FSQ0hfMyAgICAxOQo+ICsjZGVmaW5lIFZJUlFfQVJDSF80ICAgIDIwCj4gKyNkZWZpbmUg
VklSUV9BUkNIXzUgICAgMjEKPiArI2RlZmluZSBWSVJRX0FSQ0hfNiAgICAyMgo+ICsjZGVmaW5l
IFZJUlFfQVJDSF83ICAgIDIzCj4gKy8qIGAgfSAqLwo+ICsKPiArI2RlZmluZSBOUl9WSVJRUyAg
ICAgICAyNAo+ICsKPiArLyoKPiArICogYCBlbnVtIG5lZ19lcnJub3ZhbAo+ICsgKiBgIEhZUEVS
VklTT1JfbW11X3VwZGF0ZShjb25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCj4gKyAqIGAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCAqZG9uZV9vdXQs
Cj4gKyAqIGAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcmVpZ25kb20pCj4gKyAq
IGAKPiArICogQHJlcXMgaXMgYW4gYXJyYXkgb2YgbW11X3VwZGF0ZV90IHN0cnVjdHVyZXMgKChw
dHIsIHZhbCkgcGFpcnMpLgo+ICsgKiBAY291bnQgaXMgdGhlIGxlbmd0aCBvZiB0aGUgYWJvdmUg
YXJyYXkuCj4gKyAqIEBwZG9uZSBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVt
YmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCj4gKyAqIEBmb3JlaWduZG9tWzE1OjBdOiBGRCwg
dGhlIGV4cGVjdGVkIG93bmVyIG9mIGRhdGEgcGFnZXMgcmVmZXJlbmNlZCBpbiB0aGlzCj4gKyAq
ICAgICAgICAgICAgICAgICAgICBoeXBlcmNhbGwgaW52b2NhdGlvbi4gQ2FuIGJlIERPTUlEX1NF
TEYuCj4gKyAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0aGUgZXhwZWN0ZWQgb3duZXIgb2Yg
cGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKPiArICogICAgICAgICAgICAgICAgICAgICBpbiB0
aGlzIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBUaGUgdmFsdWUgb2YgdGhpcyBmaWVsZAo+ICsgKiAg
ICAgICAgICAgICAgICAgICAgICh4KSBlbmNvZGVzIHRoZSBQRkQgYXMgZm9sbG93czoKPiArICog
ICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlEX1NFTEYKPiArICogICAg
ICAgICAgICAgICAgICAgICB4ICE9IDAgPT4gUEZEID09IHggLSAxCj4gKyAqIAo+ICsgKiBTdWIt
Y29tbWFuZHM6IHB0clsxOjBdIHNwZWNpZmllcyB0aGUgYXBwcm9wcmlhdGUgTU1VXyogY29tbWFu
ZC4KPiArICogLS0tLS0tLS0tLS0tLQo+ICsgKiBwdHJbMTowXSA9PSBNTVVfTk9STUFMX1BUX1VQ
REFURToKPiArICogVXBkYXRlcyBhbiBlbnRyeSBpbiBhIHBhZ2UgdGFibGUgYmVsb25naW5nIHRv
IFBGRC4gSWYgdXBkYXRpbmcgYW4gTDEgdGFibGUsCj4gKyAqIGFuZCB0aGUgbmV3IHRhYmxlIGVu
dHJ5IGlzIHZhbGlkL3ByZXNlbnQsIHRoZSBtYXBwZWQgZnJhbWUgbXVzdCBiZWxvbmcgdG8KPiAr
ICogRkQuIElmIGF0dGVtcHRpbmcgdG8gbWFwIGFuIEkvTyBwYWdlIHRoZW4gdGhlIGNhbGxlciBh
c3N1bWVzIHRoZSBwcml2aWxlZ2UKPiArICogb2YgdGhlIEZELgo+ICsgKiBGRCA9PSBET01JRF9J
TzogUGVybWl0IC9vbmx5LyBJL08gbWFwcGluZ3MsIGF0IHRoZSBwcml2IGxldmVsIG9mIHRoZSBj
YWxsZXIuCj4gKyAqIEZEID09IERPTUlEX1hFTjogTWFwIHJlc3RyaWN0ZWQgYXJlYXMgb2YgWGVu
J3MgaGVhcCBzcGFjZS4KPiArICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIG9mIHRoZSBw
YWdlLXRhYmxlIGVudHJ5IHRvIG1vZGlmeS4KPiArICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3Jp
dGUuCj4gKyAqCj4gKyAqIFRoZXJlIGFsc28gY2VydGFpbiBpbXBsaWNpdCByZXF1aXJlbWVudHMg
d2hlbiB1c2luZyB0aGlzIGh5cGVyY2FsbC4gVGhlCj4gKyAqIHBhZ2VzIHRoYXQgbWFrZSB1cCBh
IHBhZ2V0YWJsZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9ubHkgaW4gdGhlIGd1ZXN0Lgo+ICsgKiBU
aGlzIHByZXZlbnRzIHVuY29udHJvbGxlZCBndWVzdCB1cGRhdGVzIHRvIHRoZSBwYWdldGFibGUu
IFhlbiBzdHJpY3RseQo+ICsgKiBlbmZvcmNlcyB0aGlzLCBhbmQgd2lsbCBkaXNhbGxvdyBhbnkg
cGFnZXRhYmxlIHVwZGF0ZSB3aGljaCB3aWxsIGVuZCB1cAo+ICsgKiBtYXBwaW5nIHBhZ2V0YWJs
ZSBwYWdlIFJXLCBhbmQgd2lsbCBkaXNhbGxvdyB1c2luZyBhbnkgd3JpdGFibGUgcGFnZSBhcyBh
Cj4gKyAqIHBhZ2V0YWJsZS4gSW4gcHJhY3RpY2UgaXQgbWVhbnMgdGhhdCB3aGVuIGNvbnN0cnVj
dGluZyBhIHBhZ2UgdGFibGUgZm9yIGEKPiArICogcHJvY2VzcywgdGhyZWFkLCBldGMsIHdlIE1V
U1QgYmUgdmVyeSBkaWxsaWdpZW50IGluIGZvbGxvd2luZyB0aGVzZSBydWxlczoKPiArICogIDEp
LiBTdGFydCB3aXRoIHRvcC1sZXZlbCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxhbmd1YWdlOiBMNCku
IEZpbGwgb3V0Cj4gKyAqICAgICAgdGhlIGVudHJpZXMuCj4gKyAqICAyKS4gS2VlcCBvbiBnb2lu
ZywgZmlsbGluZyBvdXQgdGhlIHVwcGVyIChQVUQgb3IgTDMpLCBhbmQgbWlkZGxlIChQTUQKPiAr
ICogICAgICBvciBMMikuCj4gKyAqICAzKS4gU3RhcnQgZmlsbGluZyBvdXQgdGhlIFBURSB0YWJs
ZSAoTDEpIHdpdGggdGhlIFBURSBlbnRyaWVzLiBPbmNlCj4gKyAqICAJZG9uZSwgbWFrZSBzdXJl
IHRvIHNldCBlYWNoIG9mIHRob3NlIGVudHJpZXMgdG8gUk8gKHNvIHdyaXRlYWJsZSBiaXQKPiAr
ICogIAlpcyB1bnNldCkuIE9uY2UgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQsIHNldCB0aGUgUE1E
IChMMikgZm9yIHRoaXMKPiArICogIAlQVEUgdGFibGUgYXMgUk8uCj4gKyAqICA0KS4gV2hlbiBj
b21wbGV0ZWQgd2l0aCBhbGwgb2YgdGhlIFBNRCAoTDIpIGVudHJpZXMsIGFuZCBhbGwgb2YgdGhl
bSBoYXZlCj4gKyAqICAJYmVlbiBzZXQgdG8gUk8sIG1ha2Ugc3VyZSB0byBzZXQgUk8gdGhlIFBV
RCAoTDMpLiBEbyB0aGUgc2FtZQo+ICsgKiAgCW9wZXJhdGlvbiBvbiBQR0QgKEw0KSBwYWdldGFi
bGUgZW50cmllcyB0aGF0IGhhdmUgYSBQVUQgKEwzKSBlbnRyeS4KPiArICogIDUpLiBOb3cgYmVm
b3JlIHlvdSBjYW4gdXNlIHRob3NlIHBhZ2VzIChzbyBzZXR0aW5nIHRoZSBjcjMpLCB5b3UgTVVT
VCBhbHNvCj4gKyAqICAgICAgcGluIHRoZW0gc28gdGhhdCB0aGUgaHlwZXJ2aXNvciBjYW4gdmVy
aWZ5IHRoZSBlbnRyaWVzLiBUaGlzIGlzIGRvbmUKPiArICogICAgICB2aWEgdGhlIEhZUEVSVklT
T1JfbW11ZXh0X29wKE1NVUVYVF9QSU5fTDRfVEFCTEUsIGd1ZXN0IHBoeXNpY2FsIGZyYW1lCj4g
KyAqICAgICAgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkuIEFuZCB0aGlzIHBvaW50IHRoZSBIWVBF
UlZJU09SX21tdWV4dF9vcCgKPiArICogICAgICBNTVVFWFRfTkVXX0JBU0VQVFIsIGd1ZXN0IHBo
eXNpY2FsIGZyYW1lIG51bWJlciBvZiB0aGUgUEdEIChMNCkpIGNhbiBiZQo+ICsgKiAgICAgIGlz
c3VlZC4KPiArICogRm9yIDMyLWJpdCBndWVzdHMsIHRoZSBMNCBpcyBub3QgdXNlZCAoYXMgdGhl
cmUgaXMgbGVzcyBwYWdldGFibGVzKSwgc28KPiArICogaW5zdGVhZCB1c2UgTDMuCj4gKyAqIEF0
IHRoaXMgcG9pbnQgdGhlIHBhZ2V0YWJsZXMgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBNTVVf
Tk9STUFMX1BUX1VQREFURQo+ICsgKiBoeXBlcmNhbGwuIEFsc28gaWYgc28gZGVzaXJlZCB0aGUg
T1MgY2FuIGFsc28gdHJ5IHRvIHdyaXRlIHRvIHRoZSBQVEUKPiArICogYW5kIGJlIHRyYXBwZWQg
YnkgdGhlIGh5cGVydmlzb3IgKGFzIHRoZSBQVEUgZW50cnkgaXMgUk8pLgo+ICsgKgo+ICsgKiBU
byBkZWFsbG9jYXRlIHRoZSBwYWdlcywgdGhlIG9wZXJhdGlvbnMgYXJlIHRoZSByZXZlcnNlIG9m
IHRoZSBzdGVwcwo+ICsgKiBtZW50aW9uZWQgYWJvdmUuIFRoZSBhcmd1bWVudCBpcyBNTVVFWFRf
VU5QSU5fVEFCTEUgZm9yIGFsbCBsZXZlbHMgYW5kIHRoZQo+ICsgKiBwYWdldGFibGUgTVVTVCBu
b3QgYmUgaW4gdXNlIChtZWFuaW5nIHRoYXQgdGhlIGNyMyBpcyBub3Qgc2V0IHRvIGl0KS4KPiAr
ICogCj4gKyAqIHB0clsxOjBdID09IE1NVV9NQUNIUEhZU19VUERBVEU6Cj4gKyAqIFVwZGF0ZXMg
YW4gZW50cnkgaW4gdGhlIG1hY2hpbmUtPnBzZXVkby1waHlzaWNhbCBtYXBwaW5nIHRhYmxlLgo+
ICsgKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJlc3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBt
YXBwaW5nIHRvIG1vZGlmeS4KPiArICogICAgICAgICAgICAgVGhlIGZyYW1lIG11c3QgYmVsb25n
IHRvIHRoZSBGRCwgaWYgb25lIGlzIHNwZWNpZmllZC4KPiArICogdmFsICAgICAgLS0gVmFsdWUg
dG8gd3JpdGUgaW50byB0aGUgbWFwcGluZyBlbnRyeS4KPiArICogCj4gKyAqIHB0clsxOjBdID09
IE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQ6Cj4gKyAqIEFzIE1NVV9OT1JNQUxfUFRfVVBEQVRF
IGFib3ZlLCBidXQgQS9EIGJpdHMgY3VycmVudGx5IGluIHRoZSBQVEUgYXJlIE9SZWQKPiArICog
d2l0aCB0aG9zZSBpbiBAdmFsLgo+ICsgKgo+ICsgKiBAdmFsIGlzIHVzdWFsbHkgdGhlIG1hY2hp
bmUgZnJhbWUgbnVtYmVyIGFsb25nIHdpdGggc29tZSBhdHRyaWJ1dGVzLgo+ICsgKiBUaGUgYXR0
cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmluZWQgYml0cy4g
TWVhbmluZyB0aGF0Cj4gKyAqIGlmIHRoaXMgaXMgYSBYODZfNjQgbWFjaGluZSBhbmQgZm91ciBw
YWdlIHRhYmxlIGxheW91dCBpcyB1c2VkLCB0aGUgbGF5b3V0Cj4gKyAqIG9mIHZhbCBpczoKPiAr
ICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQo+ICsgKiAgLSA0Ni0xMyB0aGUg
bWFjaGluZSBmcmFtZSBudW1iZXIKPiArICogIC0gMTIgYXZhaWxhYmxlIGZvciBndWVzdAo+ICsg
KiAgLSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0Cj4gKyAqICAtIDEwIGF2YWlsYWJsZSBmb3IgZ3Vl
c3QKPiArICogIC0gOSBhdmFpbGFibGUgZm9yIGd1ZXN0Cj4gKyAqICAtIDggZ2xvYmFsCj4gKyAq
ICAtIDcgUEFUIChQU0UgaXMgZGlzYWJsZWQsIG11c3QgdXNlIGh5cGVyY2FsbCB0byBtYWtlIDRN
QiBvciAyTUIgcGFnZXMpCj4gKyAqICAtIDYgZGlydHkKPiArICogIC0gNSBhY2Nlc3NlZAo+ICsg
KiAgLSA0IHBhZ2UgY2FjaGVkIGRpc2FibGVkCj4gKyAqICAtIDMgcGFnZSB3cml0ZSB0aHJvdWdo
Cj4gKyAqICAtIDIgdXNlcnNwYWNlIGFjY2Vzc2libGUKPiArICogIC0gMSB3cml0ZWFibGUKPiAr
ICogIC0gMCBwcmVzZW50Cj4gKyAqCj4gKyAqICBUaGUgb25lIGJpdHMgdGhhdCBkb2VzIG5vdCBm
aXQgd2l0aCB0aGUgZGVmYXVsdCBsYXlvdXQgaXMgdGhlIFBBR0VfUFNFCj4gKyAqICBhbHNvIGNh
bGxlZCBQQUdFX1BBVCkuIFRoZSBNTVVFWFRfW1VOXU1BUktfU1VQRVIgYXJndW1lbnRzIHRvIHRo
ZQo+ICsgKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2VydmUgYXMgbWVjaGFuaXNtIHRvIHNldCBh
IHBhZ2V0YWJsZSB0byBiZSA0TUIKPiArICogIChvciAyTUIpIGluc3RlYWQgb2YgdXNpbmcgdGhl
IFBBR0VfUFNFIGJpdC4KPiArICoKPiArICogIFRoZSByZWFzb24gdGhhdCB0aGUgUEFHRV9QU0Ug
KGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRvIFhlbgo+ICsgKiAgdXNpbmcg
aXQgYXMgdGhlIFBhZ2UgQXR0cmlidXRlIFRhYmxlIChQQVQpIGJpdCAtIGZvciBkZXRhaWxzIG9u
IGl0IHBsZWFzZQo+ICsgKiAgcmVmZXIgdG8gSW50ZWwgU0RNIDEwLjEyLiBUaGUgUEFUIGFsbG93
cyB0byBzZXQgdGhlIGNhY2hpbmcgYXR0cmlidXRlcyBvZgo+ICsgKiAgcGFnZXMgaW5zdGVhZCBv
ZiB1c2luZyBNVFJScy4KPiArICoKPiArICogIFRoZSBQQVQgTVNSIGlzIGFzIGZvbGxvd3MgKGl0
IGlzIGEgNjQtYml0IHZhbHVlLCBlYWNoIGVudHJ5IGlzIDggYml0cyk6Cj4gKyAqICAgICAgICAg
ICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQQVQwCj4gKyAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwo+ICsgKiAgfCBVQyAgfCBVQy0gfCBXQyB8
IFdCIHwgVUMgfCBVQy0gfCBXQyB8IFdCIHwgIDw9IExpbnV4Cj4gKyAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwo+ICsgKiAgfCBVQyAgfCBVQy0gfCBXVCB8
IFdCIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwgIDw9IEJJT1MgKGRlZmF1bHQgd2hlbiBtYWNoaW5l
IGJvb3RzKQo+ICsgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0t
LSsKPiArICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8
PSBYZW4KPiArICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0r
Cj4gKyAqCj4gKyAqICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0
byBsb29raW5nIHVwCj4gKyAqICBCaXQgNywgQml0IDQsIGFuZCBCaXQgMyBvZiB2YWwgZW50cnk6
Cj4gKyAqCj4gKyAqICBQQVQvUFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0
IDMpLgo+ICsgKgo+ICsgKiAgSWYgYWxsIGJpdHMgYXJlIG9mZiwgdGhlbiB3ZSBhcmUgdXNpbmcg
UEFUMC4gSWYgYml0IDMgdHVybmVkIG9uLAo+ICsgKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwg
aWYgYml0IDMgYW5kIGJpdCA0LCB0aGVuIFBBVDIuLgo+ICsgKgo+ICsgKiAgQXMgeW91IGNhbiBz
ZWUsIHRoZSBMaW51eCBQQVQxIHRyYW5zbGF0ZXMgdG8gUEFUNCB1bmRlciBYZW4uIFdoaWNoIG1l
YW5zCj4gKyAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhhdCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVw
IGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQo+ICsgKiAgQ29tYmluZWQgb24gcGFnZXMgaXQg
TVVTVCB1c2UgUEFUNCBlbnRyeS4gTWVhbmluZyB0aGF0IEJpdCA3IChQQUdFX1BBVCkgaXMKPiAr
ICogIHNldC4gRm9yIGV4YW1wbGUsIHVuZGVyIExpbnV4IGl0IG9ubHkgdXNlcyBQQVQwLCBQQVQx
LCBhbmQgUEFUMiBmb3IgdGhlCj4gKyAqICBjYWNoaW5nIGFzOgo+ICsgKgo+ICsgKiAgIFdCID0g
bm9uZSAoc28gUEFUMCkKPiArICogICBXQyA9IFBXVCAoYml0IDMgb24pCj4gKyAqICAgVUMgPSBQ
V1QgfCBQQ0QgKGJpdCAzIGFuZCA0IGFyZSBvbikuCj4gKyAqCj4gKyAqIFRvIG1ha2UgaXQgd29y
ayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMgc286Cj4gKyAq
Cj4gKyAqICBQV1QgKHNvIGJpdCAzIG9uKSAtLT4gUEFUIChzbyBiaXQgNyBpcyBvbikgYW5kIGNs
ZWFyIGJpdCAzCj4gKyAqCj4gKyAqIEFuZCB0byB0cmFuc2xhdGUgYmFjayBpdCB3b3VsZDoKPiAr
ICoKPiArICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQg
Ny4KPiArICovCj4gKyNkZWZpbmUgTU1VX05PUk1BTF9QVF9VUERBVEUgICAgICAwIC8qIGNoZWNr
ZWQgJypwdHIgPSB2YWwnLiBwdHIgaXMgTUEuICAgICAgKi8KPiArI2RlZmluZSBNTVVfTUFDSFBI
WVNfVVBEQVRFICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZv
ciAqLwo+ICsjZGVmaW5lIE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQgMiAvKiBhdG9taWNhbGx5
OiAqcHRyID0gdmFsIHwgKCpwdHImKEF8RCkpICovCj4gKwo+ICsvKgo+ICsgKiBNTVUgRVhURU5E
RUQgT1BFUkFUSU9OUwo+ICsgKgo+ICsgKiBgIGVudW0gbmVnX2Vycm5vdmFsCj4gKyAqIGAgSFlQ
RVJWSVNPUl9tbXVleHRfb3AobW11ZXh0X29wX3QgdW9wc1tdLAo+ICsgKiBgICAgICAgICAgICAg
ICAgICAgICAgIFVJTlQzMiBjb3VudCwKPiArICogYCAgICAgICAgICAgICAgICAgICAgICBVSU5U
MzIgKnBkb25lLAo+ICsgKiBgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBmb3JlaWduZG9t
KQo+ICsgKi8KPiArLyogSFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBt
bXVleHRfb3Agc3RydWN0dXJlcy4KPiArICogQSBmb3JlaWduZG9tIChGRCkgY2FuIGJlIHNwZWNp
ZmllZCAob3IgRE9NSURfU0VMRiBmb3Igbm9uZSkuCj4gKyAqIFdoZXJlIHRoZSBGRCBoYXMgc29t
ZSBlZmZlY3QsIGl0IGlzIGRlc2NyaWJlZCBiZWxvdy4KPiArICoKPiArICogY21kOiBNTVVFWFRf
KFVOKVBJTl8qX1RBQkxFCj4gKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgdG8gYmUgKHVu
KXBpbm5lZCBhcyBhIHAudC4gcGFnZS4KPiArICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcg
dG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lmaWVkLgo+ICsgKgo+ICsgKiBjbWQ6IE1NVUVYVF9O
RVdfQkFTRVBUUgo+ICsgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRh
YmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCj4gKyAqCj4gKyAqIGNtZDogTU1VRVhUX05FV19V
U0VSX0JBU0VQVFIgW3g4Ni82NCBvbmx5XQo+ICsgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVy
IG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUKPiArICogICAgICB3aGVu
IGluIHVzZXIgc3BhY2UuCj4gKyAqCj4gKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9MT0NBTAo+
ICsgKiBObyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gRmx1c2hlcyBsb2NhbCBUTEIuCj4gKyAqCj4g
KyAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAo+ICsgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFk
ZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIHRoZSBsb2NhbCBUTEIuCj4gKyAqCj4gKyAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9NVUxUSQo+ICsgKiB2Y3B1bWFzazogUG9pbnRlciB0byBiaXRtYXAg
b2YgVkNQVXMgdG8gYmUgZmx1c2hlZC4KPiArICoKPiArICogY21kOiBNTVVFWFRfSU5WTFBHX01V
TFRJCj4gKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0byBiZSBmbHVzaGVkLgo+ICsg
KiB2Y3B1bWFzazogUG9pbnRlciB0byBiaXRtYXAgb2YgVkNQVXMgdG8gYmUgZmx1c2hlZC4KPiAr
ICoKPiArICogY21kOiBNTVVFWFRfVExCX0ZMVVNIX0FMTAo+ICsgKiBObyBhZGRpdGlvbmFsIGFy
Z3VtZW50cy4gRmx1c2hlcyBhbGwgVkNQVXMnIFRMQnMuCj4gKyAqCj4gKyAqIGNtZDogTU1VRVhU
X0lOVkxQR19BTEwKPiArICogbGluZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZsdXNo
ZWQgZnJvbSBhbGwgVkNQVXMnIFRMQnMuCj4gKyAqCj4gKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NB
Q0hFCj4gKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBXcml0ZXMgYmFjayBhbmQgZmx1c2hl
cyBjYWNoZSBjb250ZW50cy4KPiArICoKPiArICogY21kOiBNTVVFWFRfRkxVU0hfQ0FDSEVfR0xP
QkFMCj4gKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBXcml0ZXMgYmFjayBhbmQgZmx1c2hl
cyBjYWNoZSBjb250ZW50cwo+ICsgKiBvbiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLgo+ICsgKgo+
ICsgKiBjbWQ6IE1NVUVYVF9TRVRfTERUCj4gKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVz
cyBvZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4KPiArICogbnJfZW50czog
TnVtYmVyIG9mIGVudHJpZXMgaW4gTERULgo+ICsgKgo+ICsgKiBjbWQ6IE1NVUVYVF9DTEVBUl9Q
QUdFCj4gKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgdG8gYmUgY2xlYXJlZC4KPiArICoK
PiArICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCj4gKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1i
ZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHBhZ2UuCj4gKyAqIHNyY19tZm46IE1hY2hpbmUgZnJhbWUg
bnVtYmVyIG9mIHRoZSBzb3VyY2UgcGFnZS4KPiArICoKPiArICogY21kOiBNTVVFWFRfW1VOXU1B
UktfU1VQRVIKPiArICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciBvZiBoZWFkIG9mIHN1cGVy
cGFnZSB0byBiZSBbdW5dbWFya2VkLgo+ICsgKi8KPiArLyogYCBlbnVtIG1tdWV4dF9jbWQgeyAq
Lwo+ICsjZGVmaW5lIE1NVUVYVF9QSU5fTDFfVEFCTEUgICAgICAwCj4gKyNkZWZpbmUgTU1VRVhU
X1BJTl9MMl9UQUJMRSAgICAgIDEKPiArI2RlZmluZSBNTVVFWFRfUElOX0wzX1RBQkxFICAgICAg
Mgo+ICsjZGVmaW5lIE1NVUVYVF9QSU5fTDRfVEFCTEUgICAgICAzCj4gKyNkZWZpbmUgTU1VRVhU
X1VOUElOX1RBQkxFICAgICAgIDQKPiArI2RlZmluZSBNTVVFWFRfTkVXX0JBU0VQVFIgICAgICAg
NQo+ICsjZGVmaW5lIE1NVUVYVF9UTEJfRkxVU0hfTE9DQUwgICA2Cj4gKyNkZWZpbmUgTU1VRVhU
X0lOVkxQR19MT0NBTCAgICAgIDcKPiArI2RlZmluZSBNTVVFWFRfVExCX0ZMVVNIX01VTFRJICAg
OAo+ICsjZGVmaW5lIE1NVUVYVF9JTlZMUEdfTVVMVEkgICAgICA5Cj4gKyNkZWZpbmUgTU1VRVhU
X1RMQl9GTFVTSF9BTEwgICAgMTAKPiArI2RlZmluZSBNTVVFWFRfSU5WTFBHX0FMTCAgICAgICAx
MQo+ICsjZGVmaW5lIE1NVUVYVF9GTFVTSF9DQUNIRSAgICAgIDEyCj4gKyNkZWZpbmUgTU1VRVhU
X1NFVF9MRFQgICAgICAgICAgMTMKPiArI2RlZmluZSBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiAx
NQo+ICsjZGVmaW5lIE1NVUVYVF9DTEVBUl9QQUdFICAgICAgIDE2Cj4gKyNkZWZpbmUgTU1VRVhU
X0NPUFlfUEFHRSAgICAgICAgMTcKPiArI2RlZmluZSBNTVVFWFRfRkxVU0hfQ0FDSEVfR0xPQkFM
IDE4Cj4gKyNkZWZpbmUgTU1VRVhUX01BUktfU1VQRVIgICAgICAgMTkKPiArI2RlZmluZSBNTVVF
WFRfVU5NQVJLX1NVUEVSICAgICAyMAo+ICsvKiBgIH0gKi8KPiArCj4gKyNpZm5kZWYgX19BU1NF
TUJMWV9fCj4gK3N0cnVjdCBtbXVleHRfb3Agewo+ICsgICAgVUlOVDMyIGNtZDsgLyogPT4gZW51
bSBtbXVleHRfY21kICovCj4gKyAgICB1bmlvbiB7Cj4gKyAgICAgICAgLyogW1VOXVBJTl9UQUJM
RSwgTkVXX0JBU0VQVFIsIE5FV19VU0VSX0JBU0VQVFIKPiArICAgICAgICAgKiBDTEVBUl9QQUdF
LCBDT1BZX1BBR0UsIFtVTl1NQVJLX1NVUEVSICovCj4gKyAgICAgICAgeGVuX3Bmbl90ICAgICBt
Zm47Cj4gKyAgICAgICAgLyogSU5WTFBHX0xPQ0FMLCBJTlZMUEdfQUxMLCBTRVRfTERUICovCj4g
KyAgICAgICAgVUlOVE4gbGluZWFyX2FkZHI7Cj4gKyAgICB9IGFyZzE7Cj4gKyAgICB1bmlvbiB7
Cj4gKyAgICAgICAgLyogU0VUX0xEVCAqLwo+ICsgICAgICAgIFVJTlQzMiBucl9lbnRzOwo+ICsg
ICAgICAgIC8qIFRMQl9GTFVTSF9NVUxUSSwgSU5WTFBHX01VTFRJICovCj4gKyNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDUKPiArICAgICAgICBYRU5fR1VFU1RfSEFO
RExFKGNvbnN0X3ZvaWQpIHZjcHVtYXNrOwo+ICsjZWxzZQo+ICsgICAgICAgIGNvbnN0IFZPSUQg
KnZjcHVtYXNrOwo+ICsjZW5kaWYKPiArICAgICAgICAvKiBDT1BZX1BBR0UgKi8KPiArICAgICAg
ICB4ZW5fcGZuX3Qgc3JjX21mbjsKPiArICAgIH0gYXJnMjsKPiArfTsKPiArdHlwZWRlZiBzdHJ1
Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtbXVl
eHRfb3BfdCk7Cj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogYCBlbnVtIG5lZ19lcnJub3ZhbAo+
ICsgKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUlOVE4gdmEsIHU2NCB2YWwsCj4g
KyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2bV9mbGFncyBmbGFncykK
PiArICogYAo+ICsgKiBgIGVudW0gbmVnX2Vycm5vdmFsCj4gKyAqIGAgSFlQRVJWSVNPUl91cGRh
dGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbihVSU5UTiB2YSwgdTY0IHZhbCwKPiArICogYCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdXZtX2ZsYWdzIGZsYWdz
LAo+ICsgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRf
dCBkb21pZCkKPiArICogYAo+ICsgKiBgIEB2YTogVGhlIHZpcnR1YWwgYWRkcmVzcyB3aG9zZSBt
YXBwaW5nIHdlIHdhbnQgdG8gY2hhbmdlCj4gKyAqIGAgQHZhbDogVGhlIG5ldyBwYWdlIHRhYmxl
IGVudHJ5LCBtdXN0IGNvbnRhaW4gYSBtYWNoaW5lIGFkZHJlc3MKPiArICogYCBAZmxhZ3M6IENv
bnRyb2wgVExCIGZsdXNoZXMKPiArICovCj4gKy8qIFRoZXNlIGFyZSBwYXNzZWQgYXMgJ2ZsYWdz
JyB0byB1cGRhdGVfdmFfbWFwcGluZy4gVGhleSBjYW4gYmUgT1JlZC4gKi8KPiArLyogV2hlbiBz
cGVjaWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1h
cC4gICAqLwo+ICsvKiBVVk1GX0xPQ0FMIGlzIG1lcmVseSBVVk1GX01VTFRJIHdpdGggYSBOVUxM
IGJpdG1hcCBwb2ludGVyLiAgICAgICAgICovCj4gKy8qIGAgZW51bSB1dm1fZmxhZ3MgeyAqLwo+
ICsjZGVmaW5lIFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5vIGZsdXNoaW5n
IGF0IGFsbC4gICAqLwo+ICsjZGVmaW5lIFVWTUZfVExCX0ZMVVNIICAgICAgICAgICgxVUw8PDAp
IC8qIEZsdXNoIGVudGlyZSBUTEIocykuICAqLwo+ICsjZGVmaW5lIFVWTUZfSU5WTFBHICAgICAg
ICAgICAgICgyVUw8PDApIC8qIEZsdXNoIG9ubHkgb25lIGVudHJ5LiAqLwo+ICsjZGVmaW5lIFVW
TUZfRkxVU0hUWVBFX01BU0sgICAgICgzVUw8PDApCj4gKyNkZWZpbmUgVVZNRl9NVUxUSSAgICAg
ICAgICAgICAgKDBVTDw8MikgLyogRmx1c2ggc3Vic2V0IG9mIFRMQnMuICovCj4gKyNkZWZpbmUg
VVZNRl9MT0NBTCAgICAgICAgICAgICAgKDBVTDw8MikgLyogRmx1c2ggbG9jYWwgVExCLiAgICAg
ICovCj4gKyNkZWZpbmUgVVZNRl9BTEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2gg
YWxsIFRMQnMuICAgICAgICovCj4gKy8qIGAgfSAqLwo+ICsKPiArLyoKPiArICogQ29tbWFuZHMg
dG8gSFlQRVJWSVNPUl9jb25zb2xlX2lvKCkuCj4gKyAqLwo+ICsjZGVmaW5lIENPTlNPTEVJT193
cml0ZSAgICAgICAgIDAKPiArI2RlZmluZSBDT05TT0xFSU9fcmVhZCAgICAgICAgICAxCj4gKwo+
ICsvKgo+ICsgKiBDb21tYW5kcyB0byBIWVBFUlZJU09SX3ZtX2Fzc2lzdCgpLgo+ICsgKi8KPiAr
I2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAgICAgICAgICAgICAgICAwCj4gKyNkZWZpbmUgVk1B
U1NUX0NNRF9kaXNhYmxlICAgICAgICAgICAgICAgMQo+ICsKPiArLyogeDg2LzMyIGd1ZXN0czog
c2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMuICovCj4gKyNkZWZpbmUgVk1BU1NUX1RZ
UEVfNGdiX3NlZ21lbnRzICAgICAgICAgMAo+ICsKPiArLyogeDg2LzMyIGd1ZXN0czogdHJhcCAo
dmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1c2VkLiAqLwo+ICsjZGVmaW5l
IFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50c19ub3RpZnkgIDEKPiArCj4gKy8qCj4gKyAqIHg4NiBn
dWVzdHM6IHN1cHBvcnQgd3JpdGVzIHRvIGJvdHRvbS1sZXZlbCBQVEVzLgo+ICsgKiBOQjEuIFBh
Z2UtZGlyZWN0b3J5IGVudHJpZXMgY2Fubm90IGJlIHdyaXR0ZW4uCj4gKyAqIE5CMi4gR3Vlc3Qg
bXVzdCBjb250aW51ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBURXMuCj4g
KyAqLwo+ICsjZGVmaW5lIFZNQVNTVF9UWVBFX3dyaXRhYmxlX3BhZ2V0YWJsZXMgIDIKPiArCj4g
Ky8qIHg4Ni9QQUUgZ3Vlc3RzOiBzdXBwb3J0IFBEUFRzIGFib3ZlIDRHQi4gKi8KPiArI2RlZmlu
ZSBWTUFTU1RfVFlQRV9wYWVfZXh0ZW5kZWRfY3IzICAgICAzCj4gKwo+ICsjZGVmaW5lIE1BWF9W
TUFTU1RfVFlQRSAgICAgICAgICAgICAgICAgIDMKPiArCj4gKyNpZm5kZWYgX19BU1NFTUJMWV9f
Cj4gKwo+ICt0eXBlZGVmIFVJTlQxNiBkb21pZF90Owo+ICsKPiArLyogRG9tYWluIGlkcyA+PSBE
T01JRF9GSVJTVF9SRVNFUlZFRCBjYW5ub3QgYmUgdXNlZCBmb3Igb3JkaW5hcnkgZG9tYWlucy4g
Ki8KPiArI2RlZmluZSBET01JRF9GSVJTVF9SRVNFUlZFRCAoMHg3RkYwVSkKPiArCj4gKy8qIERP
TUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0YWluIGNvbnRleHRzIHRvIHJlZmVyIHRvIG9uZXNlbGYu
ICovCj4gKyNkZWZpbmUgRE9NSURfU0VMRiAoMHg3RkYwVSkKPiArCj4gKy8qCj4gKyAqIERPTUlE
X0lPIGlzIHVzZWQgdG8gcmVzdHJpY3QgcGFnZS10YWJsZSB1cGRhdGVzIHRvIG1hcHBpbmcgSS9P
IG1lbW9yeS4KPiArICogQWx0aG91Z2ggbm8gRm9yZWlnbiBEb21haW4gbmVlZCBiZSBzcGVjaWZp
ZWQgdG8gbWFwIEkvTyBwYWdlcywgRE9NSURfSU8KPiArICogaXMgdXNlZnVsIHRvIGVuc3VyZSB0
aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFwIGFyZSBhY2NpZGVudGFsbHkKPiAr
ICogaW5zdGFsbGVkLiAoZS5nLiwgaW4gTGludXggdGhpcyBjb3VsZCBjYXVzZSBoYXZvYyBhcyBy
ZWZlcmVuY2UgY291bnRzCj4gKyAqIGFyZW4ndCBhZGp1c3RlZCBvbiB0aGUgSS9PLW1hcHBpbmcg
Y29kZSBwYXRoKS4KPiArICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIE1NVUVYVF9TRVRfRk9S
RUlHTkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KPiArICogYmUgc3BlY2lmaWVkIGJ5IGFu
eSBjYWxsaW5nIGRvbWFpbi4KPiArICovCj4gKyNkZWZpbmUgRE9NSURfSU8gICAoMHg3RkYxVSkK
PiArCj4gKy8qCj4gKyAqIERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9t
YWlucyB0byBtYXAgcmVzdHJpY3RlZCBwYXJ0cyBvZgo+ICsgKiBYZW4ncyBoZWFwIHNwYWNlIChl
LmcuLCB0aGUgbWFjaGluZV90b19waHlzIHRhYmxlKS4KPiArICogVGhpcyBvbmx5IG1ha2VzIHNl
bnNlIGluIE1NVUVYVF9TRVRfRk9SRUlHTkRPTSwgYW5kIGlzIG9ubHkgcGVybWl0dGVkIGlmCj4g
KyAqIHRoZSBjYWxsZXIgaXMgcHJpdmlsZWdlZC4KPiArICovCj4gKyNkZWZpbmUgRE9NSURfWEVO
ICAoMHg3RkYyVSkKPiArCj4gKy8qCj4gKyAqIERPTUlEX0NPVyBpcyB1c2VkIGFzIHRoZSBvd25l
ciBvZiBzaGFyYWJsZSBwYWdlcyAqLwo+ICsjZGVmaW5lIERPTUlEX0NPVyAgKDB4N0ZGM1UpCj4g
Kwo+ICsvKiBET01JRF9JTlZBTElEIGlzIHVzZWQgdG8gaWRlbnRpZnkgcGFnZXMgd2l0aCB1bmtu
b3duIG93bmVyLiAqLwo+ICsjZGVmaW5lIERPTUlEX0lOVkFMSUQgKDB4N0ZGNFUpCj4gKwo+ICsv
KiBJZGxlIGRvbWFpbi4gKi8KPiArI2RlZmluZSBET01JRF9JRExFICgweDdGRkZVKQo+ICsKPiAr
LyoKPiArICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX21tdV91cGRhdGUo
KS4KPiArICogTkIuIFRoZSBmaWVsZHMgYXJlIG5hdHVyYWwgcG9pbnRlci9hZGRyZXNzIHNpemUg
Zm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgo+ICsgKi8KPiArc3RydWN0IG1tdV91cGRhdGUgewo+ICsg
ICAgVUlOVDY0IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNzIG9mIFBURS4gKi8KPiArICAg
IFVJTlQ2NCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQVEUuICAgICovCj4gK307Cj4g
K3R5cGVkZWYgc3RydWN0IG1tdV91cGRhdGUgbW11X3VwZGF0ZV90Owo+ICtERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShtbXVfdXBkYXRlX3QpOwo+ICsKPiArLyoKPiArICogYCBlbnVtIG5lZ19lcnJu
b3ZhbAo+ICsgKiBgIEhZUEVSVklTT1JfbXVsdGljYWxsKG11bHRpY2FsbF9lbnRyeV90IGNhbGxf
bGlzdFtdLAo+ICsgKiBgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBucl9jYWxscyk7Cj4g
KyAqCj4gKyAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFsIHJlZ2lzdGVyIHNpemUgZm9yIHRo
aXMgYXJjaGl0ZWN0dXJlLgo+ICsgKi8KPiArc3RydWN0IG11bHRpY2FsbF9lbnRyeSB7Cj4gKyAg
ICBVSU5UTiBvcCwgcmVzdWx0Owo+ICsgICAgVUlOVE4gYXJnc1s2XTsKPiArfTsKPiArdHlwZWRl
ZiBzdHJ1Y3QgbXVsdGljYWxsX2VudHJ5IG11bHRpY2FsbF9lbnRyeV90Owo+ICtERUZJTkVfWEVO
X0dVRVNUX0hBTkRMRShtdWx0aWNhbGxfZW50cnlfdCk7Cj4gKwo+ICsjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA0MDAKPiArLyoKPiArICogRXZlbnQgY2hhbm5lbCBlbmRw
b2ludHMgcGVyIGRvbWFpbiAod2hlbiB1c2luZyB0aGUgMi1sZXZlbCBBQkkpOgo+ICsgKiAgMTAy
NCBpZiBhIElOVE4gaXMgMzIgYml0czsgNDA5NiBpZiBhIElOVE4gaXMgNjQgYml0cy4KPiArICov
Cj4gKyNkZWZpbmUgTlJfRVZFTlRfQ0hBTk5FTFMgRVZUQ0hOXzJMX05SX0NIQU5ORUxTCj4gKyNl
bmRpZgo+ICsKPiArc3RydWN0IHZjcHVfdGltZV9pbmZvIHsKPiArICAgIC8qCj4gKyAgICAgKiBV
cGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBwcmVjZWRlZCBhbmQgZm9sbG93ZWQg
YnkgYW4KPiArICAgICAqIGluY3JlbWVudCBvZiAndmVyc2lvbicuIFRoZSBndWVzdCBjYW4gdGhl
cmVmb3JlIGRldGVjdCB1cGRhdGVzIGJ5Cj4gKyAgICAgKiBsb29raW5nIGZvciBjaGFuZ2VzIHRv
ICd2ZXJzaW9uJy4gSWYgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCBvZgo+ICsgICAgICogdGhl
IHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcyBhbmQg
dGhlIGd1ZXN0Cj4gKyAgICAgKiBtdXN0IHdhaXQgdG8gcmVhZCBhIGNvbnNpc3RlbnQgc2V0IG9m
IHZhbHVlcy4KPiArICAgICAqIFRoZSBjb3JyZWN0IHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSB2
ZXJzaW9uIG51bWJlciBpcyBzaW1pbGFyIHRvCj4gKyAgICAgKiBMaW51eCdzIHNlcWxvY2s6IHNl
ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHJlYWRfc2VxYmVnaW4vcmVhZF9zZXFyZXRyeS4KPiAr
ICAgICAqLwo+ICsgICAgVUlOVDMyIHZlcnNpb247Cj4gKyAgICBVSU5UMzIgcGFkMDsKPiArICAg
IFVJTlQ2NCB0c2NfdGltZXN0YW1wOyAgIC8qIFRTQyBhdCBsYXN0IHVwZGF0ZSBvZiB0aW1lIHZh
bHMuICAqLwo+ICsgICAgVUlOVDY0IHN5c3RlbV90aW1lOyAgICAgLyogVGltZSwgaW4gbmFub3Nl
Y3MsIHNpbmNlIGJvb3QuICAgICovCj4gKyAgICAvKgo+ICsgICAgICogQ3VycmVudCBzeXN0ZW0g
dGltZToKPiArICAgICAqICAgc3lzdGVtX3RpbWUgKwo+ICsgICAgICogICAoKCgodHNjIC0gdHNj
X3RpbWVzdGFtcCkgPDwgdHNjX3NoaWZ0KSAqIHRzY190b19zeXN0ZW1fbXVsKSA+PiAzMikKPiAr
ICAgICAqIENQVSBmcmVxdWVuY3kgKEh6KToKPiArICAgICAqICAgKCgxMF45IDw8IDMyKSAvIHRz
Y190b19zeXN0ZW1fbXVsKSA+PiB0c2Nfc2hpZnQKPiArICAgICAqLwo+ICsgICAgVUlOVDMyIHRz
Y190b19zeXN0ZW1fbXVsOwo+ICsgICAgSU5UOCAgIHRzY19zaGlmdDsKPiArICAgIElOVDggICBw
YWQxWzNdOwo+ICt9OyAvKiAzMiBieXRlcyAqLwo+ICt0eXBlZGVmIHN0cnVjdCB2Y3B1X3RpbWVf
aW5mbyB2Y3B1X3RpbWVfaW5mb190Owo+ICsKPiArc3RydWN0IHZjcHVfaW5mbyB7Cj4gKyAgICAv
Kgo+ICsgICAgICogJ2V2dGNobl91cGNhbGxfcGVuZGluZycgaXMgd3JpdHRlbiBub24temVybyBi
eSBYZW4gdG8gaW5kaWNhdGUKPiArICAgICAqIGEgcGVuZGluZyBub3RpZmljYXRpb24gZm9yIGEg
cGFydGljdWxhciBWQ1BVLiBJdCBpcyB0aGVuIGNsZWFyZWQgCj4gKyAgICAgKiBieSB0aGUgZ3Vl
c3QgT1MgL2JlZm9yZS8gY2hlY2tpbmcgZm9yIHBlbmRpbmcgd29yaywgdGh1cyBhdm9pZGluZwo+
ICsgICAgICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUgbWFzayBpcyBvbmx5
IGFjY2Vzc2VkIGJ5IFhlbgo+ICsgICAgICogb24gdGhlIENQVSB0aGF0IGlzIGN1cnJlbnRseSBo
b3N0aW5nIHRoZSBWQ1BVLiBUaGlzIG1lYW5zIHRoYXQgdGhlCj4gKyAgICAgKiBwZW5kaW5nIGFu
ZCBtYXNrIGZsYWdzIGNhbiBiZSB1cGRhdGVkIGJ5IHRoZSBndWVzdCB3aXRob3V0IHNwZWNpYWwK
PiArICAgICAqIHN5bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4NiBMT0NL
IHByZWZpeCkuCj4gKyAgICAgKiBUaGlzIG1heSBzZWVtIHN1Ym9wdGltYWwgYmVjYXVzZSBpZiB0
aGUgcGVuZGluZyBmbGFnIGlzIHNldCBieQo+ICsgICAgICogYSBkaWZmZXJlbnQgQ1BVIHRoZW4g
YW4gSVBJIG1heSBiZSBzY2hlZHVsZWQgZXZlbiB3aGVuIHRoZSBtYXNrCj4gKyAgICAgKiBpcyBz
ZXQuIEhvd2V2ZXIsIG5vdGU6Cj4gKyAgICAgKiAgMS4gVGhlIHRhc2sgb2YgJ2ludGVycnVwdCBo
b2xkb2ZmJyBpcyBjb3ZlcmVkIGJ5IHRoZSBwZXItZXZlbnQtCj4gKyAgICAgKiAgICAgY2hhbm5l
bCBtYXNrIGJpdHMuIEEgJ25vaXN5JyBldmVudCB0aGF0IGlzIGNvbnRpbnVhbGx5IGJlaW5nCj4g
KyAgICAgKiAgICAgdHJpZ2dlcmVkIGNhbiBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVy
eSBwcmVjaXNlCj4gKyAgICAgKiAgICAgZ3JhbnVsYXJpdHkuCj4gKyAgICAgKiAgMi4gVGhlIG1h
aW4gcHVycG9zZSBvZiB0aGUgcGVyLVZDUFUgbWFzayBpcyB0aGVyZWZvcmUgdG8gcmVzdHJpY3QK
PiArICAgICAqICAgICByZWVudHJhbnQgZXhlY3V0aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5j
eSBjb250cm9sLCBvciB0bwo+ICsgICAgICogICAgIHByZXZlbnQgdW5ib3VuZGVkIHN0YWNrIHVz
YWdlLiBXaGF0ZXZlciB0aGUgcHVycG9zZSwgd2UgZXhwZWN0Cj4gKyAgICAgKiAgICAgdGhhdCB0
aGUgbWFzayB3aWxsIGJlIGFzc2VydGVkIG9ubHkgZm9yIHNob3J0IHBlcmlvZHMgYXQgYSB0aW1l
LAo+ICsgICAgICogICAgIGFuZCBzbyB0aGUgbGlrZWxpaG9vZCBvZiBhICdzcHVyaW91cycgSVBJ
IGlzIHN1aXRhYmx5IHNtYWxsLgo+ICsgICAgICogVGhlIG1hc2sgaXMgcmVhZCBiZWZvcmUgbWFr
aW5nIGFuIGV2ZW50IHVwY2FsbCB0byB0aGUgZ3Vlc3Q6IGEKPiArICAgICAqIG5vbi16ZXJvIG1h
c2sgdGhlcmVmb3JlIGd1YXJhbnRlZXMgdGhhdCB0aGUgVkNQVSB3aWxsIG5vdCByZWNlaXZlCj4g
KyAgICAgKiBhbiB1cGNhbGwgYWN0aXZhdGlvbi4gVGhlIG1hc2sgaXMgY2xlYXJlZCB3aGVuIHRo
ZSBWQ1BVIHJlcXVlc3RzCj4gKyAgICAgKiB0byBibG9jazogdGhpcyBhdm9pZHMgd2FrZXVwLXdh
aXRpbmcgcmFjZXMuCj4gKyAgICAgKi8KPiArICAgIFVJTlQ4IGV2dGNobl91cGNhbGxfcGVuZGlu
ZzsKPiArI2lmZGVmIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLCj4gKyAgICBVSU5UOCBldnRjaG5f
dXBjYWxsX21hc2s7Cj4gKyNlbHNlIC8qIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLICovCj4gKyAg
ICBVSU5UOCBwYWQwOwo+ICsjZW5kaWYgLyogWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sgKi8KPiAr
ICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKPiArICAgIHN0cnVjdCBhcmNoX3Zj
cHVfaW5mbyBhcmNoOwo+ICsgICAgc3RydWN0IHZjcHVfdGltZV9pbmZvIHRpbWU7Cj4gK307IC8q
IDY0IGJ5dGVzICh4ODYpICovCj4gKyNpZm5kZWYgX19YRU5fXwo+ICt0eXBlZGVmIHN0cnVjdCB2
Y3B1X2luZm8gdmNwdV9pbmZvX3Q7Cj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogYGluY29udGVu
dHMgMjAwIHN0YXJ0b2ZkYXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1
cmUKPiArICogWGVuL2tlcm5lbCBzaGFyZWQgZGF0YSAtLSBwb2ludGVyIHByb3ZpZGVkIGluIHN0
YXJ0X2luZm8uCj4gKyAqCj4gKyAqIFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90
aCBzbWFsbGVyIHRoYW4gYSBwYWdlLCBhbmQgdGhlCj4gKyAqIG9ubHkgZGF0YSBvbiB0aGUgc2hh
cmVkIHBhZ2UsIGJ1dCBtYXkgdmFyeSBpbiBhY3R1YWwgc2l6ZSBldmVuIHdpdGhpbgo+ICsgKiBj
b21wYXRpYmxlIFhlbiB2ZXJzaW9uczsgZ3Vlc3RzIHNob3VsZCBub3QgcmVseSBvbiB0aGUgc2l6
ZQo+ICsgKiBvZiB0aGlzIHN0cnVjdHVyZSByZW1haW5pbmcgY29uc3RhbnQuCj4gKyAqLwo+ICtz
dHJ1Y3Qgc2hhcmVkX2luZm8gewo+ICsgICAgc3RydWN0IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVO
X0xFR0FDWV9NQVhfVkNQVVNdOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBBIGRvbWFpbiBjYW4g
Y3JlYXRlICJldmVudCBjaGFubmVscyIgb24gd2hpY2ggaXQgY2FuIHNlbmQgYW5kIHJlY2VpdmUK
PiArICAgICAqIGFzeW5jaHJvbm91cyBldmVudCBub3RpZmljYXRpb25zLiBUaGVyZSBhcmUgdGhy
ZWUgY2xhc3NlcyBvZiBldmVudCB0aGF0Cj4gKyAgICAgKiBhcmUgZGVsaXZlcmVkIGJ5IHRoaXMg
bWVjaGFuaXNtOgo+ICsgICAgICogIDEuIEJpLWRpcmVjdGlvbmFsIGludGVyLSBhbmQgaW50cmEt
ZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QKPiArICAgICAqICAgICBhcnJhbmdlIG91
dC1vZi1iYW5kIHRvIHNldCB1cCBhIGNvbm5lY3Rpb24gKHVzdWFsbHkgYnkgYWxsb2NhdGluZwo+
ICsgICAgICogICAgIGFuIHVuYm91bmQgJ2xpc3RlbmVyJyBwb3J0IGFuZCBhdmVydGlzaW5nIHRo
YXQgdmlhIGEgc3RvcmFnZSBzZXJ2aWNlCj4gKyAgICAgKiAgICAgc3VjaCBhcyB4ZW5zdG9yZSku
Cj4gKyAgICAgKiAgMi4gUGh5c2ljYWwgaW50ZXJydXB0cy4gQSBkb21haW4gd2l0aCBzdWl0YWJs
ZSBoYXJkd2FyZS1hY2Nlc3MKPiArICAgICAqICAgICBwcml2aWxlZ2VzIGNhbiBiaW5kIGFuIGV2
ZW50LWNoYW5uZWwgcG9ydCB0byBhIHBoeXNpY2FsIGludGVycnVwdAo+ICsgICAgICogICAgIHNv
dXJjZS4KPiArICAgICAqICAzLiBWaXJ0dWFsIGludGVycnVwdHMgKCdldmVudHMnKS4gQSBkb21h
aW4gY2FuIGJpbmQgYW4gZXZlbnQtY2hhbm5lbAo+ICsgICAgICogICAgIHBvcnQgdG8gYSB2aXJ0
dWFsIGludGVycnVwdCBzb3VyY2UsIHN1Y2ggYXMgdGhlIHZpcnR1YWwtdGltZXIKPiArICAgICAq
ICAgICBkZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgo+ICsgICAgICogCj4gKyAgICAg
KiBFdmVudCBjaGFubmVscyBhcmUgYWRkcmVzc2VkIGJ5IGEgInBvcnQgaW5kZXgiLiBFYWNoIGNo
YW5uZWwgaXMKPiArICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZvcm1hdGlv
bjoKPiArICAgICAqICAxLiBQRU5ESU5HIC0tIG5vdGlmaWVzIHRoZSBkb21haW4gdGhhdCB0aGVy
ZSBpcyBhIHBlbmRpbmcgbm90aWZpY2F0aW9uCj4gKyAgICAgKiAgICAgdG8gYmUgcHJvY2Vzc2Vk
LiBUaGlzIGJpdCBpcyBjbGVhcmVkIGJ5IHRoZSBndWVzdC4KPiArICAgICAqICAyLiBNQVNLIC0t
IGlmIHRoaXMgYml0IGlzIGNsZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2YgUEVORElORwo+
ICsgICAgICogICAgIHdpbGwgY2F1c2UgYW4gYXN5bmNocm9ub3VzIHVwY2FsbCB0byBiZSBzY2hl
ZHVsZWQuIFRoaXMgYml0IGlzIG9ubHkKPiArICAgICAqICAgICB1cGRhdGVkIGJ5IHRoZSBndWVz
dC4gSXQgaXMgcmVhZC1vbmx5IHdpdGhpbiBYZW4uIElmIGEgY2hhbm5lbAo+ICsgICAgICogICAg
IGJlY29tZXMgcGVuZGluZyB3aGlsZSB0aGUgY2hhbm5lbCBpcyBtYXNrZWQgdGhlbiB0aGUgJ2Vk
Z2UnIGlzIGxvc3QKPiArICAgICAqICAgICAoaS5lLiwgd2hlbiB0aGUgY2hhbm5lbCBpcyB1bm1h
c2tlZCwgdGhlIGd1ZXN0IG11c3QgbWFudWFsbHkgaGFuZGxlCj4gKyAgICAgKiAgICAgcGVuZGlu
ZyBub3RpZmljYXRpb25zIGFzIG5vIHVwY2FsbCB3aWxsIGJlIHNjaGVkdWxlZCBieSBYZW4pLgo+
ICsgICAgICogCj4gKyAgICAgKiBUbyBleHBlZGl0ZSBzY2FubmluZyBvZiBwZW5kaW5nIG5vdGlm
aWNhdGlvbnMsIGFueSAwLT4xIHBlbmRpbmcKPiArICAgICAqIHRyYW5zaXRpb24gb24gYW4gdW5t
YXNrZWQgY2hhbm5lbCBjYXVzZXMgYSBjb3JyZXNwb25kaW5nIGJpdCBpbiBhCj4gKyAgICAgKiBw
ZXItdmNwdSBzZWxlY3RvciB3b3JkIHRvIGJlIHNldC4gRWFjaCBiaXQgaW4gdGhlIHNlbGVjdG9y
IGNvdmVycyBhCj4gKyAgICAgKiAnQyBJTlROJyBpbiB0aGUgUEVORElORyBiaXRmaWVsZCBhcnJh
eS4KPiArICAgICAqLwo+ICsgICAgeGVuX3Vsb25nX3QgZXZ0Y2huX3BlbmRpbmdbc2l6ZW9mKHhl
bl91bG9uZ190KSAqIDhdOwo+ICsgICAgeGVuX3Vsb25nX3QgZXZ0Y2huX21hc2tbc2l6ZW9mKHhl
bl91bG9uZ190KSAqIDhdOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBXYWxsY2xvY2sgdGltZTog
dXBkYXRlZCBvbmx5IGJ5IGNvbnRyb2wgc29mdHdhcmUuIEd1ZXN0cyBzaG91bGQgYmFzZQo+ICsg
ICAgICogdGhlaXIgZ2V0dGltZW9mZGF5KCkgc3lzY2FsbCBvbiB0aGlzIHdhbGxjbG9jay1iYXNl
IHZhbHVlLgo+ICsgICAgICovCj4gKyAgICBVSU5UMzIgd2NfdmVyc2lvbjsgICAgICAvKiBWZXJz
aW9uIGNvdW50ZXI6IHNlZSB2Y3B1X3RpbWVfaW5mb190LiAqLwo+ICsgICAgVUlOVDMyIHdjX3Nl
YzsgICAgICAgICAgLyogU2VjcyAgMDA6MDA6MDAgVVRDLCBKYW4gMSwgMTk3MC4gICovCj4gKyAg
ICBVSU5UMzIgd2NfbnNlYzsgICAgICAgICAvKiBOc2VjcyAwMDowMDowMCBVVEMsIEphbiAxLCAx
OTcwLiAgKi8KPiArCj4gKyAgICBzdHJ1Y3QgYXJjaF9zaGFyZWRfaW5mbyBhcmNoOwo+ICsKPiAr
fTsKPiArI2lmbmRlZiBfX1hFTl9fCj4gK3R5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZvIHNoYXJl
ZF9pbmZvX3Q7Cj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogYGluY29udGVudHMgMjAwIHN0YXJ0
b2ZkYXkgU3RhcnQtb2YtZGF5IG1lbW9yeSBsYXlvdXQKPiArICoKPiArICogIDEuIFRoZSBkb21h
aW4gaXMgc3RhcnRlZCB3aXRoaW4gY29udGlndW91cyB2aXJ0dWFsLW1lbW9yeSByZWdpb24uCj4g
KyAqICAyLiBUaGUgY29udGlndW91cyByZWdpb24gZW5kcyBvbiBhbiBhbGlnbmVkIDRNQiBib3Vu
ZGFyeS4KPiArICogIDMuIFRoaXMgdGhlIG9yZGVyIG9mIGJvb3RzdHJhcCBlbGVtZW50cyBpbiB0
aGUgaW5pdGlhbCB2aXJ0dWFsIHJlZ2lvbjoKPiArICogICAgICBhLiByZWxvY2F0ZWQga2VybmVs
IGltYWdlCj4gKyAqICAgICAgYi4gaW5pdGlhbCByYW0gZGlzayAgICAgICAgICAgICAgW21vZF9z
dGFydCwgbW9kX2xlbl0KPiArICogICAgICBjLiBsaXN0IG9mIGFsbG9jYXRlZCBwYWdlIGZyYW1l
cyBbbWZuX2xpc3QsIG5yX3BhZ2VzXQo+ICsgKiAgICAgICAgICh1bmxlc3MgcmVsb2NhdGVkIGR1
ZSB0byBYRU5fRUxGTk9URV9JTklUX1AyTSkKPiArICogICAgICBkLiBzdGFydF9pbmZvX3Qgc3Ry
dWN0dXJlICAgICAgICBbcmVnaXN0ZXIgRVNJICh4ODYpXQo+ICsgKiAgICAgIGUuIGJvb3RzdHJh
cCBwYWdlIHRhYmxlcyAgICAgICAgIFtwdF9iYXNlIGFuZCBDUjMgKHg4NildCj4gKyAqICAgICAg
Zi4gYm9vdHN0cmFwIHN0YWNrICAgICAgICAgICAgICAgW3JlZ2lzdGVyIEVTUCAoeDg2KV0KPiAr
ICogIDQuIEJvb3RzdHJhcCBlbGVtZW50cyBhcmUgcGFja2VkIHRvZ2V0aGVyLCBidXQgZWFjaCBp
cyA0a0ItYWxpZ25lZC4KPiArICogIDUuIFRoZSBpbml0aWFsIHJhbSBkaXNrIG1heSBiZSBvbWl0
dGVkLgo+ICsgKiAgNi4gVGhlIGxpc3Qgb2YgcGFnZSBmcmFtZXMgZm9ybXMgYSBjb250aWd1b3Vz
ICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQo+ICsgKiAgICAgbGF5b3V0IGZvciB0aGUgZG9tYWlu
LiBJbiBwYXJ0aWN1bGFyLCB0aGUgYm9vdHN0cmFwIHZpcnR1YWwtbWVtb3J5Cj4gKyAqICAgICBy
ZWdpb24gaXMgYSAxOjEgbWFwcGluZyB0byB0aGUgZmlyc3Qgc2VjdGlvbiBvZiB0aGUgcHNldWRv
LXBoeXNpY2FsIG1hcC4KPiArICogIDcuIEFsbCBib290c3RyYXAgZWxlbWVudHMgYXJlIG1hcHBl
ZCByZWFkLXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRoZQo+ICsgKiAgICAgb25seSBleGNl
cHRpb24gaXMgdGhlIGJvb3RzdHJhcCBwYWdlIHRhYmxlLCB3aGljaCBpcyBtYXBwZWQgcmVhZC1v
bmx5Lgo+ICsgKiAgOC4gVGhlcmUgaXMgZ3VhcmFudGVlZCB0byBiZSBhdCBsZWFzdCA1MTJrQiBw
YWRkaW5nIGFmdGVyIHRoZSBmaW5hbAo+ICsgKiAgICAgYm9vdHN0cmFwIGVsZW1lbnQuIElmIG5l
Y2Vzc2FyeSwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcwo+ICsgKiAgICAgZXh0ZW5k
ZWQgYnkgYW4gZXh0cmEgNE1CIHRvIGVuc3VyZSB0aGlzLgo+ICsgKgo+ICsgKiBOb3RlOiBQcmlv
ciB0byAyNTgzMzpiYjg1YmJjY2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBEb20wIGluaXRp
YWwgcGFnZQo+ICsgKiB0YWJsZSBsYXlvdXQiKSBhIGJ1ZyBjYXVzZWQgdGhlIHB0X2Jhc2UgKDMu
ZSBhYm92ZSkgYW5kIGNyMyB0byBub3QgcG9pbnQKPiArICogdG8gdGhlIHN0YXJ0IG9mIHRoZSBn
dWVzdCBwYWdlIHRhYmxlcyAoaXQgd2FzIG9mZnNldCBieSB0d28gcGFnZXMpLgo+ICsgKiBUaGlz
IG9ubHkgbWFuaWZlc3RlZCBpdHNlbGYgb24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBub3Qg
MzItb24tNjQgZG9tVQo+ICsgKiBvciA2NC1iaXQga2VybmVscyBvZiBhbnkgY29sb3VyLiBUaGUg
cGFnZSB0YWJsZXMgZm9yIGEgMzItb24tNjQgZG9tMCBnb3QKPiArICogYWxsb2NhdGVkIGluIHRo
ZSBvcmRlcjogJ2ZpcnN0IEwxJywnZmlyc3QgTDInLCAnZmlyc3QgTDMnLCBzbyB0aGUgb2Zmc2V0
Cj4gKyAqIHRvIHRoZSBwYWdlIHRhYmxlIGJhc2UgaXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBp
bml0aWFsIGRvbWFpbiBpZiBpdCBpcwo+ICsgKiAzMi1iaXQgYW5kIHJ1bnMgdW5kZXIgYSA2NC1i
aXQgaHlwZXJ2aXNvciBzaG91bGQgX05PVF8gdXNlIHR3byBvZiB0aGUKPiArICogcGFnZXMgcHJl
Y2VkaW5nIHB0X2Jhc2UgYW5kIG1hcmsgdGhlbSBhcyByZXNlcnZlZC91bnVzZWQuCj4gKyAqLwo+
ICsjaWZkZWYgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkKPiArc3RydWN0IHN0YXJ0X2luZm8gewo+
ICsgICAgLyogVEhFIEZPTExPV0lORyBBUkUgRklMTEVEIElOIEJPVEggT04gSU5JVElBTCBCT09U
IEFORCBPTiBSRVNVTUUuICAgICovCj4gKyAgICBDSEFSOCBtYWdpY1szMl07ICAgICAgICAgICAg
IC8qICJ4ZW4tPHZlcnNpb24+LTxwbGF0Zm9ybT4iLiAgICAgICAgICAgICovCj4gKyAgICBVSU5U
TiBucl9wYWdlczsgICAgIC8qIFRvdGFsIHBhZ2VzIGFsbG9jYXRlZCB0byB0aGlzIGRvbWFpbi4g
ICovCj4gKyAgICBVSU5UTiBzaGFyZWRfaW5mbzsgIC8qIE1BQ0hJTkUgYWRkcmVzcyBvZiBzaGFy
ZWQgaW5mbyBzdHJ1Y3QuICovCj4gKyAgICBVSU5UMzIgZmxhZ3M7ICAgICAgICAgICAgIC8qIFNJ
Rl94eHggZmxhZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICB4ZW5fcGZuX3Qg
c3RvcmVfbWZuOyAgICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBzaGFyZWQgcGFnZS4g
ICAgKi8KPiArICAgIFVJTlQzMiBzdG9yZV9ldnRjaG47ICAgICAgLyogRXZlbnQgY2hhbm5lbCBm
b3Igc3RvcmUgY29tbXVuaWNhdGlvbi4gKi8KPiArICAgIHVuaW9uIHsKPiArICAgICAgICBzdHJ1
Y3Qgewo+ICsgICAgICAgICAgICB4ZW5fcGZuX3QgbWZuOyAgICAgIC8qIE1BQ0hJTkUgcGFnZSBu
dW1iZXIgb2YgY29uc29sZSBwYWdlLiAgICovCj4gKyAgICAgICAgICAgIFVJTlQzMiAgZXZ0Y2hu
OyAgIC8qIEV2ZW50IGNoYW5uZWwgZm9yIGNvbnNvbGUgcGFnZS4gICAgICAgICovCj4gKyAgICAg
ICAgfSBkb21VOwo+ICsgICAgICAgIHN0cnVjdCB7Cj4gKyAgICAgICAgICAgIFVJTlQzMiBpbmZv
X29mZjsgIC8qIE9mZnNldCBvZiBjb25zb2xlX2luZm8gc3RydWN0LiAgICAgICAgICovCj4gKyAg
ICAgICAgICAgIFVJTlQzMiBpbmZvX3NpemU7IC8qIFNpemUgb2YgY29uc29sZV9pbmZvIHN0cnVj
dCBmcm9tIHN0YXJ0LiovCj4gKyAgICAgICAgfSBkb20wOwo+ICsgICAgfSBjb25zb2xlOwo+ICsg
ICAgLyogVEhFIEZPTExPV0lORyBBUkUgT05MWSBGSUxMRUQgSU4gT04gSU5JVElBTCBCT09UIChO
T1QgUkVTVU1FKS4gICAgICovCj4gKyAgICBVSU5UTiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwg
YWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAgICovCj4gKyAgICBVSU5UTiBucl9wdF9mcmFt
ZXM7IC8qIE51bWJlciBvZiBib290c3RyYXAgcC50LiBmcmFtZXMuICAgICAgICovCj4gKyAgICBV
SU5UTiBtZm5fbGlzdDsgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdlLWZyYW1lIGxpc3Qu
ICAgICovCj4gKyAgICBVSU5UTiBtb2Rfc3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBw
cmUtbG9hZGVkIG1vZHVsZSAgICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogKFBGTiBvZiBwcmUtbG9hZGVkIG1vZHVsZSBpZiAgICAgICAgICAgKi8KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAgU0lGX01PRF9TVEFSVF9QRk4gc2V0IGluIGZsYWdz
KS4gICAgICAqLwo+ICsgICAgVUlOVE4gbW9kX2xlbjsgICAgICAvKiBTaXplIChieXRlcykgb2Yg
cHJlLWxvYWRlZCBtb2R1bGUuICAgICAqLwo+ICsjZGVmaW5lIE1BWF9HVUVTVF9DTURMSU5FIDEw
MjQKPiArICAgIElOVDggY21kX2xpbmVbTUFYX0dVRVNUX0NNRExJTkVdOwo+ICsgICAgLyogVGhl
IHBmbiByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBhZ2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJh
bWVzLiAgICovCj4gKyAgICBVSU5UTiBmaXJzdF9wMm1fcGZuOy8qIDFzdCBwZm4gZm9ybWluZyBp
bml0aWFsIFAtPk0gdGFibGUuICAgICovCj4gKyAgICBVSU5UTiBucl9wMm1fZnJhbWVzOy8qICMg
b2YgcGZucyBmb3JtaW5nIGluaXRpYWwgUC0+TSB0YWJsZS4gICovCj4gK307Cj4gK3R5cGVkZWYg
c3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190Owo+ICsKPiArLyogTmV3IGNvbnNvbGUgdW5p
b24gZm9yIGRvbTAgaW50cm9kdWNlZCBpbiAweDAwMDMwMjAzLiAqLwo+ICsjaWYgX19YRU5fSU5U
RVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDMKPiArI2RlZmluZSBjb25zb2xlX21mbiAgICBj
b25zb2xlLmRvbVUubWZuCj4gKyNkZWZpbmUgY29uc29sZV9ldnRjaG4gY29uc29sZS5kb21VLmV2
dGNobgo+ICsjZW5kaWYKPiArI2VuZGlmIC8qIFhFTl9IQVZFX1BWX0dVRVNUX0VOVFJZICovCj4g
Kwo+ICsvKiBUaGVzZSBmbGFncyBhcmUgcGFzc2VkIGluIHRoZSAnZmxhZ3MnIGZpZWxkIG9mIHN0
YXJ0X2luZm9fdC4gKi8KPiArI2RlZmluZSBTSUZfUFJJVklMRUdFRCAgICAoMTw8MCkgIC8qIElz
IHRoZSBkb21haW4gcHJpdmlsZWdlZD8gKi8KPiArI2RlZmluZSBTSUZfSU5JVERPTUFJTiAgICAo
MTw8MSkgIC8qIElzIHRoaXMgdGhlIGluaXRpYWwgY29udHJvbCBkb21haW4/ICovCj4gKyNkZWZp
bmUgU0lGX01VTFRJQk9PVF9NT0QgKDE8PDIpICAvKiBJcyBtb2Rfc3RhcnQgYSBtdWx0aWJvb3Qg
bW9kdWxlPyAqLwo+ICsjZGVmaW5lIFNJRl9NT0RfU1RBUlRfUEZOICgxPDwzKSAgLyogSXMgbW9k
X3N0YXJ0IGEgUEZOPyAqLwo+ICsjZGVmaW5lIFNJRl9QTV9NQVNLICAgICAgICgweEZGPDw4KSAv
KiByZXNlcnZlIDEgYnl0ZSBmb3IgeGVuLXBtIG9wdGlvbnMgKi8KPiArCj4gKy8qCj4gKyAqIEEg
bXVsdGlib290IG1vZHVsZSBpcyBhIHBhY2thZ2UgY29udGFpbmluZyBtb2R1bGVzIHZlcnkgc2lt
aWxhciB0byBhCj4gKyAqIG11bHRpYm9vdCBtb2R1bGUgYXJyYXkuIFRoZSBvbmx5IGRpZmZlcmVu
Y2VzIGFyZToKPiArICogLSB0aGUgYXJyYXkgb2YgbW9kdWxlIGRlc2NyaXB0b3JzIGlzIGJ5IGNv
bnZlbnRpb24gc2ltcGx5IGF0IHRoZSBiZWdpbm5pbmcKPiArICogICBvZiB0aGUgbXVsdGlib290
IG1vZHVsZSwKPiArICogLSBhZGRyZXNzZXMgaW4gdGhlIG1vZHVsZSBkZXNjcmlwdG9ycyBhcmUg
YmFzZWQgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUKPiArICogICBtdWx0aWJvb3QgbW9kdWxlLAo+
ICsgKiAtIHRoZSBudW1iZXIgb2YgbW9kdWxlcyBpcyBkZXRlcm1pbmVkIGJ5IGEgdGVybWluYXRp
b24gZGVzY3JpcHRvciB0aGF0IGhhcwo+ICsgKiAgIG1vZF9zdGFydCA9PSAwLgo+ICsgKgo+ICsg
KiBUaGlzIHBlcm1pdHMgdG8gYm90aCBidWlsZCBpdCBzdGF0aWNhbGx5IGFuZCByZWZlcmVuY2Ug
aXQgaW4gYSBjb25maWd1cmF0aW9uCj4gKyAqIGZpbGUsIGFuZCBsZXQgdGhlIFBWIGd1ZXN0IGVh
c2lseSByZWJhc2UgdGhlIGFkZHJlc3NlcyB0byB2aXJ0dWFsIGFkZHJlc3Nlcwo+ICsgKiBhbmQg
YXQgdGhlIHNhbWUgdGltZSBjb3VudCB0aGUgbnVtYmVyIG9mIG1vZHVsZXMuCj4gKyAqLwo+ICtz
dHJ1Y3QgeGVuX211bHRpYm9vdF9tb2RfbGlzdAo+ICt7Cj4gKyAgICAvKiBBZGRyZXNzIG9mIGZp
cnN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAqLwo+ICsgICAgVUlOVDMyIG1vZF9zdGFydDsKPiArICAg
IC8qIEFkZHJlc3Mgb2YgbGFzdCBieXRlIG9mIHRoZSBtb2R1bGUgKGluY2x1c2l2ZSkgKi8KPiAr
ICAgIFVJTlQzMiBtb2RfZW5kOwo+ICsgICAgLyogQWRkcmVzcyBvZiB6ZXJvLXRlcm1pbmF0ZWQg
Y29tbWFuZCBsaW5lICovCj4gKyAgICBVSU5UMzIgY21kbGluZTsKPiArICAgIC8qIFVudXNlZCwg
bXVzdCBiZSB6ZXJvICovCj4gKyAgICBVSU5UMzIgcGFkOwo+ICt9Owo+ICsvKgo+ICsgKiBgaW5j
b250ZW50cyAyMDAgc3RhcnRvZmRheV9kb20wX2NvbnNvbGUgRG9tMF9jb25zb2xlCj4gKyAqCj4g
KyAqIFRoZSBjb25zb2xlIHN0cnVjdHVyZSBpbiBzdGFydF9pbmZvLmNvbnNvbGUuZG9tMAo+ICsg
Kgo+ICsgKiBUaGlzIHN0cnVjdHVyZSBpbmNsdWRlcyBhIHZhcmlldHkgb2YgaW5mb3JtYXRpb24g
cmVxdWlyZWQgdG8KPiArICogaGF2ZSBhIHdvcmtpbmcgVkdBL1ZFU0EgY29uc29sZS4KPiArICov
Cj4gK3R5cGVkZWYgc3RydWN0IGRvbTBfdmdhX2NvbnNvbGVfaW5mbyB7Cj4gKyAgICBVSU5UOCB2
aWRlb190eXBlOyAvKiBET00wX1ZHQV9DT05TT0xFXz8/PyAqLwo+ICsjZGVmaW5lIFhFTl9WR0FU
WVBFX1RFWFRfTU9ERV8zIDB4MDMKPiArI2RlZmluZSBYRU5fVkdBVFlQRV9WRVNBX0xGQiAgICAw
eDIzCj4gKyNkZWZpbmUgWEVOX1ZHQVRZUEVfRUZJX0xGQiAgICAgMHg3MAo+ICsKPiArICAgIHVu
aW9uIHsKPiArICAgICAgICBzdHJ1Y3Qgewo+ICsgICAgICAgICAgICAvKiBGb250IGhlaWdodCwg
aW4gcGl4ZWxzLiAqLwo+ICsgICAgICAgICAgICBVSU5UMTYgZm9udF9oZWlnaHQ7Cj4gKyAgICAg
ICAgICAgIC8qIEN1cnNvciBsb2NhdGlvbiAoY29sdW1uLCByb3cpLiAqLwo+ICsgICAgICAgICAg
ICBVSU5UMTYgY3Vyc29yX3gsIGN1cnNvcl95Owo+ICsgICAgICAgICAgICAvKiBOdW1iZXIgb2Yg
cm93cyBhbmQgY29sdW1ucyAoZGltZW5zaW9ucyBpbiBjaGFyYWN0ZXJzKS4gKi8KPiArICAgICAg
ICAgICAgVUlOVDE2IHJvd3MsIGNvbHVtbnM7Cj4gKyAgICAgICAgfSB0ZXh0X21vZGVfMzsKPiAr
Cj4gKyAgICAgICAgc3RydWN0IHsKPiArICAgICAgICAgICAgLyogV2lkdGggYW5kIGhlaWdodCwg
aW4gcGl4ZWxzLiAqLwo+ICsgICAgICAgICAgICBVSU5UMTYgd2lkdGgsIGhlaWdodDsKPiArICAg
ICAgICAgICAgLyogQnl0ZXMgcGVyIHNjYW4gbGluZS4gKi8KPiArICAgICAgICAgICAgVUlOVDE2
IGJ5dGVzX3Blcl9saW5lOwo+ICsgICAgICAgICAgICAvKiBCaXRzIHBlciBwaXhlbC4gKi8KPiAr
ICAgICAgICAgICAgVUlOVDE2IGJpdHNfcGVyX3BpeGVsOwo+ICsgICAgICAgICAgICAvKiBMRkIg
cGh5c2ljYWwgYWRkcmVzcywgYW5kIHNpemUgKGluIHVuaXRzIG9mIDY0a0IpLiAqLwo+ICsgICAg
ICAgICAgICBVSU5UMzIgbGZiX2Jhc2U7Cj4gKyAgICAgICAgICAgIFVJTlQzMiBsZmJfc2l6ZTsK
PiArICAgICAgICAgICAgLyogUkdCIG1hc2sgb2Zmc2V0cyBhbmQgc2l6ZXMsIGFzIGRlZmluZWQg
YnkgVkJFIDEuMisgKi8KPiArICAgICAgICAgICAgVUlOVDggIHJlZF9wb3MsIHJlZF9zaXplOwo+
ICsgICAgICAgICAgICBVSU5UOCAgZ3JlZW5fcG9zLCBncmVlbl9zaXplOwo+ICsgICAgICAgICAg
ICBVSU5UOCAgYmx1ZV9wb3MsIGJsdWVfc2l6ZTsKPiArICAgICAgICAgICAgVUlOVDggIHJzdmRf
cG9zLCByc3ZkX3NpemU7Cj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAw
MzAyMDYKPiArICAgICAgICAgICAgLyogVkVTQSBjYXBhYmlsaXRpZXMgKG9mZnNldCAweGEsIFZF
U0EgY29tbWFuZCAweDRmMDApLiAqLwo+ICsgICAgICAgICAgICBVSU5UMzIgZ2JsX2NhcHM7Cj4g
KyAgICAgICAgICAgIC8qIE1vZGUgYXR0cmlidXRlcyAob2Zmc2V0IDB4MCwgVkVTQSBjb21tYW5k
IDB4NGYwMSkuICovCj4gKyAgICAgICAgICAgIFVJTlQxNiBtb2RlX2F0dHJzOwo+ICsjZW5kaWYK
PiArICAgICAgICB9IHZlc2FfbGZiOwo+ICsgICAgfSB1Owo+ICt9IGRvbTBfdmdhX2NvbnNvbGVf
aW5mb190Owo+ICsjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvIGRvbTBfdmdhX2NvbnNvbGVf
aW5mbwo+ICsjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvX3QgZG9tMF92Z2FfY29uc29sZV9p
bmZvX3QKPiArCj4gK3R5cGVkZWYgVUlOVDggeGVuX2RvbWFpbl9oYW5kbGVfdFsxNl07Cj4gKwo+
ICsvKiBUdXJuIGEgcGxhaW4gbnVtYmVyIGludG8gYSBDIFVJTlROIGNvbnN0YW50LiAqLwo+ICsj
ZGVmaW5lIF9fbWtfdW5zaWduZWRfbG9uZyh4KSB4ICMjIFVMCj4gKyNkZWZpbmUgbWtfdW5zaWdu
ZWRfbG9uZyh4KSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkKPiArCj4gK19fREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUodWludDgsICBVSU5UOCk7Cj4gK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWlu
dDE2LCBVSU5UMTYpOwo+ICtfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQzMiwgVUlOVDMy
KTsKPiArX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50NjQsIFVJTlQ2NCk7Cj4gKwo+ICsj
ZWxzZSAvKiBfX0FTU0VNQkxZX18gKi8KPiArCj4gKy8qIEluIGFzc2VtYmx5IGNvZGUgd2UgY2Fu
bm90IHVzZSBDIG51bWVyaWMgY29uc3RhbnQgc3VmZml4ZXMuICovCj4gKyNkZWZpbmUgbWtfdW5z
aWduZWRfbG9uZyh4KSB4Cj4gKwo+ICsjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwo+ICsKPiAr
LyogRGVmYXVsdCBkZWZpbml0aW9ucyBmb3IgbWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0bC4g
Ki8KPiArI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQo+ICsK
PiArI2lmbmRlZiB1aW50NjRfYWxpZ25lZF90Cj4gKyNkZWZpbmUgdWludDY0X2FsaWduZWRfdCBV
SU5UNjQKPiArI2VuZGlmCj4gKyNpZm5kZWYgWEVOX0dVRVNUX0hBTkRMRV82NAo+ICsjZGVmaW5l
IFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQo+ICsjZW5k
aWYKPiArCj4gKyNpZm5kZWYgX19BU1NFTUJMWV9fCj4gK3N0cnVjdCB4ZW5jdGxfYml0bWFwIHsK
PiArICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIGJpdG1hcDsKPiArICAgIFVJTlQzMiBu
cl9iaXRzOwo+ICt9Owo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18p
IHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJM
SUNfWEVOX0hfXyAqLwo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2Rl
OiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiAr
ICogdGFiLXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4g
KyAqLwo+IC0tIAo+IEFudGhvbnkgUEVSQVJECj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVu
LWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt
YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcv
eGVuLWRldmVsCg==

From xen-devel-bounces@lists.xen.org Fri Sep 12 03:21:19 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Sep 2014 03:21:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XSHQ5-0001Y8-67; Fri, 12 Sep 2014 03:21:09 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <roy.franz@linaro.org>) id 1XSHQ2-0001Y0-QT
	for xen-devel@lists.xen.org; Fri, 12 Sep 2014 03:21:07 +0000
Received: from [85.158.143.35:34588] by server-1.bemta-4.messagelabs.com id
	1C/FA-05872-2A662145; Fri, 12 Sep 2014 03:21:06 +0000
X-Env-Sender: roy.franz@linaro.org
X-Msg-Ref: server-16.tower-21.messagelabs.com!1410492061!8854646!1
X-Originating-IP: [209.85.220.176]
X-SpamReason: No, hits=1.2 required=7.0 tests=HTML_20_30,HTML_MESSAGE,
	RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9743 invoked from network); 12 Sep 2014 03:21:02 -0000
Received: from mail-vc0-f176.google.com (HELO mail-vc0-f176.google.com)
	(209.85.220.176)
	by server-16.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Sep 2014 03:21:02 -0000
Received: by mail-vc0-f176.google.com with SMTP id la4so125161vcb.35
	for <xen-devel@lists.xen.org>; Thu, 11 Sep 2014 20:21:01 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:mime-version:in-reply-to:references:date
	:message-id:subject:from:to:cc:content-type;
	bh=iTsDwqDYAARo2Bulvrd+Ns15gdTSAqvYBBtaqXmlg0k=;
	b=UxKwqWdi6fvfux94XYAkyPyqyZxNACC89Bp8841325nmaSg0rZQoVmuemxeOcuwcch
	Z0Uiz3fdHQL5HZnNWJKhSMe5ZzslOScoE8GJEmzEsTY5XLZApmXTUNYp+QEdX1ydFOSF
	GOk1wdff05Ewv0cM0Jm5e5tiPleizbTiw5YX3qtryf/1xeAiYNT+YUo0KgC2NfRuJ8RK
	Rz4FXF+w0NgMqR2DJBO0JrxLdeorb4pAcXTUvf1smmlPw2DXSbutNojn1Af/vhAE9YVM
	IdEJPBv1zW5OpkIB/S8BZljQSp5mFNRsu35dI1OtDC3gfXdGijznV5RAJ5NvhHfrqf2F
	aRQA==
X-Gm-Message-State: ALoCoQl24viqLfUZcIEK/1065cEW2e6q1B+SpgYl83y5AjqdnecjmLbHyKJkQX5swNa4+aVAInzE
MIME-Version: 1.0
X-Received: by 10.52.166.80 with SMTP id ze16mr541392vdb.59.1410492060824;
	Thu, 11 Sep 2014 20:21:00 -0700 (PDT)
Received: by 10.221.21.129 with HTTP; Thu, 11 Sep 2014 20:21:00 -0700 (PDT)
In-Reply-To: <alpine.DEB.2.02.1409120105270.8137@kaball.uk.xensource.com>
References: <1410310325-4509-1-git-send-email-roy.franz@linaro.org>
	<1410310325-4509-16-git-send-email-roy.franz@linaro.org>
	<alpine.DEB.2.02.1409120105270.8137@kaball.uk.xensource.com>
Date: Thu, 11 Sep 2014 20:21:00 -0700
Message-ID: <CAFECyb9Sf5QgLgjitd-zhiXfDT4AYB-KjYQ0KPVw82fiDD+_aQ@mail.gmail.com>
From: Roy Franz <roy.franz@linaro.org>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: keir <keir@xen.org>, Ian Campbell <ian.campbell@citrix.com>,
	tim <tim@xen.org>, xen-devel <xen-devel@lists.xen.org>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	Jan Beulich <jbeulich@suse.com>, Fu Wei <fu.wei@linaro.org>
Subject: Re: [Xen-devel] [PATCH V4 15/15] Add ARM EFI boot support
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5132891646511509130=="
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============5132891646511509130==
Content-Type: multipart/alternative; boundary=001a11c3584a3e8ed20502d5c699

--001a11c3584a3e8ed20502d5c699
Content-Type: text/plain; charset=UTF-8

On Thu, Sep 11, 2014 at 5:49 PM, Stefano Stabellini <
stefano.stabellini@eu.citrix.com> wrote:

> On Tue, 9 Sep 2014, Roy Franz wrote:
> > This patch adds EFI boot support for ARM based on the previous
> refactoring of
> > the x86 EFI boot code.  All ARM specific code is in the ARM efi-boot.h
> header
> > file, with the main EFI entry point common/efi/boot.c.  The PE/COFF
> header is
> > open-coded in head.S, which allows us to have a single binary be both an
> EFI
> > executable and a normal arm64 IMAGE file. There is currently no PE/COFF
> > toolchain support for arm64, so it is not possible to create the PE/COFF
> header
> > in the same manner as on x86.  This also simplifies the build as
> compared to
> > x86, as we always build the same executable, whereas x86 builds 2.  An
> ARM
> > version of efi-bind.h is added, which is based on the x86_64 version
> with the
> > x86 specific portions removed.  The Makefile in common/efi is different
> for x86
> > and ARM, as for ARM we always build in EFI support.
> >
> > Signed-off-by: Roy Franz <roy.franz@linaro.org>
> > ---
> >  config/arm64.mk                     |   1 +
> >  xen/arch/arm/arm64/head.S           | 150 ++++++++-
> >  xen/arch/arm/xen.lds.S              |   1 +
> >  xen/common/Makefile                 |   1 +
> >  xen/common/efi/Makefile             |   3 +
> >  xen/include/asm-arm/arm64/efibind.h | 216 +++++++++++++
> >  xen/include/asm-arm/efi-boot.h      | 630
> ++++++++++++++++++++++++++++++++++++
> >  xen/include/asm-arm/efi.h           |  29 ++
> >  xen/include/asm-arm/efibind.h       |   2 +
> >  xen/include/asm-arm/setup.h         |   2 +-
> >  10 files changed, 1031 insertions(+), 4 deletions(-)
> >  create mode 100644 xen/common/efi/Makefile
> >  create mode 100644 xen/include/asm-arm/arm64/efibind.h
> >  create mode 100644 xen/include/asm-arm/efi-boot.h
> >  create mode 100644 xen/include/asm-arm/efi.h
> >  create mode 100644 xen/include/asm-arm/efibind.h
> >
> > diff --git a/config/arm64.mk b/config/arm64.mk
> > index 15b57a4..e6aab0e 100644
> > --- a/config/arm64.mk
> > +++ b/config/arm64.mk
> > @@ -1,6 +1,7 @@
> >  CONFIG_ARM := y
> >  CONFIG_ARM_64 := y
> >  CONFIG_ARM_$(XEN_OS) := y
> > +CONFIG_EFI := y
> >
> >  CONFIG_XEN_INSTALL_SUFFIX :=
> >
> > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> > index 43b5e72..158c102 100644
> > --- a/xen/arch/arm/arm64/head.S
> > +++ b/xen/arch/arm/arm64/head.S
> > @@ -24,6 +24,8 @@
> >  #include <asm/page.h>
> >  #include <asm/asm_defns.h>
> >  #include <asm/early_printk.h>
> > +#include <efi/efierr.h>
> > +#include <asm/arm64/efibind.h>
> >
> >  #define PT_PT     0xf7f /* nG=1 AF=1 SH=11 AP=01 NS=1 ATTR=111 T=1 P=1
> */
> >  #define PT_MEM    0xf7d /* nG=1 AF=1 SH=11 AP=01 NS=1 ATTR=111 T=0 P=1
> */
> > @@ -104,8 +106,14 @@ GLOBAL(start)
> >          /*
> >           * DO NOT MODIFY. Image header expected by Linux boot-loaders.
> >           */
> > -        b       real_start           /* branch to kernel start, magic */
> > -        .long   0                    /* reserved */
> > +efi_head:
> > +        /*
> > +         * This add instruction has no meaningful effect except that
> > +         * its opcode forms the magic "MZ" signature of a PE/COFF file
> > +         * that is required for UEFI applications.
> > +         */
> > +        add     x13, x18, #0x16
> > +        b       real_start           /* branch to kernel start */
> >          .quad   0                    /* Image load offset from start of
> RAM */
> >          .quad   0                    /* reserved */
> >          .quad   0                    /* reserved */
> > @@ -116,8 +124,113 @@ GLOBAL(start)
> >          .byte   0x52
> >          .byte   0x4d
> >          .byte   0x64
> > -        .word   0                    /* reserved */
> > +        .long   pe_header - efi_head        /* Offset to the PE header.
> */
> > +
> > +        /*
> > +         * Add the PE/COFF header to the file.  The address of this
> header
> > +         * is at offset 0x3c in the file, and is part of Linux "Image"
> > +         * header.  The arm64 Linux Image format is designed to support
> > +         * being both an 'Image' format binary and a PE/COFF binary.
> > +         * The PE/COFF format is defined by Microsoft, and is available
> > +         * from: http://msdn.microsoft.com/en-us/gg463119.aspx
> > +         * Version 8.3 adds support for arm64 and UEFI usage.
> > +         */
> > +
> > +        .align  3
> > +pe_header:
> > +        .ascii  "PE"
> > +        .short  0
> > +coff_header:
> > +        .short  0xaa64                          /* AArch64 */
> > +        .short  2                               /* nr_sections */
> > +        .long   0                               /* TimeDateStamp */
> > +        .long   0                               /* PointerToSymbolTable
> */
> > +        .long   1                               /* NumberOfSymbols */
> > +        .short  section_table - optional_header /* SizeOfOptionalHeader
> */
> > +        .short  0x206                           /* Characteristics. */
> > +                                                /*
> IMAGE_FILE_DEBUG_STRIPPED | */
> > +                                                /*
> IMAGE_FILE_EXECUTABLE_IMAGE | */
> > +                                                /*
> IMAGE_FILE_LINE_NUMS_STRIPPED */
> > +optional_header:
> > +        .short  0x20b                           /* PE32+ format */
> > +        .byte   0x02                            /* MajorLinkerVersion */
> > +        .byte   0x14                            /* MinorLinkerVersion */
> > +        .long   _end - real_start               /* SizeOfCode */
> > +        .long   0                               /*
> SizeOfInitializedData */
> > +        .long   0                               /*
> SizeOfUninitializedData */
> > +        .long   efi_start - efi_head            /* AddressOfEntryPoint
> */
> > +        .long   real_start - efi_head           /* BaseOfCode */
> > +
> > +extra_header_fields:
> > +        .quad   0                               /* ImageBase */
> > +        .long   0x1000                          /* SectionAlignment (4
> KByte) */
> > +        .long   0x8                             /* FileAlignment */
> > +        .short  0                               /*
> MajorOperatingSystemVersion */
> > +        .short  0                               /*
> MinorOperatingSystemVersion */
> > +        .short  0                               /* MajorImageVersion */
> > +        .short  0                               /* MinorImageVersion */
> > +        .short  0                               /*
> MajorSubsystemVersion */
> > +        .short  0                               /*
> MinorSubsystemVersion */
> > +        .long   0                               /* Win32VersionValue */
> > +
> > +        .long   _end - efi_head                 /* SizeOfImage */
> > +
> > +        /* Everything before the kernel image is considered part of the
> header */
> > +        .long   real_start - efi_head           /* SizeOfHeaders */
> > +        .long   0                               /* CheckSum */
> > +        .short  0xa                             /* Subsystem (EFI
> application) */
> > +        .short  0                               /* DllCharacteristics */
> > +        .quad   0                               /* SizeOfStackReserve */
> > +        .quad   0                               /* SizeOfStackCommit */
> > +        .quad   0                               /* SizeOfHeapReserve */
> > +        .quad   0                               /* SizeOfHeapCommit */
> > +        .long   0                               /* LoaderFlags */
> > +        .long   0x6                             /* NumberOfRvaAndSizes
> */
> > +
> > +        .quad   0                               /* ExportTable */
> > +        .quad   0                               /* ImportTable */
> > +        .quad   0                               /* ResourceTable */
> > +        .quad   0                               /* ExceptionTable */
> > +        .quad   0                               /* CertificationTable */
> > +        .quad   0                               /* BaseRelocationTable
> */
> > +
> > +        /* Section table */
> > +section_table:
> >
> > +        /*
> > +         * The EFI application loader requires a relocation section
> > +         * because EFI applications must be relocatable.  This is a
> > +         * dummy section as far as we are concerned.
> > +         */
> > +        .ascii  ".reloc"
> > +        .byte   0
> > +        .byte   0                               /* end of 0 padding of
> section name */
> > +        .long   0
> > +        .long   0
> > +        .long   0                               /* SizeOfRawData */
> > +        .long   0                               /* PointerToRawData */
> > +        .long   0                               /* PointerToRelocations
> */
> > +        .long   0                               /* PointerToLineNumbers
> */
> > +        .short  0                               /* NumberOfRelocations
> */
> > +        .short  0                               /* NumberOfLineNumbers
> */
> > +        .long   0x42100040                      /* Characteristics
> (section flags) */
> > +
> > +
> > +        .ascii  ".text"
> > +        .byte   0
> > +        .byte   0
> > +        .byte   0                               /* end of 0 padding of
> section name */
> > +        .long   _end - real_start               /* VirtualSize */
> > +        .long   real_start - efi_head           /* VirtualAddress */
> > +        .long   __init_end_efi - real_start     /* SizeOfRawData */
> > +        .long   real_start - efi_head           /* PointerToRawData */
> > +
> > +        .long   0                /* PointerToRelocations (0 for
> executables) */
> > +        .long   0                /* PointerToLineNumbers (0 for
> executables) */
> > +        .short  0                /* NumberOfRelocations  (0 for
> executables) */
> > +        .short  0                /* NumberOfLineNumbers  (0 for
> executables) */
> > +        .long   0xe0500020       /* Characteristics (section flags) */
> > +        .align  5
> >  real_start:
> >          msr   DAIFSet, 0xf           /* Disable all interrupts */
> >
> > @@ -617,6 +730,37 @@ putn:   ret
> >  ENTRY(lookup_processor_type)
> >          mov  x0, #0
> >          ret
> > +/*
> > + *  Function to transition from EFI loader in C, to Xen entry point.
> > + *  void noreturn efi_xen_start(void *fdt_ptr);
> > + */
> > +ENTRY(efi_xen_start)
> > +        /*
> > +         * Turn off cache and MMU as Xen expects. EFI enables them, but
> also
> > +         * mandates a 1:1 (unity) VA->PA mapping, so we can turn off the
> > +         * MMU while executing EFI code before entering Xen.
> > +         * The EFI loader calls this to start Xen.
> > +         * Preserve x0 (fdf pointer) across call to __flush_dcache_all,
> > +         * restore for entry into Xen.
> > +         */
> > +        mov   x20, x0
> > +        bl    __flush_dcache_all
> > +        ic    ialluis
> > +
> > +        /* Turn off Dcache and MMU */
> > +        mrs   x0, sctlr_el2
> > +        bic   x0, x0, #1 << 0        /* clear SCTLR.M */
> > +        bic   x0, x0, #1 << 2        /* clear SCTLR.C */
>
> dsb?
>

The dsb is done at the end of  __flush_dcache_all


>
> > +        msr   sctlr_el2, x0
> > +        isb
> > +
> > +        /* Jump to Xen entry point */
> > +        mov   x0, x20
> > +        mov   x1, xzr
> > +        mov   x2, xzr
> > +        mov   x3, xzr
> > +        b     real_start
> > +ENDPROC(efi_xen_start)
> >
> >  /*
> >   * Local variables:
> > diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> > index 079e085..d8b0cfe 100644
> > --- a/xen/arch/arm/xen.lds.S
> > +++ b/xen/arch/arm/xen.lds.S
> > @@ -135,6 +135,7 @@ SECTIONS
> >         *(.xsm_initcall.init)
> >         __xsm_initcall_end = .;
> >    } :text
> > +  __init_end_efi = .;
> >    . = ALIGN(STACK_SIZE);
> >    __init_end = .;
> >
> > diff --git a/xen/common/Makefile b/xen/common/Makefile
> > index 3683ae3..e78cb29 100644
> > --- a/xen/common/Makefile
> > +++ b/xen/common/Makefile
> > @@ -67,4 +67,5 @@ subdir-$(x86_64) += hvm
> >  subdir-$(coverage) += gcov
> >
> >  subdir-y += libelf
> > +subdir-$(CONFIG_EFI) += efi
> >  subdir-$(HAS_DEVICE_TREE) += libfdt
> > diff --git a/xen/common/efi/Makefile b/xen/common/efi/Makefile
> > new file mode 100644
> > index 0000000..195b2f3
> > --- /dev/null
> > +++ b/xen/common/efi/Makefile
> > @@ -0,0 +1,3 @@
> > +CFLAGS += -fshort-wchar
> > +
> > +obj-y += boot.init.o
> > diff --git a/xen/include/asm-arm/arm64/efibind.h
> b/xen/include/asm-arm/arm64/efibind.h
> > new file mode 100644
> > index 0000000..2b0bf40
> > --- /dev/null
> > +++ b/xen/include/asm-arm/arm64/efibind.h
> > @@ -0,0 +1,216 @@
> > +/*++
> > +
> > +Copyright (c) 1998  Intel Corporation
> > +
> > +Module Name:
> > +
> > +    efefind.h
> > +
> > +Abstract:
> > +
> > +    EFI to compile bindings
> > +
> > +
> > +
> > +
> > +Revision History
> > +
> > +--*/
> > +
> > +#ifndef __GNUC__
> > +#pragma pack()
> > +#endif
> > +
> > +#define EFIERR(a)           (0x8000000000000000 | a)
> > +#define EFI_ERROR_MASK      0x8000000000000000
> > +#define EFIERR_OEM(a)       (0xc000000000000000 | a)
> > +
> > +#define BAD_POINTER         0xFBFBFBFBFBFBFBFB
> > +#define MAX_ADDRESS         0xFFFFFFFFFFFFFFFF
> > +
> > +#define EFI_STUB_ERROR      MAX_ADDRESS
> > +
> > +#ifndef __ASSEMBLY__
> > +//
> > +// Basic int types of various widths
> > +//
> > +
> > +#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
> > +
> > +    // No ANSI C 1999/2000 stdint.h integer width declarations
> > +
> > +    #if defined(__GNUC__)
> > +        typedef unsigned long long  uint64_t __attribute__((aligned
> (8)));
> > +        typedef long long           int64_t __attribute__((aligned
> (8)));
> > +        typedef unsigned int        uint32_t;
> > +        typedef int                 int32_t;
> > +        typedef unsigned short      uint16_t;
> > +        typedef short               int16_t;
> > +        typedef unsigned char       uint8_t;
> > +        typedef char                int8_t;
> > +    #elif defined(UNIX_LP64)
> > +
> > +        /*  Use LP64 programming model from C_FLAGS for integer width
> declarations */
> > +
> > +       typedef unsigned long       uint64_t;
> > +       typedef long                int64_t;
> > +       typedef unsigned int        uint32_t;
> > +       typedef int                 int32_t;
> > +       typedef unsigned short      uint16_t;
> > +       typedef short               int16_t;
> > +       typedef unsigned char       uint8_t;
> > +       typedef char                int8_t;
> > +    #else
> > +
> > +       /*  Assume P64 programming model from C_FLAGS for integer width
> declarations */
> > +
> > +       typedef unsigned long long  uint64_t __attribute__((aligned
> (8)));
> > +       typedef long long           int64_t __attribute__((aligned (8)));
> > +       typedef unsigned int        uint32_t;
> > +       typedef int                 int32_t;
> > +       typedef unsigned short      uint16_t;
> > +       typedef short               int16_t;
> > +       typedef unsigned char       uint8_t;
> > +       typedef char                int8_t;
> > +    #endif
> > +#endif
> > +
> > +//
> > +// Basic EFI types of various widths
> > +//
> > +
> > +#ifndef __WCHAR_TYPE__
> > +# define __WCHAR_TYPE__ short
> > +#endif
> > +
> > +typedef uint64_t   UINT64;
> > +typedef int64_t    INT64;
> > +
> > +#ifndef _BASETSD_H_
> > +    typedef uint32_t   UINT32;
> > +    typedef int32_t    INT32;
> > +#endif
> > +
> > +typedef uint16_t   UINT16;
> > +typedef int16_t    INT16;
> > +typedef uint8_t    UINT8;
> > +typedef int8_t     INT8;
> > +typedef __WCHAR_TYPE__ WCHAR;
> > +
> > +#undef VOID
> > +#define VOID    void
> > +
> > +
> > +typedef int64_t    INTN;
> > +typedef uint64_t   UINTN;
> > +
> > +#define POST_CODE(_Data)
> > +
> > +
> > +#define BREAKPOINT()        while (TRUE);    // Make it hang on
> Bios[Dbg]32
> > +
> > +//
> > +// Pointers must be aligned to these address to function
> > +//
> > +
> > +#define MIN_ALIGNMENT_SIZE  4
> > +
> > +#define ALIGN_VARIABLE(Value ,Adjustment) \
> > +            (UINTN)Adjustment = 0; \
> > +            if((UINTN)Value % MIN_ALIGNMENT_SIZE) \
> > +                (UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value
> % MIN_ALIGNMENT_SIZE); \
> > +            Value = (UINTN)Value + (UINTN)Adjustment
> > +
> > +
> > +//
> > +// Define macros to build data structure signatures from characters.
> > +//
> > +
> > +#define EFI_SIGNATURE_16(A,B)             ((A) | (B<<8))
> > +#define EFI_SIGNATURE_32(A,B,C,D)         (EFI_SIGNATURE_16(A,B)     |
> (EFI_SIGNATURE_16(C,D)     << 16))
> > +#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) |
> ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
> > +
> > +#define EXPORTAPI
> > +
> > +
> > +//
> > +// EFIAPI - prototype calling convention for EFI function pointers
> > +// BOOTSERVICE - prototype for implementation of a boot service
> interface
> > +// RUNTIMESERVICE - prototype for implementation of a runtime service
> interface
> > +// RUNTIMEFUNCTION - prototype for implementation of a runtime function
> that is not a service
> > +// RUNTIME_CODE - pragma macro for declaring runtime code
> > +//
> > +
> > +#ifndef EFIAPI                  // Forces EFI calling conventions
> reguardless of compiler options
> > +        #define EFIAPI          // Substitute expresion to force C
> calling convention
> > +#endif
> > +
> > +#define BOOTSERVICE
> > +//#define RUNTIMESERVICE(proto,a)    alloc_text("rtcode",a); proto a
> > +//#define RUNTIMEFUNCTION(proto,a)   alloc_text("rtcode",a); proto a
> > +#define RUNTIMESERVICE
> > +#define RUNTIMEFUNCTION
> > +
> > +
> > +#define RUNTIME_CODE(a)         alloc_text("rtcode", a)
> > +#define BEGIN_RUNTIME_DATA()    data_seg("rtdata")
> > +#define END_RUNTIME_DATA()      data_seg("")
> > +
> > +#define VOLATILE    volatile
> > +
> > +#define MEMORY_FENCE()
> > +
> > +
> > +//
> > +// When build similiar to FW, then link everything together as
> > +// one big module.
> > +//
> > +
> > +#define EFI_DRIVER_ENTRY_POINT(InitFunction)    \
> > +    UINTN                                       \
> > +    InitializeDriver (                          \
> > +        VOID    *ImageHandle,                   \
> > +        VOID    *SystemTable                    \
> > +        )                                       \
> > +    {                                           \
> > +        return InitFunction(ImageHandle,        \
> > +                SystemTable);                   \
> > +    }                                           \
> > +                                                \
> > +    EFI_STATUS efi_main(                        \
> > +        EFI_HANDLE image,                       \
> > +        EFI_SYSTEM_TABLE *systab                \
> > +        ) __attribute__((weak,                  \
> > +                alias ("InitializeDriver")));
> > +
> > +#define LOAD_INTERNAL_DRIVER(_if, type, name, entry)    \
> > +        (_if)->LoadInternal(type, name, entry)
> > +
> > +
> > +//
> > +// Some compilers don't support the forward reference construct:
> > +//  typedef struct XXXXX
> > +//
> > +// The following macro provide a workaround for such cases.
> > +//
> > +#ifdef NO_INTERFACE_DECL
> > +#define INTERFACE_DECL(x)
> > +#else
> > +#ifdef __GNUC__
> > +#define INTERFACE_DECL(x) struct x
> > +#else
> > +#define INTERFACE_DECL(x) typedef struct x
> > +#endif
> > +#endif
> > +
> > +#endif
> > +
> > +/*
> > + * Local variables:
> > + * mode: C
> > + * c-file-style: "BSD"
> > + * c-basic-offset: 4
> > + * tab-width: 4
> > + * indent-tabs-mode: nil
> > + * End:
> > + */
> > diff --git a/xen/include/asm-arm/efi-boot.h
> b/xen/include/asm-arm/efi-boot.h
> > new file mode 100644
> > index 0000000..2db0966
> > --- /dev/null
> > +++ b/xen/include/asm-arm/efi-boot.h
> > @@ -0,0 +1,630 @@
> > +/*
> > + * Architecture specific implementation for EFI boot code.  This file
> > + * is intended to be included by XXX _only_, and therefore can define
> > + * arch specific global variables.
> > + */
> > +#include <xen/libfdt/libfdt.h>
> > +#include <asm/setup.h>
> > +
> > +static void noreturn blexit(const CHAR16 *str);
> > +static void PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode);
> > +void noreturn efi_xen_start(void *fdt_ptr);
> > +
> > +#define DEVICE_TREE_GUID \
> > +{0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa,
> 0xe0}}
> > +
> > +static struct file __initdata dtbfile;
> > +static void __initdata *fdt;
> > +static void __initdata *memmap;
> > +
> > +static int __init setup_chosen_node(void *fdt, int *addr_cells, int
> *size_cells)
> > +{
> > +    int node;
> > +    const struct fdt_property *prop;
> > +    int len;
> > +    uint32_t val;
> > +
> > +    if ( !fdt || !addr_cells || !size_cells )
> > +        return -1;
> > +
> > +    /* locate chosen node, which is where we add Xen module info. */
> > +    node = fdt_subnode_offset(fdt, 0, "chosen");
> > +    if ( node < 0 )
> > +    {
> > +        node = fdt_add_subnode(fdt, 0, "chosen");
> > +        if ( node < 0 )
> > +            return node;
> > +    }
> > +
> > +    /* Get or set #address-cells and #size-cells */
> > +    prop = fdt_get_property(fdt, node, "#address-cells", &len);
> > +    if ( !prop )
> > +    {
> > +        val = cpu_to_fdt32(2);
> > +        if ( fdt_setprop(fdt, node, "#address-cells", &val,
> sizeof(val)) )
> > +            return -1;
> > +        *addr_cells = 2;
> > +    }
> > +    else
> > +        *addr_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
> > +
> > +    prop = fdt_get_property(fdt, node, "#size-cells", &len);
> > +    if ( !prop )
> > +    {
> > +        val = cpu_to_fdt32(2);
> > +        if ( fdt_setprop(fdt, node, "#size-cells", &val, sizeof(val)) )
> > +            return -1;
> > +        *size_cells = 2;
> > +    }
> > +    else
> > +        *size_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
> > +
> > +    /*
> > +     * Make sure ranges is empty if it exists, otherwise create empty
> ranges
> > +     * property.
> > +     */
> > +    prop = fdt_get_property(fdt, node, "ranges", &len);
> > +    if ( !prop )
> > +    {
> > +        val = cpu_to_fdt32(0);
> > +        if ( fdt_setprop(fdt, node, "ranges", &val, 0) )
> > +            return -1;
> > +    }
> > +    else if ( fdt32_to_cpu(prop->len) )
> > +            return -1;  /* Non-empty ranges property */
> > +    return node;
> > +}
> > +
> > +/*
> > + * Set a single 'reg' property taking into account the
> > + * configured addr and size cell sizes.
> > + */
> > +static int __init fdt_set_reg(void *fdt, int node, int addr_cells,
> > +                              int size_cells, uint64_t addr, uint64_t
> len)
> > +{
> > +    uint8_t data[16]; /* at most 2 64 bit words */
> > +    void *p = data;
> > +
> > +    /* Make sure that the values provided can be represented in
> > +     * the reg property.
> > +     */
> > +    if ( addr_cells == 1 && (addr >> 32) )
> > +        return -1;
> > +    if ( size_cells == 1 && (len >> 32) )
> > +        return -1;
> > +
> > +    if ( addr_cells == 1 )
> > +    {
> > +        *(uint32_t *)p = cpu_to_fdt32(addr);
> > +        p += sizeof(uint32_t);
> > +    }
> > +    else if ( addr_cells == 2 )
> > +    {
> > +        *(uint64_t *)p = cpu_to_fdt64(addr);
> > +        p += sizeof(uint64_t);
> > +    }
> > +    else
> > +        return -1;
> > +
> > +    if ( size_cells == 1 )
> > +    {
> > +        *(uint32_t *)p = cpu_to_fdt32(len);
> > +        p += sizeof(uint32_t);
> > +    }
> > +    else if ( size_cells == 2 )
> > +    {
> > +        *(uint64_t *)p = cpu_to_fdt64(len);
> > +        p += sizeof(uint64_t);
> > +    }
> > +    else
> > +        return -1;
> > +
> > +    return(fdt_setprop(fdt, node, "reg", data, p - (void *)data));
> > +}
> > +
> > +static void __init *lookup_fdt_config_table(EFI_SYSTEM_TABLE *sys_table)
> > +{
> > +    const EFI_GUID fdt_guid = DEVICE_TREE_GUID;
> > +    EFI_CONFIGURATION_TABLE *tables;
> > +    void *fdt = NULL;
> > +    int i;
> > +
> > +    tables = sys_table->ConfigurationTable;
> > +    for ( i = 0; i < sys_table->NumberOfTableEntries; i++ )
> > +    {
> > +        if ( match_guid(&tables[i].VendorGuid, &fdt_guid) )
> > +        {
> > +            fdt = tables[i].VendorTable;
> > +            break;
> > +        }
> > +    }
> > +    return fdt;
> > +}
> > +
> > +static EFI_STATUS __init efi_get_memory_map(void **map,
> > +                                            UINTN *mmap_size,
> > +                                            UINTN *desc_size,
> > +                                            UINT32 *desc_ver,
> > +                                            UINTN *key_ptr)
> > +{
> > +    EFI_MEMORY_DESCRIPTOR *m = NULL;
> > +    EFI_STATUS status;
> > +    unsigned long key;
> > +    u32 desc_version;
> > +
> > +    *map = NULL;
> > +    *mmap_size = EFI_PAGE_SIZE;
> > +again:
> > +    *mmap_size += EFI_PAGE_SIZE;  /* Page size is allocation
> granularity */
> > +    status = efi_bs->AllocatePool(EfiLoaderData, *mmap_size, (void
> **)&m);
> > +    if ( status != EFI_SUCCESS )
> > +        return status;
> > +
> > +    *desc_size = 0;
> > +    key = 0;
> > +    status = efi_bs->GetMemoryMap(mmap_size, m, &key, desc_size,
> &desc_version);
> > +    if ( status == EFI_BUFFER_TOO_SMALL )
> > +    {
> > +        efi_bs->FreePool(m);
> > +        goto again;
> > +    }
> > +
> > +    if ( status != EFI_SUCCESS )
> > +    {
> > +        efi_bs->FreePool(m);
> > +        return status;
> > +    }
> > +
> > +    if ( key_ptr && status == EFI_SUCCESS )
> > +        *key_ptr = key;
> > +    if ( desc_ver && status == EFI_SUCCESS )
> > +        *desc_ver = desc_version;
> > +
> > +    *map = m;
> > +    return status;
> > +}
> > +
> > +static EFI_STATUS __init
> efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR *map,
> > +                                                UINTN mmap_size,
> > +                                                UINTN desc_size)
> > +{
> > +    int Index;
> > +    int i = 0;
> > +
> > +    EFI_MEMORY_DESCRIPTOR *desc_ptr = map;
> > +
> > +    for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
> > +    {
> > +        if ( desc_ptr->Type == EfiConventionalMemory
> > +             || desc_ptr->Type == EfiBootServicesCode
> > +             || desc_ptr->Type == EfiBootServicesData )
> > +        {
> > +            bootinfo.mem.bank[i].start = desc_ptr->PhysicalStart;
> > +            bootinfo.mem.bank[i].size = desc_ptr->NumberOfPages *
> EFI_PAGE_SIZE;
> > +            if ( ++i >= NR_MEM_BANKS )
> > +            {
> > +                PrintStr(L"Warning: All ");
> > +                DisplayUint(NR_MEM_BANKS, -1);
> > +                PrintStr(L" bootinfo mem banks exhausted.\r\n");
> > +                break;
> > +            }
> > +        }
> > +        desc_ptr = NextMemoryDescriptor(desc_ptr, desc_size);
> > +    }
> > +
> > +    bootinfo.mem.nr_banks = i;
> > +    return EFI_SUCCESS;
> > +
> > +}
> > +
> > +/*
> > + * Add the FDT nodes for the standard EFI information, which consist
> > + * of the System table address, the address of the final EFI memory map,
> > + * and memory map information.
> > + */
> > +EFI_STATUS __init fdt_add_uefi_nodes(EFI_SYSTEM_TABLE *sys_table,
> > +                                            void *fdt,
> > +                                            EFI_MEMORY_DESCRIPTOR
> *memory_map,
> > +                                            UINTN map_size,
> > +                                            UINTN desc_size,
> > +                                            UINT32 desc_ver)
> > +{
> > +    int node;
> > +    int status;
> > +    u32 fdt_val32;
> > +    u64 fdt_val64;
> > +    int prev;
> > +    /*
> > +     * Delete any memory nodes present.  The EFI memory map is the only
> > +     * memory description provided to Xen.
> > +     */
> > +    prev = 0;
> > +    for (;;)
> > +    {
> > +        const char *type;
> > +        int len;
> > +
> > +        node = fdt_next_node(fdt, prev, NULL);
> > +        if ( node < 0 )
> > +            break;
> > +
> > +        type = fdt_getprop(fdt, node, "device_type", &len);
> > +        if ( type && strncmp(type, "memory", len) == 0 )
> > +        {
> > +            fdt_del_node(fdt, node);
> > +            continue;
> > +        }
> > +
> > +        prev = node;
> > +    }
> > +
> > +    /* Add FDT entries for EFI runtime services in chosen node. */
> > +    node = fdt_subnode_offset(fdt, 0, "chosen");
> > +    if ( node < 0 )
> > +    {
> > +        node = fdt_add_subnode(fdt, 0, "chosen");
> > +        if ( node < 0 )
> > +        {
> > +            status = node; /* node is error code when negative */
> > +            goto fdt_set_fail;
> > +        }
> > +    }
>
> setup_chosen_node?
>

Yes, this should be done here as well.  I will add that for the case of
creating
a new FDT.

>
>
> > +    fdt_val64 = cpu_to_fdt64((u64)(uintptr_t)sys_table);
> > +    status = fdt_setprop(fdt, node, "linux,uefi-system-table",
> > +                         &fdt_val64, sizeof(fdt_val64));
> > +    if ( status )
> > +        goto fdt_set_fail;
> > +
> > +    fdt_val64 = cpu_to_fdt64((u64)(uintptr_t)memory_map);
> > +    status = fdt_setprop(fdt, node, "linux,uefi-mmap-start",
> > +                         &fdt_val64,  sizeof(fdt_val64));
> > +    if ( status )
> > +        goto fdt_set_fail;
> > +
> > +    fdt_val32 = cpu_to_fdt32(map_size);
> > +    status = fdt_setprop(fdt, node, "linux,uefi-mmap-size",
> > +                         &fdt_val32,  sizeof(fdt_val32));
> > +    if ( status )
> > +        goto fdt_set_fail;
> > +
> > +    fdt_val32 = cpu_to_fdt32(desc_size);
> > +    status = fdt_setprop(fdt, node, "linux,uefi-mmap-desc-size",
> > +                         &fdt_val32, sizeof(fdt_val32));
> > +    if ( status )
> > +        goto fdt_set_fail;
> > +
> > +    fdt_val32 = cpu_to_fdt32(desc_ver);
> > +    status = fdt_setprop(fdt, node, "linux,uefi-mmap-desc-ver",
> > +                         &fdt_val32, sizeof(fdt_val32));
> > +    if ( status )
> > +        goto fdt_set_fail;
> > +
> > +    return EFI_SUCCESS;
> > +
> > +fdt_set_fail:
> > +    if ( status == -FDT_ERR_NOSPACE )
> > +        return EFI_BUFFER_TOO_SMALL;
> > +
> > +    return EFI_LOAD_ERROR;
> > +}
> > +
> > +/*
> > + * Allocates new memory for a larger FDT, and frees existing memory if
> > + * struct file size is non-zero.  Updates file struct with new memory
> > + * address/size for later freeing.  If fdtfile.ptr is NULL, an empty FDT
> > + * is created.
> > + */
> > +static void __init *fdt_increase_size(struct file *fdtfile, int
> add_size)
> > +{
> > +    EFI_STATUS status;
> > +    EFI_PHYSICAL_ADDRESS fdt_addr;
> > +    int fdt_size;
> > +    int pages;
> > +    void *new_fdt;
> > +
> > +    if ( fdtfile->ptr )
> > +        fdt_size = fdt_totalsize(fdtfile->ptr);
> > +    else
> > +        fdt_size = 0;
> > +
> > +    pages = PFN_UP(fdt_size) + PFN_UP(add_size);
>
> Shouldn't this be PFN_UP(fdt_size+add_size)?
>
Yup, I will fix this.

>
>
> > +    status = efi_bs->AllocatePages(AllocateAnyPages, EfiLoaderData,
> > +                                   pages, &fdt_addr);
> > +
> > +    if ( status != EFI_SUCCESS )
> > +        return NULL;
> > +
> > +    new_fdt = (void *)fdt_addr;
> > +
> > +    if ( fdt_size )
> > +    {
> > +        if ( fdt_open_into(dtbfile.ptr, new_fdt, pages * EFI_PAGE_SIZE)
> )
> > +            return NULL;
> > +    }
> > +    else
> > +    {
> > +        /*
> > +         * Create an empty FDT if not provided one, which is the
> expected case
> > +         * when booted from the UEFI shell on an ACPI only system.  We
> will use
> > +         * the FDT to pass the EFI information to Xen, as well as nodes
> for
> > +         * any modules the stub loads.  The ACPI tables are part of the
> UEFI
> > +         * system table that is passed in the FDT.
> > +         */
> > +        if ( fdt_create_empty_tree(new_fdt, pages * EFI_PAGE_SIZE) )
> > +            return NULL;
> > +    }
> > +
> > +    /*
> > +     * Now that we have the new FDT allocated and copied, free the
> > +     * original and update the struct file so that the error handling
> > +     * code will free it.  If the original FDT came from a configuration
> > +     * table, we don't own that memory and can't free it.
> > +     */
> > +    if ( dtbfile.size )
> > +        efi_bs->FreePages(dtbfile.addr, PFN_UP(dtbfile.size));
> > +
> > +    /* Update 'file' info for new memory so we clean it up on error
> exits */
> > +    dtbfile.addr = fdt_addr;
> > +    dtbfile.size = pages * EFI_PAGE_SIZE;
> > +    return new_fdt;
> > +}
> > +
> > +static void __init efi_arch_pci(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_relocate_image(unsigned long delta)
> > +{
> > +}
> > +
> > +static void __init efi_arch_process_memory_map(EFI_SYSTEM_TABLE
> *SystemTable,
> > +                                               void *map,
> > +                                               UINTN map_size,
> > +                                               UINTN desc_size,
> > +                                               UINT32 desc_ver)
> > +{
> > +    EFI_STATUS status;
> > +
> > +    status = efi_process_memory_map_bootinfo(map, map_size, desc_size);
> > +    if ( EFI_ERROR(status) )
> > +        blexit(L"ERROR processing EFI memory map\r\n");
> > +
> > +    status = fdt_add_uefi_nodes(SystemTable, fdt, map, map_size,
> desc_size,
> > +                                desc_ver);
> > +    if ( EFI_ERROR(status) )
> > +        PrintErrMesg(L"ERROR updating FDT\r\n", status);
> > +}
> > +
> > +static void __init efi_arch_pre_exit_boot(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_post_exit_boot(void)
> > +{
> > +    efi_xen_start(fdt);
> > +}
> > +
> > +static void __init efi_arch_cfg_file(EFI_FILE_HANDLE dir_handle, char
> *section)
> > +{
> > +    union string name;
> > +    name.s = get_value(&cfg, section, "dtb");
> > +    if ( name.s )
> > +    {
> > +        if ( !read_file(dir_handle, &dtbfile, name.s))
> > +            blexit(NULL);
> > +    }
> > +    fdt = fdt_increase_size(&dtbfile, cfg.size + EFI_PAGE_SIZE);
> > +    if ( !fdt )
> > +        blexit(L"Unable to create new FDT\r\n");
> > +}
> > +
> > +static void __init efi_arch_get_memory_map(UINTN *map_size,
> > +                                             void **map,
> > +                                             UINTN *map_key, UINTN
> *desc_size,
> > +                                             UINT32 *desc_ver)
> > +{
> > +    EFI_STATUS status;
> > +
> > +    status = efi_get_memory_map(map, map_size, desc_size, desc_ver,
> map_key);
> > +    if ( EFI_ERROR(status) )
> > +        blexit(L"ERROR getting EFI memory map.\r\n");
> > +    memmap = *map;
> > +}
> > +
> > +static void __init efi_arch_edd(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_video(bool_t base_video,
> > +                                  UINTN cols, UINTN rows, UINTN depth,
> > +                                  EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
> > +{
> > +}
> > +
> > +static void __init efi_arch_memory(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_handle_cmdline(CHAR16 *image_name,
> > +                                           CHAR16 *cmdline_options,
> > +                                           char *cfgfile_options)
> > +{
> > +    union string name;
> > +    char *buf;
> > +    EFI_STATUS status;
> > +    int prop_len;
> > +    int chosen;
> > +
> > +    /* locate chosen node, which is where we add Xen module info. */
> > +    chosen = fdt_subnode_offset(fdt, 0, "chosen");
> > +    if ( chosen < 0 )
> > +        blexit(L"ERROR unable to find chosen node\r\n");
> > +
> > +    status = efi_bs->AllocatePool(EfiBootServicesData, EFI_PAGE_SIZE,
> (void **)&buf);
> > +    if ( EFI_ERROR(status) )
> > +        PrintErrMesg(L"ERROR allocating memory.\r\n", status);
> > +
> > +    if ( image_name )
> > +    {
> > +        name.w = image_name;
> > +        w2s(&name);
> > +    }
> > +    else
> > +        name.s = "xen";
> > +
> > +    prop_len = 0;
> > +    prop_len += snprintf(buf + prop_len,
> > +                           EFI_PAGE_SIZE - prop_len, "%s", name.s);
> > +    if ( prop_len >= EFI_PAGE_SIZE )
> > +        blexit(L"FDT string overflow");
> > +
> > +    if ( cfgfile_options )
> > +    {
> > +        prop_len += snprintf(buf + prop_len,
> > +                               EFI_PAGE_SIZE - prop_len, " %s",
> cfgfile_options);
> > +        if ( prop_len >= EFI_PAGE_SIZE )
> > +            blexit(L"FDT string overflow");
> > +    }
> > +
> > +    if ( cmdline_options )
> > +    {
> > +        name.w = cmdline_options;
> > +        w2s(&name);
> > +    }
> > +    else
> > +        name.s = NULL;
> > +
> > +    if ( name.s )
> > +    {
> > +        prop_len += snprintf(buf + prop_len,
> > +                               EFI_PAGE_SIZE - prop_len, " %s", name.s);
> > +        if ( prop_len >= EFI_PAGE_SIZE )
> > +            blexit(L"FDT string overflow");
> > +    }
> > +
> > +    if ( fdt_setprop_string(fdt, chosen, "xen,xen-bootargs", buf) < 0 )
> > +        blexit(L"unable to set xen,xen-bootargs property.");
> > +
> > +    efi_bs->FreePool(buf);
> > +}
> > +
> > +static void __init efi_arch_handle_module(struct file *file, char *name,
> > +                                          char *options)
> > +{
> > +    int node;
> > +    int chosen;
> > +    int addr_len, size_len;
> > +
> > +    if ( file == &dtbfile )
> > +        return;
> > +    chosen = setup_chosen_node(fdt, &addr_len, &size_len);
> > +    if ( chosen < 0 )
> > +        blexit(L"Unable to setup chosen node\r\n");
> > +
> > +    if ( file == &ramdisk )
> > +    {
> > +        char ramdisk_compat[] = "multiboot,ramdisk\0multiboot,module";
> > +        node = fdt_add_subnode(fdt, chosen, "ramdisk");
> > +        if ( node < 0 )
> > +            blexit(L"Error adding ramdisk FDT node.");
> > +        if ( fdt_setprop(fdt, node, "compatible", ramdisk_compat,
> > +                         sizeof(ramdisk_compat)) < 0 )
> > +            blexit(L"unable to set compatible property.");
> > +        if ( fdt_set_reg(fdt, node, addr_len, size_len, ramdisk.addr,
> > +                    ramdisk.size) < 0 )
> > +            blexit(L"unable to set reg property.");
> > +    }
> > +    else if ( file == &xsm )
> > +    {
> > +        char xsm_compat[] = "xen,xsm-policy\0multiboot,module";
> > +        node = fdt_add_subnode(fdt, chosen, "xsm");
> > +        if ( node < 0 )
> > +            blexit(L"Error adding xsm FDT node.");
> > +        if ( fdt_setprop(fdt, node, "compatible", xsm_compat,
> > +                         sizeof(xsm_compat)) < 0 )
> > +            blexit(L"unable to set compatible property.");
> > +        if ( fdt_set_reg(fdt, node, addr_len, size_len, xsm.addr,
> > +                    xsm.size) < 0 )
> > +            blexit(L"unable to set reg property.");
> > +    }
> > +    else if ( file == &kernel )
> > +    {
> > +        char kernel_compat[] = "multiboot,kernel\0multiboot,module";
> > +        node = fdt_add_subnode(fdt, chosen, "kernel");
> > +        if ( node < 0 )
> > +            blexit(L"Error adding dom0 FDT node.");
> > +        if ( fdt_setprop(fdt, node, "compatible", kernel_compat,
> > +                         sizeof(kernel_compat)) < 0 )
> > +            blexit(L"unable to set compatible property.");
> > +        if ( options && fdt_setprop_string(fdt, node, "bootargs",
> options) < 0 )
> > +            blexit(L"unable to set bootargs property.");
> > +        if ( fdt_set_reg(fdt, node, addr_len, size_len, kernel.addr,
> > +                         kernel.size) < 0 )
> > +            blexit(L"unable to set reg property.");
> > +    }
> > +    else
> > +        blexit(L"Unknown module type\r\n");
> > +}
> > +
> > +static void __init efi_arch_cpu(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_smbios(void)
> > +{
> > +}
> > +
> > +static void __init efi_arch_blexit(void)
> > +{
> > +    if ( dtbfile.addr && dtbfile.size )
> > +        efi_bs->FreePages(dtbfile.addr, PFN_UP(dtbfile.size));
> > +    if ( memmap )
> > +        efi_bs->FreePool(memmap);
> > +}
> > +
> > +static void __init efi_arch_load_addr_check(EFI_LOADED_IMAGE
> *loaded_image)
> > +{
> > +    if ( (unsigned long)loaded_image->ImageBase & ((1 << 12) - 1) )
> > +        blexit(L"Xen must be loaded at a 4 KByte boundary.");
> > +}
> > +
> > +static void __init efi_arch_runtime_setup(EFI_SYSTEM_TABLE *SystemTable)
> > +{
> > +}
> > +
> > +static __init bool_t efi_arch_use_config_file(EFI_SYSTEM_TABLE
> *SystemTable)
> > +{
> > +    /*
> > +     * For arm, we may get a device tree from GRUB (or other bootloader)
> > +     * that contains modules that have already been loaded into
> memory.  In
> > +     * this case, we do not use a configuration file, and rely on the
> > +     * bootloader to have loaded all required modules and appropriate
> > +     * options.
> > +     */
> > +
> > +    fdt = lookup_fdt_config_table(SystemTable);
> > +    dtbfile.ptr = fdt;
> > +    dtbfile.size = 0;  /* Config table memory can't be freed, so set
> size to 0 */
> > +    if ( !fdt || fdt_node_offset_by_compatible(fdt, 0,
> "multiboot,module") < 0 )
> > +    {
> > +        /*
> > +         * We either have no FDT, or one without modules, so we must
> have a
> > +         * Xen EFI configuration file to specify modules.  (dom0
> required)
> > +         */
> > +        return 1;
> > +    }
> > +    PrintStr(L"Using modules provided by bootloader in FDT\r\n");
> > +    /* We have modules already defined in fdt, just add space. */
> > +    fdt = fdt_increase_size(&dtbfile, EFI_PAGE_SIZE);
> > +    return 0;
> > +}
> > +
> > +/*
> > + * Local variables:
> > + * mode: C
> > + * c-file-style: "BSD"
> > + * c-basic-offset: 4
> > + * indent-tabs-mode: nil
> > + * End:
> > + */
> > diff --git a/xen/include/asm-arm/efi.h b/xen/include/asm-arm/efi.h
> > new file mode 100644
> > index 0000000..aae4716
> > --- /dev/null
> > +++ b/xen/include/asm-arm/efi.h
> > @@ -0,0 +1,29 @@
> > +#include <asm/efibind.h>
> > +#include <efi/efidef.h>
> > +#include <efi/efierr.h>
> > +#include <efi/eficon.h>
> > +#include <efi/efidevp.h>
> > +#include <efi/eficapsule.h>
> > +#include <efi/efiapi.h>
> > +#include <xen/efi.h>
> > +#include <xen/spinlock.h>
> > +#include <asm/page.h>
> > +
> > +extern unsigned int efi_num_ct;
> > +extern EFI_CONFIGURATION_TABLE *efi_ct;
> > +
> > +extern unsigned int efi_version, efi_fw_revision;
> > +extern const CHAR16 *efi_fw_vendor;
> > +
> > +extern EFI_RUNTIME_SERVICES *efi_rs;
> > +
> > +extern UINTN efi_memmap_size, efi_mdesc_size;
> > +extern void *efi_memmap;
> > +
> > +extern const struct efi_pci_rom *efi_pci_roms;
> > +
> > +extern UINT64 efi_boot_max_var_store_size,
> efi_boot_remain_var_store_size,
> > +              efi_boot_max_var_size;
> > +
> > +unsigned long efi_rs_enter(void);
> > +void efi_rs_leave(unsigned long);
> > diff --git a/xen/include/asm-arm/efibind.h
> b/xen/include/asm-arm/efibind.h
> > new file mode 100644
> > index 0000000..09dca7a
> > --- /dev/null
> > +++ b/xen/include/asm-arm/efibind.h
> > @@ -0,0 +1,2 @@
> > +#include <xen/types.h>
> > +#include <asm/arm64/efibind.h>
> > diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
> > index 36e5704..40814e6 100644
> > --- a/xen/include/asm-arm/setup.h
> > +++ b/xen/include/asm-arm/setup.h
> > @@ -3,7 +3,7 @@
> >
> >  #include <public/version.h>
> >
> > -#define NR_MEM_BANKS 8
> > +#define NR_MEM_BANKS 32
>
> Why?
> At the very least you should write it in the commit message.
>
> In the EFI case, we have the EFI memory map which lists all memory by
region and usage  (ie available, boot_services, runtime, etc.)
not the physical memory banks that are provided by FDT.  I am putting the
available memory from the EFI memory map into the memory bank
list, so this requires more entries.  This is somewhat problematic as it is
possible for the EFI memory map to be very fragmented, which could lead
to a great many regions.

Roy



> >  #define MAX_MODULES 5 /* Current maximum useful modules */
> >
> > --
> > 2.1.0.rc1
> >
>

--001a11c3584a3e8ed20502d5c699
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
hu, Sep 11, 2014 at 5:49 PM, Stefano Stabellini <span dir=3D"ltr">&lt;<a hr=
ef=3D"mailto:stefano.stabellini@eu.citrix.com" target=3D"_blank">stefano.st=
abellini@eu.citrix.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-=
color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=
=3D""><div class=3D"h5">On Tue, 9 Sep 2014, Roy Franz wrote:<br>
&gt; This patch adds EFI boot support for ARM based on the previous refacto=
ring of<br>
&gt; the x86 EFI boot code.=C2=A0 All ARM specific code is in the ARM efi-b=
oot.h header<br>
&gt; file, with the main EFI entry point common/efi/boot.c.=C2=A0 The PE/CO=
FF header is<br>
&gt; open-coded in head.S, which allows us to have a single binary be both =
an EFI<br>
&gt; executable and a normal arm64 IMAGE file. There is currently no PE/COF=
F<br>
&gt; toolchain support for arm64, so it is not possible to create the PE/CO=
FF header<br>
&gt; in the same manner as on x86.=C2=A0 This also simplifies the build as =
compared to<br>
&gt; x86, as we always build the same executable, whereas x86 builds 2.=C2=
=A0 An ARM<br>
&gt; version of efi-bind.h is added, which is based on the x86_64 version w=
ith the<br>
&gt; x86 specific portions removed.=C2=A0 The Makefile in common/efi is dif=
ferent for x86<br>
&gt; and ARM, as for ARM we always build in EFI support.<br>
&gt;<br>
&gt; Signed-off-by: Roy Franz &lt;<a href=3D"mailto:roy.franz@linaro.org">r=
oy.franz@linaro.org</a>&gt;<br>
&gt; ---<br>
&gt;=C2=A0 config/<a href=3D"http://arm64.mk" target=3D"_blank">arm64.mk</a=
>=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=A01 +<br>
&gt;=C2=A0 xen/arch/arm/arm64/head.S=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0| 150 ++++++++-<br>
&gt;=C2=A0 xen/arch/arm/xen.lds.S=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 |=C2=A0 =C2=A01 +<br>
&gt;=C2=A0 xen/common/Makefile=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A01 +<br>
&gt;=C2=A0 xen/common/efi/Makefile=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0|=C2=A0 =C2=A03 +<br>
&gt;=C2=A0 xen/include/asm-arm/arm64/efibind.h | 216 +++++++++++++<br>
&gt;=C2=A0 xen/include/asm-arm/efi-boot.h=C2=A0 =C2=A0 =C2=A0 | 630 +++++++=
+++++++++++++++++++++++++++++<br>
&gt;=C2=A0 xen/include/asm-arm/efi.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0|=C2=A0 29 ++<br>
&gt;=C2=A0 xen/include/asm-arm/efibind.h=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =
=C2=A02 +<br>
&gt;=C2=A0 xen/include/asm-arm/setup.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=
=C2=A0 =C2=A02 +-<br>
&gt;=C2=A0 10 files changed, 1031 insertions(+), 4 deletions(-)<br>
&gt;=C2=A0 create mode 100644 xen/common/efi/Makefile<br>
&gt;=C2=A0 create mode 100644 xen/include/asm-arm/arm64/efibind.h<br>
&gt;=C2=A0 create mode 100644 xen/include/asm-arm/efi-boot.h<br>
&gt;=C2=A0 create mode 100644 xen/include/asm-arm/efi.h<br>
&gt;=C2=A0 create mode 100644 xen/include/asm-arm/efibind.h<br>
&gt;<br>
&gt; diff --git a/config/<a href=3D"http://arm64.mk" target=3D"_blank">arm6=
4.mk</a> b/config/<a href=3D"http://arm64.mk" target=3D"_blank">arm64.mk</a=
><br>
&gt; index 15b57a4..e6aab0e 100644<br>
&gt; --- a/config/<a href=3D"http://arm64.mk" target=3D"_blank">arm64.mk</a=
><br>
&gt; +++ b/config/<a href=3D"http://arm64.mk" target=3D"_blank">arm64.mk</a=
><br>
&gt; @@ -1,6 +1,7 @@<br>
&gt;=C2=A0 CONFIG_ARM :=3D y<br>
&gt;=C2=A0 CONFIG_ARM_64 :=3D y<br>
&gt;=C2=A0 CONFIG_ARM_$(XEN_OS) :=3D y<br>
&gt; +CONFIG_EFI :=3D y<br>
&gt;<br>
&gt;=C2=A0 CONFIG_XEN_INSTALL_SUFFIX :=3D<br>
&gt;<br>
&gt; diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S<br>
&gt; index 43b5e72..158c102 100644<br>
&gt; --- a/xen/arch/arm/arm64/head.S<br>
&gt; +++ b/xen/arch/arm/arm64/head.S<br>
&gt; @@ -24,6 +24,8 @@<br>
&gt;=C2=A0 #include &lt;asm/page.h&gt;<br>
&gt;=C2=A0 #include &lt;asm/asm_defns.h&gt;<br>
&gt;=C2=A0 #include &lt;asm/early_printk.h&gt;<br>
&gt; +#include &lt;efi/efierr.h&gt;<br>
&gt; +#include &lt;asm/arm64/efibind.h&gt;<br>
&gt;<br>
&gt;=C2=A0 #define PT_PT=C2=A0 =C2=A0 =C2=A00xf7f /* nG=3D1 AF=3D1 SH=3D11 =
AP=3D01 NS=3D1 ATTR=3D111 T=3D1 P=3D1 */<br>
&gt;=C2=A0 #define PT_MEM=C2=A0 =C2=A0 0xf7d /* nG=3D1 AF=3D1 SH=3D11 AP=3D=
01 NS=3D1 ATTR=3D111 T=3D0 P=3D1 */<br>
&gt; @@ -104,8 +106,14 @@ GLOBAL(start)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* DO NOT MODIFY. Image header =
expected by Linux boot-loaders.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 b=C2=A0 =C2=A0 =C2=A0 =C2=A0real_start=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* branch to kernel start, magic */<b=
r>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* reserved */<br>
&gt; +efi_head:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* This add instruction has no meani=
ngful effect except that<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* its opcode forms the magic &quot;=
MZ&quot; signature of a PE/COFF file<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* that is required for UEFI applica=
tions.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 add=C2=A0 =C2=A0 =C2=A0x13, x18, #0x16<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 b=C2=A0 =C2=A0 =C2=A0 =C2=A0real_start=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* branch to kernel start */<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Image load offset f=
rom start of RAM */<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* reserved */<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* reserved */<br>
&gt; @@ -116,8 +124,113 @@ GLOBAL(start)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00x52<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00x4d<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00x64<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 .word=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* reserved */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0pe_header - efi_head=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 /* Offset to the PE header. */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Add the PE/COFF header to the fil=
e.=C2=A0 The address of this header<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* is at offset 0x3c in the file, an=
d is part of Linux &quot;Image&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* header.=C2=A0 The arm64 Linux Ima=
ge format is designed to support<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* being both an &#39;Image&#39; for=
mat binary and a PE/COFF binary.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* The PE/COFF format is defined by =
Microsoft, and is available<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* from: <a href=3D"http://msdn.micr=
osoft.com/en-us/gg463119.aspx" target=3D"_blank">http://msdn.microsoft.com/=
en-us/gg463119.aspx</a><br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Version 8.3 adds support for arm6=
4 and UEFI usage.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .align=C2=A0 3<br>
&gt; +pe_header:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .ascii=C2=A0 &quot;PE&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0<br>
&gt; +coff_header:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0xaa64=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 /* AA=
rch64 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 2=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/* nr_sections */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* TimeDateStamp */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* PointerToSymbolTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A01=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/* NumberOfSymbols */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 section_table - optional_hea=
der /* SizeOfOptionalHeader */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0x206=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/* Characteristics. */<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=A0 =C2=A0 /* IMAGE_FILE_DEBUG_STRIPPED | */<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=A0 =C2=A0 /* IMAGE_FILE_EXECUTABLE_IMAGE | */<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=A0 =C2=A0 /* IMAGE_FILE_LINE_NUMS_STRIPPED */<br>
&gt; +optional_header:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0x20b=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/* PE32+ format */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00x02=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 /* MajorLinkerVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00x14=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 /* MinorLinkerVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0_end - real_start=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* SizeOfCode */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* SizeOfInitializedData */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* SizeOfUninitializedData */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0efi_start - efi_head=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* AddressOfEntryPoint */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0real_start - efi_head=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* BaseOfCode */<br>
&gt; +<br>
&gt; +extra_header_fields:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* ImageBase */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00x1000=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 /=
* SectionAlignment (4 KByte) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00x8=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/* FileAlignment */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MajorOperatingSystemVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MinorOperatingSystemVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MajorImageVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MinorImageVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MajorSubsystemVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* MinorSubsystemVersion */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* Win32VersionValue */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0_end - efi_head=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* SizeOfImage */<br=
>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Everything before the kernel image is =
considered part of the header */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0real_start - efi_head=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* SizeOfHeaders */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* CheckSum */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0xa=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/* Subsystem (EFI application) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* DllCharacteristics */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* SizeOfStackReserve */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* SizeOfStackCommit */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* SizeOfHeapReserve */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* SizeOfHeapCommit */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* LoaderFlags */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00x6=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/* NumberOfRvaAndSizes */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* ExportTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* ImportTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* ResourceTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* ExceptionTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* CertificationTable */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .quad=C2=A0 =C2=A00=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/* BaseRelocationTable */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Section table */<br>
&gt; +section_table:<br>
&gt;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* The EFI application loader requir=
es a relocation section<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* because EFI applications must be =
relocatable.=C2=A0 This is a<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* dummy section as far as we are co=
ncerned.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .ascii=C2=A0 &quot;.reloc&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00=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/* end of 0 padding of section name */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* SizeOfRawData */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* PointerToRawData */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* PointerToRelocations */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=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/* PointerToLineNumbers */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* NumberOfRelocations */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=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/* NumberOfLineNumbers */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00x42100040=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Characte=
ristics (section flags) */<br>
&gt; +<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .ascii=C2=A0 &quot;.text&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .byte=C2=A0 =C2=A00=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/* end of 0 padding of section name */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0_end - real_start=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* VirtualSize */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0real_start - efi_head=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* VirtualAddress */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0__init_end_efi - real_s=
tart=C2=A0 =C2=A0 =C2=A0/* SizeOfRawData */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A0real_start - efi_head=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* PointerToRawData */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* PointerToRelocations (0 for executabl=
es) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* PointerToLineNumbers (0 for executabl=
es) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* NumberOfRelocations=C2=A0 (0 for executable=
s) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .short=C2=A0 0=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* NumberOfLineNumbers=C2=A0 (0 for executable=
s) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .long=C2=A0 =C2=A00xe0500020=C2=A0 =C2=A0=
 =C2=A0 =C2=A0/* Characteristics (section flags) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 .align=C2=A0 5<br>
&gt;=C2=A0 real_start:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 msr=C2=A0 =C2=A0DAIFSet, 0xf=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Disable all interrupts */<br>
&gt;<br>
&gt; @@ -617,6 +730,37 @@ putn:=C2=A0 =C2=A0ret<br>
&gt;=C2=A0 ENTRY(lookup_processor_type)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 x0, #0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret<br>
&gt; +/*<br>
&gt; + *=C2=A0 Function to transition from EFI loader in C, to Xen entry po=
int.<br>
&gt; + *=C2=A0 void noreturn efi_xen_start(void *fdt_ptr);<br>
&gt; + */<br>
&gt; +ENTRY(efi_xen_start)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Turn off cache and MMU as Xen exp=
ects. EFI enables them, but also<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* mandates a 1:1 (unity) VA-&gt;PA =
mapping, so we can turn off the<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* MMU while executing EFI code befo=
re entering Xen.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* The EFI loader calls this to star=
t Xen.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Preserve x0 (fdf pointer) across =
call to __flush_dcache_all,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* restore for entry into Xen.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 =C2=A0x20, x0<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 bl=C2=A0 =C2=A0 __flush_dcache_all<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ic=C2=A0 =C2=A0 ialluis<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Turn off Dcache and MMU */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mrs=C2=A0 =C2=A0x0, sctlr_el2<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 bic=C2=A0 =C2=A0x0, x0, #1 &lt;&lt; 0=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 /* clear SCTLR.M */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 bic=C2=A0 =C2=A0x0, x0, #1 &lt;&lt; 2=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 /* clear SCTLR.C */<br>
<br>
</div></div>dsb?<br></blockquote><div><br></div><div>The dsb is done at the=
 end of =C2=A0__flush_dcache_all</div><div><br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-=
left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div class=3D"h5"><br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 msr=C2=A0 =C2=A0sctlr_el2, x0<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 isb<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Jump to Xen entry point */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 =C2=A0x0, x20<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 =C2=A0x1, xzr<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 =C2=A0x2, xzr<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 mov=C2=A0 =C2=A0x3, xzr<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 b=C2=A0 =C2=A0 =C2=A0real_start<br>
&gt; +ENDPROC(efi_xen_start)<br>
&gt;<br>
&gt;=C2=A0 /*<br>
&gt;=C2=A0 =C2=A0* Local variables:<br>
&gt; diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S<br>
&gt; index 079e085..d8b0cfe 100644<br>
&gt; --- a/xen/arch/arm/xen.lds.S<br>
&gt; +++ b/xen/arch/arm/xen.lds.S<br>
&gt; @@ -135,6 +135,7 @@ SECTIONS<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*(.xsm_initcall.init)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__xsm_initcall_end =3D .;<br>
&gt;=C2=A0 =C2=A0 } :text<br>
&gt; +=C2=A0 __init_end_efi =3D .;<br>
&gt;=C2=A0 =C2=A0 . =3D ALIGN(STACK_SIZE);<br>
&gt;=C2=A0 =C2=A0 __init_end =3D .;<br>
&gt;<br>
&gt; diff --git a/xen/common/Makefile b/xen/common/Makefile<br>
&gt; index 3683ae3..e78cb29 100644<br>
&gt; --- a/xen/common/Makefile<br>
&gt; +++ b/xen/common/Makefile<br>
&gt; @@ -67,4 +67,5 @@ subdir-$(x86_64) +=3D hvm<br>
&gt;=C2=A0 subdir-$(coverage) +=3D gcov<br>
&gt;<br>
&gt;=C2=A0 subdir-y +=3D libelf<br>
&gt; +subdir-$(CONFIG_EFI) +=3D efi<br>
&gt;=C2=A0 subdir-$(HAS_DEVICE_TREE) +=3D libfdt<br>
&gt; diff --git a/xen/common/efi/Makefile b/xen/common/efi/Makefile<br>
&gt; new file mode 100644<br>
&gt; index 0000000..195b2f3<br>
&gt; --- /dev/null<br>
&gt; +++ b/xen/common/efi/Makefile<br>
&gt; @@ -0,0 +1,3 @@<br>
&gt; +CFLAGS +=3D -fshort-wchar<br>
&gt; +<br>
&gt; +obj-y +=3D boot.init.o<br>
&gt; diff --git a/xen/include/asm-arm/arm64/efibind.h b/xen/include/asm-arm=
/arm64/efibind.h<br>
&gt; new file mode 100644<br>
&gt; index 0000000..2b0bf40<br>
&gt; --- /dev/null<br>
&gt; +++ b/xen/include/asm-arm/arm64/efibind.h<br>
&gt; @@ -0,0 +1,216 @@<br>
&gt; +/*++<br>
&gt; +<br>
&gt; +Copyright (c) 1998=C2=A0 Intel Corporation<br>
&gt; +<br>
&gt; +Module Name:<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 efefind.h<br>
&gt; +<br>
&gt; +Abstract:<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 EFI to compile bindings<br>
&gt; +<br>
&gt; +<br>
&gt; +<br>
&gt; +<br>
&gt; +Revision History<br>
&gt; +<br>
&gt; +--*/<br>
&gt; +<br>
&gt; +#ifndef __GNUC__<br>
&gt; +#pragma pack()<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +#define EFIERR(a)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(0x80000000=
00000000 | a)<br>
&gt; +#define EFI_ERROR_MASK=C2=A0 =C2=A0 =C2=A0 0x8000000000000000<br>
&gt; +#define EFIERR_OEM(a)=C2=A0 =C2=A0 =C2=A0 =C2=A0(0xc000000000000000 |=
 a)<br>
&gt; +<br>
&gt; +#define BAD_POINTER=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00xFBFBFBFBFBFBFB=
FB<br>
&gt; +#define MAX_ADDRESS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00xFFFFFFFFFFFFFF=
FF<br>
&gt; +<br>
&gt; +#define EFI_STUB_ERROR=C2=A0 =C2=A0 =C2=A0 MAX_ADDRESS<br>
&gt; +<br>
&gt; +#ifndef __ASSEMBLY__<br>
&gt; +//<br>
&gt; +// Basic int types of various widths<br>
&gt; +//<br>
&gt; +<br>
&gt; +#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ &lt; 199901L )<br=
>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 // No ANSI C 1999/2000 stdint.h integer width declarati=
ons<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 #if defined(__GNUC__)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef unsigned long long=C2=A0 uint64_t=
 __attribute__((aligned (8)));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef long long=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0int64_t __attribute__((aligned (8)));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef unsigned int=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 uint32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef int=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0int32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef unsigned short=C2=A0 =C2=A0 =C2=
=A0 uint16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef short=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0int16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef unsigned char=C2=A0 =C2=A0 =C2=A0=
 =C2=A0uint8_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 typedef char=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 int8_t;<br>
&gt; +=C2=A0 =C2=A0 #elif defined(UNIX_LP64)<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*=C2=A0 Use LP64 programming model from =
C_FLAGS for integer width declarations */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned long=C2=A0 =C2=A0 =C2=A0 =
=C2=A0uint64_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef long=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 int64_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned int=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 uint32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef int=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0int32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned short=C2=A0 =C2=A0 =C2=A0=
 uint16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef short=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0int16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned char=C2=A0 =C2=A0 =C2=A0 =
=C2=A0uint8_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef char=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 int8_t;<br>
&gt; +=C2=A0 =C2=A0 #else<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*=C2=A0 Assume P64 programming model from=
 C_FLAGS for integer width declarations */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned long long=C2=A0 uint64_t =
__attribute__((aligned (8)));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef long long=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0int64_t __attribute__((aligned (8)));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned int=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 uint32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef int=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0int32_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned short=C2=A0 =C2=A0 =C2=A0=
 uint16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef short=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0int16_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef unsigned char=C2=A0 =C2=A0 =C2=A0 =
=C2=A0uint8_t;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0typedef char=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 int8_t;<br>
&gt; +=C2=A0 =C2=A0 #endif<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +//<br>
&gt; +// Basic EFI types of various widths<br>
&gt; +//<br>
&gt; +<br>
&gt; +#ifndef __WCHAR_TYPE__<br>
&gt; +# define __WCHAR_TYPE__ short<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +typedef uint64_t=C2=A0 =C2=A0UINT64;<br>
&gt; +typedef int64_t=C2=A0 =C2=A0 INT64;<br>
&gt; +<br>
&gt; +#ifndef _BASETSD_H_<br>
&gt; +=C2=A0 =C2=A0 typedef uint32_t=C2=A0 =C2=A0UINT32;<br>
&gt; +=C2=A0 =C2=A0 typedef int32_t=C2=A0 =C2=A0 INT32;<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +typedef uint16_t=C2=A0 =C2=A0UINT16;<br>
&gt; +typedef int16_t=C2=A0 =C2=A0 INT16;<br>
&gt; +typedef uint8_t=C2=A0 =C2=A0 UINT8;<br>
&gt; +typedef int8_t=C2=A0 =C2=A0 =C2=A0INT8;<br>
&gt; +typedef __WCHAR_TYPE__ WCHAR;<br>
&gt; +<br>
&gt; +#undef VOID<br>
&gt; +#define VOID=C2=A0 =C2=A0 void<br>
&gt; +<br>
&gt; +<br>
&gt; +typedef int64_t=C2=A0 =C2=A0 INTN;<br>
&gt; +typedef uint64_t=C2=A0 =C2=A0UINTN;<br>
&gt; +<br>
&gt; +#define POST_CODE(_Data)<br>
&gt; +<br>
&gt; +<br>
&gt; +#define BREAKPOINT()=C2=A0 =C2=A0 =C2=A0 =C2=A0 while (TRUE);=C2=A0 =
=C2=A0 // Make it hang on Bios[Dbg]32<br>
&gt; +<br>
&gt; +//<br>
&gt; +// Pointers must be aligned to these address to function<br>
&gt; +//<br>
&gt; +<br>
&gt; +#define MIN_ALIGNMENT_SIZE=C2=A0 4<br>
&gt; +<br>
&gt; +#define ALIGN_VARIABLE(Value ,Adjustment) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (UINTN)Adjustment =3D 0; \<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if((UINTN)Value % MIN_ALIGN=
MENT_SIZE) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (UINTN)Adjust=
ment =3D MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Value =3D (UINTN)Value + (U=
INTN)Adjustment<br>
&gt; +<br>
&gt; +<br>
&gt; +//<br>
&gt; +// Define macros to build data structure signatures from characters.<=
br>
&gt; +//<br>
&gt; +<br>
&gt; +#define EFI_SIGNATURE_16(A,B)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0((A) | (B&lt;&lt;8))<br>
&gt; +#define EFI_SIGNATURE_32(A,B,C,D)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(E=
FI_SIGNATURE_16(A,B)=C2=A0 =C2=A0 =C2=A0| (EFI_SIGNATURE_16(C,D)=C2=A0 =C2=
=A0 =C2=A0&lt;&lt; 16))<br>
&gt; +#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) =
| ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) &lt;&lt; 32))<br>
&gt; +<br>
&gt; +#define EXPORTAPI<br>
&gt; +<br>
&gt; +<br>
&gt; +//<br>
&gt; +// EFIAPI - prototype calling convention for EFI function pointers<br=
>
&gt; +// BOOTSERVICE - prototype for implementation of a boot service inter=
face<br>
&gt; +// RUNTIMESERVICE - prototype for implementation of a runtime service=
 interface<br>
&gt; +// RUNTIMEFUNCTION - prototype for implementation of a runtime functi=
on that is not a service<br>
&gt; +// RUNTIME_CODE - pragma macro for declaring runtime code<br>
&gt; +//<br>
&gt; +<br>
&gt; +#ifndef EFIAPI=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 // Forces EFI calling conventions reguardless of compiler options<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 #define EFIAPI=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 // Substitute expresion to force C calling convention<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +#define BOOTSERVICE<br>
&gt; +//#define RUNTIMESERVICE(proto,a)=C2=A0 =C2=A0 alloc_text(&quot;rtcod=
e&quot;,a); proto a<br>
&gt; +//#define RUNTIMEFUNCTION(proto,a)=C2=A0 =C2=A0alloc_text(&quot;rtcod=
e&quot;,a); proto a<br>
&gt; +#define RUNTIMESERVICE<br>
&gt; +#define RUNTIMEFUNCTION<br>
&gt; +<br>
&gt; +<br>
&gt; +#define RUNTIME_CODE(a)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0alloc_text(&=
quot;rtcode&quot;, a)<br>
&gt; +#define BEGIN_RUNTIME_DATA()=C2=A0 =C2=A0 data_seg(&quot;rtdata&quot;=
)<br>
&gt; +#define END_RUNTIME_DATA()=C2=A0 =C2=A0 =C2=A0 data_seg(&quot;&quot;)=
<br>
&gt; +<br>
&gt; +#define VOLATILE=C2=A0 =C2=A0 volatile<br>
&gt; +<br>
&gt; +#define MEMORY_FENCE()<br>
&gt; +<br>
&gt; +<br>
&gt; +//<br>
&gt; +// When build similiar to FW, then link everything together as<br>
&gt; +// one big module.<br>
&gt; +//<br>
&gt; +<br>
&gt; +#define EFI_DRIVER_ENTRY_POINT(InitFunction)=C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 UINTN=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 InitializeDriver (=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=A0 =C2=A0 VOID=C2=A0 =C2=A0 *ImageHandle,=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 =C2=A0 VOID=C2=A0 =C2=A0 *SystemTable=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 =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\<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=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return InitFunction(ImageHandle,=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SystemTable);=
=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 =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\<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=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS efi_main(=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=A0 =C2=A0 EFI_HANDLE image,=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=A0 =C2=A0 EFI_SYSTEM_TABLE *systab=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ) __attribute__((weak,=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 alias (&quot;=
InitializeDriver&quot;)));<br>
&gt; +<br>
&gt; +#define LOAD_INTERNAL_DRIVER(_if, type, name, entry)=C2=A0 =C2=A0 \<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (_if)-&gt;LoadInternal(type, name, entry)=
<br>
&gt; +<br>
&gt; +<br>
&gt; +//<br>
&gt; +// Some compilers don&#39;t support the forward reference construct:<=
br>
&gt; +//=C2=A0 typedef struct XXXXX<br>
&gt; +//<br>
&gt; +// The following macro provide a workaround for such cases.<br>
&gt; +//<br>
&gt; +#ifdef NO_INTERFACE_DECL<br>
&gt; +#define INTERFACE_DECL(x)<br>
&gt; +#else<br>
&gt; +#ifdef __GNUC__<br>
&gt; +#define INTERFACE_DECL(x) struct x<br>
&gt; +#else<br>
&gt; +#define INTERFACE_DECL(x) typedef struct x<br>
&gt; +#endif<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Local variables:<br>
&gt; + * mode: C<br>
&gt; + * c-file-style: &quot;BSD&quot;<br>
&gt; + * c-basic-offset: 4<br>
&gt; + * tab-width: 4<br>
&gt; + * indent-tabs-mode: nil<br>
&gt; + * End:<br>
&gt; + */<br>
&gt; diff --git a/xen/include/asm-arm/efi-boot.h b/xen/include/asm-arm/efi-=
boot.h<br>
&gt; new file mode 100644<br>
&gt; index 0000000..2db0966<br>
&gt; --- /dev/null<br>
&gt; +++ b/xen/include/asm-arm/efi-boot.h<br>
&gt; @@ -0,0 +1,630 @@<br>
&gt; +/*<br>
&gt; + * Architecture specific implementation for EFI boot code.=C2=A0 This=
 file<br>
&gt; + * is intended to be included by XXX _only_, and therefore can define=
<br>
&gt; + * arch specific global variables.<br>
&gt; + */<br>
&gt; +#include &lt;xen/libfdt/libfdt.h&gt;<br>
&gt; +#include &lt;asm/setup.h&gt;<br>
&gt; +<br>
&gt; +static void noreturn blexit(const CHAR16 *str);<br>
&gt; +static void PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode);<br>
&gt; +void noreturn efi_xen_start(void *fdt_ptr);<br>
&gt; +<br>
&gt; +#define DEVICE_TREE_GUID \<br>
&gt; +{0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xa=
a, 0xe0}}<br>
&gt; +<br>
&gt; +static struct file __initdata dtbfile;<br>
&gt; +static void __initdata *fdt;<br>
&gt; +static void __initdata *memmap;<br>
&gt; +<br>
&gt; +static int __init setup_chosen_node(void *fdt, int *addr_cells, int *=
size_cells)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 int node;<br>
&gt; +=C2=A0 =C2=A0 const struct fdt_property *prop;<br>
&gt; +=C2=A0 =C2=A0 int len;<br>
&gt; +=C2=A0 =C2=A0 uint32_t val;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( !fdt || !addr_cells || !size_cells )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* locate chosen node, which is where we add Xen module=
 info. */<br>
&gt; +=C2=A0 =C2=A0 node =3D fdt_subnode_offset(fdt, 0, &quot;chosen&quot;)=
;<br>
&gt; +=C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_add_subnode(fdt, 0, &quot;ch=
osen&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return node;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* Get or set #address-cells and #size-cells */<br>
&gt; +=C2=A0 =C2=A0 prop =3D fdt_get_property(fdt, node, &quot;#address-cel=
ls&quot;, &amp;len);<br>
&gt; +=C2=A0 =C2=A0 if ( !prop )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 val =3D cpu_to_fdt32(2);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;#addres=
s-cells&quot;, &amp;val, sizeof(val)) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *addr_cells =3D 2;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *addr_cells =3D fdt32_to_cpu(*((uint32_t =
*)prop-&gt;data));<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 prop =3D fdt_get_property(fdt, node, &quot;#size-cells&=
quot;, &amp;len);<br>
&gt; +=C2=A0 =C2=A0 if ( !prop )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 val =3D cpu_to_fdt32(2);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;#size-c=
ells&quot;, &amp;val, sizeof(val)) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *size_cells =3D 2;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *size_cells =3D fdt32_to_cpu(*((uint32_t =
*)prop-&gt;data));<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* Make sure ranges is empty if it exists, otherwi=
se create empty ranges<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* property.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 prop =3D fdt_get_property(fdt, node, &quot;ranges&quot;=
, &amp;len);<br>
&gt; +=C2=A0 =C2=A0 if ( !prop )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 val =3D cpu_to_fdt32(0);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;ranges&=
quot;, &amp;val, 0) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else if ( fdt32_to_cpu(prop-&gt;len) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;=C2=A0 /* Non-emp=
ty ranges property */<br>
&gt; +=C2=A0 =C2=A0 return node;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Set a single &#39;reg&#39; property taking into account the<br>
&gt; + * configured addr and size cell sizes.<br>
&gt; + */<br>
&gt; +static int __init fdt_set_reg(void *fdt, int node, int addr_cells,<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 int size_cells, uint64_t addr, uint64_t=
 len)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 uint8_t data[16]; /* at most 2 64 bit words */<br>
&gt; +=C2=A0 =C2=A0 void *p =3D data;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* Make sure that the values provided can be represente=
d in<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* the reg property.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 if ( addr_cells =3D=3D 1 &amp;&amp; (addr &gt;&gt; 32) =
)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +=C2=A0 =C2=A0 if ( size_cells =3D=3D 1 &amp;&amp; (len &gt;&gt; 32) )=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( addr_cells =3D=3D 1 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *(uint32_t *)p =3D cpu_to_fdt32(addr);<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 p +=3D sizeof(uint32_t);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else if ( addr_cells =3D=3D 2 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *(uint64_t *)p =3D cpu_to_fdt64(addr);<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 p +=3D sizeof(uint64_t);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( size_cells =3D=3D 1 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *(uint32_t *)p =3D cpu_to_fdt32(len);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 p +=3D sizeof(uint32_t);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else if ( size_cells =3D=3D 2 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *(uint64_t *)p =3D cpu_to_fdt64(len);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 p +=3D sizeof(uint64_t);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 return(fdt_setprop(fdt, node, &quot;reg&quot;, data, p =
- (void *)data));<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init *lookup_fdt_config_table(EFI_SYSTEM_TABLE *sys_tab=
le)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 const EFI_GUID fdt_guid =3D DEVICE_TREE_GUID;<br>
&gt; +=C2=A0 =C2=A0 EFI_CONFIGURATION_TABLE *tables;<br>
&gt; +=C2=A0 =C2=A0 void *fdt =3D NULL;<br>
&gt; +=C2=A0 =C2=A0 int i;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 tables =3D sys_table-&gt;ConfigurationTable;<br>
&gt; +=C2=A0 =C2=A0 for ( i =3D 0; i &lt; sys_table-&gt;NumberOfTableEntrie=
s; i++ )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( match_guid(&amp;tables[i].VendorGuid=
, &amp;fdt_guid) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 fdt =3D tables[i].VendorTab=
le;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 return fdt;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static EFI_STATUS __init efi_get_memory_map(void **map,<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 UINTN *mmap_size,<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 UINTN *desc_size,<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 UINT32 *desc_ver,<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 UINTN *key_ptr)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 EFI_MEMORY_DESCRIPTOR *m =3D NULL;<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS status;<br>
&gt; +=C2=A0 =C2=A0 unsigned long key;<br>
&gt; +=C2=A0 =C2=A0 u32 desc_version;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 *map =3D NULL;<br>
&gt; +=C2=A0 =C2=A0 *mmap_size =3D EFI_PAGE_SIZE;<br>
&gt; +again:<br>
&gt; +=C2=A0 =C2=A0 *mmap_size +=3D EFI_PAGE_SIZE;=C2=A0 /* Page size is al=
location granularity */<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_bs-&gt;AllocatePool(EfiLoaderData, *mmap=
_size, (void **)&amp;m);<br>
&gt; +=C2=A0 =C2=A0 if ( status !=3D EFI_SUCCESS )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return status;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 *desc_size =3D 0;<br>
&gt; +=C2=A0 =C2=A0 key =3D 0;<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_bs-&gt;GetMemoryMap(mmap_size, m, &amp;k=
ey, desc_size, &amp;desc_version);<br>
&gt; +=C2=A0 =C2=A0 if ( status =3D=3D EFI_BUFFER_TOO_SMALL )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_bs-&gt;FreePool(m);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto again;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( status !=3D EFI_SUCCESS )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_bs-&gt;FreePool(m);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return status;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( key_ptr &amp;&amp; status =3D=3D EFI_SUCCESS )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *key_ptr =3D key;<br>
&gt; +=C2=A0 =C2=A0 if ( desc_ver &amp;&amp; status =3D=3D EFI_SUCCESS )<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 *desc_ver =3D desc_version;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 *map =3D m;<br>
&gt; +=C2=A0 =C2=A0 return status;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_D=
ESCRIPTOR *map,<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=A0 =C2=A0 UINTN mmap_size,<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=A0 =C2=A0 UINTN desc_size)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 int Index;<br>
&gt; +=C2=A0 =C2=A0 int i =3D 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 EFI_MEMORY_DESCRIPTOR *desc_ptr =3D map;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 for ( Index =3D 0; Index &lt; (mmap_size / desc_size); =
Index++ )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( desc_ptr-&gt;Type =3D=3D EfiConventi=
onalMemory<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|| desc_ptr-&gt;Type =
=3D=3D EfiBootServicesCode<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|| desc_ptr-&gt;Type =
=3D=3D EfiBootServicesData )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bootinfo.mem.bank[i].start =
=3D desc_ptr-&gt;PhysicalStart;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bootinfo.mem.bank[i].size =
=3D desc_ptr-&gt;NumberOfPages * EFI_PAGE_SIZE;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( ++i &gt;=3D NR_MEM_BAN=
KS )<br>
&gt; +=C2=A0 =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=A0 =C2=A0 PrintStr(L&qu=
ot;Warning: All &quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DisplayUint(N=
R_MEM_BANKS, -1);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PrintStr(L&qu=
ot; bootinfo mem banks exhausted.\r\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 desc_ptr =3D NextMemoryDescriptor(desc_pt=
r, desc_size);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 bootinfo.mem.nr_banks =3D i;<br>
&gt; +=C2=A0 =C2=A0 return EFI_SUCCESS;<br>
&gt; +<br>
&gt; +}<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Add the FDT nodes for the standard EFI information, which consist<=
br>
&gt; + * of the System table address, the address of the final EFI memory m=
ap,<br>
&gt; + * and memory map information.<br>
&gt; + */<br>
&gt; +EFI_STATUS __init fdt_add_uefi_nodes(EFI_SYSTEM_TABLE *sys_table,<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 void *fdt,<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 EFI_MEMORY_DESCRIPTOR *memory_map,<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 UINTN map_size,<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 UINTN desc_size,<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 UINT32 desc_ver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 int node;<br>
&gt; +=C2=A0 =C2=A0 int status;<br>
&gt; +=C2=A0 =C2=A0 u32 fdt_val32;<br>
&gt; +=C2=A0 =C2=A0 u64 fdt_val64;<br>
&gt; +=C2=A0 =C2=A0 int prev;<br>
&gt; +=C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* Delete any memory nodes present.=C2=A0 The EFI =
memory map is the only<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* memory description provided to Xen.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 prev =3D 0;<br>
&gt; +=C2=A0 =C2=A0 for (;;)<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 const char *type;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 int len;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_next_node(fdt, prev, NULL);<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 type =3D fdt_getprop(fdt, node, &quot;dev=
ice_type&quot;, &amp;len);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( type &amp;&amp; strncmp(type, &quot;=
memory&quot;, len) =3D=3D 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 fdt_del_node(fdt, node);<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 continue;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 prev =3D node;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* Add FDT entries for EFI runtime services in chosen n=
ode. */<br>
&gt; +=C2=A0 =C2=A0 node =3D fdt_subnode_offset(fdt, 0, &quot;chosen&quot;)=
;<br>
&gt; +=C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_add_subnode(fdt, 0, &quot;ch=
osen&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 status =3D node; /* node is=
 error code when negative */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 }<br>
<br>
</div></div>setup_chosen_node?<br></blockquote><div><br></div><div>Yes, thi=
s should be done here as well. =C2=A0I will add that for the case of creati=
ng</div><div>a new FDT.=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(20=
4,204,204);border-left-style:solid;padding-left:1ex">
<div><div class=3D"h5"><br>
<br>
&gt; +=C2=A0 =C2=A0 fdt_val64 =3D cpu_to_fdt64((u64)(uintptr_t)sys_table);<=
br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_setprop(fdt, node, &quot;linux,uefi-syst=
em-table&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&amp;fdt_val64, sizeof(fdt_val64));<br>
&gt; +=C2=A0 =C2=A0 if ( status )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 fdt_val64 =3D cpu_to_fdt64((u64)(uintptr_t)memory_map);=
<br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_setprop(fdt, node, &quot;linux,uefi-mmap=
-start&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&amp;fdt_val64,=C2=A0 sizeof(fdt_val64));<br>
&gt; +=C2=A0 =C2=A0 if ( status )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 fdt_val32 =3D cpu_to_fdt32(map_size);<br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_setprop(fdt, node, &quot;linux,uefi-mmap=
-size&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&amp;fdt_val32,=C2=A0 sizeof(fdt_val32));<br>
&gt; +=C2=A0 =C2=A0 if ( status )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 fdt_val32 =3D cpu_to_fdt32(desc_size);<br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_setprop(fdt, node, &quot;linux,uefi-mmap=
-desc-size&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&amp;fdt_val32, sizeof(fdt_val32));<br>
&gt; +=C2=A0 =C2=A0 if ( status )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 fdt_val32 =3D cpu_to_fdt32(desc_ver);<br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_setprop(fdt, node, &quot;linux,uefi-mmap=
-desc-ver&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&amp;fdt_val32, sizeof(fdt_val32));<br>
&gt; +=C2=A0 =C2=A0 if ( status )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto fdt_set_fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 return EFI_SUCCESS;<br>
&gt; +<br>
&gt; +fdt_set_fail:<br>
&gt; +=C2=A0 =C2=A0 if ( status =3D=3D -FDT_ERR_NOSPACE )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return EFI_BUFFER_TOO_SMALL;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 return EFI_LOAD_ERROR;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Allocates new memory for a larger FDT, and frees existing memory i=
f<br>
&gt; + * struct file size is non-zero.=C2=A0 Updates file struct with new m=
emory<br>
&gt; + * address/size for later freeing.=C2=A0 If fdtfile.ptr is NULL, an e=
mpty FDT<br>
&gt; + * is created.<br>
&gt; + */<br>
&gt; +static void __init *fdt_increase_size(struct file *fdtfile, int add_s=
ize)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS status;<br>
&gt; +=C2=A0 =C2=A0 EFI_PHYSICAL_ADDRESS fdt_addr;<br>
&gt; +=C2=A0 =C2=A0 int fdt_size;<br>
&gt; +=C2=A0 =C2=A0 int pages;<br>
&gt; +=C2=A0 =C2=A0 void *new_fdt;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( fdtfile-&gt;ptr )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 fdt_size =3D fdt_totalsize(fdtfile-&gt;pt=
r);<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 fdt_size =3D 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 pages =3D PFN_UP(fdt_size) + PFN_UP(add_size);<br>
<br>
</div></div>Shouldn&#39;t this be PFN_UP(fdt_size+add_size)?<br></blockquot=
e><div>Yup, I will fix this.=C2=A0</div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rg=
b(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div class=3D"h5"><br>
<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_bs-&gt;AllocatePages(AllocateAnyPages, E=
fiLoaderData,<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=A0pages, &amp;fdt_add=
r);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( status !=3D EFI_SUCCESS )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return NULL;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 new_fdt =3D (void *)fdt_addr;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( fdt_size )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_open_into(dtbfile.ptr, new_fdt, =
pages * EFI_PAGE_SIZE) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return NULL;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Create an empty FDT if not provid=
ed one, which is the expected case<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* when booted from the UEFI shell o=
n an ACPI only system.=C2=A0 We will use<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* the FDT to pass the EFI informati=
on to Xen, as well as nodes for<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* any modules the stub loads.=C2=A0=
 The ACPI tables are part of the UEFI<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* system table that is passed in th=
e FDT.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_create_empty_tree(new_fdt, pages=
 * EFI_PAGE_SIZE) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return NULL;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* Now that we have the new FDT allocated and copi=
ed, free the<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* original and update the struct file so that the=
 error handling<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* code will free it.=C2=A0 If the original FDT ca=
me from a configuration<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* table, we don&#39;t own that memory and can&#39=
;t free it.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 if ( dtbfile.size )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_bs-&gt;FreePages(dtbfile.addr, PFN_UP=
(dtbfile.size));<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* Update &#39;file&#39; info for new memory so we clea=
n it up on error exits */<br>
&gt; +=C2=A0 =C2=A0 dtbfile.addr =3D fdt_addr;<br>
&gt; +=C2=A0 =C2=A0 dtbfile.size =3D pages * EFI_PAGE_SIZE;<br>
&gt; +=C2=A0 =C2=A0 return new_fdt;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_pci(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_relocate_image(unsigned long delta)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_process_memory_map(EFI_SYSTEM_TABLE *Syst=
emTable,<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=A0 =C2=A0void *map,<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=A0 =C2=A0UINTN map_size,<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=A0 =C2=A0UINTN desc_size,<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=A0 =C2=A0UINT32 desc_ver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS status;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_process_memory_map_bootinfo(map, map_siz=
e, desc_size);<br>
&gt; +=C2=A0 =C2=A0 if ( EFI_ERROR(status) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;ERROR processing EFI memory=
 map\r\n&quot;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 status =3D fdt_add_uefi_nodes(SystemTable, fdt, map, ma=
p_size, desc_size,<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 desc_ver);<br>
&gt; +=C2=A0 =C2=A0 if ( EFI_ERROR(status) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 PrintErrMesg(L&quot;ERROR updating FDT\r\=
n&quot;, status);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_pre_exit_boot(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_post_exit_boot(void)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 efi_xen_start(fdt);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_cfg_file(EFI_FILE_HANDLE dir_handle, char=
 *section)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 union string name;<br>
&gt; +=C2=A0 =C2=A0 name.s =3D get_value(&amp;cfg, section, &quot;dtb&quot;=
);<br>
&gt; +=C2=A0 =C2=A0 if ( name.s )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( !read_file(dir_handle, &amp;dtbfile,=
 name.s))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(NULL);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 fdt =3D fdt_increase_size(&amp;dtbfile, cfg.size + EFI_=
PAGE_SIZE);<br>
&gt; +=C2=A0 =C2=A0 if ( !fdt )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Unable to create new FDT\r\=
n&quot;);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_get_memory_map(UINTN *map_size,<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=A0void **map,<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=A0UINTN *map_key, UINTN *desc_size,<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=A0UINT32 *desc_ver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS status;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_get_memory_map(map, map_size, desc_size,=
 desc_ver, map_key);<br>
&gt; +=C2=A0 =C2=A0 if ( EFI_ERROR(status) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;ERROR getting EFI memory ma=
p.\r\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 memmap =3D *map;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_edd(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_video(bool_t base_video,<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 UINTN cols, UINTN rows, U=
INTN depth,<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 EFI_GRAPHICS_OUTPUT_PROTO=
COL *gop)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_memory(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_handle_cmdline(CHAR16 *image_name,<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=A0CHAR16 *cmdline_options,<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=A0char *cfgfile_options)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 union string name;<br>
&gt; +=C2=A0 =C2=A0 char *buf;<br>
&gt; +=C2=A0 =C2=A0 EFI_STATUS status;<br>
&gt; +=C2=A0 =C2=A0 int prop_len;<br>
&gt; +=C2=A0 =C2=A0 int chosen;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 /* locate chosen node, which is where we add Xen module=
 info. */<br>
&gt; +=C2=A0 =C2=A0 chosen =3D fdt_subnode_offset(fdt, 0, &quot;chosen&quot=
;);<br>
&gt; +=C2=A0 =C2=A0 if ( chosen &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;ERROR unable to find chosen=
 node\r\n&quot;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 status =3D efi_bs-&gt;AllocatePool(EfiBootServicesData,=
 EFI_PAGE_SIZE, (void **)&amp;buf);<br>
&gt; +=C2=A0 =C2=A0 if ( EFI_ERROR(status) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 PrintErrMesg(L&quot;ERROR allocating memo=
ry.\r\n&quot;, status);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( image_name )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 name.w =3D image_name;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 w2s(&amp;name);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 name.s =3D &quot;xen&quot;;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 prop_len =3D 0;<br>
&gt; +=C2=A0 =C2=A0 prop_len +=3D snprintf(buf + prop_len,<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=A0EFI_PAGE_SIZE - prop_len, &quot;%s&quot;, name.=
s);<br>
&gt; +=C2=A0 =C2=A0 if ( prop_len &gt;=3D EFI_PAGE_SIZE )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;FDT string overflow&quot;);=
<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( cfgfile_options )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 prop_len +=3D snprintf(buf + prop_len,<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=A0EFI_PAGE_SIZE - prop_len, &quot; =
%s&quot;, cfgfile_options);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( prop_len &gt;=3D EFI_PAGE_SIZE )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;FDT string ov=
erflow&quot;);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( cmdline_options )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 name.w =3D cmdline_options;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 w2s(&amp;name);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 name.s =3D NULL;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( name.s )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 prop_len +=3D snprintf(buf + prop_len,<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=A0EFI_PAGE_SIZE - prop_len, &quot; =
%s&quot;, name.s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( prop_len &gt;=3D EFI_PAGE_SIZE )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;FDT string ov=
erflow&quot;);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( fdt_setprop_string(fdt, chosen, &quot;xen,xen-boot=
args&quot;, buf) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set xen,xen-boota=
rgs property.&quot;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 efi_bs-&gt;FreePool(buf);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_handle_module(struct file *file, char *na=
me,<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 char *options)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 int node;<br>
&gt; +=C2=A0 =C2=A0 int chosen;<br>
&gt; +=C2=A0 =C2=A0 int addr_len, size_len;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( file =3D=3D &amp;dtbfile )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; +=C2=A0 =C2=A0 chosen =3D setup_chosen_node(fdt, &amp;addr_len, &amp;s=
ize_len);<br>
&gt; +=C2=A0 =C2=A0 if ( chosen &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Unable to setup chosen node=
\r\n&quot;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 if ( file =3D=3D &amp;ramdisk )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 char ramdisk_compat[] =3D &quot;multiboot=
,ramdisk\0multiboot,module&quot;;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_add_subnode(fdt, chosen, &qu=
ot;ramdisk&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Error adding =
ramdisk FDT node.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;compati=
ble&quot;, ramdisk_compat,<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=A0sizeof(ramdisk_compat)) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 compatible property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_set_reg(fdt, node, addr_len, siz=
e_len, ramdisk.addr,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 ramdisk.size) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 reg property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else if ( file =3D=3D &amp;xsm )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 char xsm_compat[] =3D &quot;xen,xsm-polic=
y\0multiboot,module&quot;;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_add_subnode(fdt, chosen, &qu=
ot;xsm&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Error adding =
xsm FDT node.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;compati=
ble&quot;, xsm_compat,<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=A0sizeof(xsm_compat)) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 compatible property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_set_reg(fdt, node, addr_len, siz=
e_len, xsm.addr,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 xsm.size) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 reg property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else if ( file =3D=3D &amp;kernel )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 char kernel_compat[] =3D &quot;multiboot,=
kernel\0multiboot,module&quot;;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 node =3D fdt_add_subnode(fdt, chosen, &qu=
ot;kernel&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( node &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Error adding =
dom0 FDT node.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_setprop(fdt, node, &quot;compati=
ble&quot;, kernel_compat,<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=A0sizeof(kernel_compat)) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 compatible property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( options &amp;&amp; fdt_setprop_strin=
g(fdt, node, &quot;bootargs&quot;, options) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 bootargs property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if ( fdt_set_reg(fdt, node, addr_len, siz=
e_len, kernel.addr,<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=A0kernel.size) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;unable to set=
 reg property.&quot;);<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Unknown module type\r\n&quo=
t;);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_cpu(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_smbios(void)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_blexit(void)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 if ( dtbfile.addr &amp;&amp; dtbfile.size )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_bs-&gt;FreePages(dtbfile.addr, PFN_UP=
(dtbfile.size));<br>
&gt; +=C2=A0 =C2=A0 if ( memmap )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_bs-&gt;FreePool(memmap);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_load_addr_check(EFI_LOADED_IMAGE *loaded_=
image)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 if ( (unsigned long)loaded_image-&gt;ImageBase &amp; ((=
1 &lt;&lt; 12) - 1) )<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 blexit(L&quot;Xen must be loaded at a 4 K=
Byte boundary.&quot;);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void __init efi_arch_runtime_setup(EFI_SYSTEM_TABLE *SystemTab=
le)<br>
&gt; +{<br>
&gt; +}<br>
&gt; +<br>
&gt; +static __init bool_t efi_arch_use_config_file(EFI_SYSTEM_TABLE *Syste=
mTable)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* For arm, we may get a device tree from GRUB (or=
 other bootloader)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* that contains modules that have already been lo=
aded into memory.=C2=A0 In<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* this case, we do not use a configuration file, =
and rely on the<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* bootloader to have loaded all required modules =
and appropriate<br>
&gt; +=C2=A0 =C2=A0 =C2=A0* options.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 fdt =3D lookup_fdt_config_table(SystemTable);<br>
&gt; +=C2=A0 =C2=A0 dtbfile.ptr =3D fdt;<br>
&gt; +=C2=A0 =C2=A0 dtbfile.size =3D 0;=C2=A0 /* Config table memory can&#3=
9;t be freed, so set size to 0 */<br>
&gt; +=C2=A0 =C2=A0 if ( !fdt || fdt_node_offset_by_compatible(fdt, 0, &quo=
t;multiboot,module&quot;) &lt; 0 )<br>
&gt; +=C2=A0 =C2=A0 {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* We either have no FDT, or one wit=
hout modules, so we must have a<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Xen EFI configuration file to spe=
cify modules.=C2=A0 (dom0 required)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return 1;<br>
&gt; +=C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 PrintStr(L&quot;Using modules provided by bootloader in=
 FDT\r\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 /* We have modules already defined in fdt, just add spa=
ce. */<br>
&gt; +=C2=A0 =C2=A0 fdt =3D fdt_increase_size(&amp;dtbfile, EFI_PAGE_SIZE);=
<br>
&gt; +=C2=A0 =C2=A0 return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Local variables:<br>
&gt; + * mode: C<br>
&gt; + * c-file-style: &quot;BSD&quot;<br>
&gt; + * c-basic-offset: 4<br>
&gt; + * indent-tabs-mode: nil<br>
&gt; + * End:<br>
&gt; + */<br>
&gt; diff --git a/xen/include/asm-arm/efi.h b/xen/include/asm-arm/efi.h<br>
&gt; new file mode 100644<br>
&gt; index 0000000..aae4716<br>
&gt; --- /dev/null<br>
&gt; +++ b/xen/include/asm-arm/efi.h<br>
&gt; @@ -0,0 +1,29 @@<br>
&gt; +#include &lt;asm/efibind.h&gt;<br>
&gt; +#include &lt;efi/efidef.h&gt;<br>
&gt; +#include &lt;efi/efierr.h&gt;<br>
&gt; +#include &lt;efi/eficon.h&gt;<br>
&gt; +#include &lt;efi/efidevp.h&gt;<br>
&gt; +#include &lt;efi/eficapsule.h&gt;<br>
&gt; +#include &lt;efi/efiapi.h&gt;<br>
&gt; +#include &lt;xen/efi.h&gt;<br>
&gt; +#include &lt;xen/spinlock.h&gt;<br>
&gt; +#include &lt;asm/page.h&gt;<br>
&gt; +<br>
&gt; +extern unsigned int efi_num_ct;<br>
&gt; +extern EFI_CONFIGURATION_TABLE *efi_ct;<br>
&gt; +<br>
&gt; +extern unsigned int efi_version, efi_fw_revision;<br>
&gt; +extern const CHAR16 *efi_fw_vendor;<br>
&gt; +<br>
&gt; +extern EFI_RUNTIME_SERVICES *efi_rs;<br>
&gt; +<br>
&gt; +extern UINTN efi_memmap_size, efi_mdesc_size;<br>
&gt; +extern void *efi_memmap;<br>
&gt; +<br>
&gt; +extern const struct efi_pci_rom *efi_pci_roms;<br>
&gt; +<br>
&gt; +extern UINT64 efi_boot_max_var_store_size, efi_boot_remain_var_store_=
size,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 efi_boot_max_var_siz=
e;<br>
&gt; +<br>
&gt; +unsigned long efi_rs_enter(void);<br>
&gt; +void efi_rs_leave(unsigned long);<br>
&gt; diff --git a/xen/include/asm-arm/efibind.h b/xen/include/asm-arm/efibi=
nd.h<br>
&gt; new file mode 100644<br>
&gt; index 0000000..09dca7a<br>
&gt; --- /dev/null<br>
&gt; +++ b/xen/include/asm-arm/efibind.h<br>
&gt; @@ -0,0 +1,2 @@<br>
&gt; +#include &lt;xen/types.h&gt;<br>
&gt; +#include &lt;asm/arm64/efibind.h&gt;<br>
&gt; diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h=
<br>
&gt; index 36e5704..40814e6 100644<br>
&gt; --- a/xen/include/asm-arm/setup.h<br>
&gt; +++ b/xen/include/asm-arm/setup.h<br>
&gt; @@ -3,7 +3,7 @@<br>
&gt;<br>
&gt;=C2=A0 #include &lt;public/version.h&gt;<br>
&gt;<br>
&gt; -#define NR_MEM_BANKS 8<br>
&gt; +#define NR_MEM_BANKS 32<br>
<br>
</div></div>Why?<br>
At the very least you should write it in the commit message.<br>
<div class=3D""><div class=3D"h5"><br></div></div></blockquote><div>In the =
EFI case, we have the EFI memory map which lists all memory by region and u=
sage =C2=A0(ie available, boot_services, runtime, etc.)</div><div>not the p=
hysical memory banks that are provided by FDT. =C2=A0I am putting the avail=
able memory from the EFI memory map into the memory bank</div><div>list, so=
 this requires more entries. =C2=A0This is somewhat problematic as it is po=
ssible for the EFI memory map to be very fragmented, which could lead</div>=
<div>to a great many regions.</div><div><br></div><div>Roy</div><div><br></=
div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border=
-left-style:solid;padding-left:1ex"><div class=3D""><div class=3D"h5">
<br>
&gt;=C2=A0 #define MAX_MODULES 5 /* Current maximum useful modules */<br>
&gt;<br>
&gt; --<br>
&gt; 2.1.0.rc1<br>
&gt;<br>
</div></div></blockquote></div><br></div></div>

--001a11c3584a3e8ed20502d5c699--


--===============5132891646511509130==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--===============5132891646511509130==--


From xen-users-bounces@lists.xen.org Sun Sep 14 19:41:08 2014
Return-path: <xen-users-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Sep 2014 19:41:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xen.org>)
	id 1XTFey-0007bj-Gs; Sun, 14 Sep 2014 19:40:32 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <akomelj@gmail.com>) id 1XTFev-0007be-Lh
	for xen-users@lists.xen.org; Sun, 14 Sep 2014 19:40:30 +0000
Received: from [85.158.139.211:41478] by server-2.bemta-5.messagelabs.com id
	87/2A-31832-C2FE5145; Sun, 14 Sep 2014 19:40:28 +0000
X-Env-Sender: akomelj@gmail.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1410723621!14407593!1
X-Originating-IP: [209.85.216.182]
X-SpamReason: No, hits=0.8 required=7.0 tests=BODY_RANDOM_LONG,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25541 invoked from network); 14 Sep 2014 19:40:22 -0000
Received: from mail-qc0-f182.google.com (HELO mail-qc0-f182.google.com)
	(209.85.216.182)
	by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	14 Sep 2014 19:40:22 -0000
Received: by mail-qc0-f182.google.com with SMTP id c9so1221046qcz.13
	for <xen-users@lists.xen.org>; Sun, 14 Sep 2014 12:40:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:date:message-id:subject:from:to:content-type;
	bh=FW9PmsYGV6VqH0m83+vSc3mplFnHS6lOO3iq14Bkg+E=;
	b=OWr+j0YwxHahCKnM0zLnJH4jNJ7GMdDobH9jluBiYj1v9kU56n3iu2gkfGa7MmKkHl
	PR78uQelyB2d5kuCMumMYkWqbZ8mWwW+N3jEuEn7P6mEJyXxiQc+FdGT9lRo6K6Jyqkj
	t4Iq16bfgIZ4+FdbjPTENbviKDhvhj3+M3HJ73J6I/Wg93lBaLaWsdY3Grp4CJWn7Xnq
	WGxXBEfrj9mXjP+ms9nUXJTol6Mvi2kIvNpMhUa4f5jCSaQMQD3p3XXQ6xxCfcjEnnF7
	S+o1a57p19rGI1pDUncNSXePOik5rRSQX2Pkiyn+d6+70T7X33XxdOMJR1cC9fn63m3c
	Bjcw==
MIME-Version: 1.0
X-Received: by 10.229.136.133 with SMTP id r5mr3487132qct.31.1410723621221;
	Sun, 14 Sep 2014 12:40:21 -0700 (PDT)
Received: by 10.140.92.13 with HTTP; Sun, 14 Sep 2014 12:40:21 -0700 (PDT)
Date: Sun, 14 Sep 2014 21:40:21 +0200
Message-ID: <CADaoSgUgb7DgDf5VUZw9vZkL3R=+54h=DFypDw=EOTZS1AkkwQ@mail.gmail.com>
From: Andrej Komelj <akomelj@gmail.com>
To: xen-users@lists.xen.org
Content-Type: multipart/mixed; boundary=001a1135f3e851f44905030bb0b9
Subject: [Xen-users] [Xen VGA Passthrough] DomU performance inversely
 proportional to VM memory size when VGA passthrough is enabled
X-BeenThere: xen-users@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen user discussion <xen-users.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xen.org>
List-Help: <mailto:xen-users-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=subscribe>
Sender: xen-users-bounces@lists.xen.org
Errors-To: xen-users-bounces@lists.xen.org

--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=UTF-8

Hi,

I've noticed a peculiar behavior of Xen 4.4.x when enabling VGA
passthrough to DomU domain on my desktop computer - performance of the
DomU is inversely proportional to the size of the domain's memory. The
more memory the domain has, the slower the overall performance of the
domain gets. Degradation is considerable and noticeable, not only
theoretical or in a range of several percents.

The interesting thing though is: If VGA passthrough is disabled, the
domain performance remains constant, regardless of the size of memory
allocated to it.

Needless to say, performance without VGA passthrough is similar to
bare-metal system but performance with VGA passthrough starts
noticeably degrading when I assign more that 512 MB of memory to DomU.
With 8G assigned, it is practically unusable.

I've been using a simple gzip/gunzip test to confirm my findings: on
bare-metal system, it takes roughly 1 second to compress a big file,
on VGA-passthrough-enabled DomU it takes 5 seconds with 4 GB RAM and
15 seconds with 8 GB RAM. I ran additional benchmarking tools (cpu,
memory, graphics, overall) and they all confirmed that my system is
considerably slower when using passthrough and large amount of memory.

Performance drop is noticeable even when using purely text-mode DomU
with graphics drivers on the blacklist and disabled framebuffer in
DomU linux kernel.

Computer HW specs (cpuinfo & dmidecode in attachment) - HP Elite 7500 system:
- 8 core Intel i7-3770 CPU @ 3.40GHz
- Intel Z75 Express chipset
- integrated graphics Intel HD 4000
- 12 GB RAM
- VT-d supported and tested (been successfully running VGA passthrough
on 4.3.x with Windows 8.1/XP)

Dom0s:
- Arch Linux (Xen 4.4.0 & Xen 4.4.1 from AUR)
- Linux Mint 16 (Ubuntu 14.04 based - Xen 4.4.0)
- Ubuntu Linux 14.04 (Xen 4.4.0)

DomUs (PV-on-HVM):
- Linux Mint 16 (Ubuntu 14.04 based) - kernels 3.13.0, 3.14.1, 3.16.2, 3.17.0
- Arch Linux latest
- Debian Jessie (testing) - I've already wiped the logical volume so I
don't know what version of kernel was running

I've been playing with pretty much every setting in domain
configuration file to no avail:
- primary/secondary passthrough (gfx_passthru=0/1)
- shadow memory size
- xen_platform_pci
- hap, apic, acpi, ...
- pci_permissive, pci_power_mgmt, pci_msitranslate
- ...

The only thing that has any impact on the performance is:
- memory size - the smaller the better :-(
- PCI passthrough of graphics adapter - disabled (OK) or enabled (huge
performance hit)

Does anybody know what else I could try/check? The only similar post
on Xen-users I was able to find is:
http://xen.1045712.n5.nabble.com/Performance-degradation-with-pci-passthrough-amp-xen-4-4-td5724369.html

I've attached various debug/output files if anyone wants to deal with them:
- dmidecode output
- /proc/cpuinfo
- lspci -vv
- dom0 xen dmesg log
- dom0 kernel log
- domU kernel log
- domainU configuration file

Best regards,
Andrej

--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="cpuinfo.txt"
Content-Disposition: attachment; filename="cpuinfo.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7ert0

cHJvY2Vzc29yCTogMAp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9k
ZWwJCTogNTgKbW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40
MEdIegpzdGVwcGluZwk6IDkKbWljcm9jb2RlCTogMHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNh
Y2hlIHNpemUJOiA4MTkyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJ
OiAwCmNwdSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDAKaW5pdGlhbCBhcGljaWQJOiAwCmZwdQkJOiB5
ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJ
OiBmcHUgZGUgdHNjIG1zciBwYWUgbWNlIGN4OCBhcGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVz
aCBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNj
IHJlcF9nb29kIG5vcGwgbm9uc3RvcF90c2MgZWFnZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9y
IGVzdCBzc3NlMyBjeDE2IHNzZTRfMSBzc2U0XzIgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBh
ZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGh5cGVydmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIg
eHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0gZnNnc2Jhc2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUK
Y2xmbHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2
IGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vz
c29yCTogMQp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTog
NTgKbW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpz
dGVwcGluZwk6IDkKbWljcm9jb2RlCTogMHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNp
emUJOiA4MTkyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJOiAwCmNw
dSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDEKaW5pdGlhbCBhcGljaWQJOiAxCmZwdQkJOiB5ZXMKZnB1
X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUg
ZGUgdHNjIG1zciBwYWUgbWNlIGN4OCBhcGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3Bp
IG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9n
b29kIG5vcGwgbm9uc3RvcF90c2MgZWFnZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBz
c3NlMyBjeDE2IHNzZTRfMSBzc2U0XzIgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNh
dmUgYXZ4IGYxNmMgcmRyYW5kIGh5cGVydmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVv
cHQgcGxuIHB0cyBkdGhlcm0gZnNnc2Jhc2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVz
aCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMg
cGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTog
Mgp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9k
ZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGlu
Zwk6IDkKbWljcm9jb2RlCTogMHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4
MTkyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJOiAxCmNwdSBjb3Jl
cwk6IDQKYXBpY2lkCQk6IDIKaW5pdGlhbCBhcGljaWQJOiAyCmZwdQkJOiB5ZXMKZnB1X2V4Y2Vw
dGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNj
IG1zciBwYWUgbWNlIGN4OCBhcGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBm
eHNyIHNzZSBzc2UyIHNzIGh0IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5v
cGwgbm9uc3RvcF90c2MgZWFnZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBj
eDE2IHNzZTRfMSBzc2U0XzIgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4
IGYxNmMgcmRyYW5kIGh5cGVydmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxu
IHB0cyBkdGhlcm0gZnNnc2Jhc2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXpl
CTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2lj
YWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTogMwp2ZW5k
b3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9kZWwgbmFt
ZQk6IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGluZwk6IDkK
bWljcm9jb2RlCTogMHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4MTkyIEtC
CnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJOiAxCmNwdSBjb3Jlcwk6IDQK
YXBpY2lkCQk6IDMKaW5pdGlhbCBhcGljaWQJOiAzCmZwdQkJOiB5ZXMKZnB1X2V4Y2VwdGlvbgk6
IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNjIG1zciBw
YWUgbWNlIGN4OCBhcGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBmeHNyIHNz
ZSBzc2UyIHNzIGh0IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5vcGwgbm9u
c3RvcF90c2MgZWFnZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBjeDE2IHNz
ZTRfMSBzc2U0XzIgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMg
cmRyYW5kIGh5cGVydmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBk
dGhlcm0gZnNnc2Jhc2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXplCTogNjQK
Y2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2ljYWwsIDQ4
IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTogNAp2ZW5kb3JfaWQJ
OiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9kZWwgbmFtZQk6IElu
dGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGluZwk6IDkKbWljcm9j
b2RlCTogMHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4MTkyIEtCCnBoeXNp
Y2FsIGlkCTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJOiAyCmNwdSBjb3Jlcwk6IDQKYXBpY2lk
CQk6IDQKaW5pdGlhbCBhcGljaWQJOiA0CmZwdQkJOiB5ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpj
cHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNjIG1zciBwYWUgbWNl
IGN4OCBhcGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBmeHNyIHNzZSBzc2Uy
IHNzIGh0IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5vcGwgbm9uc3RvcF90
c2MgZWFnZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBjeDE2IHNzZTRfMSBz
c2U0XzIgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5k
IGh5cGVydmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0g
ZnNnc2Jhc2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXplCTogNjQKY2FjaGVf
YWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMg
dmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTogNQp2ZW5kb3JfaWQJOiBHZW51
aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9kZWwgbmFtZQk6IEludGVsKFIp
IENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGluZwk6IDkKbWljcm9jb2RlCTog
MHgxNgpjcHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4MTkyIEtCCnBoeXNpY2FsIGlk
CTogMApzaWJsaW5ncwk6IDgKY29yZSBpZAkJOiAyCmNwdSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDUK
aW5pdGlhbCBhcGljaWQJOiA1CmZwdQkJOiB5ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBs
ZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNjIG1zciBwYWUgbWNlIGN4OCBh
cGljIHNlcCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0
IHN5c2NhbGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5vcGwgbm9uc3RvcF90c2MgZWFn
ZXJmcHUgcG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBjeDE2IHNzZTRfMSBzc2U0XzIg
cG9wY250IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGh5cGVy
dmlzb3IgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0gZnNnc2Jh
c2UgZXJtcwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25t
ZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVh
bApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTogNgp2ZW5kb3JfaWQJOiBHZW51aW5lSW50
ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUo
VE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGluZwk6IDkKbWljcm9jb2RlCTogMHgxNgpj
cHUgTUh6CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4MTkyIEtCCnBoeXNpY2FsIGlkCTogMApz
aWJsaW5ncwk6IDgKY29yZSBpZAkJOiAzCmNwdSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDYKaW5pdGlh
bCBhcGljaWQJOiA2CmZwdQkJOiB5ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6
IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNjIG1zciBwYWUgbWNlIGN4OCBhcGljIHNl
cCBtY2EgY21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHN5c2Nh
bGwgbnggbG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5vcGwgbm9uc3RvcF90c2MgZWFnZXJmcHUg
cG5pIHBjbG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBjeDE2IHNzZTRfMSBzc2U0XzIgcG9wY250
IHRzY19kZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGh5cGVydmlzb3Ig
bGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0gZnNnc2Jhc2UgZXJt
cwpib2dvbWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTog
NjQKYWRkcmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dl
ciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29yCTogNwp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1
IGZhbWlseQk6IDYKbW9kZWwJCTogNTgKbW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk3
LTM3NzAgQ1BVIEAgMy40MEdIegpzdGVwcGluZwk6IDkKbWljcm9jb2RlCTogMHgxNgpjcHUgTUh6
CQk6IDMzOTIuMzc2CmNhY2hlIHNpemUJOiA4MTkyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5n
cwk6IDgKY29yZSBpZAkJOiAzCmNwdSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDcKaW5pdGlhbCBhcGlj
aWQJOiA3CmZwdQkJOiB5ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndw
CQk6IHllcwpmbGFncwkJOiBmcHUgZGUgdHNjIG1zciBwYWUgbWNlIGN4OCBhcGljIHNlcCBtY2Eg
Y21vdiBwYXQgY2xmbHVzaCBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHN5c2NhbGwgbngg
bG0gY29uc3RhbnRfdHNjIHJlcF9nb29kIG5vcGwgbm9uc3RvcF90c2MgZWFnZXJmcHUgcG5pIHBj
bG11bHFkcSBtb25pdG9yIGVzdCBzc3NlMyBjeDE2IHNzZTRfMSBzc2U0XzIgcG9wY250IHRzY19k
ZWFkbGluZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGh5cGVydmlzb3IgbGFoZl9s
bSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0gZnNnc2Jhc2UgZXJtcwpib2dv
bWlwcwk6IDY3ODQuNzUKY2xmbHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRk
cmVzcyBzaXplcwk6IDM2IGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5h
Z2VtZW50OgoK
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="dmidecode.txt"
Content-Disposition: attachment; filename="dmidecode.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7esc1

IyBkbWlkZWNvZGUgMi4xMgpTTUJJT1MgMi43IHByZXNlbnQuCjM0IHN0cnVjdHVyZXMgb2NjdXB5
aW5nIDE3NDggYnl0ZXMuClRhYmxlIGF0IDB4MDAwRUI3MzAuCgpIYW5kbGUgMHgwMDAwLCBETUkg
dHlwZSAwLCAyNCBieXRlcwpCSU9TIEluZm9ybWF0aW9uCglWZW5kb3I6IEFNSQoJVmVyc2lvbjog
OC4xNwoJUmVsZWFzZSBEYXRlOiAwMi8wNi8yMDEzCglBZGRyZXNzOiAweEYwMDAwCglSdW50aW1l
IFNpemU6IDY0IGtCCglST00gU2l6ZTogODE5MiBrQgoJQ2hhcmFjdGVyaXN0aWNzOgoJCVBDSSBp
cyBzdXBwb3J0ZWQKCQlQTlAgaXMgc3VwcG9ydGVkCgkJQklPUyBpcyB1cGdyYWRlYWJsZQoJCUJJ
T1Mgc2hhZG93aW5nIGlzIGFsbG93ZWQKCQlCb290IGZyb20gQ0QgaXMgc3VwcG9ydGVkCgkJU2Vs
ZWN0YWJsZSBib290IGlzIHN1cHBvcnRlZAoJCUVERCBpcyBzdXBwb3J0ZWQKCQlQcmludCBzY3Jl
ZW4gc2VydmljZSBpcyBzdXBwb3J0ZWQgKGludCA1aCkKCQk4MDQyIGtleWJvYXJkIHNlcnZpY2Vz
IGFyZSBzdXBwb3J0ZWQgKGludCA5aCkKCQlTZXJpYWwgc2VydmljZXMgYXJlIHN1cHBvcnRlZCAo
aW50IDE0aCkKCQlQcmludGVyIHNlcnZpY2VzIGFyZSBzdXBwb3J0ZWQgKGludCAxN2gpCgkJQUNQ
SSBpcyBzdXBwb3J0ZWQKCQlVU0IgbGVnYWN5IGlzIHN1cHBvcnRlZAoJCUJJT1MgYm9vdCBzcGVj
aWZpY2F0aW9uIGlzIHN1cHBvcnRlZAoJCUZ1bmN0aW9uIGtleS1pbml0aWF0ZWQgbmV0d29yayBi
b290IGlzIHN1cHBvcnRlZAoJCVRhcmdldGVkIGNvbnRlbnQgZGlzdHJpYnV0aW9uIGlzIHN1cHBv
cnRlZAoJCVVFRkkgaXMgc3VwcG9ydGVkCglCSU9TIFJldmlzaW9uOiA0LjYKCkhhbmRsZSAweDAw
MDEsIERNSSB0eXBlIDEsIDI3IGJ5dGVzClN5c3RlbSBJbmZvcm1hdGlvbgoJTWFudWZhY3R1cmVy
OiBIZXdsZXR0LVBhY2thcmQKCVByb2R1Y3QgTmFtZTogSFAgRWxpdGUgNzUwMCBTZXJpZXMgTVQg
ICAgCglWZXJzaW9uOiAxLjAwCglTZXJpYWwgTnVtYmVyOiBDWkMyMzQ3QlMwCglVVUlEOiA3MUVG
QkQyMC1BMkY0LTExRTEtQTlBMy00QzcyQjkwMjgzRTYKCVdha2UtdXAgVHlwZTogUG93ZXIgU3dp
dGNoCglTS1UgTnVtYmVyOiBCNUczNUVBI0JFRAoJRmFtaWx5OiAxMDNDXzUzMzA3RiBHPUQKCkhh
bmRsZSAweDAwMDIsIERNSSB0eXBlIDIsIDE1IGJ5dGVzCkJhc2UgQm9hcmQgSW5mb3JtYXRpb24K
CU1hbnVmYWN0dXJlcjogUEVHQVRST04gQ09SUE9SQVRJT04KCVByb2R1Y3QgTmFtZTogMkFENQoJ
VmVyc2lvbjogMS4wMwoJU2VyaWFsIE51bWJlcjogMTE1NDYzMTAwMDAyNDg4CglBc3NldCBUYWc6
ICAKCUZlYXR1cmVzOgoJCUJvYXJkIGlzIGEgaG9zdGluZyBib2FyZAoJCUJvYXJkIGlzIHJlbW92
YWJsZQoJCUJvYXJkIGlzIHJlcGxhY2VhYmxlCglMb2NhdGlvbiBJbiBDaGFzc2lzOiAgCglDaGFz
c2lzIEhhbmRsZTogMHgwMDAzCglUeXBlOiBNb3RoZXJib2FyZAoJQ29udGFpbmVkIE9iamVjdCBI
YW5kbGVzOiAwCgpIYW5kbGUgMHgwMDAzLCBETUkgdHlwZSAzLCAyMiBieXRlcwpDaGFzc2lzIElu
Zm9ybWF0aW9uCglNYW51ZmFjdHVyZXI6IEhld2xldHQtUGFja2FyZAoJVHlwZTogRGVza3RvcAoJ
TG9jazogTm90IFByZXNlbnQKCVZlcnNpb246ICAKCVNlcmlhbCBOdW1iZXI6ICAKCUFzc2V0IFRh
ZzogQ1pDMjM0N0JTMCAKCUJvb3QtdXAgU3RhdGU6IFNhZmUKCVBvd2VyIFN1cHBseSBTdGF0ZTog
U2FmZQoJVGhlcm1hbCBTdGF0ZTogU2FmZQoJU2VjdXJpdHkgU3RhdHVzOiBOb25lCglPRU0gSW5m
b3JtYXRpb246IDB4MDAwMDAwMDAKCUhlaWdodDogVW5zcGVjaWZpZWQKCU51bWJlciBPZiBQb3dl
ciBDb3JkczogMQoJQ29udGFpbmVkIEVsZW1lbnRzOiAwCglTS1UgTnVtYmVyOiAgCgpIYW5kbGUg
MHgwMDA0LCBETUkgdHlwZSA5LCAxNyBieXRlcwpTeXN0ZW0gU2xvdCBJbmZvcm1hdGlvbgoJRGVz
aWduYXRpb246IFBDSSBFeHByZXNzIHgxNiBTbG90CglUeXBlOiB4MTYgUENJIEV4cHJlc3MKCUN1
cnJlbnQgVXNhZ2U6IEF2YWlsYWJsZQoJTGVuZ3RoOiBMb25nCglJRDogMAoJQ2hhcmFjdGVyaXN0
aWNzOgoJCTMuMyBWIGlzIHByb3ZpZGVkCgkJT3BlbmluZyBpcyBzaGFyZWQKCQlQTUUgc2lnbmFs
IGlzIHN1cHBvcnRlZAoJQnVzIEFkZHJlc3M6IDAwMDA6ZmY6MDEuMAoKSGFuZGxlIDB4MDAwNSwg
RE1JIHR5cGUgOSwgMTcgYnl0ZXMKU3lzdGVtIFNsb3QgSW5mb3JtYXRpb24KCURlc2lnbmF0aW9u
OiBQQ0kgRXhwcmVzcyB4MSBTbG90IDEKCVR5cGU6IHgxIFBDSSBFeHByZXNzCglDdXJyZW50IFVz
YWdlOiBBdmFpbGFibGUKCUxlbmd0aDogU2hvcnQKCUlEOiAxCglDaGFyYWN0ZXJpc3RpY3M6CgkJ
My4zIFYgaXMgcHJvdmlkZWQKCQlPcGVuaW5nIGlzIHNoYXJlZAoJCVBNRSBzaWduYWwgaXMgc3Vw
cG9ydGVkCglCdXMgQWRkcmVzczogMDAwMDpmZjoxYy4zCgpIYW5kbGUgMHgwMDA2LCBETUkgdHlw
ZSA5LCAxNyBieXRlcwpTeXN0ZW0gU2xvdCBJbmZvcm1hdGlvbgoJRGVzaWduYXRpb246IFBDSSBF
eHByZXNzIHgxIFNsb3QgMgoJVHlwZTogeDEgUENJIEV4cHJlc3MKCUN1cnJlbnQgVXNhZ2U6IEF2
YWlsYWJsZQoJTGVuZ3RoOiBTaG9ydAoJSUQ6IDIKCUNoYXJhY3RlcmlzdGljczoKCQkzLjMgViBp
cyBwcm92aWRlZAoJCU9wZW5pbmcgaXMgc2hhcmVkCgkJUE1FIHNpZ25hbCBpcyBzdXBwb3J0ZWQK
CUJ1cyBBZGRyZXNzOiAwMDAwOmZmOjFjLjQKCkhhbmRsZSAweDAwMDcsIERNSSB0eXBlIDksIDE3
IGJ5dGVzClN5c3RlbSBTbG90IEluZm9ybWF0aW9uCglEZXNpZ25hdGlvbjogUENJIEV4cHJlc3Mg
eDEgU2xvdCAzCglUeXBlOiB4MSBQQ0kgRXhwcmVzcwoJQ3VycmVudCBVc2FnZTogQXZhaWxhYmxl
CglMZW5ndGg6IFNob3J0CglJRDogMwoJQ2hhcmFjdGVyaXN0aWNzOgoJCTMuMyBWIGlzIHByb3Zp
ZGVkCgkJT3BlbmluZyBpcyBzaGFyZWQKCQlQTUUgc2lnbmFsIGlzIHN1cHBvcnRlZAoJQnVzIEFk
ZHJlc3M6IDAwMDA6ZmY6MWMuNQoKSGFuZGxlIDB4MDAwOCwgRE1JIHR5cGUgOSwgMTcgYnl0ZXMK
U3lzdGVtIFNsb3QgSW5mb3JtYXRpb24KCURlc2lnbmF0aW9uOiBNaW5pIENhcmQgU2xvdCAxCglU
eXBlOiB4MSBQQ0kgRXhwcmVzcwoJQ3VycmVudCBVc2FnZTogQXZhaWxhYmxlCglMZW5ndGg6IFNo
b3J0CglJRDogNAoJQ2hhcmFjdGVyaXN0aWNzOgoJCTMuMyBWIGlzIHByb3ZpZGVkCgkJT3Blbmlu
ZyBpcyBzaGFyZWQKCQlQTUUgc2lnbmFsIGlzIHN1cHBvcnRlZAoJQnVzIEFkZHJlc3M6IDAwMDA6
ZmY6MWMuNgoKSGFuZGxlIDB4MDAwOSwgRE1JIHR5cGUgMTEsIDUgYnl0ZXMKT0VNIFN0cmluZ3MK
CVN0cmluZyAxOiBGQllURSMyVTJWM0UzTjNSM1YzWTRDNGs1VzZFNmE2eTcyN0o3TTdRN1Q3Vzdk
OFIuZzc7QlVJTERJRCMxMVdXCglTdHJpbmcgMjogUFNDRDMwMSNTQUJCI0RCRUQ7CglTdHJpbmcg
MzogIAoJU3RyaW5nIDQ6ICAKCVN0cmluZyA1OiAgCglTdHJpbmcgNjogIAoJU3RyaW5nIDc6ICAK
CVN0cmluZyA4OiAgCglTdHJpbmcgOTogIAoJU3RyaW5nIDEwOiAgCglTdHJpbmcgMTE6ICAKCVN0
cmluZyAxMjogIAoJU3RyaW5nIDEzOiAgCglTdHJpbmcgMTQ6ICAKCVN0cmluZyAxNTogIAoJU3Ry
aW5nIDE2OiAgCglTdHJpbmcgMTc6ICAKCVN0cmluZyAxODogIAoJU3RyaW5nIDE5OiAgCglTdHJp
bmcgMjA6ICAKCVN0cmluZyAyMTogIAoJU3RyaW5nIDIyOiAgCglTdHJpbmcgMjM6ICAKCVN0cmlu
ZyAyNDogIAoJU3RyaW5nIDI1OiAgCglTdHJpbmcgMjY6ICAKCVN0cmluZyAyNzogIAoJU3RyaW5n
IDI4OiAgCglTdHJpbmcgMjk6ICAKCVN0cmluZyAzMDogIAoJU3RyaW5nIDMxOiAgCglTdHJpbmcg
MzI6ICAKCkhhbmRsZSAweDAwMEEsIERNSSB0eXBlIDEyLCA1IGJ5dGVzClN5c3RlbSBDb25maWd1
cmF0aW9uIE9wdGlvbnMKCU9wdGlvbiAxOiAgCgpIYW5kbGUgMHgwMDBCLCBETUkgdHlwZSAxNiwg
MjMgYnl0ZXMKUGh5c2ljYWwgTWVtb3J5IEFycmF5CglMb2NhdGlvbjogU3lzdGVtIEJvYXJkIE9y
IE1vdGhlcmJvYXJkCglVc2U6IFN5c3RlbSBNZW1vcnkKCUVycm9yIENvcnJlY3Rpb24gVHlwZTog
Tm9uZQoJTWF4aW11bSBDYXBhY2l0eTogMzIgR0IKCUVycm9yIEluZm9ybWF0aW9uIEhhbmRsZTog
Tm90IFByb3ZpZGVkCglOdW1iZXIgT2YgRGV2aWNlczogNAoKSGFuZGxlIDB4MDAwQywgRE1JIHR5
cGUgMTcsIDM0IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBCCglFcnJv
ciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IFVua25vd24K
CURhdGEgV2lkdGg6IFVua25vd24KCVNpemU6IE5vIE1vZHVsZSBJbnN0YWxsZWQKCUZvcm0gRmFj
dG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IENoYW5uZWxBLURJTU0wCglCYW5rIExvY2F0
b3I6IEJBTksgMAoJVHlwZTogVW5rbm93bgoJVHlwZSBEZXRhaWw6IE5vbmUKCVNwZWVkOiBVbmtu
b3duCglNYW51ZmFjdHVyZXI6IFtFbXB0eV0KCVNlcmlhbCBOdW1iZXI6IFtFbXB0eV0KCUFzc2V0
IFRhZzogOTg3NjU0MzIxMAoJUGFydCBOdW1iZXI6IFtFbXB0eV0KCVJhbms6IFVua25vd24KCUNv
bmZpZ3VyZWQgQ2xvY2sgU3BlZWQ6IFVua25vd24KCkhhbmRsZSAweDAwMEQsIERNSSB0eXBlIDE3
LCAzNCBieXRlcwpNZW1vcnkgRGV2aWNlCglBcnJheSBIYW5kbGU6IDB4MDAwQgoJRXJyb3IgSW5m
b3JtYXRpb24gSGFuZGxlOiBOb3QgUHJvdmlkZWQKCVRvdGFsIFdpZHRoOiA2NCBiaXRzCglEYXRh
IFdpZHRoOiA2NCBiaXRzCglTaXplOiA4MTkyIE1CCglGb3JtIEZhY3RvcjogRElNTQoJU2V0OiBO
b25lCglMb2NhdG9yOiBDaGFubmVsQS1ESU1NMQoJQmFuayBMb2NhdG9yOiBCQU5LIDEKCVR5cGU6
IEREUjMKCVR5cGUgRGV0YWlsOiBTeW5jaHJvbm91cwoJU3BlZWQ6IDE2MDAgTUh6CglNYW51ZmFj
dHVyZXI6IEtpbmdzdG9uCglTZXJpYWwgTnVtYmVyOiA5NzI0RURBQgoJQXNzZXQgVGFnOiA5ODc2
NTQzMjEwCglQYXJ0IE51bWJlcjogOTlVNTQ3MS0wMzkuQTAwTEYgCglSYW5rOiAyCglDb25maWd1
cmVkIENsb2NrIFNwZWVkOiAxNjAwIE1IegoKSGFuZGxlIDB4MDAwRSwgRE1JIHR5cGUgMjAsIDM1
IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4
MDAwMDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAwMUZGRkZGRkZGCglSYW5nZSBTaXplOiA4
IEdCCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMEQKCU1lbW9yeSBBcnJheSBNYXBwZWQg
QWRkcmVzcyBIYW5kbGU6IDB4MDAxRQoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogVW5rbm93bgoJ
SW50ZXJsZWF2ZSBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxl
IDB4MDAwRiwgRE1JIHR5cGUgMTcsIDM0IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRs
ZTogMHgwMDBCCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwg
V2lkdGg6IFVua25vd24KCURhdGEgV2lkdGg6IFVua25vd24KCVNpemU6IE5vIE1vZHVsZSBJbnN0
YWxsZWQKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IENoYW5uZWxCLURJ
TU0wCglCYW5rIExvY2F0b3I6IEJBTksgMgoJVHlwZTogVW5rbm93bgoJVHlwZSBEZXRhaWw6IE5v
bmUKCVNwZWVkOiBVbmtub3duCglNYW51ZmFjdHVyZXI6IFtFbXB0eV0KCVNlcmlhbCBOdW1iZXI6
IFtFbXB0eV0KCUFzc2V0IFRhZzogOTg3NjU0MzIxMAoJUGFydCBOdW1iZXI6IFtFbXB0eV0KCVJh
bms6IFVua25vd24KCUNvbmZpZ3VyZWQgQ2xvY2sgU3BlZWQ6IFVua25vd24KCkhhbmRsZSAweDAw
MTAsIERNSSB0eXBlIDE3LCAzNCBieXRlcwpNZW1vcnkgRGV2aWNlCglBcnJheSBIYW5kbGU6IDB4
MDAwQgoJRXJyb3IgSW5mb3JtYXRpb24gSGFuZGxlOiBOb3QgUHJvdmlkZWQKCVRvdGFsIFdpZHRo
OiA2NCBiaXRzCglEYXRhIFdpZHRoOiA2NCBiaXRzCglTaXplOiA0MDk2IE1CCglGb3JtIEZhY3Rv
cjogRElNTQoJU2V0OiBOb25lCglMb2NhdG9yOiBDaGFubmVsQi1ESU1NMQoJQmFuayBMb2NhdG9y
OiBCQU5LIDMKCVR5cGU6IEREUjMKCVR5cGUgRGV0YWlsOiBTeW5jaHJvbm91cwoJU3BlZWQ6IDE2
MDAgTUh6CglNYW51ZmFjdHVyZXI6IFNhbXN1bmcKCVNlcmlhbCBOdW1iZXI6IDEzN0Q3OTk1CglB
c3NldCBUYWc6IDk4NzY1NDMyMTAKCVBhcnQgTnVtYmVyOiBNMzc4QjUyNzNDSDAtQ0swICAKCVJh
bms6IDIKCUNvbmZpZ3VyZWQgQ2xvY2sgU3BlZWQ6IDE2MDAgTUh6CgpIYW5kbGUgMHgwMDExLCBE
TUkgdHlwZSAzMiwgMjAgYnl0ZXMKU3lzdGVtIEJvb3QgSW5mb3JtYXRpb24KCVN0YXR1czogTm8g
ZXJyb3JzIGRldGVjdGVkCgpIYW5kbGUgMHgwMDEyLCBETUkgdHlwZSAyNiwgMjIgYnl0ZXMKVm9s
dGFnZSBQcm9iZQoJRGVzY3JpcHRpb246IExNNzhBCglMb2NhdGlvbjogUG93ZXIgVW5pdAoJU3Rh
dHVzOiBPSwoJTWF4aW11bSBWYWx1ZTogVW5rbm93bgoJTWluaW11bSBWYWx1ZTogVW5rbm93bgoJ
UmVzb2x1dGlvbjogVW5rbm93bgoJVG9sZXJhbmNlOiBVbmtub3duCglBY2N1cmFjeTogVW5rbm93
bgoJT0VNLXNwZWNpZmljIEluZm9ybWF0aW9uOiAweDAwMDAwMDAwCglOb21pbmFsIFZhbHVlOiBV
bmtub3duCgpIYW5kbGUgMHgwMDEzLCBETUkgdHlwZSAyOCwgMjIgYnl0ZXMKVGVtcGVyYXR1cmUg
UHJvYmUKCURlc2NyaXB0aW9uOiBMTTc4QQoJTG9jYXRpb246IFBvd2VyIFVuaXQKCVN0YXR1czog
T0sKCU1heGltdW0gVmFsdWU6IFVua25vd24KCU1pbmltdW0gVmFsdWU6IFVua25vd24KCVJlc29s
dXRpb246IFVua25vd24KCVRvbGVyYW5jZTogVW5rbm93bgoJQWNjdXJhY3k6IFVua25vd24KCU9F
TS1zcGVjaWZpYyBJbmZvcm1hdGlvbjogMHgwMDAwMDAwMAoJTm9taW5hbCBWYWx1ZTogVW5rbm93
bgoKSGFuZGxlIDB4MDAxNCwgRE1JIHR5cGUgMjcsIDE1IGJ5dGVzCkNvb2xpbmcgRGV2aWNlCglU
ZW1wZXJhdHVyZSBQcm9iZSBIYW5kbGU6IDB4MDAxMwoJVHlwZTogUG93ZXIgU3VwcGx5IEZhbgoJ
U3RhdHVzOiBPSwoJQ29vbGluZyBVbml0IEdyb3VwOiAxCglPRU0tc3BlY2lmaWMgSW5mb3JtYXRp
b246IDB4MDAwMDAwMDAKCU5vbWluYWwgU3BlZWQ6IFVua25vd24gT3IgTm9uLXJvdGF0aW5nCglE
ZXNjcmlwdGlvbjogQ29vbGluZyBEZXYgMQoKSGFuZGxlIDB4MDAxNSwgRE1JIHR5cGUgMjksIDIy
IGJ5dGVzCkVsZWN0cmljYWwgQ3VycmVudCBQcm9iZQoJRGVzY3JpcHRpb246IEFCQwoJTG9jYXRp
b246IFBvd2VyIFVuaXQKCVN0YXR1czogT0sKCU1heGltdW0gVmFsdWU6IFVua25vd24KCU1pbmlt
dW0gVmFsdWU6IFVua25vd24KCVJlc29sdXRpb246IFVua25vd24KCVRvbGVyYW5jZTogVW5rbm93
bgoJQWNjdXJhY3k6IFVua25vd24KCU9FTS1zcGVjaWZpYyBJbmZvcm1hdGlvbjogMHgwMDAwMDAw
MAoJTm9taW5hbCBWYWx1ZTogVW5rbm93bgoKSGFuZGxlIDB4MDAxNiwgRE1JIHR5cGUgMzksIDIy
IGJ5dGVzClN5c3RlbSBQb3dlciBTdXBwbHkKCVBvd2VyIFVuaXQgR3JvdXA6IDEKCUxvY2F0aW9u
OiBOL0EKCU5hbWU6IE4vQQoJTWFudWZhY3R1cmVyOiBOVUxMCglTZXJpYWwgTnVtYmVyOiBOL0EK
CUFzc2V0IFRhZzogTlVMTAoJTW9kZWwgUGFydCBOdW1iZXI6IFN0YW5kYXJkIEVmZmljaWVuY3kK
CVJldmlzaW9uOiBOVUxMCglNYXggUG93ZXIgQ2FwYWNpdHk6IFVua25vd24KCVN0YXR1czogUHJl
c2VudCwgT0sKCVR5cGU6IFN3aXRjaGluZwoJSW5wdXQgVm9sdGFnZSBSYW5nZSBTd2l0Y2hpbmc6
IEF1dG8tc3dpdGNoCglQbHVnZ2VkOiBZZXMKCUhvdCBSZXBsYWNlYWJsZTogTm8KCUlucHV0IFZv
bHRhZ2UgUHJvYmUgSGFuZGxlOiAweDAwMTIKCUNvb2xpbmcgRGV2aWNlIEhhbmRsZTogMHgwMDE0
CglJbnB1dCBDdXJyZW50IFByb2JlIEhhbmRsZTogMHgwMDE1CgpIYW5kbGUgMHgwMDE3LCBETUkg
dHlwZSA0MSwgMTEgYnl0ZXMKT25ib2FyZCBEZXZpY2UKCVJlZmVyZW5jZSBEZXNpZ25hdGlvbjog
IE9uYm9hcmQgSUdECglUeXBlOiBWaWRlbwoJU3RhdHVzOiBFbmFibGVkCglUeXBlIEluc3RhbmNl
OiAxCglCdXMgQWRkcmVzczogMDAwMDowMDowMi4wCgpIYW5kbGUgMHgwMDE4LCBETUkgdHlwZSA0
MSwgMTEgYnl0ZXMKT25ib2FyZCBEZXZpY2UKCVJlZmVyZW5jZSBEZXNpZ25hdGlvbjogIE9uYm9h
cmQgTEFOCglUeXBlOiBFdGhlcm5ldAoJU3RhdHVzOiBFbmFibGVkCglUeXBlIEluc3RhbmNlOiAx
CglCdXMgQWRkcmVzczogMDAwMDowMjowMC4wCgpIYW5kbGUgMHgwMDE5LCBETUkgdHlwZSA3LCAx
OSBieXRlcwpDYWNoZSBJbmZvcm1hdGlvbgoJU29ja2V0IERlc2lnbmF0aW9uOiBDUFUgSW50ZXJu
YWwgTDIKCUNvbmZpZ3VyYXRpb246IEVuYWJsZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwgMgoJT3Bl
cmF0aW9uYWwgTW9kZTogV3JpdGUgVGhyb3VnaAoJTG9jYXRpb246IEludGVybmFsCglJbnN0YWxs
ZWQgU2l6ZTogMTAyNCBrQgoJTWF4aW11bSBTaXplOiAxMDI0IGtCCglTdXBwb3J0ZWQgU1JBTSBU
eXBlczoKCQlVbmtub3duCglJbnN0YWxsZWQgU1JBTSBUeXBlOiBVbmtub3duCglTcGVlZDogVW5r
bm93bgoJRXJyb3IgQ29ycmVjdGlvbiBUeXBlOiBNdWx0aS1iaXQgRUNDCglTeXN0ZW0gVHlwZTog
VW5pZmllZAoJQXNzb2NpYXRpdml0eTogOC13YXkgU2V0LWFzc29jaWF0aXZlCgpIYW5kbGUgMHgw
MDFBLCBETUkgdHlwZSA3LCAxOSBieXRlcwpDYWNoZSBJbmZvcm1hdGlvbgoJU29ja2V0IERlc2ln
bmF0aW9uOiBDUFUgSW50ZXJuYWwgTDEKCUNvbmZpZ3VyYXRpb246IEVuYWJsZWQsIE5vdCBTb2Nr
ZXRlZCwgTGV2ZWwgMQoJT3BlcmF0aW9uYWwgTW9kZTogV3JpdGUgVGhyb3VnaAoJTG9jYXRpb246
IEludGVybmFsCglJbnN0YWxsZWQgU2l6ZTogMjU2IGtCCglNYXhpbXVtIFNpemU6IDI1NiBrQgoJ
U3VwcG9ydGVkIFNSQU0gVHlwZXM6CgkJVW5rbm93bgoJSW5zdGFsbGVkIFNSQU0gVHlwZTogVW5r
bm93bgoJU3BlZWQ6IFVua25vd24KCUVycm9yIENvcnJlY3Rpb24gVHlwZTogUGFyaXR5CglTeXN0
ZW0gVHlwZTogRGF0YQoJQXNzb2NpYXRpdml0eTogOC13YXkgU2V0LWFzc29jaWF0aXZlCgpIYW5k
bGUgMHgwMDFCLCBETUkgdHlwZSA3LCAxOSBieXRlcwpDYWNoZSBJbmZvcm1hdGlvbgoJU29ja2V0
IERlc2lnbmF0aW9uOiBDUFUgSW50ZXJuYWwgTDMKCUNvbmZpZ3VyYXRpb246IEVuYWJsZWQsIE5v
dCBTb2NrZXRlZCwgTGV2ZWwgMwoJT3BlcmF0aW9uYWwgTW9kZTogV3JpdGUgQmFjawoJTG9jYXRp
b246IEludGVybmFsCglJbnN0YWxsZWQgU2l6ZTogODE5MiBrQgoJTWF4aW11bSBTaXplOiA4MTky
IGtCCglTdXBwb3J0ZWQgU1JBTSBUeXBlczoKCQlVbmtub3duCglJbnN0YWxsZWQgU1JBTSBUeXBl
OiBVbmtub3duCglTcGVlZDogVW5rbm93bgoJRXJyb3IgQ29ycmVjdGlvbiBUeXBlOiBNdWx0aS1i
aXQgRUNDCglTeXN0ZW0gVHlwZTogVW5pZmllZAoJQXNzb2NpYXRpdml0eTogMTYtd2F5IFNldC1h
c3NvY2lhdGl2ZQoKSGFuZGxlIDB4MDAxQywgRE1JIHR5cGUgMjAsIDM1IGJ5dGVzCk1lbW9yeSBE
ZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAyMDAwMDAwMDAKCUVu
ZGluZyBBZGRyZXNzOiAweDAwMkZGRkZGRkZGCglSYW5nZSBTaXplOiA0IEdCCglQaHlzaWNhbCBE
ZXZpY2UgSGFuZGxlOiAweDAwMTAKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6
IDB4MDAxRQoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogVW5rbm93bgoJSW50ZXJsZWF2ZSBQb3Np
dGlvbjogMgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxRCwgRE1JIHR5
cGUgNCwgNDIgYnl0ZXMKUHJvY2Vzc29yIEluZm9ybWF0aW9uCglTb2NrZXQgRGVzaWduYXRpb246
IFNPQ0tFVCAwCglUeXBlOiBDZW50cmFsIFByb2Nlc3NvcgoJRmFtaWx5OiBDb3JlIGk3CglNYW51
ZmFjdHVyZXI6IEludGVsKFIpIENvcnBvcmF0aW9uCglJRDogQTkgMDYgMDMgMDAgRkYgRkIgRUIg
QkYKCVNpZ25hdHVyZTogVHlwZSAwLCBGYW1pbHkgNiwgTW9kZWwgNTgsIFN0ZXBwaW5nIDkKCUZs
YWdzOgoJCUZQVSAoRmxvYXRpbmctcG9pbnQgdW5pdCBvbi1jaGlwKQoJCVZNRSAoVmlydHVhbCBt
b2RlIGV4dGVuc2lvbikKCQlERSAoRGVidWdnaW5nIGV4dGVuc2lvbikKCQlQU0UgKFBhZ2Ugc2l6
ZSBleHRlbnNpb24pCgkJVFNDIChUaW1lIHN0YW1wIGNvdW50ZXIpCgkJTVNSIChNb2RlbCBzcGVj
aWZpYyByZWdpc3RlcnMpCgkJUEFFIChQaHlzaWNhbCBhZGRyZXNzIGV4dGVuc2lvbikKCQlNQ0Ug
KE1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uKQoJCUNYOCAoQ01QWENIRzggaW5zdHJ1Y3Rpb24gc3Vw
cG9ydGVkKQoJCUFQSUMgKE9uLWNoaXAgQVBJQyBoYXJkd2FyZSBzdXBwb3J0ZWQpCgkJU0VQIChG
YXN0IHN5c3RlbSBjYWxsKQoJCU1UUlIgKE1lbW9yeSB0eXBlIHJhbmdlIHJlZ2lzdGVycykKCQlQ
R0UgKFBhZ2UgZ2xvYmFsIGVuYWJsZSkKCQlNQ0EgKE1hY2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJl
KQoJCUNNT1YgKENvbmRpdGlvbmFsIG1vdmUgaW5zdHJ1Y3Rpb24gc3VwcG9ydGVkKQoJCVBBVCAo
UGFnZSBhdHRyaWJ1dGUgdGFibGUpCgkJUFNFLTM2ICgzNi1iaXQgcGFnZSBzaXplIGV4dGVuc2lv
bikKCQlDTEZTSCAoQ0xGTFVTSCBpbnN0cnVjdGlvbiBzdXBwb3J0ZWQpCgkJRFMgKERlYnVnIHN0
b3JlKQoJCUFDUEkgKEFDUEkgc3VwcG9ydGVkKQoJCU1NWCAoTU1YIHRlY2hub2xvZ3kgc3VwcG9y
dGVkKQoJCUZYU1IgKEZYU0FWRSBhbmQgRlhTVE9SIGluc3RydWN0aW9ucyBzdXBwb3J0ZWQpCgkJ
U1NFIChTdHJlYW1pbmcgU0lNRCBleHRlbnNpb25zKQoJCVNTRTIgKFN0cmVhbWluZyBTSU1EIGV4
dGVuc2lvbnMgMikKCQlTUyAoU2VsZi1zbm9vcCkKCQlIVFQgKE11bHRpLXRocmVhZGluZykKCQlU
TSAoVGhlcm1hbCBtb25pdG9yIHN1cHBvcnRlZCkKCQlQQkUgKFBlbmRpbmcgYnJlYWsgZW5hYmxl
ZCkKCVZlcnNpb246IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIegoJVm9s
dGFnZTogNi4xIFYKCUV4dGVybmFsIENsb2NrOiAxMDAgTUh6CglNYXggU3BlZWQ6IDM0MDAgTUh6
CglDdXJyZW50IFNwZWVkOiAzNDAwIE1IegoJU3RhdHVzOiBQb3B1bGF0ZWQsIEVuYWJsZWQKCVVw
Z3JhZGU6IFNvY2tldCBCR0ExMTU1CglMMSBDYWNoZSBIYW5kbGU6IDB4MDAxQQoJTDIgQ2FjaGUg
SGFuZGxlOiAweDAwMTkKCUwzIENhY2hlIEhhbmRsZTogMHgwMDFCCglTZXJpYWwgTnVtYmVyOiBO
b3QgU3BlY2lmaWVkCglBc3NldCBUYWc6IEZpbGwgQnkgT0VNCglQYXJ0IE51bWJlcjogRmlsbCBC
eSBPRU0KCUNvcmUgQ291bnQ6IDQKCUNvcmUgRW5hYmxlZDogNAoJVGhyZWFkIENvdW50OiA4CglD
aGFyYWN0ZXJpc3RpY3M6CgkJNjQtYml0IGNhcGFibGUKCkhhbmRsZSAweDAwMUUsIERNSSB0eXBl
IDE5LCAzMSBieXRlcwpNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJl
c3M6IDB4MDAwMDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAwMkZGRkZGRkZGCglSYW5nZSBT
aXplOiAxMiBHQgoJUGh5c2ljYWwgQXJyYXkgSGFuZGxlOiAweDAwMEIKCVBhcnRpdGlvbiBXaWR0
aDogNAoKSGFuZGxlIDB4MDAyOCwgRE1JIHR5cGUgMjA4LCA1IGJ5dGVzCk9FTS1zcGVjaWZpYyBU
eXBlCglIZWFkZXIgYW5kIERhdGE6CgkJRDAgMDUgMjggMDAgMDIKCkhhbmRsZSAweDAwMjksIERN
SSB0eXBlIDEzLCAyMiBieXRlcwpCSU9TIExhbmd1YWdlIEluZm9ybWF0aW9uCglMYW5ndWFnZSBE
ZXNjcmlwdGlvbiBGb3JtYXQ6IEFiYnJldmlhdGVkCglJbnN0YWxsYWJsZSBMYW5ndWFnZXM6IDEy
CgkJZW5nCgkJZnJhCgkJc3BhCgkJZ2VyCgkJaXRhCgkJZGFuCgkJZmluCgkJZHV0CgkJbm9yCgkJ
cG9yCgkJc3dlCgkJanBuCglDdXJyZW50bHkgSW5zdGFsbGVkIExhbmd1YWdlOiBlbmcKCkhhbmRs
ZSAweDAwMkEsIERNSSB0eXBlIDEyNywgNCBieXRlcwpFbmQgT2YgVGFibGUKCg==
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="dom0_dmesg.txt"
Content-Disposition: attachment; filename="dom0_dmesg.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7esh2

WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0ClsgICAgMC4w
MDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdQpbICAgIDAuMDAwMDAwXSBJbml0
aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHVhY2N0ClsgICAgMC4wMDAwMDBdIExpbnV4IHZlcnNp
b24gMy4xNC4xLTAzMTQwMS1nZW5lcmljIChhcHdAZ29tZWlzYSkgKGdjYyB2ZXJzaW9uIDQuNi4z
IChVYnVudHUvTGluYXJvIDQuNi4zLTF1YnVudHU1KSApICMyMDE0MDQxNDEyMjAgU01QIE1vbiBB
cHIgMTQgMTY6MjE6NDggVVRDIDIwMTQKWyAgICAwLjAwMDAwMF0gQ29tbWFuZCBsaW5lOiBwbGFj
ZWhvbGRlciByb290PS9kZXYvbWFwcGVyL3ZncGVydW4tbHZyb290IHJvClsgICAgMC4wMDAwMDBd
IEtFUk5FTCBzdXBwb3J0ZWQgY3B1czoKWyAgICAwLjAwMDAwMF0gICBJbnRlbCBHZW51aW5lSW50
ZWwKWyAgICAwLjAwMDAwMF0gICBBTUQgQXV0aGVudGljQU1EClsgICAgMC4wMDAwMDBdICAgQ2Vu
dGF1ciBDZW50YXVySGF1bHMKWyAgICAwLjAwMDAwMF0gRnJlZWluZyA5ZC0xMDAgcGZuIHJhbmdl
OiA5OSBwYWdlcyBmcmVlZApbICAgIDAuMDAwMDAwXSAxLTEgbWFwcGluZyBvbiA5ZC0+MTAwClsg
ICAgMC4wMDAwMDBdIEZyZWVpbmcgMjAwMDAtMjAyMDAgcGZuIHJhbmdlOiA1MTIgcGFnZXMgZnJl
ZWQKWyAgICAwLjAwMDAwMF0gMS0xIG1hcHBpbmcgb24gMjAwMDAtPjIwMjAwClsgICAgMC4wMDAw
MDBdIEZyZWVpbmcgNDAwMDQtNDAwMDUgcGZuIHJhbmdlOiAxIHBhZ2VzIGZyZWVkClsgICAgMC4w
MDAwMDBdIDEtMSBtYXBwaW5nIG9uIDQwMDA0LT40MDAwNQpbICAgIDAuMDAwMDAwXSBGcmVlaW5n
IGQ3ZmU0LWQ5M2YyIHBmbiByYW5nZTogNTEzNCBwYWdlcyBmcmVlZApbICAgIDAuMDAwMDAwXSAx
LTEgbWFwcGluZyBvbiBkN2ZlNC0+ZDkzZjIKWyAgICAwLjAwMDAwMF0gRnJlZWluZyBkOTNmMy1k
OTQzNiBwZm4gcmFuZ2U6IDY3IHBhZ2VzIGZyZWVkClsgICAgMC4wMDAwMDBdIDEtMSBtYXBwaW5n
IG9uIGQ5M2YzLT5kOTQzNgpbICAgIDAuMDAwMDAwXSBGcmVlaW5nIGQ5NThkLWQ5YzBlIHBmbiBy
YW5nZTogMTY2NSBwYWdlcyBmcmVlZApbICAgIDAuMDAwMDAwXSAxLTEgbWFwcGluZyBvbiBkOTU4
ZC0+ZDljMGUKWyAgICAwLjAwMDAwMF0gRnJlZWluZyBkOWM0MC1kOWZmMSBwZm4gcmFuZ2U6IDk0
NSBwYWdlcyBmcmVlZApbICAgIDAuMDAwMDAwXSAxLTEgbWFwcGluZyBvbiBkOWM0MC0+ZDlmZjEK
WyAgICAwLjAwMDAwMF0gRnJlZWluZyBkYTAwMC0xMDAwMDAgcGZuIHJhbmdlOiAxNTU2NDggcGFn
ZXMgZnJlZWQKWyAgICAwLjAwMDAwMF0gMS0xIG1hcHBpbmcgb24gZGEwMDAtPjEwMDAwMApbICAg
IDAuMDAwMDAwXSBSZWxlYXNlZCAxNjQwNzEgcGFnZXMgb2YgdW51c2VkIG1lbW9yeQpbICAgIDAu
MDAwMDAwXSBTZXQgMTY0MDcxIHBhZ2UocykgdG8gMS0xIG1hcHBpbmcKWyAgICAwLjAwMDAwMF0g
UG9wdWxhdGluZyAxNWUwMDAtMTg2MGU3IHBmbiByYW5nZTogMTY0MDcxIHBhZ2VzIGFkZGVkClsg
ICAgMC4wMDAwMDBdIGU4MjA6IEJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoKWyAgICAw
LjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwMDAwOWNmZmZd
IHVzYWJsZQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMDAwMDlkODAwLTB4MDAw
MDAwMDAwMDBmZmZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAw
MDAwMDEwMDAwMC0weDAwMDAwMDAwMWZmZmZmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBYZW46
IFttZW0gMHgwMDAwMDAwMDIwMDAwMDAwLTB4MDAwMDAwMDAyMDFmZmZmZl0gcmVzZXJ2ZWQKWyAg
ICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDAyMDIwMDAwMC0weDAwMDAwMDAwNDAwMDNm
ZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMDQwMDA0MDAwLTB4
MDAwMDAwMDA0MDAwNGZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAw
MDAwMDA0MDAwNTAwMC0weDAwMDAwMDAwZDdmZTNmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBY
ZW46IFttZW0gMHgwMDAwMDAwMGQ3ZmU0MDAwLTB4MDAwMDAwMDBkODQ3M2ZmZl0gcmVzZXJ2ZWQK
WyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDBkODQ3NDAwMC0weDAwMDAwMDAwZDg0
ODNmZmZdIEFDUEkgZGF0YQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMGQ4NDg0
MDAwLTB4MDAwMDAwMDBkODU5N2ZmZl0gQUNQSSBOVlMKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVt
IDB4MDAwMDAwMDBkODU5ODAwMC0weDAwMDAwMDAwZDkzZjFmZmZdIHJlc2VydmVkClsgICAgMC4w
MDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwZDkzZjIwMDAtMHgwMDAwMDAwMGQ5M2YyZmZmXSB1
c2FibGUKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDBkOTNmMzAwMC0weDAwMDAw
MDAwZDk0MzVmZmZdIEFDUEkgTlZTClsgICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAw
ZDk0MzYwMDAtMHgwMDAwMDAwMGQ5NThjZmZmXSB1c2FibGUKWyAgICAwLjAwMDAwMF0gWGVuOiBb
bWVtIDB4MDAwMDAwMDBkOTU4ZDAwMC0weDAwMDAwMDAwZDljMGRmZmZdIHJlc2VydmVkClsgICAg
MC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwZDljMGUwMDAtMHgwMDAwMDAwMGQ5YzNmZmZm
XSB1c2FibGUKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDBkOWM0MDAwMC0weDAw
MDAwMDAwZDlmZjBmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAw
MDAwZDlmZjEwMDAtMHgwMDAwMDAwMGQ5ZmZmZmZmXSB1c2FibGUKWyAgICAwLjAwMDAwMF0gWGVu
OiBbbWVtIDB4MDAwMDAwMDBkYjAwMDAwMC0weDAwMDAwMDAwZGYxZmZmZmZdIHJlc2VydmVkClsg
ICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwZjgwMDAwMDAtMHgwMDAwMDAwMGZiZmZm
ZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMGZlYzAwMDAw
LTB4MDAwMDAwMDBmZWMwMGZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4
MDAwMDAwMDBmZWQwMDAwMC0weDAwMDAwMDAwZmVkMDNmZmZdIHJlc2VydmVkClsgICAgMC4wMDAw
MDBdIFhlbjogW21lbSAweDAwMDAwMDAwZmVkMWMwMDAtMHgwMDAwMDAwMGZlZDFmZmZmXSByZXNl
cnZlZApbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMGZlZTAwMDAwLTB4MDAwMDAw
MDBmZWVmZmZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDBm
ZjAwMDAwMC0weDAwMDAwMDAwZmZmZmZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIFhlbjog
W21lbSAweDAwMDAwMDAxMDAwMDAwMDAtMHgwMDAwMDAwMzFmZGZmZmZmXSB1c2FibGUKWyAgICAw
LjAwMDAwMF0gTlggKEV4ZWN1dGUgRGlzYWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlClsgICAgMC4w
MDAwMDBdIFNNQklPUyAyLjcgcHJlc2VudC4KWyAgICAwLjAwMDAwMF0gRE1JOiBIZXdsZXR0LVBh
Y2thcmQgSFAgRWxpdGUgNzUwMCBTZXJpZXMgTVQgICAgLzJBRDUsIEJJT1MgOC4xNyAwMi8wNi8y
MDEzClsgICAgMC4wMDAwMDBdIGU4MjA6IHVwZGF0ZSBbbWVtIDB4MDAwMDAwMDAtMHgwMDAwMGZm
Zl0gdXNhYmxlID09PiByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBlODIwOiByZW1vdmUgW21lbSAw
eDAwMGEwMDAwLTB4MDAwZmZmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBObyBBR1AgYnJpZGdl
IGZvdW5kClsgICAgMC4wMDAwMDBdIGU4MjA6IGxhc3RfcGZuID0gMHgzMWZlMDAgbWF4X2FyY2hf
cGZuID0gMHg0MDAwMDAwMDAKWyAgICAwLjAwMDAwMF0gZTgyMDogbGFzdF9wZm4gPSAweGRhMDAw
IG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwClsgICAgMC4wMDAwMDBdIFNjYW5uaW5nIDEgYXJl
YXMgZm9yIGxvdyBtZW1vcnkgY29ycnVwdGlvbgpbICAgIDAuMDAwMDAwXSBCYXNlIG1lbW9yeSB0
cmFtcG9saW5lIGF0IFtmZmZmODgwMDAwMDk3MDAwXSA5NzAwMCBzaXplIDI0NTc2ClsgICAgMC4w
MDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHgwMDAwMDAwMC0weDAwMGZmZmZmXQpb
ICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMDAwMDAwLTB4MDAwZmZmZmZdIHBhZ2UgNGsKWyAgICAw
LjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweDE4NWUwMDAwMC0weDE4NWZmZmZm
Zl0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgxODVlMDAwMDAtMHgxODVmZmZmZmZdIHBhZ2UgNGsK
WyAgICAwLjAwMDAwMF0gQlJLIFsweDAxZmY2MDAwLCAweDAxZmY2ZmZmXSBQR1RBQkxFClsgICAg
MC4wMDAwMDBdIEJSSyBbMHgwMWZmNzAwMCwgMHgwMWZmN2ZmZl0gUEdUQUJMRQpbICAgIDAuMDAw
MDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4MTg0MDAwMDAwLTB4MTg1ZGZmZmZmXQpb
ICAgIDAuMDAwMDAwXSAgW21lbSAweDE4NDAwMDAwMC0weDE4NWRmZmZmZl0gcGFnZSA0awpbICAg
IDAuMDAwMDAwXSBCUksgWzB4MDFmZjgwMDAsIDB4MDFmZjhmZmZdIFBHVEFCTEUKWyAgICAwLjAw
MDAwMF0gQlJLIFsweDAxZmY5MDAwLCAweDAxZmY5ZmZmXSBQR1RBQkxFClsgICAgMC4wMDAwMDBd
IEJSSyBbMHgwMWZmYTAwMCwgMHgwMWZmYWZmZl0gUEdUQUJMRQpbICAgIDAuMDAwMDAwXSBCUksg
WzB4MDFmZmIwMDAsIDB4MDFmZmJmZmZdIFBHVEFCTEUKWyAgICAwLjAwMDAwMF0gaW5pdF9tZW1v
cnlfbWFwcGluZzogW21lbSAweDE4MDAwMDAwMC0weDE4M2ZmZmZmZl0KWyAgICAwLjAwMDAwMF0g
IFttZW0gMHgxODAwMDAwMDAtMHgxODNmZmZmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0gaW5p
dF9tZW1vcnlfbWFwcGluZzogW21lbSAweDAwMTAwMDAwLTB4MWZmZmZmZmZdClsgICAgMC4wMDAw
MDBdICBbbWVtIDB4MDAxMDAwMDAtMHgxZmZmZmZmZl0gcGFnZSA0awpbICAgIDAuMDAwMDAwXSBp
bml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4MjAyMDAwMDAtMHg0MDAwM2ZmZl0KWyAgICAwLjAw
MDAwMF0gIFttZW0gMHgyMDIwMDAwMC0weDQwMDAzZmZmXSBwYWdlIDRrClsgICAgMC4wMDAwMDBd
IGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHg0MDAwNTAwMC0weGQ3ZmUzZmZmXQpbICAgIDAu
MDAwMDAwXSAgW21lbSAweDQwMDA1MDAwLTB4ZDdmZTNmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAw
MF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweGQ5M2YyMDAwLTB4ZDkzZjJmZmZdClsgICAg
MC4wMDAwMDBdICBbbWVtIDB4ZDkzZjIwMDAtMHhkOTNmMmZmZl0gcGFnZSA0awpbICAgIDAuMDAw
MDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4ZDk0MzYwMDAtMHhkOTU4Y2ZmZl0KWyAg
ICAwLjAwMDAwMF0gIFttZW0gMHhkOTQzNjAwMC0weGQ5NThjZmZmXSBwYWdlIDRrClsgICAgMC4w
MDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHhkOWMwZTAwMC0weGQ5YzNmZmZmXQpb
ICAgIDAuMDAwMDAwXSAgW21lbSAweGQ5YzBlMDAwLTB4ZDljM2ZmZmZdIHBhZ2UgNGsKWyAgICAw
LjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweGQ5ZmYxMDAwLTB4ZDlmZmZmZmZd
ClsgICAgMC4wMDAwMDBdICBbbWVtIDB4ZDlmZjEwMDAtMHhkOWZmZmZmZl0gcGFnZSA0awpbICAg
IDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4MTAwMDAwMDAwLTB4MTdmZmZm
ZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDEwMDAwMDAwMC0weDE3ZmZmZmZmZl0gcGFnZSA0
awpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4MTg2MDAwMDAwLTB4
MzFmZGZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDE4NjAwMDAwMC0weDMxZmRmZmZmZl0g
cGFnZSA0awpbICAgIDAuMDAwMDAwXSBSQU1ESVNLOiBbbWVtIDB4MDIzZmIwMDAtMHgwM2VkMWZm
Zl0KWyAgICAwLjAwMDAwMF0gQUNQSTogUlNEUCAwMDAwMDAwMDAwMGYwNDkwIDAwMDAyNCAodjAy
IEhQUU9FTSkKWyAgICAwLjAwMDAwMF0gQUNQSTogWFNEVCAwMDAwMDAwMGQ4NDc4MDgwIDAwMDA3
QyAodjAxIEhQUU9FTSBTTElDLUNQQyAwMTA3MjAwOSBBTUkgIDAwMDEwMDEzKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBGQUNQIDAwMDAwMDAwZDg0ODE5NDggMDAwMTBDICh2MDUgSFBRT0VNIFNMSUMt
Q1BDIDAxMDcyMDA5IEFNSSAgMDAwMTAwMTMpClsgICAgMC4wMDAwMDBdIEFDUEk6IERTRFQgMDAw
MDAwMDBkODQ3ODE4OCAwMDk3QjkgKHYwMiBIUFFPRU0gU0xJQy1DUEMgMDAwMDAwMDAgSU5UTCAy
MDA1MTExNykKWyAgICAwLjAwMDAwMF0gQUNQSTogRkFDUyAwMDAwMDAwMGQ4NTk2MDgwIDAwMDA0
MApbICAgIDAuMDAwMDAwXSBBQ1BJOiBBUElDIDAwMDAwMDAwZDg0ODFhNTggMDAwMDkyICh2MDMg
SFBRT0VNIFNMSUMtQ1BDIDAxMDcyMDA5IEFNSSAgMDAwMTAwMTMpClsgICAgMC4wMDAwMDBdIEFD
UEk6IEZQRFQgMDAwMDAwMDBkODQ4MWFmMCAwMDAwNDQgKHYwMSBIUFFPRU0gU0xJQy1DUEMgMDEw
NzIwMDkgQU1JICAwMDAxMDAxMykKWyAgICAwLjAwMDAwMF0gQUNQSTogTUNGRyAwMDAwMDAwMGQ4
NDgxYjM4IDAwMDAzQyAodjAxIEhQUU9FTSBTTElDLUNQQyAwMTA3MjAwOSBNU0ZUIDAwMDAwMDk3
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVUIDAwMDAwMDAwZDg0ODFiNzggMDAwMDM4ICh2MDEg
SFBRT0VNIFNMSUMtQ1BDIDAxMDcyMDA5IEFNSS4gMDAwMDAwMDUpClsgICAgMC4wMDAwMDBdIEFD
UEk6IFNTRFQgMDAwMDAwMDBkODQ4MWJiMCAwMDAzNkQgKHYwMSBIUFFPRU0gU0xJQy1DUEMgMDAw
MDEwMDAgSU5UTCAyMDA5MTExMikKWyAgICAwLjAwMDAwMF0gQUNQSTogU1NEVCAwMDAwMDAwMGQ4
NDgxZjIwIDAwMDlBQSAodjAxIEhQUU9FTSBTTElDLUNQQyAwMDAwMzAwMCBJTlRMIDIwMDUxMTE3
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBTU0RUIDAwMDAwMDAwZDg0ODI4ZDAgMDAwQTkyICh2MDEg
SFBRT0VNIFNMSUMtQ1BDIDAwMDAzMDAwIElOVEwgMjAwNTExMTcpClsgICAgMC4wMDAwMDBdIEFD
UEk6IFhNQVIgMDAwMDAwMDBkODQ4MzM2OCAwMDAwQjggKHYwMSBIUFFPRU0gU0xJQy1DUEMgMDAw
MDAwMDEgSU5UTCAwMDAwMDAwMSkKWyAgICAwLjAwMDAwMF0gQUNQSTogREJHUCAwMDAwMDAwMGQ4
NDgzNDIwIDAwMDAzNCAodjAxIEhQUU9FTSBTTElDLUNQQyAwMTA3MjAwOSBBTUkgIDAwMDEwMDEz
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBTU0RUIDAwMDAwMDAwZDg0ODM0NTggMDAwODRBICh2MDEg
SFBRT0VNIFNMSUMtQ1BDIDAwMDAwMDAxIE1TRlQgMDMwMDAwMDEpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwClsgICAgMC4wMDAwMDBdIE5VTUEgdHVy
bmVkIG9mZgpbICAgIDAuMDAwMDAwXSBGYWtpbmcgYSBub2RlIGF0IFttZW0gMHgwMDAwMDAwMDAw
MDAwMDAwLTB4MDAwMDAwMDMxZmRmZmZmZl0KWyAgICAwLjAwMDAwMF0gSW5pdG1lbSBzZXR1cCBu
b2RlIDAgW21lbSAweDAwMDAwMDAwLTB4MzFmZGZmZmZmXQpbICAgIDAuMDAwMDAwXSAgIE5PREVf
REFUQSBbbWVtIDB4MTg2MGUyMDAwLTB4MTg2MGU2ZmZmXQpbICAgIDAuMDAwMDAwXSBab25lIHJh
bmdlczoKWyAgICAwLjAwMDAwMF0gICBETUEgICAgICBbbWVtIDB4MDAwMDEwMDAtMHgwMGZmZmZm
Zl0KWyAgICAwLjAwMDAwMF0gICBETUEzMiAgICBbbWVtIDB4MDEwMDAwMDAtMHhmZmZmZmZmZl0K
WyAgICAwLjAwMDAwMF0gICBOb3JtYWwgICBbbWVtIDB4MTAwMDAwMDAwLTB4MzFmZGZmZmZmXQpb
ICAgIDAuMDAwMDAwXSBNb3ZhYmxlIHpvbmUgc3RhcnQgZm9yIGVhY2ggbm9kZQpbICAgIDAuMDAw
MDAwXSBFYXJseSBtZW1vcnkgbm9kZSByYW5nZXMKWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDog
W21lbSAweDAwMDAxMDAwLTB4MDAwOWNmZmZdClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFtt
ZW0gMHgwMDEwMDAwMC0weDFmZmZmZmZmXQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVt
IDB4MjAyMDAwMDAtMHg0MDAwM2ZmZl0KWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDogW21lbSAw
eDQwMDA1MDAwLTB4ZDdmZTNmZmZdClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHhk
OTNmMjAwMC0weGQ5M2YyZmZmXQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVtIDB4ZDk0
MzYwMDAtMHhkOTU4Y2ZmZl0KWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDogW21lbSAweGQ5YzBl
MDAwLTB4ZDljM2ZmZmZdClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHhkOWZmMTAw
MC0weGQ5ZmZmZmZmXQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVtIDB4MTAwMDAwMDAw
LTB4MzFmZGZmZmZmXQpbICAgIDAuMDAwMDAwXSBPbiBub2RlIDAgdG90YWxwYWdlczogMzExMjIx
NgpbICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiA2NCBwYWdlcyB1c2VkIGZvciBtZW1tYXAKWyAg
ICAwLjAwMDAwMF0gICBETUEgem9uZTogMjEgcGFnZXMgcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0g
ICBETUEgem9uZTogMzk5NiBwYWdlcywgTElGTyBiYXRjaDowClsgICAgMC4wMDAwMDBdICAgRE1B
MzIgem9uZTogMTM3NTggcGFnZXMgdXNlZCBmb3IgbWVtbWFwClsgICAgMC4wMDAwMDBdICAgRE1B
MzIgem9uZTogODgwNTA4IHBhZ2VzLCBMSUZPIGJhdGNoOjMxClsgICAgMC4wMDAwMDBdICAgTm9y
bWFsIHpvbmU6IDM0ODA4IHBhZ2VzIHVzZWQgZm9yIG1lbW1hcApbICAgIDAuMDAwMDAwXSAgIE5v
cm1hbCB6b25lOiAyMjI3NzEyIHBhZ2VzLCBMSUZPIGJhdGNoOjMxClsgICAgMC4wMDAwMDBdIEFD
UEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4NDA4ClsgICAgMC4wMDAwMDBdIEFDUEk6IExvY2FsIEFQ
SUMgYWRkcmVzcyAweGZlZTAwMDAwClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lk
WzB4MDFdIGxhcGljX2lkWzB4MDBdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElD
IChhY3BpX2lkWzB4MDJdIGxhcGljX2lkWzB4MDJdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4MDNdIGxhcGljX2lkWzB4MDRdIGVuYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDRdIGxhcGljX2lkWzB4MDZdIGVuYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDVdIGxhcGljX2lkWzB4MDFd
IGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDZdIGxhcGlj
X2lkWzB4MDNdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
MDddIGxhcGljX2lkWzB4MDVdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4MDhdIGxhcGljX2lkWzB4MDddIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDX05NSSAoYWNwaV9pZFsweGZmXSBoaWdoIGVkZ2UgbGludFsweDFdKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBJT0FQSUMgKGlkWzB4MDBdIGFkZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2Vb
MF0pClsgICAgMC4wMDAwMDBdIElPQVBJQ1swXTogYXBpY19pZCAwLCB2ZXJzaW9uIDMyLCBhZGRy
ZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzClsgICAgMC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZS
IChidXMgMCBidXNfaXJxIDAgZ2xvYmFsX2lycSAyIGRmbCBkZmwpClsgICAgMC4wMDAwMDBdIEFD
UEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDkgZ2xvYmFsX2lycSA5IGhpZ2ggbGV2ZWwp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IElSUTAgdXNlZCBieSBvdmVycmlkZS4KWyAgICAwLjAwMDAw
MF0gQUNQSTogSVJRMiB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJUlE5
IHVzZWQgYnkgb3ZlcnJpZGUuClsgICAgMC4wMDAwMDBdIFVzaW5nIEFDUEkgKE1BRFQpIGZvciBT
TVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVUIGlk
OiAweDgwODZhNzAxIGJhc2U6IDB4ZmVkMDAwMDAKWyAgICAwLjAwMDAwMF0gc21wYm9vdDogQWxs
b3dpbmcgOCBDUFVzLCAwIGhvdHBsdWcgQ1BVcwpbICAgIDAuMDAwMDAwXSBucl9pcnFzX2dzaTog
NDAKWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweDAw
MDlkMDAwLTB4MDAwOWRmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBt
ZW1vcnk6IFttZW0gMHgwMDA5ZTAwMC0weDAwMGZmZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVn
aXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4MjAwMDAwMDAtMHgyMDFmZmZmZl0KWyAgICAw
LjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweDQwMDA0MDAwLTB4
NDAwMDRmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFtt
ZW0gMHhkN2ZlNDAwMC0weGQ4NDczZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBu
b3NhdmUgbWVtb3J5OiBbbWVtIDB4ZDg0NzQwMDAtMHhkODQ4M2ZmZl0KWyAgICAwLjAwMDAwMF0g
UE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGQ4NDg0MDAwLTB4ZDg1OTdmZmZd
ClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhkODU5
ODAwMC0weGQ5M2YxZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVt
b3J5OiBbbWVtIDB4ZDkzZjMwMDAtMHhkOTQzNWZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lz
dGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGQ5NThkMDAwLTB4ZDljMGRmZmZdClsgICAgMC4w
MDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhkOWM0MDAwMC0weGQ5
ZmYwZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVt
IDB4ZGEwMDAwMDAtMHhkYWZmZmZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9z
YXZlIG1lbW9yeTogW21lbSAweGRiMDAwMDAwLTB4ZGYxZmZmZmZdClsgICAgMC4wMDAwMDBdIFBN
OiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhkZjIwMDAwMC0weGY3ZmZmZmZmXQpb
ICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZjgwMDAw
MDAtMHhmYmZmZmZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9y
eTogW21lbSAweGZjMDAwMDAwLTB4ZmViZmZmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3Rl
cmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWMwMDAwMC0weGZlYzAwZmZmXQpbICAgIDAuMDAw
MDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVjMDEwMDAtMHhmZWNm
ZmZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAw
eGZlZDAwMDAwLTB4ZmVkMDNmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2
ZSBtZW1vcnk6IFttZW0gMHhmZWQwNDAwMC0weGZlZDFiZmZmXQpbICAgIDAuMDAwMDAwXSBQTTog
UmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVkMWMwMDAtMHhmZWQxZmZmZl0KWyAg
ICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZlZDIwMDAw
LTB4ZmVkZmZmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6
IFttZW0gMHhmZWUwMDAwMC0weGZlZWZmZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJl
ZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVmMDAwMDAtMHhmZWZmZmZmZl0KWyAgICAwLjAwMDAw
MF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZmMDAwMDAwLTB4ZmZmZmZm
ZmZdClsgICAgMC4wMDAwMDBdIGU4MjA6IFttZW0gMHhkZjIwMDAwMC0weGY3ZmZmZmZmXSBhdmFp
bGFibGUgZm9yIFBDSSBkZXZpY2VzClsgICAgMC4wMDAwMDBdIEJvb3RpbmcgcGFyYXZpcnR1YWxp
emVkIGtlcm5lbCBvbiBYZW4KWyAgICAwLjAwMDAwMF0gWGVuIHZlcnNpb246IDQuNC4wIChwcmVz
ZXJ2ZS1BRCkKWyAgICAwLjAwMDAwMF0gc2V0dXBfcGVyY3B1OiBOUl9DUFVTOjI1NiBucl9jcHVt
YXNrX2JpdHM6MjU2IG5yX2NwdV9pZHM6OCBucl9ub2RlX2lkczoxClsgICAgMC4wMDAwMDBdIFBF
UkNQVTogRW1iZWRkZWQgMjkgcGFnZXMvY3B1IEBmZmZmODgwMTg0NjAwMDAwIHM4NjUyOCByODE5
MiBkMjQwNjQgdTI2MjE0NApbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBzODY1MjggcjgxOTIg
ZDI0MDY0IHUyNjIxNDQgYWxsb2M9MSoyMDk3MTUyClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6
IFswXSAwIDEgMiAzIDQgNSA2IDcgClsgICAgMC4wMDAwMDBdIEJ1aWx0IDEgem9uZWxpc3RzIGlu
IFpvbmUgb3JkZXIsIG1vYmlsaXR5IGdyb3VwaW5nIG9uLiAgVG90YWwgcGFnZXM6IDMwNjM1NjUK
WyAgICAwLjAwMDAwMF0gUG9saWN5IHpvbmU6IE5vcm1hbApbICAgIDAuMDAwMDAwXSBLZXJuZWwg
Y29tbWFuZCBsaW5lOiBwbGFjZWhvbGRlciByb290PS9kZXYvbWFwcGVyL3ZncGVydW4tbHZyb290
IHJvClsgICAgMC4wMDAwMDBdIFBJRCBoYXNoIHRhYmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAz
LCAzMjc2OCBieXRlcykKWyAgICAwLjAwMDAwMF0geHNhdmU6IGVuYWJsZWQgeHN0YXRlX2J2IDB4
NywgY250eHQgc2l6ZSAweDM0MApbICAgIDAuMDAwMDAwXSBzb2Z0d2FyZSBJTyBUTEIgW21lbSAw
eDE3MzUxMDAwMC0weDE3NzUxMDAwMF0gKDY0TUIpIG1hcHBlZCBhdCBbZmZmZjg4MDE3MzUxMDAw
MC1mZmZmODgwMTc3NTBmZmZmXQpbICAgIDAuMDAwMDAwXSBNZW1vcnk6IDUzOTA2NDBLLzEyNDQ4
ODY0SyBhdmFpbGFibGUgKDc2NDJLIGtlcm5lbCBjb2RlLCAxMTA5SyByd2RhdGEsIDM1OTJLIHJv
ZGF0YSwgMTM1NksgaW5pdCwgMTQzMksgYnNzLCA3MDU4MjI0SyByZXNlcnZlZCkKWyAgICAwLjAw
MDAwMF0gU0xVQjogSFdhbGlnbj02NCwgT3JkZXI9MC0zLCBNaW5PYmplY3RzPTAsIENQVXM9OCwg
Tm9kZXM9MQpbICAgIDAuMDAwMDAwXSBIaWVyYXJjaGljYWwgUkNVIGltcGxlbWVudGF0aW9uLgpb
ICAgIDAuMDAwMDAwXSAJUkNVIGR5bnRpY2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9u
IGlzIGVuYWJsZWQuClsgICAgMC4wMDAwMDBdIAlSQ1UgcmVzdHJpY3RpbmcgQ1BVcyBmcm9tIE5S
X0NQVVM9MjU2IHRvIG5yX2NwdV9pZHM9OC4KWyAgICAwLjAwMDAwMF0gCU9mZmxvYWQgUkNVIGNh
bGxiYWNrcyBmcm9tIGFsbCBDUFVzClsgICAgMC4wMDAwMDBdIAlPZmZsb2FkIFJDVSBjYWxsYmFj
a3MgZnJvbSBDUFVzOiAwLTcuClsgICAgMC4wMDAwMDBdIFJDVTogQWRqdXN0aW5nIGdlb21ldHJ5
IGZvciByY3VfZmFub3V0X2xlYWY9MTYsIG5yX2NwdV9pZHM9OApbICAgIDAuMDAwMDAwXSBOUl9J
UlFTOjE2NjQwIG5yX2lycXM6NzQ0IDE2ClsgICAgMC4wMDAwMDBdIHhlbjpldmVudHM6IFVzaW5n
IEZJRk8tYmFzZWQgQUJJClsgICAgMC4wMDAwMDBdIHhlbjogc2NpIG92ZXJyaWRlOiBnbG9iYWxf
aXJxPTkgdHJpZ2dlcj0wIHBvbGFyaXR5PTAKWyAgICAwLjAwMDAwMF0geGVuOiByZWdpc3Rlcmlu
ZyBnc2kgOSB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMApbICAgIDAuMDAwMDAwXSB4ZW46IC0tPiBw
aXJxPTkgLT4gaXJxPTkgKGdzaT05KQpbICAgIDAuMDAwMDAwXSB4ZW46IGFjcGkgc2NpIDkKWyAg
ICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0xIC0+IGlycT0xIChnc2k9MSkKWyAgICAwLjAwMDAw
MF0geGVuOiAtLT4gcGlycT0yIC0+IGlycT0yIChnc2k9MikKWyAgICAwLjAwMDAwMF0geGVuOiAt
LT4gcGlycT0zIC0+IGlycT0zIChnc2k9MykKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT00
IC0+IGlycT00IChnc2k9NCkKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT01IC0+IGlycT01
IChnc2k9NSkKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT02IC0+IGlycT02IChnc2k9NikK
WyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT03IC0+IGlycT03IChnc2k9NykKWyAgICAwLjAw
MDAwMF0geGVuOiAtLT4gcGlycT04IC0+IGlycT04IChnc2k9OCkKWyAgICAwLjAwMDAwMF0geGVu
OiAtLT4gcGlycT0xMCAtPiBpcnE9MTAgKGdzaT0xMCkKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4g
cGlycT0xMSAtPiBpcnE9MTEgKGdzaT0xMSkKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0x
MiAtPiBpcnE9MTIgKGdzaT0xMikKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0xMyAtPiBp
cnE9MTMgKGdzaT0xMykKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0xNCAtPiBpcnE9MTQg
KGdzaT0xNCkKWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0xNSAtPiBpcnE9MTUgKGdzaT0x
NSkKWyAgICAwLjAwMDAwMF0gQ29uc29sZTogY29sb3VyIFZHQSsgODB4MjUKWyAgICAwLjAwMDAw
MF0gY29uc29sZSBbdHR5MF0gZW5hYmxlZApbICAgIDAuMDAwMDAwXSBhbGxvY2F0ZWQgNTAzMzE2
NDggYnl0ZXMgb2YgcGFnZV9jZ3JvdXAKWyAgICAwLjAwMDAwMF0gcGxlYXNlIHRyeSAnY2dyb3Vw
X2Rpc2FibGU9bWVtb3J5JyBvcHRpb24gaWYgeW91IGRvbid0IHdhbnQgbWVtb3J5IGNncm91cHMK
WyAgICAwLjAwMDAwMF0gWGVuOiB1c2luZyB2Y3B1b3AgdGltZXIgaW50ZXJmYWNlClsgICAgMC4w
MDAwMDBdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMApbICAgIDAuMDAwMDAwXSB0c2M6
IERldGVjdGVkIDMzOTIuMzc2IE1IeiBwcm9jZXNzb3IKWyAgICAzLjIzMzA2OV0gQ2FsaWJyYXRp
bmcgZGVsYXkgbG9vcCAoc2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcgdGltZXIgZnJl
cXVlbmN5Li4gNjc4NC43NSBCb2dvTUlQUyAobHBqPTEzNTY5NTA0KQpbICAgIDMuMjMzMTI5XSBw
aWRfbWF4OiBkZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDEKWyAgICAzLjIzMzE2NV0gQUNQSTog
Q29yZSByZXZpc2lvbiAyMDEzMTIxOApbICAgIDMuMjQzODIzXSBBQ1BJOiBBbGwgQUNQSSBUYWJs
ZXMgc3VjY2Vzc2Z1bGx5IGFjcXVpcmVkClsgICAgMy4yNDYxMjhdIFNlY3VyaXR5IEZyYW1ld29y
ayBpbml0aWFsaXplZApbICAgIDMuMjQ2MTY3XSBBcHBBcm1vcjogQXBwQXJtb3IgaW5pdGlhbGl6
ZWQKWyAgICAzLjI0NjE5NV0gWWFtYTogYmVjb21pbmcgbWluZGZ1bC4KWyAgICAzLjI0Nzg4MV0g
RGVudHJ5IGNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMjA5NzE1MiAob3JkZXI6IDEyLCAxNjc3
NzIxNiBieXRlcykKWyAgICAzLjI1MjA4NV0gSW5vZGUtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVz
OiAxMDQ4NTc2IChvcmRlcjogMTEsIDgzODg2MDggYnl0ZXMpClsgICAgMy4yNTM2MzNdIE1vdW50
LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMzI3NjggKG9yZGVyOiA2LCAyNjIxNDQgYnl0ZXMp
ClsgICAgMy4yNTM2OTNdIE1vdW50cG9pbnQtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAzMjc2
OCAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykKWyAgICAzLjI1Mzk5MV0gSW5pdGlhbGl6aW5nIGNn
cm91cCBzdWJzeXMgbWVtb3J5ClsgICAgMy4yNTQwMjRdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vi
c3lzIGRldmljZXMKWyAgICAzLjI1NDA1Ml0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgZnJl
ZXplcgpbICAgIDMuMjU0MDgxXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBuZXRfY2xzClsg
ICAgMy4yNTQxMTBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGJsa2lvClsgICAgMy4yNTQx
MzhdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIHBlcmZfZXZlbnQKWyAgICAzLjI1NDE4NF0g
SW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgaHVnZXRsYgpbICAgIDMuMjU0MjU4XSBFTkVSR1lf
UEVSRl9CSUFTOiBTZXQgdG8gJ25vcm1hbCcsIHdhcyAncGVyZm9ybWFuY2UnClsgICAgMy4yNTQy
NThdIEVORVJHWV9QRVJGX0JJQVM6IFZpZXcgYW5kIHVwZGF0ZSB3aXRoIHg4Nl9lbmVyZ3lfcGVy
Zl9wb2xpY3koOCkKWyAgICAzLjI1NDMwOV0gQ1BVOiBQaHlzaWNhbCBQcm9jZXNzb3IgSUQ6IDAK
WyAgICAzLjI1NDMzNl0gQ1BVOiBQcm9jZXNzb3IgQ29yZSBJRDogMApbICAgIDMuMjU0NjIzXSBt
Y2U6IENQVSBzdXBwb3J0cyAyIE1DRSBiYW5rcwpbICAgIDMuMjU0NjYyXSBMYXN0IGxldmVsIGlU
TEIgZW50cmllczogNEtCIDUxMiwgMk1CIDgsIDRNQiA4ClsgICAgMy4yNTQ2NjJdIExhc3QgbGV2
ZWwgZFRMQiBlbnRyaWVzOiA0S0IgNTEyLCAyTUIgMzIsIDRNQiAzMiwgMUdCIDAKWyAgICAzLjI1
NDY2Ml0gdGxiX2ZsdXNoYWxsX3NoaWZ0OiAyClsgICAgMy4yNTQ4MDBdIEZyZWVpbmcgU01QIGFs
dGVybmF0aXZlcyBtZW1vcnk6IDI4SyAoZmZmZmZmZmY4MWU2YTAwMCAtIGZmZmZmZmZmODFlNzEw
MDApClsgICAgMy4yNTU3MzBdIGZ0cmFjZTogYWxsb2NhdGluZyAzMTUxMCBlbnRyaWVzIGluIDEy
NCBwYWdlcwpbICAgIDMuMjY2NjA2XSBjcHUgMCBzcGlubG9jayBldmVudCBpcnEgNDEKWyAgICAz
LjI3MzIzMF0gUGVyZm9ybWFuY2UgRXZlbnRzOiB1bnN1cHBvcnRlZCBwNiBDUFUgbW9kZWwgNTgg
bm8gUE1VIGRyaXZlciwgc29mdHdhcmUgZXZlbnRzIG9ubHkuClsgICAgMy4yNzQ0NDVdIE5NSSB3
YXRjaGRvZzogZGlzYWJsZWQgKGNwdTApOiBoYXJkd2FyZSBldmVudHMgbm90IGVuYWJsZWQKWyAg
ICAzLjI3NDUzMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAxClsgICAgMy4yNzQ1Njdd
IGNwdSAxIHNwaW5sb2NrIGV2ZW50IGlycSA0OApbICAgIDMuMjc1MTI3XSBpbnN0YWxsaW5nIFhl
biB0aW1lciBmb3IgQ1BVIDIKWyAgICAzLjI3NTE2MV0gY3B1IDIgc3BpbmxvY2sgZXZlbnQgaXJx
IDU1ClsgICAgMy4yNzU2NzVdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMwpbICAgIDMu
Mjc1NzA4XSBjcHUgMyBzcGlubG9jayBldmVudCBpcnEgNjIKWyAgICAzLjI3NjE3N10gaW5zdGFs
bGluZyBYZW4gdGltZXIgZm9yIENQVSA0ClsgICAgMy4yNzYyMTFdIGNwdSA0IHNwaW5sb2NrIGV2
ZW50IGlycSA2OQpbICAgIDMuMjc2NzE1XSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDUK
WyAgICAzLjI3Njc0OV0gY3B1IDUgc3BpbmxvY2sgZXZlbnQgaXJxIDc2ClsgICAgMy4yNzcyMTRd
IGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgNgpbICAgIDMuMjc3MjQ3XSBjcHUgNiBzcGlu
bG9jayBldmVudCBpcnEgODMKWyAgICAzLjI3NzcyNl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9y
IENQVSA3ClsgICAgMy4yNzc3NjBdIGNwdSA3IHNwaW5sb2NrIGV2ZW50IGlycSA5MApbICAgIDMu
Mjc4MTYyXSB4ODY6IEJvb3RlZCB1cCAxIG5vZGUsIDggQ1BVcwpbICAgIDMuMjc4Mzk5XSBkZXZ0
bXBmczogaW5pdGlhbGl6ZWQKWyAgICAzLjI4MjIwOV0gRVZNOiBzZWN1cml0eS5zZWxpbnV4Clsg
ICAgMy4yODIyMzddIEVWTTogc2VjdXJpdHkuU01BQ0s2NApbICAgIDMuMjgyMjY0XSBFVk06IHNl
Y3VyaXR5LmltYQpbICAgIDMuMjgyMjkwXSBFVk06IHNlY3VyaXR5LmNhcGFiaWxpdHkKWyAgICAz
LjI4MjM2MF0gUE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJlZ2lvbiBbbWVtIDB4ZDg0ODQwMDAt
MHhkODU5N2ZmZl0gKDExMzA0OTYgYnl0ZXMpClsgICAgMy4yODI0MTVdIFBNOiBSZWdpc3Rlcmlu
ZyBBQ1BJIE5WUyByZWdpb24gW21lbSAweGQ5M2YzMDAwLTB4ZDk0MzVmZmZdICgyNzQ0MzIgYnl0
ZXMpClsgICAgMy4yODMwNTldIHBpbmN0cmwgY29yZTogaW5pdGlhbGl6ZWQgcGluY3RybCBzdWJz
eXN0ZW0KWyAgICAzLjI4MzEzNV0gcmVndWxhdG9yLWR1bW15OiBubyBwYXJhbWV0ZXJzClsgICAg
My4yODMyMDFdIFJUQyB0aW1lOiAxODo0ODozMiwgZGF0ZTogMDkvMTQvMTQKWyAgICAzLjI4MzI1
Ml0gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAxNgpbICAgIDMuMjgzMjg3XSB4ZW46
Z3JhbnRfdGFibGU6IEdyYW50IHRhYmxlcyB1c2luZyB2ZXJzaW9uIDEgbGF5b3V0ClsgICAgMy4y
ODMzMjRdIEdyYW50IHRhYmxlIGluaXRpYWxpemVkClsgICAgMy4yODM1MDldIEFDUEkgRkFEVCBk
ZWNsYXJlcyB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBQQ0llIEFTUE0sIHNvIGRpc2FibGUg
aXQKWyAgICAzLjI4MzU1M10gQUNQSTogYnVzIHR5cGUgUENJIHJlZ2lzdGVyZWQKWyAgICAzLjI4
MzU4MV0gYWNwaXBocDogQUNQSSBIb3QgUGx1ZyBQQ0kgQ29udHJvbGxlciBEcml2ZXIgdmVyc2lv
bjogMC41ClsgICAgMy4yODM3MzVdIFBDSTogTU1DT05GSUcgZm9yIGRvbWFpbiAwMDAwIFtidXMg
MDAtM2ZdIGF0IFttZW0gMHhmODAwMDAwMC0weGZiZmZmZmZmXSAoYmFzZSAweGY4MDAwMDAwKQpb
ICAgIDMuMjgzNzgxXSBQQ0k6IE1NQ09ORklHIGF0IFttZW0gMHhmODAwMDAwMC0weGZiZmZmZmZm
XSByZXNlcnZlZCBpbiBFODIwClsgICAgMy4yOTI2MTFdIFBDSTogVXNpbmcgY29uZmlndXJhdGlv
biB0eXBlIDEgZm9yIGJhc2UgYWNjZXNzClsgICAgMy4yOTM3MTRdIGJpbzogY3JlYXRlIHNsYWIg
PGJpby0wPiBhdCAwClsgICAgMy4yOTM5NTddIEFDUEk6IEFkZGVkIF9PU0koTW9kdWxlIERldmlj
ZSkKWyAgICAzLjI5Mzk4N10gQUNQSTogQWRkZWQgX09TSShQcm9jZXNzb3IgRGV2aWNlKQpbICAg
IDMuMjk0MDE1XSBBQ1BJOiBBZGRlZCBfT1NJKDMuMCBfU0NQIEV4dGVuc2lvbnMpClsgICAgMy4y
OTQwNDNdIEFDUEk6IEFkZGVkIF9PU0koUHJvY2Vzc29yIEFnZ3JlZ2F0b3IgRGV2aWNlKQpbICAg
IDMuMjk2MTcyXSBBQ1BJOiBFeGVjdXRlZCAxIGJsb2NrcyBvZiBtb2R1bGUtbGV2ZWwgZXhlY3V0
YWJsZSBBTUwgY29kZQpbICAgIDMuMjk5Mjk5XSBBQ1BJOiBTU0RUIDAwMDAwMDAwZDg0MjEwMTgg
MDAwODNCICh2MDEgSFBRT0VNIFNMSUMtQ1BDIDAwMDAzMDAxIElOVEwgMjAwNTExMTcpClsgICAg
My4yOTk2MTBdIEFDUEk6IER5bmFtaWMgT0VNIFRhYmxlIExvYWQ6ClsgICAgMy4yOTk2NjJdIEFD
UEk6IFNTRFQgICAgICAgICAgIChudWxsKSAwMDA4M0IgKHYwMSBIUFFPRU0gU0xJQy1DUEMgMDAw
MDMwMDEgSU5UTCAyMDA1MTExNykKWyAgICAzLjMwMzIzOV0gQUNQSTogU1NEVCAwMDAwMDAwMGQ4
NDIyYTk4IDAwMDMwMyAodjAxIEhQUU9FTSBTTElDLUNQQyAwMDAwMzAwMCBJTlRMIDIwMDUxMTE3
KQpbICAgIDMuMzAzNTY2XSBBQ1BJOiBEeW5hbWljIE9FTSBUYWJsZSBMb2FkOgpbICAgIDMuMzAz
NjE3XSBBQ1BJOiBTU0RUICAgICAgICAgICAobnVsbCkgMDAwMzAzICh2MDEgSFBRT0VNIFNMSUMt
Q1BDIDAwMDAzMDAwIElOVEwgMjAwNTExMTcpClsgICAgMy4zMDcyNzZdIEFDUEk6IFNTRFQgMDAw
MDAwMDBkODQyM2E5OCAwMDAxMTkgKHYwMSBIUFFPRU0gU0xJQy1DUEMgMDAwMDMwMDAgSU5UTCAy
MDA1MTExNykKWyAgICAzLjMwNzU5MF0gQUNQSTogRHluYW1pYyBPRU0gVGFibGUgTG9hZDoKWyAg
ICAzLjMwNzY0Ml0gQUNQSTogU1NEVCAgICAgICAgICAgKG51bGwpIDAwMDExOSAodjAxIEhQUU9F
TSBTTElDLUNQQyAwMDAwMzAwMCBJTlRMIDIwMDUxMTE3KQpbICAgIDMuMzEyMDM5XSBBQ1BJOiBJ
bnRlcnByZXRlciBlbmFibGVkClsgICAgMy4zMTIwNzJdIEFDUEkgRXhjZXB0aW9uOiBBRV9OT1Rf
Rk9VTkQsIFdoaWxlIGV2YWx1YXRpbmcgU2xlZXAgU3RhdGUgW1xfUzFfXSAoMjAxMzEyMTgvaHd4
ZmFjZS01ODApClsgICAgMy4zMTIxNDNdIEFDUEkgRXhjZXB0aW9uOiBBRV9OT1RfRk9VTkQsIFdo
aWxlIGV2YWx1YXRpbmcgU2xlZXAgU3RhdGUgW1xfUzJfXSAoMjAxMzEyMTgvaHd4ZmFjZS01ODAp
ClsgICAgMy4zMTIyMTldIEFDUEk6IChzdXBwb3J0cyBTMCBTMyBTNCBTNSkKWyAgICAzLjMxMjI0
N10gQUNQSTogVXNpbmcgSU9BUElDIGZvciBpbnRlcnJ1cHQgcm91dGluZwpbICAgIDMuMzEyMjk2
XSBQQ0k6IFVzaW5nIGhvc3QgYnJpZGdlIHdpbmRvd3MgZnJvbSBBQ1BJOyBpZiBuZWNlc3Nhcnks
IHVzZSAicGNpPW5vY3JzIiBhbmQgcmVwb3J0IGEgYnVnClsgICAgMy4zMTI0NDBdIEFDUEk6IE5v
IGRvY2sgZGV2aWNlcyBmb3VuZC4KWyAgICAzLjMxNzAwNF0gQUNQSTogUG93ZXIgUmVzb3VyY2Ug
W0ZOMDBdIChvZmYpClsgICAgMy4zMTcwOTFdIEFDUEk6IFBvd2VyIFJlc291cmNlIFtGTjAxXSAo
b2ZmKQpbICAgIDMuMzE3MTczXSBBQ1BJOiBQb3dlciBSZXNvdXJjZSBbRk4wMl0gKG9mZikKWyAg
ICAzLjMxNzI1OF0gQUNQSTogUG93ZXIgUmVzb3VyY2UgW0ZOMDNdIChvZmYpClsgICAgMy4zMTcz
MzhdIEFDUEk6IFBvd2VyIFJlc291cmNlIFtGTjA0XSAob2ZmKQpbICAgIDMuMzE3NzY2XSBBQ1BJ
OiBQQ0kgUm9vdCBCcmlkZ2UgW1BDSTBdIChkb21haW4gMDAwMCBbYnVzIDAwLTNlXSkKWyAgICAz
LjMxNzgwMV0gYWNwaSBQTlAwQTA4OjAwOiBfT1NDOiBPUyBzdXBwb3J0cyBbRXh0ZW5kZWRDb25m
aWcgQVNQTSBDbG9ja1BNIFNlZ21lbnRzIE1TSV0KWyAgICAzLjMxNzk0NV0gYWNwaSBQTlAwQTA4
OjAwOiBfT1NDOiBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IFtQQ0llSG90cGx1ZyBQTUVdClsg
ICAgMy4zMTgwNjddIGFjcGkgUE5QMEEwODowMDogX09TQzogT1Mgbm93IGNvbnRyb2xzIFtBRVIg
UENJZUNhcGFiaWxpdHldClsgICAgMy4zMTg1NzldIFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAw
MDowMApbICAgIDMuMzE4NjA4XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFti
dXMgMDAtM2VdClsgICAgMy4zMTg2MzhdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3Vy
Y2UgW2lvICAweDAwMDAtMHgwY2Y3XQpbICAgIDMuMzE4NjY5XSBwY2lfYnVzIDAwMDA6MDA6IHJv
b3QgYnVzIHJlc291cmNlIFtpbyAgMHgwZDAwLTB4ZmZmZl0KWyAgICAzLjMxODY5OV0gcGNpX2J1
cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBiZmZmZl0K
WyAgICAzLjMxODczMV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4
MDAwZDAwMDAtMHgwMDBkM2ZmZl0KWyAgICAzLjMxODc2Ml0gcGNpX2J1cyAwMDAwOjAwOiByb290
IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDAwZDQwMDAtMHgwMDBkN2ZmZl0KWyAgICAzLjMxODc5NF0g
cGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDAwZDgwMDAtMHgwMDBk
YmZmZl0KWyAgICAzLjMxODgyNV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBb
bWVtIDB4MDAwZGMwMDAtMHgwMDBkZmZmZl0KWyAgICAzLjMxODg1Nl0gcGNpX2J1cyAwMDAwOjAw
OiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDAwZTAwMDAtMHgwMDBlM2ZmZl0KWyAgICAzLjMx
ODg4N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDAwZTQwMDAt
MHgwMDBlN2ZmZl0KWyAgICAzLjMxODkxOV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNv
dXJjZSBbbWVtIDB4ZGYyMDAwMDAtMHhmZWFmZmZmZl0KWyAgICAzLjMxODk1OV0gcGNpIDAwMDA6
MDA6MDAuMDogWzgwODY6MDE1MF0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDMuMzE5MDc2
XSBwY2kgMDAwMDowMDowMi4wOiBbODA4NjowMTYyXSB0eXBlIDAwIGNsYXNzIDB4MDMwMDAwClsg
ICAgMy4zMTkwOThdIHBjaSAwMDAwOjAwOjAyLjA6IHJlZyAweDEwOiBbbWVtIDB4Zjc4MDAwMDAt
MHhmN2JmZmZmZiA2NGJpdF0KWyAgICAzLjMxOTEwOV0gcGNpIDAwMDA6MDA6MDIuMDogcmVnIDB4
MTg6IFttZW0gMHhlMDAwMDAwMC0weGVmZmZmZmZmIDY0Yml0IHByZWZdClsgICAgMy4zMTkxMTdd
IHBjaSAwMDAwOjAwOjAyLjA6IHJlZyAweDIwOiBbaW8gIDB4ZjAwMC0weGYwM2ZdClsgICAgMy4z
MTkyNzRdIHBjaSAwMDAwOjAwOjE0LjA6IFs4MDg2OjFlMzFdIHR5cGUgMDAgY2xhc3MgMHgwYzAz
MzAKWyAgICAzLjMxOTMyOF0gcGNpIDAwMDA6MDA6MTQuMDogcmVnIDB4MTA6IFttZW0gMHhmN2Qw
MDAwMC0weGY3ZDBmZmZmIDY0Yml0XQpbICAgIDMuMzE5NDgyXSBwY2kgMDAwMDowMDoxNC4wOiBQ
TUUjIHN1cHBvcnRlZCBmcm9tIEQzaG90IEQzY29sZApbICAgIDMuMzE5NTIzXSBwY2kgMDAwMDow
MDoxNC4wOiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFDUEkKWyAgICAzLjMxOTYwNV0gcGNp
IDAwMDA6MDA6MTYuMDogWzgwODY6MWUzYV0gdHlwZSAwMCBjbGFzcyAweDA3ODAwMApbICAgIDMu
MzE5NjQ5XSBwY2kgMDAwMDowMDoxNi4wOiByZWcgMHgxMDogW21lbSAweGY3ZDFhMDAwLTB4Zjdk
MWEwMGYgNjRiaXRdClsgICAgMy4zMTk4MDNdIHBjaSAwMDAwOjAwOjE2LjA6IFBNRSMgc3VwcG9y
dGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy4zMTk5MTFdIHBjaSAwMDAwOjAwOjFhLjA6
IFs4MDg2OjFlMmRdIHR5cGUgMDAgY2xhc3MgMHgwYzAzMjAKWyAgICAzLjMxOTk1MF0gcGNpIDAw
MDA6MDA6MWEuMDogcmVnIDB4MTA6IFttZW0gMHhmN2QxODAwMC0weGY3ZDE4M2ZmXQpbICAgIDMu
MzIwMTMwXSBwY2kgMDAwMDowMDoxYS4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQz
Y29sZApbICAgIDMuMzIwMTgzXSBwY2kgMDAwMDowMDoxYS4wOiBTeXN0ZW0gd2FrZXVwIGRpc2Fi
bGVkIGJ5IEFDUEkKWyAgICAzLjMyMDI2NV0gcGNpIDAwMDA6MDA6MWIuMDogWzgwODY6MWUyMF0g
dHlwZSAwMCBjbGFzcyAweDA0MDMwMApbICAgIDMuMzIwMjk4XSBwY2kgMDAwMDowMDoxYi4wOiBy
ZWcgMHgxMDogW21lbSAweGY3ZDEwMDAwLTB4ZjdkMTNmZmYgNjRiaXRdClsgICAgMy4zMjA0NjZd
IHBjaSAwMDAwOjAwOjFiLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsg
ICAgMy4zMjA1MTJdIHBjaSAwMDAwOjAwOjFiLjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkg
QUNQSQpbICAgIDMuMzIwNTkwXSBwY2kgMDAwMDowMDoxYy4wOiBbODA4NjoxZTEwXSB0eXBlIDAx
IGNsYXNzIDB4MDYwNDAwClsgICAgMy4zMjA3NzBdIHBjaSAwMDAwOjAwOjFjLjA6IFBNRSMgc3Vw
cG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy4zMjA4MjVdIHBjaSAwMDAwOjAwOjFj
LjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQSQpbICAgIDMuMzIwOTEyXSBwY2kgMDAw
MDowMDoxYy41OiBbODA4NjoxZTFhXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMy4zMjEw
ODNdIHBjaSAwMDAwOjAwOjFjLjU6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xk
ClsgICAgMy4zMjExMzNdIHBjaSAwMDAwOjAwOjFjLjU6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQg
YnkgQUNQSQpbICAgIDMuMzIxMjE4XSBwY2kgMDAwMDowMDoxZC4wOiBbODA4NjoxZTI2XSB0eXBl
IDAwIGNsYXNzIDB4MGMwMzIwClsgICAgMy4zMjEyNThdIHBjaSAwMDAwOjAwOjFkLjA6IHJlZyAw
eDEwOiBbbWVtIDB4ZjdkMTcwMDAtMHhmN2QxNzNmZl0KWyAgICAzLjMyMTQ0MF0gcGNpIDAwMDA6
MDA6MWQuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjMyMTQ5
Nl0gcGNpIDAwMDA6MDA6MWQuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxlZCBieSBBQ1BJClsgICAg
My4zMjE1NzJdIHBjaSAwMDAwOjAwOjFmLjA6IFs4MDg2OjFlNDZdIHR5cGUgMDAgY2xhc3MgMHgw
NjAxMDAKWyAgICAzLjMyMTgzMV0gcGNpIDAwMDA6MDA6MWYuMjogWzgwODY6MWUwMl0gdHlwZSAw
MCBjbGFzcyAweDAxMDYwMQpbICAgIDMuMzIxODc1XSBwY2kgMDAwMDowMDoxZi4yOiByZWcgMHgx
MDogW2lvICAweGYwYjAtMHhmMGI3XQpbICAgIDMuMzIxODkzXSBwY2kgMDAwMDowMDoxZi4yOiBy
ZWcgMHgxNDogW2lvICAweGYwYTAtMHhmMGEzXQpbICAgIDMuMzIxOTEwXSBwY2kgMDAwMDowMDox
Zi4yOiByZWcgMHgxODogW2lvICAweGYwOTAtMHhmMDk3XQpbICAgIDMuMzIxOTI4XSBwY2kgMDAw
MDowMDoxZi4yOiByZWcgMHgxYzogW2lvICAweGYwODAtMHhmMDgzXQpbICAgIDMuMzIxOTQ2XSBw
Y2kgMDAwMDowMDoxZi4yOiByZWcgMHgyMDogW2lvICAweGYwNjAtMHhmMDdmXQpbICAgIDMuMzIx
OTYzXSBwY2kgMDAwMDowMDoxZi4yOiByZWcgMHgyNDogW21lbSAweGY3ZDE2MDAwLTB4ZjdkMTY3
ZmZdClsgICAgMy4zMjIwNzldIHBjaSAwMDAwOjAwOjFmLjI6IFBNRSMgc3VwcG9ydGVkIGZyb20g
RDNob3QKWyAgICAzLjMyMjE2MF0gcGNpIDAwMDA6MDA6MWYuMzogWzgwODY6MWUyMl0gdHlwZSAw
MCBjbGFzcyAweDBjMDUwMApbICAgIDMuMzIyMTk0XSBwY2kgMDAwMDowMDoxZi4zOiByZWcgMHgx
MDogW21lbSAweGY3ZDE1MDAwLTB4ZjdkMTUwZmYgNjRiaXRdClsgICAgMy4zMjIyNDNdIHBjaSAw
MDAwOjAwOjFmLjM6IHJlZyAweDIwOiBbaW8gIDB4ZjA0MC0weGYwNWZdClsgICAgMy4zMjI0NTNd
IHBjaSAwMDAwOjAwOjFjLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0KWyAgICAzLjMyMjY4Nl0g
cGNpIDAwMDA6MDI6MDAuMDogWzE5Njk6MTA5MV0gdHlwZSAwMCBjbGFzcyAweDAyMDAwMApbICAg
IDMuMzIyNzk1XSBwY2kgMDAwMDowMjowMC4wOiByZWcgMHgxMDogW21lbSAweGY3YzAwMDAwLTB4
ZjdjM2ZmZmYgNjRiaXRdClsgICAgMy4zMjI4NTFdIHBjaSAwMDAwOjAyOjAwLjA6IHJlZyAweDE4
OiBbaW8gIDB4ZTAwMC0weGUwN2ZdClsgICAgMy4zMjM0MTNdIHBjaSAwMDAwOjAyOjAwLjA6IFBN
RSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNob3QgRDNjb2xkClsgICAgMy4zMjM1NDJdIHBj
aSAwMDAwOjAyOjAwLjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQSQpbICAgIDMuMzMx
NTY4XSBwY2kgMDAwMDowMDoxYy41OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDJdClsgICAgMy4zMzE2
MDRdIHBjaSAwMDAwOjAwOjFjLjU6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4ZTAwMC0weGVmZmZd
ClsgICAgMy4zMzE2MTFdIHBjaSAwMDAwOjAwOjFjLjU6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4
ZjdjMDAwMDAtMHhmN2NmZmZmZl0KWyAgICAzLjMzMTY1NF0gYWNwaSBQTlAwQTA4OjAwOiBEaXNh
YmxpbmcgQVNQTSAoRkFEVCBpbmRpY2F0ZXMgaXQgaXMgdW5zdXBwb3J0ZWQpClsgICAgMy4zMzE4
NTVdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQV0gKElSUXMgMyA0IDUgNiAxMCAqMTEg
MTIgMTQgMTUpClsgICAgMy4zMzIwNTVdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQl0g
KElSUXMgKjMgNCA1IDYgMTAgMTEgMTIgMTQgMTUpClsgICAgMy4zMzIyNTFdIEFDUEk6IFBDSSBJ
bnRlcnJ1cHQgTGluayBbTE5LQ10gKElSUXMgMyA0IDUgNiAxMCAqMTEgMTIgMTQgMTUpClsgICAg
My4zMzI0NDZdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LRF0gKElSUXMgMyA0IDUgNiAq
MTAgMTEgMTIgMTQgMTUpClsgICAgMy4zMzI2NDJdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBb
TE5LRV0gKElSUXMgMyA0IDUgNiAxMCAxMSAxMiAxNCAxNSkgKjAsIGRpc2FibGVkLgpbICAgIDMu
MzMyODcyXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0ZdIChJUlFzIDMgNCA1IDYgMTAg
MTEgMTIgMTQgMTUpICowLCBkaXNhYmxlZC4KWyAgICAzLjMzMzExNV0gQUNQSTogUENJIEludGVy
cnVwdCBMaW5rIFtMTktHXSAoSVJRcyAzIDQgKjUgNiAxMCAxMSAxMiAxNCAxNSkKWyAgICAzLjMz
MzMxMV0gQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTktIXSAoSVJRcyAzICo0IDUgNiAxMCAx
MSAxMiAxNCAxNSkKWyAgICAzLjMzMzU2NV0gQUNQSTogRW5hYmxlZCA0IEdQRXMgaW4gYmxvY2sg
MDAgdG8gM0YKWyAgICAzLjMzMzY0NF0geGVuOmJhbGxvb246IEluaXRpYWxpc2luZyBiYWxsb29u
IGRyaXZlcgpbICAgIDMuMzUyNzUyXSB4ZW5fYmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24g
ZHJpdmVyClsgICAgMy4zNTI5NzZdIHZnYWFyYjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAwMDowMDow
Mi4wLGRlY29kZXM9aW8rbWVtLG93bnM9aW8rbWVtLGxvY2tzPW5vbmUKWyAgICAzLjM1MzAyM10g
dmdhYXJiOiBsb2FkZWQKWyAgICAzLjM1MzA0OV0gdmdhYXJiOiBicmlkZ2UgY29udHJvbCBwb3Nz
aWJsZSAwMDAwOjAwOjAyLjAKWyAgICAzLjM1MzIxNF0gU0NTSSBzdWJzeXN0ZW0gaW5pdGlhbGl6
ZWQKWyAgICAzLjM1MzMwNV0gbGliYXRhIHZlcnNpb24gMy4wMCBsb2FkZWQuClsgICAgMy4zNTMz
MjFdIEFDUEk6IGJ1cyB0eXBlIFVTQiByZWdpc3RlcmVkClsgICAgMy4zNTMzNjRdIHVzYmNvcmU6
IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiZnMKWyAgICAzLjM1MzM5OV0gdXNi
Y29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBodWIKWyAgICAzLjM1MzUwN10g
dXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgZGV2aWNlIGRyaXZlciB1c2IKWyAgICAzLjM1MzY3M10g
UENJOiBVc2luZyBBQ1BJIGZvciBJUlEgcm91dGluZwpbICAgIDMuMzU4MTI5XSBQQ0k6IHBjaV9j
YWNoZV9saW5lX3NpemUgc2V0IHRvIDY0IGJ5dGVzClsgICAgMy4zNTgxOTVdIGU4MjA6IHJlc2Vy
dmUgUkFNIGJ1ZmZlciBbbWVtIDB4MDAwOWQwMDAtMHgwMDA5ZmZmZl0KWyAgICAzLjM1ODE5N10g
ZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVyIFttZW0gMHg0MDAwNDAwMC0weDQzZmZmZmZmXQpbICAg
IDMuMzU4MTk4XSBlODIwOiByZXNlcnZlIFJBTSBidWZmZXIgW21lbSAweGQ3ZmU0MDAwLTB4ZDdm
ZmZmZmZdClsgICAgMy4zNTgxOTldIGU4MjA6IHJlc2VydmUgUkFNIGJ1ZmZlciBbbWVtIDB4ZDkz
ZjMwMDAtMHhkYmZmZmZmZl0KWyAgICAzLjM1ODIwMF0gZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVy
IFttZW0gMHhkOTU4ZDAwMC0weGRiZmZmZmZmXQpbICAgIDMuMzU4MjAxXSBlODIwOiByZXNlcnZl
IFJBTSBidWZmZXIgW21lbSAweGQ5YzQwMDAwLTB4ZGJmZmZmZmZdClsgICAgMy4zNTgyMDJdIGU4
MjA6IHJlc2VydmUgUkFNIGJ1ZmZlciBbbWVtIDB4ZGEwMDAwMDAtMHhkYmZmZmZmZl0KWyAgICAz
LjM1ODIwM10gZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVyIFttZW0gMHgzMWZlMDAwMDAtMHgzMWZm
ZmZmZmZdClsgICAgMy4zNTgyNzVdIE5ldExhYmVsOiBJbml0aWFsaXppbmcKWyAgICAzLjM1ODMw
M10gTmV0TGFiZWw6ICBkb21haW4gaGFzaCBzaXplID0gMTI4ClsgICAgMy4zNTgzMzBdIE5ldExh
YmVsOiAgcHJvdG9jb2xzID0gVU5MQUJFTEVEIENJUFNPdjQKWyAgICAzLjM1ODM2N10gTmV0TGFi
ZWw6ICB1bmxhYmVsZWQgdHJhZmZpYyBhbGxvd2VkIGJ5IGRlZmF1bHQKWyAgICAzLjM1ODUzN10g
U3dpdGNoZWQgdG8gY2xvY2tzb3VyY2UgeGVuClsgICAgMy4zNjI2MzJdIEFwcEFybW9yOiBBcHBB
cm1vciBGaWxlc3lzdGVtIEVuYWJsZWQKWyAgICAzLjM2MjY3NF0gcG5wOiBQblAgQUNQSSBpbml0
ClsgICAgMy4zNjI3MDhdIEFDUEk6IGJ1cyB0eXBlIFBOUCByZWdpc3RlcmVkClsgICAgMy4zNjI4
MDFdIHN5c3RlbSAwMDowMDogW21lbSAweGZlZDQwMDAwLTB4ZmVkNDRmZmZdIGhhcyBiZWVuIHJl
c2VydmVkClsgICAgMy4zNjI4MzRdIHN5c3RlbSAwMDowMDogUGx1ZyBhbmQgUGxheSBBQ1BJIGRl
dmljZSwgSURzIFBOUDBjMDEgKGFjdGl2ZSkKWyAgICAzLjM2Mjg0NF0gcG5wIDAwOjAxOiBbZG1h
IDRdClsgICAgMy4zNjI4NTVdIHBucCAwMDowMTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwg
SURzIFBOUDAyMDAgKGFjdGl2ZSkKWyAgICAzLjM2Mjg3MV0gcG5wIDAwOjAyOiBQbHVnIGFuZCBQ
bGF5IEFDUEkgZGV2aWNlLCBJRHMgSU5UMDgwMCAoYWN0aXZlKQpbICAgIDMuMzYyOTM1XSBwbnAg
MDA6MDM6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwMTAzIChhY3RpdmUpClsg
ICAgMy4zNjI5NjFdIHN5c3RlbSAwMDowNDogW2lvICAweDA2ODAtMHgwNjlmXSBoYXMgYmVlbiBy
ZXNlcnZlZApbICAgIDMuMzYyOTkzXSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgxMDAwLTB4MTAwZl0g
aGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzAyM10gc3lzdGVtIDAwOjA0OiBbaW8gIDB4ZmZm
Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzA1M10gc3lzdGVtIDAwOjA0OiBbaW8gIDB4
ZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzA4Ml0gc3lzdGVtIDAwOjA0OiBbaW8g
IDB4MDQwMC0weDA0NTNdIGNvdWxkIG5vdCBiZSByZXNlcnZlZApbICAgIDMuMzYzMTEzXSBzeXN0
ZW0gMDA6MDQ6IFtpbyAgMHgwNDU4LTB4MDQ3Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2
MzE0NF0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MDUwMC0weDA1N2ZdIGhhcyBiZWVuIHJlc2VydmVk
ClsgICAgMy4zNjMxNzRdIHN5c3RlbSAwMDowNDogW2lvICAweDE2NGUtMHgxNjRmXSBoYXMgYmVl
biByZXNlcnZlZApbICAgIDMuMzYzMjA1XSBzeXN0ZW0gMDA6MDQ6IFBsdWcgYW5kIFBsYXkgQUNQ
SSBkZXZpY2UsIElEcyBQTlAwYzAyIChhY3RpdmUpClsgICAgMy4zNjMyMTRdIHhlbjogcmVnaXN0
ZXJpbmcgZ3NpIDggdHJpZ2dlcmluZyAxIHBvbGFyaXR5IDAKWyAgICAzLjM2MzI0N10gcG5wIDAw
OjA1OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGIwMCAoYWN0aXZlKQpbICAg
IDMuMzYzMjc4XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwNDU0LTB4MDQ1N10gaGFzIGJlZW4gcmVz
ZXJ2ZWQKWyAgICAzLjM2MzMwOV0gc3lzdGVtIDAwOjA2OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2
aWNlLCBJRHMgSU5UM2YwZCBQTlAwYzAyIChhY3RpdmUpClsgICAgMy4zNjMzNThdIHN5c3RlbSAw
MDowNzogW2lvICAweDAyOTAtMHgwMjlmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDMuMzYzMzkw
XSBzeXN0ZW0gMDA6MDc6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAyIChh
Y3RpdmUpClsgICAgMy4zNjM0MzVdIHN5c3RlbSAwMDowODogW2lvICAweDA0ZDAtMHgwNGQxXSBo
YXMgYmVlbiByZXNlcnZlZApbICAgIDMuMzYzNDY3XSBzeXN0ZW0gMDA6MDg6IFBsdWcgYW5kIFBs
YXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAyIChhY3RpdmUpClsgICAgMy4zNjM0NzJdIHhlbjog
cmVnaXN0ZXJpbmcgZ3NpIDEzIHRyaWdnZXJpbmcgMSBwb2xhcml0eSAwClsgICAgMy4zNjM1MDBd
IHBucCAwMDowOTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDQgKGFjdGl2
ZSkKWyAgICAzLjM2MzY3MV0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZmVkMWMwMDAtMHhmZWQxZmZm
Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzcwNV0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4
ZmVkMTAwMDAtMHhmZWQxN2ZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzczNl0gc3lz
dGVtIDAwOjBhOiBbbWVtIDB4ZmVkMTgwMDAtMHhmZWQxOGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQK
WyAgICAzLjM2Mzc2N10gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZmVkMTkwMDAtMHhmZWQxOWZmZl0g
aGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2Mzc5OF0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4Zjgw
MDAwMDAtMHhmYmZmZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2MzgzMF0gc3lzdGVt
IDAwOjBhOiBbbWVtIDB4ZmVkMjAwMDAtMHhmZWQzZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAg
ICAzLjM2Mzg2MV0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZmVkOTAwMDAtMHhmZWQ5M2ZmZl0gaGFz
IGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2NTA2MV0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZmVkNDUw
MDAtMHhmZWQ4ZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2NTA5Ml0gc3lzdGVtIDAw
OjBhOiBbbWVtIDB4ZmYwMDAwMDAtMHhmZmZmZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAz
LjM2NTEyNF0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZmVlMDAwMDAtMHhmZWVmZmZmZl0gaGFzIGJl
ZW4gcmVzZXJ2ZWQKWyAgICAzLjM2NTE1NV0gc3lzdGVtIDAwOjBhOiBbbWVtIDB4ZGYyMDAwMDAt
MHhkZjIwMGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAzLjM2NTE4N10gc3lzdGVtIDAwOjBh
OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGMwMiAoYWN0aXZlKQpbICAgIDMu
MzY1MzAzXSBzeXN0ZW0gMDA6MGI6IFttZW0gMHgyMDAwMDAwMC0weDIwMWZmZmZmXSBoYXMgYmVl
biByZXNlcnZlZApbICAgIDMuMzY1MzM1XSBzeXN0ZW0gMDA6MGI6IFttZW0gMHg0MDAwNDAwMC0w
eDQwMDA0ZmZmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDMuMzY1MzY2XSBzeXN0ZW0gMDA6MGI6
IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAxIChhY3RpdmUpClsgICAgMy4z
NjUzODVdIHBucDogUG5QIEFDUEk6IGZvdW5kIDEyIGRldmljZXMKWyAgICAzLjM2NTQxMl0gQUNQ
STogYnVzIHR5cGUgUE5QIHVucmVnaXN0ZXJlZApbICAgIDMuMzcwNjQ2XSBQTS1UaW1lciBmYWls
ZWQgY29uc2lzdGVuY3kgY2hlY2sgICgweGZmZmZmZikgLSBhYm9ydGluZy4KWyAgICAzLjM3MDcx
M10gcGNpIDAwMDA6MDA6MWMuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXQpbICAgIDMuMzcwNzYy
XSBwY2kgMDAwMDowMDoxYy41OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDJdClsgICAgMy4zNzA3OTRd
IHBjaSAwMDAwOjAwOjFjLjU6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4ZTAwMC0weGVmZmZdClsg
ICAgMy4zNzA4MzJdIHBjaSAwMDAwOjAwOjFjLjU6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Zjdj
MDAwMDAtMHhmN2NmZmZmZl0KWyAgICAzLjM3MDg3Nl0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJj
ZSA0IFtpbyAgMHgwMDAwLTB4MGNmN10KWyAgICAzLjM3MDg3OF0gcGNpX2J1cyAwMDAwOjAwOiBy
ZXNvdXJjZSA1IFtpbyAgMHgwZDAwLTB4ZmZmZl0KWyAgICAzLjM3MDg3OV0gcGNpX2J1cyAwMDAw
OjAwOiByZXNvdXJjZSA2IFttZW0gMHgwMDBhMDAwMC0weDAwMGJmZmZmXQpbICAgIDMuMzcwODgw
XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDcgW21lbSAweDAwMGQwMDAwLTB4MDAwZDNmZmZd
ClsgICAgMy4zNzA4ODFdIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgOCBbbWVtIDB4MDAwZDQw
MDAtMHgwMDBkN2ZmZl0KWyAgICAzLjM3MDg4Ml0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA5
IFttZW0gMHgwMDBkODAwMC0weDAwMGRiZmZmXQpbICAgIDMuMzcwODgzXSBwY2lfYnVzIDAwMDA6
MDA6IHJlc291cmNlIDEwIFttZW0gMHgwMDBkYzAwMC0weDAwMGRmZmZmXQpbICAgIDMuMzcwODg1
XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDExIFttZW0gMHgwMDBlMDAwMC0weDAwMGUzZmZm
XQpbICAgIDMuMzcwODg2XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDEyIFttZW0gMHgwMDBl
NDAwMC0weDAwMGU3ZmZmXQpbICAgIDMuMzcwODg3XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNl
IDEzIFttZW0gMHhkZjIwMDAwMC0weGZlYWZmZmZmXQpbICAgIDMuMzcwODg4XSBwY2lfYnVzIDAw
MDA6MDI6IHJlc291cmNlIDAgW2lvICAweGUwMDAtMHhlZmZmXQpbICAgIDMuMzcwODg5XSBwY2lf
YnVzIDAwMDA6MDI6IHJlc291cmNlIDEgW21lbSAweGY3YzAwMDAwLTB4ZjdjZmZmZmZdClsgICAg
My4zNzA5MDddIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMgpbICAgIDMuMzcxMTYx
XSBUQ1AgZXN0YWJsaXNoZWQgaGFzaCB0YWJsZSBlbnRyaWVzOiAxMzEwNzIgKG9yZGVyOiA4LCAx
MDQ4NTc2IGJ5dGVzKQpbICAgIDMuMzcxNDc1XSBUQ1AgYmluZCBoYXNoIHRhYmxlIGVudHJpZXM6
IDY1NTM2IChvcmRlcjogOCwgMTA0ODU3NiBieXRlcykKWyAgICAzLjM3MTY3Nl0gVENQOiBIYXNo
IHRhYmxlcyBjb25maWd1cmVkIChlc3RhYmxpc2hlZCAxMzEwNzIgYmluZCA2NTUzNikKWyAgICAz
LjM3MTcyMV0gVENQOiByZW5vIHJlZ2lzdGVyZWQKWyAgICAzLjM3MTc3NF0gVURQIGhhc2ggdGFi
bGUgZW50cmllczogODE5MiAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykKWyAgICAzLjM3MTg3M10g
VURQLUxpdGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA4MTkyIChvcmRlcjogNiwgMjYyMTQ0IGJ5dGVz
KQpbICAgIDMuMzcxOTgwXSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDEKWyAgICAz
LjM3MjAxN10gcGNpIDAwMDA6MDA6MDIuMDogQm9vdCB2aWRlbyBkZXZpY2UKWyAgICAzLjM3MjA3
N10geGVuOiByZWdpc3RlcmluZyBnc2kgMTYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICAz
LjM3MjA4OF0geGVuOiAtLT4gcGlycT0xNiAtPiBpcnE9MTYgKGdzaT0xNikKWyAgICAzLjM3MjI1
OV0geGVuOiByZWdpc3RlcmluZyBnc2kgMTYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICAz
LjM3MjI2MF0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNgpbICAgIDMuMzkwNzQ0XSB4ZW46IHJl
Z2lzdGVyaW5nIGdzaSAyMyB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDMuMzkwNzUwXSB4
ZW46IC0tPiBwaXJxPTIzIC0+IGlycT0yMyAoZ3NpPTIzKQpbICAgIDMuNDEwNzQ5XSBwY2kgMDAw
MDowMjowMC4wOiBzZXQgTVNJX0lOVFhfRElTQUJMRV9CVUcgZmxhZwpbICAgIDMuNDEwNzg1XSBQ
Q0k6IENMUyA2NCBieXRlcywgZGVmYXVsdCA2NApbICAgIDMuNDEwODI0XSBUcnlpbmcgdG8gdW5w
YWNrIHJvb3RmcyBpbWFnZSBhcyBpbml0cmFtZnMuLi4KWyAgICAzLjcyNDAyOF0gRnJlZWluZyBp
bml0cmQgbWVtb3J5OiAyNzQ4NEsgKGZmZmY4ODAwMDIzZmIwMDAgLSBmZmZmODgwMDAzZWQyMDAw
KQpbICAgIDMuNzI0NTQwXSBSQVBMIFBNVSBkZXRlY3RlZCwgaHcgdW5pdCAyXi0xNiBKb3VsZXMs
IEFQSSB1bml0IGlzIDJeLTMyIEpvdWxlcywgMyBmaXhlZCBjb3VudGVycyAxNjM4NDAgbXMgb3Zm
bCB0aW1lcgpbICAgIDMuNzI0NjExXSBTY2FubmluZyBmb3IgbG93IG1lbW9yeSBjb3JydXB0aW9u
IGV2ZXJ5IDYwIHNlY29uZHMKWyAgICAzLjcyNTExN10gZnV0ZXggaGFzaCB0YWJsZSBlbnRyaWVz
OiAyMDQ4IChvcmRlcjogNSwgMTMxMDcyIGJ5dGVzKQpbICAgIDMuNzI1MTcxXSBJbml0aWFsaXNl
IHN5c3RlbSB0cnVzdGVkIGtleXJpbmcKWyAgICAzLjcyNTIyOV0gYXVkaXQ6IGluaXRpYWxpemlu
ZyBuZXRsaW5rIHN1YnN5cyAoZGlzYWJsZWQpClsgICAgMy43MjUyNjldIGF1ZGl0OiB0eXBlPTIw
MDAgYXVkaXQoMTQxMDcyMDUxMy43MTI6MSk6IGluaXRpYWxpemVkClsgICAgMy43NDUxOTVdIEh1
Z2VUTEIgcmVnaXN0ZXJlZCAyIE1CIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9jYXRlZCAwIHBhZ2VzClsg
ICAgMy43NDYxMDZdIHpidWQ6IGxvYWRlZApbICAgIDMuNzQ2MzYwXSBWRlM6IERpc2sgcXVvdGFz
IGRxdW90XzYuNS4yClsgICAgMy43NDY0MjRdIERxdW90LWNhY2hlIGhhc2ggdGFibGUgZW50cmll
czogNTEyIChvcmRlciAwLCA0MDk2IGJ5dGVzKQpbICAgIDMuNzQ2OTQxXSBmdXNlIGluaXQgKEFQ
SSB2ZXJzaW9uIDcuMjIpClsgICAgMy43NDcwNjddIG1zZ21uaSBoYXMgYmVlbiBzZXQgdG8gMTA1
ODIKWyAgICAzLjc0NzEzNF0gS2V5IHR5cGUgYmlnX2tleSByZWdpc3RlcmVkClsgICAgMy43NDc2
NTRdIEtleSB0eXBlIGFzeW1tZXRyaWMgcmVnaXN0ZXJlZApbICAgIDMuNzQ3Njg0XSBBc3ltbWV0
cmljIGtleSBwYXJzZXIgJ3g1MDknIHJlZ2lzdGVyZWQKWyAgICAzLjc0NzczNl0gQmxvY2sgbGF5
ZXIgU0NTSSBnZW5lcmljIChic2cpIGRyaXZlciB2ZXJzaW9uIDAuNCBsb2FkZWQgKG1ham9yIDI1
MikKWyAgICAzLjc0NzgyMF0gaW8gc2NoZWR1bGVyIG5vb3AgcmVnaXN0ZXJlZApbICAgIDMuNzQ3
ODQ5XSBpbyBzY2hlZHVsZXIgZGVhZGxpbmUgcmVnaXN0ZXJlZCAoZGVmYXVsdCkKWyAgICAzLjc0
Nzg5N10gaW8gc2NoZWR1bGVyIGNmcSByZWdpc3RlcmVkClsgICAgMy43NDgwNDRdIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDE2IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgMy43NDgwNDhdIEFs
cmVhZHkgc2V0dXAgdGhlIEdTSSA6MTYKWyAgICAzLjc0ODIxNl0geGVuOiByZWdpc3RlcmluZyBn
c2kgMTcgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICAzLjc0ODIyNl0geGVuOiAtLT4gcGly
cT0xNyAtPiBpcnE9MTcgKGdzaT0xNykKWyAgICAzLjc0ODM0OV0gcGNpX2hvdHBsdWc6IFBDSSBI
b3QgUGx1ZyBQQ0kgQ29yZSB2ZXJzaW9uOiAwLjUKWyAgICAzLjc0ODM4OF0gcGNpZWhwOiBQQ0kg
RXhwcmVzcyBIb3QgUGx1ZyBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAwLjQKWyAgICAzLjc0
ODQ1MF0gaW50ZWxfaWRsZTogTVdBSVQgc3Vic3RhdGVzOiAweDExMjAKWyAgICAzLjc0ODQ1MV0g
aW50ZWxfaWRsZTogdjAuNCBtb2RlbCAweDNBClsgICAgMy43NDg0NTJdIGludGVsX2lkbGU6IGxh
cGljX3RpbWVyX3JlbGlhYmxlX3N0YXRlcyAweGZmZmZmZmZmClsgICAgMy43NDg0NjldIGludGVs
X2lkbGU6IGludGVsX2lkbGUgeWllbGRpbmcgdG8gbm9uZQpbICAgIDMuNzQ4NTI1XSBpbnB1dDog
UG93ZXIgQnV0dG9uIGFzIC9kZXZpY2VzL0xOWFNZU1RNOjAwL2RldmljZTowMC9QTlAwQzBDOjAw
L2lucHV0L2lucHV0MApbICAgIDMuNzQ4NTcxXSBBQ1BJOiBQb3dlciBCdXR0b24gW1BXUkJdClsg
ICAgMy43NDg2MjRdIGlucHV0OiBQb3dlciBCdXR0b24gYXMgL2RldmljZXMvTE5YU1lTVE06MDAv
TE5YUFdSQk46MDAvaW5wdXQvaW5wdXQxClsgICAgMy43NDg2NjddIEFDUEk6IFBvd2VyIEJ1dHRv
biBbUFdSRl0KWyAgICAzLjc0ODc0MV0gQUNQSTogRmFuIFtGQU4wXSAob2ZmKQpbICAgIDMuNzQ4
Nzg4XSBBQ1BJOiBGYW4gW0ZBTjFdIChvZmYpClsgICAgMy43NDg4MzNdIEFDUEk6IEZhbiBbRkFO
Ml0gKG9mZikKWyAgICAzLjc0ODg3OF0gQUNQSTogRmFuIFtGQU4zXSAob2ZmKQpbICAgIDMuNzQ4
OTI0XSBBQ1BJOiBGYW4gW0ZBTjRdIChvZmYpClsgICAgMy43NTQ3NzNdIE1vbml0b3ItTXdhaXQg
d2lsbCBiZSB1c2VkIHRvIGVudGVyIEMtMSBzdGF0ZQpbICAgIDMuNzU0NzkwXSBNb25pdG9yLU13
YWl0IHdpbGwgYmUgdXNlZCB0byBlbnRlciBDLTIgc3RhdGUKWyAgICAzLjc1NDgwNF0gTW9uaXRv
ci1Nd2FpdCB3aWxsIGJlIHVzZWQgdG8gZW50ZXIgQy0zIHN0YXRlClsgICAgMy43NTYyOTJdIFdh
cm5pbmc6IFByb2Nlc3NvciBQbGF0Zm9ybSBMaW1pdCBub3Qgc3VwcG9ydGVkLgpbICAgIDMuNzYy
ODcyXSB0aGVybWFsIExOWFRIRVJNOjAwOiByZWdpc3RlcmVkIGFzIHRoZXJtYWxfem9uZTAKWyAg
ICAzLjc2MjkwNF0gQUNQSTogVGhlcm1hbCBab25lIFtUWjAwXSAoMjggQykKWyAgICAzLjc2MzA3
Ml0gdGhlcm1hbCBMTlhUSEVSTTowMTogcmVnaXN0ZXJlZCBhcyB0aGVybWFsX3pvbmUxClsgICAg
My43NjMxMDNdIEFDUEk6IFRoZXJtYWwgWm9uZSBbVFowMV0gKDMwIEMpClsgICAgMy43NjMxNDld
IEdIRVM6IEhFU1QgaXMgbm90IGVuYWJsZWQhClsgICAgMy43NjM3ODldIHhlbl9hY3BpX3Byb2Nl
c3NvcjogVXBsb2FkaW5nIFhlbiBwcm9jZXNzb3IgUE0gaW5mbwpbICAgIDMuNzY0Nzg2XSBTZXJp
YWw6IDgyNTAvMTY1NTAgZHJpdmVyLCAzMiBwb3J0cywgSVJRIHNoYXJpbmcgZW5hYmxlZApbICAg
IDMuNzY2MTE4XSBocGV0X2FjcGlfYWRkOiBubyBhZGRyZXNzIG9yIGlycXMgaW4gX0NSUwpbICAg
IDMuNzY2MTU4XSBMaW51eCBhZ3BnYXJ0IGludGVyZmFjZSB2MC4xMDMKWyAgICAzLjc2NzIyM10g
YnJkOiBtb2R1bGUgbG9hZGVkClsgICAgMy43Njc3ODNdIGxvb3A6IG1vZHVsZSBsb2FkZWQKWyAg
ICAzLjc2ODA2OF0gbGlicGh5OiBGaXhlZCBNRElPIEJ1czogcHJvYmVkClsgICAgMy43NjgxNTZd
IHR1bjogVW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciwgMS42ClsgICAgMy43NjgxODZd
IHR1bjogKEMpIDE5OTktMjAwNCBNYXggS3Jhc255YW5za3kgPG1heGtAcXVhbGNvbW0uY29tPgpb
ICAgIDMuNzY4MjUwXSBQUFAgZ2VuZXJpYyBkcml2ZXIgdmVyc2lvbiAyLjQuMgpbICAgIDMuNzY4
MzA5XSB4ZW5fbmV0ZnJvbnQ6IEluaXRpYWxpc2luZyBYZW4gdmlydHVhbCBldGhlcm5ldCBkcml2
ZXIKWyAgICAzLjc2ODM0OF0gZWhjaV9oY2Q6IFVTQiAyLjAgJ0VuaGFuY2VkJyBIb3N0IENvbnRy
b2xsZXIgKEVIQ0kpIERyaXZlcgpbICAgIDMuNzY4MzgyXSBlaGNpLXBjaTogRUhDSSBQQ0kgcGxh
dGZvcm0gZHJpdmVyClsgICAgMy43Njg0NjVdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE2IHRyaWdn
ZXJpbmcgMCBwb2xhcml0eSAxClsgICAgMy43Njg0NjhdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6
MTYKWyAgICAzLjc2ODUyNV0gZWhjaS1wY2kgMDAwMDowMDoxYS4wOiBFSENJIEhvc3QgQ29udHJv
bGxlcgpbICAgIDMuNzY4NTU5XSBlaGNpLXBjaSAwMDAwOjAwOjFhLjA6IG5ldyBVU0IgYnVzIHJl
Z2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMQpbICAgIDMuNzY4NjE5XSBlaGNpLXBjaSAw
MDAwOjAwOjFhLjA6IGRlYnVnIHBvcnQgMgpbICAgIDMuNzcyNTY1XSBlaGNpLXBjaSAwMDAwOjAw
OjFhLjA6IGNhY2hlIGxpbmUgc2l6ZSBvZiA2NCBpcyBub3Qgc3VwcG9ydGVkClsgICAgMy43NzI2
MDRdIGVoY2ktcGNpIDAwMDA6MDA6MWEuMDogaXJxIDE2LCBpbyBtZW0gMHhmN2QxODAwMApbICAg
IDMuNzgyNTk4XSBlaGNpLXBjaSAwMDAwOjAwOjFhLjA6IFVTQiAyLjAgc3RhcnRlZCwgRUhDSSAx
LjAwClsgICAgMy43ODI2NzFdIHVzYiB1c2IxOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5k
b3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIKWyAgICAzLjc4MjcxMF0gdXNiIHVzYjE6IE5ldyBVU0Ig
ZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAgMy43
ODI3NDldIHVzYiB1c2IxOiBQcm9kdWN0OiBFSENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDMuNzgy
Nzc2XSB1c2IgdXNiMTogTWFudWZhY3R1cmVyOiBMaW51eCAzLjE0LjEtMDMxNDAxLWdlbmVyaWMg
ZWhjaV9oY2QKWyAgICAzLjc4MjgwNl0gdXNiIHVzYjE6IFNlcmlhbE51bWJlcjogMDAwMDowMDox
YS4wClsgICAgMy43ODI5OTNdIGh1YiAxLTA6MS4wOiBVU0IgaHViIGZvdW5kClsgICAgMy43ODMw
MjhdIGh1YiAxLTA6MS4wOiAyIHBvcnRzIGRldGVjdGVkClsgICAgMy43ODMxNzhdIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDIzIHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgMy43ODMxODBdIEFs
cmVhZHkgc2V0dXAgdGhlIEdTSSA6MjMKWyAgICAzLjc4MzIyN10gZWhjaS1wY2kgMDAwMDowMDox
ZC4wOiBFSENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDMuNzgzMjU3XSBlaGNpLXBjaSAwMDAwOjAw
OjFkLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMgpbICAg
IDMuNzgzMzEzXSBlaGNpLXBjaSAwMDAwOjAwOjFkLjA6IGRlYnVnIHBvcnQgMgpbICAgIDMuNzg3
MjczXSBlaGNpLXBjaSAwMDAwOjAwOjFkLjA6IGNhY2hlIGxpbmUgc2l6ZSBvZiA2NCBpcyBub3Qg
c3VwcG9ydGVkClsgICAgMy43ODczMDhdIGVoY2ktcGNpIDAwMDA6MDA6MWQuMDogaXJxIDIzLCBp
byBtZW0gMHhmN2QxNzAwMApbICAgIDMuNzk4NjMxXSBlaGNpLXBjaSAwMDAwOjAwOjFkLjA6IFVT
QiAyLjAgc3RhcnRlZCwgRUhDSSAxLjAwClsgICAgMy43OTg3MzldIHVzYiB1c2IyOiBOZXcgVVNC
IGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIKWyAgICAzLjc5ODc3
OF0gdXNiIHVzYjI6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNl
cmlhbE51bWJlcj0xClsgICAgMy43OTg4MThdIHVzYiB1c2IyOiBQcm9kdWN0OiBFSENJIEhvc3Qg
Q29udHJvbGxlcgpbICAgIDMuNzk4ODQ1XSB1c2IgdXNiMjogTWFudWZhY3R1cmVyOiBMaW51eCAz
LjE0LjEtMDMxNDAxLWdlbmVyaWMgZWhjaV9oY2QKWyAgICAzLjc5ODg3NF0gdXNiIHVzYjI6IFNl
cmlhbE51bWJlcjogMDAwMDowMDoxZC4wClsgICAgMy43OTkwNTRdIGh1YiAyLTA6MS4wOiBVU0Ig
aHViIGZvdW5kClsgICAgMy43OTkwODddIGh1YiAyLTA6MS4wOiAyIHBvcnRzIGRldGVjdGVkClsg
ICAgMy43OTkxOTNdIGVoY2ktcGxhdGZvcm06IEVIQ0kgZ2VuZXJpYyBwbGF0Zm9ybSBkcml2ZXIK
WyAgICAzLjc5OTIyNl0gb2hjaV9oY2Q6IFVTQiAxLjEgJ09wZW4nIEhvc3QgQ29udHJvbGxlciAo
T0hDSSkgRHJpdmVyClsgICAgMy43OTkyNTddIG9oY2ktcGNpOiBPSENJIFBDSSBwbGF0Zm9ybSBk
cml2ZXIKWyAgICAzLjc5OTI4OF0gb2hjaS1wbGF0Zm9ybTogT0hDSSBnZW5lcmljIHBsYXRmb3Jt
IGRyaXZlcgpbICAgIDMuNzk5MzE4XSB1aGNpX2hjZDogVVNCIFVuaXZlcnNhbCBIb3N0IENvbnRy
b2xsZXIgSW50ZXJmYWNlIGRyaXZlcgpbICAgIDMuNzk5NDAxXSB4ZW46IHJlZ2lzdGVyaW5nIGdz
aSAxNiB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDMuNzk5NDAzXSBBbHJlYWR5IHNldHVw
IHRoZSBHU0kgOjE2ClsgICAgMy43OTk0NTddIHhoY2lfaGNkIDAwMDA6MDA6MTQuMDogeEhDSSBI
b3N0IENvbnRyb2xsZXIKWyAgICAzLjc5OTQ4N10geGhjaV9oY2QgMDAwMDowMDoxNC4wOiBuZXcg
VVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDMKWyAgICAzLjc5OTYxOF0g
eGhjaV9oY2QgMDAwMDowMDoxNC4wOiBjYWNoZSBsaW5lIHNpemUgb2YgNjQgaXMgbm90IHN1cHBv
cnRlZApbICAgIDMuNzk5NzIyXSB1c2IgdXNiMzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVu
ZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAyClsgICAgMy43OTk3NTNdIHVzYiB1c2IzOiBOZXcgVVNC
IGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQpbICAgIDMu
Nzk5NzkyXSB1c2IgdXNiMzogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICAzLjc5
OTgxOV0gdXNiIHVzYjM6IE1hbnVmYWN0dXJlcjogTGludXggMy4xNC4xLTAzMTQwMS1nZW5lcmlj
IHhoY2lfaGNkClsgICAgMy43OTk4NDhdIHVzYiB1c2IzOiBTZXJpYWxOdW1iZXI6IDAwMDA6MDA6
MTQuMApbICAgIDMuODAwMDQ0XSBodWIgMy0wOjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDMuODAw
MDg0XSBodWIgMy0wOjEuMDogNCBwb3J0cyBkZXRlY3RlZApbICAgIDMuODAwMzMyXSB4aGNpX2hj
ZCAwMDAwOjAwOjE0LjA6IHhIQ0kgSG9zdCBDb250cm9sbGVyClsgICAgMy44MDAzNjFdIHhoY2lf
aGNkIDAwMDA6MDA6MTQuMDogbmV3IFVTQiBidXMgcmVnaXN0ZXJlZCwgYXNzaWduZWQgYnVzIG51
bWJlciA0ClsgICAgMy44MDA0MzJdIHVzYiB1c2I0OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRW
ZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDMKWyAgICAzLjgwMDQ2Ml0gdXNiIHVzYjQ6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAg
My44MDA1MDFdIHVzYiB1c2I0OiBQcm9kdWN0OiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDMu
ODAwNTI4XSB1c2IgdXNiNDogTWFudWZhY3R1cmVyOiBMaW51eCAzLjE0LjEtMDMxNDAxLWdlbmVy
aWMgeGhjaV9oY2QKWyAgICAzLjgwMDU1N10gdXNiIHVzYjQ6IFNlcmlhbE51bWJlcjogMDAwMDow
MDoxNC4wClsgICAgMy44MDA3NzJdIGh1YiA0LTA6MS4wOiBVU0IgaHViIGZvdW5kClsgICAgMy44
MDA4NDFdIGh1YiA0LTA6MS4wOiA0IHBvcnRzIGRldGVjdGVkClsgICAgMy44MDEzODJdIGk4MDQy
OiBQTlA6IE5vIFBTLzIgY29udHJvbGxlciBmb3VuZC4gUHJvYmluZyBwb3J0cyBkaXJlY3RseS4K
WyAgICAzLjgwMjA4Ml0gc2VyaW86IGk4MDQyIEtCRCBwb3J0IGF0IDB4NjAsMHg2NCBpcnEgMQpb
ICAgIDMuODAyMTQyXSBzZXJpbzogaTgwNDIgQVVYIHBvcnQgYXQgMHg2MCwweDY0IGlycSAxMgpb
ICAgIDMuODAyNTQ2XSBtb3VzZWRldjogUFMvMiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwg
bWljZQpbICAgIDMuODAzMDg3XSBydGNfY21vcyAwMDowNTogUlRDIGNhbiB3YWtlIGZyb20gUzQK
WyAgICAzLjgwMzM1NF0gcnRjX2Ntb3MgMDA6MDU6IHJ0YyBjb3JlOiByZWdpc3RlcmVkIHJ0Y19j
bW9zIGFzIHJ0YzAKWyAgICAzLjgwMzQ3NF0gcnRjX2Ntb3MgMDA6MDU6IGFsYXJtcyB1cCB0byBv
bmUgbW9udGgsIHkzaywgMjQyIGJ5dGVzIG52cmFtClsgICAgMy44MDM2MTJdIGRldmljZS1tYXBw
ZXI6IHVldmVudDogdmVyc2lvbiAxLjAuMwpbICAgIDMuODAzNzc3XSBkZXZpY2UtbWFwcGVyOiBp
b2N0bDogNC4yNy4wLWlvY3RsICgyMDEzLTEwLTMwKSBpbml0aWFsaXNlZDogZG0tZGV2ZWxAcmVk
aGF0LmNvbQpbICAgIDMuODAzODUyXSBsZWR0cmlnLWNwdTogcmVnaXN0ZXJlZCB0byBpbmRpY2F0
ZSBhY3Rpdml0eSBvbiBDUFVzClsgICAgMy44MDQwMjddIFRDUDogY3ViaWMgcmVnaXN0ZXJlZApb
ICAgIDMuODA0MTk5XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDEwClsgICAgMy44
MDQ1NjldIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTcKWyAgICAzLjgwNDYyN10g
S2V5IHR5cGUgZG5zX3Jlc29sdmVyIHJlZ2lzdGVyZWQKWyAgICAzLjgwNTA3N10gTG9hZGluZyBj
b21waWxlZC1pbiBYLjUwOSBjZXJ0aWZpY2F0ZXMKWyAgICAzLjgwNjI1MV0gTG9hZGVkIFguNTA5
IGNlcnQgJ01hZ3JhdGhlYTogR2xhY2llciBzaWduaW5nIGtleTogMWMwZjMyZTZmYTI0YzJkOGVl
MjY1N2YyZmZlMDkwYjU1MzcyMDRhNicKWyAgICAzLjgwNjMzMl0gcmVnaXN0ZXJlZCB0YXNrc3Rh
dHMgdmVyc2lvbiAxClsgICAgMy44MDk3OThdIEtleSB0eXBlIHRydXN0ZWQgcmVnaXN0ZXJlZApb
ICAgIDMuODEyOTY2XSBLZXkgdHlwZSBlbmNyeXB0ZWQgcmVnaXN0ZXJlZApbICAgIDMuODE2MDM3
XSBBcHBBcm1vcjogQXBwQXJtb3Igc2hhMSBwb2xpY3kgaGFzaGluZyBlbmFibGVkClsgICAgMy44
MTYwNjddIElNQTogTm8gVFBNIGNoaXAgZm91bmQsIGFjdGl2YXRpbmcgVFBNLWJ5cGFzcyEKWyAg
ICAzLjgxNjM4N10gcmVndWxhdG9yLWR1bW15OiBkaXNhYmxpbmcKWyAgICAzLjgxNjQ2MV0gICBN
YWdpYyBudW1iZXI6IDE0Ojc2Njo4NDcKWyAgICAzLjgxNjU4Ml0gcnRjX2Ntb3MgMDA6MDU6IHNl
dHRpbmcgc3lzdGVtIGNsb2NrIHRvIDIwMTQtMDktMTQgMTg6NDg6MzIgVVRDICgxNDEwNzIwNTEy
KQpbICAgIDMuODE2NzI0XSBCSU9TIEVERCBmYWNpbGl0eSB2MC4xNiAyMDA0LUp1bi0yNSwgMiBk
ZXZpY2VzIGZvdW5kClsgICAgMy44MTY4MTldIFBNOiBIaWJlcm5hdGlvbiBpbWFnZSBub3QgcHJl
c2VudCBvciBjb3VsZCBub3QgYmUgbG9hZGVkLgpbICAgIDMuODE3MTcxXSBGcmVlaW5nIHVudXNl
ZCBrZXJuZWwgbWVtb3J5OiAxMzU2SyAoZmZmZmZmZmY4MWQxNzAwMCAtIGZmZmZmZmZmODFlNmEw
MDApClsgICAgMy44MTcyMTNdIFdyaXRlIHByb3RlY3RpbmcgdGhlIGtlcm5lbCByZWFkLW9ubHkg
ZGF0YTogMTIyODhrClsgICAgMy44MTkzOTFdIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6
IDU0MEsgKGZmZmY4ODAwMDE3NzkwMDAgLSBmZmZmODgwMDAxODAwMDAwKQpbICAgIDMuODE5NTg2
XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA1MDRLIChmZmZmODgwMDAxYjgyMDAwIC0g
ZmZmZjg4MDAwMWMwMDAwMCkKWyAgICAzLjg3MTY0MV0gc3lzdGVtZC11ZGV2ZFsxNTJdOiBzdGFy
dGluZyB2ZXJzaW9uIDIwNApbICAgIDMuOTEzNTE0XSB3bWk6IE1hcHBlciBsb2FkZWQKWyAgICAz
LjkxNzA4MF0geGVuOiByZWdpc3RlcmluZyBnc2kgMTcgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEK
WyAgICAzLjkxNzA4NV0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNwpbICAgIDMuOTE3ODgyXSBh
aGNpIDAwMDA6MDA6MWYuMjogdmVyc2lvbiAzLjAKWyAgICAzLjkxNzk0OF0geGVuOiByZWdpc3Rl
cmluZyBnc2kgMTkgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICAzLjkxNzk2MF0geGVuOiAt
LT4gcGlycT0xOSAtPiBpcnE9MTkgKGdzaT0xOSkKWyAgICAzLjkxODk1NV0gW2RybV0gSW5pdGlh
bGl6ZWQgZHJtIDEuMS4wIDIwMDYwODEwClsgICAgMy45Mjc1MDhdIGFseCAwMDAwOjAyOjAwLjAg
ZXRoMDogUXVhbGNvbW0gQXRoZXJvcyBBUjgxNngvQVI4MTd4IEV0aGVybmV0IFs0Yzo3MjpiOTow
Mjo4MzplNl0KWyAgICAzLjkzMDY2M10gYWhjaSAwMDAwOjAwOjFmLjI6IEFIQ0kgMDAwMS4wMzAw
IDMyIHNsb3RzIDYgcG9ydHMgNiBHYnBzIDB4M2YgaW1wbCBTQVRBIG1vZGUKWyAgICAzLjkzMDcx
N10gYWhjaSAwMDAwOjAwOjFmLjI6IGZsYWdzOiA2NGJpdCBuY3EgcG0gbGVkIGNsbyBwaW8gc2x1
bSBwYXJ0IGVtcyBhcHN0IApbICAgIDMuOTcxMjc2XSBzY3NpMCA6IGFoY2kKWyAgICAzLjk3MTQ3
OF0gc2NzaTEgOiBhaGNpClsgICAgMy45NzE2MzldIHNjc2kyIDogYWhjaQpbICAgIDMuOTcxNzc5
XSBzY3NpMyA6IGFoY2kKWyAgICAzLjk3MTkxMF0gc2NzaTQgOiBhaGNpClsgICAgMy45NzIwNDBd
IHNjc2k1IDogYWhjaQpbICAgIDMuOTcyMTEzXSBhdGExOiBTQVRBIG1heCBVRE1BLzEzMyBhYmFy
IG0yMDQ4QDB4ZjdkMTYwMDAgcG9ydCAweGY3ZDE2MTAwIGlycSAxMDEKWyAgICAzLjk3MjE2MF0g
YXRhMjogU0FUQSBtYXggVURNQS8xMzMgYWJhciBtMjA0OEAweGY3ZDE2MDAwIHBvcnQgMHhmN2Qx
NjE4MCBpcnEgMTAxClsgICAgMy45NzIyMDJdIGF0YTM6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIg
bTIwNDhAMHhmN2QxNjAwMCBwb3J0IDB4ZjdkMTYyMDAgaXJxIDEwMQpbICAgIDMuOTcyMjQ0XSBh
dGE0OiBTQVRBIG1heCBVRE1BLzEzMyBhYmFyIG0yMDQ4QDB4ZjdkMTYwMDAgcG9ydCAweGY3ZDE2
MjgwIGlycSAxMDEKWyAgICAzLjk3MjI4Nl0gYXRhNTogU0FUQSBtYXggVURNQS8xMzMgYWJhciBt
MjA0OEAweGY3ZDE2MDAwIHBvcnQgMHhmN2QxNjMwMCBpcnEgMTAxClsgICAgMy45NzIzMjhdIGF0
YTY6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTIwNDhAMHhmN2QxNjAwMCBwb3J0IDB4ZjdkMTYz
ODAgaXJxIDEwMQpbICAgIDMuOTcyNTYxXSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNiB0cmlnZ2Vy
aW5nIDAgcG9sYXJpdHkgMQpbICAgIDMuOTcyNTcwXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE2
ClsgICAgMy45NzQ2NjZdIFtkcm1dIE1lbW9yeSB1c2FibGUgYnkgZ3JhcGhpY3MgZGV2aWNlID0g
MjA0OE0KWyAgICA0LjA0MDEzNF0gRmFpbGVkIHRvIGFkZCBXQyBNVFJSIGZvciBbMDAwMDAwMDBl
MDAwMDAwMC0wMDAwMDAwMGVmZmZmZmZmXTsgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4KWyAgICA0
LjA2MjczNl0gW2RybV0gU3VwcG9ydHMgdmJsYW5rIHRpbWVzdGFtcCBjYWNoaW5nIFJldiAyICgy
MS4xMC4yMDEzKS4KWyAgICA0LjA2MjgyOV0gW2RybV0gRHJpdmVyIHN1cHBvcnRzIHByZWNpc2Ug
dmJsYW5rIHRpbWVzdGFtcCBxdWVyeS4KWyAgICA0LjA2MzAwM10gdmdhYXJiOiBkZXZpY2UgY2hh
bmdlZCBkZWNvZGVzOiBQQ0k6MDAwMDowMDowMi4wLG9sZGRlY29kZXM9aW8rbWVtLGRlY29kZXM9
aW8rbWVtOm93bnM9aW8rbWVtClsgICAgNC4wOTQ3MDhdIHVzYiAxLTE6IG5ldyBoaWdoLXNwZWVk
IFVTQiBkZXZpY2UgbnVtYmVyIDIgdXNpbmcgZWhjaS1wY2kKWyAgICA0LjIyNjk2NV0gdXNiIDEt
MTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTgwODcsIGlkUHJvZHVjdD0wMDI0Clsg
ICAgNC4yMjY5OThdIHVzYiAxLTE6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0wLCBQcm9k
dWN0PTAsIFNlcmlhbE51bWJlcj0wClsgICAgNC4yMjczNzFdIGh1YiAxLTE6MS4wOiBVU0IgaHVi
IGZvdW5kClsgICAgNC4yMjc1NjddIGh1YiAxLTE6MS4wOiA2IHBvcnRzIGRldGVjdGVkClsgICAg
NC4yOTA2MTJdIGF0YTQ6IFNBVEEgbGluayBkb3duIChTU3RhdHVzIDQgU0NvbnRyb2wgMzAwKQpb
ICAgIDQuMjkwNjYyXSBhdGExOiBTQVRBIGxpbmsgdXAgNi4wIEdicHMgKFNTdGF0dXMgMTMzIFND
b250cm9sIDMwMCkKWyAgICA0LjI5MDcyNV0gYXRhMjogU0FUQSBsaW5rIHVwIDEuNSBHYnBzIChT
U3RhdHVzIDExMyBTQ29udHJvbCAzMDApClsgICAgNC4yOTA3NzJdIGF0YTM6IFNBVEEgbGluayBk
b3duIChTU3RhdHVzIDQgU0NvbnRyb2wgMzAwKQpbICAgIDQuMjkwODQ0XSBhdGE2OiBTQVRBIGxp
bmsgZG93biAoU1N0YXR1cyA0IFNDb250cm9sIDMwMCkKWyAgICA0LjI5MDkyMV0gYXRhNTogU0FU
QSBsaW5rIHVwIDMuMCBHYnBzIChTU3RhdHVzIDEyMyBTQ29udHJvbCAzMDApClsgICAgNC4yOTE0
NjZdIEFDUEkgRXJyb3I6IFtEU1NQXSBOYW1lc3BhY2UgbG9va3VwIGZhaWx1cmUsIEFFX05PVF9G
T1VORCAoMjAxMzEyMTgvcHNhcmdzLTM1OSkKWyAgICA0LjI5MTcyMl0gQUNQSSBFcnJvcjogTWV0
aG9kIHBhcnNlL2V4ZWN1dGlvbiBmYWlsZWQgW1xfU0JfLlBDSTAuU0FUMC5TUFQ0Ll9HVEZdIChO
b2RlIGZmZmY4ODAxODQwNDM4YzApLCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzcGFyc2UtNTM2
KQpbICAgIDQuMjkyMDU2XSBBQ1BJIEVycm9yOiBbRFNTUF0gTmFtZXNwYWNlIGxvb2t1cCBmYWls
dXJlLCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzYXJncy0zNTkpClsgICAgNC4yOTIxMzVdIEFD
UEkgRXJyb3I6IE1ldGhvZCBwYXJzZS9leGVjdXRpb24gZmFpbGVkIFtcX1NCXy5QQ0kwLlNBVDAu
U1BUMC5fR1RGXSAoTm9kZSBmZmZmODgwMTg0MDQzNmUwKSwgQUVfTk9UX0ZPVU5EICgyMDEzMTIx
OC9wc3BhcnNlLTUzNikKWyAgICA0LjI5MjI4OF0gYXRhNS4wMDogQVRBLTk6IFdEQyBXRDIwRVpS
WC0wMEQ4UEIwLCA4MC4wMEE4MCwgbWF4IFVETUEvMTMzClsgICAgNC4yOTIzNTNdIGF0YTUuMDA6
IDM5MDcwMjkxNjggc2VjdG9ycywgbXVsdGkgMTY6IExCQTQ4IE5DUSAoZGVwdGggMzEvMzIpLCBB
QQpbICAgIDQuMjkyNDUxXSBhdGExLjAwOiBBVEEtODogV0RDIFdENTAwMEFBS1gtNjAzQ0EwLCAx
OC4wMUgxOCwgbWF4IFVETUEvMTAwClsgICAgNC4yOTI0ODNdIGF0YTEuMDA6IDk3Njc3MzE2OCBz
ZWN0b3JzLCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAzMS8zMiksIEFBClsgICAgNC4yOTI4
OTddIEFDUEkgRXJyb3I6IFtEU1NQXSBOYW1lc3BhY2UgbG9va3VwIGZhaWx1cmUsIEFFX05PVF9G
T1VORCAoMjAxMzEyMTgvcHNhcmdzLTM1OSkKWyAgICA0LjI5MzE0OF0gQUNQSSBFcnJvcjogTWV0
aG9kIHBhcnNlL2V4ZWN1dGlvbiBmYWlsZWQgW1xfU0JfLlBDSTAuU0FUMC5TUFQ0Ll9HVEZdIChO
b2RlIGZmZmY4ODAxODQwNDM4YzApLCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzcGFyc2UtNTM2
KQpbICAgIDQuMjkzNDg0XSBBQ1BJIEVycm9yOiBbRFNTUF0gTmFtZXNwYWNlIGxvb2t1cCBmYWls
dXJlLCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzYXJncy0zNTkpClsgICAgNC4yOTM1NjJdIEFD
UEkgRXJyb3I6IE1ldGhvZCBwYXJzZS9leGVjdXRpb24gZmFpbGVkIFtcX1NCXy5QQ0kwLlNBVDAu
U1BUMS5fR1RGXSAoTm9kZSBmZmZmODgwMTg0MDQzNzU4KSwgQUVfTk9UX0ZPVU5EICgyMDEzMTIx
OC9wc3BhcnNlLTUzNikKWyAgICA0LjI5MzY1Nl0gYXRhMi4wMDogQVRBUEk6IGhwICAgICAgIENE
RFZEVyBTSC0yMTZBTE4sIEhBNUEsIG1heCBVRE1BLzEwMApbICAgIDQuMjkzNzQ2XSBhdGE1LjAw
OiBjb25maWd1cmVkIGZvciBVRE1BLzEzMwpbICAgIDQuMjkzOTcwXSBBQ1BJIEVycm9yOiBbRFNT
UF0gTmFtZXNwYWNlIGxvb2t1cCBmYWlsdXJlLCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzYXJn
cy0zNTkpClsgICAgNC4yOTQwNDddIEFDUEkgRXJyb3I6IE1ldGhvZCBwYXJzZS9leGVjdXRpb24g
ZmFpbGVkIFtcX1NCXy5QQ0kwLlNBVDAuU1BUMC5fR1RGXSAoTm9kZSBmZmZmODgwMTg0MDQzNmUw
KSwgQUVfTk9UX0ZPVU5EICgyMDEzMTIxOC9wc3BhcnNlLTUzNikKWyAgICA0LjI5NDI0Ml0gYXRh
MS4wMDogY29uZmlndXJlZCBmb3IgVURNQS8xMDAKWyAgICA0LjI5NDQ0OF0gc2NzaSAwOjA6MDow
OiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBXREMgV0Q1MDAwQUFLWC02IDE4LjAgUFE6IDAg
QU5TSTogNQpbICAgIDQuMjk0NjQyXSBzZCAwOjA6MDowOiBbc2RhXSA5NzY3NzMxNjggNTEyLWJ5
dGUgbG9naWNhbCBibG9ja3M6ICg1MDAgR0IvNDY1IEdpQikKWyAgICA0LjI5NDY0OV0gc2QgMDow
OjA6MDogQXR0YWNoZWQgc2NzaSBnZW5lcmljIHNnMCB0eXBlIDAKWyAgICA0LjI5NDkwM10gc2Qg
MDowOjA6MDogW3NkYV0gV3JpdGUgUHJvdGVjdCBpcyBvZmYKWyAgICA0LjI5NDk4NV0gc2QgMDow
OjA6MDogW3NkYV0gTW9kZSBTZW5zZTogMDAgM2EgMDAgMDAKWyAgICA0LjI5NTAzOF0gc2QgMDow
OjA6MDogW3NkYV0gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6IGVuYWJsZWQsIGRv
ZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBClsgICAgNC4yOTYxMDZdIEFDUEkgRXJyb3I6IFtEU1NQ
XSBOYW1lc3BhY2UgbG9va3VwIGZhaWx1cmUsIEFFX05PVF9GT1VORCAoMjAxMzEyMTgvcHNhcmdz
LTM1OSkKWyAgICA0LjI5NjE4NV0gQUNQSSBFcnJvcjogTWV0aG9kIHBhcnNlL2V4ZWN1dGlvbiBm
YWlsZWQgW1xfU0JfLlBDSTAuU0FUMC5TUFQxLl9HVEZdIChOb2RlIGZmZmY4ODAxODQwNDM3NTgp
LCBBRV9OT1RfRk9VTkQgKDIwMTMxMjE4L3BzcGFyc2UtNTM2KQpbICAgIDQuMjk2MjgyXSBhdGEy
LjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEwMApbICAgIDQuMjk3MTcyXSBzY3NpIDE6MDowOjA6
IENELVJPTSAgICAgICAgICAgIGhwICAgICAgIENERFZEVyBTSC0yMTZBTE4gSEE1QSBQUTogMCBB
TlNJOiA1ClsgICAgNC4zMDUxMzRdIHNyMDogc2NzaTMtbW1jIGRyaXZlOiA0MHgvNDB4IHdyaXRl
ciBkdmQtcmFtIGNkL3J3IHhhL2Zvcm0yIGNkZGEgdHJheQpbICAgIDQuMzA1MjMwXSBjZHJvbTog
VW5pZm9ybSBDRC1ST00gZHJpdmVyIFJldmlzaW9uOiAzLjIwClsgICAgNC4zMDU0MzVdIHNyIDE6
MDowOjA6IEF0dGFjaGVkIHNjc2kgQ0QtUk9NIHNyMApbICAgIDQuMzA1NTgxXSBzciAxOjA6MDow
OiBBdHRhY2hlZCBzY3NpIGdlbmVyaWMgc2cxIHR5cGUgNQpbICAgIDQuMzA1ODM3XSBzY3NpIDQ6
MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEFUQSAgICAgIFdEQyBXRDIwRVpSWC0wMEQgODAuMCBQ
UTogMCBBTlNJOiA1ClsgICAgNC4zMDU5OTNdIHNkIDQ6MDowOjA6IFtzZGJdIDM5MDcwMjkxNjgg
NTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgyLjAwIFRCLzEuODEgVGlCKQpbICAgIDQuMzA2MDA3
XSBzZCA0OjA6MDowOiBBdHRhY2hlZCBzY3NpIGdlbmVyaWMgc2cyIHR5cGUgMApbICAgIDQuMzA2
MDY0XSBzZCA0OjA6MDowOiBbc2RiXSA0MDk2LWJ5dGUgcGh5c2ljYWwgYmxvY2tzClsgICAgNC4z
MDYxODhdIHNkIDQ6MDowOjA6IFtzZGJdIFdyaXRlIFByb3RlY3QgaXMgb2ZmClsgICAgNC4zMDYy
NjddIHNkIDQ6MDowOjA6IFtzZGJdIE1vZGUgU2Vuc2U6IDAwIDNhIDAwIDAwClsgICAgNC4zMDYz
MDBdIHNkIDQ6MDowOjA6IFtzZGJdIFdyaXRlIGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBl
bmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBPIG9yIEZVQQpbICAgIDQuMzIxMDM5XSAgc2RhOiBz
ZGExIHNkYTIgPCBzZGE1ID4KWyAgICA0LjMyMTM2MV0gc2QgMDowOjA6MDogW3NkYV0gQXR0YWNo
ZWQgU0NTSSBkaXNrClsgICAgNC4zMzc3NzNdICBzZGI6IHVua25vd24gcGFydGl0aW9uIHRhYmxl
ClsgICAgNC4zMzgyMTNdIHNkIDQ6MDowOjA6IFtzZGJdIEF0dGFjaGVkIFNDU0kgZGlzawpbICAg
IDQuMzM4NjA3XSB1c2IgMi0xOiBuZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVz
aW5nIGVoY2ktcGNpClsgICAgNC4zOTgyNzBdIHJhbmRvbTogbHZtIHVyYW5kb20gcmVhZCB3aXRo
IDExMiBiaXRzIG9mIGVudHJvcHkgYXZhaWxhYmxlClsgICAgNC40NzA5NDldIHVzYiAyLTE6IE5l
dyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj04MDg3LCBpZFByb2R1Y3Q9MDAyNApbICAgIDQu
NDcwOTgzXSB1c2IgMi0xOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MCwgUHJvZHVjdD0w
LCBTZXJpYWxOdW1iZXI9MApbICAgIDQuNDcxMjA4XSBodWIgMi0xOjEuMDogVVNCIGh1YiBmb3Vu
ZApbICAgIDQuNDcxMzEyXSBodWIgMi0xOjEuMDogOCBwb3J0cyBkZXRlY3RlZApbICAgIDQuNDkw
Njg5XSByYW5kb206IG5vbmJsb2NraW5nIHBvb2wgaXMgaW5pdGlhbGl6ZWQKWyAgICA0LjYwNTk0
OV0gZmJjb246IGludGVsZHJtZmIgKGZiMCkgaXMgcHJpbWFyeSBkZXZpY2UKWyAgICA0LjYxMDg3
Ml0gYmlvOiBjcmVhdGUgc2xhYiA8YmlvLTE+IGF0IDEKWyAgICA0LjY5MDU5M10gcmFpZDY6IHNz
ZTJ4MSAgICA4NzEzIE1CL3MKWyAgICA0LjY5MDY3Nl0gdXNiIDEtMS4xOiBuZXcgaGlnaC1zcGVl
ZCBVU0IgZGV2aWNlIG51bWJlciAzIHVzaW5nIGVoY2ktcGNpClsgICAgNC43NTg1OTBdIHJhaWQ2
OiBzc2UyeDIgICAxMjIxMiBNQi9zClsgICAgNC43ODQwNDRdIHVzYiAxLTEuMTogTmV3IFVTQiBk
ZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA1ZTMsIGlkUHJvZHVjdD0wNjA4ClsgICAgNC43ODQwNDVd
IHVzYiAxLTEuMTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTAsIFByb2R1Y3Q9MSwgU2Vy
aWFsTnVtYmVyPTAKWyAgICA0Ljc4NDA0Nl0gdXNiIDEtMS4xOiBQcm9kdWN0OiBVU0IyLjAgSHVi
ClsgICAgNC43ODQ0NDhdIGh1YiAxLTEuMToxLjA6IFVTQiBodWIgZm91bmQKWyAgICA0Ljc4NDc5
MV0gaHViIDEtMS4xOjEuMDogNCBwb3J0cyBkZXRlY3RlZApbICAgIDQuODI2NTg4XSByYWlkNjog
c3NlMng0ICAgMTQ5NDggTUIvcwpbICAgIDQuODI2NTg4XSByYWlkNjogdXNpbmcgYWxnb3JpdGht
IHNzZTJ4NCAoMTQ5NDggTUIvcykKWyAgICA0LjgyNjU4OV0gcmFpZDY6IHVzaW5nIHNzc2UzeDIg
cmVjb3ZlcnkgYWxnb3JpdGhtClsgICAgNC44Mjc0ODRdIHhvcjogYXV0b21hdGljYWxseSB1c2lu
ZyBiZXN0IGNoZWNrc3VtbWluZyBmdW5jdGlvbjoKWyAgICA0Ljg1NDY4NF0gdXNiIDEtMS4zOiBu
ZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciA0IHVzaW5nIGVoY2ktcGNpClsgICAgNC44
NjY1ODhdICAgIGF2eCAgICAgICA6IDI4MTY0LjAwMCBNQi9zZWMKWyAgICA0Ljg2ODM4M10gbWQ6
IHJhaWQxMCBwZXJzb25hbGl0eSByZWdpc3RlcmVkIGZvciBsZXZlbCAxMApbICAgIDQuODY5ODY5
XSBtZDogcmFpZDEgcGVyc29uYWxpdHkgcmVnaXN0ZXJlZCBmb3IgbGV2ZWwgMQpbICAgIDQuODcw
NTc1XSBhc3luY190eDogYXBpIGluaXRpYWxpemVkIChhc3luYykKWyAgICA0Ljg3NjExNF0gbWQ6
IHJhaWQ2IHBlcnNvbmFsaXR5IHJlZ2lzdGVyZWQgZm9yIGxldmVsIDYKWyAgICA0Ljg3NjExNF0g
bWQ6IHJhaWQ1IHBlcnNvbmFsaXR5IHJlZ2lzdGVyZWQgZm9yIGxldmVsIDUKWyAgICA0Ljg3NjEx
NV0gbWQ6IHJhaWQ0IHBlcnNvbmFsaXR5IHJlZ2lzdGVyZWQgZm9yIGxldmVsIDQKWyAgICA0Ljg3
Njk0N10gZGV2aWNlLW1hcHBlcjogcmFpZDogTG9hZGluZyB0YXJnZXQgdmVyc2lvbiAxLjUuMgpb
ICAgIDQuOTA3MjI3XSBDb25zb2xlOiBzd2l0Y2hpbmcgdG8gY29sb3VyIGZyYW1lIGJ1ZmZlciBk
ZXZpY2UgMjQweDY3ClsgICAgNC45NDg5MjFdIHVzYiAxLTEuMzogTmV3IFVTQiBkZXZpY2UgZm91
bmQsIGlkVmVuZG9yPTA1OGYsIGlkUHJvZHVjdD02MzYyClsgICAgNC45NDg5MjJdIHVzYiAxLTEu
MzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVy
PTMKWyAgICA0Ljk0ODkyM10gdXNiIDEtMS4zOiBQcm9kdWN0OiBNYXNzIFN0b3JhZ2UgRGV2aWNl
ClsgICAgNC45NDg5MjRdIHVzYiAxLTEuMzogTWFudWZhY3R1cmVyOiBHZW5lcmljClsgICAgNC45
NDg5MjVdIHVzYiAxLTEuMzogU2VyaWFsTnVtYmVyOiAwNThGNjM2MjY0NzYKWyAgICA0Ljk1MTQ4
MF0gdXNiLXN0b3JhZ2UgMS0xLjM6MS4wOiBVU0IgTWFzcyBTdG9yYWdlIGRldmljZSBkZXRlY3Rl
ZApbICAgIDQuOTUxNjEwXSBzY3NpNiA6IHVzYi1zdG9yYWdlIDEtMS4zOjEuMApbICAgIDQuOTUx
NjU5XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVzYi1zdG9yYWdl
ClsgICAgNS4wMTg2OThdIHVzYiAyLTEuNTogbmV3IGxvdy1zcGVlZCBVU0IgZGV2aWNlIG51bWJl
ciAzIHVzaW5nIGVoY2ktcGNpClsgICAgNS4wMTk0OTZdIGk5MTUgMDAwMDowMDowMi4wOiBmYjA6
IGludGVsZHJtZmIgZnJhbWUgYnVmZmVyIGRldmljZQpbICAgIDUuMDE5OTI2XSBpOTE1IDAwMDA6
MDA6MDIuMDogcmVnaXN0ZXJlZCBwYW5pYyBub3RpZmllcgpbICAgIDUuMDQ2ODg2XSBBQ1BJOiBW
aWRlbyBEZXZpY2UgW0dGWDBdIChtdWx0aS1oZWFkOiB5ZXMgIHJvbTogbm8gIHBvc3Q6IG5vKQpb
ICAgIDUuMDQ3NzQ4XSBhY3BpIGRldmljZTo0NzogcmVnaXN0ZXJlZCBhcyBjb29saW5nX2Rldmlj
ZTEzClsgICAgNS4wNDgzMjZdIGlucHV0OiBWaWRlbyBCdXMgYXMgL2RldmljZXMvTE5YU1lTVE06
MDAvZGV2aWNlOjAwL1BOUDBBMDg6MDAvTE5YVklERU86MDAvaW5wdXQvaW5wdXQ1ClsgICAgNS4w
NDkyNzFdIFtkcm1dIEluaXRpYWxpemVkIGk5MTUgMS42LjAgMjAwODA3MzAgZm9yIDAwMDA6MDA6
MDIuMCBvbiBtaW5vciAwClsgICAgNS4xMTU2MjFdIHVzYiAyLTEuNTogTmV3IFVTQiBkZXZpY2Ug
Zm91bmQsIGlkVmVuZG9yPTA0NmQsIGlkUHJvZHVjdD1jMDZhClsgICAgNS4xMTY2ODJdIHVzYiAy
LTEuNTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVt
YmVyPTAKWyAgICA1LjExNzgwMl0gdXNiIDItMS41OiBQcm9kdWN0OiBVU0IgT3B0aWNhbCBNb3Vz
ZQpbICAgIDUuMTE4NTI1XSB1c2IgMi0xLjU6IE1hbnVmYWN0dXJlcjogTG9naXRlY2gKWyAgICA1
LjE1NTQ0NV0gaGlkcmF3OiByYXcgSElEIGV2ZW50cyBkcml2ZXIgKEMpIEppcmkgS29zaW5hClsg
ICAgNS4xODE1ODRdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNi
aGlkClsgICAgNS4yMTE4MzFdIHVzYmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcgpbICAgIDUuMjMy
MTI0XSB1c2IgMi0xLjY6IG5ldyBoaWdoLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDQgdXNpbmcg
ZWhjaS1wY2kKWyAgICA1LjIzODM2N10gbWQvcmFpZDE6bWRYOiBhY3RpdmUgd2l0aCAyIG91dCBv
ZiAyIG1pcnJvcnMKWyAgICA1LjIzODQ5M10gY3JlYXRlZCBiaXRtYXAgKDEwMCBwYWdlcykgZm9y
IGRldmljZSBtZFgKWyAgICA1LjI5NDk5MF0gaW5wdXQ6IExvZ2l0ZWNoIFVTQiBPcHRpY2FsIE1v
dXNlIGFzIC9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDoxZC4wL3VzYjIvMi0xLzItMS41LzIt
MS41OjEuMC8wMDAzOjA0NkQ6QzA2QS4wMDAxL2lucHV0L2lucHV0NgpbICAgIDUuMzI5NTc1XSBo
aWQtZ2VuZXJpYyAwMDAzOjA0NkQ6QzA2QS4wMDAxOiBpbnB1dCxoaWRyYXcwOiBVU0IgSElEIHYx
LjExIE1vdXNlIFtMb2dpdGVjaCBVU0IgT3B0aWNhbCBNb3VzZV0gb24gdXNiLTAwMDA6MDA6MWQu
MC0xLjUvaW5wdXQwClsgICAgNS4zODg0OTldIHVzYiAyLTEuNjogTmV3IFVTQiBkZXZpY2UgZm91
bmQsIGlkVmVuZG9yPTA1ZTMsIGlkUHJvZHVjdD0wNjA4ClsgICAgNS40MTYyMDZdIHVzYiAyLTEu
NjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTAsIFByb2R1Y3Q9MSwgU2VyaWFsTnVtYmVy
PTAKWyAgICA1LjQzNzY3OF0gdXNiIDItMS42OiBQcm9kdWN0OiBVU0IyLjAgSHViClsgICAgNS40
NTk0MjhdIGh1YiAyLTEuNjoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA1LjQ4MjMwMF0gaHViIDIt
MS42OjEuMDogNCBwb3J0cyBkZXRlY3RlZApbICAgIDUuNTQ2OTg3XSBtZFg6IGJpdG1hcCBpbml0
aWFsaXplZCBmcm9tIGRpc2s6IHJlYWQgNyBwYWdlcywgc2V0IDAgb2YgMjA0ODAwIGJpdHMKWyAg
ICA1LjU3NTUxNl0gdXNiIDEtMS4xLjM6IG5ldyBmdWxsLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVy
IDUgdXNpbmcgZWhjaS1wY2kKWyAgICA1LjY5NjkxNl0gdXNiIDEtMS4xLjM6IE5ldyBVU0IgZGV2
aWNlIGZvdW5kLCBpZFZlbmRvcj0wOGU2LCBpZFByb2R1Y3Q9MzQzOApbICAgIDUuNzIyMzQ4XSB1
c2IgMS0xLjEuMzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2Vy
aWFsTnVtYmVyPTAKWyAgICA1LjcyNDAzMl0gbWQvcmFpZDE6bWRYOiBhY3RpdmUgd2l0aCAyIG91
dCBvZiAyIG1pcnJvcnMKWyAgICA1Ljc2NjQxNV0gdXNiIDEtMS4xLjM6IFByb2R1Y3Q6IFVTQiBT
bWFydENhcmQgUmVhZGVyClsgICAgNS43ODc4MzRdIHVzYiAxLTEuMS4zOiBNYW51ZmFjdHVyZXI6
IEdlbXBsdXMKWyAgICA1Ljc4Nzg0Nl0gY3JlYXRlZCBiaXRtYXAgKDUwIHBhZ2VzKSBmb3IgZGV2
aWNlIG1kWApbICAgIDUuODQ0MTk1XSBtZFg6IGJpdG1hcCBpbml0aWFsaXplZCBmcm9tIGRpc2s6
IHJlYWQgNCBwYWdlcywgc2V0IDAgb2YgMTAyNDAwIGJpdHMKWyAgICA1LjkyNzA2M10gdXNiIDIt
MS42LjE6IG5ldyBsb3ctc3BlZWQgVVNCIGRldmljZSBudW1iZXIgNSB1c2luZyBlaGNpLXBjaQpb
ICAgIDUuOTU4Mjk3XSBzY3NpIDY6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEdlbmVyaWMtIFNE
L01NQyAgICAgICAgICAgMS4wMCBQUTogMCBBTlNJOiAwClsgICAgNS45ODk2OTddIHNjc2kgNjow
OjA6MTogRGlyZWN0LUFjY2VzcyAgICAgR2VuZXJpYy0gQ29tcGFjdCBGbGFzaCAgICAxLjAxIFBR
OiAwIEFOU0k6IDAKWyAgICA2LjAxMjc0M10gc2NzaSA2OjA6MDoyOiBEaXJlY3QtQWNjZXNzICAg
ICBHZW5lcmljLSBTTS94RC1QaWN0dXJlICAgIDEuMDIgUFE6IDAgQU5TSTogMApbICAgIDYuMDM1
MTgyXSBzY3NpIDY6MDowOjM6IERpcmVjdC1BY2Nlc3MgICAgIEdlbmVyaWMtIE1TL01TLVBybyAg
ICAgICAgMS4wMyBQUTogMCBBTlNJOiAwIENDUwpbICAgIDYuMDU2ODY5XSBzZCA2OjA6MDowOiBB
dHRhY2hlZCBzY3NpIGdlbmVyaWMgc2czIHR5cGUgMApbICAgIDYuMDU4NjEyXSBzZCA2OjA6MDow
OiBbc2RjXSBBdHRhY2hlZCBTQ1NJIHJlbW92YWJsZSBkaXNrClsgICAgNi4wNTkwMzddIFtkcm1d
IEVuYWJsaW5nIFJDNiBzdGF0ZXM6IFJDNiBvbiwgUkM2cCBvbiwgUkM2cHAgb2ZmClsgICAgNi4w
NzMxOTddIHVzYiAyLTEuNi4xOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MDQ2MSwg
aWRQcm9kdWN0PTAwMTAKWyAgICA2LjA3MzE5OV0gdXNiIDItMS42LjE6IE5ldyBVU0IgZGV2aWNl
IHN0cmluZ3M6IE1mcj0wLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0wClsgICAgNi4wNzMyMDFd
IHVzYiAyLTEuNi4xOiBQcm9kdWN0OiBVU0IgS2V5Ym9hcmQKWyAgICA2LjA3OTM2OV0gaW5wdXQ6
IFVTQiBLZXlib2FyZCBhcyAvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWQuMC91c2IyLzIt
MS8yLTEuNi8yLTEuNi4xLzItMS42LjE6MS4wLzAwMDM6MDQ2MTowMDEwLjAwMDIvaW5wdXQvaW5w
dXQ3ClsgICAgNi4wNzk1NjhdIGhpZC1nZW5lcmljIDAwMDM6MDQ2MTowMDEwLjAwMDI6IGlucHV0
LGhpZHJhdzE6IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW1VTQiBLZXlib2FyZF0gb24gdXNiLTAw
MDA6MDA6MWQuMC0xLjYuMS9pbnB1dDAKWyAgICA2LjA4OTIwN10gaW5wdXQ6IFVTQiBLZXlib2Fy
ZCBhcyAvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWQuMC91c2IyLzItMS8yLTEuNi8yLTEu
Ni4xLzItMS42LjE6MS4xLzAwMDM6MDQ2MTowMDEwLjAwMDMvaW5wdXQvaW5wdXQ4ClsgICAgNi4w
ODkyODVdIGhpZC1nZW5lcmljIDAwMDM6MDQ2MTowMDEwLjAwMDM6IGlucHV0LGhpZHJhdzI6IFVT
QiBISUQgdjEuMTEgRGV2aWNlIFtVU0IgS2V5Ym9hcmRdIG9uIHVzYi0wMDAwOjAwOjFkLjAtMS42
LjEvaW5wdXQxClsgICAgNi4yOTI2MzNdIHNkIDY6MDowOjE6IEF0dGFjaGVkIHNjc2kgZ2VuZXJp
YyBzZzQgdHlwZSAwClsgICAgNi4yOTQxODFdIHNkIDY6MDowOjE6IFtzZGRdIEF0dGFjaGVkIFND
U0kgcmVtb3ZhYmxlIGRpc2sKWyAgICA2LjM0MTI5NF0gc2QgNjowOjA6MjogQXR0YWNoZWQgc2Nz
aSBnZW5lcmljIHNnNSB0eXBlIDAKWyAgICA2LjM0MjgwMV0gc2QgNjowOjA6MjogW3NkZV0gQXR0
YWNoZWQgU0NTSSByZW1vdmFibGUgZGlzawpbICAgIDYuMzg5NjE1XSBzZCA2OjA6MDozOiBBdHRh
Y2hlZCBzY3NpIGdlbmVyaWMgc2c2IHR5cGUgMApbICAgIDYuMzkxMjAxXSBzZCA2OjA6MDozOiBb
c2RmXSBBdHRhY2hlZCBTQ1NJIHJlbW92YWJsZSBkaXNrClsgICAxMi42ODQxOThdIEVYVDQtZnMg
KGRtLTApOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gT3B0czog
KG51bGwpClsgICAxMy45MjYyNDBdIGluaXQ6IHVyZWFkYWhlYWQgbWFpbiBwcm9jZXNzICg2NzYp
IHRlcm1pbmF0ZWQgd2l0aCBzdGF0dXMgNQpbICAgMTUuNTI5MjAyXSBFWFQ0LWZzIChkbS0wKTog
cmUtbW91bnRlZC4gT3B0czogZXJyb3JzPXJlbW91bnQtcm8KWyAgIDE1LjczNjc0MV0gc3lzdGVt
ZC11ZGV2ZFs4MDldOiBzdGFydGluZyB2ZXJzaW9uIDIwNApbICAgMTUuOTEyMDcwXSBFWFQ0LWZz
IChkbS01KTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9wdHM6
IChudWxsKQpbICAgMTYuMDQ1OTQzXSBFWFQ0LWZzIChkbS0xMCk6IG1vdW50ZWQgZmlsZXN5c3Rl
bSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBPcHRzOiAobnVsbCkKWyAgIDE2LjEwNzU2OV0gRVhU
NC1mcyAoc2RhMSk6IG1vdW50ZWQgZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBP
cHRzOiAobnVsbCkKWyAgIDE2LjU5NDk4NF0gbHA6IGRyaXZlciBsb2FkZWQgYnV0IG5vIGRldmlj
ZXMgZm91bmQKWyAgIDE2LjY4MTE0NV0gcHBkZXY6IHVzZXItc3BhY2UgcGFyYWxsZWwgcG9ydCBk
cml2ZXIKWyAgIDE2LjY5NjUyOV0gcGFycG9ydF9wYyBwYXJwb3J0X3BjLjk1NjogVW5hYmxlIHRv
IHNldCBjb2hlcmVudCBkbWEgbWFzazogZGlzYWJsaW5nIERNQQpbICAgMTYuNzAzNTI2XSBwYXJw
b3J0X3BjIHBhcnBvcnRfcGMuODg4OiBVbmFibGUgdG8gc2V0IGNvaGVyZW50IGRtYSBtYXNrOiBk
aXNhYmxpbmcgRE1BClsgICAxNi43MTA1NjldIHBhcnBvcnRfcGMgcGFycG9ydF9wYy42MzI6IFVu
YWJsZSB0byBzZXQgY29oZXJlbnQgZG1hIG1hc2s6IGRpc2FibGluZyBETUEKWyAgIDE4LjIxNzc1
OF0gbWljcm9jb2RlOiBDUFUwIHNpZz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAg
IDE4LjI1NzQxMV0gQUNQSSBXYXJuaW5nOiBTeXN0ZW1JTyByYW5nZSAweDAwMDAwMDAwMDAwMDA0
MjgtMHgwMDAwMDAwMDAwMDAwNDJmIGNvbmZsaWN0cyB3aXRoIE9wUmVnaW9uIDB4MDAwMDAwMDAw
MDAwMDQwMC0weDAwMDAwMDAwMDAwMDA0N2YgKFxQTUlPKSAoMjAxMzEyMTgvdXRhZGRyZXNzLTI1
OCkKWyAgIDE4LjI1NzQxMl0gQUNQSTogSWYgYW4gQUNQSSBkcml2ZXIgaXMgYXZhaWxhYmxlIGZv
ciB0aGlzIGRldmljZSwgeW91IHNob3VsZCB1c2UgaXQgaW5zdGVhZCBvZiB0aGUgbmF0aXZlIGRy
aXZlcgpbICAgMTguMjU3NDE2XSBBQ1BJIFdhcm5pbmc6IFN5c3RlbUlPIHJhbmdlIDB4MDAwMDAw
MDAwMDAwMDUzMC0weDAwMDAwMDAwMDAwMDA1M2YgY29uZmxpY3RzIHdpdGggT3BSZWdpb24gMHgw
MDAwMDAwMDAwMDAwNTAwLTB4MDAwMDAwMDAwMDAwMDU2MyAoXEdQSU8pICgyMDEzMTIxOC91dGFk
ZHJlc3MtMjU4KQpbICAgMTguMjU3NDE3XSBBQ1BJOiBJZiBhbiBBQ1BJIGRyaXZlciBpcyBhdmFp
bGFibGUgZm9yIHRoaXMgZGV2aWNlLCB5b3Ugc2hvdWxkIHVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBu
YXRpdmUgZHJpdmVyClsgICAxOC4yNTc0MTldIEFDUEkgV2FybmluZzogU3lzdGVtSU8gcmFuZ2Ug
MHgwMDAwMDAwMDAwMDAwNTAwLTB4MDAwMDAwMDAwMDAwMDUyZiBjb25mbGljdHMgd2l0aCBPcFJl
Z2lvbiAweDAwMDAwMDAwMDAwMDA1MDAtMHgwMDAwMDAwMDAwMDAwNTYzIChcR1BJTykgKDIwMTMx
MjE4L3V0YWRkcmVzcy0yNTgpClsgICAxOC4yNTc0MTldIEFDUEk6IElmIGFuIEFDUEkgZHJpdmVy
IGlzIGF2YWlsYWJsZSBmb3IgdGhpcyBkZXZpY2UsIHlvdSBzaG91bGQgdXNlIGl0IGluc3RlYWQg
b2YgdGhlIG5hdGl2ZSBkcml2ZXIKWyAgIDE4LjI1NzQxOV0gbHBjX2ljaDogUmVzb3VyY2UgY29u
ZmxpY3QocykgZm91bmQgYWZmZWN0aW5nIGdwaW9faWNoClsgICAxOC4yNjgzNjRdIG1pY3JvY29k
ZTogQ1BVMSBzaWc9MHgzMDZhOSwgcGY9MHgyLCByZXZpc2lvbj0weDE2ClsgICAxOC4yNjgzODVd
IG1pY3JvY29kZTogQ1BVMiBzaWc9MHgzMDZhOSwgcGY9MHgyLCByZXZpc2lvbj0weDE2ClsgICAx
OC4yNjg0MDJdIG1pY3JvY29kZTogQ1BVMyBzaWc9MHgzMDZhOSwgcGY9MHgyLCByZXZpc2lvbj0w
eDE2ClsgICAxOC4yNjg0MTRdIG1pY3JvY29kZTogQ1BVNCBzaWc9MHgzMDZhOSwgcGY9MHgyLCBy
ZXZpc2lvbj0weDE2ClsgICAxOC4yNjg0MzJdIG1pY3JvY29kZTogQ1BVNSBzaWc9MHgzMDZhOSwg
cGY9MHgyLCByZXZpc2lvbj0weDE2ClsgICAxOC4yNjg0NTFdIG1pY3JvY29kZTogQ1BVNiBzaWc9
MHgzMDZhOSwgcGY9MHgyLCByZXZpc2lvbj0weDE2ClsgICAxOC4yNjg0NjddIG1pY3JvY29kZTog
Q1BVNyBzaWc9MHgzMDZhOSwgcGY9MHgyLCByZXZpc2lvbj0weDE2ClsgICAxOC4yNjg1MzBdIG1p
Y3JvY29kZTogTWljcm9jb2RlIFVwZGF0ZSBEcml2ZXI6IHYyLjAwIDx0aWdyYW5AYWl2YXppYW4u
ZnNuZXQuY28udWs+LCBQZXRlciBPcnViYQpbICAgMTguNTU0Nzc5XSB4ZW46IHJlZ2lzdGVyaW5n
IGdzaSAxNiB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgMTguNTU0Nzg5XSBBbHJlYWR5IHNl
dHVwIHRoZSBHU0kgOjE2ClsgICAxOC44MTIxNDRdIEFWWCB2ZXJzaW9uIG9mIGdjbV9lbmMvZGVj
IGVuZ2FnZWQuClsgICAxOC44MTk1MjZdIGluaXQ6IGN1cHMgbWFpbiBwcm9jZXNzICg5OTkpIGtp
bGxlZCBieSBIVVAgc2lnbmFsClsgICAxOC44MTk1MzddIGluaXQ6IGN1cHMgbWFpbiBwcm9jZXNz
IGVuZGVkLCByZXNwYXduaW5nClsgICAxOC45MTcyMjZdIGRldmljZS1tYXBwZXI6IG11bHRpcGF0
aDogdmVyc2lvbiAxLjYuMCBsb2FkZWQKWyAgIDE5LjA5MjM4OF0gQmx1ZXRvb3RoOiBDb3JlIHZl
ciAyLjE4ClsgICAxOS4wOTI0MTNdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMzEK
WyAgIDE5LjA5MjQxNV0gQmx1ZXRvb3RoOiBIQ0kgZGV2aWNlIGFuZCBjb25uZWN0aW9uIG1hbmFn
ZXIgaW5pdGlhbGl6ZWQKWyAgIDE5LjA5MjQyMl0gQmx1ZXRvb3RoOiBIQ0kgc29ja2V0IGxheWVy
IGluaXRpYWxpemVkClsgICAxOS4wOTI0MjRdIEJsdWV0b290aDogTDJDQVAgc29ja2V0IGxheWVy
IGluaXRpYWxpemVkClsgICAxOS4wOTI0MzJdIEJsdWV0b290aDogU0NPIHNvY2tldCBsYXllciBp
bml0aWFsaXplZApbICAgMTkuMzI4NDE5XSBCbHVldG9vdGg6IEJORVAgKEV0aGVybmV0IEVtdWxh
dGlvbikgdmVyIDEuMwpbICAgMTkuMzI4NDIyXSBCbHVldG9vdGg6IEJORVAgZmlsdGVyczogcHJv
dG9jb2wgbXVsdGljYXN0ClsgICAxOS4zMjg0MjldIEJsdWV0b290aDogQk5FUCBzb2NrZXQgbGF5
ZXIgaW5pdGlhbGl6ZWQKWyAgIDE5LjMzNjYyNF0gQmx1ZXRvb3RoOiBSRkNPTU0gVFRZIGxheWVy
IGluaXRpYWxpemVkClsgICAxOS4zMzY2MzVdIEJsdWV0b290aDogUkZDT01NIHNvY2tldCBsYXll
ciBpbml0aWFsaXplZApbICAgMTkuMzM2NjQxXSBCbHVldG9vdGg6IFJGQ09NTSB2ZXIgMS4xMQpb
ICAgMTkuNDgzNTM2XSBpbnRlbF9yYXBsOiBkb21haW4gdW5jb3JlIGVuZXJneSBjdHIgNDAyNDM6
NDAyNDMgbm90IHdvcmtpbmcsIHNraXAKWyAgIDIwLjQ1MTY0MV0geGVuOiByZWdpc3RlcmluZyBn
c2kgMjIgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgIDIwLjQ1MTY2NF0geGVuOiAtLT4gcGly
cT0yMiAtPiBpcnE9MjIgKGdzaT0yMikKWyAgIDIwLjUwNjQ3Ml0gYXV0b2NvbmZpZzogbGluZV9v
dXRzPTQgKDB4Yy8weGYvMHgxMC8weDExLzB4MCkgdHlwZTpzcGVha2VyClsgICAyMC41MDY0Nzdd
ICAgIHNwZWFrZXJfb3V0cz0wICgweDAvMHgwLzB4MC8weDAvMHgwKQpbICAgMjAuNTA2NDgwXSAg
ICBocF9vdXRzPTEgKDB4YS8weDAvMHgwLzB4MC8weDApClsgICAyMC41MDY0ODFdICAgIG1vbm86
IG1vbm9fb3V0PTB4MApbICAgMjAuNTA2NDgzXSAgICBkaWctb3V0PTB4MjIvMHgwClsgICAyMC41
MDY0ODRdICAgIGlucHV0czoKWyAgIDIwLjUwNjQ4Nl0gICAgICBGcm9udCBNaWM9MHhiClsgICAy
MC41MDY0ODhdICAgICAgUmVhciBNaWM9MHhlClsgICAyMC41MDY0ODldICAgICAgTGluZT0weGQK
WyAgIDIwLjU1MDYzN10gaW5wdXQ6IEhEQSBJbnRlbCBQQ0ggRnJvbnQgSGVhZHBob25lIGFzIC9k
ZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDoxYi4wL3NvdW5kL2NhcmQwL2lucHV0MTYKWyAgIDIw
LjU1MDgyNl0gaW5wdXQ6IEhEQSBJbnRlbCBQQ0ggU3BlYWtlciBTaWRlIGFzIC9kZXZpY2VzL3Bj
aTAwMDA6MDAvMDAwMDowMDoxYi4wL3NvdW5kL2NhcmQwL2lucHV0MTUKWyAgIDIwLjU1MDk1M10g
aW5wdXQ6IEhEQSBJbnRlbCBQQ0ggU3BlYWtlciBDTEZFIGFzIC9kZXZpY2VzL3BjaTAwMDA6MDAv
MDAwMDowMDoxYi4wL3NvdW5kL2NhcmQwL2lucHV0MTQKWyAgIDIwLjU1MTA4Ml0gaW5wdXQ6IEhE
QSBJbnRlbCBQQ0ggU3BlYWtlciBTdXJyb3VuZCBhcyAvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6
MDA6MWIuMC9zb3VuZC9jYXJkMC9pbnB1dDEzClsgICAyMC41NTExOThdIGlucHV0OiBIREEgSW50
ZWwgUENIIFNwZWFrZXIgRnJvbnQgYXMgL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjFiLjAv
c291bmQvY2FyZDAvaW5wdXQxMgpbICAgMjAuNTUxMzE1XSBpbnB1dDogSERBIEludGVsIFBDSCBM
aW5lIGFzIC9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDoxYi4wL3NvdW5kL2NhcmQwL2lucHV0
MTEKWyAgIDIwLjU1MTQyMl0gaW5wdXQ6IEhEQSBJbnRlbCBQQ0ggUmVhciBNaWMgYXMgL2Rldmlj
ZXMvcGNpMDAwMDowMC8wMDAwOjAwOjFiLjAvc291bmQvY2FyZDAvaW5wdXQxMApbICAgMjAuNTUx
NTM5XSBpbnB1dDogSERBIEludGVsIFBDSCBGcm9udCBNaWMgYXMgL2RldmljZXMvcGNpMDAwMDow
MC8wMDAwOjAwOjFiLjAvc291bmQvY2FyZDAvaW5wdXQ5ClsgICAyNy43NDM1OTZdIGluaXQ6IHNh
bWJhLWFkLWRjIG1haW4gcHJvY2VzcyAoMTM5NSkgdGVybWluYXRlZCB3aXRoIHN0YXR1cyAxClsg
ICAyOC4yNTgwNjRdIEJyaWRnZSBmaXJld2FsbGluZyByZWdpc3RlcmVkClsgICAyOC4yNjg5MjFd
IGRldmljZSBldGgwIGVudGVyZWQgcHJvbWlzY3VvdXMgbW9kZQpbICAgMjguMjczNjc4XSBJUHY2
OiBBRERSQ09ORihORVRERVZfVVApOiBldGgwOiBsaW5rIGlzIG5vdCByZWFkeQpbICAgMjguMjc0
NDU2XSBhbHggMDAwMDowMjowMC4wIGV0aDA6IE5JQyBVcDogMTAwIE1icHMgRnVsbApbICAgMjgu
Mjc0NzMxXSBJUHY2OiBBRERSQ09ORihORVRERVZfQ0hBTkdFKTogZXRoMDogbGluayBiZWNvbWVz
IHJlYWR5ClsgICAyOC4yODAzMDZdIHhlbmJyMDogcG9ydCAxKGV0aDApIGVudGVyZWQgZm9yd2Fy
ZGluZyBzdGF0ZQpbICAgMjguMjgwMzE1XSB4ZW5icjA6IHBvcnQgMShldGgwKSBlbnRlcmVkIGZv
cndhcmRpbmcgc3RhdGUKWyAgIDI5LjQwMjA4OF0gaW5pdDogZmFpbHNhZmUgbWFpbiBwcm9jZXNz
ICgxMTczKSBraWxsZWQgYnkgVEVSTSBzaWduYWwK
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="dom0_xen_dmesg.txt"
Content-Disposition: attachment; filename="dom0_xen_dmesg.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7esj3

KFhFTikgWGVuIHZlcnNpb24gNC40LjAgKFVidW50dSA0LjQuMC0wdWJ1bnR1NS4xKSAoc3RlZmFu
LmJhZGVyQGNhbm9uaWNhbC5jb20pIChnY2MgKFVidW50dSA0LjguMi0xOXVidW50dTEpIDQuOC4y
KSBkZWJ1Zz1uIFdlZCBKdWwgIDkgMTI6MDU6MjQgVVRDIDIwMTQKKFhFTikgQm9vdGxvYWRlcjog
R1JVQiAyLjAyfmJldGEyLTl1YnVudHUxCihYRU4pIENvbW1hbmQgbGluZTogcGxhY2Vob2xkZXIg
ZG9tMF9tZW09NTYwME0gaW9tbXU9MQooWEVOKSBWaWRlbyBpbmZvcm1hdGlvbjoKKFhFTikgIFZH
QSBpcyB0ZXh0IG1vZGUgODB4MjUsIGZvbnQgOHgxNgooWEVOKSAgVkJFL0REQyBtZXRob2RzOiBW
MjsgRURJRCB0cmFuc2ZlciB0aW1lOiAxIHNlY29uZHMKKFhFTikgRGlzYyBpbmZvcm1hdGlvbjoK
KFhFTikgIEZvdW5kIDEgTUJSIHNpZ25hdHVyZXMKKFhFTikgIEZvdW5kIDIgRUREIGluZm9ybWF0
aW9uIHN0cnVjdHVyZXMKKFhFTikgWGVuLWU4MjAgUkFNIG1hcDoKKFhFTikgIDAwMDAwMDAwMDAw
MDAwMDAgLSAwMDAwMDAwMDAwMDlkODAwICh1c2FibGUpCihYRU4pICAwMDAwMDAwMDAwMDlkODAw
IC0gMDAwMDAwMDAwMDBhMDAwMCAocmVzZXJ2ZWQpCihYRU4pICAwMDAwMDAwMDAwMGUwMDAwIC0g
MDAwMDAwMDAwMDEwMDAwMCAocmVzZXJ2ZWQpCihYRU4pICAwMDAwMDAwMDAwMTAwMDAwIC0gMDAw
MDAwMDAyMDAwMDAwMCAodXNhYmxlKQooWEVOKSAgMDAwMDAwMDAyMDAwMDAwMCAtIDAwMDAwMDAw
MjAyMDAwMDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDAyMDIwMDAwMCAtIDAwMDAwMDAwNDAw
MDQwMDAgKHVzYWJsZSkKKFhFTikgIDAwMDAwMDAwNDAwMDQwMDAgLSAwMDAwMDAwMDQwMDA1MDAw
IChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwNDAwMDUwMDAgLSAwMDAwMDAwMGQ3ZmU0MDAwICh1
c2FibGUpCihYRU4pICAwMDAwMDAwMGQ3ZmU0MDAwIC0gMDAwMDAwMDBkODQ3NDAwMCAocmVzZXJ2
ZWQpCihYRU4pICAwMDAwMDAwMGQ4NDc0MDAwIC0gMDAwMDAwMDBkODQ4NDAwMCAoQUNQSSBkYXRh
KQooWEVOKSAgMDAwMDAwMDBkODQ4NDAwMCAtIDAwMDAwMDAwZDg1OTgwMDAgKEFDUEkgTlZTKQoo
WEVOKSAgMDAwMDAwMDBkODU5ODAwMCAtIDAwMDAwMDAwZDkzZjIwMDAgKHJlc2VydmVkKQooWEVO
KSAgMDAwMDAwMDBkOTNmMjAwMCAtIDAwMDAwMDAwZDkzZjMwMDAgKHVzYWJsZSkKKFhFTikgIDAw
MDAwMDAwZDkzZjMwMDAgLSAwMDAwMDAwMGQ5NDM2MDAwIChBQ1BJIE5WUykKKFhFTikgIDAwMDAw
MDAwZDk0MzYwMDAgLSAwMDAwMDAwMGQ5NThkMDAwICh1c2FibGUpCihYRU4pICAwMDAwMDAwMGQ5
NThkMDAwIC0gMDAwMDAwMDBkOWMwZTAwMCAocmVzZXJ2ZWQpCihYRU4pICAwMDAwMDAwMGQ5YzBl
MDAwIC0gMDAwMDAwMDBkOWM0MDAwMCAodXNhYmxlKQooWEVOKSAgMDAwMDAwMDBkOWM0MDAwMCAt
IDAwMDAwMDAwZDlmZjEwMDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDBkOWZmMTAwMCAtIDAw
MDAwMDAwZGEwMDAwMDAgKHVzYWJsZSkKKFhFTikgIDAwMDAwMDAwZGIwMDAwMDAgLSAwMDAwMDAw
MGRmMjAwMDAwIChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwZjgwMDAwMDAgLSAwMDAwMDAwMGZj
MDAwMDAwIChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwZmVjMDAwMDAgLSAwMDAwMDAwMGZlYzAx
MDAwIChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwZmVkMDAwMDAgLSAwMDAwMDAwMGZlZDA0MDAw
IChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwZmVkMWMwMDAgLSAwMDAwMDAwMGZlZDIwMDAwIChy
ZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZlZTAxMDAwIChyZXNl
cnZlZCkKKFhFTikgIDAwMDAwMDAwZmYwMDAwMDAgLSAwMDAwMDAwMTAwMDAwMDAwIChyZXNlcnZl
ZCkKKFhFTikgIDAwMDAwMDAxMDAwMDAwMDAgLSAwMDAwMDAwMzFmZTAwMDAwICh1c2FibGUpCihY
RU4pIEFDUEk6IFJTRFAgMDAwRjA0OTAsIDAwMjQgKHIyIEhQUU9FTSkKKFhFTikgQUNQSTogWFNE
VCBEODQ3ODA4MCwgMDA3QyAocjEgSFBRT0VNIFNMSUMtQ1BDICAxMDcyMDA5IEFNSSAgICAgMTAw
MTMpCihYRU4pIEFDUEk6IEZBQ1AgRDg0ODE5NDgsIDAxMEMgKHI1IEhQUU9FTSBTTElDLUNQQyAg
MTA3MjAwOSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBEU0RUIEQ4NDc4MTg4LCA5N0I5IChy
MiBIUFFPRU0gU0xJQy1DUEMgICAgICAgIDAgSU5UTCAyMDA1MTExNykKKFhFTikgQUNQSTogRkFD
UyBEODU5NjA4MCwgMDA0MAooWEVOKSBBQ1BJOiBBUElDIEQ4NDgxQTU4LCAwMDkyIChyMyBIUFFP
RU0gU0xJQy1DUEMgIDEwNzIwMDkgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogRlBEVCBEODQ4
MUFGMCwgMDA0NCAocjEgSFBRT0VNIFNMSUMtQ1BDICAxMDcyMDA5IEFNSSAgICAgMTAwMTMpCihY
RU4pIEFDUEk6IE1DRkcgRDg0ODFCMzgsIDAwM0MgKHIxIEhQUU9FTSBTTElDLUNQQyAgMTA3MjAw
OSBNU0ZUICAgICAgIDk3KQooWEVOKSBBQ1BJOiBIUEVUIEQ4NDgxQjc4LCAwMDM4IChyMSBIUFFP
RU0gU0xJQy1DUEMgIDEwNzIwMDkgQU1JLiAgICAgICAgNSkKKFhFTikgQUNQSTogU1NEVCBEODQ4
MUJCMCwgMDM2RCAocjEgSFBRT0VNIFNMSUMtQ1BDICAgICAxMDAwIElOVEwgMjAwOTExMTIpCihY
RU4pIEFDUEk6IFNTRFQgRDg0ODFGMjAsIDA5QUEgKHIxIEhQUU9FTSBTTElDLUNQQyAgICAgMzAw
MCBJTlRMIDIwMDUxMTE3KQooWEVOKSBBQ1BJOiBTU0RUIEQ4NDgyOEQwLCAwQTkyIChyMSBIUFFP
RU0gU0xJQy1DUEMgICAgIDMwMDAgSU5UTCAyMDA1MTExNykKKFhFTikgQUNQSTogRE1BUiBEODQ4
MzM2OCwgMDBCOCAocjEgSFBRT0VNIFNMSUMtQ1BDICAgICAgICAxIElOVEwgICAgICAgIDEpCihY
RU4pIEFDUEk6IERCR1AgRDg0ODM0MjAsIDAwMzQgKHIxIEhQUU9FTSBTTElDLUNQQyAgMTA3MjAw
OSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBTU0RUIEQ4NDgzNDU4LCAwODRBIChyMSBIUFFP
RU0gU0xJQy1DUEMgICAgICAgIDEgTVNGVCAgMzAwMDAwMSkKKFhFTikgU3lzdGVtIFJBTTogMTIx
NTdNQiAoMTI0NDg4NjhrQikKKFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlzZWQKKFhFTikgQUNQ
STogMzIvNjRYIEZBQ1MgYWRkcmVzcyBtaXNtYXRjaCBpbiBGQURUIC0gZDg1OTYwODAvMDAwMDAw
MDAwMDAwMDAwMCwgdXNpbmcgMzIKKFhFTikgUHJvY2Vzc29yICMwIDc6MTAgQVBJQyB2ZXJzaW9u
IDIxCihYRU4pIFByb2Nlc3NvciAjMiA3OjEwIEFQSUMgdmVyc2lvbiAyMQooWEVOKSBQcm9jZXNz
b3IgIzQgNzoxMCBBUElDIHZlcnNpb24gMjEKKFhFTikgUHJvY2Vzc29yICM2IDc6MTAgQVBJQyB2
ZXJzaW9uIDIxCihYRU4pIFByb2Nlc3NvciAjMSA3OjEwIEFQSUMgdmVyc2lvbiAyMQooWEVOKSBQ
cm9jZXNzb3IgIzMgNzoxMCBBUElDIHZlcnNpb24gMjEKKFhFTikgUHJvY2Vzc29yICM1IDc6MTAg
QVBJQyB2ZXJzaW9uIDIxCihYRU4pIFByb2Nlc3NvciAjNyA3OjEwIEFQSUMgdmVyc2lvbiAyMQoo
WEVOKSBJT0FQSUNbMF06IGFwaWNfaWQgMCwgdmVyc2lvbiAzMiwgYWRkcmVzcyAweGZlYzAwMDAw
LCBHU0kgMC0yMwooWEVOKSBFbmFibGluZyBBUElDIG1vZGU6ICBGbGF0LiAgVXNpbmcgMSBJL08g
QVBJQ3MKKFhFTikgU3dpdGNoZWQgdG8gQVBJQyBkcml2ZXIgeDJhcGljX2NsdXN0ZXIuCihYRU4p
IFVzaW5nIHNjaGVkdWxlcjogU01QIENyZWRpdCBTY2hlZHVsZXIgKGNyZWRpdCkKKFhFTikgRGV0
ZWN0ZWQgMzM5Mi4zNzYgTUh6IHByb2Nlc3Nvci4KKFhFTikgSW5pdGluZyBtZW1vcnkgc2hhcmlu
Zy4KKFhFTikgeHN0YXRlX2luaXQ6IHVzaW5nIGNudHh0X3NpemU6IDB4MzQwIGFuZCBzdGF0ZXM6
IDB4NwooWEVOKSBJbnRlbCBWVC1kIGlvbW11IDAgc3VwcG9ydGVkIHBhZ2Ugc2l6ZXM6IDRrQi4K
KFhFTikgSW50ZWwgVlQtZCBpb21tdSAxIHN1cHBvcnRlZCBwYWdlIHNpemVzOiA0a0IuCihYRU4p
IEludGVsIFZULWQgU25vb3AgQ29udHJvbCBub3QgZW5hYmxlZC4KKFhFTikgSW50ZWwgVlQtZCBE
b20wIERNQSBQYXNzdGhyb3VnaCBub3QgZW5hYmxlZC4KKFhFTikgSW50ZWwgVlQtZCBRdWV1ZWQg
SW52YWxpZGF0aW9uIGVuYWJsZWQuCihYRU4pIEludGVsIFZULWQgSW50ZXJydXB0IFJlbWFwcGlu
ZyBlbmFibGVkLgooWEVOKSBJbnRlbCBWVC1kIFNoYXJlZCBFUFQgdGFibGVzIG5vdCBlbmFibGVk
LgooWEVOKSBJL08gdmlydHVhbGlzYXRpb24gZW5hYmxlZAooWEVOKSAgLSBEb20wIG1vZGU6IFJl
bGF4ZWQKKFhFTikgSW50ZXJydXB0IHJlbWFwcGluZyBlbmFibGVkCihYRU4pIEVuYWJsZWQgZGly
ZWN0ZWQgRU9JIHdpdGggaW9hcGljX2Fja19vbGQgb24hCihYRU4pIEVOQUJMSU5HIElPLUFQSUMg
SVJRcwooWEVOKSAgLT4gVXNpbmcgb2xkIEFDSyBtZXRob2QKKFhFTikgUGxhdGZvcm0gdGltZXIg
aXMgMTQuMzE4TUh6IEhQRVQKKFhFTikgQWxsb2NhdGVkIGNvbnNvbGUgcmluZyBvZiAxNiBLaUIu
CihYRU4pIFZNWDogU3VwcG9ydGVkIGFkdmFuY2VkIGZlYXR1cmVzOgooWEVOKSAgLSBBUElDIE1N
SU8gYWNjZXNzIHZpcnR1YWxpc2F0aW9uCihYRU4pICAtIEFQSUMgVFBSIHNoYWRvdwooWEVOKSAg
LSBFeHRlbmRlZCBQYWdlIFRhYmxlcyAoRVBUKQooWEVOKSAgLSBWaXJ0dWFsLVByb2Nlc3NvciBJ
ZGVudGlmaWVycyAoVlBJRCkKKFhFTikgIC0gVmlydHVhbCBOTUkKKFhFTikgIC0gTVNSIGRpcmVj
dC1hY2Nlc3MgYml0bWFwCihYRU4pICAtIFVucmVzdHJpY3RlZCBHdWVzdAooWEVOKSBIVk06IEFT
SURzIGVuYWJsZWQuCihYRU4pIEhWTTogVk1YIGVuYWJsZWQKKFhFTikgSFZNOiBIYXJkd2FyZSBB
c3Npc3RlZCBQYWdpbmcgKEhBUCkgZGV0ZWN0ZWQKKFhFTikgSFZNOiBIQVAgcGFnZSBzaXplczog
NGtCLCAyTUIKKFhFTikgQnJvdWdodCB1cCA4IENQVXMKKFhFTikgKioqIExPQURJTkcgRE9NQUlO
IDAgKioqCihYRU4pICBYZW4gIGtlcm5lbDogNjQtYml0LCBsc2IsIGNvbXBhdDMyCihYRU4pICBE
b20wIGtlcm5lbDogNjQtYml0LCBQQUUsIGxzYiwgcGFkZHIgMHgxMDAwMDAwIC0+IDB4MjNmYjAw
MAooWEVOKSBQSFlTSUNBTCBNRU1PUlkgQVJSQU5HRU1FTlQ6CihYRU4pICBEb20wIGFsbG9jLjog
ICAwMDAwMDAwMzBjMDAwMDAwLT4wMDAwMDAwMzEwMDAwMDAwICgxNDEwMzQ1IHBhZ2VzIHRvIGJl
IGFsbG9jYXRlZCkKKFhFTikgIEluaXQuIHJhbWRpc2s6IDAwMDAwMDAzMWUzMjkwMDAtPjAwMDAw
MDAzMWZkZmZlMzIKKFhFTikgVklSVFVBTCBNRU1PUlkgQVJSQU5HRU1FTlQ6CihYRU4pICBMb2Fk
ZWQga2VybmVsOiBmZmZmZmZmZjgxMDAwMDAwLT5mZmZmZmZmZjgyM2ZiMDAwCihYRU4pICBJbml0
LiByYW1kaXNrOiBmZmZmZmZmZjgyM2ZiMDAwLT5mZmZmZmZmZjgzZWQxZTMyCihYRU4pICBQaHlz
LU1hY2ggbWFwOiBmZmZmZmZmZjgzZWQyMDAwLT5mZmZmZmZmZjg0OWMyMDAwCihYRU4pICBTdGFy
dCBpbmZvOiAgICBmZmZmZmZmZjg0OWMyMDAwLT5mZmZmZmZmZjg0OWMyNGI0CihYRU4pICBQYWdl
IHRhYmxlczogICBmZmZmZmZmZjg0OWMzMDAwLT5mZmZmZmZmZjg0OWVjMDAwCihYRU4pICBCb290
IHN0YWNrOiAgICBmZmZmZmZmZjg0OWVjMDAwLT5mZmZmZmZmZjg0OWVkMDAwCihYRU4pICBUT1RB
TDogICAgICAgICBmZmZmZmZmZjgwMDAwMDAwLT5mZmZmZmZmZjg0YzAwMDAwCihYRU4pICBFTlRS
WSBBRERSRVNTOiBmZmZmZmZmZjgxZDJkMWYwCihYRU4pIERvbTAgaGFzIG1heGltdW0gOCBWQ1BV
cwooWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU06IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lLgooWEVOKSBJbml0aWFsIGxv
dyBtZW1vcnkgdmlycSB0aHJlc2hvbGQgc2V0IGF0IDB4NDAwMCBwYWdlcy4KKFhFTikgU3RkLiBM
b2dsZXZlbDogRXJyb3JzIGFuZCB3YXJuaW5ncwooWEVOKSBHdWVzdCBMb2dsZXZlbDogTm90aGlu
ZyAoUmF0ZS1saW1pdGVkOiBFcnJvcnMgYW5kIHdhcm5pbmdzKQooWEVOKSBYZW4gaXMgcmVsaW5x
dWlzaGluZyBWR0EgY29uc29sZS4KKFhFTikgKioqIFNlcmlhbCBpbnB1dCAtPiBET00wICh0eXBl
ICdDVFJMLWEnIHRocmVlIHRpbWVzIHRvIHN3aXRjaCBpbnB1dCB0byBYZW4pCihYRU4pIEZyZWVk
IDI4MGtCIGluaXQgbWVtb3J5Lgo=
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="domainU.txt"
Content-Disposition: attachment; filename="domainU.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7esm4

bmFtZSA9ICJwZXJ1biIKYnVpbGRlciA9ICJodm0iCmRldmljZV9tb2RlbF92ZXJzaW9uID0gInFl
bXUteGVuLXRyYWRpdGlvbmFsIgoKI21lbW9yeSA9IDUxMgojbWVtb3J5ID0gMTAyNAptZW1vcnkg
PSA0MDk2CQkKI21lbW9yeSA9IDgxOTIJCQojc2hhZG93X21lbW9yeSA9IDEwMjQKdmNwdXMgPSA4
CnNlcmlhbCA9ICJwdHkiCnhlbl9wbGF0Zm9ybV9wY2kgPSAxCmtleW1hcCA9ICJzbCIKb25fcmVi
b290ID0gImRlc3Ryb3kiCgojZ2Z4X3Bhc3N0aHJ1PTEKcGNpID0gWyIwMDowMi4wIl0KcGNpX3Bl
cm1pc3NpdmU9MQpwY2lfcG93ZXJfbWdtdD0xCnBjaV9tc2l0cmFuc2xhdGU9MQoKdmlmID0gWyJp
cD0xOTIuMTY4LjEwMC4xMjQvMzIiXQoKZGlzayA9IFsicGh5Oi9kZXYvc2RhLGhkYSx3IiwicGh5
Oi9kZXYvdmdwZXJ1bi9sdnJvb3QsaGRiLHciLCJwaHk6L2Rldi92Z3BlcnVuL2x2ZGF0YSxoZGMs
dyIsInBoeTovZGV2L3ZncGVydW4vbHZtaXJyb3IsaGRkLHciXQpib290ID0gImMiCgpzZGwgPSAw
CnZuYyA9IDEKdm5jbGlzdGVuID0gIiIKdm5jcGFzc3dkID0gIiIKc3BpY2UgPSAwCg==
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="domU_dmesg.txt"
Content-Disposition: attachment; filename="domU_dmesg.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7eso5

WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0ClsgICAgMC4w
MDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdQpbICAgIDAuMDAwMDAwXSBJbml0
aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHVhY2N0ClsgICAgMC4wMDAwMDBdIExpbnV4IHZlcnNp
b24gMy4xNC4xLTAzMTQwMS1nZW5lcmljIChhcHdAZ29tZWlzYSkgKGdjYyB2ZXJzaW9uIDQuNi4z
IChVYnVudHUvTGluYXJvIDQuNi4zLTF1YnVudHU1KSApICMyMDE0MDQxNDEyMjAgU01QIE1vbiBB
cHIgMTQgMTY6MjE6NDggVVRDIDIwMTQKWyAgICAwLjAwMDAwMF0gQ29tbWFuZCBsaW5lOiBCT09U
X0lNQUdFPS92bWxpbnV6LTMuMTQuMS0wMzE0MDEtZ2VuZXJpYyByb290PS9kZXYvbWFwcGVyL3Zn
cGVydW4tbHZyb290IHJvIGlvbW11PTEgaW50ZWxfaW9tbXU9b24gbW9kcHJvYmUuYmxhY2tsaXN0
PWk5MTUKWyAgICAwLjAwMDAwMF0gS0VSTkVMIHN1cHBvcnRlZCBjcHVzOgpbICAgIDAuMDAwMDAw
XSAgIEludGVsIEdlbnVpbmVJbnRlbApbICAgIDAuMDAwMDAwXSAgIEFNRCBBdXRoZW50aWNBTUQK
WyAgICAwLjAwMDAwMF0gICBDZW50YXVyIENlbnRhdXJIYXVscwpbICAgIDAuMDAwMDAwXSBlODIw
OiBCSU9TLXByb3ZpZGVkIHBoeXNpY2FsIFJBTSBtYXA6ClsgICAgMC4wMDAwMDBdIEJJT1MtZTgy
MDogW21lbSAweDAwMDAwMDAwMDAwMDAwMDAtMHgwMDAwMDAwMDAwMDlkZmZmXSB1c2FibGUKWyAg
ICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDA5ZTAwMC0weDAwMDAwMDAw
MDAwOWZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAw
MDAwMDAwZTAwMDAtMHgwMDAwMDAwMDAwMGZmZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBC
SU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDAwMTAwMDAwLTB4MDAwMDAwMDBkZmZmZmZmZl0gdXNh
YmxlClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmMwMDAwMDAtMHgw
MDAwMDAwMGZmZmZmZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0g
MHgwMDAwMDAwMTAwMDAwMDAwLTB4MDAwMDAwMDExZmJmZmZmZl0gdXNhYmxlClsgICAgMC4wMDAw
MDBdIE5YIChFeGVjdXRlIERpc2FibGUpIHByb3RlY3Rpb246IGFjdGl2ZQpbICAgIDAuMDAwMDAw
XSBTTUJJT1MgMi40IHByZXNlbnQuClsgICAgMC4wMDAwMDBdIERNSTogWGVuIEhWTSBkb21VLCBC
SU9TIDQuNC4xIDA5LzA3LzIwMTQKWyAgICAwLjAwMDAwMF0gSHlwZXJ2aXNvciBkZXRlY3RlZDog
WGVuIEhWTQpbICAgIDAuMDAwMDAwXSBYZW4gdmVyc2lvbiA0LjQuClsgICAgMC4wMDAwMDBdIFhl
biBQbGF0Zm9ybSBQQ0k6IEkvTyBwcm90b2NvbCB2ZXJzaW9uIDEKWyAgICAwLjAwMDAwMF0gTmV0
ZnJvbnQgYW5kIHRoZSBYZW4gcGxhdGZvcm0gUENJIGRyaXZlciBoYXZlIGJlZW4gY29tcGlsZWQg
Zm9yIHRoaXMga2VybmVsOiB1bnBsdWcgZW11bGF0ZWQgTklDcy4KWyAgICAwLjAwMDAwMF0gQmxr
ZnJvbnQgYW5kIHRoZSBYZW4gcGxhdGZvcm0gUENJIGRyaXZlciBoYXZlIGJlZW4gY29tcGlsZWQg
Zm9yIHRoaXMga2VybmVsOiB1bnBsdWcgZW11bGF0ZWQgZGlza3MuClsgICAgMC4wMDAwMDBdIFlv
dSBtaWdodCBoYXZlIHRvIGNoYW5nZSB0aGUgcm9vdCBkZXZpY2UKWyAgICAwLjAwMDAwMF0gZnJv
bSAvZGV2L2hkW2EtZF0gdG8gL2Rldi94dmRbYS1kXQpbICAgIDAuMDAwMDAwXSBpbiB5b3VyIHJv
b3Q9IGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9uClsgICAgMC4wMDAwMDBdIEhWTU9QX3BhZ2V0
YWJsZV9keWluZyBub3Qgc3VwcG9ydGVkClsgICAgMC4wMDAwMDBdIGU4MjA6IHVwZGF0ZSBbbWVt
IDB4MDAwMDAwMDAtMHgwMDAwMGZmZl0gdXNhYmxlID09PiByZXNlcnZlZApbICAgIDAuMDAwMDAw
XSBlODIwOiByZW1vdmUgW21lbSAweDAwMGEwMDAwLTB4MDAwZmZmZmZdIHVzYWJsZQpbICAgIDAu
MDAwMDAwXSBObyBBR1AgYnJpZGdlIGZvdW5kClsgICAgMC4wMDAwMDBdIGU4MjA6IGxhc3RfcGZu
ID0gMHgxMWZjMDAgbWF4X2FyY2hfcGZuID0gMHg0MDAwMDAwMDAKWyAgICAwLjAwMDAwMF0gTVRS
UiBkZWZhdWx0IHR5cGU6IHdyaXRlLWJhY2sKWyAgICAwLjAwMDAwMF0gTVRSUiBmaXhlZCByYW5n
ZXMgZW5hYmxlZDoKWyAgICAwLjAwMDAwMF0gICAwMDAwMC05RkZGRiB3cml0ZS1iYWNrClsgICAg
MC4wMDAwMDBdICAgQTAwMDAtQkZGRkYgd3JpdGUtY29tYmluaW5nClsgICAgMC4wMDAwMDBdICAg
QzAwMDAtRkZGRkYgd3JpdGUtYmFjawpbICAgIDAuMDAwMDAwXSBNVFJSIHZhcmlhYmxlIHJhbmdl
cyBlbmFibGVkOgpbICAgIDAuMDAwMDAwXSAgIDAgYmFzZSAwRTAwMDAwMDAgbWFzayBGRjAwMDAw
MDAgdW5jYWNoYWJsZQpbICAgIDAuMDAwMDAwXSAgIDEgYmFzZSAwRjAwMDAwMDAgbWFzayBGRjgw
MDAwMDAgdW5jYWNoYWJsZQpbICAgIDAuMDAwMDAwXSAgIDIgYmFzZSAwRjgwMDAwMDAgbWFzayBG
RkMwMDAwMDAgdW5jYWNoYWJsZQpbICAgIDAuMDAwMDAwXSAgIDMgZGlzYWJsZWQKWyAgICAwLjAw
MDAwMF0gICA0IGRpc2FibGVkClsgICAgMC4wMDAwMDBdICAgNSBkaXNhYmxlZApbICAgIDAuMDAw
MDAwXSAgIDYgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gICA3IGRpc2FibGVkClsgICAgMC4wMDAw
MDBdIHg4NiBQQVQgZW5hYmxlZDogY3B1IDAsIG9sZCAweDcwNDA2MDAwNzA0MDYsIG5ldyAweDcw
MTA2MDAwNzAxMDYKWyAgICAwLjAwMDAwMF0gZTgyMDogbGFzdF9wZm4gPSAweGUwMDAwIG1heF9h
cmNoX3BmbiA9IDB4NDAwMDAwMDAwClsgICAgMC4wMDAwMDBdIGZvdW5kIFNNUCBNUC10YWJsZSBh
dCBbbWVtIDB4MDAwZmI3MTAtMHgwMDBmYjcxZl0gbWFwcGVkIGF0IFtmZmZmODgwMDAwMGZiNzEw
XQpbICAgIDAuMDAwMDAwXSBTY2FubmluZyAxIGFyZWFzIGZvciBsb3cgbWVtb3J5IGNvcnJ1cHRp
b24KWyAgICAwLjAwMDAwMF0gQmFzZSBtZW1vcnkgdHJhbXBvbGluZSBhdCBbZmZmZjg4MDAwMDA5
ODAwMF0gOTgwMDAgc2l6ZSAyNDU3NgpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5n
OiBbbWVtIDB4MDAwMDAwMDAtMHgwMDBmZmZmZl0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgwMDAw
MDAwMC0weDAwMGZmZmZmXSBwYWdlIDRrClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMWZkYTAwMCwg
MHgwMWZkYWZmZl0gUEdUQUJMRQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDFmZGIwMDAsIDB4MDFm
ZGJmZmZdIFBHVEFCTEUKWyAgICAwLjAwMDAwMF0gQlJLIFsweDAxZmRjMDAwLCAweDAxZmRjZmZm
XSBQR1RBQkxFClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHgxMWZh
MDAwMDAtMHgxMWZiZmZmZmZdClsgICAgMC4wMDAwMDBdICBbbWVtIDB4MTFmYTAwMDAwLTB4MTFm
YmZmZmZmXSBwYWdlIDJNClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMWZkZDAwMCwgMHgwMWZkZGZm
Zl0gUEdUQUJMRQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4MTFj
MDAwMDAwLTB4MTFmOWZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDExYzAwMDAwMC0weDEx
ZjlmZmZmZl0gcGFnZSAyTQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVt
IDB4MTAwMDAwMDAwLTB4MTFiZmZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDEwMDAwMDAw
MC0weDExYmZmZmZmZl0gcGFnZSAyTQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5n
OiBbbWVtIDB4MDAxMDAwMDAtMHhkZmZmZmZmZl0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgwMDEw
MDAwMC0weDAwMWZmZmZmXSBwYWdlIDRrClsgICAgMC4wMDAwMDBdICBbbWVtIDB4MDAyMDAwMDAt
MHhkZmZmZmZmZl0gcGFnZSAyTQpbICAgIDAuMDAwMDAwXSBSQU1ESVNLOiBbbWVtIDB4MzRhNDIw
MDAtMHgzNjUxOGZmZl0KWyAgICAwLjAwMDAwMF0gQUNQSTogUlNEUCAwMDAwMDAwMDAwMGVhMDIw
IDAwMDAyNCAodjAyICAgIFhlbikKWyAgICAwLjAwMDAwMF0gQUNQSTogWFNEVCAwMDAwMDAwMGZj
MDEwMTEwIDAwMDA1NCAodjAxICAgIFhlbiAgICAgIEhWTSAwMDAwMDAwMCBIVk1MIDAwMDAwMDAw
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBGQUNQIDAwMDAwMDAwZmMwMGZkZDAgMDAwMEY0ICh2MDQg
ICAgWGVuICAgICAgSFZNIDAwMDAwMDAwIEhWTUwgMDAwMDAwMDApClsgICAgMC4wMDAwMDBdIEFD
UEk6IERTRFQgMDAwMDAwMDBmYzAwNDBlMCAwMEJDNkUgKHYwMiAgICBYZW4gICAgICBIVk0gMDAw
MDAwMDAgSU5UTCAyMDE0MDcyNCkKWyAgICAwLjAwMDAwMF0gQUNQSTogRkFDUyAwMDAwMDAwMGZj
MDA0MGEwIDAwMDA0MApbICAgIDAuMDAwMDAwXSBBQ1BJOiBBUElDIDAwMDAwMDAwZmMwMGZlZDAg
MDAwMEQ4ICh2MDIgICAgWGVuICAgICAgSFZNIDAwMDAwMDAwIEhWTUwgMDAwMDAwMDApClsgICAg
MC4wMDAwMDBdIEFDUEk6IEhQRVQgMDAwMDAwMDBmYzAxMDAyMCAwMDAwMzggKHYwMSAgICBYZW4g
ICAgICBIVk0gMDAwMDAwMDAgSFZNTCAwMDAwMDAwMCkKWyAgICAwLjAwMDAwMF0gQUNQSTogV0FF
VCAwMDAwMDAwMGZjMDEwMDYwIDAwMDAyOCAodjAxICAgIFhlbiAgICAgIEhWTSAwMDAwMDAwMCBI
Vk1MIDAwMDAwMDAwKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBTU0RUIDAwMDAwMDAwZmMwMTAwOTAg
MDAwMDMxICh2MDIgICAgWGVuICAgICAgSFZNIDAwMDAwMDAwIElOVEwgMjAxNDA3MjQpClsgICAg
MC4wMDAwMDBdIEFDUEk6IFNTRFQgMDAwMDAwMDBmYzAxMDBkMCAwMDAwMzEgKHYwMiAgICBYZW4g
ICAgICBIVk0gMDAwMDAwMDAgSU5UTCAyMDE0MDcyNCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTG9j
YWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDAKWyAgICAwLjAwMDAwMF0gTm8gTlVNQSBjb25maWd1
cmF0aW9uIGZvdW5kClsgICAgMC4wMDAwMDBdIEZha2luZyBhIG5vZGUgYXQgW21lbSAweDAwMDAw
MDAwMDAwMDAwMDAtMHgwMDAwMDAwMTFmYmZmZmZmXQpbICAgIDAuMDAwMDAwXSBJbml0bWVtIHNl
dHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAtMHgxMWZiZmZmZmZdClsgICAgMC4wMDAwMDBdICAg
Tk9ERV9EQVRBIFttZW0gMHgxMWZiZjgwMDAtMHgxMWZiZmNmZmZdClsgICAgMC4wMDAwMDBdICBb
ZmZmZmVhMDAwMDAwMDAwMC1mZmZmZWEwMDA0N2ZmZmZmXSBQTUQgLT4gW2ZmZmY4ODAxMWIyMDAw
MDAtZmZmZjg4MDExZjFmZmZmZl0gb24gbm9kZSAwClsgICAgMC4wMDAwMDBdIFpvbmUgcmFuZ2Vz
OgpbICAgIDAuMDAwMDAwXSAgIERNQSAgICAgIFttZW0gMHgwMDAwMTAwMC0weDAwZmZmZmZmXQpb
ICAgIDAuMDAwMDAwXSAgIERNQTMyICAgIFttZW0gMHgwMTAwMDAwMC0weGZmZmZmZmZmXQpbICAg
IDAuMDAwMDAwXSAgIE5vcm1hbCAgIFttZW0gMHgxMDAwMDAwMDAtMHgxMWZiZmZmZmZdClsgICAg
MC4wMDAwMDBdIE1vdmFibGUgem9uZSBzdGFydCBmb3IgZWFjaCBub2RlClsgICAgMC4wMDAwMDBd
IEVhcmx5IG1lbW9yeSBub2RlIHJhbmdlcwpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVt
IDB4MDAwMDEwMDAtMHgwMDA5ZGZmZl0KWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDogW21lbSAw
eDAwMTAwMDAwLTB4ZGZmZmZmZmZdClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHgx
MDAwMDAwMDAtMHgxMWZiZmZmZmZdClsgICAgMC4wMDAwMDBdIE9uIG5vZGUgMCB0b3RhbHBhZ2Vz
OiAxMDQ3NDUzClsgICAgMC4wMDAwMDBdICAgRE1BIHpvbmU6IDY0IHBhZ2VzIHVzZWQgZm9yIG1l
bW1hcApbICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiAyMSBwYWdlcyByZXNlcnZlZApbICAgIDAu
MDAwMDAwXSAgIERNQSB6b25lOiAzOTk3IHBhZ2VzLCBMSUZPIGJhdGNoOjAKWyAgICAwLjAwMDAw
MF0gICBETUEzMiB6b25lOiAxNDI3MiBwYWdlcyB1c2VkIGZvciBtZW1tYXAKWyAgICAwLjAwMDAw
MF0gICBETUEzMiB6b25lOiA5MTM0MDggcGFnZXMsIExJRk8gYmF0Y2g6MzEKWyAgICAwLjAwMDAw
MF0gICBOb3JtYWwgem9uZTogMjAzMiBwYWdlcyB1c2VkIGZvciBtZW1tYXAKWyAgICAwLjAwMDAw
MF0gICBOb3JtYWwgem9uZTogMTMwMDQ4IHBhZ2VzLCBMSUZPIGJhdGNoOjMxClsgICAgMC4wMDAw
MDBdIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4YjAwOApbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
b2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMApbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAo
YWNwaV9pZFsweDAwXSBsYXBpY19pZFsweDAwXSBlbmFibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDAxXSBsYXBpY19pZFsweDAyXSBlbmFibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAyXSBsYXBpY19pZFsweDA0XSBlbmFibGVkKQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAzXSBsYXBpY19pZFsweDA2XSBl
bmFibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDA0XSBsYXBpY19p
ZFsweDA4XSBlbmFibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDA1
XSBsYXBpY19pZFsweDBhXSBlbmFibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDA2XSBsYXBpY19pZFsweDBjXSBlbmFibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDA3XSBsYXBpY19pZFsweDBlXSBlbmFibGVkKQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDA4XSBsYXBpY19pZFsweDEwXSBkaXNhYmxlZCkKWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwOV0gbGFwaWNfaWRbMHgxMl0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MGFdIGxhcGljX2lk
WzB4MTRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBi
XSBsYXBpY19pZFsweDE2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHgwY10gbGFwaWNfaWRbMHgxOF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDIChhY3BpX2lkWzB4MGRdIGxhcGljX2lkWzB4MWFdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBlXSBsYXBpY19pZFsweDFjXSBkaXNhYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogSU9BUElDIChpZFsweDAxXSBhZGRyZXNzWzB4ZmVjMDAwMDBd
IGdzaV9iYXNlWzBdKQpbICAgIDAuMDAwMDAwXSBJT0FQSUNbMF06IGFwaWNfaWQgMSwgdmVyc2lv
biAxNywgYWRkcmVzcyAweGZlYzAwMDAwLCBHU0kgMC00NwpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
TlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSA1IGdsb2JhbF9pcnEgNSBs
b3cgbGV2ZWwpClsgICAgMC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJx
IDEwIGdsb2JhbF9pcnEgMTAgbG93IGxldmVsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JD
X09WUiAoYnVzIDAgYnVzX2lycSAxMSBnbG9iYWxfaXJxIDExIGxvdyBsZXZlbCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
UlEyIHVzZWQgYnkgb3ZlcnJpZGUuClsgICAgMC4wMDAwMDBdIEFDUEk6IElSUTUgdXNlZCBieSBv
dmVycmlkZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJROSB1c2VkIGJ5IG92ZXJyaWRlLgpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBJUlExMCB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBJUlExMSB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBVc2luZyBBQ1BJIChN
QURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KWyAgICAwLjAwMDAwMF0gQUNQ
STogSFBFVCBpZDogMHg4MDg2YTIwMSBiYXNlOiAweGZlZDAwMDAwClsgICAgMC4wMDAwMDBdIHNt
cGJvb3Q6IEFsbG93aW5nIDE1IENQVXMsIDcgaG90cGx1ZyBDUFVzClsgICAgMC4wMDAwMDBdIG5y
X2lycXNfZ3NpOiA2NApbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5
OiBbbWVtIDB4MDAwOWUwMDAtMHgwMDA5ZmZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVy
ZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweDAwMGEwMDAwLTB4MDAwZGZmZmZdClsgICAgMC4wMDAw
MDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHgwMDBlMDAwMC0weDAwMGZm
ZmZmXQpbICAgIDAuMDAwMDAwXSBQTTogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4
ZGIyMDAwMDAtMHhkZjFmZmZmZl0KWyAgICAwLjAwMDAwMF0gUE06IFJlZ2lzdGVyZWQgbm9zYXZl
IG1lbW9yeTogW21lbSAweGUwMDAwMDAwLTB4ZmJmZmZmZmZdClsgICAgMC4wMDAwMDBdIFBNOiBS
ZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmYzAwMDAwMC0weGZmZmZmZmZmXQpbICAg
IDAuMDAwMDAwXSBlODIwOiBbbWVtIDB4ZTAwMDAwMDAtMHhmYmZmZmZmZl0gYXZhaWxhYmxlIGZv
ciBQQ0kgZGV2aWNlcwpbICAgIDAuMDAwMDAwXSBCb290aW5nIHBhcmF2aXJ0dWFsaXplZCBrZXJu
ZWwgb24gWGVuIEhWTQpbICAgIDAuMDAwMDAwXSBzZXR1cF9wZXJjcHU6IE5SX0NQVVM6MjU2IG5y
X2NwdW1hc2tfYml0czoyNTYgbnJfY3B1X2lkczoxNSBucl9ub2RlX2lkczoxClsgICAgMC4wMDAw
MDBdIFBFUkNQVTogRW1iZWRkZWQgMjkgcGFnZXMvY3B1IEBmZmZmODgwMTFmODAwMDAwIHM4NjUy
OCByODE5MiBkMjQwNjQgdTEzMTA3MgpbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBzODY1Mjgg
cjgxOTIgZDI0MDY0IHUxMzEwNzIgYWxsb2M9MSoyMDk3MTUyClsgICAgMC4wMDAwMDBdIHBjcHUt
YWxsb2M6IFswXSAwMCAwMSAwMiAwMyAwNCAwNSAwNiAwNyAwOCAwOSAxMCAxMSAxMiAxMyAxNCAt
LSAKWyAgICAwLjAwMDAwMF0gQnVpbHQgMSB6b25lbGlzdHMgaW4gTm9kZSBvcmRlciwgbW9iaWxp
dHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdlczogMTAzMTA2NApbICAgIDAuMDAwMDAwXSBQb2xp
Y3kgem9uZTogTm9ybWFsClsgICAgMC4wMDAwMDBdIEtlcm5lbCBjb21tYW5kIGxpbmU6IEJPT1Rf
SU1BR0U9L3ZtbGludXotMy4xNC4xLTAzMTQwMS1nZW5lcmljIHJvb3Q9L2Rldi9tYXBwZXIvdmdw
ZXJ1bi1sdnJvb3Qgcm8gaW9tbXU9MSBpbnRlbF9pb21tdT1vbiBtb2Rwcm9iZS5ibGFja2xpc3Q9
aTkxNQpbICAgIDAuMDAwMDAwXSBJbnRlbC1JT01NVTogZW5hYmxlZApbICAgIDAuMDAwMDAwXSBQ
SUQgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogMywgMzI3NjggYnl0ZXMpClsgICAg
MC4wMDAwMDBdIHhzYXZlOiBlbmFibGVkIHhzdGF0ZV9idiAweDcsIGNudHh0IHNpemUgMHgzNDAK
WyAgICAwLjAwMDAwMF0gQ2hlY2tpbmcgYXBlcnR1cmUuLi4KWyAgICAwLjAwMDAwMF0gTm8gQUdQ
IGJyaWRnZSBmb3VuZApbICAgIDAuMDAwMDAwXSBDYWxnYXJ5OiBkZXRlY3RpbmcgQ2FsZ2FyeSB2
aWEgQklPUyBFQkRBIGFyZWEKWyAgICAwLjAwMDAwMF0gQ2FsZ2FyeTogVW5hYmxlIHRvIGxvY2F0
ZSBSaW8gR3JhbmRlIHRhYmxlIGluIEVCREEgLSBiYWlsaW5nIQpbICAgIDAuMDAwMDAwXSBNZW1v
cnk6IDQwMTIzODBLLzQxODk4MTJLIGF2YWlsYWJsZSAoNzY0Mksga2VybmVsIGNvZGUsIDExMDlL
IHJ3ZGF0YSwgMzU5Mksgcm9kYXRhLCAxMzU2SyBpbml0LCAxNDMySyBic3MsIDE3NzQzMksgcmVz
ZXJ2ZWQpClsgICAgMC4wMDAwMDBdIFNMVUI6IEhXYWxpZ249NjQsIE9yZGVyPTAtMywgTWluT2Jq
ZWN0cz0wLCBDUFVzPTE1LCBOb2Rlcz0xClsgICAgMC4wMDAwMDBdIEhpZXJhcmNoaWNhbCBSQ1Ug
aW1wbGVtZW50YXRpb24uClsgICAgMC4wMDAwMDBdIAlSQ1UgZHludGljay1pZGxlIGdyYWNlLXBl
cmlvZCBhY2NlbGVyYXRpb24gaXMgZW5hYmxlZC4KWyAgICAwLjAwMDAwMF0gCVJDVSByZXN0cmlj
dGluZyBDUFVzIGZyb20gTlJfQ1BVUz0yNTYgdG8gbnJfY3B1X2lkcz0xNS4KWyAgICAwLjAwMDAw
MF0gCU9mZmxvYWQgUkNVIGNhbGxiYWNrcyBmcm9tIGFsbCBDUFVzClsgICAgMC4wMDAwMDBdIAlP
ZmZsb2FkIFJDVSBjYWxsYmFja3MgZnJvbSBDUFVzOiAwLTE0LgpbICAgIDAuMDAwMDAwXSBSQ1U6
IEFkanVzdGluZyBnZW9tZXRyeSBmb3IgcmN1X2Zhbm91dF9sZWFmPTE2LCBucl9jcHVfaWRzPTE1
ClsgICAgMC4wMDAwMDBdIE5SX0lSUVM6MTY2NDAgbnJfaXJxczoxMjA4IDE2ClsgICAgMC4wMDAw
MDBdIHhlbjpldmVudHM6IFVzaW5nIEZJRk8tYmFzZWQgQUJJClsgICAgMC4wMDAwMDBdIHhlbjpl
dmVudHM6IFhlbiBIVk0gY2FsbGJhY2sgdmVjdG9yIGZvciBldmVudCBkZWxpdmVyeSBpcyBlbmFi
bGVkClsgICAgMC4wMDAwMDBdIENvbnNvbGU6IGNvbG91ciBkdW1teSBkZXZpY2UgODB4MjUKWyAg
ICAwLjAwMDAwMF0gY29uc29sZSBbdHR5MF0gZW5hYmxlZApbICAgIDAuMDAwMDAwXSBhbGxvY2F0
ZWQgMTY3NzcyMTYgYnl0ZXMgb2YgcGFnZV9jZ3JvdXAKWyAgICAwLjAwMDAwMF0gcGxlYXNlIHRy
eSAnY2dyb3VwX2Rpc2FibGU9bWVtb3J5JyBvcHRpb24gaWYgeW91IGRvbid0IHdhbnQgbWVtb3J5
IGNncm91cHMKWyAgICAwLjAwMDAwMF0gaHBldCBjbG9ja2V2ZW50IHJlZ2lzdGVyZWQKWyAgICAw
LjAwMDAwMF0gdHNjOiBEZXRlY3RlZCAzMzkyLjQxMiBNSHogcHJvY2Vzc29yClsgICAgMC4wMDgw
MDBdIENhbGlicmF0aW5nIGRlbGF5IGxvb3AgKHNraXBwZWQpLCB2YWx1ZSBjYWxjdWxhdGVkIHVz
aW5nIHRpbWVyIGZyZXF1ZW5jeS4uIDY3ODQuODIgQm9nb01JUFMgKGxwaj0xMzU2OTY0OCkKWyAg
ICAwLjAwODAwMF0gcGlkX21heDogZGVmYXVsdDogMzI3NjggbWluaW11bTogMzAxClsgICAgMC4w
MDgwMDBdIEFDUEk6IENvcmUgcmV2aXNpb24gMjAxMzEyMTgKWyAgICAwLjEyNzk1Nl0gQUNQSTog
QWxsIEFDUEkgVGFibGVzIHN1Y2Nlc3NmdWxseSBhY3F1aXJlZApbICAgIDAuMTI4NDA4XSBTZWN1
cml0eSBGcmFtZXdvcmsgaW5pdGlhbGl6ZWQKWyAgICAwLjEyODUyOF0gQXBwQXJtb3I6IEFwcEFy
bW9yIGluaXRpYWxpemVkClsgICAgMC4xMjg1OTZdIFlhbWE6IGJlY29taW5nIG1pbmRmdWwuClsg
ICAgMC4xMzgyODRdIERlbnRyeSBjYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUyNDI4OCAob3Jk
ZXI6IDEwLCA0MTk0MzA0IGJ5dGVzKQpbICAgIDAuMTU5MDA5XSBJbm9kZS1jYWNoZSBoYXNoIHRh
YmxlIGVudHJpZXM6IDI2MjE0NCAob3JkZXI6IDksIDIwOTcxNTIgYnl0ZXMpClsgICAgMC4xNjcx
ODFdIE1vdW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogODE5MiAob3JkZXI6IDQsIDY1NTM2
IGJ5dGVzKQpbICAgIDAuMTY3NDM3XSBNb3VudHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmll
czogODE5MiAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQpbICAgIDAuMTcwNjUyXSBJbml0aWFsaXpp
bmcgY2dyb3VwIHN1YnN5cyBtZW1vcnkKWyAgICAwLjE3MDc1OV0gSW5pdGlhbGl6aW5nIGNncm91
cCBzdWJzeXMgZGV2aWNlcwpbICAgIDAuMTcwODMxXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5
cyBmcmVlemVyClsgICAgMC4xNzA5MDRdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIG5ldF9j
bHMKWyAgICAwLjE3MDk3Nl0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgYmxraW8KWyAgICAw
LjE3MTA0Nl0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgcGVyZl9ldmVudApbICAgIDAuMTcx
MTMyXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBodWdldGxiClsgICAgMC4xNzE0MDZdIENQ
VTogUGh5c2ljYWwgUHJvY2Vzc29yIElEOiAwClsgICAgMC4xNzE0NzRdIENQVTogUHJvY2Vzc29y
IENvcmUgSUQ6IDAKWyAgICAwLjE3MTc4MF0gbWNlOiBDUFUgc3VwcG9ydHMgMiBNQ0UgYmFua3MK
WyAgICAwLjE3MTg2N10gTGFzdCBsZXZlbCBpVExCIGVudHJpZXM6IDRLQiA1MTIsIDJNQiA4LCA0
TUIgOApbICAgIDAuMTcxODY3XSBMYXN0IGxldmVsIGRUTEIgZW50cmllczogNEtCIDUxMiwgMk1C
IDMyLCA0TUIgMzIsIDFHQiAwClsgICAgMC4xNzE4NjddIHRsYl9mbHVzaGFsbF9zaGlmdDogMgpb
ICAgIDAuMTcyMjc3XSBGcmVlaW5nIFNNUCBhbHRlcm5hdGl2ZXMgbWVtb3J5OiAyOEsgKGZmZmZm
ZmZmODFlNmEwMDAgLSBmZmZmZmZmZjgxZTcxMDAwKQpbICAgIDAuMTc1MTM4XSBmdHJhY2U6IGFs
bG9jYXRpbmcgMzE1MTAgZW50cmllcyBpbiAxMjQgcGFnZXMKWyAgICAwLjI1ODE4Nl0gU3dpdGNo
ZWQgQVBJQyByb3V0aW5nIHRvIHBoeXNpY2FsIGZsYXQuClsgICAgMC4yNjA4MDldIC4uVElNRVI6
IHZlY3Rvcj0weDMwIGFwaWMxPTAgcGluMT0yIGFwaWMyPTAgcGluMj0wClsgICAgMC4zMDEzMTNd
IHNtcGJvb3Q6IENQVTA6IEludGVsKFIpIENvcmUoVE0pIGk3LTM3NzAgQ1BVIEAgMy40MEdIeiAo
ZmFtOiAwNiwgbW9kZWw6IDNhLCBzdGVwcGluZzogMDkpClsgICAgMC4zMDIyNjhdIFhlbjogdXNp
bmcgdmNwdW9wIHRpbWVyIGludGVyZmFjZQpbICAgIDAuMzAyMzIwXSBpbnN0YWxsaW5nIFhlbiB0
aW1lciBmb3IgQ1BVIDAKWyAgICAwLjMwNDAwMF0gY3B1IDAgc3BpbmxvY2sgZXZlbnQgaXJxIDY5
ClsgICAgMC4zMzkzNjldIFBlcmZvcm1hbmNlIEV2ZW50czogdW5zdXBwb3J0ZWQgcDYgQ1BVIG1v
ZGVsIDU4IG5vIFBNVSBkcml2ZXIsIHNvZnR3YXJlIGV2ZW50cyBvbmx5LgpbICAgIDAuNDAwMTg2
XSBOTUkgd2F0Y2hkb2c6IGRpc2FibGVkIChjcHUwKTogaGFyZHdhcmUgZXZlbnRzIG5vdCBlbmFi
bGVkClsgICAgMC40MDQ3MzNdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMQpbICAgIDAu
NDA3MDMzXSB4ODY6IEJvb3RpbmcgU01QIGNvbmZpZ3VyYXRpb246ClsgICAgMC40MDc0ODldIC4u
Li4gbm9kZSAgIzAsIENQVXM6ICAgICAgICAjMWNwdSAxIHNwaW5sb2NrIGV2ZW50IGlycSA3NQpb
ICAgIDAuNDI1MzY3XSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDIKWyAgICAwLjQyNzYz
Ml0gICAjMmNwdSAyIHNwaW5sb2NrIGV2ZW50IGlycSA4MQpbICAgIDAuNDQ1Mjc0XSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDMKWyAgICAwLjQ0NzczN10gICAjM2NwdSAzIHNwaW5sb2Nr
IGV2ZW50IGlycSA4NwpbICAgIDAuNDY1NzExXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BV
IDQKWyAgICAwLjQ2ODEzNV0gICAjNGNwdSA0IHNwaW5sb2NrIGV2ZW50IGlycSA5MwpbICAgIDAu
NDg3Njg5XSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDUKWyAgICAwLjQ4OTk4MF0gICAj
NWNwdSA1IHNwaW5sb2NrIGV2ZW50IGlycSA5OQpbICAgIDAuNTA5NDg3XSBpbnN0YWxsaW5nIFhl
biB0aW1lciBmb3IgQ1BVIDYKWyAgICAwLjUxMTk0OV0gICAjNmNwdSA2IHNwaW5sb2NrIGV2ZW50
IGlycSAxMDUKWyAgICAwLjUzNTM4M10gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSA3Clsg
ICAgMC41Mzk5NjddICAgIzdjcHUgNyBzcGlubG9jayBldmVudCBpcnEgMTExClsgICAgMC41NTYx
OTVdIHg4NjogQm9vdGVkIHVwIDEgbm9kZSwgOCBDUFVzClsgICAgMC41NTY2NjJdIHNtcGJvb3Q6
IFRvdGFsIG9mIDggcHJvY2Vzc29ycyBhY3RpdmF0ZWQgKDU0Mjc4LjU5IEJvZ29NSVBTKQpbICAg
IDAuNTgwMTU2XSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQKWyAgICAwLjg2MzA1OV0gRVZNOiBzZWN1
cml0eS5zZWxpbnV4ClsgICAgMC44NjM1MjddIEVWTTogc2VjdXJpdHkuU01BQ0s2NApbICAgIDAu
ODYzOTkwXSBFVk06IHNlY3VyaXR5LmltYQpbICAgIDAuODY0MDkwXSBFVk06IHNlY3VyaXR5LmNh
cGFiaWxpdHkKWyAgICAwLjkxNjk0OF0gcGluY3RybCBjb3JlOiBpbml0aWFsaXplZCBwaW5jdHJs
IHN1YnN5c3RlbQpbICAgIDAuOTI0MDAwXSByZWd1bGF0b3ItZHVtbXk6IG5vIHBhcmFtZXRlcnMK
WyAgICAwLjkyNTA3M10gUlRDIHRpbWU6IDE4OjQzOjA4LCBkYXRlOiAwOS8xNC8xNApbICAgIDAu
OTI5NDkyXSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2ClsgICAgMC45NjQ2NzBd
IGNwdWlkbGU6IHVzaW5nIGdvdmVybm9yIGxhZGRlcgpbICAgIDAuOTY1MTYzXSBjcHVpZGxlOiB1
c2luZyBnb3Zlcm5vciBtZW51ClsgICAgMC45Njg3NjRdIEFDUEk6IGJ1cyB0eXBlIFBDSSByZWdp
c3RlcmVkClsgICAgMC45NjkyNTRdIGFjcGlwaHA6IEFDUEkgSG90IFBsdWcgUENJIENvbnRyb2xs
ZXIgRHJpdmVyIHZlcnNpb246IDAuNQpbICAgIDAuOTc2MDAwXSBQQ0k6IFVzaW5nIGNvbmZpZ3Vy
YXRpb24gdHlwZSAxIGZvciBiYXNlIGFjY2VzcwpbICAgIDEuMTY4NzA2XSBiaW86IGNyZWF0ZSBz
bGFiIDxiaW8tMD4gYXQgMApbICAgIDEuMTg0NjgyXSBBQ1BJOiBBZGRlZCBfT1NJKE1vZHVsZSBE
ZXZpY2UpClsgICAgMS4xODQ2ODJdIEFDUEk6IEFkZGVkIF9PU0koUHJvY2Vzc29yIERldmljZSkK
WyAgICAxLjE4NDY4Ml0gQUNQSTogQWRkZWQgX09TSSgzLjAgX1NDUCBFeHRlbnNpb25zKQpbICAg
IDEuMTg0NjgyXSBBQ1BJOiBBZGRlZCBfT1NJKFByb2Nlc3NvciBBZ2dyZWdhdG9yIERldmljZSkK
WyAgICAxLjYyNTI4MV0gQUNQSTogSW50ZXJwcmV0ZXIgZW5hYmxlZApbICAgIDEuNjI1NzcyXSBB
Q1BJIEV4Y2VwdGlvbjogQUVfTk9UX0ZPVU5ELCBXaGlsZSBldmFsdWF0aW5nIFNsZWVwIFN0YXRl
IFtcX1MxX10gKDIwMTMxMjE4L2h3eGZhY2UtNTgwKQpbICAgIDEuNjI2NzkwXSBBQ1BJIEV4Y2Vw
dGlvbjogQUVfTk9UX0ZPVU5ELCBXaGlsZSBldmFsdWF0aW5nIFNsZWVwIFN0YXRlIFtcX1MyX10g
KDIwMTMxMjE4L2h3eGZhY2UtNTgwKQpbICAgIDEuNjI4MzExXSBBQ1BJOiAoc3VwcG9ydHMgUzAg
UzMgUzQgUzUpClsgICAgMS42Mjg3NzddIEFDUEk6IFVzaW5nIElPQVBJQyBmb3IgaW50ZXJydXB0
IHJvdXRpbmcKWyAgICAxLjYzMDY3NV0gUENJOiBVc2luZyBob3N0IGJyaWRnZSB3aW5kb3dzIGZy
b20gQUNQSTsgaWYgbmVjZXNzYXJ5LCB1c2UgInBjaT1ub2NycyIgYW5kIHJlcG9ydCBhIGJ1Zwpb
ICAgIDIuMTgwMzE0XSBBQ1BJOiBObyBkb2NrIGRldmljZXMgZm91bmQuClsgICAgNC4zMzA2NTRd
IHJhbmRvbTogbm9uYmxvY2tpbmcgcG9vbCBpcyBpbml0aWFsaXplZApbICAgIDQuNjg3OTAxXSBB
Q1BJOiBQQ0kgUm9vdCBCcmlkZ2UgW1BDSTBdIChkb21haW4gMDAwMCBbYnVzIDAwLWZmXSkKWyAg
ICA0LjY4ODIxNV0gYWNwaSBQTlAwQTAzOjAwOiBfT1NDOiBPUyBzdXBwb3J0cyBbQVNQTSBDbG9j
a1BNIFNlZ21lbnRzIE1TSV0KWyAgICA0LjY4ODkzMF0gYWNwaSBQTlAwQTAzOjAwOiBfT1NDIGZh
aWxlZCAoQUVfTk9UX0ZPVU5EKTsgZGlzYWJsaW5nIEFTUE0KWyAgICA0LjY5NTEyNl0gYWNwaSBQ
TlAwQTAzOjAwOiBmYWlsIHRvIGFkZCBNTUNPTkZJRyBpbmZvcm1hdGlvbiwgY2FuJ3QgYWNjZXNz
IGV4dGVuZGVkIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHVuZGVyIHRoaXMgYnJpZGdlLgpbICAg
IDQuNzgwNTU2XSBhY3BpcGhwOiBTbG90IFswXSByZWdpc3RlcmVkClsgICAgNC43ODgyMTFdIGFj
cGlwaHA6IFNsb3QgWzNdIHJlZ2lzdGVyZWQKWyAgICA0Ljc5MTcyMl0gYWNwaXBocDogU2xvdCBb
NF0gcmVnaXN0ZXJlZApbICAgIDQuNzk0ODgxXSBhY3BpcGhwOiBTbG90IFs1XSByZWdpc3RlcmVk
ClsgICAgNC43OTg0OTNdIGFjcGlwaHA6IFNsb3QgWzZdIHJlZ2lzdGVyZWQKWyAgICA0LjgwMTkx
NV0gYWNwaXBocDogU2xvdCBbN10gcmVnaXN0ZXJlZApbICAgIDQuODA1NDIwXSBhY3BpcGhwOiBT
bG90IFs4XSByZWdpc3RlcmVkClsgICAgNC44MDg5NDVdIGFjcGlwaHA6IFNsb3QgWzldIHJlZ2lz
dGVyZWQKWyAgICA0LjgxMjM5Ml0gYWNwaXBocDogU2xvdCBbMTBdIHJlZ2lzdGVyZWQKWyAgICA0
LjgxNTk1OV0gYWNwaXBocDogU2xvdCBbMTFdIHJlZ2lzdGVyZWQKWyAgICA0LjgxODk0M10gYWNw
aXBocDogU2xvdCBbMTJdIHJlZ2lzdGVyZWQKWyAgICA0LjgyMjQ0Ml0gYWNwaXBocDogU2xvdCBb
MTNdIHJlZ2lzdGVyZWQKWyAgICA0LjgyNTkwOV0gYWNwaXBocDogU2xvdCBbMTRdIHJlZ2lzdGVy
ZWQKWyAgICA0LjgyOTQ1Ml0gYWNwaXBocDogU2xvdCBbMTVdIHJlZ2lzdGVyZWQKWyAgICA0Ljgz
MzExOF0gYWNwaXBocDogU2xvdCBbMTZdIHJlZ2lzdGVyZWQKWyAgICA0LjgzNjYwMF0gYWNwaXBo
cDogU2xvdCBbMTddIHJlZ2lzdGVyZWQKWyAgICA0Ljg0MDMwMF0gYWNwaXBocDogU2xvdCBbMThd
IHJlZ2lzdGVyZWQKWyAgICA0Ljg0MzcxMV0gYWNwaXBocDogU2xvdCBbMTldIHJlZ2lzdGVyZWQK
WyAgICA0Ljg0NzA0OV0gYWNwaXBocDogU2xvdCBbMjBdIHJlZ2lzdGVyZWQKWyAgICA0Ljg1MDQ0
MF0gYWNwaXBocDogU2xvdCBbMjFdIHJlZ2lzdGVyZWQKWyAgICA0Ljg1MzkwNF0gYWNwaXBocDog
U2xvdCBbMjJdIHJlZ2lzdGVyZWQKWyAgICA0Ljg1NzUzNV0gYWNwaXBocDogU2xvdCBbMjNdIHJl
Z2lzdGVyZWQKWyAgICA0Ljg2MDk3N10gYWNwaXBocDogU2xvdCBbMjRdIHJlZ2lzdGVyZWQKWyAg
ICA0Ljg2NDY1NF0gYWNwaXBocDogU2xvdCBbMjVdIHJlZ2lzdGVyZWQKWyAgICA0Ljg2ODIzNF0g
YWNwaXBocDogU2xvdCBbMjZdIHJlZ2lzdGVyZWQKWyAgICA0Ljg3NDMzMl0gYWNwaXBocDogU2xv
dCBbMjddIHJlZ2lzdGVyZWQKWyAgICA0Ljg4MDMxMV0gYWNwaXBocDogU2xvdCBbMjhdIHJlZ2lz
dGVyZWQKWyAgICA0Ljg4NjE3OV0gYWNwaXBocDogU2xvdCBbMjldIHJlZ2lzdGVyZWQKWyAgICA0
Ljg5MjQ1NV0gYWNwaXBocDogU2xvdCBbMzBdIHJlZ2lzdGVyZWQKWyAgICA0Ljg5NzQ0M10gYWNw
aXBocDogU2xvdCBbMzFdIHJlZ2lzdGVyZWQKWyAgICA0Ljg5OTkxM10gUENJIGhvc3QgYnJpZGdl
IHRvIGJ1cyAwMDAwOjAwClsgICAgNC45MDAxMzJdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMg
cmVzb3VyY2UgW2J1cyAwMC1mZl0KWyAgICA0LjkwMDY3Nl0gcGNpX2J1cyAwMDAwOjAwOiByb290
IGJ1cyByZXNvdXJjZSBbaW8gIDB4MDAwMC0weDBjZjddClsgICAgNC45MDEyNDddIHBjaV9idXMg
MDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAweDBkMDAtMHhmZmZmXQpbICAgIDQuOTAx
Nzk3XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHgwMDBhMDAwMC0w
eDAwMGJmZmZmXQpbICAgIDQuOTAyMzYxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291
cmNlIFttZW0gMHhlMDAwMDAwMC0weGZiZmZmZmZmXQpbICAgIDQuOTAzMzczXSBwY2kgMDAwMDow
MDowMC4wOiBbODA4NjoxMjM3XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgNC45MzAyNTNd
IHBjaSAwMDAwOjAwOjAxLjA6IFs4MDg2OjcwMDBdIHR5cGUgMDAgY2xhc3MgMHgwNjAxMDAKWyAg
ICA0Ljk1ODc5M10gcGNpIDAwMDA6MDA6MDEuMTogWzgwODY6NzAxMF0gdHlwZSAwMCBjbGFzcyAw
eDAxMDE4MApbICAgIDQuOTU5OTIxXSBwY2kgMDAwMDowMDowMS4xOiByZWcgMHgyMDogW2lvICAw
eGMyNDAtMHhjMjRmXQpbICAgIDQuOTg2NDAyXSBwY2kgMDAwMDowMDowMS4zOiBbODA4Njo3MTEz
XSB0eXBlIDAwIGNsYXNzIDB4MDY4MDAwClsgICAgNC45ODY0NzFdICogRm91bmQgUE0tVGltZXIg
QnVnIG9uIHRoZSBjaGlwc2V0LiBEdWUgdG8gd29ya2Fyb3VuZHMgZm9yIGEgYnVnLApbICAgIDQu
OTg2NDcxXSAqIHRoaXMgY2xvY2sgc291cmNlIGlzIHNsb3cuIENvbnNpZGVyIHRyeWluZyBvdGhl
ciBjbG9jayBzb3VyY2VzClsgICAgNC45ODkxNTddIHBjaSAwMDAwOjAwOjAxLjM6IHF1aXJrOiBb
aW8gIDB4YjAwMC0weGIwM2ZdIGNsYWltZWQgYnkgUElJWDQgQUNQSQpbICAgIDUuMDI1MjEzXSBw
Y2kgMDAwMDowMDowMi4wOiBbMTAxMzowMGI4XSB0eXBlIDAwIGNsYXNzIDB4MDMwMDAwClsgICAg
NS4wMjU5NThdIHBjaSAwMDAwOjAwOjAyLjA6IHJlZyAweDEwOiBbbWVtIDB4ZjAwMDAwMDAtMHhm
MWZmZmZmZiBwcmVmXQpbICAgIDUuMDI2NTQ5XSBwY2kgMDAwMDowMDowMi4wOiByZWcgMHgxNDog
W21lbSAweGYzNDAwMDAwLTB4ZjM0MDBmZmZdClsgICAgNS4wNTgwNjVdIHBjaSAwMDAwOjAwOjAz
LjA6IFs1ODUzOjAwMDFdIHR5cGUgMDAgY2xhc3MgMHhmZjgwMDAKWyAgICA1LjA1ODQ1MV0gcGNp
IDAwMDA6MDA6MDMuMDogcmVnIDB4MTA6IFtpbyAgMHhjMDAwLTB4YzBmZl0KWyAgICA1LjA1ODc1
MV0gcGNpIDAwMDA6MDA6MDMuMDogcmVnIDB4MTQ6IFttZW0gMHhmMjAwMDAwMC0weGYyZmZmZmZm
IHByZWZdClsgICAgNS4wODYzNjFdIHBjaSAwMDAwOjAwOjA1LjA6IFs4MDg2OjAxNjJdIHR5cGUg
MDAgY2xhc3MgMHgwMzAwMDAKWyAgICA1LjA5MjIxMV0gcGNpIDAwMDA6MDA6MDUuMDogcmVnIDB4
MTA6IFttZW0gMHhmMzAwMDAwMC0weGYzM2ZmZmZmIDY0Yml0XQpbICAgIDUuMTAwMjEzXSBwY2kg
MDAwMDowMDowNS4wOiByZWcgMHgxODogW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmYgNjRiaXQg
cHJlZl0KWyAgICA1LjEwODIwOF0gcGNpIDAwMDA6MDA6MDUuMDogcmVnIDB4MjA6IFtpbyAgMHhj
MjAwLTB4YzIzZl0KWyAgICA1LjE2NTM5OV0gQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTktB
XSAoSVJRcyAqNSAxMCAxMSkKWyAgICA1LjE2OTI2M10gQUNQSTogUENJIEludGVycnVwdCBMaW5r
IFtMTktCXSAoSVJRcyA1ICoxMCAxMSkKWyAgICA1LjE3Mjk2Nl0gQUNQSTogUENJIEludGVycnVw
dCBMaW5rIFtMTktDXSAoSVJRcyA1IDEwICoxMSkKWyAgICA1LjE3NjgyNV0gQUNQSTogUENJIElu
dGVycnVwdCBMaW5rIFtMTktEXSAoSVJRcyAqNSAxMCAxMSkKWyAgICA1LjUyNjM2Ml0gQUNQSTog
RW5hYmxlZCAyIEdQRXMgaW4gYmxvY2sgMDAgdG8gMEYKWyAgICA1LjUzMDQ5OF0geGVuOmJhbGxv
b246IEluaXRpYWxpc2luZyBiYWxsb29uIGRyaXZlcgpbICAgIDUuNTc0MDkzXSB4ZW5fYmFsbG9v
bjogSW5pdGlhbGlzaW5nIGJhbGxvb24gZHJpdmVyClsgICAgNS41OTAyNDJdIGluaXRfbWVtb3J5
X21hcHBpbmc6IFttZW0gMHgxMjAwMDAwMDAtMHgxMjdmZmZmZmZdClsgICAgNS41OTExODFdICBb
bWVtIDB4MTIwMDAwMDAwLTB4MTI3ZmZmZmZmXSBwYWdlIDJNClsgICAgNS41OTU5MjddIHZnYWFy
YjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAwMDowMDowMi4wLGRlY29kZXM9aW8rbWVtLG93bnM9aW8r
bWVtLGxvY2tzPW5vbmUKWyAgICA1LjU5NjQwOF0gdmdhYXJiOiBkZXZpY2UgYWRkZWQ6IFBDSTow
MDAwOjAwOjA1LjAsZGVjb2Rlcz1pbyttZW0sb3ducz1pbyttZW0sbG9ja3M9bm9uZQpbICAgIDUu
NTk3OTcyXSB2Z2FhcmI6IGxvYWRlZApbICAgIDUuNTk4NzQ5XSB2Z2FhcmI6IGJyaWRnZSBjb250
cm9sIHBvc3NpYmxlIDAwMDA6MDA6MDUuMApbICAgIDUuNTk5Njc5XSB2Z2FhcmI6IG5vIGJyaWRn
ZSBjb250cm9sIHBvc3NpYmxlIDAwMDA6MDA6MDIuMApbICAgIDUuNjE2NTA3XSBTQ1NJIHN1YnN5
c3RlbSBpbml0aWFsaXplZApbICAgIDUuNjE4MDIxXSBsaWJhdGEgdmVyc2lvbiAzLjAwIGxvYWRl
ZC4KWyAgICA1LjYyMDMzMl0gQUNQSTogYnVzIHR5cGUgVVNCIHJlZ2lzdGVyZWQKWyAgICA1LjYy
MTU1MF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JmcwpbICAg
IDUuNjIyNDA2XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGh1Ygpb
ICAgIDUuNjI0NDUxXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBkZXZpY2UgZHJpdmVyIHVzYgpb
ICAgIDUuNjMwNDA0XSBQQ0k6IFVzaW5nIEFDUEkgZm9yIElSUSByb3V0aW5nClsgICAgNS42MzIx
MDldIFBDSTogcGNpX2NhY2hlX2xpbmVfc2l6ZSBzZXQgdG8gNjQgYnl0ZXMKWyAgICA1LjYzMzQ5
NV0gZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVyIFttZW0gMHgwMDA5ZTAwMC0weDAwMDlmZmZmXQpb
ICAgIDUuNjMzNTQ4XSBlODIwOiByZXNlcnZlIFJBTSBidWZmZXIgW21lbSAweGRiMjAwMDAwLTB4
ZGJmZmZmZmZdClsgICAgNS42MzM2MDFdIGU4MjA6IHJlc2VydmUgUkFNIGJ1ZmZlciBbbWVtIDB4
MTFmYzAwMDAwLTB4MTFmZmZmZmZmXQpbICAgIDUuNjM2OTcwXSBOZXRMYWJlbDogSW5pdGlhbGl6
aW5nClsgICAgNS42Mzc0MTRdIE5ldExhYmVsOiAgZG9tYWluIGhhc2ggc2l6ZSA9IDEyOApbICAg
IDUuNjM3ODcyXSBOZXRMYWJlbDogIHByb3RvY29scyA9IFVOTEFCRUxFRCBDSVBTT3Y0ClsgICAg
NS42Mzg2OThdIE5ldExhYmVsOiAgdW5sYWJlbGVkIHRyYWZmaWMgYWxsb3dlZCBieSBkZWZhdWx0
ClsgICAgNS42NDIzNjRdIEhQRVQ6IDMgdGltZXJzIGluIHRvdGFsLCAwIHRpbWVycyB3aWxsIGJl
IHVzZWQgZm9yIHBlci1jcHUgdGltZXIKWyAgICA1LjY0MjkyN10gaHBldDA6IGF0IE1NSU8gMHhm
ZWQwMDAwMCwgSVJRcyAyLCA4LCAwClsgICAgNS42NDM1OTRdIGhwZXQwOiAzIGNvbXBhcmF0b3Jz
LCA2NC1iaXQgNjIuNTAwMDAwIE1IeiBjb3VudGVyClsgICAgNS42NjQ4NjZdIFN3aXRjaGVkIHRv
IGNsb2Nrc291cmNlIHhlbgpbICAgIDUuOTMxOTgzXSBBcHBBcm1vcjogQXBwQXJtb3IgRmlsZXN5
c3RlbSBFbmFibGVkClsgICAgNS45MzMzNzddIHBucDogUG5QIEFDUEkgaW5pdApbICAgIDUuOTM0
OTgzXSBBQ1BJOiBidXMgdHlwZSBQTlAgcmVnaXN0ZXJlZApbICAgIDUuOTM4NzU4XSBzeXN0ZW0g
MDA6MDA6IFttZW0gMHgwMDAwMDAwMC0weDAwMDlmZmZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQK
WyAgICA1LjkzOTM0NV0gc3lzdGVtIDAwOjAwOiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJ
RHMgUE5QMGMwMiAoYWN0aXZlKQpbICAgIDUuOTQyNzg4XSBwbnAgMDA6MDE6IFBsdWcgYW5kIFBs
YXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwMTAzIChhY3RpdmUpClsgICAgNS45NDY0MDVdIHN5c3Rl
bSAwMDowMjogW2lvICAweDA4YTAtMHgwOGEzXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDUuOTQ2
OTU3XSBzeXN0ZW0gMDA6MDI6IFtpbyAgMHgwY2MwLTB4MGNjZl0gaGFzIGJlZW4gcmVzZXJ2ZWQK
WyAgICA1Ljk0NzUxMV0gc3lzdGVtIDAwOjAyOiBbaW8gIDB4MDRkMC0weDA0ZDFdIGhhcyBiZWVu
IHJlc2VydmVkClsgICAgNS45NDgyMTFdIHN5c3RlbSAwMDowMjogUGx1ZyBhbmQgUGxheSBBQ1BJ
IGRldmljZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICA1Ljk0ODcxMl0gcG5wIDAwOjAzOiBb
ZG1hIDRdClsgICAgNS45NTEwMTBdIHBucCAwMDowMzogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmlj
ZSwgSURzIFBOUDAyMDAgKGFjdGl2ZSkKWyAgICA1Ljk1MTQ4OV0geGVuOiAtLT4gcGlycT0xNyAt
PiBpcnE9OCAoZ3NpPTgpClsgICAgNS45NTM4MzJdIHBucCAwMDowNDogUGx1ZyBhbmQgUGxheSBB
Q1BJIGRldmljZSwgSURzIFBOUDBiMDAgKGFjdGl2ZSkKWyAgICA1Ljk1NjUxN10gcG5wIDAwOjA1
OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMDgwMCAoYWN0aXZlKQpbICAgIDUu
OTU3MTc3XSB4ZW46IC0tPiBwaXJxPTE4IC0+IGlycT0xMiAoZ3NpPTEyKQpbICAgIDUuOTU5Mzgx
XSBwbnAgMDA6MDY6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwZjEzIChhY3Rp
dmUpClsgICAgNS45NjAyMDBdIHhlbjogLS0+IHBpcnE9MTkgLT4gaXJxPTEgKGdzaT0xKQpbICAg
IDUuOTYyNTY0XSBwbnAgMDA6MDc6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAw
MzAzIFBOUDAzMGIgKGFjdGl2ZSkKWyAgICA1Ljk2MzI1OF0geGVuOiAtLT4gcGlycT0yMCAtPiBp
cnE9NiAoZ3NpPTYpClsgICAgNS45NjMzMzZdIHBucCAwMDowODogW2RtYSAyXQpbICAgIDUuOTY1
Njc2XSBwbnAgMDA6MDg6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwNzAwIChh
Y3RpdmUpClsgICAgNS45NjY2MTddIHhlbjogLS0+IHBpcnE9MjEgLT4gaXJxPTQgKGdzaT00KQpb
ICAgIDUuOTY5MDI5XSBwbnAgMDA6MDk6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQ
TlAwNTAxIChhY3RpdmUpClsgICAgNS45NzA1NDJdIHhlbjogLS0+IHBpcnE9MjIgLT4gaXJxPTcg
KGdzaT03KQpbICAgIDUuOTcyOTA5XSBwbnAgMDA6MGE6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZp
Y2UsIElEcyBQTlAwNDAwIChhY3RpdmUpClsgICAgNS45NzY3MDRdIHN5c3RlbSAwMDowYjogW2lv
ICAweDEwYzAtMHgxMTQxXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDUuOTc3MjU2XSBzeXN0ZW0g
MDA6MGI6IFtpbyAgMHhiMDQ0LTB4YjA0N10gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA1Ljk3Nzgy
NF0gc3lzdGVtIDAwOjBiOiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGMwMiAo
YWN0aXZlKQpbICAgIDYuMjU4NDY5XSBwbnA6IFBuUCBBQ1BJOiBmb3VuZCAxMiBkZXZpY2VzClsg
ICAgNi4yNTg5MzhdIEFDUEk6IGJ1cyB0eXBlIFBOUCB1bnJlZ2lzdGVyZWQKWyAgICA2LjM0MjE2
Ml0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA0IFtpbyAgMHgwMDAwLTB4MGNmN10KWyAgICA2
LjM0MjI0MV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA1IFtpbyAgMHgwZDAwLTB4ZmZmZl0K
WyAgICA2LjM0MjMyMV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA2IFttZW0gMHgwMDBhMDAw
MC0weDAwMGJmZmZmXQpbICAgIDYuMzQyNDAyXSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDcg
W21lbSAweGUwMDAwMDAwLTB4ZmJmZmZmZmZdClsgICAgNi4zNDMxNDldIE5FVDogUmVnaXN0ZXJl
ZCBwcm90b2NvbCBmYW1pbHkgMgpbICAgIDYuMzUwMDAzXSBUQ1AgZXN0YWJsaXNoZWQgaGFzaCB0
YWJsZSBlbnRyaWVzOiAzMjc2OCAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykKWyAgICA2LjM1Mzg1
NF0gVENQIGJpbmQgaGFzaCB0YWJsZSBlbnRyaWVzOiAzMjc2OCAob3JkZXI6IDcsIDUyNDI4OCBi
eXRlcykKWyAgICA2LjM1NDQzM10gVENQOiBIYXNoIHRhYmxlcyBjb25maWd1cmVkIChlc3RhYmxp
c2hlZCAzMjc2OCBiaW5kIDMyNzY4KQpbICAgIDYuMzU1MDUwXSBUQ1A6IHJlbm8gcmVnaXN0ZXJl
ZApbICAgIDYuMzU1ODIyXSBVRFAgaGFzaCB0YWJsZSBlbnRyaWVzOiAyMDQ4IChvcmRlcjogNCwg
NjU1MzYgYnl0ZXMpClsgICAgNi4zNTY4OTNdIFVEUC1MaXRlIGhhc2ggdGFibGUgZW50cmllczog
MjA0OCAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQpbICAgIDYuMzU5NzEyXSBORVQ6IFJlZ2lzdGVy
ZWQgcHJvdG9jb2wgZmFtaWx5IDEKWyAgICA2LjM2MDQ3OV0gcGNpIDAwMDA6MDA6MDAuMDogTGlt
aXRpbmcgZGlyZWN0IFBDSS9QQ0kgdHJhbnNmZXJzClsgICAgNi4zNjEyMTVdIHBjaSAwMDAwOjAw
OjAxLjA6IFBJSVgzOiBFbmFibGluZyBQYXNzaXZlIFJlbGVhc2UKWyAgICA2LjM2MjU1M10gcGNp
IDAwMDA6MDA6MDEuMDogQWN0aXZhdGluZyBJU0EgRE1BIGhhbmcgd29ya2Fyb3VuZHMKWyAgICA2
LjM2MzMwOV0gcGNpIDAwMDA6MDA6MDIuMDogQm9vdCB2aWRlbyBkZXZpY2UKWyAgICA2LjM2MzU3
MF0gcGNpIDAwMDA6MDA6MDUuMDogQm9vdCB2aWRlbyBkZXZpY2UKWyAgICA2LjM2MzY0OV0gUENJ
OiBDTFMgMCBieXRlcywgZGVmYXVsdCA2NApbICAgIDYuMzY1MTMzXSBUcnlpbmcgdG8gdW5wYWNr
IHJvb3RmcyBpbWFnZSBhcyBpbml0cmFtZnMuLi4KWyAgIDE3LjgyOTAxMF0gRnJlZWluZyBpbml0
cmQgbWVtb3J5OiAyNzQ4NEsgKGZmZmY4ODAwMzRhNDIwMDAgLSBmZmZmODgwMDM2NTE5MDAwKQpb
ICAgMTcuODI5ODk2XSBQQ0ktRE1BOiBVc2luZyBzb2Z0d2FyZSBib3VuY2UgYnVmZmVyaW5nIGZv
ciBJTyAoU1dJT1RMQikKWyAgIDE3LjgzMDQzNV0gc29mdHdhcmUgSU8gVExCIFttZW0gMHhkYzAw
MDAwMC0weGUwMDAwMDAwXSAoNjRNQikgbWFwcGVkIGF0IFtmZmZmODgwMGRjMDAwMDAwLWZmZmY4
ODAwZGZmZmZmZmZdClsgICAxNy44NTM1NTldIFJBUEwgUE1VIGRldGVjdGVkLCBodyB1bml0IDJe
LTE2IEpvdWxlcywgQVBJIHVuaXQgaXMgMl4tMzIgSm91bGVzLCAzIGZpeGVkIGNvdW50ZXJzIDE2
Mzg0MCBtcyBvdmZsIHRpbWVyClsgICAxNy44NTY4NDldIFNjYW5uaW5nIGZvciBsb3cgbWVtb3J5
IGNvcnJ1cHRpb24gZXZlcnkgNjAgc2Vjb25kcwpbICAgMTcuODg3MTA2XSBmdXRleCBoYXNoIHRh
YmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiA2LCAyNjIxNDQgYnl0ZXMpClsgICAxNy44ODgzMTZd
IEluaXRpYWxpc2Ugc3lzdGVtIHRydXN0ZWQga2V5cmluZwpbICAgMTcuODkwOTEzXSBhdWRpdDog
aW5pdGlhbGl6aW5nIG5ldGxpbmsgc3Vic3lzIChkaXNhYmxlZCkKWyAgIDE3Ljg5MTU1N10gYXVk
aXQ6IHR5cGU9MjAwMCBhdWRpdCgxNDEwNzIwMjA1LjQ4MzoxKTogaW5pdGlhbGl6ZWQKWyAgIDE4
LjE2MDk5MV0gSHVnZVRMQiByZWdpc3RlcmVkIDIgTUIgcGFnZSBzaXplLCBwcmUtYWxsb2NhdGVk
IDAgcGFnZXMKWyAgIDE4LjQxNDMwOV0gemJ1ZDogbG9hZGVkClsgICAxOC40MjI2MTZdIFZGUzog
RGlzayBxdW90YXMgZHF1b3RfNi41LjIKWyAgIDE4LjQyNzU2MV0gRHF1b3QtY2FjaGUgaGFzaCB0
YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVyIDAsIDQwOTYgYnl0ZXMpClsgICAxOC40ODgwMjJdIGZ1
c2UgaW5pdCAoQVBJIHZlcnNpb24gNy4yMikKWyAgIDE4LjQ5MzE3OF0gbXNnbW5pIGhhcyBiZWVu
IHNldCB0byA3ODkwClsgICAxOC40OTU1NzldIEtleSB0eXBlIGJpZ19rZXkgcmVnaXN0ZXJlZApb
ICAgMTguNTE1MTkwXSBLZXkgdHlwZSBhc3ltbWV0cmljIHJlZ2lzdGVyZWQKWyAgIDE4LjUxNTY1
MF0gQXN5bW1ldHJpYyBrZXkgcGFyc2VyICd4NTA5JyByZWdpc3RlcmVkClsgICAxOC41MTc2ODBd
IEJsb2NrIGxheWVyIFNDU0kgZ2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lvbiAwLjQgbG9hZGVk
IChtYWpvciAyNTIpClsgICAxOC41MjA2NzhdIGlvIHNjaGVkdWxlciBub29wIHJlZ2lzdGVyZWQK
WyAgIDE4LjUyMTE2MF0gaW8gc2NoZWR1bGVyIGRlYWRsaW5lIHJlZ2lzdGVyZWQgKGRlZmF1bHQp
ClsgICAxOC41MjI4OTZdIGlvIHNjaGVkdWxlciBjZnEgcmVnaXN0ZXJlZApbICAgMTguNTI2NDQz
XSBwY2lfaG90cGx1ZzogUENJIEhvdCBQbHVnIFBDSSBDb3JlIHZlcnNpb246IDAuNQpbICAgMTgu
NTI3MzY0XSBwY2llaHA6IFBDSSBFeHByZXNzIEhvdCBQbHVnIENvbnRyb2xsZXIgRHJpdmVyIHZl
cnNpb246IDAuNApbICAgMTguNTMwMjI1XSBlZmlmYjogcHJvYmluZyBmb3IgZWZpZmIKWyAgIDE4
LjUzMjk1OV0gZWZpZmI6IGZyYW1lYnVmZmVyIGF0IDB4ZjAwMDAwMDAsIG1hcHBlZCB0byAweGZm
ZmZjOTAwMDA4MDAwMDAsIHVzaW5nIDE0MDhrLCB0b3RhbCAxNDA4awpbICAgMTguNTMzOTAyXSBl
ZmlmYjogbW9kZSBpcyA4MDB4NjAweDI0LCBsaW5lbGVuZ3RoPTI0MDAsIHBhZ2VzPTEKWyAgIDE4
LjUzNDM4Nl0gZWZpZmI6IHNjcm9sbGluZzogcmVkcmF3ClsgICAxOC41MzQ4NTZdIGVmaWZiOiBU
cnVlY29sb3I6IHNpemU9MDo4Ojg6OCwgc2hpZnQ9MDoxNjo4OjAKWyAgIDE4LjU0Mjc5OF0gQ29u
c29sZTogc3dpdGNoaW5nIHRvIGNvbG91ciBmcmFtZSBidWZmZXIgZGV2aWNlIDEwMHgzNwpbICAg
MTguNTQ2ODE4XSBmYjA6IEVGSSBWR0EgZnJhbWUgYnVmZmVyIGRldmljZQpbICAgMTguNTQ3NjQy
XSBpbnRlbF9pZGxlOiBkb2VzIG5vdCBydW4gb24gZmFtaWx5IDYgbW9kZWwgNTgKWyAgIDE4LjU1
MTQ2N10gaW5wdXQ6IFBvd2VyIEJ1dHRvbiBhcyAvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhQV1JC
TjowMC9pbnB1dC9pbnB1dDAKWyAgIDE4LjU1MTc4Ml0gQUNQSTogUG93ZXIgQnV0dG9uIFtQV1JG
XQpbICAgMTguNTUzNzE1XSBpbnB1dDogU2xlZXAgQnV0dG9uIGFzIC9kZXZpY2VzL0xOWFNZU1RN
OjAwL0xOWFNMUEJOOjAwL2lucHV0L2lucHV0MQpbICAgMTguNTU0MDMxXSBBQ1BJOiBTbGVlcCBC
dXR0b24gW1NMUEZdClsgICAxOC41Njk4NDldIEdIRVM6IEhFU1QgaXMgbm90IGVuYWJsZWQhClsg
ICAxOC41ODg0MTVdIHhlbjogLS0+IHBpcnE9MjMgLT4gaXJxPTI4IChnc2k9MjgpClsgICAxOC41
ODg3OTFdIHhlbjpncmFudF90YWJsZTogR3JhbnQgdGFibGVzIHVzaW5nIHZlcnNpb24gMSBsYXlv
dXQKWyAgIDE4LjU4OTA4OV0gR3JhbnQgdGFibGUgaW5pdGlhbGl6ZWQKWyAgIDE4LjU5OTUxOV0g
U2VyaWFsOiA4MjUwLzE2NTUwIGRyaXZlciwgMzIgcG9ydHMsIElSUSBzaGFyaW5nIGVuYWJsZWQK
WyAgIDE4LjYyNzQ1Nl0gMDA6MDk6IHR0eVMwIGF0IEkvTyAweDNmOCAoaXJxID0gNCwgYmFzZV9i
YXVkID0gMTE1MjAwKSBpcyBhIDE2NTUwQQpbICAgMTguNjg2NTI5XSBMaW51eCBhZ3BnYXJ0IGlu
dGVyZmFjZSB2MC4xMDMKWyAgIDE4Ljc1ODQ0Nl0gYnJkOiBtb2R1bGUgbG9hZGVkClsgICAxOC43
OTkzNThdIGxvb3A6IG1vZHVsZSBsb2FkZWQKWyAgIDE4LjgzMjQ4OV0gdHNjOiBSZWZpbmVkIFRT
QyBjbG9ja3NvdXJjZSBjYWxpYnJhdGlvbjogMzM5Mi4yOTAgTUh6ClsgICAxOC44NTUwNzNdIGF0
YV9waWl4IDAwMDA6MDA6MDEuMTogdmVyc2lvbiAyLjEzClsgICAxOC44NTg3MzddIGJsa2Zyb250
OiB4dmRhOiBmbHVzaCBkaXNrY2FjaGU6IGVuYWJsZWQ7IHBlcnNpc3RlbnQgZ3JhbnRzOiBlbmFi
bGVkOyBpbmRpcmVjdCBkZXNjcmlwdG9yczogZW5hYmxlZDsKWyAgIDE4Ljg4NDA0NV0gIHh2ZGE6
IHh2ZGExIHh2ZGEyIDwgeHZkYTUgPgpbICAgMTguODg5OTAxXSBzY3NpMCA6IGF0YV9waWl4Clsg
ICAxOC44OTc3MDldIHNjc2kxIDogYXRhX3BpaXgKWyAgIDE4LjkwMjg4OF0gYXRhMTogUEFUQSBt
YXggTVdETUEyIGNtZCAweDFmMCBjdGwgMHgzZjYgYm1kbWEgMHhjMjQwIGlycSAxNApbICAgMTgu
OTAyOTE1XSBhdGEyOiBQQVRBIG1heCBNV0RNQTIgY21kIDB4MTcwIGN0bCAweDM3NiBibWRtYSAw
eGMyNDggaXJxIDE1ClsgICAxOC45NDE3NDddIFNldHRpbmcgY2FwYWNpdHkgdG8gOTc2NzczMTY4
ClsgICAxOC45NDY0NzNdIGxpYnBoeTogRml4ZWQgTURJTyBCdXM6IHByb2JlZApbICAgMTguOTU3
MjExXSB4dmRhOiBkZXRlY3RlZCBjYXBhY2l0eSBjaGFuZ2UgZnJvbSAwIHRvIDUwMDEwNzg2MjAx
NgpbICAgMTguOTU5OTcxXSB0dW46IFVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIsIDEu
NgpbICAgMTguOTU5OTg0XSB0dW46IChDKSAxOTk5LTIwMDQgTWF4IEtyYXNueWFuc2t5IDxtYXhr
QHF1YWxjb21tLmNvbT4KWyAgIDE4Ljk2MzU2Ml0gUFBQIGdlbmVyaWMgZHJpdmVyIHZlcnNpb24g
Mi40LjIKWyAgIDE4Ljk2Njc5OV0geGVuX25ldGZyb250OiBJbml0aWFsaXNpbmcgWGVuIHZpcnR1
YWwgZXRoZXJuZXQgZHJpdmVyClsgICAxOC45ODI2MjddIGVoY2lfaGNkOiBVU0IgMi4wICdFbmhh
bmNlZCcgSG9zdCBDb250cm9sbGVyIChFSENJKSBEcml2ZXIKWyAgIDE4Ljk4MjY3M10gZWhjaS1w
Y2k6IEVIQ0kgUENJIHBsYXRmb3JtIGRyaXZlcgpbICAgMTguOTgzNjM1XSBlaGNpLXBsYXRmb3Jt
OiBFSENJIGdlbmVyaWMgcGxhdGZvcm0gZHJpdmVyClsgICAxOC45ODQ1OTZdIG9oY2lfaGNkOiBV
U0IgMS4xICdPcGVuJyBIb3N0IENvbnRyb2xsZXIgKE9IQ0kpIERyaXZlcgpbICAgMTguOTg0NjQ0
XSBvaGNpLXBjaTogT0hDSSBQQ0kgcGxhdGZvcm0gZHJpdmVyClsgICAxOC45ODU1NDVdIG9oY2kt
cGxhdGZvcm06IE9IQ0kgZ2VuZXJpYyBwbGF0Zm9ybSBkcml2ZXIKWyAgIDE4Ljk4NjIwN10gdWhj
aV9oY2Q6IFVTQiBVbml2ZXJzYWwgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBkcml2ZXIKWyAg
IDE4Ljk5MjUyMl0gaTgwNDI6IFBOUDogUFMvMiBDb250cm9sbGVyIFtQTlAwMzAzOlBTMkssUE5Q
MGYxMzpQUzJNXSBhdCAweDYwLDB4NjQgaXJxIDEsMTIKWyAgIDE4Ljk5NzI3OV0gc2VyaW86IGk4
MDQyIEtCRCBwb3J0IGF0IDB4NjAsMHg2NCBpcnEgMQpbICAgMTguOTk3MzY4XSBzZXJpbzogaTgw
NDIgQVVYIHBvcnQgYXQgMHg2MCwweDY0IGlycSAxMgpbICAgMTkuMDA2NzMwXSBtb3VzZWRldjog
UFMvMiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQpbICAgMTkuMDE5Nzc3XSBpbnB1
dDogQVQgVHJhbnNsYXRlZCBTZXQgMiBrZXlib2FyZCBhcyAvZGV2aWNlcy9wbGF0Zm9ybS9pODA0
Mi9zZXJpbzAvaW5wdXQvaW5wdXQyClsgICAxOS4wMjQwNThdIHJ0Y19jbW9zIDAwOjA0OiBydGMg
Y29yZTogcmVnaXN0ZXJlZCBydGNfY21vcyBhcyBydGMwClsgICAxOS4wMjQ1NzRdIHJ0Y19jbW9z
IDAwOjA0OiBhbGFybXMgdXAgdG8gb25lIGRheSwgMTE0IGJ5dGVzIG52cmFtLCBocGV0IGlycXMK
WyAgIDE5LjAyOTE2OV0gZGV2aWNlLW1hcHBlcjogdWV2ZW50OiB2ZXJzaW9uIDEuMC4zClsgICAx
OS4wMzIzNjddIGRldmljZS1tYXBwZXI6IGlvY3RsOiA0LjI3LjAtaW9jdGwgKDIwMTMtMTAtMzAp
IGluaXRpYWxpc2VkOiBkbS1kZXZlbEByZWRoYXQuY29tClsgICAxOS4wMzI2NzVdIGxlZHRyaWct
Y3B1OiByZWdpc3RlcmVkIHRvIGluZGljYXRlIGFjdGl2aXR5IG9uIENQVXMKWyAgIDE5LjAzNDg4
OF0gVENQOiBjdWJpYyByZWdpc3RlcmVkClsgICAxOS4wMzk5MTJdIE5FVDogUmVnaXN0ZXJlZCBw
cm90b2NvbCBmYW1pbHkgMTAKWyAgIDE5LjA0NzAyM10gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29s
IGZhbWlseSAxNwpbICAgMTkuMDQ3MjYwXSBLZXkgdHlwZSBkbnNfcmVzb2x2ZXIgcmVnaXN0ZXJl
ZApbICAgMTkuMDYzMjA3XSBMb2FkaW5nIGNvbXBpbGVkLWluIFguNTA5IGNlcnRpZmljYXRlcwpb
ICAgMTkuMDgwNTYxXSBMb2FkZWQgWC41MDkgY2VydCAnTWFncmF0aGVhOiBHbGFjaWVyIHNpZ25p
bmcga2V5OiAxYzBmMzJlNmZhMjRjMmQ4ZWUyNjU3ZjJmZmUwOTBiNTUzNzIwNGE2JwpbICAgMTku
MDgwOTIwXSByZWdpc3RlcmVkIHRhc2tzdGF0cyB2ZXJzaW9uIDEKWyAgIDE5LjIzODY1Nl0gYmxr
ZnJvbnQ6IHh2ZGI6IGZsdXNoIGRpc2tjYWNoZTogZW5hYmxlZDsgcGVyc2lzdGVudCBncmFudHM6
IGVuYWJsZWQ7IGluZGlyZWN0IGRlc2NyaXB0b3JzOiBlbmFibGVkOwpbICAgMTkuMjY1MjI0XSAg
eHZkYjogdW5rbm93biBwYXJ0aXRpb24gdGFibGUKWyAgIDE5LjI4Mjk4Ml0gU2V0dGluZyBjYXBh
Y2l0eSB0byA5NzY0ODY0MApbICAgMTkuMjkzOTQ5XSB4dmRiOiBkZXRlY3RlZCBjYXBhY2l0eSBj
aGFuZ2UgZnJvbSAwIHRvIDQ5OTk2MTAzNjgwClsgICAxOS4zMzUzNzhdIGJsa2Zyb250OiB4dmRj
OiBmbHVzaCBkaXNrY2FjaGU6IGVuYWJsZWQ7IHBlcnNpc3RlbnQgZ3JhbnRzOiBlbmFibGVkOyBp
bmRpcmVjdCBkZXNjcmlwdG9yczogZW5hYmxlZDsKWyAgIDE5LjM1OTgwMV0gIHh2ZGM6IHVua25v
d24gcGFydGl0aW9uIHRhYmxlClsgICAxOS4zNzA1MTFdIFNldHRpbmcgY2FwYWNpdHkgdG8gMzE0
NTcyODAwClsgICAxOS4zNzg3NjFdIHh2ZGM6IGRldGVjdGVkIGNhcGFjaXR5IGNoYW5nZSBmcm9t
IDAgdG8gMTYxMDYxMjczNjAwClsgICAxOS40MjA3NzBdIGJsa2Zyb250OiB4dmRkOiBmbHVzaCBk
aXNrY2FjaGU6IGVuYWJsZWQ7IHBlcnNpc3RlbnQgZ3JhbnRzOiBlbmFibGVkOyBpbmRpcmVjdCBk
ZXNjcmlwdG9yczogZW5hYmxlZDsKWyAgIDE5LjQ0Mzk3Ml0gIHh2ZGQ6IHVua25vd24gcGFydGl0
aW9uIHRhYmxlClsgICAxOS40NTQ1NDJdIFNldHRpbmcgY2FwYWNpdHkgdG8gMjA5NzE1MjAwClsg
ICAxOS40NjMxNjVdIHh2ZGQ6IGRldGVjdGVkIGNhcGFjaXR5IGNoYW5nZSBmcm9tIDAgdG8gMTA3
Mzc0MTgyNDAwClsgICAxOS44NzgwNzhdIEtleSB0eXBlIHRydXN0ZWQgcmVnaXN0ZXJlZApbICAg
MjAuNDM4OTUzXSBLZXkgdHlwZSBlbmNyeXB0ZWQgcmVnaXN0ZXJlZApbICAgMjAuNDgxNDQ1XSBB
cHBBcm1vcjogQXBwQXJtb3Igc2hhMSBwb2xpY3kgaGFzaGluZyBlbmFibGVkClsgICAyMC40OTI3
OTVdIElNQTogTm8gVFBNIGNoaXAgZm91bmQsIGFjdGl2YXRpbmcgVFBNLWJ5cGFzcyEKWyAgIDIw
LjUwNjU0Nl0geGVuYnVzX3Byb2JlX2Zyb250ZW5kOiBEZXZpY2Ugd2l0aCBubyBkcml2ZXI6IGRl
dmljZS92a2JkLzAKWyAgIDIwLjUxNDcwOF0geGVuYnVzX3Byb2JlX2Zyb250ZW5kOiBEZXZpY2Ug
d2l0aCBubyBkcml2ZXI6IGRldmljZS9wY2kvMApbICAgMjAuNTIyODY4XSByZWd1bGF0b3ItZHVt
bXk6IGRpc2FibGluZwpbICAgMjAuNTMzNzE0XSAgIE1hZ2ljIG51bWJlcjogMTQ6NjYzOjc0Ngpb
ICAgMjAuNTQyMDA5XSBydGNfY21vcyAwMDowNDogc2V0dGluZyBzeXN0ZW0gY2xvY2sgdG8gMjAx
NC0wOS0xNCAxODo0MzoyOCBVVEMgKDE0MTA3MjAyMDgpClsgICAyMC41NTMyMTRdIEJJT1MgRURE
IGZhY2lsaXR5IHYwLjE2IDIwMDQtSnVuLTI1LCAwIGRldmljZXMgZm91bmQKWyAgIDIwLjU2MTc4
M10gRUREIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUuClsgICAyMC41NzI2NzNdIFBNOiBIaWJl
cm5hdGlvbiBpbWFnZSBub3QgcHJlc2VudCBvciBjb3VsZCBub3QgYmUgbG9hZGVkLgpbICAgMjAu
NTgzMDE1XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiAxMzU2SyAoZmZmZmZmZmY4MWQx
NzAwMCAtIGZmZmZmZmZmODFlNmEwMDApClsgICAyMC41OTA4MjNdIFdyaXRlIHByb3RlY3Rpbmcg
dGhlIGtlcm5lbCByZWFkLW9ubHkgZGF0YTogMTIyODhrClsgICAyMC42NjkxNDVdIEZyZWVpbmcg
dW51c2VkIGtlcm5lbCBtZW1vcnk6IDU0MEsgKGZmZmY4ODAwMDE3NzkwMDAgLSBmZmZmODgwMDAx
ODAwMDAwKQpbICAgMjAuNzQwODM3XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA1MDRL
IChmZmZmODgwMDAxYjgyMDAwIC0gZmZmZjg4MDAwMWMwMDAwMCkKWyAgIDIxLjI3NzA5MF0gc3lz
dGVtZC11ZGV2ZFsxNzNdOiBzdGFydGluZyB2ZXJzaW9uIDIwNApbICAgMjEuNjA3NzI3XSBGREMg
MCBpcyBhIFM4MjA3OEIKWyAgIDIyLjkwNzkxMV0gaW5wdXQ6IEltRXhQUy8yIEdlbmVyaWMgRXhw
bG9yZXIgTW91c2UgYXMgL2RldmljZXMvcGxhdGZvcm0vaTgwNDIvc2VyaW8xL2lucHV0L2lucHV0
NApbICAgMjMuNjE5MjgyXSBiaW86IGNyZWF0ZSBzbGFiIDxiaW8tMT4gYXQgMQpbICAgMzIuNDE1
NTQwXSBFWFQ0LWZzIChkbS0wKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRh
IG1vZGUuIE9wdHM6IChudWxsKQpbICAgMzYuMzkzNTMwXSBpbml0OiB1cmVhZGFoZWFkIG1haW4g
cHJvY2VzcyAoNDUyKSB0ZXJtaW5hdGVkIHdpdGggc3RhdHVzIDUKWyAgIDM4Ljk3Mjg4OV0gRVhU
NC1mcyAoZG0tMCk6IHJlLW1vdW50ZWQuIE9wdHM6IGVycm9ycz1yZW1vdW50LXJvClsgICA0MS4z
NzI2OTVdIEVYVDQtZnMgKHh2ZGExKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBk
YXRhIG1vZGUuIE9wdHM6IChudWxsKQpbICAgNDEuNDg5NjUyXSBFWFQ0LWZzICh4dmRjKTogbW91
bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9wdHM6IChudWxsKQpbICAg
NDEuNzcyMzkyXSBFWFQ0LWZzICh4dmRkKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJl
ZCBkYXRhIG1vZGUuIE9wdHM6IChudWxsKQpbICAgNDIuMDMzMzU5XSBzeXN0ZW1kLXVkZXZkWzYw
Ml06IHN0YXJ0aW5nIHZlcnNpb24gMjA0ClsgICA0My4xMDkwMDddIGxwOiBkcml2ZXIgbG9hZGVk
IGJ1dCBubyBkZXZpY2VzIGZvdW5kClsgICA0My4zMjkxMzRdIHBwZGV2OiB1c2VyLXNwYWNlIHBh
cmFsbGVsIHBvcnQgZHJpdmVyClsgICA0My40MDQ4NDddIHBhcnBvcnRfcGMgMDA6MGE6IHJlcG9y
dGVkIGJ5IFBsdWcgYW5kIFBsYXkgQUNQSQpbICAgNDMuNDA2NjY4XSBwYXJwb3J0MDogUEMtc3R5
bGUgYXQgMHgzNzgsIGlycSA3IFtQQ1NQUCxUUklTVEFURV0KWyAgIDQzLjUyOTY4OV0gbHAwOiB1
c2luZyBwYXJwb3J0MCAoaW50ZXJydXB0LWRyaXZlbikuClsgICA0Ni4zMzQwNjhdIEJsdWV0b290
aDogQ29yZSB2ZXIgMi4xOApbICAgNDYuMzM0NDA1XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wg
ZmFtaWx5IDMxClsgICA0Ni4zMzQ0MDldIEJsdWV0b290aDogSENJIGRldmljZSBhbmQgY29ubmVj
dGlvbiBtYW5hZ2VyIGluaXRpYWxpemVkClsgICA0Ni4zMzQ1MDJdIEJsdWV0b290aDogSENJIHNv
Y2tldCBsYXllciBpbml0aWFsaXplZApbICAgNDYuMzM0NjAzXSBCbHVldG9vdGg6IEwyQ0FQIHNv
Y2tldCBsYXllciBpbml0aWFsaXplZApbICAgNDYuMzM0NzI0XSBCbHVldG9vdGg6IFNDTyBzb2Nr
ZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgIDQ2LjU4MTU2NV0gQmx1ZXRvb3RoOiBSRkNPTU0gVFRZ
IGxheWVyIGluaXRpYWxpemVkClsgICA0Ni41ODIwNDRdIEJsdWV0b290aDogUkZDT01NIHNvY2tl
dCBsYXllciBpbml0aWFsaXplZApbICAgNDYuNTgyMTU5XSBCbHVldG9vdGg6IFJGQ09NTSB2ZXIg
MS4xMQpbICAgNDcuMDI1MTIzXSBCbHVldG9vdGg6IEJORVAgKEV0aGVybmV0IEVtdWxhdGlvbikg
dmVyIDEuMwpbICAgNDcuMDI1MTM1XSBCbHVldG9vdGg6IEJORVAgZmlsdGVyczogcHJvdG9jb2wg
bXVsdGljYXN0ClsgICA0Ny4wMjUxNjBdIEJsdWV0b290aDogQk5FUCBzb2NrZXQgbGF5ZXIgaW5p
dGlhbGl6ZWQKWyAgIDQ3LjgzNTQwNl0gaW5pdDogY3VwcyBtYWluIHByb2Nlc3MgKDczOSkga2ls
bGVkIGJ5IEhVUCBzaWduYWwKWyAgIDQ3LjgzNjU4N10gaW5pdDogY3VwcyBtYWluIHByb2Nlc3Mg
ZW5kZWQsIHJlc3Bhd25pbmcKWyAgIDQ5LjI3NzI2OF0gcGlpeDRfc21idXMgMDAwMDowMDowMS4z
OiBTTUJ1cyBiYXNlIGFkZHJlc3MgdW5pbml0aWFsaXplZCAtIHVwZ3JhZGUgQklPUyBvciB1c2Ug
Zm9yY2VfYWRkcj0weGFkZHIKWyAgIDQ5LjY4MjA5M10gbWljcm9jb2RlOiBDUFUwIHNpZz0weDMw
NmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcwNDQ5N10gbWljcm9jb2RlOiBDUFUx
IHNpZz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcwNTAzMl0gbWljcm9j
b2RlOiBDUFUyIHNpZz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcwNTY5
Nl0gbWljcm9jb2RlOiBDUFUzIHNpZz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAg
IDQ5LjcwNjE0N10gbWljcm9jb2RlOiBDUFU0IHNpZz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9u
PTB4MTYKWyAgIDQ5LjcwNjQ3Ml0gbWljcm9jb2RlOiBDUFU1IHNpZz0weDMwNmE5LCBwZj0weDIs
IHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcwNzEyNl0gbWljcm9jb2RlOiBDUFU2IHNpZz0weDMwNmE5
LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcwNzM5N10gbWljcm9jb2RlOiBDUFU3IHNp
Zz0weDMwNmE5LCBwZj0weDIsIHJldmlzaW9uPTB4MTYKWyAgIDQ5LjcxMDIxOV0gbWljcm9jb2Rl
OiBNaWNyb2NvZGUgVXBkYXRlIERyaXZlcjogdjIuMDAgPHRpZ3JhbkBhaXZhemlhbi5mc25ldC5j
by51az4sIFBldGVyIE9ydWJhClsgICA0OS44ODc3NDRdIEFWWCB2ZXJzaW9uIG9mIGdjbV9lbmMv
ZGVjIGVuZ2FnZWQuClsgICA1MC44MjEzMDZdIGRldmljZS1tYXBwZXI6IG11bHRpcGF0aDogdmVy
c2lvbiAxLjYuMCBsb2FkZWQKWyAgIDUyLjkwOTU3NF0gaW5wdXQ6IFhlbiBWaXJ0dWFsIEtleWJv
YXJkIGFzIC9kZXZpY2VzL3ZpcnR1YWwvaW5wdXQvaW5wdXQ1ClsgICA1Mi45MjEwMjZdIGlucHV0
OiBYZW4gVmlydHVhbCBQb2ludGVyIGFzIC9kZXZpY2VzL3ZpcnR1YWwvaW5wdXQvaW5wdXQ2Clsg
ICA2Ni42NTI5NjldIGluaXQ6IHVkZXYtZmFsbGJhY2stZ3JhcGhpY3MgbWFpbiBwcm9jZXNzICgx
MDQ1KSB0ZXJtaW5hdGVkIHdpdGggc3RhdHVzIDEKWyAgIDY3LjU2OTYxOF0gQnJpZGdlIGZpcmV3
YWxsaW5nIHJlZ2lzdGVyZWQKWyAgIDY3LjY1MzkzOF0gZGV2aWNlIGV0aDAgZW50ZXJlZCBwcm9t
aXNjdW91cyBtb2RlClsgICA2Ny43MzA5MDldIHhlbmJyMDogcG9ydCAxKGV0aDApIGVudGVyZWQg
Zm9yd2FyZGluZyBzdGF0ZQpbICAgNjcuNzMwOTU1XSB4ZW5icjA6IHBvcnQgMShldGgwKSBlbnRl
cmVkIGZvcndhcmRpbmcgc3RhdGUKWyAgIDc1LjMyNDUwN10gaW5pdDogc2FtYmEtYWQtZGMgbWFp
biBwcm9jZXNzICgxMDI4KSB0ZXJtaW5hdGVkIHdpdGggc3RhdHVzIDEKWyAgIDc1Ljk3MzcyMl0g
aW5pdDogZmFpbHNhZmUgbWFpbiBwcm9jZXNzICg4OTIpIGtpbGxlZCBieSBURVJNIHNpZ25hbApb
ICAgODIuNzgwMTc0XSB4ZW5icjA6IHBvcnQgMShldGgwKSBlbnRlcmVkIGZvcndhcmRpbmcgc3Rh
dGUKWyAgIDk3Ljk5MzkwMF0gaW5pdDogYWxzYS1yZXN0b3JlIG1haW4gcHJvY2VzcyAoMTU4Mykg
dGVybWluYXRlZCB3aXRoIHN0YXR1cyAxOQo=
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset=US-ASCII; name="lspci_vv.txt"
Content-Disposition: attachment; filename="lspci_vv.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i02s7esr6

MDA6MDAuMCBIb3N0IGJyaWRnZTogSW50ZWwgQ29ycG9yYXRpb24gWGVvbiBFMy0xMjAwIHYyLzNy
ZCBHZW4gQ29yZSBwcm9jZXNzb3IgRFJBTSBDb250cm9sbGVyIChyZXYgMDkpCglTdWJzeXN0ZW06
IEhld2xldHQtUGFja2FyZCBDb21wYW55IERldmljZSAyYWQ1CglDb250cm9sOiBJL08tIE1lbSsg
QnVzTWFzdGVyKyBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5n
LSBTRVJSKyBGYXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RC
MkIrIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydCsgPlNFUlIt
IDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogMAoJQ2FwYWJpbGl0aWVzOiBbZTBdIFZlbmRvciBTcGVj
aWZpYyBJbmZvcm1hdGlvbjogTGVuPTBjIDw/PgoKMDA6MDIuMCBWR0EgY29tcGF0aWJsZSBjb250
cm9sbGVyOiBJbnRlbCBDb3Jwb3JhdGlvbiBYZW9uIEUzLTEyMDAgdjIvM3JkIEdlbiBDb3JlIHBy
b2Nlc3NvciBHcmFwaGljcyBDb250cm9sbGVyIChyZXYgMDkpIChwcm9nLWlmIDAwIFtWR0EgY29u
dHJvbGxlcl0pCglTdWJzeXN0ZW06IEhld2xldHQtUGFja2FyZCBDb21wYW55IERldmljZSAyYWQ1
CglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVyKyBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNu
b29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSLSBGYXN0QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBD
YXArIDY2TUh6LSBVREYtIEZhc3RCMkIrIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRB
Ym9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogMAoJSW50ZXJydXB0
OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDEwMgoJUmVnaW9uIDA6IE1lbW9yeSBhdCBmNzgwMDAwMCAo
NjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT00TV0KCVJlZ2lvbiAyOiBNZW1vcnkgYXQg
ZTAwMDAwMDAgKDY0LWJpdCwgcHJlZmV0Y2hhYmxlKSBbc2l6ZT0yNTZNXQoJUmVnaW9uIDQ6IEkv
TyBwb3J0cyBhdCBmMDAwIFtzaXplPTY0XQoJRXhwYW5zaW9uIFJPTSBhdCA8dW5hc3NpZ25lZD4g
W2Rpc2FibGVkXQoJQ2FwYWJpbGl0aWVzOiBbOTBdIE1TSTogRW5hYmxlKyBDb3VudD0xLzEgTWFz
a2FibGUtIDY0Yml0LQoJCUFkZHJlc3M6IGZlZTAwMDE4ICBEYXRhOiAwMDAwCglDYXBhYmlsaXRp
ZXM6IFtkMF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIKCQlGbGFnczogUE1FQ2xrLSBEU0kr
IEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1FKEQwLSxEMS0sRDItLEQzaG90LSxEM2NvbGQtKQoJ
CVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJ
Q2FwYWJpbGl0aWVzOiBbYTRdIFBDSSBBZHZhbmNlZCBGZWF0dXJlcwoJCUFGQ2FwOiBUUCsgRkxS
KwoJCUFGQ3RybDogRkxSLQoJCUFGU3RhdHVzOiBUUC0KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBp
OTE1CgowMDoxNC4wIFVTQiBjb250cm9sbGVyOiBJbnRlbCBDb3Jwb3JhdGlvbiA3IFNlcmllcy9D
MjEwIFNlcmllcyBDaGlwc2V0IEZhbWlseSBVU0IgeEhDSSBIb3N0IENvbnRyb2xsZXIgKHJldiAw
NCkgKHByb2ctaWYgMzAgW1hIQ0ldKQoJU3Vic3lzdGVtOiBIZXdsZXR0LVBhY2thcmQgQ29tcGFu
eSBEZXZpY2UgMmFkNQoJQ29udHJvbDogSS9PLSBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBN
ZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5U
eCsKCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCKyBQYXJFcnItIERFVlNFTD1tZWRp
dW0gPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJTGF0ZW5j
eTogMAoJSW50ZXJydXB0OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDEwMAoJUmVnaW9uIDA6IE1lbW9y
eSBhdCBmN2QwMDAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT02NEtdCglDYXBh
YmlsaXRpZXM6IFs3MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIKCQlGbGFnczogUE1FQ2xr
LSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0zNzVtQSBQTUUoRDAtLEQxLSxEMi0sRDNob3QrLEQz
Y29sZCspCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QrIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9
MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs4MF0gTVNJOiBFbmFibGUrIENvdW50PTEvOCBNYXNrYWJs
ZS0gNjRiaXQrCgkJQWRkcmVzczogMDAwMDAwMDBmZWUwMDI1OCAgRGF0YTogMDAwMAoJS2VybmVs
IGRyaXZlciBpbiB1c2U6IHhoY2lfaGNkCgowMDoxNi4wIENvbW11bmljYXRpb24gY29udHJvbGxl
cjogSW50ZWwgQ29ycG9yYXRpb24gNyBTZXJpZXMvQzIxMCBTZXJpZXMgQ2hpcHNldCBGYW1pbHkg
TUVJIENvbnRyb2xsZXIgIzEgKHJldiAwNCkKCVN1YnN5c3RlbTogSGV3bGV0dC1QYWNrYXJkIENv
bXBhbnkgRGV2aWNlIDJhZDUKCUNvbnRyb2w6IEkvTy0gTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNs
ZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlItIEZhc3RCMkItIERp
c0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9
ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRl
bmN5OiAwCglJbnRlcnJ1cHQ6IHBpbiBBIHJvdXRlZCB0byBJUlEgMTAzCglSZWdpb24gMDogTWVt
b3J5IGF0IGY3ZDFhMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTE2XQoJQ2Fw
YWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNs
ay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNj
b2xkKykKCQlTdGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0w
IFBNRS0KCUNhcGFiaWxpdGllczogWzhjXSBNU0k6IEVuYWJsZSsgQ291bnQ9MS8xIE1hc2thYmxl
LSA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTAwMmI4ICBEYXRhOiAwMDAwCglLZXJuZWwg
ZHJpdmVyIGluIHVzZTogbWVpX21lCgowMDoxYS4wIFVTQiBjb250cm9sbGVyOiBJbnRlbCBDb3Jw
b3JhdGlvbiA3IFNlcmllcy9DMjEwIFNlcmllcyBDaGlwc2V0IEZhbWlseSBVU0IgRW5oYW5jZWQg
SG9zdCBDb250cm9sbGVyICMyIChyZXYgMDQpIChwcm9nLWlmIDIwIFtFSENJXSkKCVN1YnN5c3Rl
bTogSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgRGV2aWNlIDJhZDUKCUNvbnRyb2w6IEkvTy0gTWVt
KyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBp
bmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFz
dEIyQisgUGFyRXJyLSBERVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5T
RVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRv
IElSUSAxNgoJUmVnaW9uIDA6IE1lbW9yeSBhdCBmN2QxODAwMCAoMzItYml0LCBub24tcHJlZmV0
Y2hhYmxlKSBbc2l6ZT0xS10KCUNhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZl
cnNpb24gMgoJCUZsYWdzOiBQTUVDbGstIERTSS0gRDEtIEQyLSBBdXhDdXJyZW50PTM3NW1BIFBN
RShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1F
LUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzU4XSBEZWJ1ZyBw
b3J0OiBCQVI9MSBvZmZzZXQ9MDBhMAoJQ2FwYWJpbGl0aWVzOiBbOThdIFBDSSBBZHZhbmNlZCBG
ZWF0dXJlcwoJCUFGQ2FwOiBUUCsgRkxSKwoJCUFGQ3RybDogRkxSLQoJCUFGU3RhdHVzOiBUUC0K
CUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBlaGNpLXBjaQoKMDA6MWIuMCBBdWRpbyBkZXZpY2U6IElu
dGVsIENvcnBvcmF0aW9uIDcgU2VyaWVzL0MyMTAgU2VyaWVzIENoaXBzZXQgRmFtaWx5IEhpZ2gg
RGVmaW5pdGlvbiBBdWRpbyBDb250cm9sbGVyIChyZXYgMDQpCglTdWJzeXN0ZW06IEhld2xldHQt
UGFja2FyZCBDb21wYW55IERldmljZSAyYWQ1CglDb250cm9sOiBJL08tIE1lbSsgQnVzTWFzdGVy
KyBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBG
YXN0QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkItIFBhckVy
ci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJ
TlR4LQoJTGF0ZW5jeTogMCwgQ2FjaGUgTGluZSBTaXplOiA2NCBieXRlcwoJSW50ZXJydXB0OiBw
aW4gQSByb3V0ZWQgdG8gSVJRIDEwNAoJUmVnaW9uIDA6IE1lbW9yeSBhdCBmN2QxMDAwMCAoNjQt
Yml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xNktdCglDYXBhYmlsaXRpZXM6IFs1MF0gUG93
ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIKCQlGbGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4
Q3VycmVudD01NW1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQw
IE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGll
czogWzYwXSBNU0k6IEVuYWJsZSsgQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKCQlBZGRyZXNz
OiAwMDAwMDAwMGZlZTAwMmY4ICBEYXRhOiAwMDAwCglDYXBhYmlsaXRpZXM6IFs3MF0gRXhwcmVz
cyAodjEpIFJvb3QgQ29tcGxleCBJbnRlZ3JhdGVkIEVuZHBvaW50LCBNU0kgMDAKCQlEZXZDYXA6
CU1heFBheWxvYWQgMTI4IGJ5dGVzLCBQaGFudEZ1bmMgMAoJCQlFeHRUYWctIFJCRS0KCQlEZXZD
dGw6CVJlcG9ydCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBv
cnRlZC0KCQkJUmx4ZE9yZC0gRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcC0KCQkJ
TWF4UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3Jy
RXJyLSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3cisgVHJhbnNQZW5kLQoJ
Q2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBWaXJ0dWFsIENoYW5uZWwKCQlDYXBzOglMUEVWQz0wIFJl
ZkNsaz0xMDBucyBQQVRFbnRyeUJpdHM9MQoJCUFyYjoJRml4ZWQtIFdSUjMyLSBXUlI2NC0gV1JS
MTI4LQoJCUN0cmw6CUFyYlNlbGVjdD1GaXhlZAoJCVN0YXR1czoJSW5Qcm9ncmVzcy0KCQlWQzA6
CUNhcHM6CVBBVE9mZnNldD0wMCBNYXhUaW1lU2xvdHM9MSBSZWpTbm9vcFRyYW5zLQoJCQlBcmI6
CUZpeGVkLSBXUlIzMi0gV1JSNjQtIFdSUjEyOC0gVFdSUjEyOC0gV1JSMjU2LQoJCQlDdHJsOglF
bmFibGUrIElEPTAgQXJiU2VsZWN0PUZpeGVkIFRDL1ZDPTAxCgkJCVN0YXR1czoJTmVnb1BlbmRp
bmctIEluUHJvZ3Jlc3MtCgkJVkMxOglDYXBzOglQQVRPZmZzZXQ9MDAgTWF4VGltZVNsb3RzPTEg
UmVqU25vb3BUcmFucy0KCQkJQXJiOglGaXhlZC0gV1JSMzItIFdSUjY0LSBXUlIxMjgtIFRXUlIx
MjgtIFdSUjI1Ni0KCQkJQ3RybDoJRW5hYmxlKyBJRD0xIEFyYlNlbGVjdD1GaXhlZCBUQy9WQz0y
MgoJCQlTdGF0dXM6CU5lZ29QZW5kaW5nLSBJblByb2dyZXNzLQoJQ2FwYWJpbGl0aWVzOiBbMTMw
IHYxXSBSb290IENvbXBsZXggTGluawoJCURlc2M6CVBvcnROdW1iZXI9MGYgQ29tcG9uZW50SUQ9
MDAgRWx0VHlwZT1Db25maWcKCQlMaW5rMDoJRGVzYzoJVGFyZ2V0UG9ydD0wMCBUYXJnZXRDb21w
b25lbnQ9MDAgQXNzb2NSQ1JCLSBMaW5rVHlwZT1NZW1NYXBwZWQgTGlua1ZhbGlkKwoJCQlBZGRy
OgkwMDAwMDAwMGZlZDFjMDAwCglLZXJuZWwgZHJpdmVyIGluIHVzZTogc25kX2hkYV9pbnRlbAoK
MDA6MWMuMCBQQ0kgYnJpZGdlOiBJbnRlbCBDb3Jwb3JhdGlvbiA3IFNlcmllcy9DMjEwIFNlcmll
cyBDaGlwc2V0IEZhbWlseSBQQ0kgRXhwcmVzcyBSb290IFBvcnQgMSAocmV2IGM0KSAocHJvZy1p
ZiAwMCBbTm9ybWFsIGRlY29kZV0pCglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVyKyBTcGVj
Q3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBGYXN0QjJC
LSBEaXNJTlR4LQoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkItIFBhckVyci0gREVW
U0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJ
TGF0ZW5jeTogMCwgQ2FjaGUgTGluZSBTaXplOiA2NCBieXRlcwoJQnVzOiBwcmltYXJ5PTAwLCBz
ZWNvbmRhcnk9MDEsIHN1Ym9yZGluYXRlPTAxLCBzZWMtbGF0ZW5jeT0wCglTZWNvbmRhcnkgc3Rh
dHVzOiA2Nk1Iei0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0
LSA8TUFib3J0KyA8U0VSUi0gPFBFUlItCglCcmlkZ2VDdGw6IFBhcml0eS0gU0VSUisgTm9JU0Et
IFZHQS0gTUFib3J0LSA+UmVzZXQtIEZhc3RCMkItCgkJUHJpRGlzY1Rtci0gU2VjRGlzY1Rtci0g
RGlzY1RtclN0YXQtIERpc2NUbXJTRVJSRW4tCglDYXBhYmlsaXRpZXM6IFs0MF0gRXhwcmVzcyAo
djIpIFJvb3QgUG9ydCAoU2xvdCspLCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgMTI4IGJ5
dGVzLCBQaGFudEZ1bmMgMAoJCQlFeHRUYWctIFJCRSsKCQlEZXZDdGw6CVJlcG9ydCBlcnJvcnM6
IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0KCQkJUmx4ZE9yZC0g
RXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcC0KCQkJTWF4UGF5bG9hZCAxMjggYnl0
ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJyLSBVbmNvcnJFcnItIEZh
dGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3cisgVHJhbnNQZW5kLQoJCUxua0NhcDoJUG9ydCAjMSwg
U3BlZWQgNUdUL3MsIFdpZHRoIHgxLCBBU1BNIEwwcyBMMSwgRXhpdCBMYXRlbmN5IEwwcyA8MXVz
LCBMMSA8MTZ1cwoJCQlDbG9ja1BNLSBTdXJwcmlzZS0gTExBY3RSZXArIEJ3Tm90LQoJCUxua0N0
bDoJQVNQTSBMMHMgTDEgRW5hYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVkLSBDb21tQ2xrLQoJ
CQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3Rh
OglTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MCwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2
ZS0gQldNZ210LSBBQldNZ210LQoJCVNsdENhcDoJQXR0bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRu
SW5kLSBQd3JJbmQtIEhvdFBsdWctIFN1cnByaXNlLQoJCQlTbG90ICMwLCBQb3dlckxpbWl0IDEw
LjAwMFc7IEludGVybG9jay0gTm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdy
Rmx0LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBB
dHRuSW5kIFVua25vd24sIFB3ckluZCBVbmtub3duLCBQb3dlci0gSW50ZXJsb2NrLQoJCVNsdFN0
YToJU3RhdHVzOiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0LSBQcmVzRGV0LSBJbnRl
cmxvY2stCgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldC0gTGlua1N0YXRlLQoJCVJvb3RDdGw6IEVy
ckNvcnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVyckZhdGFsLSBQTUVJbnRFbmEtIENSU1Zpc2li
bGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0KCQlSb290U3RhOiBQTUUgUmVxSUQgMDAwMCwgUE1F
U3RhdHVzLSBQTUVQZW5kaW5nLQoJCURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogUmFuZ2Ug
QkMsIFRpbWVvdXREaXMrLCBMVFItLCBPQkZGIE5vdCBTdXBwb3J0ZWQgQVJJRndkLQoJCURldkN0
bDI6IENvbXBsZXRpb24gVGltZW91dDogNTB1cyB0byA1MG1zLCBUaW1lb3V0RGlzLSwgTFRSLSwg
T0JGRiBEaXNhYmxlZCBBUklGd2QtCgkJTG5rQ3RsMjogVGFyZ2V0IExpbmsgU3BlZWQ6IDVHVC9z
LCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLQoJCQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwg
T3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0K
CQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVt
cGhhc2lzIExldmVsOiAtMy41ZEIsIEVxdWFsaXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9u
UGhhc2UxLQoJCQkgRXF1YWxpemF0aW9uUGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlu
a0VxdWFsaXphdGlvblJlcXVlc3QtCglDYXBhYmlsaXRpZXM6IFs4MF0gTVNJOiBFbmFibGUtIENv
dW50PTEvMSBNYXNrYWJsZS0gNjRiaXQtCgkJQWRkcmVzczogMDAwMDAwMDAgIERhdGE6IDAwMDAK
CUNhcGFiaWxpdGllczogWzkwXSBTdWJzeXN0ZW06IEhld2xldHQtUGFja2FyZCBDb21wYW55IERl
dmljZSAyYWQ1CglDYXBhYmlsaXRpZXM6IFthMF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIK
CQlGbGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1FKEQwKyxEMS0s
RDItLEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBE
U2VsPTAgRFNjYWxlPTAgUE1FLQoJS2VybmVsIGRyaXZlciBpbiB1c2U6IHBjaWVwb3J0CgowMDox
Yy41IFBDSSBicmlkZ2U6IEludGVsIENvcnBvcmF0aW9uIDcgU2VyaWVzL0MyMTAgU2VyaWVzIENo
aXBzZXQgRmFtaWx5IFBDSSBFeHByZXNzIFJvb3QgUG9ydCA2IChyZXYgYzQpIChwcm9nLWlmIDAw
IFtOb3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNs
ZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERp
c0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9
ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRl
bmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHByaW1hcnk9MDAsIHNlY29u
ZGFyeT0wMiwgc3Vib3JkaW5hdGU9MDIsIHNlYy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQgYnJpZGdl
OiAwMDAwZTAwMC0wMDAwZWZmZgoJTWVtb3J5IGJlaGluZCBicmlkZ2U6IGY3YzAwMDAwLWY3Y2Zm
ZmZmCglTZWNvbmRhcnkgc3RhdHVzOiA2Nk1Iei0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFz
dCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA8U0VSUi0gPFBFUlItCglCcmlkZ2VDdGw6IFBh
cml0eS0gU0VSUisgTm9JU0EtIFZHQS0gTUFib3J0LSA+UmVzZXQtIEZhc3RCMkItCgkJUHJpRGlz
Y1Rtci0gU2VjRGlzY1Rtci0gRGlzY1RtclN0YXQtIERpc2NUbXJTRVJSRW4tCglDYXBhYmlsaXRp
ZXM6IFs0MF0gRXhwcmVzcyAodjIpIFJvb3QgUG9ydCAoU2xvdCspLCBNU0kgMDAKCQlEZXZDYXA6
CU1heFBheWxvYWQgMTI4IGJ5dGVzLCBQaGFudEZ1bmMgMAoJCQlFeHRUYWctIFJCRSsKCQlEZXZD
dGw6CVJlcG9ydCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBv
cnRlZC0KCQkJUmx4ZE9yZC0gRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcC0KCQkJ
TWF4UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3Jy
RXJyKyBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3cisgVHJhbnNQZW5kLQoJ
CUxua0NhcDoJUG9ydCAjNiwgU3BlZWQgNUdUL3MsIFdpZHRoIHgxLCBBU1BNIEwwcyBMMSwgRXhp
dCBMYXRlbmN5IEwwcyA8NTEybnMsIEwxIDwxNnVzCgkJCUNsb2NrUE0tIFN1cnByaXNlLSBMTEFj
dFJlcCsgQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQgYnl0ZXMgRGlzYWJs
ZWQtIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9ja1BNLSBBdXRXaWREaXMtIEJXSW50LSBBdXRC
V0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdUL3MsIFdpZHRoIHgxLCBUckVyci0gVHJhaW4tIFNs
b3RDbGsrIERMQWN0aXZlKyBCV01nbXQrIEFCV01nbXQtCgkJU2x0Q2FwOglBdHRuQnRuLSBQd3JD
dHJsLSBNUkwtIEF0dG5JbmQtIFB3ckluZC0gSG90UGx1Zy0gU3VycHJpc2UtCgkJCVNsb3QgIzUs
IFBvd2VyTGltaXQgMTAuMDAwVzsgSW50ZXJsb2NrLSBOb0NvbXBsKwoJCVNsdEN0bDoJRW5hYmxl
OiBBdHRuQnRuLSBQd3JGbHQtIE1STC0gUHJlc0RldC0gQ21kQ3BsdC0gSFBJcnEtIExpbmtDaGct
CgkJCUNvbnRyb2w6IEF0dG5JbmQgVW5rbm93biwgUHdySW5kIFVua25vd24sIFBvd2VyLSBJbnRl
cmxvY2stCgkJU2x0U3RhOglTdGF0dXM6IEF0dG5CdG4tIFBvd2VyRmx0LSBNUkwtIENtZENwbHQt
IFByZXNEZXQrIEludGVybG9jay0KCQkJQ2hhbmdlZDogTVJMLSBQcmVzRGV0LSBMaW5rU3RhdGUt
CgkJUm9vdEN0bDogRXJyQ29ycmVjdGFibGUtIEVyck5vbi1GYXRhbC0gRXJyRmF0YWwtIFBNRUlu
dEVuYS0gQ1JTVmlzaWJsZS0KCQlSb290Q2FwOiBDUlNWaXNpYmxlLQoJCVJvb3RTdGE6IFBNRSBS
ZXFJRCAwMDAwLCBQTUVTdGF0dXMtIFBNRVBlbmRpbmctCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBU
aW1lb3V0OiBSYW5nZSBCQywgVGltZW91dERpcyssIExUUi0sIE9CRkYgTm90IFN1cHBvcnRlZCBB
UklGd2QtCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBUaW1lb3V0OiA1MHVzIHRvIDUwbXMsIFRpbWVv
dXREaXMtLCBMVFItLCBPQkZGIERpc2FibGVkIEFSSUZ3ZC0KCQlMbmtDdGwyOiBUYXJnZXQgTGlu
ayBTcGVlZDogNUdUL3MsIEVudGVyQ29tcGxpYW5jZS0gU3BlZWREaXMtCgkJCSBUcmFuc21pdCBN
YXJnaW46IE5vcm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBD
b21wbGlhbmNlU09TLQoJCQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6
IEN1cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUt
LCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6YXRp
b25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczogWzgwXSBN
U0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdC0KCQlBZGRyZXNzOiAwMDAwMDAw
MCAgRGF0YTogMDAwMAoJQ2FwYWJpbGl0aWVzOiBbOTBdIFN1YnN5c3RlbTogSGV3bGV0dC1QYWNr
YXJkIENvbXBhbnkgRGV2aWNlIDJhZDUKCUNhcGFiaWxpdGllczogW2EwXSBQb3dlciBNYW5hZ2Vt
ZW50IHZlcnNpb24gMgoJCUZsYWdzOiBQTUVDbGstIERTSS0gRDEtIEQyLSBBdXhDdXJyZW50PTBt
QSBQTUUoRDArLEQxLSxEMi0sRDNob3QrLEQzY29sZCspCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3Qt
IFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQTUUtCglLZXJuZWwgZHJpdmVyIGluIHVzZTog
cGNpZXBvcnQKCjAwOjFkLjAgVVNCIGNvbnRyb2xsZXI6IEludGVsIENvcnBvcmF0aW9uIDcgU2Vy
aWVzL0MyMTAgU2VyaWVzIENoaXBzZXQgRmFtaWx5IFVTQiBFbmhhbmNlZCBIb3N0IENvbnRyb2xs
ZXIgIzEgKHJldiAwNCkgKHByb2ctaWYgMjAgW0VIQ0ldKQoJU3Vic3lzdGVtOiBIZXdsZXR0LVBh
Y2thcmQgQ29tcGFueSBEZXZpY2UgMmFkNQoJQ29udHJvbDogSS9PLSBNZW0rIEJ1c01hc3Rlcisg
U3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUisgRmFz
dEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCKyBQYXJFcnIt
IERFVlNFTD1tZWRpdW0gPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJ
TlR4LQoJTGF0ZW5jeTogMAoJSW50ZXJydXB0OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDIzCglSZWdp
b24gMDogTWVtb3J5IGF0IGY3ZDE3MDAwICgzMi1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXpl
PTFLXQoJQ2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAyCgkJRmxh
Z3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9Mzc1bUEgUE1FKEQwKyxEMS0sRDIt
LEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBEU2Vs
PTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIERlYnVnIHBvcnQ6IEJBUj0xIG9m
ZnNldD0wMGEwCglDYXBhYmlsaXRpZXM6IFs5OF0gUENJIEFkdmFuY2VkIEZlYXR1cmVzCgkJQUZD
YXA6IFRQKyBGTFIrCgkJQUZDdHJsOiBGTFItCgkJQUZTdGF0dXM6IFRQLQoJS2VybmVsIGRyaXZl
ciBpbiB1c2U6IGVoY2ktcGNpCgowMDoxZi4wIElTQSBicmlkZ2U6IEludGVsIENvcnBvcmF0aW9u
IFo3NSBFeHByZXNzIENoaXBzZXQgTFBDIENvbnRyb2xsZXIgKHJldiAwNCkKCVN1YnN5c3RlbTog
SGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgRGV2aWNlIDJhZDUKCUNvbnRyb2w6IEkvTysgTWVtKyBC
dXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmct
IFNFUlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIy
Qi0gUGFyRXJyLSBERVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJS
LSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAKCUNhcGFiaWxpdGllczogW2UwXSBWZW5kb3IgU3Bl
Y2lmaWMgSW5mb3JtYXRpb246IExlbj0wYyA8Pz4KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBscGNf
aWNoCgowMDoxZi4yIFNBVEEgY29udHJvbGxlcjogSW50ZWwgQ29ycG9yYXRpb24gNyBTZXJpZXMv
QzIxMCBTZXJpZXMgQ2hpcHNldCBGYW1pbHkgNi1wb3J0IFNBVEEgQ29udHJvbGxlciBbQUhDSSBt
b2RlXSAocmV2IDA0KSAocHJvZy1pZiAwMSBbQUhDSSAxLjBdKQoJU3Vic3lzdGVtOiBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBEZXZpY2UgMmFkNQoJQ29udHJvbDogSS9PKyBNZW0rIEJ1c01hc3Rl
cisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0g
RmFzdEIyQi0gRGlzSU5UeCsKCVN0YXR1czogQ2FwKyA2Nk1IeisgVURGLSBGYXN0QjJCKyBQYXJF
cnItIERFVlNFTD1tZWRpdW0gPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJS
LSBJTlR4LQoJTGF0ZW5jeTogMAoJSW50ZXJydXB0OiBwaW4gQiByb3V0ZWQgdG8gSVJRIDEwMQoJ
UmVnaW9uIDA6IEkvTyBwb3J0cyBhdCBmMGIwIFtzaXplPThdCglSZWdpb24gMTogSS9PIHBvcnRz
IGF0IGYwYTAgW3NpemU9NF0KCVJlZ2lvbiAyOiBJL08gcG9ydHMgYXQgZjA5MCBbc2l6ZT04XQoJ
UmVnaW9uIDM6IEkvTyBwb3J0cyBhdCBmMDgwIFtzaXplPTRdCglSZWdpb24gNDogSS9PIHBvcnRz
IGF0IGYwNjAgW3NpemU9MzJdCglSZWdpb24gNTogTWVtb3J5IGF0IGY3ZDE2MDAwICgzMi1iaXQs
IG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTJLXQoJQ2FwYWJpbGl0aWVzOiBbODBdIE1TSTogRW5h
YmxlKyBDb3VudD0xLzEgTWFza2FibGUtIDY0Yml0LQoJCUFkZHJlc3M6IGZlZTAwMjk4ICBEYXRh
OiAwMDAwCglDYXBhYmlsaXRpZXM6IFs3MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKCQlG
bGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1FKEQwLSxEMS0sRDIt
LEQzaG90KyxEM2NvbGQtKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0KyBQTUUtRW5hYmxlLSBEU2Vs
PTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbYThdIFNBVEEgSEJBIHYxLjAgQkFSNCBP
ZmZzZXQ9MDAwMDAwMDQKCUNhcGFiaWxpdGllczogW2IwXSBQQ0kgQWR2YW5jZWQgRmVhdHVyZXMK
CQlBRkNhcDogVFArIEZMUisKCQlBRkN0cmw6IEZMUi0KCQlBRlN0YXR1czogVFAtCglLZXJuZWwg
ZHJpdmVyIGluIHVzZTogYWhjaQoKMDA6MWYuMyBTTUJ1czogSW50ZWwgQ29ycG9yYXRpb24gNyBT
ZXJpZXMvQzIxMCBTZXJpZXMgQ2hpcHNldCBGYW1pbHkgU01CdXMgQ29udHJvbGxlciAocmV2IDA0
KQoJU3Vic3lzdGVtOiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBEZXZpY2UgMmFkNQoJQ29udHJv
bDogSS9PKyBNZW0rIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFy
RXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwLSA2Nk1I
ei0gVURGLSBGYXN0QjJCKyBQYXJFcnItIERFVlNFTD1tZWRpdW0gPlRBYm9ydC0gPFRBYm9ydC0g
PE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJSW50ZXJydXB0OiBwaW4gQyByb3V0ZWQgdG8g
SVJRIDExCglSZWdpb24gMDogTWVtb3J5IGF0IGY3ZDE1MDAwICg2NC1iaXQsIG5vbi1wcmVmZXRj
aGFibGUpIFtzaXplPTI1Nl0KCVJlZ2lvbiA0OiBJL08gcG9ydHMgYXQgZjA0MCBbc2l6ZT0zMl0K
CjAyOjAwLjAgRXRoZXJuZXQgY29udHJvbGxlcjogUXVhbGNvbW0gQXRoZXJvcyBBUjgxNjEgR2ln
YWJpdCBFdGhlcm5ldCAocmV2IDA4KQoJU3Vic3lzdGVtOiBIZXdsZXR0LVBhY2thcmQgQ29tcGFu
eSBEZXZpY2UgMmFkNQoJQ29udHJvbDogSS9PKyBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBN
ZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5U
eC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0
ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6
IDAsIENhY2hlIExpbmUgU2l6ZTogNjQgYnl0ZXMKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRv
IElSUSAxMDUKCVJlZ2lvbiAwOiBNZW1vcnkgYXQgZjdjMDAwMDAgKDY0LWJpdCwgbm9uLXByZWZl
dGNoYWJsZSkgW3NpemU9MjU2S10KCVJlZ2lvbiAyOiBJL08gcG9ydHMgYXQgZTAwMCBbc2l6ZT0x
MjhdCglDYXBhYmlsaXRpZXM6IFs0MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKCQlGbGFn
czogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0zNzVtQSBQTUUoRDArLEQxKyxEMiss
RDNob3QrLEQzY29sZCspCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QrIFBNRS1FbmFibGUtIERTZWw9
MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAodjEpIEVuZHBvaW50
LCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgNDA5NiBieXRlcywgUGhhbnRGdW5jIDAsIExh
dGVuY3kgTDBzIHVubGltaXRlZCwgTDEgdW5saW1pdGVkCgkJCUV4dFRhZy0gQXR0bkJ0bisgQXR0
bkluZCsgUHdySW5kKyBSQkUrIEZMUmVzZXQtCgkJRGV2Q3RsOglSZXBvcnQgZXJyb3JzOiBDb3Jy
ZWN0YWJsZSsgTm9uLUZhdGFsKyBGYXRhbCsgVW5zdXBwb3J0ZWQrCgkJCVJseGRPcmQtIEV4dFRh
Zy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3AtCgkJCU1heFBheWxvYWQgMTI4IGJ5dGVzLCBN
YXhSZWFkUmVxIDUxMiBieXRlcwoJCURldlN0YToJQ29yckVycisgVW5jb3JyRXJyLSBGYXRhbEVy
ci0gVW5zdXBwUmVxLSBBdXhQd3IrIFRyYW5zUGVuZC0KCQlMbmtDYXA6CVBvcnQgIzAsIFNwZWVk
IDIuNUdUL3MsIFdpZHRoIHgxLCBBU1BNIEwwcyBMMSwgRXhpdCBMYXRlbmN5IEwwcyB1bmxpbWl0
ZWQsIEwxIHVubGltaXRlZAoJCQlDbG9ja1BNKyBTdXJwcmlzZS0gTExBY3RSZXAtIEJ3Tm90LQoJ
CUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVkLSBDb21tQ2xrKwoJ
CQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3Rh
OglTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MSwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2
ZS0gQldNZ210LSBBQldNZ210LQoJQ2FwYWJpbGl0aWVzOiBbYzBdIE1TSTogRW5hYmxlKyBDb3Vu
dD0xLzE2IE1hc2thYmxlKyA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTAwMzE4ICBEYXRh
OiAwMDAwCgkJTWFza2luZzogMDAwMGZmZmUgIFBlbmRpbmc6IDAwMDAwMDAwCglDYXBhYmlsaXRp
ZXM6IFtkOF0gTVNJLVg6IEVuYWJsZS0gQ291bnQ9MTYgTWFza2VkLQoJCVZlY3RvciB0YWJsZTog
QkFSPTAgb2Zmc2V0PTAwMDAyMDAwCgkJUEJBOiBCQVI9MCBvZmZzZXQ9MDAwMDMwMDAKCUNhcGFi
aWxpdGllczogWzEwMCB2MV0gQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5nCgkJVUVTdGE6CURMUC0g
U0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQtIFJ4T0YtIE1hbGZU
TFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFTXNrOglETFAtIFNERVMtIFRMUC0gRkNQ
LSBDbXBsdFRPLSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1
cFJlcS0gQUNTVmlvbC0KCQlVRVN2cnQ6CURMUC0gU0RFUysgVExQLSBGQ1AtIENtcGx0VE8tIENt
cGx0QWJydC0gVW54Q21wbHQtIFJ4T0YrIE1hbGZUTFArIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9s
LQoJCUNFU3RhOglSeEVycisgQmFkVExQLSBCYWRETExQKyBSb2xsb3Zlci0gVGltZW91dC0gTm9u
RmF0YWxFcnItCgkJQ0VNc2s6CVJ4RXJyLSBCYWRUTFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1l
b3V0LSBOb25GYXRhbEVycisKCQlBRVJDYXA6CUZpcnN0IEVycm9yIFBvaW50ZXI6IDAwLCBHZW5D
YXArIENHZW5Fbi0gQ2hrQ2FwKyBDaGtFbi0KCUNhcGFiaWxpdGllczogWzE4MCB2MV0gRGV2aWNl
IFNlcmlhbCBOdW1iZXIgZmYtMDItODMtZTYtNGMtNzItYjktZmYKCUtlcm5lbCBkcml2ZXIgaW4g
dXNlOiBhbHgKCg==
--001a1135f3e851f44905030bb0b9
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xen.org
http://lists.xen.org/xen-users
--001a1135f3e851f44905030bb0b9--


From xen-devel-bounces@lists.xen.org Mon Sep 15 14:03:14 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Sep 2014 14:03:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XTWs6-00025Y-CJ; Mon, 15 Sep 2014 14:03:14 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XTWry-0001r8-EB
	for xen-devel@lists.xen.org; Mon, 15 Sep 2014 14:03:06 +0000
Received: from [85.158.143.35:41779] by server-3.bemta-4.messagelabs.com id
	09/7E-06192-791F6145; Mon, 15 Sep 2014 14:03:03 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-11.tower-21.messagelabs.com!1410789780!13852923!1
X-Originating-IP: [131.159.0.36]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21713 invoked from network); 15 Sep 2014 14:03:00 -0000
Received: from mail-out2.informatik.tu-muenchen.de (HELO
	smtp2.informatik.tu-muenchen.de) (131.159.0.36)
	by server-11.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 15 Sep 2014 14:03:00 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id C835D101965F0;
	Mon, 15 Sep 2014 16:02:57 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id C0A44C6338B2;
	Mon, 15 Sep 2014 16:02:57 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Mon, 15 Sep 2014 16:02:39 +0200
Message-Id: <1410789775-24197-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1410789775-24197-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1410789775-24197-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v6 01/17] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/config.h     |   3 +
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 31 files changed, 1154 insertions(+), 1057 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8d905d3..7649d36 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 32776c3..a9f120a 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..0da6ddc 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..336b638
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..164f1b9 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..8a864ce 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -67,6 +67,9 @@
 #define NR_CPUS 256
 #endif
 
+#define CONFIG_MEM_SHARING 1
+#define CONFIG_MEM_PAGING 1
+
 /* Maximum we can support with current vLAPIC ID mapping. */
 #define MAX_HVM_VCPUS 128
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 17 20:52:02 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Sep 2014 20:52:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XUMCf-0004zu-EQ; Wed, 17 Sep 2014 20:51:53 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XUMCa-0004w0-11
	for xen-devel@lists.xen.org; Wed, 17 Sep 2014 20:51:48 +0000
Received: from [85.158.143.35:28928] by server-2.bemta-4.messagelabs.com id
	D5/33-04525-264F9145; Wed, 17 Sep 2014 20:51:46 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-16.tower-21.messagelabs.com!1410987102!10100263!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3730 invoked from network); 17 Sep 2014 20:51:43 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-16.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 17 Sep 2014 20:51:43 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 3A51C101724C1;
	Wed, 17 Sep 2014 22:51:41 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 35C31C218A35;
	Wed, 17 Sep 2014 22:51:41 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Wed, 17 Sep 2014 22:51:04 +0200
Message-Id: <1410987084-11899-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1410987084-11899-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1410987084-11899-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v7 01/21] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/config.h     |   3 +
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 31 files changed, 1154 insertions(+), 1057 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8d905d3..7649d36 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 32776c3..a9f120a 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..0da6ddc 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..336b638
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..164f1b9 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..8a864ce 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -67,6 +67,9 @@
 #define NR_CPUS 256
 #endif
 
+#define CONFIG_MEM_SHARING 1
+#define CONFIG_MEM_PAGING 1
+
 /* Maximum we can support with current vLAPIC ID mapping. */
 #define MAX_HVM_VCPUS 128
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 17 20:52:02 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Sep 2014 20:52:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XUMCf-0004zu-EQ; Wed, 17 Sep 2014 20:51:53 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XUMCa-0004w0-11
	for xen-devel@lists.xen.org; Wed, 17 Sep 2014 20:51:48 +0000
Received: from [85.158.143.35:28928] by server-2.bemta-4.messagelabs.com id
	D5/33-04525-264F9145; Wed, 17 Sep 2014 20:51:46 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-16.tower-21.messagelabs.com!1410987102!10100263!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3730 invoked from network); 17 Sep 2014 20:51:43 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-16.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 17 Sep 2014 20:51:43 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 3A51C101724C1;
	Wed, 17 Sep 2014 22:51:41 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 35C31C218A35;
	Wed, 17 Sep 2014 22:51:41 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Wed, 17 Sep 2014 22:51:04 +0200
Message-Id: <1410987084-11899-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1410987084-11899-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1410987084-11899-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v7 01/21] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 xen/Rules.mk                     |   1 +
 xen/arch/x86/Rules.mk            |   1 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 --------
 xen/arch/x86/mm/mem_event.c      | 705 ---------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 ++++++++
 xen/common/mem_event.c           | 705 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/config.h     |   3 +
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 31 files changed, 1154 insertions(+), 1057 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b49f3c8..dc15b09 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,7 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 576985e..bd4e342 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -12,6 +12,7 @@ HAS_NS16550 := y
 HAS_EHCI := y
 HAS_KEXEC := y
 HAS_GDBSX := y
+HAS_MEM_ACCESS := y
 xenoprof := y
 
 #
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8d905d3..7649d36 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index ba7e71e..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 32776c3..a9f120a 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 4937f9a..0da6ddc 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 /* Parameters for PFN/MADDR compression. */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 3683ae3..b9f3387 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -51,6 +51,8 @@ obj-y += tmem_xen.o
 obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..336b638
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,705 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+#include <asm/mem_paging.h>
+#include <asm/mem_sharing.h>
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..164f1b9 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef CONFIG_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef CONFIG_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 9fa80a4..7fc3b97 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -301,7 +301,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..8a864ce 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -67,6 +67,9 @@
 #define NR_CPUS 256
 #endif
 
+#define CONFIG_MEM_SHARING 1
+#define CONFIG_MEM_PAGING 1
+
 /* Maximum we can support with current vLAPIC ID mapping. */
 #define MAX_HVM_VCPUS 128
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 1123857..74e66f8 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,12 +226,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 7b85865..ebd482d 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -611,8 +611,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Thu Sep 18 02:11:47 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Sep 2014 02:11:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XURC5-0007To-36; Thu, 18 Sep 2014 02:11:37 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdelaney@silver-peak.com>) id 1XURC2-0007Tj-DP
	for xen-devel@lists.xen.org; Thu, 18 Sep 2014 02:11:35 +0000
Received: from [193.109.254.147:9638] by server-2.bemta-14.messagelabs.com id
	B5/1B-07861-55F3A145; Thu, 18 Sep 2014 02:11:33 +0000
X-Env-Sender: pdelaney@silver-peak.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1411006289!16256750!1
X-Originating-IP: [65.55.169.143]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6746 invoked from network); 18 Sep 2014 02:11:30 -0000
Received: from mail-bl2on0143.outbound.protection.outlook.com (HELO
	na01-bl2-obe.outbound.protection.outlook.com) (65.55.169.143)
	by server-2.tower-27.messagelabs.com with AES256-SHA encrypted SMTP;
	18 Sep 2014 02:11:30 -0000
Received: from BY2PR04MB173.namprd04.prod.outlook.com (10.242.40.155) by
	BY2PR04MB648.namprd04.prod.outlook.com (10.141.218.152) with Microsoft
	SMTP Server (TLS) id 15.0.1029.13; Thu, 18 Sep 2014 02:11:27 +0000
Received: from BY2PR04MB173.namprd04.prod.outlook.com ([169.254.13.139]) by
	BY2PR04MB173.namprd04.prod.outlook.com ([169.254.13.59]) with mapi id
	15.00.1029.000; Thu, 18 Sep 2014 02:11:26 +0000
From: Pete Delaney <pdelaney@silver-peak.com>
To: Mukesh Rathor <mukesh.rathor@oracle.com>
Thread-Topic: gdbsx - xg_attach:Unable to pause domain:1; failed to attach to
	domain:1 errno:13
Thread-Index: Ac/AztZq23/1dwFxTje3dZpkf/KkWgAsOlkAAAhIcvAAINhEgAABuFnwA/yKdwAALxMUUA==
Date: Thu, 18 Sep 2014 02:11:26 +0000
Message-ID: <caa8c5be2bd146beb813603466c26ae4@BY2PR04MB173.namprd04.prod.outlook.com>
References: <6b706237be98403ea1b620d91dca71f7@BY2PR04MB173.namprd04.prod.outlook.com>
	<20140826154744.2f155cbc@mantra.us.oracle.com>
	<c4cde849a69549aaac4e04dfcadf569f@BY2PR04MB173.namprd04.prod.outlook.com>
	<20140827112521.6ce2cea3@mantra.us.oracle.com>
	<0c1d063160884df0b1ee207a82693276@BY2PR04MB173.namprd04.prod.outlook.com>
	<20140916191552.09758017@mantra.us.oracle.com>
In-Reply-To: <20140916191552.09758017@mantra.us.oracle.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [128.242.109.226]
x-microsoft-antispam: BCL:0;PCL:0;RULEID:;UriScan:;
x-forefront-prvs: 033857D0BD
x-forefront-antispam-report: SFV:NSPM;
	SFS:(10019020)(13464003)(199003)(51704005)(40764003)(189002)(377454003)(24454002)(92566001)(33646002)(15975445006)(19617315012)(105586002)(108616004)(54356999)(99286002)(81542003)(2656002)(85306004)(74662003)(66066001)(81342003)(21056001)(74316001)(15395725005)(76576001)(93886004)(77982003)(106356001)(64706001)(15202345003)(95666004)(79102003)(20776003)(16236675004)(77096002)(101416001)(19300405004)(76176999)(97736003)(31966008)(107046002)(4396001)(86362001)(19580405001)(83322001)(85852003)(99936001)(46102003)(110136001)(50986999)(99396002)(19625215002)(90102001)(87936001)(83072002)(19580395003)(325944007)(24736002);
	DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR04MB648;
	H:BY2PR04MB173.namprd04.prod.outlook.com; FPR:; MLV:sfv;
	PTR:InfoNoRecords; A:1; MX:1; LANG:; 
Content-Type: multipart/mixed;
	boundary="_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_"
MIME-Version: 1.0
X-OriginatorOrg: silver-peak.com
Cc: Tedi Tedijanto <ttedijanto@silver-peak.com>,
	"piet.delaney@gmail.com" <piet.delaney@gmail.com>,
	Elaine Huang <ehuang@silver-peak.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [Xen-devel] gdbsx - xg_attach:Unable to pause domain:1;
 failed to attach to domain:1 errno:13
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_
Content-Type: multipart/alternative;
	boundary="_000_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_"

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

Hi Mukesh:



                > Correct. Just git clone xen tree to match your version, t=
hen edit the file to add printk, then build xen. copy xen to target machine=
 over to /boot. Then edit grub kernel line to boot new xen.



I after building Xen I tried a 'make install-xen' but got a problem with EF=
I_VENDOR not being defined.

See attached snapshot.



Looks like 'make install-xen' installed a  xen kerneL in /boot



                piet@piet-t3600:/boot$ ls -lt | more

     total 94131

     lrwxrwxrwx 1 root root       16 Sep 17 17:35 xen-4.4.gz -> xen-4.4.2-p=
re.gz

     lrwxrwxrwx 1 root root       16 Sep 17 17:35 xen-4.gz -> xen-4.4.2-pre=
.gz

     lrwxrwxrwx 1 root root       16 Sep 17 17:35 xen.gz -> xen-4.4.2-pre.g=
z

     -rw-r--r-- 1 root root   844203 Sep 17 16:26 xen-4.4.2-pre.gz

     -rw-r--r-- 1 root root 15440366 Sep 17 16:26 xen-syms-4.4.2-pre

     -rw-r--r-- 1 root root 28743841 Aug  8 16:59 initrd.img-3.13.0-32-gene=
ric

     drwxr-xr-x 5 root root     1024 Aug  8 16:58 grubdded to the /boot par=
tition:



The grub default is  "Ubuntu GNU/Linux, with Xen hypervisor"  (see attached=
 grub.cfg).



I'm rather rusty on the new and improved grub syntax. I'd prefer not bricki=
ng my Ubuntu workstation. :)

The various menu entry's under the Xen submenu look very similar.  Currentl=
y is offering a 3.13.0-32 kernel

And a 3.13.0-24 kernel (modules are in /lib/modules).



Looks to me like I can  easily provide a  different multiboot line:

Currently:



                multiboot       /xen-4.4-amd64.gz   placeholder   ${xen_rm_=
opts}



Change it to:



                multiboot       /xen-4.4.2-pre.gz   placeholder   ${xen_rm_=
opts}]



If xen fails to boot I should still be able to boot the original Ubuntu-14.=
04 stock linux kernels.

It's not obvious how to easily make it possible to select between the two X=
en images without

Potentially messing up system installation scripts.



-piet









--

Pete/Piet Delaney

O: +1 408 935-1813

C: +1 408 646-8557

H: +1 408 243-8872

Home Email: piet.delaney@gmail.com









-----Original Message-----
From: Mukesh Rathor [mailto:mukesh.rathor@oracle.com]
Sent: Tuesday, September 16, 2014 7:16 PM
To: Pete Delaney
Cc: xen-devel@lists.xen.org; piet.delaney@gmail.com; Elaine Huang; Tedi Ted=
ijanto
Subject: Re: gdbsx - xg_attach:Unable to pause domain:1; failed to attach t=
o domain:1 errno:13



On Tue, 16 Sep 2014 22:58:37 +0000

Pete Delaney <pdelaney@silver-peak.com<mailto:pdelaney@silver-peak.com>> wr=
ote:



> Hi Mukesh:

>

>

>

> Thanks for your help on enabling gdbsx...

>

>

>

> > Hmm... that all seems ok then. Can you check your permissions on :

>

>

>

> > /proc/xen/privcmd

>

>

>

>   root@piet-openxen-blade:~# ls -l /proc/xen/privcmd

>

>   -rw------- 1 root root 0 Aug 11 13:37 /proc/xen/privcmd

>

>

>

> Privcmd seems to be a hypervisor call available from userland

>

> For Xen developers:

>

>

>

>

> http://sanifool.com/2013/02/08/invoking-an-hypercall-from-userland-via

> -privcmd/

>

>

>

>

>

> >  Other possibilities:

>

> >   - do you have xsm enabled?

>

>

>

> Don't  think so. I've heard this security stuff can get in the way.

>

> Doing a  'xl list -Z' doesn't show any security

> labels.                                            [Wish I had

> Synergy Installed]

>

>

>

>

>

> >-  can you put a printk in xen file common/domctl.c:

>

>

>

> Sure but first I likely need to start using the openxen code that I

> compiled from src.

>

> I'm currently using openxen installed via a Ubuntu 14.04 package.

>

>

>

> Mind explaining the best way to proceed on switching to the openxen

>

> That I compiled from source? I thought  some of it might be installed

> at /usr/local/

>

> And perhaps just changing a search path or two will be sufficient.

>

>

>

> I suspect I'll need to put a new xen kernel on /boot and update the

> grub config.



Correct. Just git clone xen tree to match your version, then edit the file =
to add printk, then build xen. copy xen to target machine over to /boot. Th=
en edit grub kernel line to boot new xen.



Mukesh

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

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Plain Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
span.PlainTextChar
	{mso-style-name:"Plain Text Char";
	mso-style-priority:99;
	mso-style-link:"Plain Text";
	font-family:"Calibri","sans-serif";}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoPlainText"><b>Hi Mukesh:<o:p></o:p></b></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Correct. Just git clone xen =
tree to match your version, then edit the file to add printk, then build xe=
n. copy xen to target machine over to /boot. Then edit grub kernel line to =
boot new xen.<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><b>I after building Xen I tried a 'make install-x=
en' but got a problem with EFI_VENDOR not being defined.<o:p></o:p></b></p>
<p class=3D"MsoPlainText"><b>See attached snapshot. <o:p></o:p></b></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">Looks like <b><span style=3D"font-size:12.0pt">&#=
8216;make install-xen&#8217;</span></b> installed a &nbsp;xen kerneL in /bo=
ot<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=3D"font-family:&quot;=
Courier New&quot;">piet@piet-t3600:/boot<b>$ ls -lt | more</b><o:p></o:p></=
span></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; total 94131&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; lrwxrwxrwx 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp; 16 Sep 17 17:35 xen-4.4.gz -&gt; xen-4.4.2-pre.gz<o:p></o:p></s=
pan></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; lrwxrwxrwx 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp; 16 Sep 17 17:35 xen-4.gz -&gt; xen-4.4.2-pre.gz<o:p></o:p></spa=
n></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; lrwxrwxrwx 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp; 16 Sep 17 17:35 xen.gz -&gt; xen-4.4.2-pre.gz<o:p></o:p></span>=
</p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; -rw-r--r-- 1 root root&nbsp;&nbsp; 844203 Sep 1=
7 16:26
</span><b><span style=3D"font-size:14.0pt;font-family:&quot;Courier New&quo=
t;">xen-4.4.2-pre.gz<o:p></o:p></span></b></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; -rw-r--r-- 1 root root 15440366 Sep 17 16:26 xe=
n-syms-4.4.2-pre<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; -rw-r--r-- 1 root root 28743841 Aug&nbsp; 8 16:=
59 initrd.img-3.13.0-32-generic<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;">&nbsp;&nbsp;&nbsp;&nbsp; drwxr-xr-x 5 root root&nbsp;&nbsp;&nbsp;&nbsp; =
1024 Aug&nbsp; 8 16:58 grubdded to the /boot partition:<o:p></o:p></span></=
p>
<p class=3D"MsoPlainText"><span style=3D"font-family:&quot;Courier New&quot=
;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText">The grub default is &nbsp;<span style=3D"font-siz=
e:12.0pt;font-family:&quot;Courier New&quot;">&#8220;<b>Ubuntu GNU/Linux, w=
ith Xen hypervisor</b>&#8221;</span> &nbsp;(see attached grub.cfg).<o:p></o=
:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">I&#8217;m rather rusty on the new and improved gr=
ub syntax. I&#8217;d prefer not bricking my Ubuntu workstation.
<span style=3D"font-family:Wingdings">J</span><o:p></o:p></p>
<p class=3D"MsoPlainText">The various menu entry&#8216;s under the Xen subm=
enu look very similar. &nbsp;Currently is offering a 3.13.0-32 kernel<o:p><=
/o:p></p>
<p class=3D"MsoPlainText">And a 3.13.0-24 kernel (modules are in /lib/modul=
es). <o:p>
</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">Looks to me like I can &nbsp;easily provide a &nb=
sp;different multiboot line:<o:p></o:p></p>
<p class=3D"MsoPlainText">Currently:<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; multiboot&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; /<b>xen-4.4-amd64.gz </b>
&nbsp;&nbsp;placeholder&nbsp;&nbsp; ${xen_rm_opts}<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">Change it to:<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; multiboot&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; /<b>xen-4.4.2-pre.gz</b> &nbsp;&nbsp;placeholder&nbsp;&nbsp; $=
{xen_rm_opts}]<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">If xen fails to boot I should still be able to bo=
ot the original Ubuntu-14.04 stock linux kernels.<o:p></o:p></p>
<p class=3D"MsoPlainText">It&#8217;s not obvious how to easily make it poss=
ible to select between the two Xen images without<o:p></o:p></p>
<p class=3D"MsoPlainText">Potentially messing up system installation script=
s.<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">-piet<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"text-indent:.5in"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">--<o:p></o:p></p>
<p class=3D"MsoPlainText">Pete/Piet Delaney&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;
<o:p></o:p></p>
<p class=3D"MsoPlainText">O: &#43;1 408 935-1813<o:p></o:p></p>
<p class=3D"MsoPlainText">C: &#43;1 408 646-8557<o:p></o:p></p>
<p class=3D"MsoPlainText">H: &#43;1 408 243-8872<o:p></o:p></p>
<p class=3D"MsoPlainText">Home Email: piet.delaney@gmail.com<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">-----Original Message-----<br>
From: Mukesh Rathor [mailto:mukesh.rathor@oracle.com] <br>
Sent: Tuesday, September 16, 2014 7:16 PM<br>
To: Pete Delaney<br>
Cc: xen-devel@lists.xen.org; piet.delaney@gmail.com; Elaine Huang; Tedi Ted=
ijanto<br>
Subject: Re: gdbsx - xg_attach:Unable to pause domain:1; failed to attach t=
o domain:1 errno:13</p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">On Tue, 16 Sep 2014 22:58:37 &#43;0000<o:p></o:p>=
</p>
<p class=3D"MsoPlainText">Pete Delaney &lt;<a href=3D"mailto:pdelaney@silve=
r-peak.com"><span style=3D"color:windowtext;text-decoration:none">pdelaney@=
silver-peak.com</span></a>&gt; wrote:<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">&gt; Hi Mukesh:<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Thanks for your help on enabling gdbsx...<o:=
p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; &gt; Hmm... that all seems ok then. Can you =
check your permissions on :<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; &gt; /proc/xen/privcmd<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt;&nbsp;&nbsp; root@piet-openxen-blade:~# ls -l=
 /proc/xen/privcmd<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt;&nbsp;&nbsp; -rw------- 1 root root 0 Aug 11 =
13:37 /proc/xen/privcmd<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Privcmd seems to be a hypervisor call availa=
ble from userland<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; For Xen developers:<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o=
:p></p>
<p class=3D"MsoPlainText">&gt; <a href=3D"http://sanifool.com/2013/02/08/in=
voking-an-hypercall-from-userland-via">
<span style=3D"color:windowtext;text-decoration:none">http://sanifool.com/2=
013/02/08/invoking-an-hypercall-from-userland-via</span></a><o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; -privcmd/<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; &gt;&nbsp; Other possibilities:<o:p></o:p></=
p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; &gt;&nbsp;&nbsp; - do you have xsm enabled?<=
o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Don't&nbsp; think so. I've heard this securi=
ty stuff can get in the way.<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Doing a&nbsp; 'xl list -Z' doesn't show any =
security<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; labels.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Wi=
sh I had<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Synergy Installed]<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; &gt;-&nbsp; can you put a printk in xen file=
 common/domctl.c:<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Sure but first I likely need to start using =
the openxen code that I
<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; compiled from src.<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; I'm currently using openxen installed via a =
Ubuntu 14.04 package.<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; Mind explaining the best way to proceed on s=
witching to the openxen<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; That I compiled from source? I thought&nbsp;=
 some of it might be installed
<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; at /usr/local/<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; And perhaps just changing a search path or t=
wo will be sufficient.<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; <o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; I suspect I'll need to put a new xen kernel =
on /boot and update the
<o:p></o:p></p>
<p class=3D"MsoPlainText">&gt; grub config.<o:p></o:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">Correct. Just git clone xen tree to match your ve=
rsion, then edit the file to add printk, then build xen. copy xen to target=
 machine over to /boot. Then edit grub kernel line to boot new xen.<o:p></o=
:p></p>
<p class=3D"MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoPlainText">Mukesh<o:p></o:p></p>
</div>
</body>
</html>

--_000_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_--

--_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_
Content-Type: image/png; name="XEN_MA~1.PNG"
Content-Description: XEN_MA~1.PNG
Content-Disposition: attachment; filename="XEN_MA~1.PNG"; size=206807;
	creation-date="Thu, 18 Sep 2014 00:45:59 GMT";
	modification-date="Thu, 18 Sep 2014 00:43:29 GMT"
Content-Transfer-Encoding: base64

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
3Nmx3W63q4q1Rk3S1N/fn1atWjnFVVpaire3NzabjdOnTxMVFYW/vz92u538/HyKi4sJDw+vkwit
rKwkKyuL0NBQQkJCmtVOAK1Wy6233ur486JFi/Dz83Pa5qqd9bVDURS8vb2xWq1kZWU5tSM7O5vK
ykratm3rNLP8/Guhdr0NtddV/15M7tz7Ne20WCxkZWURFhametawEEIIIYQQQgghhPhNs9cwmD9/
Pv369aN///717s/OzmbBggVotVqMRiM5OTnceeedJCYmNvfUqhw5coQFCxYQERGB2WymY8eOTvtr
x79p0yby8vL4+uuv+fHHH4mOjub2229v1vkjIiLo0KEDW7dudUpMb9u2jdTUVHx9fevEAa777ciR
I3z88cfMmjULgDVr1vDVV18xY8YMIiMjOXbsGG+//Tb/+Mc/mhU7gNVqxW6315lZWzup2NgYL1my
hCNHjhAWFkZeXh7+/v785S9/cSSt//nPf9K2bVsOHjxIQEAAV199Na1bt+bdd9+loqKC8PBwzp49
yx/+8AeSk5OB6nFdvXo1RqORM2fOMG7cOAYMGNDs9rrSWDvra8eaNWto27YtR48edcQ6ceJEMjIy
OHXqFFVVVfj4+DB16lRHovf8a+Gf//wn7dq14/Dhw/W2t7H+vVjcvff/+c9/Eh0dzdGjRwkODubU
qVOMHj2aYcOGXeDIhRBCCCGEEEIIIS5vbiV9Dx06xLJlyxx/bizJpigKS5YsoWfPnowePRqoXht2
yZIlPP30043OEHYnrv/85z9O28aNG4der+c///kPw4YNY+TIkSiKwuLFixus55prruHAgQMMHDiQ
vn37eiQ2gLS0NFatWsX111+PVqulvLycffv28ec//7ne8o31W3x8PEVFReTl5REeHs7hw4eJiori
0KFDREZGcvjwYTp37oxGo2l27H5+fvTu3Zt33nmHLl26EB8fT2JiItHR0api9fLyYsyYMU6zkP/9
73+zadMmrrnmGsd5jh8/zuOPP47RaERRFF555RViYmK45ZZb0Gq1KIritBTAyZMnmT59Oj4+PuzZ
s4elS5dy5ZVXttgMV7XXcu12QHVC/uzZszz++ON4eXmxdu1aFi9ezLXXXsvtt9+O1Wrl+eefZ/fu
3S6vOVftVdO/nlbfPVd7+Yum3vvHjh1j+vTp+Pn5cfToUd544w1SU1PrXRNbCCGEEEIIIYQQQtTP
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
9++P559/HmFh/x979x5f05U//v+VhIncKpISCYm6RUWSCTqhPiGiF9SnCV+3oe1QNUzdQ2oMJflQ
HaFUXTqjLlPVhNFWJDGSQ0VdWvUoWhJj6GV4FBO5iEhEcz2/P/LLfjiSc87ayQnx+byfj4dHH9l7
7XXea+211+5ZZ+21wzlw4IDJ/pdeeomNGzdqf2dnZxMWFsaJEyeA6jVR712j+J133ql3nMOGDWPO
nDkAjBkzRstTzxrAqvEsWbKEp59+moCAAAIDA4mKiuLMmTO6Yy4rKyM2NpaQkBB+/etfM2zYML75
5ps603p7e9c5Q1yFarmKi4uJjo4mMDCQnj170r17d8aMGaP786ydd4DFixcTGhpKQEAAPXr0YMyY
MZw7d073Z6mcdz31bElRURFz5swhKCiIwMBApkyZUiuNSt+iErOt+hYhhBBCCCGEEEKIR5U2zTI/
P5+bN2+Snp7O9u3bSU9PZ+/evaxdu5bVq1drL1Br3bo18fHxtG/fnvLyctavX8+f/vQn+vbti6en
Z60POHHiBFOnTmXq1KmMGDFC2/7nP/+Z5ORkYmNjCQgIYO/evcyePRtvb29CQkKUC5CUlES/fv3I
zMzk4MGDtG/fngEDBtR7BumECRO4du0aS5cuZdy4cfXKQ9WiRYto27YtH3/8MbNmzSI9PZ0nnngC
gLy8PJMXwVVUVHDjxg1++eUXoHoJibfffhuAZcuWNegFY4sXL+bs2bO88847xMTE8PjjjwPQsWNH
5TxU4zl37hxdunRh48aNlJWVsWbNGmbOnMnBgwd1zSJdsWIFKSkpxMXF4efnx9atW5k8eTIHDhzA
y8vLJG3fvn3p27evct71Kdf69es5deoUW7duxcfHh1u3bpGdna3786ydd4DMzEy6devGG2+8QWFh
IRs3bmTChAkcPHhQO3cqVM67nnq2ZOnSpRw/fpwVK1bQrl07UlNTa61rrdK3qMRsq75FCCGEEEII
IYQQ4lFlMjJqZ2dH586dCQ0NJS0tDX9/fwYMGMBf//pXLU3z5s0ZOHCg9veSJUvo378/WVlZhIeH
m2SekpLCm2++yaJFixg7dqy2vaCggISEBJYtW0ZkZCQAMTExHDp0iOTkZF0DM1lZWVRVVZGTk4Oz
szOZmZl07tyZ3bt31+ux91atWnHt2rU6B7BtqU+fPrz44otA9Xqxp06dIiEhgUWLFikd36xZMwYM
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
NrD+/t7a7UcIIYQQQoh/dc0O+sbHx3PmzBkmTJgAwPz580lKSlJd6OnTpzl27Bh6vR6on4EUHx9P
ZGRko7hu3bqxZMkSPvzwQ/bu3QvAG2+8oaz9uXnzZpKSkho9gdzBwaHZD2Fz5szhzJkzxMTEGMxZ
TUxriI+P58qVK8THxwPg4eHBRx991Ohrp7NnzyYvL49XXnkFBwcHHB0d+cMf/mDVGpWtoaSkhFdf
fRWdTodGoyE1NVV5iro5tFotI0eOtGjApsGaNWtYvny5Us9du3YlLS2N3r17m1XO+vXrWbt2LcnJ
ycryES4uLmi1Wry8vMzKWW39GOuDavMx1b/U5Ky2L5uyYMEC3Nzc2Lp1q/IAKjs7O+bNm9eoDxrL
Jz8/n6ysLPbs2aPMeJ8zZw7Z2dmkpKSwa9cus+pHDcnHOua0n4ULF7Jw4UISExOV5QBaal+mqOnL
pmK6d+9Obm6usn9vb2+2bdvG008/rcSouUapvY5Z29+l/diu/ajl7u7OzZs38fDwaLFyvv/+e27f
vk1sbGyj7bNnz2bVqlVm7ccW9/fWbD9CCCGEEEL8q7P7ty0F+j8teLbJCzU1NVy/fh1XV1eL/hCv
qKigqKgIR0dHvLy8Gs2c+a3y8nKKioro0qUL3bt3b/L6nTt3qKiowMXFhe7duxtcQ66mpobCwkLc
3NyUtXMtiWktd+7c4ZdffqFv37506NCh2Zi7d+9SWlqKn58fnTp1auUMzTN58mT69+/P6tWruXv3
Lr6+vhYN2paUlDBixAhSU1OZPHmy1XmVlpZSXl6On5+f1Q/XuXXrFi4uLnh6ejaalaQmZ3Prx1Qf
NJbPowz1L7X1bE5fNqWuro6ffvqJmpoaunfvjpubm9n5qKW2fgyRfGxDbfv55ptvmDdvHqdOnbJ4
EMwWbVVNPas9F7/++iulpaXY2dnh5+dncG1hNdcotdcxa/u7WtJ+rPfgwQOKi4uVB921dTnG2Or+
3qC12o8QQgghhBCPszt37mBnZ4e9vb3Rn+ZiXvnoO8MPcuvQoUOjr12bq1OnTqoHKd3c3BoN/vyW
2q8gdujQweRyDWpiWou3t7fJY/Py8nrsZr+Yc+6bc+LECezt7Q0+cMZcHh4eVs+kAnB2djbYJ8zJ
WW39mOqDxvJ5lKH+pTZna8/no+zt7Q3OtLb1eVdbP4ZIPrZhrP0UFRXxP//zP/zyyy9kZmayaNEi
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
o4+PD7t27VKe6A4we/ZscnJymDJlCjqdDicnJ/7yl7/YtI+lpXJt3LiRdevWsXr1auU2a1dXV/R6
Pd7e3lYfz1zZ2zt7y662PT/66KMsWrSId955h48++giA//mf/+GVV14BYNu2bSxdulRZVQh1Kwub
agNq2rOaNPbScvzRQkJCAhcvXiQhIQGoW5G6Y8eORttBFBQUADTov/dLTU0lKytL+btbt25s3Lix
wYpmNWm0VFxczMyZM6mpqcHZ2ZlNmzYREhJidT4yzss4b26sq1+xXFJSYnX+DxozZgzbt2/n7Nmz
Np13IYQQQgghtOLwX9vzjJ8ueLy14xDtxPr16/n+++9JTU1tkePdvHmT69ev07FjR3x9fa3e97C4
uJinn36aTZs28dxzz9mcpt6NGze4ceMGbm5ueHl5KXuh1quoqKCoqAgnJye8vb0brATTMub7GQwG
8vPzcXd3N3nbqsFgoKCgADc3t0Y/qm/dukVJSQkODg74+/ubXLl07do1SkpK8Pf3t2nyy5pyVVZW
8ssvv+Dq6oqXl5dNq7/qmSu7Nb7++mteeOEFzp07p0wgWOvTTz9l69atfPXVV3alUcveslvTnsvK
yigqKqJr165079690fuFhYVUVFTg6upK9+7dTfZlte3ZUhot2Dv+aK2wsJCbN28SEBBg80Okrl+/
TlFREZ06daJPnz5N9i01abTw3HPP0b9/f1auXMm1a9fw9fW1acWsjPP/l0bG+abHuqqqKuLj4wkP
D2ft2rU2H6fe6NGjiYmJ4Y033rA7LyGEEEII8dtVWFiIg4MDjo6OZv9rKs2UHd/LSl+hvdLSUj7/
/HOgbkXZY4891mzH6tq1K127drX585mZmTg6OjJq1Ci70tTr1q1bg4fPPKhz5852rwa0Jh6oewCU
pdvbO3ToQL9+/Zp8r0uXLqomMb29ve2aNLWmXC4uLibjtZa5sqtR39YvXryoSTwtyd6yW9Oe3d3d
cXd3N/m+j4+PqnzUtueW2KbD3vFHaz4+Pqrr0ZTu3bs3OSlvbRot2Ttuyjj/f2lknG8sOzubZcuW
ERAQwJIlSzQ53tixY/nss89YsWJFo38UEEIIIYQQoqXIpK/QVP1qnC1btgAwffr0Zp30tddPP/3E
5MmTzf7YVZOmJbW1eLTysJarvq0DPP7443atRuvatavFiRs1aYRoD/r27Yuvr6/d+cg433a0xXL1
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
dLpGr7dWUlISq1at4vPPPyc+Pt6mMoQQQgghhBBCCNF6tYzZGdHqBQUFodPp6NOnT6O9W03x8PCg
srLSYsztdjOqn376iYKCAv70pz812zHKysr45JNPmnwuNDS0WSZ9HXFe1qqtreXQoUOEhITQrVs3
m8po27YtADdv3rTp9daOC6306dOH4OBgcnNzZdJXCCGEEEIIIYT4DZJJX6GJ7t27k5yczIoVKzAa
jURHR+Pq6kphYSHDhw/H1dW1UXy/fv04ePAg586dA6Curo6goKBGMf379+ezzz7ju+++Q6fTNRnT
2uj1etq2bUtcXFyzHSMoKIisrKxmK78pjjgva7399tssX76cgQMHmlz5bIm/vz+urq5s376d6dOn
c/36dWprawkODlb1emvHhZaSk5OV/YSburGeEEIIIYQQQgghbl8yEyA0s2LFCsaMGcOiRYtITEwk
ISGBJ598kpKSkltiH3vsMaB+Yio5OZns7OxbYtLS0tDpdNx7770mY1obvV5PXFwcHh4ezk5FUy3x
vNq3bw9AaWmpzWV06dKFWbNmkZWVRVxcHMnJyezZs8eqMqwZF1oaM2YMpaWlHD16tFmPI4QQQggh
hBBCiJZH928bThjfm3Gns/MQt5HKykouXLiAl5cX3bp1M7ma0WAwUFhYSIcOHUx+/d5gMFBUVIS3
tze+vr7Nku+yZcv45ptvmn11bElJCXfffTcrV65k4sSJzXosR3LWeR05coSHH36Yr776Spng/aXq
6mpSU1OJiIhgyZIldh2rrKyMS5cu0bFjR7p27WpTGWrHhZZGjx5NQkICL774YrMfSwghhBBCCCGE
ENopLi5Gp9Ph4uJi9qepmPs2fSPbOwjteXp6EhgYaDHO3d3d4nYN7u7uqsqy19WrV5V9cPv27Uu/
fv00P0Zubi4uLi6MGjVK87KdydHn1dBOp0+fNhlz8OBB5s+fT0BAAHPnzrX7mB06dKBDhw52laF2
XGgpKSmJvXv3kp6ertwcTgghhBBCCCGEELc/mfQVv3kNqy7XrVsHwJQpU5pl0vf7779n0qRJTa5K
bc0cfV4N7QRw5513NrliNjAwkE2bNhEZGfmb3s923LhxHD58mKKiIvr27evsdIQQQgghhBBCCOEg
sr2DEEIIIYQQQgghhBBCtCD2bu/w210CJ4QQQgghhBBCCCGEELchmfQVQgghhBBCCCGEEEKI24js
6StEK5OZmUmbNm2YNm2aw455+PBhvvjiC5555hmHHdMeVVVV5OXlERsb2+L3UK6oqGDOnDnK7/fc
cw8PPfSQ1TFaa011qIYz6rClsbdNW2pf/aWysjIWL17MI488QlRUlMOOa6uamhoWL17MH//4x2bZ
S14Iey1btozf/e53REREmI1rbZ8TtLBgwQIqKirIyMhwdipCCCGEEE2SSV8hWpn9+/czYMAAhx7z
f/7nf3jrrbea/GPu2LFjfPbZZ7c8Hh8fz+DBg83GDBs2jBEjRgDw3//93/zXf/1Xo+ddXV2ZNWuW
1flu27aN1atXM3XqVF588UWrX2+N6upqTpw4wcCBA/Hw8LD69a6uroSHhwOwY8cOevToYVOM1jk7
sg4dQes6bGkc0abO6KvWKi8vZ8+ePYwfP96hx7VFTU0NTzzxBAUFBbdMjLek6+o///lPbt68yYMP
Ptjo8QsXLvAf//EfpKam0rNnT4s5V1VV8corrzB8+HBiYmKU57Ozs+nYsSPx8fFUV1ezdetWLly4
gE6no1+/fqSkpNC1a9dbyj106BAffPABP//8M1FRUfzxj3/E29sbAIPBwNatWykuLsZgMNCtWzdi
Y2OVunMWe98vHJ2P0Wjk4sWLPPLII7z++utER0ebLMvc5wQt/ed//id6vZ727dvzxBNPEBQU1Oj5
iooKsrKy+PLLL7njjjuIiorikUceoU2bNprnEhUVRXp6Oi+99JLS94QQQgghWhLZ3kEIYZGnpyee
np5NPnfs2DFee+01zp071+jn559/thhz5coVJebq1aucO3eOjz/+mM2bNysxtoiKiiIgIIAhQ4bY
9HprHD16lD/84Q+Ulpba9HoPDw9mzpzJzJkzm5zYUBtjDTU5O7IOHUHrOmxpHNGmzuirt7O///3v
HD16lKysLAYOHNjouZZ0Xf3+++9ZtWoVdXV1jR4/ePAgf//735XJLks5N0z6Pvvss1RVVSnl7Nmz
h8OHDwNw/fp11q5dy//93/9RXV3Njh07GDVqFLm5uY2O/Z//+Z/88Y9/xMPDgyFDhpCdnc0f/vAH
bty4AcCNGzdYs2YN3333HS4uLhw/fpwpU6awZs0aq85da/a+X2jNUj46nY5169YxYsQInn76aa5d
u2ayLHOfE7SSnZ3N4sVSNWLmAAAgAElEQVSLiYmJ4ebNmzz22GPU1tY2inn44Yd57733CAwMpFOn
TmRkZDBv3rxmyWfUqFEYjUYOHDjQLOULIYQQQthLVvoK4WBGo5GbN29aXOVTXV2NwWDAy8uryefr
6uqorq6mbdu2Jsuora2lqqrK7j/EOnfuTMeOHU0+7+HhwaZNm8yWYSlm7NixjB07li1btrBx40aL
5ZkzdOhQcnJyLMbV1NQA4OZm/lJYUVGBp6cnLi62/z+ZwWCgqqqKdu3a2VyGI4+ltg7V9DG19dyS
jqWVmpoajEYj7u7uJmPUtpfRaKSyshIPDw+b+qLaNnVkX9WKwWCwGKNV/1F7DTfn//7v/8jMzGTx
4sW3rFRs0FKuqzExMWzevJmzZ882+pbJ8ePHGTRoUKOtQtTk/PPPP7Nt2zamT59uMuahhx5izJgx
GI1Gli1bxty5c8nNzaVHjx5UV1ezYsUKHn30UV544QUA7r//fhITE3n33Xd5/PHHlXL+8Ic/8Lvf
/Q6Ad955h6VLl/LQQw/ZtAJdTd/Q6j1XLUvvTVr0VTc3N15++WVSUlLIyMhg0aJFTcZZ+pyghU8+
+YQxY8aQlpZGQkICSUlJFBcX07NnTyVm+fLlBAYGcscddwDQq1cvMjIyuHHjhuarqzt27Eh0dDR6
vZ4JEyZoWrYQQgghhBZkpa8QDlJTU0NGRgZDhgwhPDychIQE9u3bd0tcwx8PoaGhREZGEhkZye7d
uxvF5OXlERYWRlhYGElJSRw5cqTR89XV1SxatIjIyEgiIiJISUnhyy+/tDn3Hj160L17d5tf7yhl
ZWXExsYqP6ZWdS1cuJDhw4cTEhJCaGgoEyZM4NixY41iGvYmDQ0NJSoqioEDB5KamtooJiUlhaee
egqA1NRU5bhZWVlKzIULFxg2bBghISFERUURGxvL3r17NT5z9ceylLPaOlTTx9TUsxqOOlZ5eTnx
8fFs37690eNz5syxeqXYggULiI6OJiQkhEGDBpGamkp+fn6jGDXtVVJSwty5c4mPj2fgwIFERkYS
GhraaOWjVm3qqL6qZT2Xl5fz1FNPERYWRmhoaJMTiVr1H7XXcDV27txJ165duf/++216vSMNHTqU
tm3b3vI+869//Yu4uDiry2vYKqC8vNxirE6n49lnn6VNmzZ88MEHQP3q1J9//plJkyYpcd27dycu
Lg69Xm+yrJEjR2I0Gvnuu++syldN31DTx9S8X6ih5r1JTV+1Jp+OHTvyxBNPsGvXLm7evNlkXvZ+
TsjIyODMmTNmY9q2bcvly5cB+OKLL5o8ZkhIiDLhC/WTvkajkerq6lvKKyoqIjc395ZV7NYYO3Ys
hw8fVlaZCyGEEEK0JDLpK4SDvPzyy2RlZbFo0SL27dtHSkoKs2fP5vjx40rMP//5T5588kn69evH
1q1b2bVrF6tXr77lhkT9+/fnjTfe4J133qFz587MnTtXWYUEsGLFCnbv3s3ixYvZvn07vXv3Ztq0
aVy8eNGm3GNiYnjnnXdMPm80GikuLlZ+Gv4o+7Xr168rP5WVlTblYo6XlxfLly9n+fLleHh4mPwq
an5+PoGBgezYsYO33nqLNm3aMHPmzEY5bdy4kaNHj/LGG29w4MABPvjgg0YryKB+Yu+Pf/wjAPPm
zVOOPXLkSCWma9eurFy5kn379rF7927Cw8N5/vnnm+XrvWqOZSlntXWopo+pqWc1HHUsb29vfH19
G31Vt6amhgMHDhASEmJVzgUFBQwYMIAPPviAN954AxcXF6ZOnUpJSYkSo6a9Ll++zO7du5k0aRLb
t29n9+7dbN68udHepFq1qaP6qpb1/NJLL3H48GFWrFjBu+++2+TWFVr1HzXXcLVycnJISUkxu2K7
pVxX27Rpw7Bhw/jXv/6lPFZYWMj58+eJj4+3OuexY8fi5+fHW2+9per4d9xxB5GRkUo9N0za/nqF
9J133snZs2dNllNYWAhg9bYjavqGmj6m5v1CDTXvTWr6qrX5/O53v6OysvKWPaIbWPqcYM7169c5
fvw4v/vd73jooYfQ6/W3bNsA8MADD/Df//3fZGRksGbNGpYtW4arq6vJco1GI++//z5Dhw6lQ4cO
tzw/depU/vKXv/Af//EfNuUNkJiYyM2bNzl06JDNZQghhBBCNJeW8f1XIW5zV69eJSsri6VLlyo3
GJo3bx55eXlkZ2cTGRmJ0Whk7dq1JCQksH79euW1gwYNuqW8fv36KTfCeeGFF5g8eTL5+fkMHjyY
kpIStm/fzvz585k8eTIA4eHhxMfHs2XLFtLT0zU/v4qKikYrvnx9fZU9GhuUl5cTGRmp/H7HHXdw
8uRJTfNwc3NrNNFljp+fnzJxtnjxYiZMmMC3336rPHbx4kW8vb0JDg6mU6dO9O7dm7CwsEZlxMTE
KCuEoqOj6dWr1y3HcXd355577lF+X7hwIXFxcZw4ceKWCRN7qTmWpZzV1KE1fcxSPVviyGNB/YTU
unXruH79Ol5eXhQUFFBZWWnTikY/Pz/lpmaRkZGMGjWK1157TflKujV945577mk0fn5Jiza1Nh97
aVHPJSUlykTbxIkTgfrVhv/4xz8axWjRf9Rcw63xww8/EBAQYDampVxXoX7v0rVr11JTU4Obmxv/
9V//hY+Pzy3nrSZnnU7HjBkzWLBgAdOmTVN1fB8fH2VCt7y8nHbt2t2yzULHjh2prKxsNFl46tQp
2rRpQ1FREVu3biUxMZE777zTqnMH831DbR9T836hhqX3JrV91dp8OnfuTNeuXSkqKrIpb3O8vLzY
tm0bhYWFbN++nfT0dP7617/y4IMP8oc//IHOnTsD9Su6O3XqxCuvvMKGDRuIi4sjMzOT+Ph4QkND
byl39erVHD9+XFkl/mudOnXi/Pnz+Pj42Jy7r68vERER6PV6kpKSbC5HCCGEEKI5yKSvEA5w6tQp
amtr2bVrV6OvZV+5coUffvgBqP9q9aVLl3j66aetKrt3794Ayoqq06dPU1tby7Bhw5SYNm3aEBkZ
ecvXy7XSrl27RufV1MobLy8v9uzZo/yu0+maJRdb+Pv7AzRalTVjxgxl38Dx48czZcqUW262pEZN
TQ3/+Mc/OHz4MGVlZXTp0gVA1VebW+qxbO1jTdVzSzoWwO9//3tWr17Nxx9/zIQJE/j888/x8/Mz
ue+qWt7e3kRGRvL1118rjzmyb6jhyHy0qOfCwkLq6uq46667TMZo1X/UXMP/H3t3HlZV1fYP/HsY
xMMBRVAQFAxEDAQFVBxCETJFSdDHwtRKQ9PCHEiy0hTeLBMnyKGiRDMTy3IALIUSwyHtTUlFHzW1
4EkJARNkUMbz+4Mf+/XIGfYZGPT5fq6Lq8u9117r3mvfZ59YrL22WBUVFaiqqkKnTp3UlmtL99WR
I0ciNjYW2dnZ8PPzw+HDhxEUFNRkprKYmAFg1KhRSEhIwO7du0W1X11dDTMzMwANf5xQtsTAvXv3
YGxsrNDmnj17kJ6ejvz8fAwdOhQffvihqPbUeTA3Wvo7V9N3kyFz9UHW1tYKTysY2mOPPYbFixfj
9ddfR3JyMlavXo3Dhw9j165dqK2txcsvv4z+/fujpKQE69evh7+/v8oZ/vHx8di6dSs2bdoENzc3
pe0lJyejqKhIuKa6GjVqFD7++GPU1NSoXb+diIiIqKVx0JeoBTTOPPL19RVmrADA0KFDhReQNC7P
cP9adGI0lm98kVHjzJ0Hf9k2MjLSa906dSQSicZHZo2MjHSe2dTcGgdK7p8h5ubmhvT0dKSkpGDv
3r3CL9exsbFavURr0aJFyMrKwvTp0+Ho6IjCwkK1607qo6Xa0jXHlPVzW2oLAGxtbREQEIDdu3cj
LCwMWVlZCAwM1KoOVczMzBRmJ7ZkbojRkvEYop8b19CUy+Uqyxgqf8Tcw8WSyWSQSqUal81oS/dV
W1tb9OvXD4cPH4aXlxdOnjyp9IVtYmJuLBcREYGkpCRR8V+5ckWYydm1a1fU1tbi9u3bCgPnN2/e
bLK+65IlS/D0008Lg38VFRVaf8cqix34v5xo6e9cTd9NhszVB926dUvjUzT6ysnJwY4dO/Ddd9/B
xcUFL774IgDg6NGjuHz5MrZs2QIzMzOEh4fjxRdfRGlpaZNlYbZs2YLExESsX78eQUFBKtuSSqV6
D/gCDYO+q1atws8//2zwpyKIiIiI9MFBX6IW0KtXL0gkEvTo0QPPPPOM0jLdunWDhYUFjh49inHj
xunclqurKyQSCc6cOSPMbqmtrW2WR7TbMqlUqveLVWQyGaZMmYIpU6Zg//79iIqKwpNPPqnQj+3b
twcAlS+3+f777zFv3jxERkYCAKqqqrB69WqVMWtak1NdGbFtaYr5/raU9WFL5lhztKWpn6dPn45p
06bh5MmTOHv2LBYtWqRTO/err6/HhQsXFB591yY3NNH3mmobj765Cujfz425cerUKfTu3VttGX3z
R8w9XBs9evTApUuX9K6nJY0aNQq7du1C//79YWZmhieeeEKv+sLCwrBu3ToUFxfD2dlZZbmcnBxc
vnwZ8+fPBwBhjfujR48KyxcAQFZWFgYOHKi0jhdffBHffPMN4uPj8e677+oV94O0yTGxn1NN1H03
aZOr2sRz+/ZtFBcX6/TEiya1tbXYt28fvvzyS1y6dAkjR45EUlIS/Pz8hDJ//fUXTE1N0blzZ0gk
EnzyySeYMGECvL29YWlpKZS7cuUKVq1ahSVLlmhcbqGurg5Hjx6Fh4cHbG1tdY6/R48ecHNzQ0ZG
xn/V/2cRERFR28dBX6IW0LVrVwQHB2PlypWQy+Xw8/ODsbExcnNzMWTIEBgbG8PExAQzZ85EQkIC
bGxsMH78eNjY2KCkpARAwy+WYtjb2yM0NBQJCQmwt7eHo6MjPvvsMxQXF4teP1FbdXV1uHjxosI2
MzMzuLi4iK6juLgYRUVFKCwsRH19PS5evAiJRKLT+otAw8vusrKycPXqVUgkEtTX12v16HhaWprw
uHnjY8VAw0DW/ZycnGBsbIzk5GTMmjULFRUVqKurE375t7e3x4kTJzBhwgTY2dmpfVTe2dkZR44c
wbVr1wBAaczqyohtS1PMjVT1YUvmWHO0pamfhwwZAnd3d0RFRcHe3l7t8gHq5OTk4PTp07CxscH2
7dtx/fp1PPfccwrnJjY3NNH3mmobj765Cujfz/b29ggLC0NCQgKsra3h6+uL69evNyljiPwRcw/X
xpgxY7Bt2zYsXry4ydq0jdrafXX06NFYtWoVNm3ahNGjRyt9jF2bmNu1a4cpU6Zg/fr1TfYVFhbi
8uXLOH/+PNatW4cnnngCTz75JICGJY1GjBiBDRs2wMvLCw4ODvj4449x/fp1hfXw72dsbIzIyEhE
R0cjIiICjz32mNbnr4o2OSb2c6qOpu8mbXJVm3hSUlLQoUMH+Pv7a9tFGtXX1+OTTz7B2LFj8ckn
nzSZsQ00rJNcXV2NTz/9FM899xyOHz+OqqoqZGdn49y5c8L66Vu3boWtrS0GDBigkIudOnVqUu8X
X3yBFStWwN3dHampqXqdQ3BwsLCWsjZPAxERERE1Jw76ErWQlStXYvny5YiJiRGWYpDJZEhPT4ed
nR2AhrX6OnbsiA0bNmDz5s0AGh4lnTVrFqKjo0W3tWzZMrzxxhuIiIgA0LAO37p169CjRw8Dn1WD
yspKhRlXQMOb1NPS0kTX8fXXXyv8wh4aGgpjY2OdZ8NFRETgyJEjGDNmDABg9uzZWvXhTz/9hLS0
NOHR8fbt2yMiIkJh5hEAdO7cGfPmzcOHH34ovLn81VdfFdZmTkhIQHR0tMIb0Y2NjZsMHgPASy+9
hCNHjiA4OFhlzOrKiG1LU8yN1PVhS+aYodsS089z5szBnDlzEBUVpfM6qcXFxZg6dSrq6uoglUoR
Fxen8BiyNrmhiSGuaUvmaiN9+zkmJgZGRkaYP3++8FmVSqWwsLAQyhgqf8Tcw8WaMGECPv74Y2za
tEmYwfqgtnZfdXJygoeHB86fP4833njDIDE/99xz+Oijj4R/Gxsbo2PHjoiNjQXQ8JKsf/3rX3jt
tdcUBtLi4uIwZ84cYSanubk5VqxY0eRlm/cbM2YMPvzwQ3z00UdYtWqVqHMWS2yOif2cqiPmu0ls
roqNp6SkBJs3b8bEiRP1Xh5DmXbt2uGHH35Qew/w9vbGwoUL8eGHH2LNmjXo2rUrPv74Y2zbtg3v
vfcedu3aBQC4dOkS/v777yZ5OH369CYvsu3QoQMAaFxqRYynnnoK69evx6lTp5r8fwIRERFRa5H8
a/15+a5I3WbSEZH2KisrkZ+fD5lMBltbW6UzxOrr6/HXX3+hpqYGXbp0QceOHXVq69atWygtLYWT
k5PK2WSPspqaGuTl5cHS0lLrQRmg4U30hYWFMDExgZ2dncKsqgeVlpaisLAQVlZWSte0LCgoQHl5
OWQyGbp06aLyetTU1CA3NxcdO3ZU+bippjJi29IUc2Nb6vqwJXPMkG1p6sNffvkFs2bNQmZmpk5v
dh8/fjx69+6NpUuX4ubNm3BwcFA5mCv2eolhiGvakrmqbz83KikpQVFREczMzODg4KA0ZkPlj5h7
uBhbt25FXFwckpKS9F4q4VFTUVEBiUQCc3NzteWuX7+OsrIyODs7C0sVtCaxOSbmc6qO2O8msbmq
Lp7a2lrMmzcPly9fRlpamsZr0txqa2tRXFwMW1tbvWfUVldXIzw8HP369cP//M//6B3bk08+icDA
QLzzzjt610VEREQENPxuJpFIYGRkpPZHWZlnNv6bg75ERERAwyPlx48fR0lJCRITEzFjxgy8/PLL
OtXVOOgbFxdn4Cgffobs54eZXC7HwoULkZGRgS1btrTK7MADBw6oXcZj0KBBzfaECD0cIiMjcfz4
cWzfvl1YQuFRcOTIEbz11lvo2bMnNm3aJMz61UdcXBy+++47ZGVl6fyECBEREdH99B30/e+b+kdE
RKTEjRs3kJSUBJlMhnnz5mHKlCk61+Xi4gIHBwcDRvfoMGQ/P8wkEgnWrl2LdevWoXv37q0Sw759
+5Cfn69yv52dHQd9/8v16dMHr7zyyiM14As0vCdh48aN8Pb2NtgavGPHjsWxY8eQl5dn0HWjiYiI
iHTFmb5EREREREREREREbYi+M335elkiIiIiIiIiIiKiRwgHfYmIiIiIiIiIiIgeIVzTlwyutLQU
mzdvxtmzZ9G+fXt4eHjg5ZdfhkwmAwBUVVXh0KFD8Pf3N8iLM1RZunQpysvLER8f32xtEBERERER
ERERtTWc6UsGJZfLERERgb1792Lw4MHw8vLCmTNnYGLyf39f2LZtG+bPn4/169c3ayw+Pj44ePCg
2jeTExERERERERERPWo405cM6tq1azh37hw+/vhjjBw5UmkZHx8f9OzZEwMGDGjWWIKCgiCXy5GZ
mYmwsLBmbYuIiIiIiIiIiKit4ExfMqji4mIAQK9evVSWGThwIA4ePIjg4OBmjcXKygp+fn5IT09v
1naIiIiIiIiIiIjaEs70JYMJCQlBUVERAGDy5MkwMmr4m8IHH3yAYcOGobS0FCEhIUL58ePHIzo6
WmV9eXl5uHz5MkaOHCnUpa3Ro0cjLi4Od+/ehVQq1akOIiIiIiIiIiKihwln+pLBLF26FDNmzAAA
REdHY8WKFVixYgU8PDwAADKZTNgmlUpx584dtfVNmzYNc+bMwddff61zTCNHjsS9e/dw9OhRnesg
IiIiIiIiIiJ6mHCmLxnM4MGDUV9fDwDw8/ND9+7dFfabmJhg+PDhABoGgDXp1KkTbty4ARsbG51j
srOzQ79+/ZCeno5Ro0bpXA8REREREREREdHDgoO+1GYlJyejqKgITk5OetUzatQofPzxx6ipqYGp
qamBoiMiIiIiIiIiImqbuLwDtVlSqVTvAV+gYdC3rKwMP//8swGiIiIiIiIiIiIiats46EutQiqV
4u7du2rL1NXV4aeffkJhYaFebfXo0QNubm7IyMjQqx4iIiIiIiIiIqKHAQd9qVW4uLjgxIkTuHr1
Kq5du4YrV640KfPFF1/g5ZdfxsyZM/VuLzg4GIcOHRLWHCYiIiIiIiIiInpUcdCXWkVERAQkEgnG
jBmD4OBgpKSkNCnToUMHAMCtW7f0bu+pp57CrVu3cOrUKb3rIiIiIiIiIiIiasv4IjcyqKFDhyqd
tfugnj17IjMzE3l5ebC0tISdnV2TMuPGjcP27dvRr18/veN6/PHH4eTkhIyMDPj5+eldHxERERER
ERERUVvFmb7UakxNTeHq6qp0wPfIkSMYMWIELC0tsXDhQoO0N2rUKGRkZEAulxukPiIiIiIiIiIi
oraIg77UJrm6umLjxo3Ytm2bsMyDvsaOHYuOHTsiLy/PIPURERERERERERG1RVzegdokBwcHODg4
GLROLy8vpKWlGbROIiIiIiIiIiKitoYzfYmIiIiIiIiIiIgeIRz0JSIiIiIiIiIiInqEcHkHHZSW
lmLz5s04e/Ys2rdvDw8PD7z88suQyWQAgKqqKhw6dAj+/v4GW4+WiIiIiIiIiIiISAzO9NWSXC5H
REQE9u7di8GDB8PLywtnzpyBicn/jZ9v27YN8+fPx/r161sxUiIiIiIiIiIiIvpvxJm+Wrp27RrO
nTuHjz/+GCNHjlRaxsfHBz179sSAAQNaODoiIiIiIiIiIiL6b8dBXy0VFxcDAHr16qWyzMCBA3Hw
4MGWComIiIiIiIiIiIhIwEFfLYSEhKCoqAgAMHnyZBgZNayO8cEHH2DYsGEoLS1FSEiIUH78+PGI
jo5ulViJiIiIiIiIiIjovxMHfbWwdOlSnD17FmvWrEF0dDQ6d+4MAPDw8AAAyGQyrFixAgCwfPly
3Llzp9ViJSIiIiIiIiIiov9OHPTVwuDBg1FfXw8A8PPzQ/fu3RX2m5iYYPjw4QAaBoCJiIiIiIiI
iIiIWppRawdARERERERERERERIbDQV8iIiIiIiIiIiKiRwiXd2gmUqkUd+/ebe0wiIiIiIiIiIiI
6CFXV1eHnJwc/Pnnn6isrIS5uTl69eoFb29vtGvXrkl5Dvo2ExcXF2RlZeHq1auQSCSor69Hr169
WjssIiIiIiIiIiIieojU1dXh8OHDMDU1ha+vrzDZ9OrVq/juu+8wbty4JgO/XN6hmUREREAikWDM
mDEIDg5GSkpKa4dERERERERERERED5kLFy4IA74WFhYwMjKCubk5PD09YWpqijNnzjQ5hjN9tTR0
6FBcuXJFY7mePXsiMzMTeXl5sLS0hJ2dXQtER0RERERERERERI+S3NxcDBw4UOm+xx57DDk5OfDz
81PYzkHfZmRqagpXV9fWDoOIiIiIiIiIiIgeUpWVlbC0tIRcLm+yTyqV4s6dO022c3kHIiIiIiIi
IiIiojZKLpdDIpEo3SeRSJQOBnPQl4iIiIiIiIiIiOgRwkFfIiIiIiIiIiIiokcIB32JiIiIiIiI
iIiIHiFt/kVuVVVVOHToEPz9/dGhQ4fWDket8vJyREVFCf8eMWIEpk6dqnUZQ3uY+lCM1ujDtkbf
a9pWc/V+paWliI2NxYsvvggfH58Wa1dXtbW1iI2NxYwZM+Ds7Nza4RA18f777+Ppp59Gv379WjsU
IiIiIiIiamYKg77Z2dnIyspqUiggIAC+vr5qywwaNAhDhw4FAPzv//4vjh8/rrDf2NgY8+bN0zrA
bdu2YfXq1Zg2bRreeecdrY/XRnV1Nc6fPw93d3dIpVKtjzc2Nkbfvn0BAF999RXs7e11KmPomFuy
D1uCofuwrWmJa9oauaqtsrIy7N+/H6GhoS3ari5qa2sxe/Zs5OTkNBkYb0v31T179uDevXuYMmWK
wvb8/Hx8/fXXCA8PR7du3TTGXFVVhY8++ghDhgzB4MGDhf0pKSmwsrJCQEAAqqursWXLFuTn50Mi
kcDZ2RkhISHo0qVLk3qPHj2Kb7/9FiUlJfDx8cGMGTNgaWkJAKipqcGWLVtQUFCAmpoa2Nrawt/f
X+i71qLv90VLxyOXy3Hz5k28+OKL+Oyzz+Dn59cKURIREREREVFLUVjeITs7G59++imuXbum8FNS
UqKxzD///COUuX37Nq5du4Yff/wRiYmJQhld+Pj4oGfPnhgwYICOpyjeqVOnMGnSJNy6dUun46VS
KebOnYu5c+cqHdgQW0YbYmJuyT5sCYbuw7amJa5pa+Tqo+yTTz7BqVOnsGPHDri7uyvsa0v31T/+
+AOrVq1CfX29wvYjR47gk08+EQZaNcXcOOi7aNEiVFVVCfXs378fx44dAwBUVFRg7dq1+M9//oPq
6mp89dVXCAoKQkZGhkLbu3fvxowZMyCVSjFgwACkpKRg0qRJuHv3LgDg7t27WLNmDa5evQojIyOc
OXMGkydPxpo1a7Q6d0PT9/vC0DTFI5FIsG7dOgwdOhSvv/467ty508IREhERERERUUtqsryDVCrF
xo0b1R6kqczo0aMxevRobN68GRs2bNBYnzoDBw7EwYMHNZarra0FAJiYqF+xory8HObm5jAy0n05
45qaGlRVVcHCwkLnOlqyLbF9WFdXh6qqKpibm6ssI7af21JbhlJbWwu5XA5TU1OVZcReL7lcjsrK
SkilUp1yUew1bclcNZSamhqNZQyVP3K5HPfu3dNrpuZ//vMfbNq0CbGxsejVq5fSMm3lvjp48GAk
JibiypUr6N27t7D9zJkz6NOnj8JSIWJiLikpwbZt2zBr1iyVZaZOnYqnnnoKcrkc77//PhYuXIiM
jAzY29ujuroaK1euxPTp07F48WIAwLPPPouRI0fiyy+/xMsvvyzUM2nSJDz99NMAgO3bt2P58uWY
OnWqTjPQxeSGmBwzJE3fTYbIVRMTE3zwwQcICQlBfHw8YmJidK6LiIiIiIiI2rY2+yK30tJS+Pv7
Cz+qZnUtW7YMQ8OU/EQAACAASURBVIYMgYeHBzw9PREWFobs7GyFMo1rk3p6esLHxwfu7u4IDw9X
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
AAAASUVORK5CYII=

--_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_
Content-Type: application/octet-stream; name="grub.cfg"
Content-Description: grub.cfg
Content-Disposition: attachment; filename="grub.cfg"; size=17962;
	creation-date="Thu, 18 Sep 2014 01:15:06 GMT";
	modification-date="Thu, 18 Sep 2014 01:13:37 GMT"
Content-Transfer-Encoding: base64

IwojIERPIE5PVCBFRElUIFRISVMgRklMRQojCiMgSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgZ3J1Yi1ta2NvbmZpZyB1c2luZyB0ZW1wbGF0ZXMKIyBmcm9tIC9ldGMvZ3J1Yi5kIGFu
ZCBzZXR0aW5ncyBmcm9tIC9ldGMvZGVmYXVsdC9ncnViCiMKCiMjIyBCRUdJTiAvZXRjL2dydWIu
ZC8wMF9oZWFkZXIgIyMjCmlmIFsgLXMgJHByZWZpeC9ncnViZW52IF07IHRoZW4KICBzZXQgaGF2
ZV9ncnViZW52PXRydWUKICBsb2FkX2VudgpmaQppZiBbICIke25leHRfZW50cnl9IiBdIDsgdGhl
bgogICBzZXQgZGVmYXVsdD0iJHtuZXh0X2VudHJ5fSIKICAgc2V0IG5leHRfZW50cnk9CiAgIHNh
dmVfZW52IG5leHRfZW50cnkKICAgc2V0IGJvb3Rfb25jZT10cnVlCmVsc2UKICAgc2V0IGRlZmF1
bHQ9IlVidW50dSBHTlUvTGludXgsIHdpdGggWGVuIGh5cGVydmlzb3IiCmZpCgppZiBbIHgiJHtm
ZWF0dXJlX21lbnVlbnRyeV9pZH0iID0geHkgXTsgdGhlbgogIG1lbnVlbnRyeV9pZF9vcHRpb249
Ii0taWQiCmVsc2UKICBtZW51ZW50cnlfaWRfb3B0aW9uPSIiCmZpCgpleHBvcnQgbWVudWVudHJ5
X2lkX29wdGlvbgoKaWYgWyAiJHtwcmV2X3NhdmVkX2VudHJ5fSIgXTsgdGhlbgogIHNldCBzYXZl
ZF9lbnRyeT0iJHtwcmV2X3NhdmVkX2VudHJ5fSIKICBzYXZlX2VudiBzYXZlZF9lbnRyeQogIHNl
dCBwcmV2X3NhdmVkX2VudHJ5PQogIHNhdmVfZW52IHByZXZfc2F2ZWRfZW50cnkKICBzZXQgYm9v
dF9vbmNlPXRydWUKZmkKCmZ1bmN0aW9uIHNhdmVkZWZhdWx0IHsKICBpZiBbIC16ICIke2Jvb3Rf
b25jZX0iIF07IHRoZW4KICAgIHNhdmVkX2VudHJ5PSIke2Nob3Nlbn0iCiAgICBzYXZlX2VudiBz
YXZlZF9lbnRyeQogIGZpCn0KZnVuY3Rpb24gcmVjb3JkZmFpbCB7CiAgc2V0IHJlY29yZGZhaWw9
MQogIGlmIFsgLW4gIiR7aGF2ZV9ncnViZW52fSIgXTsgdGhlbiBpZiBbIC16ICIke2Jvb3Rfb25j
ZX0iIF07IHRoZW4gc2F2ZV9lbnYgcmVjb3JkZmFpbDsgZmk7IGZpCn0KZnVuY3Rpb24gbG9hZF92
aWRlbyB7CiAgaWYgWyB4JGZlYXR1cmVfYWxsX3ZpZGVvX21vZHVsZSA9IHh5IF07IHRoZW4KICAg
IGluc21vZCBhbGxfdmlkZW8KICBlbHNlCiAgICBpbnNtb2QgZWZpX2dvcAogICAgaW5zbW9kIGVm
aV91Z2EKICAgIGluc21vZCBpZWVlMTI3NV9mYgogICAgaW5zbW9kIHZiZQogICAgaW5zbW9kIHZn
YQogICAgaW5zbW9kIHZpZGVvX2JvY2hzCiAgICBpbnNtb2QgdmlkZW9fY2lycnVzCiAgZmkKfQoK
aWYgWyB4JGZlYXR1cmVfZGVmYXVsdF9mb250X3BhdGggPSB4eSBdIDsgdGhlbgogICBmb250PXVu
aWNvZGUKZWxzZQppbnNtb2QgcGFydF9tc2RvcwppbnNtb2QgbHZtCmluc21vZCBleHQyCnNldCBy
b290PSdsdm1pZC8wMFVpM2ItZGJwRi1FY0FhLUZZOE8tTk1IWS13eGc3LWlQd3NPbi9SYTZEekst
VTFCSi1zVWFULXMybUktbzZsdy1XeTNmLUtNQXJnRScKaWYgWyB4JGZlYXR1cmVfcGxhdGZvcm1f
c2VhcmNoX2hpbnQgPSB4eSBdOyB0aGVuCiAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAt
LXNldD1yb290IC0taGludD0nbHZtaWQvMDBVaTNiLWRicEYtRWNBYS1GWThPLU5NSFktd3hnNy1p
UHdzT24vUmE2RHpLLVUxQkotc1VhVC1zMm1JLW82bHctV3kzZi1LTUFyZ0UnICBhYjZlZjcxNy0w
MGM4LTQxYjctYmQzYy00ZWZjOGU2YmIxOTcKZWxzZQogIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZz
LXV1aWQgLS1zZXQ9cm9vdCBhYjZlZjcxNy0wMGM4LTQxYjctYmQzYy00ZWZjOGU2YmIxOTcKZmkK
ICAgIGZvbnQ9Ii91c3Ivc2hhcmUvZ3J1Yi91bmljb2RlLnBmMiIKZmkKCmlmIGxvYWRmb250ICRm
b250IDsgdGhlbgogIHNldCBnZnhtb2RlPWF1dG8KICBsb2FkX3ZpZGVvCiAgaW5zbW9kIGdmeHRl
cm0KICBzZXQgbG9jYWxlX2Rpcj0kcHJlZml4L2xvY2FsZQogIHNldCBsYW5nPWVuX1VTCiAgaW5z
bW9kIGdldHRleHQKZmkKdGVybWluYWxfb3V0cHV0IGdmeHRlcm0KaWYgWyAiJHtyZWNvcmRmYWls
fSIgPSAxIF0gOyB0aGVuCiAgc2V0IHRpbWVvdXQ9LTEKZWxzZQogIGlmIFsgeCRmZWF0dXJlX3Rp
bWVvdXRfc3R5bGUgPSB4eSBdIDsgdGhlbgogICAgc2V0IHRpbWVvdXRfc3R5bGU9bWVudQogICAg
c2V0IHRpbWVvdXQ9MjkKICAjIEZhbGxiYWNrIG5vcm1hbCB0aW1lb3V0IGNvZGUgaW4gY2FzZSB0
aGUgdGltZW91dF9zdHlsZSBmZWF0dXJlIGlzCiAgIyB1bmF2YWlsYWJsZS4KICBlbHNlCiAgICBz
ZXQgdGltZW91dD0yOQogIGZpCmZpCiMjIyBFTkQgL2V0Yy9ncnViLmQvMDBfaGVhZGVyICMjIwoK
IyMjIEJFR0lOIC9ldGMvZ3J1Yi5kLzA1X2RlYmlhbl90aGVtZSAjIyMKc2V0IG1lbnVfY29sb3Jf
bm9ybWFsPXdoaXRlL2JsYWNrCnNldCBtZW51X2NvbG9yX2hpZ2hsaWdodD1ibGFjay9saWdodC1n
cmF5CmlmIGJhY2tncm91bmRfY29sb3IgNDUsNTEsNTM7IHRoZW4KICBjbGVhcgpmaQojIyMgRU5E
IC9ldGMvZ3J1Yi5kLzA1X2RlYmlhbl90aGVtZSAjIyMKCiMjIyBCRUdJTiAvZXRjL2dydWIuZC8x
MF9saW51eCAjIyMKZnVuY3Rpb24gZ2Z4bW9kZSB7CglzZXQgZ2Z4cGF5bG9hZD0iJHsxfSIKCWlm
IFsgIiR7MX0iID0gImtlZXAiIF07IHRoZW4KCQlzZXQgdnRfaGFuZG9mZj12dC5oYW5kb2ZmPTcK
CWVsc2UKCQlzZXQgdnRfaGFuZG9mZj0KCWZpCn0KaWYgWyAiJHtyZWNvcmRmYWlsfSIgIT0gMSBd
OyB0aGVuCiAgaWYgWyAtZSAke3ByZWZpeH0vZ2Z4YmxhY2tsaXN0LnR4dCBdOyB0aGVuCiAgICBp
ZiBod21hdGNoICR7cHJlZml4fS9nZnhibGFja2xpc3QudHh0IDM7IHRoZW4KICAgICAgaWYgWyAk
e21hdGNofSA9IDAgXTsgdGhlbgogICAgICAgIHNldCBsaW51eF9nZnhfbW9kZT1rZWVwCiAgICAg
IGVsc2UKICAgICAgICBzZXQgbGludXhfZ2Z4X21vZGU9dGV4dAogICAgICBmaQogICAgZWxzZQog
ICAgICBzZXQgbGludXhfZ2Z4X21vZGU9dGV4dAogICAgZmkKICBlbHNlCiAgICBzZXQgbGludXhf
Z2Z4X21vZGU9a2VlcAogIGZpCmVsc2UKICBzZXQgbGludXhfZ2Z4X21vZGU9dGV4dApmaQpleHBv
cnQgbGludXhfZ2Z4X21vZGUKbWVudWVudHJ5ICdVYnVudHUnIC0tY2xhc3MgdWJ1bnR1IC0tY2xh
c3MgZ251LWxpbnV4IC0tY2xhc3MgZ251IC0tY2xhc3Mgb3MgJG1lbnVlbnRyeV9pZF9vcHRpb24g
J2dudWxpbnV4LXNpbXBsZS1hYjZlZjcxNy0wMGM4LTQxYjctYmQzYy00ZWZjOGU2YmIxOTcnIHsK
CXJlY29yZGZhaWwKCWxvYWRfdmlkZW8KCWdmeG1vZGUgJGxpbnV4X2dmeF9tb2RlCglpbnNtb2Qg
Z3ppbwoJaW5zbW9kIHBhcnRfbXNkb3MKCWluc21vZCBleHQyCglzZXQgcm9vdD0naGQxLG1zZG9z
MScKCWlmIFsgeCRmZWF0dXJlX3BsYXRmb3JtX3NlYXJjaF9oaW50ID0geHkgXTsgdGhlbgoJICBz
ZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgLS1oaW50LWJpb3M9aGQxLG1z
ZG9zMSAtLWhpbnQtZWZpPWhkMSxtc2RvczEgLS1oaW50LWJhcmVtZXRhbD1haGNpMSxtc2RvczEg
IGJiMGVhY2I0LWQ2NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJZWxzZQoJICBzZWFyY2ggLS1u
by1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBl
NDEwYjUwODRjCglmaQoJbGludXgJL3ZtbGludXotMy4xMy4wLTMyLWdlbmVyaWMgcm9vdD0vZGV2
L21hcHBlci9waWV0LS10MzYwMC0tdmctcm9vdCBybyAgCglpbml0cmQJL2luaXRyZC5pbWctMy4x
My4wLTMyLWdlbmVyaWMKfQpzdWJtZW51ICdBZHZhbmNlZCBvcHRpb25zIGZvciBVYnVudHUnICRt
ZW51ZW50cnlfaWRfb3B0aW9uICdnbnVsaW51eC1hZHZhbmNlZC1hYjZlZjcxNy0wMGM4LTQxYjct
YmQzYy00ZWZjOGU2YmIxOTcnIHsKCW1lbnVlbnRyeSAnVWJ1bnR1LCB3aXRoIExpbnV4IDMuMTMu
MC0zMi1nZW5lcmljJyAtLWNsYXNzIHVidW50dSAtLWNsYXNzIGdudS1saW51eCAtLWNsYXNzIGdu
dSAtLWNsYXNzIG9zICRtZW51ZW50cnlfaWRfb3B0aW9uICdnbnVsaW51eC0zLjEzLjAtMzItZ2Vu
ZXJpYy1hZHZhbmNlZC1hYjZlZjcxNy0wMGM4LTQxYjctYmQzYy00ZWZjOGU2YmIxOTcnIHsKCQly
ZWNvcmRmYWlsCgkJbG9hZF92aWRlbwoJCWdmeG1vZGUgJGxpbnV4X2dmeF9tb2RlCgkJaW5zbW9k
IGd6aW8KCQlpbnNtb2QgcGFydF9tc2RvcwoJCWluc21vZCBleHQyCgkJc2V0IHJvb3Q9J2hkMSxt
c2RvczEnCgkJaWYgWyB4JGZlYXR1cmVfcGxhdGZvcm1fc2VhcmNoX2hpbnQgPSB4eSBdOyB0aGVu
CgkJICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgLS1oaW50LWJpb3M9
aGQxLG1zZG9zMSAtLWhpbnQtZWZpPWhkMSxtc2RvczEgLS1oaW50LWJhcmVtZXRhbD1haGNpMSxt
c2RvczEgIGJiMGVhY2I0LWQ2NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJCWVsc2UKCQkgIHNl
YXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCBiYjBlYWNiNC1kNjRlLTQyMTct
OTQyYy1kMGU0MTBiNTA4NGMKCQlmaQoJCWVjaG8JJ0xvYWRpbmcgTGludXggMy4xMy4wLTMyLWdl
bmVyaWMgLi4uJwoJCWxpbnV4CS92bWxpbnV6LTMuMTMuMC0zMi1nZW5lcmljIHJvb3Q9L2Rldi9t
YXBwZXIvcGlldC0tdDM2MDAtLXZnLXJvb3Qgcm8gIAoJCWVjaG8JJ0xvYWRpbmcgaW5pdGlhbCBy
YW1kaXNrIC4uLicKCQlpbml0cmQJL2luaXRyZC5pbWctMy4xMy4wLTMyLWdlbmVyaWMKCX0KCW1l
bnVlbnRyeSAnVWJ1bnR1LCB3aXRoIExpbnV4IDMuMTMuMC0zMi1nZW5lcmljIChyZWNvdmVyeSBt
b2RlKScgLS1jbGFzcyB1YnVudHUgLS1jbGFzcyBnbnUtbGludXggLS1jbGFzcyBnbnUgLS1jbGFz
cyBvcyAkbWVudWVudHJ5X2lkX29wdGlvbiAnZ251bGludXgtMy4xMy4wLTMyLWdlbmVyaWMtcmVj
b3ZlcnktYWI2ZWY3MTctMDBjOC00MWI3LWJkM2MtNGVmYzhlNmJiMTk3JyB7CgkJcmVjb3JkZmFp
bAoJCWxvYWRfdmlkZW8KCQlpbnNtb2QgZ3ppbwoJCWluc21vZCBwYXJ0X21zZG9zCgkJaW5zbW9k
IGV4dDIKCQlzZXQgcm9vdD0naGQxLG1zZG9zMScKCQlpZiBbIHgkZmVhdHVyZV9wbGF0Zm9ybV9z
ZWFyY2hfaGludCA9IHh5IF07IHRoZW4KCQkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQg
LS1zZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9aGQxLG1zZG9zMSAt
LWhpbnQtYmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBl
NDEwYjUwODRjCgkJZWxzZQoJCSAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1y
b290IGJiMGVhY2I0LWQ2NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJCWZpCgkJZWNobwknTG9h
ZGluZyBMaW51eCAzLjEzLjAtMzItZ2VuZXJpYyAuLi4nCgkJbGludXgJL3ZtbGludXotMy4xMy4w
LTMyLWdlbmVyaWMgcm9vdD0vZGV2L21hcHBlci9waWV0LS10MzYwMC0tdmctcm9vdCBybyByZWNv
dmVyeSBub21vZGVzZXQgCgkJZWNobwknTG9hZGluZyBpbml0aWFsIHJhbWRpc2sgLi4uJwoJCWlu
aXRyZAkvaW5pdHJkLmltZy0zLjEzLjAtMzItZ2VuZXJpYwoJfQoJbWVudWVudHJ5ICdVYnVudHUs
IHdpdGggTGludXggMy4xMy4wLTI0LWdlbmVyaWMnIC0tY2xhc3MgdWJ1bnR1IC0tY2xhc3MgZ251
LWxpbnV4IC0tY2xhc3MgZ251IC0tY2xhc3Mgb3MgJG1lbnVlbnRyeV9pZF9vcHRpb24gJ2dudWxp
bnV4LTMuMTMuMC0yNC1nZW5lcmljLWFkdmFuY2VkLWFiNmVmNzE3LTAwYzgtNDFiNy1iZDNjLTRl
ZmM4ZTZiYjE5NycgewoJCXJlY29yZGZhaWwKCQlsb2FkX3ZpZGVvCgkJZ2Z4bW9kZSAkbGludXhf
Z2Z4X21vZGUKCQlpbnNtb2QgZ3ppbwoJCWluc21vZCBwYXJ0X21zZG9zCgkJaW5zbW9kIGV4dDIK
CQlzZXQgcm9vdD0naGQxLG1zZG9zMScKCQlpZiBbIHgkZmVhdHVyZV9wbGF0Zm9ybV9zZWFyY2hf
aGludCA9IHh5IF07IHRoZW4KCQkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1zZXQ9
cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9aGQxLG1zZG9zMSAtLWhpbnQt
YmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEwYjUw
ODRjCgkJZWxzZQoJCSAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290IGJi
MGVhY2I0LWQ2NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJCWZpCgkJZWNobwknTG9hZGluZyBM
aW51eCAzLjEzLjAtMjQtZ2VuZXJpYyAuLi4nCgkJbGludXgJL3ZtbGludXotMy4xMy4wLTI0LWdl
bmVyaWMgcm9vdD0vZGV2L21hcHBlci9waWV0LS10MzYwMC0tdmctcm9vdCBybyAgCgkJZWNobwkn
TG9hZGluZyBpbml0aWFsIHJhbWRpc2sgLi4uJwoJCWluaXRyZAkvaW5pdHJkLmltZy0zLjEzLjAt
MjQtZ2VuZXJpYwoJfQoJbWVudWVudHJ5ICdVYnVudHUsIHdpdGggTGludXggMy4xMy4wLTI0LWdl
bmVyaWMgKHJlY292ZXJ5IG1vZGUpJyAtLWNsYXNzIHVidW50dSAtLWNsYXNzIGdudS1saW51eCAt
LWNsYXNzIGdudSAtLWNsYXNzIG9zICRtZW51ZW50cnlfaWRfb3B0aW9uICdnbnVsaW51eC0zLjEz
LjAtMjQtZ2VuZXJpYy1yZWNvdmVyeS1hYjZlZjcxNy0wMGM4LTQxYjctYmQzYy00ZWZjOGU2YmIx
OTcnIHsKCQlyZWNvcmRmYWlsCgkJbG9hZF92aWRlbwoJCWluc21vZCBnemlvCgkJaW5zbW9kIHBh
cnRfbXNkb3MKCQlpbnNtb2QgZXh0MgoJCXNldCByb290PSdoZDEsbXNkb3MxJwoJCWlmIFsgeCRm
ZWF0dXJlX3BsYXRmb3JtX3NlYXJjaF9oaW50ID0geHkgXTsgdGhlbgoJCSAgc2VhcmNoIC0tbm8t
ZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290IC0taGludC1iaW9zPWhkMSxtc2RvczEgLS1oaW50
LWVmaT1oZDEsbXNkb3MxIC0taGludC1iYXJlbWV0YWw9YWhjaTEsbXNkb3MxICBiYjBlYWNiNC1k
NjRlLTQyMTctOTQyYy1kMGU0MTBiNTA4NGMKCQllbHNlCgkJICBzZWFyY2ggLS1uby1mbG9wcHkg
LS1mcy11dWlkIC0tc2V0PXJvb3QgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEwYjUwODRj
CgkJZmkKCQllY2hvCSdMb2FkaW5nIExpbnV4IDMuMTMuMC0yNC1nZW5lcmljIC4uLicKCQlsaW51
eAkvdm1saW51ei0zLjEzLjAtMjQtZ2VuZXJpYyByb290PS9kZXYvbWFwcGVyL3BpZXQtLXQzNjAw
LS12Zy1yb290IHJvIHJlY292ZXJ5IG5vbW9kZXNldCAKCQllY2hvCSdMb2FkaW5nIGluaXRpYWwg
cmFtZGlzayAuLi4nCgkJaW5pdHJkCS9pbml0cmQuaW1nLTMuMTMuMC0yNC1nZW5lcmljCgl9Cn0K
CiMjIyBFTkQgL2V0Yy9ncnViLmQvMTBfbGludXggIyMjCgojIyMgQkVHSU4gL2V0Yy9ncnViLmQv
MjBfbGludXhfeGVuICMjIwptZW51ZW50cnkgJ1VidW50dSBHTlUvTGludXgsIHdpdGggWGVuIGh5
cGVydmlzb3InIC0tY2xhc3MgdWJ1bnR1IC0tY2xhc3MgZ251LWxpbnV4IC0tY2xhc3MgZ251IC0t
Y2xhc3Mgb3MgLS1jbGFzcyB4ZW4gJG1lbnVlbnRyeV9pZF9vcHRpb24gJ3hlbi1nbnVsaW51eC1z
aW1wbGUtYWI2ZWY3MTctMDBjOC00MWI3LWJkM2MtNGVmYzhlNmJiMTk3JyB7CglpbnNtb2QgcGFy
dF9tc2RvcwoJaW5zbW9kIGV4dDIKCXNldCByb290PSdoZDEsbXNkb3MxJwoJaWYgWyB4JGZlYXR1
cmVfcGxhdGZvcm1fc2VhcmNoX2hpbnQgPSB4eSBdOyB0aGVuCgkgIHNlYXJjaCAtLW5vLWZsb3Bw
eSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9
aGQxLG1zZG9zMSAtLWhpbnQtYmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00
MjE3LTk0MmMtZDBlNDEwYjUwODRjCgllbHNlCgkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1
aWQgLS1zZXQ9cm9vdCBiYjBlYWNiNC1kNjRlLTQyMTctOTQyYy1kMGU0MTBiNTA4NGMKCWZpCgll
Y2hvCSdMb2FkaW5nIFhlbiA0LjQtYW1kNjQgLi4uJwogICAgICAgIGlmIFsgIiRncnViX3BsYXRm
b3JtIiA9ICJwYyIgLW8gIiRncnViX3BsYXRmb3JtIiA9ICIiIF07IHRoZW4KICAgICAgICAgICAg
eGVuX3JtX29wdHM9CiAgICAgICAgZWxzZQogICAgICAgICAgICB4ZW5fcm1fb3B0cz0ibm8tcmVh
bC1tb2RlIGVkZD1vZmYiCiAgICAgICAgZmkKCW11bHRpYm9vdAkveGVuLTQuNC1hbWQ2NC5neiBw
bGFjZWhvbGRlciAgICR7eGVuX3JtX29wdHN9CgllY2hvCSdMb2FkaW5nIExpbnV4IDMuMTMuMC0z
Mi1nZW5lcmljIC4uLicKCW1vZHVsZQkvdm1saW51ei0zLjEzLjAtMzItZ2VuZXJpYyBwbGFjZWhv
bGRlciByb290PS9kZXYvbWFwcGVyL3BpZXQtLXQzNjAwLS12Zy1yb290IHJvICAKCWVjaG8JJ0xv
YWRpbmcgaW5pdGlhbCByYW1kaXNrIC4uLicKCW1vZHVsZQktLW5vdW56aXAgICAvaW5pdHJkLmlt
Zy0zLjEzLjAtMzItZ2VuZXJpYwp9CnN1Ym1lbnUgJ0FkdmFuY2VkIG9wdGlvbnMgZm9yIFVidW50
dSBHTlUvTGludXggKHdpdGggWGVuIGh5cGVydmlzb3IpJyAkbWVudWVudHJ5X2lkX29wdGlvbiAn
Z251bGludXgtYWR2YW5jZWQtYWI2ZWY3MTctMDBjOC00MWI3LWJkM2MtNGVmYzhlNmJiMTk3JyB7
CglzdWJtZW51ICdYZW4gaHlwZXJ2aXNvciwgdmVyc2lvbiA0LjQtYW1kNjQnICRtZW51ZW50cnlf
aWRfb3B0aW9uICd4ZW4taHlwZXJ2aXNvci00LjQtYW1kNjQtYWI2ZWY3MTctMDBjOC00MWI3LWJk
M2MtNGVmYzhlNmJiMTk3JyB7CgkJbWVudWVudHJ5ICdVYnVudHUgR05VL0xpbnV4LCB3aXRoIFhl
biA0LjQtYW1kNjQgYW5kIExpbnV4IDMuMTMuMC0zMi1nZW5lcmljJyAtLWNsYXNzIHVidW50dSAt
LWNsYXNzIGdudS1saW51eCAtLWNsYXNzIGdudSAtLWNsYXNzIG9zIC0tY2xhc3MgeGVuICRtZW51
ZW50cnlfaWRfb3B0aW9uICd4ZW4tZ251bGludXgtMy4xMy4wLTMyLWdlbmVyaWMtYWR2YW5jZWQt
YWI2ZWY3MTctMDBjOC00MWI3LWJkM2MtNGVmYzhlNmJiMTk3JyB7CgkJCWluc21vZCBwYXJ0X21z
ZG9zCgkJCWluc21vZCBleHQyCgkJCXNldCByb290PSdoZDEsbXNkb3MxJwoJCQlpZiBbIHgkZmVh
dHVyZV9wbGF0Zm9ybV9zZWFyY2hfaGludCA9IHh5IF07IHRoZW4KCQkJICBzZWFyY2ggLS1uby1m
bG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgLS1oaW50LWJpb3M9aGQxLG1zZG9zMSAtLWhpbnQt
ZWZpPWhkMSxtc2RvczEgLS1oaW50LWJhcmVtZXRhbD1haGNpMSxtc2RvczEgIGJiMGVhY2I0LWQ2
NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJCQllbHNlCgkJCSAgc2VhcmNoIC0tbm8tZmxvcHB5
IC0tZnMtdXVpZCAtLXNldD1yb290IGJiMGVhY2I0LWQ2NGUtNDIxNy05NDJjLWQwZTQxMGI1MDg0
YwoJCQlmaQoJCQllY2hvCSdMb2FkaW5nIFhlbiA0LjQtYW1kNjQgLi4uJwoJCSAgICAgICAgaWYg
WyAiJGdydWJfcGxhdGZvcm0iID0gInBjIiAtbyAiJGdydWJfcGxhdGZvcm0iID0gIiIgXTsgdGhl
bgoJCSAgICAgICAgICAgIHhlbl9ybV9vcHRzPQoJCSAgICAgICAgZWxzZQoJCSAgICAgICAgICAg
IHhlbl9ybV9vcHRzPSJuby1yZWFsLW1vZGUgZWRkPW9mZiIKCQkgICAgICAgIGZpCgkJCW11bHRp
Ym9vdAkveGVuLTQuNC1hbWQ2NC5neiBwbGFjZWhvbGRlciAgICR7eGVuX3JtX29wdHN9CgkJCWVj
aG8JJ0xvYWRpbmcgTGludXggMy4xMy4wLTMyLWdlbmVyaWMgLi4uJwoJCQltb2R1bGUJL3ZtbGlu
dXotMy4xMy4wLTMyLWdlbmVyaWMgcGxhY2Vob2xkZXIgcm9vdD0vZGV2L21hcHBlci9waWV0LS10
MzYwMC0tdmctcm9vdCBybyAgCgkJCWVjaG8JJ0xvYWRpbmcgaW5pdGlhbCByYW1kaXNrIC4uLicK
CQkJbW9kdWxlCS0tbm91bnppcCAgIC9pbml0cmQuaW1nLTMuMTMuMC0zMi1nZW5lcmljCgkJfQoJ
CW1lbnVlbnRyeSAnVWJ1bnR1IEdOVS9MaW51eCwgd2l0aCBYZW4gNC40LWFtZDY0IGFuZCBMaW51
eCAzLjEzLjAtMzItZ2VuZXJpYyAocmVjb3ZlcnkgbW9kZSknIC0tY2xhc3MgdWJ1bnR1IC0tY2xh
c3MgZ251LWxpbnV4IC0tY2xhc3MgZ251IC0tY2xhc3Mgb3MgLS1jbGFzcyB4ZW4gJG1lbnVlbnRy
eV9pZF9vcHRpb24gJ3hlbi1nbnVsaW51eC0zLjEzLjAtMzItZ2VuZXJpYy1yZWNvdmVyeS1hYjZl
ZjcxNy0wMGM4LTQxYjctYmQzYy00ZWZjOGU2YmIxOTcnIHsKCQkJaW5zbW9kIHBhcnRfbXNkb3MK
CQkJaW5zbW9kIGV4dDIKCQkJc2V0IHJvb3Q9J2hkMSxtc2RvczEnCgkJCWlmIFsgeCRmZWF0dXJl
X3BsYXRmb3JtX3NlYXJjaF9oaW50ID0geHkgXTsgdGhlbgoJCQkgIHNlYXJjaCAtLW5vLWZsb3Bw
eSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9
aGQxLG1zZG9zMSAtLWhpbnQtYmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00
MjE3LTk0MmMtZDBlNDEwYjUwODRjCgkJCWVsc2UKCQkJICBzZWFyY2ggLS1uby1mbG9wcHkgLS1m
cy11dWlkIC0tc2V0PXJvb3QgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEwYjUwODRjCgkJ
CWZpCgkJCWVjaG8JJ0xvYWRpbmcgWGVuIDQuNC1hbWQ2NCAuLi4nCgkJICAgICAgICBpZiBbICIk
Z3J1Yl9wbGF0Zm9ybSIgPSAicGMiIC1vICIkZ3J1Yl9wbGF0Zm9ybSIgPSAiIiBdOyB0aGVuCgkJ
ICAgICAgICAgICAgeGVuX3JtX29wdHM9CgkJICAgICAgICBlbHNlCgkJICAgICAgICAgICAgeGVu
X3JtX29wdHM9Im5vLXJlYWwtbW9kZSBlZGQ9b2ZmIgoJCSAgICAgICAgZmkKCQkJbXVsdGlib290
CS94ZW4tNC40LWFtZDY0Lmd6IHBsYWNlaG9sZGVyICAke3hlbl9ybV9vcHRzfQoJCQllY2hvCSdM
b2FkaW5nIExpbnV4IDMuMTMuMC0zMi1nZW5lcmljIC4uLicKCQkJbW9kdWxlCS92bWxpbnV6LTMu
MTMuMC0zMi1nZW5lcmljIHBsYWNlaG9sZGVyIHJvb3Q9L2Rldi9tYXBwZXIvcGlldC0tdDM2MDAt
LXZnLXJvb3Qgcm8gc2luZ2xlIAoJCQllY2hvCSdMb2FkaW5nIGluaXRpYWwgcmFtZGlzayAuLi4n
CgkJCW1vZHVsZQktLW5vdW56aXAgICAvaW5pdHJkLmltZy0zLjEzLjAtMzItZ2VuZXJpYwoJCX0K
CQltZW51ZW50cnkgJ1VidW50dSBHTlUvTGludXgsIHdpdGggWGVuIDQuNC1hbWQ2NCBhbmQgTGlu
dXggMy4xMy4wLTI0LWdlbmVyaWMnIC0tY2xhc3MgdWJ1bnR1IC0tY2xhc3MgZ251LWxpbnV4IC0t
Y2xhc3MgZ251IC0tY2xhc3Mgb3MgLS1jbGFzcyB4ZW4gJG1lbnVlbnRyeV9pZF9vcHRpb24gJ3hl
bi1nbnVsaW51eC0zLjEzLjAtMjQtZ2VuZXJpYy1hZHZhbmNlZC1hYjZlZjcxNy0wMGM4LTQxYjct
YmQzYy00ZWZjOGU2YmIxOTcnIHsKCQkJaW5zbW9kIHBhcnRfbXNkb3MKCQkJaW5zbW9kIGV4dDIK
CQkJc2V0IHJvb3Q9J2hkMSxtc2RvczEnCgkJCWlmIFsgeCRmZWF0dXJlX3BsYXRmb3JtX3NlYXJj
aF9oaW50ID0geHkgXTsgdGhlbgoJCQkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1z
ZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9aGQxLG1zZG9zMSAtLWhp
bnQtYmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEw
YjUwODRjCgkJCWVsc2UKCQkJICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJv
b3QgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEwYjUwODRjCgkJCWZpCgkJCWVjaG8JJ0xv
YWRpbmcgWGVuIDQuNC1hbWQ2NCAuLi4nCgkJICAgICAgICBpZiBbICIkZ3J1Yl9wbGF0Zm9ybSIg
PSAicGMiIC1vICIkZ3J1Yl9wbGF0Zm9ybSIgPSAiIiBdOyB0aGVuCgkJICAgICAgICAgICAgeGVu
X3JtX29wdHM9CgkJICAgICAgICBlbHNlCgkJICAgICAgICAgICAgeGVuX3JtX29wdHM9Im5vLXJl
YWwtbW9kZSBlZGQ9b2ZmIgoJCSAgICAgICAgZmkKCQkJbXVsdGlib290CS94ZW4tNC40LWFtZDY0
Lmd6IHBsYWNlaG9sZGVyICAgJHt4ZW5fcm1fb3B0c30KCQkJZWNobwknTG9hZGluZyBMaW51eCAz
LjEzLjAtMjQtZ2VuZXJpYyAuLi4nCgkJCW1vZHVsZQkvdm1saW51ei0zLjEzLjAtMjQtZ2VuZXJp
YyBwbGFjZWhvbGRlciByb290PS9kZXYvbWFwcGVyL3BpZXQtLXQzNjAwLS12Zy1yb290IHJvICAK
CQkJZWNobwknTG9hZGluZyBpbml0aWFsIHJhbWRpc2sgLi4uJwoJCQltb2R1bGUJLS1ub3Vuemlw
ICAgL2luaXRyZC5pbWctMy4xMy4wLTI0LWdlbmVyaWMKCQl9CgkJbWVudWVudHJ5ICdVYnVudHUg
R05VL0xpbnV4LCB3aXRoIFhlbiA0LjQtYW1kNjQgYW5kIExpbnV4IDMuMTMuMC0yNC1nZW5lcmlj
IChyZWNvdmVyeSBtb2RlKScgLS1jbGFzcyB1YnVudHUgLS1jbGFzcyBnbnUtbGludXggLS1jbGFz
cyBnbnUgLS1jbGFzcyBvcyAtLWNsYXNzIHhlbiAkbWVudWVudHJ5X2lkX29wdGlvbiAneGVuLWdu
dWxpbnV4LTMuMTMuMC0yNC1nZW5lcmljLXJlY292ZXJ5LWFiNmVmNzE3LTAwYzgtNDFiNy1iZDNj
LTRlZmM4ZTZiYjE5NycgewoJCQlpbnNtb2QgcGFydF9tc2RvcwoJCQlpbnNtb2QgZXh0MgoJCQlz
ZXQgcm9vdD0naGQxLG1zZG9zMScKCQkJaWYgWyB4JGZlYXR1cmVfcGxhdGZvcm1fc2VhcmNoX2hp
bnQgPSB4eSBdOyB0aGVuCgkJCSAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1y
b290IC0taGludC1iaW9zPWhkMSxtc2RvczEgLS1oaW50LWVmaT1oZDEsbXNkb3MxIC0taGludC1i
YXJlbWV0YWw9YWhjaTEsbXNkb3MxICBiYjBlYWNiNC1kNjRlLTQyMTctOTQyYy1kMGU0MTBiNTA4
NGMKCQkJZWxzZQoJCQkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCBi
YjBlYWNiNC1kNjRlLTQyMTctOTQyYy1kMGU0MTBiNTA4NGMKCQkJZmkKCQkJZWNobwknTG9hZGlu
ZyBYZW4gNC40LWFtZDY0IC4uLicKCQkgICAgICAgIGlmIFsgIiRncnViX3BsYXRmb3JtIiA9ICJw
YyIgLW8gIiRncnViX3BsYXRmb3JtIiA9ICIiIF07IHRoZW4KCQkgICAgICAgICAgICB4ZW5fcm1f
b3B0cz0KCQkgICAgICAgIGVsc2UKCQkgICAgICAgICAgICB4ZW5fcm1fb3B0cz0ibm8tcmVhbC1t
b2RlIGVkZD1vZmYiCgkJICAgICAgICBmaQoJCQltdWx0aWJvb3QJL3hlbi00LjQtYW1kNjQuZ3og
cGxhY2Vob2xkZXIgICR7eGVuX3JtX29wdHN9CgkJCWVjaG8JJ0xvYWRpbmcgTGludXggMy4xMy4w
LTI0LWdlbmVyaWMgLi4uJwoJCQltb2R1bGUJL3ZtbGludXotMy4xMy4wLTI0LWdlbmVyaWMgcGxh
Y2Vob2xkZXIgcm9vdD0vZGV2L21hcHBlci9waWV0LS10MzYwMC0tdmctcm9vdCBybyBzaW5nbGUg
CgkJCWVjaG8JJ0xvYWRpbmcgaW5pdGlhbCByYW1kaXNrIC4uLicKCQkJbW9kdWxlCS0tbm91bnpp
cCAgIC9pbml0cmQuaW1nLTMuMTMuMC0yNC1nZW5lcmljCgkJfQoJfQp9CgojIyMgRU5EIC9ldGMv
Z3J1Yi5kLzIwX2xpbnV4X3hlbiAjIyMKCiMjIyBCRUdJTiAvZXRjL2dydWIuZC8yMF9tZW10ZXN0
ODYrICMjIwptZW51ZW50cnkgJ01lbW9yeSB0ZXN0IChtZW10ZXN0ODYrKScgewoJaW5zbW9kIHBh
cnRfbXNkb3MKCWluc21vZCBleHQyCglzZXQgcm9vdD0naGQxLG1zZG9zMScKCWlmIFsgeCRmZWF0
dXJlX3BsYXRmb3JtX3NlYXJjaF9oaW50ID0geHkgXTsgdGhlbgoJICBzZWFyY2ggLS1uby1mbG9w
cHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgLS1oaW50LWJpb3M9aGQxLG1zZG9zMSAtLWhpbnQtZWZp
PWhkMSxtc2RvczEgLS1oaW50LWJhcmVtZXRhbD1haGNpMSxtc2RvczEgIGJiMGVhY2I0LWQ2NGUt
NDIxNy05NDJjLWQwZTQxMGI1MDg0YwoJZWxzZQoJICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11
dWlkIC0tc2V0PXJvb3QgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEwYjUwODRjCglmaQoJ
a25ldGJzZAkvbWVtdGVzdDg2Ky5lbGYKfQptZW51ZW50cnkgJ01lbW9yeSB0ZXN0IChtZW10ZXN0
ODYrLCBzZXJpYWwgY29uc29sZSAxMTUyMDApJyB7CglpbnNtb2QgcGFydF9tc2RvcwoJaW5zbW9k
IGV4dDIKCXNldCByb290PSdoZDEsbXNkb3MxJwoJaWYgWyB4JGZlYXR1cmVfcGxhdGZvcm1fc2Vh
cmNoX2hpbnQgPSB4eSBdOyB0aGVuCgkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1z
ZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDEsbXNkb3MxIC0taGludC1lZmk9aGQxLG1zZG9zMSAtLWhp
bnQtYmFyZW1ldGFsPWFoY2kxLG1zZG9zMSAgYmIwZWFjYjQtZDY0ZS00MjE3LTk0MmMtZDBlNDEw
YjUwODRjCgllbHNlCgkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCBi
YjBlYWNiNC1kNjRlLTQyMTctOTQyYy1kMGU0MTBiNTA4NGMKCWZpCglsaW51eDE2CS9tZW10ZXN0
ODYrLmJpbiBjb25zb2xlPXR0eVMwLDExNTIwMG44Cn0KIyMjIEVORCAvZXRjL2dydWIuZC8yMF9t
ZW10ZXN0ODYrICMjIwoKIyMjIEJFR0lOIC9ldGMvZ3J1Yi5kLzMwX29zLXByb2JlciAjIyMKbWVu
dWVudHJ5ICdVYnVudHUgMTQuMDQgTFRTICgxNC4wNCkgKG9uIC9kZXYvc2RhMSknIC0tY2xhc3Mg
Z251LWxpbnV4IC0tY2xhc3MgZ251IC0tY2xhc3Mgb3MgJG1lbnVlbnRyeV9pZF9vcHRpb24gJ29z
cHJvYmVyLWdudWxpbnV4LXNpbXBsZS0xZmQyYTkwYy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVkMzZm
OTAnIHsKCWluc21vZCBwYXJ0X21zZG9zCglpbnNtb2QgZXh0MgoJc2V0IHJvb3Q9J2hkMCxtc2Rv
czEnCglpZiBbIHgkZmVhdHVyZV9wbGF0Zm9ybV9zZWFyY2hfaGludCA9IHh5IF07IHRoZW4KCSAg
c2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290IC0taGludC1iaW9zPWhkMCxt
c2RvczEgLS1oaW50LWVmaT1oZDAsbXNkb3MxIC0taGludC1iYXJlbWV0YWw9YWhjaTAsbXNkb3Mx
ICAxZmQyYTkwYy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVkMzZmOTAKCWVsc2UKCSAgc2VhcmNoIC0t
bm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290IDFmZDJhOTBjLTZmZmUtNDI5MC1iY2M5LTA2
ZGQxZWQzNmY5MAoJZmkKCWxpbnV4IC9ib290L3ZtbGludXotMy4xMy4wLTI0LWdlbmVyaWMgcm9v
dD1VVUlEPTFmZDJhOTBjLTZmZmUtNDI5MC1iY2M5LTA2ZGQxZWQzNmY5MCBybyBxdWlldCBzcGxh
c2ggJHZ0X2hhbmRvZmYKCWluaXRyZCAvYm9vdC9pbml0cmQuaW1nLTMuMTMuMC0yNC1nZW5lcmlj
Cn0Kc3VibWVudSAnQWR2YW5jZWQgb3B0aW9ucyBmb3IgVWJ1bnR1IDE0LjA0IExUUyAoMTQuMDQp
IChvbiAvZGV2L3NkYTEpJyAkbWVudWVudHJ5X2lkX29wdGlvbiAnb3Nwcm9iZXItZ251bGludXgt
YWR2YW5jZWQtMWZkMmE5MGMtNmZmZS00MjkwLWJjYzktMDZkZDFlZDM2ZjkwJyB7CgltZW51ZW50
cnkgJ1VidW50dSAob24gL2Rldi9zZGExKScgLS1jbGFzcyBnbnUtbGludXggLS1jbGFzcyBnbnUg
LS1jbGFzcyBvcyAkbWVudWVudHJ5X2lkX29wdGlvbiAnb3Nwcm9iZXItZ251bGludXgtL2Jvb3Qv
dm1saW51ei0zLjEzLjAtMjQtZ2VuZXJpYy0tMWZkMmE5MGMtNmZmZS00MjkwLWJjYzktMDZkZDFl
ZDM2ZjkwJyB7CgkJaW5zbW9kIHBhcnRfbXNkb3MKCQlpbnNtb2QgZXh0MgoJCXNldCByb290PSdo
ZDAsbXNkb3MxJwoJCWlmIFsgeCRmZWF0dXJlX3BsYXRmb3JtX3NlYXJjaF9oaW50ID0geHkgXTsg
dGhlbgoJCSAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290IC0taGludC1i
aW9zPWhkMCxtc2RvczEgLS1oaW50LWVmaT1oZDAsbXNkb3MxIC0taGludC1iYXJlbWV0YWw9YWhj
aTAsbXNkb3MxICAxZmQyYTkwYy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVkMzZmOTAKCQllbHNlCgkJ
ICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgMWZkMmE5MGMtNmZmZS00
MjkwLWJjYzktMDZkZDFlZDM2ZjkwCgkJZmkKCQlsaW51eCAvYm9vdC92bWxpbnV6LTMuMTMuMC0y
NC1nZW5lcmljIHJvb3Q9VVVJRD0xZmQyYTkwYy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVkMzZmOTAg
cm8gcXVpZXQgc3BsYXNoICR2dF9oYW5kb2ZmCgkJaW5pdHJkIC9ib290L2luaXRyZC5pbWctMy4x
My4wLTI0LWdlbmVyaWMKCX0KCW1lbnVlbnRyeSAnVWJ1bnR1LCB3aXRoIExpbnV4IDMuMTMuMC0y
NC1nZW5lcmljIChvbiAvZGV2L3NkYTEpJyAtLWNsYXNzIGdudS1saW51eCAtLWNsYXNzIGdudSAt
LWNsYXNzIG9zICRtZW51ZW50cnlfaWRfb3B0aW9uICdvc3Byb2Jlci1nbnVsaW51eC0vYm9vdC92
bWxpbnV6LTMuMTMuMC0yNC1nZW5lcmljLS0xZmQyYTkwYy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVk
MzZmOTAnIHsKCQlpbnNtb2QgcGFydF9tc2RvcwoJCWluc21vZCBleHQyCgkJc2V0IHJvb3Q9J2hk
MCxtc2RvczEnCgkJaWYgWyB4JGZlYXR1cmVfcGxhdGZvcm1fc2VhcmNoX2hpbnQgPSB4eSBdOyB0
aGVuCgkJICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgLS1oaW50LWJp
b3M9aGQwLG1zZG9zMSAtLWhpbnQtZWZpPWhkMCxtc2RvczEgLS1oaW50LWJhcmVtZXRhbD1haGNp
MCxtc2RvczEgIDFmZDJhOTBjLTZmZmUtNDI5MC1iY2M5LTA2ZGQxZWQzNmY5MAoJCWVsc2UKCQkg
IHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgLS1zZXQ9cm9vdCAxZmQyYTkwYy02ZmZlLTQy
OTAtYmNjOS0wNmRkMWVkMzZmOTAKCQlmaQoJCWxpbnV4IC9ib290L3ZtbGludXotMy4xMy4wLTI0
LWdlbmVyaWMgcm9vdD1VVUlEPTFmZDJhOTBjLTZmZmUtNDI5MC1iY2M5LTA2ZGQxZWQzNmY5MCBy
byBxdWlldCBzcGxhc2ggJHZ0X2hhbmRvZmYKCQlpbml0cmQgL2Jvb3QvaW5pdHJkLmltZy0zLjEz
LjAtMjQtZ2VuZXJpYwoJfQoJbWVudWVudHJ5ICdVYnVudHUsIHdpdGggTGludXggMy4xMy4wLTI0
LWdlbmVyaWMgKHJlY292ZXJ5IG1vZGUpIChvbiAvZGV2L3NkYTEpJyAtLWNsYXNzIGdudS1saW51
eCAtLWNsYXNzIGdudSAtLWNsYXNzIG9zICRtZW51ZW50cnlfaWRfb3B0aW9uICdvc3Byb2Jlci1n
bnVsaW51eC0vYm9vdC92bWxpbnV6LTMuMTMuMC0yNC1nZW5lcmljLXJvb3Q9VVVJRD0xZmQyYTkw
Yy02ZmZlLTQyOTAtYmNjOS0wNmRkMWVkMzZmOTAgcm8gcmVjb3Zlcnkgbm9tb2Rlc2V0LTFmZDJh
OTBjLTZmZmUtNDI5MC1iY2M5LTA2ZGQxZWQzNmY5MCcgewoJCWluc21vZCBwYXJ0X21zZG9zCgkJ
aW5zbW9kIGV4dDIKCQlzZXQgcm9vdD0naGQwLG1zZG9zMScKCQlpZiBbIHgkZmVhdHVyZV9wbGF0
Zm9ybV9zZWFyY2hfaGludCA9IHh5IF07IHRoZW4KCQkgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZz
LXV1aWQgLS1zZXQ9cm9vdCAtLWhpbnQtYmlvcz1oZDAsbXNkb3MxIC0taGludC1lZmk9aGQwLG1z
ZG9zMSAtLWhpbnQtYmFyZW1ldGFsPWFoY2kwLG1zZG9zMSAgMWZkMmE5MGMtNmZmZS00MjkwLWJj
YzktMDZkZDFlZDM2ZjkwCgkJZWxzZQoJCSAgc2VhcmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAt
LXNldD1yb290IDFmZDJhOTBjLTZmZmUtNDI5MC1iY2M5LTA2ZGQxZWQzNmY5MAoJCWZpCgkJbGlu
dXggL2Jvb3Qvdm1saW51ei0zLjEzLjAtMjQtZ2VuZXJpYyByb290PVVVSUQ9MWZkMmE5MGMtNmZm
ZS00MjkwLWJjYzktMDZkZDFlZDM2ZjkwIHJvIHJlY292ZXJ5IG5vbW9kZXNldAoJCWluaXRyZCAv
Ym9vdC9pbml0cmQuaW1nLTMuMTMuMC0yNC1nZW5lcmljCgl9Cn0KCnNldCB0aW1lb3V0X3N0eWxl
PW1lbnUKaWYgWyAiJHt0aW1lb3V0fSIgPSAwIF07IHRoZW4KICBzZXQgdGltZW91dD0xMApmaQoj
IyMgRU5EIC9ldGMvZ3J1Yi5kLzMwX29zLXByb2JlciAjIyMKCiMjIyBCRUdJTiAvZXRjL2dydWIu
ZC8zMF91ZWZpLWZpcm13YXJlICMjIwojIyMgRU5EIC9ldGMvZ3J1Yi5kLzMwX3VlZmktZmlybXdh
cmUgIyMjCgojIyMgQkVHSU4gL2V0Yy9ncnViLmQvNDBfY3VzdG9tICMjIwojIFRoaXMgZmlsZSBw
cm92aWRlcyBhbiBlYXN5IHdheSB0byBhZGQgY3VzdG9tIG1lbnUgZW50cmllcy4gIFNpbXBseSB0
eXBlIHRoZQojIG1lbnUgZW50cmllcyB5b3Ugd2FudCB0byBhZGQgYWZ0ZXIgdGhpcyBjb21tZW50
LiAgQmUgY2FyZWZ1bCBub3QgdG8gY2hhbmdlCiMgdGhlICdleGVjIHRhaWwnIGxpbmUgYWJvdmUu
CiMjIyBFTkQgL2V0Yy9ncnViLmQvNDBfY3VzdG9tICMjIwoKIyMjIEJFR0lOIC9ldGMvZ3J1Yi5k
LzQxX2N1c3RvbSAjIyMKaWYgWyAtZiAgJHtjb25maWdfZGlyZWN0b3J5fS9jdXN0b20uY2ZnIF07
IHRoZW4KICBzb3VyY2UgJHtjb25maWdfZGlyZWN0b3J5fS9jdXN0b20uY2ZnCmVsaWYgWyAteiAi
JHtjb25maWdfZGlyZWN0b3J5fSIgLWEgLWYgICRwcmVmaXgvY3VzdG9tLmNmZyBdOyB0aGVuCiAg
c291cmNlICRwcmVmaXgvY3VzdG9tLmNmZzsKZmkKIyMjIEVORCAvZXRjL2dydWIuZC80MV9jdXN0
b20gIyMjCg==

--_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--_005_caa8c5be2bd146beb813603466c26ae4BY2PR04MB173namprd04pro_--


From advisory-board-bounces@lists.xenproject.org Fri Sep 19 00:35:48 2014
Return-path: <advisory-board-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Sep 2014 00:35:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <advisory-board-bounces@lists.xenproject.org>)
	id 1XUmAu-0004ft-4u; Fri, 19 Sep 2014 00:35:48 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth@citrix.com>) id 1XUmAs-0004fo-Kd
	for advisory-board@lists.xenproject.org; Fri, 19 Sep 2014 00:35:47 +0000
Received: from [85.158.139.211:31284] by server-14.bemta-5.messagelabs.com id
	F1/36-12422-16A7B145; Fri, 19 Sep 2014 00:35:45 +0000
X-Env-Sender: lars.kurth@citrix.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1411086943!15415053!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28188 invoked from network); 19 Sep 2014 00:35:43 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Sep 2014 00:35:43 -0000
X-IronPort-AV: E=Sophos;i="5.04,550,1406592000"; d="scan'208,217";a="25008744"
From: Lars Kurth <lars.kurth@citrix.com>
To: "advisory-board@lists.xenproject.org" <advisory-board@lists.xenproject.org>
Thread-Topic: September Xen Project Advisory Board Meeting Minutes
Thread-Index: AQHP06GkVRB2/1DzyEGp0pvxxcOy+A==
Date: Fri, 19 Sep 2014 00:35:42 +0000
Message-ID: <D040C869.111C5%lars.kurth@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
MIME-Version: 1.0
X-DLP: AMS1
Subject: [Advisory-board] September Xen Project Advisory Board Meeting
	Minutes
X-BeenThere: advisory-board@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: Advisory-board discussions <advisory-board@lists.xenproject.org>
List-Id: Advisory-board discussions <advisory-board.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:advisory-board@lists.xenproject.org>
List-Help: <mailto:advisory-board-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4824613994945341744=="
Sender: advisory-board-bounces@lists.xenproject.org
Errors-To: advisory-board-bounces@lists.xenproject.org

--===============4824613994945341744==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_D040C869111C5larskurthcitrixcom_"

--_000_D040C869111C5larskurthcitrixcom_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

PSBBdHRlbmRlZXMgPQ0KTGFycyBLdXJ0aCAoQ2hhaXIpDQpNaWtlIFdvc3RlciAoTGludXggRm91
bmRhdGlvbikNClNhcmFoIENvbndheSAoTGludXggRm91bmRhdGlvbikNCg0KQ2hyaXMgU2NobGFl
Z2VyIChBbWF6b24pDQpKYW1lcyBCdWxwaW4sIE1hcmsgSGlua2xlIChDaXRyaXgpDQpEb24gRCBE
dWdnZXIgKEludGVsKQ0KS29ucmFkIFIgV2lsayAoT3JhY2xlKQ0KUGhpbGlwcGUgUm9iaW4gKEFS
TSkNClNoZXJyeSBIdXJ3aXR6IChBTUQpDQoNCjEgc2hvcnQgb2YgcXVvcnVtDQpUaGlzIG1lYW5z
IHdlIGNhbiBwcm9jZWVkIHdpdGggdGhlIG1lZXRpbmcsIGJ1dCBubyByZXNvbHV0aW9uL21vdGlv
bnMgc2hvdWxkIGJlIHB1dCBmb3J3YXJkDQoNCj0gQWN0aW9ucyA9DQpBY3Rpb24gRG9uICYgTGFy
czogU2VuZCBkZXRhaWxlZCBtYWNoaW5lIGxpc3QgdG8gdGhlIGxpc3Qg4pyTDQpBY3Rpb24gTGFy
czogV29yayB3aXRoIHRlc3QgZnJhbWV3b3JrIFdHIGFuZCBib2FyZCB0byBmaW5hbGlzZSBIVyBs
aXN0LiBBaW0gdG8gc3RheSB3aXRoaW4gdGhlIGFwcHJvdmVkIGJ1ZGdldA0KICAgIFN0YXR1czog
U2hlcnJ5IHNlbnQgb3V0IGEgbGlzdCB3aXRoIHByb3Bvc2Fscy4gV2FpdGluZyBmb3IgSWFuIEph
Y2tzb24gdG8gYmUgYmFjayBmcm9tIHZhY2F0aW9uIHRvIHdvcmsgb24gdGhlIGRldGFpbHMgd2l0
aCBBbGxOZXQNCkFjdGlvbiBMYXJzOiBTZW5kIENPTE8gY29udHJhY3QgdG8gTWlrZSBXb3N0ZXIg
Zm9yIHJldmlldyAg4pyTIHJlYWR5IHRvIGJlIHNpZ25lZCwgYnV0IHdhbnQgdG8gcmV2aWV3IG90
aGVyIGRvY3VtZW50cyBmaXJzdA0KIEFjdGlvbiBMYXJzOiBTZW5kIEhXIGFuZCBzdXBwb3J0IGNv
bnRyYWN0cyB0byBNaWtlIFdvc3RlciBmb3IgcmV2aWV3IGFuZCBmaW5hbGlzZSBhcyBwZXIgYWN0
aW9uIGFib3ZlDQpTdGF0dXM6IHdhaXRpbmcgZm9yIE1pa2UgdG8gcmV2aWV3IHRoZSBzdXBwb3J0
IGNvbnRyYWN0LiBQcm9wb3NlIHRvIHNpZ24gYm90aCBFYXJ0aExpbmsgQ09MTyBwcm9wb3NhbCBh
bmQgQWxsTmV0IG1haW50ZW5hbmNlIGNvbnRyYWN0IGlmIHRoZSBsYXR0ZXIgaXMgYWNjZXB0YWJs
ZQ0KDQpNaWtlIGlzIGdvaW5nIHRvIHNpZ24gYm90aCBjb250cmFjdHMgdG9kYXkgYXMgYWdyZWVk
IGluIHRoZSBBdWd1c3QgQUIgbWVldGluZw0KDQpNaWtlOiBPbiB0aGUgSFcgbGlzdCwgd2hpY2gg
d2UgYXJlIGRlZmVycmluZywgdGhlIExpbnV4IEZvdW5kYXRpb24gY2FuIG9ubHkgZ2V0IERlbGwg
Ym94ZXMgYXQgaGVhdmlseSBkaXNjb3VudGVkIHByaWNlcy4gTWlrZSByZWNvbW1lbmRzIHRoYXQg
dGhlIHByb2plY3Qgc2hvdWxkIHB1cmNoYXNlIGhhcmR3YXJlIHRocm91Z2ggbm9ybWFsIGNoYW5u
ZWxzDQoNCkFjdGlvbiBBbGw6IG1lbWJlciBjb21wYW5pZXMgdG8gY29tZSB1cCB3aXRoIGEgbGlz
dCBvZiB0aGVpciBwYXJ0bmVycyArIGNvbnRhY3QgZGV0YWlscyBieSB0aGUgbmV4dCBib2FyZCBt
ZWV0aW5nLg0KDQpMYXJzOiByZXN0YXRlZCB0aGUgZ29hbCB0aGF0IHRoaXMgd291bGQgYmUgYSBs
aXN0IG9mIGNvbXBhbmllcyBhbmQgcGFydG5lcnMgb2YgZXhpc3RpbmcgYm9hcmQgbWVtYmVycyB0
aGF0IHRoZSBMaW51eCBGb3VuZGF0aW9uIGNhbiBhcHByb2FjaC4NCg0KTWlrZSBzdGF0ZWQgdGhh
dCBsZXZlcmFnaW5nIHBhcnRuZXJzIG9mIGV4aXN0aW5nIG1lbWJlcnMgaXMgYWxzbyBob3cgb3Ro
ZXIgcHJvamVjdHMgc3VjY2Vzc2Z1bGx5IGdyb3cuIEFsc28gdGhlIHRpbWluZyBmb3IgcmVhY2hp
bmcgb3V0IHRvIHByb3NwZWN0aXZlIG1lbWJlcnMgaXMgcmlnaHQuDQoNCktvbnJhZDogd2lsbCBm
b2xsb3cgdXAgb24gdGhpcyBmb3IgdGhlIG5leHQgbWVldGluZw0KTGFyczogTGFycnkgYWxzbyBo
YWQgc29tZSBpZGVhcywgYnV0IGNvdWxkIG5vdCBtYWtlIHRoaXMgY2FsbCBkdWUgdG8gTGluYXJv
IENvbm5lY3QNCg0KTGFyczogYXNrZWQgd2hlcmUgd2UgYXJlIHdpdGggcmVnYXJkcyB0byBBUE0N
Ck1pa2U6IFdlIGFyZSBpbiB0aGUgZmluYWwgc3RhZ2VzIHdpdGggQVBNIOKAkyBleHBlY3RzIGEg
Y29uZmlybWF0aW9uIGluIHRoZSBuZXh0IHR3byB3ZWVrcyAoaG93ZXZlciB0aGUgaW50ZXJuYWwg
c3BvbnNvciBoYXMgbW92ZWQgcG9zaXRpb24sIGFuZCB0aHVzIGNsb3NpbmcgaXMgYXQgcmlzaykN
Cg0KIEFjdGlvbiBCcmlhbjogRGlzY3VzcyBpc3N1ZXMgcmFpc2VkIFtyZWxhdGVkIHRvIFhlbiBQ
cm9qZWN0IOKAkyBMaW51eCBGb3VuZGF0aW9uIEludGVyZmFjZV0gd2l0aCBNaWtlIFdvc3RlciAg
4pyTDQogQWN0aW9uIExhcnM6IFNpdCB0b2dldGhlciB3aXRoIE1pa2UgV29zdGVyIGFuZCB3YWxr
IHRocm91Z2ggaXNzdWVzIHRoYXQgaGF2ZSBiZWVuIG9ic2VydmVkIOKckw0KDQpMYXJzIGFza2Vk
IHdoZXRoZXIgdGhlcmUgaGFzIGJlZW4gYW55IHByb2dyZXNzLg0KDQpNaWtlOiAgSGF2ZSBhbiBv
dmVydmlldyBvZiBhbGwgOSBpc3N1ZXMgdGhhdCBMYXJzIHJhaXNlZCBhbmQgYSBnb29nbGUgZG9j
dW1lbnQgYXMgZHJhZnQuIFRoZSBiYWNrZ3JvdW5kIGlzIHRoYXQgdGhlIGluY3JlYXNlIG9mIHRo
ZSBudW1iZXIgb2YgcHJvamVjdHMgaW4gdGhlIExGIGhhcyBjcmVhdGVkIGEgbmVlZCBvZiBzdGFu
ZGFyZGl6ZWQgcHJvY2Vzc2VzIGFhbmQgdG8gbWFrZSBzdXJlIGl0IGlzIGNsZWFyIHRvIHByb2pl
Y3RzIGhvdyB0aGVzZSB3b3JrLiBBbGwgdGhpcyB3aWxsIGJlIGRvY3VtZW50ZWQuDQoNCkV4YW1w
bGVzIG9mIHdoYXQgbmVlZHMgdG8gYmUgZG9jdW1lbnRlZCBhcmU6DQoqIEhvdyB0byBpbnZvaWNl
IGFuZCBnZXQgY29udHJhY3RzDQoqIEhvdyB0byByZXF1ZXN0IHNlcnZpY2VzIGZyb20gdGhlIFNl
cnZpY2VzIHRlYW0uDQoqIFNwb25zb3JpbmcgdHJhdmVsIGVmZmljaWVudGx5DQpNaWtlIGFsc28g
YXBvbG9naXplZCBhYm91dCB0aGUgaXNzdWUgd2l0aCB0aGUgaW52b2ljaW5nIGFuZCBzdGF0ZWQg
dGhhdCB0aGlzIGhhcyBiZWVuIGZpeGVkLiBJbiBhZGRpdGlvbiBNaWtlIHdpbGwgYmUgdGhlIExG
IGNvbnRhY3QgZm9yIHRoZSBwcm9qZWN0IGFuZCBhdHRlbmQgYWxsIEFCIG1lZXRpbmdzDQoNCg0K
PSBQcm9qZWN0IEFjY291bnRzID0NCkkgbmVlZCB0byBkbyBkZXRhaWxlZCBhY2NvdW50cyBmb3Ig
dGhlIHByb2plY3QsIG5vdyBhcyB3ZSBhcmUgZ2V0dGluZyByZWd1bGFyIHNwZW5kaW5nIHJlcG9y
dHMuIEkgaGF2ZSBub3QgbWFuYWdlZCB0byBkbyB0aGlzIHlldCwgYXMgSSBkb27igJl0IGZ1bGx5
IHVuZGVyc3RhbmQgaG93IHRvIG1hcCBpdGVtcyBiYWNrIHRvIHRoZSBidWRnZXQuIEkgd2lsbCBw
dXQgc29tZSB0aW1lIGFzaWRlIHRvIGRvIHRoaXMgd2hlbiBJIGhhdmUgbGVzcyBvZiBhIHRyYXZl
bCBsb2FkLg0KDQpNaWtlIHN0YXRlZCB0aGF0IEJyaWFuIGlzIG5vdyBzZW5kaW5nIG91dCBtb250
aGx5IGJ1ZGdldCByZXBvcnRzDQpMYXJzOiB0aGF0IGlzIGNvcnJlY3QsIGJ1dCBJIGhhdmUgbm90
IGhhZCB0aGUgYmFuZHdpZHRoIHlldCB0byBpbnRlZ3JhdGUgdGhlbSBpbnRvIHRoZSBwbGFubmlu
ZyBzcHJlYWRzaGVldHMNCg0KPSBQcmVzcyBVcGRhdGVzIChTYXJhaCkgPQ0KDQpOZWFybHkgZG9u
ZSB3aXRoIHZpZGVvcyB0aGF0IHdlIHNob3QgYXQgTGludXhDb24NCkF0IHRoZSBlbmQgb2YgdGhl
IHdlZWsgdG8gbWVtYmVycyB3aWxsIGJlIGNvbnRhY3RlZCBmb3IgcmV2aWV3aW5nIHRoZXNlIGlu
ZGl2aWR1YWxseQ0KU2FyYWggd2lsbCBjcmVhdGUgYSBtYXNodXAgYWZ0ZXIgZWFjaCBzZWdtZW50
IGlzIGFwcHJvdmVkDQoNCkFuYWx5c3QgbWVldGluZyBpcyBwcm9ncmVzc2luZzogaXQgd2lsbCBi
ZW5lZml0IGZyb20gYWRkaXRpb25hbCB2aXN1YWxzDQoNClNhcmFoIGlzIGxvb2tpbmcgZm9yIHNw
b2tlcyBwZW9wbGUgZnJvbSB0aGUgQUIgYW5kIHdpbGwgcmVhY2ggb3V0LiBDYW5kaWRhdGVzIGFy
ZSBNYXJrLCBMYXJyeSwgS29ucmFkLCBvciBhbnlvbmUgd2hvIHdhbnRzIHRvIHN0ZXAgdXANCg0K
SWYgd2UgcGxhbiB0aGlzIGZvciBMaW51eENvbiwgd2hvIGlzIGdvaW5nIHRvIGJlIGF2YWlsYWJs
ZTogTWFyayAvIExhcnMg4oCTIHllcywgS29ucmFkIOKAkyBubw0KDQpTYXJhaCB3aWxsIHNlbmQg
b3V0IHRoZSBtb250aGx5IHJlcG9ydCwgYnV0IEF1Z3VzdCB3YXMgcXVpZXRlciB0aGFuIGluIHRo
ZSBwYXN0IGR1ZSB0byB0aGUgc3VtbWVyIGx1bGwNCg0KNC41IHByZXNzIHJlbGVhc2UgcGxhbm5p
bmcNCg0KU2FyYWggaXMgbG9va2luZyBmb3IgcHJlc3MgcXVvdGVzLiBXZSBzaG91bGQgc3RhcnQg
aWRlbnRpZnlpbmcgdGhlIHNhbGllbnQgZmVhdHVyZXMuDQoNCkxhcnMgd2FzIHRoaW5raW5nIG9m
IEludGVsIGZlYXR1cmVzLCBidXQgS29ucmFkIHdhcyBzdGF0aW5nIHRoZXNlIGFyZSBub3QgcHJv
Z3Jlc3NpbmcgYXMgZmFzdCBhcyBob3BlZCwgYnV0IEFNRCBmZWF0dXJlcyBoYXZlDQoNCktvbnJh
ZDogYSBxdWljayBnbGFuY2Ugb3ZlciB0aGUgbGlzdCBzaG93cyB0aGF0IHRoZXJlIGhhdmUgYmVl
biBob3Qgc3BvdHMgb2YgZmVhdHVyZXMgb24gQVJNLCBTZWN1cml0eSAoWmVudGlmaWMgLyBCaXV0
RGVmZW5kZXIpLCBQVkggRG9tMCAoT3JhY2xlKQ0KDQpBY3Rpb24gS29ucmFkOiB3aWxsIGdvIHRo
cm91Z2ggdGhlIGZlYXR1cmUgbGlzdCBhbmQgY29tbXVuaWNhdGUsIGJ1dCB0aGVyZSBoYXZlIGJl
ZW4gaG90IHNwb3RzLiBTYXJhaCB0byBmb2xsb3cgdXAgd2l0aCBhIGNvbmZlcmVuY2UgY2FsbA0K
DQo9IEZ1bmRpbmcgYW5vdGhlciAob3IgdHdvKSBPUFcgc3R1ZGVudHMgZm9yIHRoZSB3aW50ZXIg
cm91bmQgPQ0KV2UgZnVuZGVkIHR3byBPUFcgc3R1ZGVudHMgaW4gc3VtbWVyIGFuZCB3ZXJlIHJ1
bm5pbmcgR1NvQyBhbmQgaGFkIGluaXRpYWxseSBhcHByb3ZlZCB0aHJlZSBzdHVkZW50cyBmb3Ig
MjAxNC4gU28gd2Ugc3RpbGwgaGF2ZSBvbmUgdW51c2VkLCB3aGljaCBkb2VzIG5vdCBuZWVkIGZ1
cnRoZXIgQUIgYXBwcm92YWwuDQoNCkxhcnMgYXNrZWQgdGhlIHF1ZXN0aW9uIHdoZXRoZXIgd2Ug
ZG8gaGF2ZSBlbm91Z2ggbWVudG9yaW5nIGNhcGFjaXR5IHRvIG1ha2UgdGhpcyB3b3J0aHdoaWxl
LCBnaXZlbiB0aGF0IHRoZSBwcm9ncmFtIGNsYXNoZXMgd2l0aCB0aGUgY2xvc2luZyBvZiB0aGUg
NC41IHJlbGVhc2UuDQoNCktvbnJhZDogT3JhY2xlIGhhcyBub25lDQpKYW1lczogY291bGQgcHJv
YmFibHkgYWNjb21tb2RhdGUgb25lDQpTaGVycnk6IEFNRCBjb3VsZCBtZW50b3Igb25lIHN0dWRl
bnQgZm9yIGEgc3VpdGFibGVBUk12OCBwcm9qZWN0DQpMYXJzOiB3ZSBjYW4gd29yayBvbiBhIHBy
b2plY3QsIGJ1dCBIVyBhdmFpbGFiaWxpdHkgbmVlZHMgdG8gYmUgY29uc2lkZXJlZA0KTGFyczog
YXNrZWQgd2hldGhlciBJbnRlbCBjb3VsZCBtZW50b3IgYW4gYXBwbGljYW50Pw0KRG9uOiBzYWlk
IGhlIHdvdWxkIG5lZWQgdG8gaW52ZXN0aWdhdGUNCg0KVGhlIGFncmVlbWVudCB0aGVuIGlzIHRo
YXQgd2Ugd2lsbCBqb2luIE9QVyBmb3IgdGhlIHdpbnRlciByb3VuZCB3aXRoIHRoZSBwcmV2aW91
c2x5IGFwcHJvdmVkIGFuZCB1bnVzZWQgT1BXIHNsb3QNCg0KDQo9IEV4dHJhIHRpZXIgb2YgbWVt
YmVycyBmb3Igc21hbGwgY29tcGFuaWVzIChNaWtlIFdvc3RlcikgPQ0KRm9sbG93aW5nIHVwIGZy
b20gdGhlIHByZXZpb3VzIG1vbnRocyBkaXNjdXNzaW9uLCBNaWtlIHN0YXRlZA0KDQoqIE1vc3Qg
Y29sbGFib3JhdGl2ZSBwcm9qZWN0cyB3YW50IHRvIGZhY2lsaXRhdGUgdGhlIHN1cHBvcnQgb2Yg
c21hbGxlciB2ZW5kb3JzIHRoYXQgZG9u4oCZdCBoYXZlIHRoZSBmaW5hbmNpYWwgcmVzb3VyY2Vz
IHRvIGpvaW4gb3RoZXJ3aXNlDQoqIFRoZSBjaGFsbGVuZ2UgaXMgdGhhdCB3ZSBuZWVkIHRvIGRl
ZmluZSBhIG1lbWJlcnNoaXAgY2xhc3Mgd2l0aG91dCBnaXZpbmcgdW5kdWUgaW5mbHVlbmNlIHRv
IHRoZSBtZW1iZXJzIHBheWluZyBsZXNzDQoqIFRoZSBiYXNpYyBwcm9wb3NhbCBpcyBhIFNUQVJU
VVAgY2xhc3MgY2FwcGVkIGF0IDEwMCwxNTAsMjAwIG9yIDI1MCBlbXBsb3llZXMNCiogVGhlcmUg
d291bGQgYmUgMSB2b3RlIGZvciBldmVyeSAxMCBzdGFydHVwIG1lbWJlcnMgd2l0aCBhdCBtb3N0
IDMgdm90ZXMNCiogV2Ugd291bGQgbmVlZCBhIGZvcm1hbCB2b3RpbmcgcHJvY2Vzcw0KKiBOb24t
dm90aW5nIG9ic2VydmluZyBtZW1iZXJzIGNvdWxkIGJlIGFsbG93ZWQuIFRoaXMgd291bGQgYmUg
YW4gb3BlbiBxdWVzdGlvbiwgYnV0IG1vc3QgcHJvamVjdHMgZG8gbm90IGFsbG93IGZvciBvYnNl
cnZpbmcgbWVtYmVycw0KDQpCcm9taXVtIHdvdWxkIG5lZWQgU1RBUlRVUCBjbGFzcyB0byBjb250
aW51ZSAob25lIGFuZCBvbmx5KSBhbmQgSWFuIGluaXRpYWxseSB3b3VsZCBtb3N0IGxpa2VseSBh
dXRvbWF0aWNhbGx5IGVsZWN0ZWQNCg0KVGhlIGRyYWZ0IHJlc29sdXRpb24gd291bGQgYmUNCg0K
UkVTT0xPVElPTjogVGhhdCBhIG5ldyBYZW4gUHJvamVjdCBTVEFSVFVQIG1lbWJlcnNoaXAgY2xh
c3MgYmUgY3JlYXRlZCBmb3IgY29tcGFuaWVzIHdpdGggbGVzcyB0aGFuIDI1MCBjb25zb2xpZGF0
ZWQgZW1wbG95ZWVzIHdpdGggYW4gYW5udWFsIHBhcnRpY2lwYXRpb24gZmVlIG9mICQ1LDAwMCBV
U0QuIFNUQVJUVVAgYXBwbGljYW50cyB3aWxsIGJlIGFjY2VwdGVkIGZvciBtZW1iZXJzaGlwIG9u
bHkgdXBvbiBhcHByb3ZhbCBvZiB0aGUgQWR2aXNvcnkgQm9hcmQuIFRoZSBTVEFSVFVQIG1lbWJl
cnNoaXAgY2xhc3MgYmVuZWZpdHMgaW5jbHVkZSBlbGVjdGluZyAxIEFkdmlzb3J5IEJvYXJkIHNl
YXQgZm9yIGV2ZXJ5IDEwIFNUQVJUVVAgY2xhc3MgbWVtYmVycywgbGltaXRlZCB0byBhdCBtb3N0
IDMgcmVwcmVzZW50YXRpdmVzLCBhbmQgYW55IG90aGVyIGJlbmVmaXRzIHRoZSBBZHZpc29yeSBC
b2FyZCBtYXkgZGV0ZXJtaW5lLCB3aXRoIGFwcHJvdmFsIGZyb20gVGhlIExpbnV4IEZvdW5kYXRp
b24uIFRoZSBBZHZpc29yeSBCb2FyZCBhc2tzIFRoZSBMaW51eCBGb3VuZGF0aW9uIHRvIHVwZGF0
ZSB0aGUgbWVtYmVyc2hpcCBhcHBsaWNhdGlvbiB0byByZWZsZWN0IHRoZSBuZXcgU1RBUlRVUCBt
ZW1iZXJzaGlwIGNsYXNzLg0KTGFyczogYXMgd2UgZG8gbm90IGhhdmUgYSBxdW9ydW0sIEkgc3Vn
Z2VzdCB3ZSBoYXZlIGFuIGVtYWlsIHZvdGUuDQpMYXJzIGFza2VkIFBoaWxpcHBlIHdoZXRoZXIg
aGUgY291bGQgZm9sbG93IHVwIGFueSBjb25jZXJucyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgYm9h
cmQsIGJlZm9yZSB0aGUgdm90ZQ0KDQpBY3Rpb24gUGhpbGlwcGU6IGZvbGxvdyB1cCBvbiBhbnkg
Y29uY2VybnMgQVJNIG1heSBoYXZlIGFuZCByZXBvcnQgYmFjayBpZiB0aGVyZSBpcyBhbiBpc3N1
ZQ0KQWN0aW9uIExhcnM6IG9yZ2FuaXplIGVtYWlsIHZvdGUgb24gcmVzb2x1dGlvbg0KDQo9IFVz
ZXIgU3VtbWl0IC8gRGV2ZWxvcGVyIFN1bW1pdHMgIChMYXJzKT0NClRoZSBzcGxpdCBvZiBVc2Vy
IFN1bW1pdCAvIERldmVsb3BlciBTdW1taXRzIGlzIG5vdCB3b3JraW5nLiBTbyBmYXIgd2Ugb25s
eSBtYW5hZ2VkIHRvIHNpZ24gdXAgMzAgdXNlcnMgZm9yIHVzZXIgc3VtbWl0IGFuZCBubyBzcG9u
c29ycyBhcGFydCBmcm9tIENpdHJpeC4gSW4gY29udHJhc3QsIHdlIGhhZCA5MCBwZW9wbGUgYXQg
RGV2ZWxvcGVyIFN1bW1pdCAodGhlIHllYXIgYmVmb3JlIHdlIGhhZCA5NSksIGJ1dCB3ZSBkaWQg
aGF2ZSAkMjhLIGluY29tZSBmcm9tIHNwb25zb3JzaGlwLiBBcyBzdWNoLCB0aGUgY29zdCBmb3Ig
dGhlIHByb2plY3QgZm9yIHRoZSBldmVudCB3YXMgbG93ZXIgdGhhbiBleHBlY3RlZCAoc29tZXdo
ZXJlIGJldHdlZW4gJDctJDhLIOKAkyBJIGRvbuKAmXQgaGF2ZSB0aGUgZmluYWwgZmlndXJlcyku
IEluIDIwMTEgYW5kIDIwMTIsIHdoZW4gd2UgZGlkIG5vdCBoYXZlIHNlcGFyYXRlIGV2ZW50cywg
d2UgaGFkIGFyb3VuZCAxMzAgYXR0ZW5kZWVzLiBJIGhhdmUgbm8gcmVhbCB2aXNpYmlsaXR5IG9u
IG51bWJlcnMgcHJpb3IgdG8gMjAxMSBhcyB0aGlzIGlzIHRoZSB5ZWFyIEkgc3RhcnRlZCBhbmQg
cmVjb3JkcyB3ZXJlIG5vdCBrZXB0Lg0KDQpJIGFtIHByb3Bvc2luZyB0aGF0IGdvaW5nIGZvcndh
cmQgd2UNCiogRWl0aGVyIGRvIG5vdCBkbyB1c2VyIHN1bW1pdHMgYXQgYWxsDQoqIEV4dGVuZCBk
ZXZlbG9wZXIgc3VtbWl0cyBmcm9tIGEgMiBkYXkgdG8gYSAzIGRheSBldmVudCBhbmQgdGFyZ2V0
IGRldmVsb3BlcnMgYW5kIHVzZXJzIOKAkyBpbiBmYWN0IHdlIGFscmVhZHkgaGF2ZSBhIDIuNSBk
YXkgZXZlbnQgKGluY2x1ZGluZyBib2FyZCBtZWV0aW5ncykNCioqIFdlIGNvdWxkIGZvbGxvdyBh
IHN0cnVjdHVyZSB3aGVyZSB3ZSBzdGFydCBvciBlbmQgd2l0aCBkZXZlbG9wZXIgb25seSBjb250
ZW50IChvciBXb3JraW5nIEdyb3VwLCBDb21tdW5pdHkgT3JnYW5pc2VkIG1pbmkgc3VtbWl0cywg
Qm9hcmQsIERldmVsb3BlciBtZWV0aW5ncykNCioqIEFuZCBvdGhlcndpc2UgaGF2ZSBvdmVybGFw
cGluZyB1c2VyIGFuZCBkZXZlbG9wZXIgdHJhY2tzDQoqKiBXZSB3b3VsZCBuZWVkIHRvIHJlcG9z
aXRpb24gaXMgYXMgWGVuIFByb2plY3QgU3VtbWl0DQoqKiBUaGlzIHNob3VsZCBtYWtlIHRoZSBl
dmVudHMgbW9yZSBjb3N0IGVmZmVjdGl2ZSBhbmQgc3BvbnNvcnNoaXAgZWFzaWVyIHRvIGFjaGll
dmUgYW5kIG1vcmUgYXR0cmFjdGl2ZQ0KKiBXZSBhbHNvIGhhdmUgYSB0aW1pbmcgaXNzdWUgOiBi
eSBhbHRlcm5hdGluZyBiZXR3ZWVuIFVTIGFuZCBFVSB3ZSBlbmQgdXAgd2l0aCBhIDkgbW9udGhz
IOKAkyAxNSBtb250aHMgZ2FwIHdoaWNoIG1ha2VzIGV2ZXJ5IG90aGVyIHllYXIgYmlnZ2VyIHRo
YW4gdGhlIHByZXZpb3VzIHllYXIuIEF0IGxlYXN0IHdoZW4gaXQgY29tZXMgdG8gY29udGVudCBz
dWJtaXNzaW9ucy4NCiogSXQgd291bGQgYWxzbyBiZSBpbnRlcmVzdGluZyB0byBmaW5kIG91dCBo
b3cgS1ZNIEZvcnVtIGlzIGRvaW5nIOKAkyBJIGhlYXJkIHJ1bW91cnMgdGhhdCBLVk0gRm9ydW0g
aGFzIHNpbWlsYXIgaXNzdWVzIHRvIG91ciBldmVudHMg4oCTIGJ1dCBhbSBub3QgMTAwJSBzdXJl
LiBJdCBpcyBhbHNvIG5vdCBjbGVhciB0byBtZSB3aGV0aGVyIEtWTSBGb3J1bSBpcyBub3cgYWx3
YXlzIGluIHRoZSBFVSAoaXQgdXNlZCB0byBhbHRlcm5hdGUsIGJ1dCBpdCBoYXMgYmVlbiBpbiB0
aGUgRVUgaW4gdHdvIHN1YnNlcXVlbnQgeWVhcnMpDQoqIE90aGVyIHRoaW5ncyB0byBjb25zaWRl
cjogd2hlbiB3ZSB3ZXJlIGNvLWxvY2F0ZWQgd2l0aCBMaW51eCBQbHVtYmVycyBpbiAyMDEyLCB3
ZSBhdHRyYWN0ZWQgbW9yZSBkZXZlbG9wZXJzLCBidXQgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGNh
dXNlZCBhIGxvdCBvZiBzdHJlc3MgZm9yIHBlb3BsZSBhdHRlbmRpbmcgYm90aC4gV2UgYXJlIG5v
dyBvdXQgb2Ygc3luYyB3aXRoIExpbnV4IFBsdW1iZXJzDQoqIFdlIGNvdWxkIHRyeSBhbmQgcmUt
c2V0IGFuZCBob2xkIHRoZSBldmVudCBpbiBTZWF0dGxlIG5leHQgeWVhciBvciBzdGljayB3aXRo
IHdoYXQgdGhlIGNvbW11bml0eSBhc2tlZCBmb3IgYW5kIGNvbG9jYXRlIHdpdGggdGhlIEVVICh3
aGljaCBpcyBlaXRoZXIgQnVkYXBlc3Qgb3IgSXN0YW5idWwg4oCTIG5vdCBzdXJlIHRoaXMgaGFz
IGJlZW4gZGVjaWRlZCkuIEFzIHRoZSBwcm9qZWN0IGlzIHVuZGVyd3JpdGluZyByaXNrIGFuZCBj
b3N0LCBJIHRoaW5rIHdlIGNhbiBnZXQgYXdheSB3aXRoIGVpdGhlciB3aXRob3V0IGNhdXNpbmcg
YW4gdXByb2FyIGluIHRoZSBjb21tdW5pdHkNCg0KRG9uOiBzdWdnZXN0ZWQgdGhhdCBhIHByb3Bv
c2FsIGlzIG1hZGUgb24gdGhlIG1haWxpbmcgbGlzdCBhbmQgdGhhdCBMYXJzIHJlcG9ydHMgYmFj
aw0KQ2hyaXM6IHRoaW5rcyB0aGF0IGNvbWJpbmluZyBldmVudHMgaXMgYSBnb29kIHRoaW5nLg0K
TWF0dCBXaWxzb24gcmFpc2VkIHRoZSBwb2ludCBvbiBlbWFpbCB0aGF0IGhlIHdvdWxkIHByZWZl
ciBpZiBMaW51eCBQbHVtYmVycyB3YXMgbm90IGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIFhlbiBQ
cm9qZWN0IHN1bW1pdA0KDQpBY3Rpb24gTGFyczogbWFrZSBwcm9wb3NhbCBvbiB0aGUgbGlzdCDi
gJMgcmVwb3J0IGJhY2sgdG8gbmV4dCBtZWV0aW5nDQpBY3Rpb24gTWlrZTogY29ubmVjdCBMYXJz
IHRvIEtWTSBGb3J1bSAvIEVsZW5hIExpbnV4IFBsdW1iZXJzDQo=

--_000_D040C869111C5larskurthcitrixcom_
Content-Type: text/html; charset="utf-8"
Content-ID: <FBFDCBCC000A9641A1DDAB878E2F9371@citrix.com>
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IlRpdGxlIiBjb250ZW50PSIi
Pg0KPG1ldGEgbmFtZT0iS2V5d29yZHMiIGNvbnRlbnQ9IiI+DQo8bWV0YSBuYW1lPSJQcm9nSWQi
IGNvbnRlbnQ9IldvcmQuRG9jdW1lbnQiPg0KPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50
PSJNaWNyb3NvZnQgV29yZCAxNCI+DQo8bWV0YSBuYW1lPSJPcmlnaW5hdG9yIiBjb250ZW50PSJN
aWNyb3NvZnQgV29yZCAxNCI+DQo8bGluayByZWw9IkZpbGUtTGlzdCIgaHJlZj0iZmlsZTovL2xv
Y2FsaG9zdC9Vc2Vycy9sYXJza3VydGgvTGlicmFyeS9DYWNoZXMvVGVtcG9yYXJ5SXRlbXMvbXNv
Y2xpcC8wL2NsaXBfZmlsZWxpc3QueG1sIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCiA8bzpP
ZmZpY2VEb2N1bWVudFNldHRpbmdzPg0KICA8bzpBbGxvd1BORy8+DQogPC9vOk9mZmljZURvY3Vt
ZW50U2V0dGluZ3M+DQo8L3htbD48IVtlbmRpZl0tLT48bGluayByZWw9InRoZW1lRGF0YSIgaHJl
Zj0iZmlsZTovL2xvY2FsaG9zdC9Vc2Vycy9sYXJza3VydGgvTGlicmFyeS9DYWNoZXMvVGVtcG9y
YXJ5SXRlbXMvbXNvY2xpcC8wL2NsaXBfdGhlbWVkYXRhLnhtbCI+PCEtLVtpZiBndGUgbXNvIDld
Pjx4bWw+DQogPHc6V29yZERvY3VtZW50Pg0KICA8dzpWaWV3Pk5vcm1hbDwvdzpWaWV3Pg0KICA8
dzpab29tPjA8L3c6Wm9vbT4NCiAgPHc6VHJhY2tNb3Zlcy8+DQogIDx3OlRyYWNrRm9ybWF0dGlu
Zy8+DQogIDx3OlB1bmN0dWF0aW9uS2VybmluZy8+DQogIDx3OlZhbGlkYXRlQWdhaW5zdFNjaGVt
YXMvPg0KICA8dzpTYXZlSWZYTUxJbnZhbGlkPmZhbHNlPC93OlNhdmVJZlhNTEludmFsaWQ+DQog
IDx3Oklnbm9yZU1peGVkQ29udGVudD5mYWxzZTwvdzpJZ25vcmVNaXhlZENvbnRlbnQ+DQogIDx3
OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVy
VGV4dD4NCiAgPHc6RG9Ob3RQcm9tb3RlUUYvPg0KICA8dzpMaWRUaGVtZU90aGVyPkVOLUdCPC93
OkxpZFRoZW1lT3RoZXI+DQogIDx3OkxpZFRoZW1lQXNpYW4+SkE8L3c6TGlkVGhlbWVBc2lhbj4N
CiAgPHc6TGlkVGhlbWVDb21wbGV4U2NyaXB0PlgtTk9ORTwvdzpMaWRUaGVtZUNvbXBsZXhTY3Jp
cHQ+DQogIDx3OkNvbXBhdGliaWxpdHk+DQogICA8dzpCcmVha1dyYXBwZWRUYWJsZXMvPg0KICAg
PHc6U25hcFRvR3JpZEluQ2VsbC8+DQogICA8dzpXcmFwVGV4dFdpdGhQdW5jdC8+DQogICA8dzpV
c2VBc2lhbkJyZWFrUnVsZXMvPg0KICAgPHc6RG9udEdyb3dBdXRvZml0Lz4NCiAgIDx3OlNwbGl0
UGdCcmVha0FuZFBhcmFNYXJrLz4NCiAgIDx3OkVuYWJsZU9wZW5UeXBlS2VybmluZy8+DQogICA8
dzpEb250RmxpcE1pcnJvckluZGVudHMvPg0KICAgPHc6T3ZlcnJpZGVUYWJsZVN0eWxlSHBzLz4N
CiAgIDx3OlVzZUZFTGF5b3V0Lz4NCiAgPC93OkNvbXBhdGliaWxpdHk+DQogIDxtOm1hdGhQcj4N
CiAgIDxtOm1hdGhGb250IG06dmFsPSJDYW1icmlhIE1hdGgiLz4NCiAgIDxtOmJya0JpbiBtOnZh
bD0iYmVmb3JlIi8+DQogICA8bTpicmtCaW5TdWIgbTp2YWw9IiYjNDU7LSIvPg0KICAgPG06c21h
bGxGcmFjIG06dmFsPSJvZmYiLz4NCiAgIDxtOmRpc3BEZWYvPg0KICAgPG06bE1hcmdpbiBtOnZh
bD0iMCIvPg0KICAgPG06ck1hcmdpbiBtOnZhbD0iMCIvPg0KICAgPG06ZGVmSmMgbTp2YWw9ImNl
bnRlckdyb3VwIi8+DQogICA8bTp3cmFwSW5kZW50IG06dmFsPSIxNDQwIi8+DQogICA8bTppbnRM
aW0gbTp2YWw9InN1YlN1cCIvPg0KICAgPG06bmFyeUxpbSBtOnZhbD0idW5kT3ZyIi8+DQogIDwv
bTptYXRoUHI+PC93OldvcmREb2N1bWVudD4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3Rl
IG1zbyA5XT48eG1sPg0KIDx3OkxhdGVudFN0eWxlcyBEZWZMb2NrZWRTdGF0ZT0iZmFsc2UiIERl
ZlVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICBEZWZTZW1pSGlkZGVuPSJ0cnVlIiBEZWZRRm9ybWF0
PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5Ig0KICBMYXRlbnRTdHlsZUNvdW50PSIyNzYiPg0KICA8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjAiIFNlbWlIaWRkZW49ImZh
bHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJOb3Jt
YWwiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1p
SGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIg
TmFtZT0iaGVhZGluZyAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAyIi8+DQogIDx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVh
ZGluZyAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIg
UUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA1Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0i
dHJ1ZSIgTmFtZT0iaGVhZGluZyA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA3Ii8+DQogIDx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFt
ZT0iaGVhZGluZyA4Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA5Ii8+DQogIDx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9InRvYyAxIi8+DQogIDx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9InRvYyAyIi8+DQogIDx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9InRvYyAzIi8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9InRv
YyA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5h
bWU9InRvYyA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
MzkiIE5hbWU9InRvYyA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iMzkiIE5hbWU9InRvYyA3Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iMzkiIE5hbWU9InRvYyA4Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9InRvYyA5Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImNhcHRpb24i
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMCIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5h
bWU9IlRpdGxlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
MSIgTmFtZT0iRGVmYXVsdCBQYXJhZ3JhcGggRm9udCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjExIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdo
ZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3VidGl0bGUiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMiIgU2VtaUhpZGRlbj0iZmFsc2Ui
DQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN0cm9uZyIv
Pg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIwIiBTZW1pSGlk
ZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFt
ZT0iRW1waGFzaXMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI1OSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
IlRhYmxlIEdyaWQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFVuaGlkZVdo
ZW5Vc2VkPSJmYWxzZSIgTmFtZT0iUGxhY2Vob2xkZXIgVGV4dCIvPg0KICA8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5o
aWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+DQog
IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIFNlbWlIaWRkZW49
ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBTaGFkaW5nIi8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBMaXN0Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBHcmlkIi8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gU2hhZGlu
ZyAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIFNl
bWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0g
U2hhZGluZyAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NjUiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJN
ZWRpdW0gTGlzdCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjYiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1l
PSJNZWRpdW0gTGlzdCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iNjciIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBO
YW1lPSJNZWRpdW0gR3JpZCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNjgiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNl
IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iNjkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZh
bHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iNzAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9
ImZhbHNlIiBOYW1lPSJEYXJrIExpc3QiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI3MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0i
ZmFsc2UiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVu
VXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIExpc3QiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVX
aGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIEdyaWQiLz4NCiAgPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhp
ZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4NCiAgPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgU2VtaUhpZGRlbj0iZmFs
c2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDEi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IEdyaWQg
QWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2
MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1l
ZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0i
ZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDEiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFt
ZT0iUmV2aXNpb24iLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSIzNCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3Jt
YXQ9InRydWUiIE5hbWU9Ikxpc3QgUGFyYWdyYXBoIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hl
blVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJRdW90ZSIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMwIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iSW50ZW5zZSBRdW90
ZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBTZW1p
SGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExp
c3QgMiBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp
dHk9IjY3IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFt
ZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjY4IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2Vk
PSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVu
aGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPg0KICA8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBTZW1pSGlkZGVuPSJm
YWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAx
Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIFNlbWlI
aWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBT
aGFkaW5nIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iNzIiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBO
YW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNzMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVz
ZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAg
VW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAyIi8+DQog
IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIFNlbWlIaWRkZW49
ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBMaXN0IEFjY2Vu
dCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIFNl
bWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBH
cmlkIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1l
PSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNjQiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVz
ZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIFNlbWlIaWRkZW49ImZhbHNlIg0K
ICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAyIi8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gTGlzdCAy
IEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NjciIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJN
ZWRpdW0gR3JpZCAxIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iNjgiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZh
bHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRl
V2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAyIi8+DQogIDx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIFNlbWlIaWRkZW49ImZhbHNl
Ig0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDIiLz4N
CiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgU2VtaUhpZGRl
bj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIFNoYWRp
bmcgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI3MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
IkNvbG9yZnVsIExpc3QgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI3MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0i
ZmFsc2UiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhp
ZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDMiLz4NCiAgPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgU2VtaUhpZGRlbj0iZmFs
c2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDMi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IEdyaWQg
QWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2
MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1l
ZGl1bSBTaGFkaW5nIDEgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0i
ZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgU2VtaUhpZGRlbj0i
ZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNj
ZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIg
U2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1
bSBHcmlkIDEgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI2OCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2Ui
IE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVu
VXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQog
ICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMyIvPg0KICA8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBTZW1pSGlkZGVuPSJm
YWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBB
Y2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9Ijcy
IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29s
b3JmdWwgTGlzdCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjczIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxz
ZSIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdo
ZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPg0KICA8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBTZW1pSGlkZGVuPSJmYWxzZSIN
CiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNCIvPg0K
ICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBTZW1pSGlkZGVu
PSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgR3JpZCBBY2Nl
bnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBT
ZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVt
IFNoYWRpbmcgMSBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjY0IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxz
ZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlk
ZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNCIvPg0KICA8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBTZW1pSGlkZGVuPSJmYWxz
ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQg
NCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBTZW1p
SGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdy
aWQgMSBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp
dHk9IjY4IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFt
ZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjY5IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2Vk
PSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVu
aGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA0Ii8+DQogIDx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIFNlbWlIaWRkZW49ImZhbHNl
Ig0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2Vu
dCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIFNl
bWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1
bCBMaXN0IEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iNzMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBO
YW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNjAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVz
ZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAg
VW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA1Ii8+DQogIDx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIFNlbWlIaWRkZW49ImZh
bHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA1
Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIFNlbWlI
aWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gU2hh
ZGluZyAxIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iNjQiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBO
YW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hl
blVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIFNlbWlIaWRkZW49ImZhbHNlIg0K
ICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA1Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAx
IEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NjgiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJN
ZWRpdW0gR3JpZCAyIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iNjkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZh
bHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRl
V2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQog
ICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDUi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIExp
c3QgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI3MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI2MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0i
ZmFsc2UiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhp
ZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDYiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgU2VtaUhpZGRlbj0iZmFsc2Ui
DQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4N
CiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgU2VtaUhpZGRl
bj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5n
IDEgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI2NSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNl
ZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDYiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgU2VtaUhpZGRlbj0i
ZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNj
ZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIg
U2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1
bSBHcmlkIDIgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI2OSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2Ui
IE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVu
VXNlZD0iZmFsc2UiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVu
aGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNiIvPg0K
ICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBTZW1pSGlkZGVu
PSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgTGlzdCBB
Y2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9Ijcz
IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29s
b3JmdWwgR3JpZCBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjE5IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxz
ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3VidGxlIEVtcGhhc2lzIi8+DQogIDx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjEiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAg
VW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJJbnRlbnNlIEVtcGhh
c2lzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzEiIFNl
bWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVl
IiBOYW1lPSJTdWJ0bGUgUmVmZXJlbmNlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iMzIiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9
ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJJbnRlbnNlIFJlZmVyZW5jZSIvPg0KICA8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMzIiBTZW1pSGlkZGVuPSJmYWxz
ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iQm9vayBU
aXRsZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM3IiBO
YW1lPSJCaWJsaW9ncmFwaHkiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSIzOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVE9DIEhlYWRpbmciLz4NCiA8L3c6TGF0
ZW50U3R5bGVzPg0KPC94bWw+PCFbZW5kaWZdLS0+PHN0eWxlPg0KPCEtLQ0KIC8qIEZvbnQgRGVm
aW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Iu+8re+8syDmmI7mnJ0iOw0K
CW1zby1mb250LWNoYXJzZXQ6Nzg7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6YXV0bzsNCglt
c28tZm9udC1waXRjaDp2YXJpYWJsZTsNCgltc28tZm9udC1zaWduYXR1cmU6LTUzNjg3MDE0NSAx
NzkxNDkxNTc5IDE4IDAgMTMxMjMxIDA7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiQ2Ft
YnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0Ow0KCW1zby1mb250LWNo
YXJzZXQ6MDsNCgltc28tZ2VuZXJpYy1mb250LWZhbWlseTphdXRvOw0KCW1zby1mb250LXBpdGNo
OnZhcmlhYmxlOw0KCW1zby1mb250LXNpZ25hdHVyZTotNTM2ODcwMTQ1IDExMDczMDU3MjcgMCAw
IDQxNSAwO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy
IDE1IDUgMiAyIDIgNCAzIDIgNDsNCgltc28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMt
Zm9udC1mYW1pbHk6YXV0bzsNCgltc28tZm9udC1waXRjaDp2YXJpYWJsZTsNCgltc28tZm9udC1z
aWduYXR1cmU6LTUyMDA5MjkyOSAxMDczNzg2MTExIDkgMCA0MTUgMDt9DQpAZm9udC1mYWNlDQoJ
e2ZvbnQtZmFtaWx5OkNhbWJyaWE7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDsNCglt
c28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6YXV0bzsNCgltc28t
Zm9udC1waXRjaDp2YXJpYWJsZTsNCgltc28tZm9udC1zaWduYXR1cmU6LTUzNjg3MDE0NSAxMDcz
NzQzMTAzIDAgMCA0MTUgMDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJMdWNpZGEgR3Jh
bmRlIjsNCglwYW5vc2UtMToyIDExIDYgMCA0IDUgMiAyIDIgNDsNCgltc28tZm9udC1jaGFyc2V0
OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6YXV0bzsNCgltc28tZm9udC1waXRjaDp2YXJp
YWJsZTsNCgltc28tZm9udC1zaWduYXR1cmU6LTUyMDA5MDg5NyAxMzQyMjE4NzUxIDAgMCA0NDcg
MDt9DQogLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWws
IGRpdi5Nc29Ob3JtYWwNCgl7bXNvLXN0eWxlLXVuaGlkZTpubzsNCgltc28tc3R5bGUtcWZvcm1h
dDp5ZXM7DQoJbXNvLXN0eWxlLXBhcmVudDoiIjsNCgltYXJnaW46MGNtOw0KCW1hcmdpbi1ib3R0
b206LjAwMDFwdDsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjEy
LjBwdDsNCglmb250LWZhbWlseTpDYW1icmlhOw0KCW1zby1hc2NpaS1mb250LWZhbWlseTpDYW1i
cmlhOw0KCW1zby1hc2NpaS10aGVtZS1mb250Om1pbm9yLWxhdGluOw0KCW1zby1mYXJlYXN0LWZv
bnQtZmFtaWx5OiLvvK3vvLMg5piO5pydIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9y
LWZhcmVhc3Q7DQoJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbWJyaWE7DQoJbXNvLWhhbnNpLXRo
ZW1lLWZvbnQ6bWlub3ItbGF0aW47DQoJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBS
b21hbiI7DQoJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpO30NCi5Nc29DaHBEZWZhdWx0
DQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCW1zby1kZWZhdWx0LXByb3BzOnllczsN
Cglmb250LWZhbWlseTpDYW1icmlhOw0KCW1zby1hc2NpaS1mb250LWZhbWlseTpDYW1icmlhOw0K
CW1zby1hc2NpaS10aGVtZS1mb250Om1pbm9yLWxhdGluOw0KCW1zby1mYXJlYXN0LWZvbnQtZmFt
aWx5OiLvvK3vvLMg5piO5pydIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVh
c3Q7DQoJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbWJyaWE7DQoJbXNvLWhhbnNpLXRoZW1lLWZv
bnQ6bWlub3ItbGF0aW47DQoJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7
DQoJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpO30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0K
CXtzaXplOjYxMi4wcHQgNzkyLjBwdDsNCgltYXJnaW46NzIuMHB0IDkwLjBwdCA3Mi4wcHQgOTAu
MHB0Ow0KCW1zby1oZWFkZXItbWFyZ2luOjM2LjBwdDsNCgltc28tZm9vdGVyLW1hcmdpbjozNi4w
cHQ7DQoJbXNvLXBhcGVyLXNvdXJjZTowO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpXb3Jk
U2VjdGlvbjE7fQ0KLS0+DQo8L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyAxMF0+DQo8c3R5bGU+DQog
LyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnRhYmxlLk1zb05vcm1hbFRhYmxlDQoJe21zby1zdHls
ZS1uYW1lOiJUYWJsZSBOb3JtYWwiOw0KCW1zby10c3R5bGUtcm93YmFuZC1zaXplOjA7DQoJbXNv
LXRzdHlsZS1jb2xiYW5kLXNpemU6MDsNCgltc28tc3R5bGUtbm9zaG93OnllczsNCgltc28tc3R5
bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLXBhcmVudDoiIjsNCgltc28tcGFkZGluZy1hbHQ6
MGNtIDUuNHB0IDBjbSA1LjRwdDsNCgltc28tcGFyYS1tYXJnaW46MGNtOw0KCW1zby1wYXJhLW1h
cmdpbi1ib3R0b206LjAwMDFwdDsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9u
dC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseTpDYW1icmlhOw0KCW1zby1hc2NpaS1mb250LWZh
bWlseTpDYW1icmlhOw0KCW1zby1hc2NpaS10aGVtZS1mb250Om1pbm9yLWxhdGluOw0KCW1zby1o
YW5zaS1mb250LWZhbWlseTpDYW1icmlhOw0KCW1zby1oYW5zaS10aGVtZS1mb250Om1pbm9yLWxh
dGluO30NCjwvc3R5bGU+DQo8IVtlbmRpZl0tLT4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJ3b3Jk
LXdyYXA6IGJyZWFrLXdvcmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5l
LWJyZWFrOiBhZnRlci13aGl0ZS1zcGFjZTsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXpl
OiAxNHB4OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiPg0KPGRpdj48IS0tW2lm
IGd0ZSBtc28gOV0+PHhtbD4NCiA8bzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPg0KICA8bzpBbGxv
d1BORy8+DQogPC9vOk9mZmljZURvY3VtZW50U2V0dGluZ3M+DQo8L3htbD48IVtlbmRpZl0tLT48
IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCiA8dzpXb3JkRG9jdW1lbnQ+DQogIDx3OlZpZXc+Tm9y
bWFsPC93OlZpZXc+DQogIDx3Olpvb20+MDwvdzpab29tPg0KICA8dzpUcmFja01vdmVzLz4NCiAg
PHc6VHJhY2tGb3JtYXR0aW5nLz4NCiAgPHc6UHVuY3R1YXRpb25LZXJuaW5nLz4NCiAgPHc6VmFs
aWRhdGVBZ2FpbnN0U2NoZW1hcy8+DQogIDx3OlNhdmVJZlhNTEludmFsaWQ+ZmFsc2U8L3c6U2F2
ZUlmWE1MSW52YWxpZD4NCiAgPHc6SWdub3JlTWl4ZWRDb250ZW50PmZhbHNlPC93Oklnbm9yZU1p
eGVkQ29udGVudD4NCiAgPHc6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD5mYWxzZTwvdzpBbHdh
eXNTaG93UGxhY2Vob2xkZXJUZXh0Pg0KICA8dzpEb05vdFByb21vdGVRRi8+DQogIDx3OkxpZFRo
ZW1lT3RoZXI+RU4tR0I8L3c6TGlkVGhlbWVPdGhlcj4NCiAgPHc6TGlkVGhlbWVBc2lhbj5KQTwv
dzpMaWRUaGVtZUFzaWFuPg0KICA8dzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+WC1OT05FPC93Okxp
ZFRoZW1lQ29tcGxleFNjcmlwdD4NCiAgPHc6Q29tcGF0aWJpbGl0eT4NCiAgIDx3OkJyZWFrV3Jh
cHBlZFRhYmxlcy8+DQogICA8dzpTbmFwVG9HcmlkSW5DZWxsLz4NCiAgIDx3OldyYXBUZXh0V2l0
aFB1bmN0Lz4NCiAgIDx3OlVzZUFzaWFuQnJlYWtSdWxlcy8+DQogICA8dzpEb250R3Jvd0F1dG9m
aXQvPg0KICAgPHc6U3BsaXRQZ0JyZWFrQW5kUGFyYU1hcmsvPg0KICAgPHc6RW5hYmxlT3BlblR5
cGVLZXJuaW5nLz4NCiAgIDx3OkRvbnRGbGlwTWlycm9ySW5kZW50cy8+DQogICA8dzpPdmVycmlk
ZVRhYmxlU3R5bGVIcHMvPg0KICAgPHc6VXNlRkVMYXlvdXQvPg0KICA8L3c6Q29tcGF0aWJpbGl0
eT4NCiAgPG06bWF0aFByPg0KICAgPG06bWF0aEZvbnQgbTp2YWw9IkNhbWJyaWEgTWF0aCIvPg0K
ICAgPG06YnJrQmluIG06dmFsPSJiZWZvcmUiLz4NCiAgIDxtOmJya0JpblN1YiBtOnZhbD0iJiM0
NTstIi8+DQogICA8bTpzbWFsbEZyYWMgbTp2YWw9Im9mZiIvPg0KICAgPG06ZGlzcERlZi8+DQog
ICA8bTpsTWFyZ2luIG06dmFsPSIwIi8+DQogICA8bTpyTWFyZ2luIG06dmFsPSIwIi8+DQogICA8
bTpkZWZKYyBtOnZhbD0iY2VudGVyR3JvdXAiLz4NCiAgIDxtOndyYXBJbmRlbnQgbTp2YWw9IjE0
NDAiLz4NCiAgIDxtOmludExpbSBtOnZhbD0ic3ViU3VwIi8+DQogICA8bTpuYXJ5TGltIG06dmFs
PSJ1bmRPdnIiLz4NCiAgPC9tOm1hdGhQcj48L3c6V29yZERvY3VtZW50Pg0KPC94bWw+PCFbZW5k
aWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQogPHc6TGF0ZW50U3R5bGVzIERlZkxvY2tl
ZFN0YXRlPSJmYWxzZSIgRGVmVW5oaWRlV2hlblVzZWQ9InRydWUiDQogIERlZlNlbWlIaWRkZW49
InRydWUiIERlZlFGb3JtYXQ9ImZhbHNlIiBEZWZQcmlvcml0eT0iOTkiDQogIExhdGVudFN0eWxl
Q291bnQ9IjI3NiI+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9
InRydWUiIE5hbWU9Ik5vcm1hbCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNl
IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0
PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDQiLz4NCiAgPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBO
YW1lPSJoZWFkaW5nIDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDYiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFk
aW5nIDciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBR
Rm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDkiLz4N
CiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0idG9j
IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFt
ZT0idG9jIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIz
OSIgTmFtZT0idG9jIDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSIzOSIgTmFtZT0idG9jIDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSIzOSIgTmFtZT0idG9jIDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0idG9jIDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0idG9jIDciLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0idG9jIDgiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0idG9jIDkiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNSIgUUZvcm1hdD0idHJ1
ZSIgTmFtZT0iY2FwdGlvbiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjEwIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIg
UUZvcm1hdD0idHJ1ZSIgTmFtZT0iVGl0bGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSIxIiBOYW1lPSJEZWZhdWx0IFBhcmFncmFwaCBGb250Ii8+DQogIDx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTEiIFNlbWlIaWRkZW49ImZh
bHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0
aXRsZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIyIiBT
ZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1
ZSIgTmFtZT0iU3Ryb25nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iMjAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBR
Rm9ybWF0PSJ0cnVlIiBOYW1lPSJFbXBoYXNpcyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjU5IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5V
c2VkPSJmYWxzZSIgTmFtZT0iVGFibGUgR3JpZCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJQbGFjZWhvbGRlciBUZXh0Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMSIgU2VtaUhpZGRl
bj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9
Ik5vIFNwYWNpbmciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI2MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
IkxpZ2h0IFNoYWRpbmciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5h
bWU9IkxpZ2h0IExpc3QiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5h
bWU9IkxpZ2h0IEdyaWQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5h
bWU9Ik1lZGl1bSBTaGFkaW5nIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFs
c2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI2NSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNl
ZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVu
VXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVX
aGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhp
ZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDIiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDMiLz4NCiAgPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgU2VtaUhpZGRlbj0iZmFsc2UiDQog
ICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkRhcmsgTGlzdCIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyIvPg0KICA8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBTZW1pSGlkZGVuPSJmYWxz
ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgTGlzdCIvPg0KICA8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBTZW1pSGlkZGVuPSJm
YWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgR3JpZCIvPg0K
ICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBTZW1pSGlkZGVu
PSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgU2hhZGluZyBB
Y2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYx
IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGln
aHQgTGlzdCBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjYyIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIg
TmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjYzIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2Vk
PSJmYWxzZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMSIv
Pg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBTZW1pSGlk
ZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3Qg
MSBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgVW5oaWRlV2hl
blVzZWQ9ImZhbHNlIiBOYW1lPSJSZXZpc2lvbiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjM0IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5V
c2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4NCiAgPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgU2VtaUhpZGRlbj0iZmFs
c2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlF1b3Rl
Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzAiIFNlbWlI
aWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBO
YW1lPSJJbnRlbnNlIFF1b3RlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNjYiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNl
IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hl
blVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIFNlbWlIaWRkZW49ImZhbHNlIg0K
ICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAxIi8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAz
IEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NzAiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJE
YXJrIExpc3QgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI3MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2Ui
IE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVX
aGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDEiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgU2VtaUhpZGRlbj0iZmFsc2Ui
DQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDEi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IFNoYWRp
bmcgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI2MSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9
IkxpZ2h0IExpc3QgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI2MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFs
c2UiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVu
VXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDIiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2Ui
DQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50
IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgU2Vt
aUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBM
aXN0IDEgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2NiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5h
bWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI2NyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNl
ZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgU2VtaUhpZGRlbj0i
ZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNj
ZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIg
U2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkRhcmsg
TGlzdCBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp
dHk9IjcxIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFt
ZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5V
c2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMiIvPg0K
ICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBTZW1pSGlkZGVu
PSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgU2hhZGluZyBB
Y2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYx
IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGln
aHQgTGlzdCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjYyIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIg
TmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjYzIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2Vk
PSJmYWxzZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMyIv
Pg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBTZW1pSGlk
ZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3Qg
MSBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjY2IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0i
TWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjY3IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJm
YWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlk
ZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMyIvPg0KICA8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBTZW1pSGlkZGVuPSJmYWxz
ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQg
MyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBTZW1p
SGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iRGFyayBMaXN0
IEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NzEiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJD
b2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iNzIiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9
ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5o
aWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAzIi8+DQogIDx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIFNlbWlIaWRkZW49ImZh
bHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2Vu
dCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIFNl
bWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJMaWdodCBM
aXN0IEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjIiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1l
PSJMaWdodCBHcmlkIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iNjMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZh
bHNlIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5o
aWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA0Ii8+DQog
IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIFNlbWlIaWRkZW49
ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFj
Y2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYi
IFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRp
dW0gTGlzdCAyIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNjciIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNl
IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hl
blVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIFNlbWlIaWRkZW49ImZhbHNlIg0K
ICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA0Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJEYXJrIExpc3QgQWNj
ZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIg
U2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9y
ZnVsIFNoYWRpbmcgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI3MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFs
c2UiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVX
aGVuVXNlZD0iZmFsc2UiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4NCiAgPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgU2VtaUhpZGRlbj0iZmFsc2Ui
DQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDUi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkxpZ2h0IExpc3Qg
QWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2
MiIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ikxp
Z2h0IEdyaWQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI2MyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2Ui
IE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVX
aGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDUiLz4NCiAgPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgU2VtaUhpZGRlbj0iZmFs
c2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50
IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgU2Vt
aUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBM
aXN0IDIgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2NyIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5h
bWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI2OCIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNl
ZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBV
bmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDUiLz4NCiAg
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgU2VtaUhpZGRlbj0i
ZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQg
NSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBTZW1p
SGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwg
U2hhZGluZyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjcyIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIg
TmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjczIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5V
c2VkPSJmYWxzZSIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAg
IFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNiIvPg0K
ICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBTZW1pSGlkZGVu
PSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQgTGlzdCBBY2Nl
bnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBT
ZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTGlnaHQg
R3JpZCBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp
dHk9IjYzIiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFt
ZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5V
c2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNiIvPg0KICA8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBTZW1pSGlkZGVuPSJmYWxzZSIN
CiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNiIv
Pg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBTZW1pSGlk
ZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIExpc3Qg
MiBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjY3IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0i
TWVkaXVtIEdyaWQgMSBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjY4IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJm
YWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBTZW1pSGlkZGVuPSJmYWxzZSINCiAgIFVuaGlk
ZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPg0KICA8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBTZW1pSGlkZGVuPSJmYWxz
ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA2Ii8+
DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIFNlbWlIaWRk
ZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBTaGFk
aW5nIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNzIiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBOYW1l
PSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iNzMiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9
ImZhbHNlIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTkiIFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5o
aWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0bGUgRW1waGFzaXMi
Lz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMSIgU2VtaUhp
ZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5h
bWU9IkludGVuc2UgRW1waGFzaXMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSIzMSIgU2VtaUhpZGRlbj0iZmFsc2UiDQogICBVbmhpZGVXaGVuVXNlZD0iZmFs
c2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN1YnRsZSBSZWZlcmVuY2UiLz4NCiAgPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMiIgU2VtaUhpZGRlbj0iZmFsc2UiDQog
ICBVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkludGVuc2UgUmVm
ZXJlbmNlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzMi
IFNlbWlIaWRkZW49ImZhbHNlIg0KICAgVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0
cnVlIiBOYW1lPSJCb29rIFRpdGxlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iMzciIE5hbWU9IkJpYmxpb2dyYXBoeSIvPg0KICA8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUT0MgSGVh
ZGluZyIvPg0KIDwvdzpMYXRlbnRTdHlsZXM+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0
ZSBtc28gMTBdPg0KPHN0eWxlPg0KIC8qIFN0eWxlIERlZmluaXRpb25zICovDQp0YWJsZS5Nc29O
b3JtYWxUYWJsZQ0KCXttc28tc3R5bGUtbmFtZToiVGFibGUgTm9ybWFsIjsNCgltc28tdHN0eWxl
LXJvd2JhbmQtc2l6ZTowOw0KCW1zby10c3R5bGUtY29sYmFuZC1zaXplOjA7DQoJbXNvLXN0eWxl
LW5vc2hvdzp5ZXM7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1wYXJlbnQ6
IiI7DQoJbXNvLXBhZGRpbmctYWx0OjBjbSA1LjRwdCAwY20gNS40cHQ7DQoJbXNvLXBhcmEtbWFy
Z2luOjBjbTsNCgltc28tcGFyYS1tYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJbXNvLXBhZ2luYXRp
b246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6Q2FtYnJp
YTsNCgltc28tYXNjaWktZm9udC1mYW1pbHk6Q2FtYnJpYTsNCgltc28tYXNjaWktdGhlbWUtZm9u
dDptaW5vci1sYXRpbjsNCgltc28taGFuc2ktZm9udC1mYW1pbHk6Q2FtYnJpYTsNCgltc28taGFu
c2ktdGhlbWUtZm9udDptaW5vci1sYXRpbjt9DQo8L3N0eWxlPg0KPCFbZW5kaWZdLS0+PCEtLVN0
YXJ0RnJhZ21lbnQtLT4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBz
dHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9u
dC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+PSBBdHRlbmRlZXMgPTxv
OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJp
ZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+TGFycyBLdXJ0
aCAoQ2hhaXIpPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGli
cmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVT
Ij5NaWtlIFdvc3RlciAoTGludXggRm91bmRhdGlvbik8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox
NC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7
bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPlNhcmFoIENvbndheSAoTGludXggRm91bmRhdGlvbik8
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1i
aWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzwv
c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9
ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFt
aWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPkNocmlzIFNjaGxhZWdlciAoQW1h
em9uKTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh
bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0K
bXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+SmFt
ZXMgQnVscGluLCBNYXJrIEhpbmtsZSAoQ2l0cml4KTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0
LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTtt
c28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+RG9uIEQgRHVnZ2VyIChJbnRlbCk8bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9
ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFt
aWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPktvbnJhZCBSIFdpbGsgKE9yYWNs
ZSk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5n
PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1z
by1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPlBoaWxp
cHBlIFJvYmluIChBUk0pPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5
OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdl
OkVOLVVTIj5TaGVycnkgSHVyd2l0eiAoQU1EKTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBw
dDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28t
YW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWls
eTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFn
ZTpFTi1VUyI+MSBzaG9ydCBvZiBxdW9ydW08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7
Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFu
c2ktbGFuZ3VhZ2U6RU4tVVMiPlRoaXMgbWVhbnMgd2UgY2FuIHByb2NlZWQgd2l0aCB0aGUgbWVl
dGluZywgYnV0IG5vIHJlc29sdXRpb24vbW90aW9ucyBzaG91bGQgYmUgcHV0IGZvcndhcmQNCjxv
OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJp
ZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1p
bHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+PSBBY3Rpb25zID0mbmJzcDs8bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1V
UyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRp
LWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPjxiPjx1PjxzcGFu
IHN0eWxlPSJjb2xvcjpibHVlIj5BY3Rpb24gRG9uICZhbXA7IExhcnM6PC9zcGFuPjwvdT48L2I+
Jm5ic3A7U2VuZCBkZXRhaWxlZCBtYWNoaW5lIGxpc3QgdG8gdGhlIGxpc3QmbmJzcDs8L3NwYW4+
PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6IDE3cHQ7IGZvbnQtZmFtaWx5
OiAnTHVjaWRhIEdyYW5kZSc7IGNvbG9yOiByZ2IoODUsIDEzOCwgMyk7Ij7inJM8L3NwYW4+PC9i
PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpD
YWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpF
Ti1VUyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNh
bGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVO
LVVTIj48Yj48dT48c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+QWN0aW9uIExhcnM6PC9zcGFuPjwv
dT48L2I+Jm5ic3A7V29yayB3aXRoIHRlc3QgZnJhbWV3b3JrIFdHIGFuZCBib2FyZCB0byBmaW5h
bGlzZSBIVyBsaXN0Lg0KIEFpbSB0byBzdGF5IHdpdGhpbiB0aGUgYXBwcm92ZWQgYnVkZ2V0PG86
cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlk
aS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDsgJm5i
c3A7DQo8Yj5TdGF0dXM6PC9iPiBTaGVycnkgc2VudCBvdXQgYSBsaXN0IHdpdGggcHJvcG9zYWxz
LiBXYWl0aW5nIGZvciBJYW4gSmFja3NvbiB0byBiZSBiYWNrIGZyb20gdmFjYXRpb24gdG8gd29y
ayBvbiB0aGUgZGV0YWlscyB3aXRoIEFsbE5ldDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBw
dDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28t
YW5zaS1sYW5ndWFnZTpFTi1VUyI+PGI+PHU+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPkFjdGlv
biBMYXJzOjwvc3Bhbj48L3U+PC9iPiZuYnNwO1NlbmQgQ09MTyBjb250cmFjdCB0byBNaWtlIFdv
c3RlciBmb3IgcmV2aWV3Jm5ic3A7Jm5ic3A7PC9zcGFuPjxiPjxzcGFuIGxhbmc9IkVOLVVTIiBz
dHlsZT0iZm9udC1zaXplOiAxN3B0OyBmb250LWZhbWlseTogJ0x1Y2lkYSBHcmFuZGUnOyBjb2xv
cjogcmdiKDg1LCAxMzgsIDMpOyI+4pyTPC9zcGFuPjwvYj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5
bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQt
ZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwO3JlYWR5DQogdG8g
YmUgc2lnbmVkLCBidXQgd2FudCB0byByZXZpZXcgb3RoZXIgZG9jdW1lbnRzIGZpcnN0PG86cD48
L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi
IHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1m
b250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8Yj48dT48
c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+QWN0aW9uIExhcnM6PC9zcGFuPjwvdT48L2I+Jm5ic3A7
U2VuZCBIVyBhbmQgc3VwcG9ydCBjb250cmFjdHMgdG8gTWlrZSBXb3N0ZXIgZm9yIHJldmlldyBh
bmQNCiBmaW5hbGlzZSBhcyBwZXIgYWN0aW9uIGFib3ZlPG86cD48L286cD48L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNp
emU6MTQuMHB0O2ZvbnQtZmFtaWx5Og0KQ2FsaWJyaTttc28tYmlkaS1mb250LWZhbWlseTpDYWxp
YnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5TdGF0dXM6PC9zcGFuPjwvYj48c3BhbiBsYW5n
PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28t
YmlkaS1mb250LWZhbWlseToNCkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPg0KIHdh
aXRpbmcgZm9yIE1pa2UgdG8gcmV2aWV3IHRoZSBzdXBwb3J0IGNvbnRyYWN0LiBQcm9wb3NlIHRv
IHNpZ24gYm90aCBFYXJ0aExpbmsgQ09MTyBwcm9wb3NhbCBhbmQgQWxsTmV0IG1haW50ZW5hbmNl
IGNvbnRyYWN0IGlmIHRoZSBsYXR0ZXIgaXMgYWNjZXB0YWJsZTxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z
aXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2Fs
aWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+TWlrZSBpcyBnb2luZyB0byBzaWduIGJvdGggY29udHJhY3RzIHRv
ZGF5IGFzIGFncmVlZCBpbiB0aGUgQXVndXN0IEFCIG1lZXRpbmc8bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQt
c2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNh
bGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7
Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFu
c2ktbGFuZ3VhZ2U6RU4tVVMiPk1pa2U6IE9uIHRoZSBIVyBsaXN0LCB3aGljaCB3ZSBhcmUgZGVm
ZXJyaW5nLCB0aGUgTGludXggRm91bmRhdGlvbiBjYW4gb25seSBnZXQgRGVsbCBib3hlcyBhdCBo
ZWF2aWx5IGRpc2NvdW50ZWQgcHJpY2VzLg0KIE1pa2UgcmVjb21tZW5kcyB0aGF0IHRoZSBwcm9q
ZWN0IHNob3VsZCBwdXJjaGFzZSBoYXJkd2FyZSB0aHJvdWdoIG5vcm1hbCBjaGFubmVsczxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGkt
Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6
Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+PGI+PHU+PHNwYW4gc3R5bGU9ImNvbG9y
OmJsdWUiPkFjdGlvbiBBbGw6PC9zcGFuPjwvdT48L2I+IG1lbWJlciBjb21wYW5pZXMgdG8gY29t
ZSB1cCB3aXRoIGEgbGlzdCBvZiB0aGVpciBwYXJ0bmVycyAmIzQzOw0KIGNvbnRhY3QgZGV0YWls
cyBieSB0aGUgbmV4dCBib2FyZCBtZWV0aW5nLiAmbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6
ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGli
cmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9u
dC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2kt
bGFuZ3VhZ2U6RU4tVVMiPkxhcnM6IHJlc3RhdGVkIHRoZSBnb2FsIHRoYXQgdGhpcyB3b3VsZCBi
ZSBhIGxpc3Qgb2YgY29tcGFuaWVzIGFuZCBwYXJ0bmVycyBvZiBleGlzdGluZyBib2FyZCBtZW1i
ZXJzIHRoYXQgdGhlIExpbnV4DQogRm91bmRhdGlvbiBjYW4gYXBwcm9hY2guPG86cD48L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZh
bWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6
MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJp
O21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5NaWtlIHN0YXRlZCB0aGF0IGxldmVyYWdpbmcgcGFy
dG5lcnMgb2YgZXhpc3RpbmcgbWVtYmVycyBpcyBhbHNvIGhvdyBvdGhlciBwcm9qZWN0cyBzdWNj
ZXNzZnVsbHkgZ3Jvdy4gQWxzbyB0aGUgdGltaW5nDQogZm9yIHJlYWNoaW5nIG91dCB0byBwcm9z
cGVjdGl2ZSBtZW1iZXJzIGlzIHJpZ2h0LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpD
YWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpF
Ti1VUyI+S29ucmFkOiB3aWxsIGZvbGxvdyB1cCBvbiB0aGlzIGZvciB0aGUgbmV4dCBtZWV0aW5n
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28t
YmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5MYXJzOiBM
YXJyeSBhbHNvIGhhZCBzb21lIGlkZWFzLCBidXQgY291bGQgbm90IG1ha2UgdGhpcyBjYWxsIGR1
ZSB0byBMaW5hcm8gQ29ubmVjdDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZh
bWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5n
dWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJp
Ow0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+
TGFyczogYXNrZWQgd2hlcmUgd2UgYXJlIHdpdGggcmVnYXJkcyB0byBBUE08bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9
ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFt
aWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPk1pa2U6IFdlIGFyZSBpbiB0aGUg
ZmluYWwgc3RhZ2VzIHdpdGggQVBNIOKAkyBleHBlY3RzIGEgY29uZmlybWF0aW9uIGluIHRoZSBu
ZXh0IHR3byB3ZWVrcyAoaG93ZXZlciB0aGUgaW50ZXJuYWwgc3BvbnNvcg0KIGhhcyBtb3ZlZCBw
b3NpdGlvbiwgYW5kIHRodXMgY2xvc2luZyBpcyBhdCByaXNrKTxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z
aXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2Fs
aWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PGI+PHU+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPkFj
dGlvbiBCcmlhbjo8L3NwYW4+PC91PjwvYj4mbmJzcDtEaXNjdXNzIGlzc3VlcyByYWlzZWQgW3Jl
bGF0ZWQgdG8gWGVuIFByb2plY3QmbmJzcDvigJMmbmJzcDtMaW51eCBGb3VuZGF0aW9uDQogSW50
ZXJmYWNlXSB3aXRoIE1pa2UgV29zdGVyJm5ic3A7Jm5ic3A7PC9zcGFuPjxiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOiAxN3B0OyBmb250LWZhbWlseTogJ0x1Y2lkYSBHcmFu
ZGUnOyBjb2xvcjogcmdiKDg1LCAxMzgsIDMpOyI+4pyTPC9zcGFuPjwvYj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYmlk
aS1mb250LWZhbWlseToNCkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzxv
OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJp
ZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PGI+
PHU+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPkFjdGlvbiBMYXJzOjwvc3Bhbj48L3U+PC9iPiZu
YnNwO1NpdCB0b2dldGhlciB3aXRoIE1pa2UgV29zdGVyIGFuZCB3YWxrIHRocm91Z2ggaXNzdWVz
IHRoYXQNCiBoYXZlIGJlZW4gb2JzZXJ2ZWQmbmJzcDs8L3NwYW4+PGI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6IDE3cHQ7IGZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZSc7
IGNvbG9yOiByZ2IoODUsIDEzOCwgMyk7Ij7inJM8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDsNCmZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWJpZGkt
Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PG86cD48
L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi
IHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1m
b250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250
LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpD
YWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5MYXJzIGFza2VkIHdoZXRoZXIgdGhlcmUg
aGFzIGJlZW4gYW55IHByb2dyZXNzLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250
LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1s
YW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxp
YnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1V
UyI+TWlrZTombmJzcDsgSGF2ZSBhbiBvdmVydmlldyBvZiBhbGwgOSBpc3N1ZXMgdGhhdCBMYXJz
IHJhaXNlZCBhbmQgYSBnb29nbGUgZG9jdW1lbnQgYXMgZHJhZnQuIFRoZSBiYWNrZ3JvdW5kIGlz
IHRoYXQgdGhlIGluY3JlYXNlDQogb2YgdGhlIG51bWJlciBvZiBwcm9qZWN0cyBpbiB0aGUgTEYg
aGFzIGNyZWF0ZWQgYSBuZWVkIG9mIHN0YW5kYXJkaXplZCBwcm9jZXNzZXMgYWFuZCB0byBtYWtl
IHN1cmUgaXQgaXMgY2xlYXIgdG8gcHJvamVjdHMgaG93IHRoZXNlIHdvcmsuIEFsbCB0aGlzIHdp
bGwgYmUgZG9jdW1lbnRlZC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1p
bHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3Vh
Z2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBs
YW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsN
Cm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPkV4
YW1wbGVzIG9mIHdoYXQgbmVlZHMgdG8gYmUgZG9jdW1lbnRlZCBhcmU6PG86cD48L286cD48L3Nw
YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm
b250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWls
eTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4qIEhvdyB0byBpbnZvaWNlIGFuZCBn
ZXQgY29udHJhY3RzDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6
Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6
RU4tVVMiPiogSG93IHRvIHJlcXVlc3Qgc2VydmljZXMgZnJvbSB0aGUgU2VydmljZXMgdGVhbS48
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1i
aWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiogU3BvbnNv
cmluZyB0cmF2ZWwgZWZmaWNpZW50bHk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9u
dC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2kt
bGFuZ3VhZ2U6RU4tVVMiPk1pa2UgYWxzbyBhcG9sb2dpemVkIGFib3V0IHRoZSBpc3N1ZSB3aXRo
IHRoZSBpbnZvaWNpbmcgYW5kIHN0YXRlZCB0aGF0IHRoaXMgaGFzIGJlZW4gZml4ZWQuIEluIGFk
ZGl0aW9uIE1pa2Ugd2lsbCBiZQ0KIHRoZSBMRiBjb250YWN0IGZvciB0aGUgcHJvamVjdCBhbmQg
YXR0ZW5kIGFsbCBBQiBtZWV0aW5nczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250
LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1s
YW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxp
YnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1V
UyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJp
ZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+PSBQcm9qZWN0
IEFjY291bnRzID08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2Fs
aWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4t
VVMiPkkgbmVlZCB0byBkbyBkZXRhaWxlZCBhY2NvdW50cyBmb3IgdGhlIHByb2plY3QsIG5vdyBh
cyB3ZSBhcmUgZ2V0dGluZyByZWd1bGFyIHNwZW5kaW5nIHJlcG9ydHMuIEkgaGF2ZSBub3QgbWFu
YWdlZCB0bw0KIGRvIHRoaXMgeWV0LCBhcyBJIGRvbuKAmXQgZnVsbHkgdW5kZXJzdGFuZCBob3cg
dG8gbWFwIGl0ZW1zIGJhY2sgdG8gdGhlIGJ1ZGdldC4gSSB3aWxsIHB1dCBzb21lIHRpbWUgYXNp
ZGUgdG8gZG8gdGhpcyB3aGVuIEkgaGF2ZSBsZXNzIG9mIGEgdHJhdmVsIGxvYWQuPG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0
eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250
LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNp
emU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxp
YnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5NaWtlIHN0YXRlZCB0aGF0IEJyaWFuIGlzIG5v
dyBzZW5kaW5nIG91dCBtb250aGx5IGJ1ZGdldCByZXBvcnRzPG86cD48L286cD48L3NwYW4+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNp
emU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxp
YnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5MYXJzOiB0aGF0IGlzIGNvcnJlY3QsIGJ1dCBJ
IGhhdmUgbm90IGhhZCB0aGUgYmFuZHdpZHRoIHlldCB0byBpbnRlZ3JhdGUgdGhlbSBpbnRvIHRo
ZSBwbGFubmluZyBzcHJlYWRzaGVldHM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9u
dC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2kt
bGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2Fs
aWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4t
VVMiPj0gUHJlc3MgVXBkYXRlcyAoU2FyYWgpID08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4w
cHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNv
LWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1p
bHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3Vh
Z2U6RU4tVVMiPk5lYXJseSBkb25lIHdpdGggdmlkZW9zIHRoYXQgd2Ugc2hvdCBhdCBMaW51eENv
bjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNv
LWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+QXQgdGhl
IGVuZCBvZiB0aGUgd2VlayB0byBtZW1iZXJzIHdpbGwgYmUgY29udGFjdGVkIGZvciByZXZpZXdp
bmcgdGhlc2UgaW5kaXZpZHVhbGx5PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQt
ZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxh
bmd1YWdlOkVOLVVTIj5TYXJhaCB3aWxsIGNyZWF0ZSBhIG1hc2h1cCBhZnRlciBlYWNoIHNlZ21l
bnQgaXMgYXBwcm92ZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6
Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6
RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5n
PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1z
by1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPkFuYWx5
c3QgbWVldGluZyBpcyBwcm9ncmVzc2luZzogaXQgd2lsbCBiZW5lZml0IGZyb20gYWRkaXRpb25h
bCB2aXN1YWxzDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2Fs
aWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4t
VVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1i
aWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPlNhcmFoIGlz
IGxvb2tpbmcgZm9yIHNwb2tlcyBwZW9wbGUgZnJvbSB0aGUgQUIgYW5kIHdpbGwgcmVhY2ggb3V0
LiBDYW5kaWRhdGVzIGFyZSBNYXJrLCBMYXJyeSwgS29ucmFkLCBvciBhbnlvbmUgd2hvDQogd2Fu
dHMgdG8gc3RlcCB1cDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpD
YWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpF
Ti1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNv
LWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+SWYgd2Ug
cGxhbiB0aGlzIGZvciBMaW51eENvbiwgd2hvIGlzIGdvaW5nIHRvIGJlIGF2YWlsYWJsZTogTWFy
ayAvIExhcnMg4oCTIHllcywgS29ucmFkIOKAkyBubzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0
LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTtt
c28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZh
bWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5n
dWFnZTpFTi1VUyI+U2FyYWggd2lsbCBzZW5kIG91dCB0aGUgbW9udGhseSByZXBvcnQsIGJ1dCBB
dWd1c3Qgd2FzIHF1aWV0ZXIgdGhhbiBpbiB0aGUgcGFzdCBkdWUgdG8gdGhlIHN1bW1lciBsdWxs
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28t
YmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZh
bWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj40LjUgcHJlc3MgcmVsZWFzZSBw
bGFubmluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJp
Ow0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+
Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGkt
Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+U2FyYWggaXMgbG9v
a2luZyBmb3IgcHJlc3MgcXVvdGVzLiBXZSBzaG91bGQgc3RhcnQgaWRlbnRpZnlpbmcgdGhlIHNh
bGllbnQgZmVhdHVyZXMuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5
OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdl
OkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFu
Zz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQpt
c28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5MYXJz
IHdhcyB0aGlua2luZyBvZiBJbnRlbCBmZWF0dXJlcywgYnV0IEtvbnJhZCB3YXMgc3RhdGluZyB0
aGVzZSBhcmUgbm90IHByb2dyZXNzaW5nIGFzIGZhc3QgYXMgaG9wZWQsIGJ1dCBBTUQgZmVhdHVy
ZXMNCiBoYXZlPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGli
cmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVT
Ij4mbmJzcDs8L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlk
aS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5Lb25yYWQ6IGEg
cXVpY2sgZ2xhbmNlIG92ZXIgdGhlIGxpc3Qgc2hvd3MgdGhhdCB0aGVyZSBoYXZlIGJlZW4gaG90
IHNwb3RzIG9mIGZlYXR1cmVzIG9uIEFSTSwgU2VjdXJpdHkgKFplbnRpZmljIC8gQml1dERlZmVu
ZGVyKSwNCiBQVkggRG9tMCAoT3JhY2xlKTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpD
YWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpF
Ti1VUyI+QWN0aW9uIEtvbnJhZDogd2lsbCBnbyB0aHJvdWdoIHRoZSBmZWF0dXJlIGxpc3QgYW5k
IGNvbW11bmljYXRlLCBidXQgdGhlcmUgaGF2ZSBiZWVuIGhvdCBzcG90cy4gU2FyYWggdG8gZm9s
bG93IHVwIHdpdGgNCiBhIGNvbmZlcmVuY2UgY2FsbDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0
LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTtt
c28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZh
bWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5n
dWFnZTpFTi1VUyI+PSBGdW5kaW5nIGFub3RoZXIgKG9yIHR3bykgT1BXIHN0dWRlbnRzIGZvciB0
aGUgd2ludGVyIHJvdW5kID0mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9u
dC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2kt
bGFuZ3VhZ2U6RU4tVVMiPldlIGZ1bmRlZCB0d28gT1BXIHN0dWRlbnRzIGluIHN1bW1lciBhbmQg
d2VyZSBydW5uaW5nIEdTb0MgYW5kIGhhZCBpbml0aWFsbHkgYXBwcm92ZWQgdGhyZWUgc3R1ZGVu
dHMgZm9yIDIwMTQuIFNvIHdlDQogc3RpbGwgaGF2ZSBvbmUgdW51c2VkLCB3aGljaCBkb2VzIG5v
dCBuZWVkIGZ1cnRoZXIgQUIgYXBwcm92YWwuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0
O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1h
bnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5
OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdl
OkVOLVVTIj5MYXJzIGFza2VkIHRoZSBxdWVzdGlvbiB3aGV0aGVyIHdlIGRvIGhhdmUgZW5vdWdo
IG1lbnRvcmluZyBjYXBhY2l0eSB0byBtYWtlIHRoaXMgd29ydGh3aGlsZSwgZ2l2ZW4gdGhhdCB0
aGUgcHJvZ3JhbQ0KIGNsYXNoZXMgd2l0aCB0aGUgY2xvc2luZyBvZiB0aGUgNC41IHJlbGVhc2Uu
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28t
YmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1i
aWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPktvbnJhZDog
T3JhY2xlIGhhcyBub25lPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5
OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdl
OkVOLVVTIj5KYW1lczogY291bGQgcHJvYmFibHkgYWNjb21tb2RhdGUgb25lPG86cD48L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZh
bWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5TaGVycnk6IEFNRCBjb3VsZCBt
ZW50b3Igb25lIHN0dWRlbnQgZm9yIGEgc3VpdGFibGVBUk12OCBwcm9qZWN0PG86cD48L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZh
bWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5MYXJzOiB3ZSBjYW4gd29yayBv
biBhIHByb2plY3QsIGJ1dCBIVyBhdmFpbGFiaWxpdHkgbmVlZHMgdG8gYmUgY29uc2lkZXJlZDxv
OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJp
ZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+TGFyczogYXNr
ZWQgd2hldGhlciBJbnRlbCBjb3VsZCBtZW50b3IgYW4gYXBwbGljYW50PzxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1p
bHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+RG9uOiBzYWlkIGhlIHdvdWxkIG5l
ZWQgdG8gaW52ZXN0aWdhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1p
bHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3Vh
Z2U6RU4tVVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBs
YW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsN
Cm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPlRo
ZSBhZ3JlZW1lbnQgdGhlbiBpcyB0aGF0IHdlIHdpbGwgam9pbiBPUFcgZm9yIHRoZSB3aW50ZXIg
cm91bmQgd2l0aCB0aGUgcHJldmlvdXNseSBhcHByb3ZlZCBhbmQgdW51c2VkIE9QVyBzbG90PG86
cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlk
aS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3Nw
YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm
b250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWls
eTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQu
MHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21z
by1hbnNpLWxhbmd1YWdlOkVOLVVTIj49IEV4dHJhIHRpZXIgb2YgbWVtYmVycyBmb3Igc21hbGwg
Y29tcGFuaWVzIChNaWtlIFdvc3RlcikgPTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+Rm9sbG93aW5nIHVwIGZyb20gdGhlIHByZXZpb3VzIG1vbnRocyBk
aXNjdXNzaW9uLCBNaWtlIHN0YXRlZDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250
LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1s
YW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxp
YnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1V
UyI+KiBNb3N0IGNvbGxhYm9yYXRpdmUgcHJvamVjdHMgd2FudCB0byBmYWNpbGl0YXRlIHRoZSBz
dXBwb3J0IG9mIHNtYWxsZXIgdmVuZG9ycyB0aGF0IGRvbuKAmXQgaGF2ZSB0aGUgZmluYW5jaWFs
IHJlc291cmNlcw0KIHRvIGpvaW4gb3RoZXJ3aXNlPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQu
MHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21z
by1hbnNpLWxhbmd1YWdlOkVOLVVTIj4qIFRoZSBjaGFsbGVuZ2UgaXMgdGhhdCB3ZSBuZWVkIHRv
IGRlZmluZSBhIG1lbWJlcnNoaXAgY2xhc3Mgd2l0aG91dCBnaXZpbmcgdW5kdWUgaW5mbHVlbmNl
IHRvIHRoZSBtZW1iZXJzIHBheWluZyBsZXNzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0
O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1h
bnNpLWxhbmd1YWdlOkVOLVVTIj4qIFRoZSBiYXNpYyBwcm9wb3NhbCBpcyBhIFNUQVJUVVAgY2xh
c3MgY2FwcGVkIGF0IDEwMCwxNTAsMjAwIG9yIDI1MCBlbXBsb3llZXM8bzpwPjwvbzpwPjwvc3Bh
bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv
bnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5
OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiogVGhlcmUgd291bGQgYmUgMSB2b3Rl
IGZvciBldmVyeSAxMCBzdGFydHVwIG1lbWJlcnMgd2l0aCBhdCBtb3N0IDMgdm90ZXM8bzpwPjwv
bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIg
c3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZv
bnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPiogV2Ugd291bGQgbmVl
ZCBhIGZvcm1hbCB2b3RpbmcgcHJvY2VzczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtm
b250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5z
aS1sYW5ndWFnZTpFTi1VUyI+KiBOb24tdm90aW5nIG9ic2VydmluZyBtZW1iZXJzIGNvdWxkIGJl
IGFsbG93ZWQuIFRoaXMgd291bGQgYmUgYW4gb3BlbiBxdWVzdGlvbiwgYnV0IG1vc3QgcHJvamVj
dHMgZG8gbm90IGFsbG93IGZvciBvYnNlcnZpbmcNCiBtZW1iZXJzIDxvOnA+PC9vOnA+PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6
Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBw
dDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28t
YW5zaS1sYW5ndWFnZTpFTi1VUyI+QnJvbWl1bSB3b3VsZCBuZWVkIFNUQVJUVVAgY2xhc3MgdG8g
Y29udGludWUgKG9uZSBhbmQgb25seSkgYW5kIElhbiBpbml0aWFsbHkgd291bGQgbW9zdCBsaWtl
bHkgYXV0b21hdGljYWxseSBlbGVjdGVkPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2Zv
bnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNp
LWxhbmd1YWdlOkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNh
bGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVO
LVVTIj5UaGUgZHJhZnQgcmVzb2x1dGlvbiB3b3VsZCBiZTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXpl
OjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJy
aTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0LjBwdDttc28tcGFnaW5hdGlvbjpub25l
O21zby1sYXlvdXQtZ3JpZC1hbGlnbjoNCm5vbmU7dGV4dC1hdXRvc3BhY2U6bm9uZSI+DQo8c3Bh
biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6DQpDYWxp
YnJpO21zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMi
PlJFU09MT1RJT046IFRoYXQgYSBuZXcgWGVuIFByb2plY3QgU1RBUlRVUCBtZW1iZXJzaGlwIGNs
YXNzIGJlIGNyZWF0ZWQgZm9yIGNvbXBhbmllcyB3aXRoIGxlc3MgdGhhbiAyNTAgY29uc29saWRh
dGVkIGVtcGxveWVlcyB3aXRoIGFuIGFubnVhbA0KIHBhcnRpY2lwYXRpb24gZmVlIG9mICQ1LDAw
MCBVU0QuIFNUQVJUVVAgYXBwbGljYW50cyB3aWxsIGJlIGFjY2VwdGVkIGZvciBtZW1iZXJzaGlw
IG9ubHkgdXBvbiBhcHByb3ZhbCBvZiB0aGUgQWR2aXNvcnkgQm9hcmQuIFRoZSBTVEFSVFVQIG1l
bWJlcnNoaXAgY2xhc3MgYmVuZWZpdHMgaW5jbHVkZSBlbGVjdGluZyAxIEFkdmlzb3J5IEJvYXJk
IHNlYXQgZm9yIGV2ZXJ5IDEwIFNUQVJUVVAgY2xhc3MgbWVtYmVycywgbGltaXRlZCB0byBhdCBt
b3N0DQogMyByZXByZXNlbnRhdGl2ZXMsIGFuZCBhbnkgb3RoZXIgYmVuZWZpdHMgdGhlIEFkdmlz
b3J5IEJvYXJkIG1heSBkZXRlcm1pbmUsIHdpdGggYXBwcm92YWwgZnJvbSBUaGUgTGludXggRm91
bmRhdGlvbi4gVGhlIEFkdmlzb3J5IEJvYXJkIGFza3MgVGhlIExpbnV4IEZvdW5kYXRpb24gdG8g
dXBkYXRlIHRoZSBtZW1iZXJzaGlwIGFwcGxpY2F0aW9uIHRvIHJlZmxlY3QgdGhlIG5ldyBTVEFS
VFVQIG1lbWJlcnNoaXAgY2xhc3MuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQt
ZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxh
bmd1YWdlOkVOLVVTIj5MYXJzOiBhcyB3ZSBkbyBub3QgaGF2ZSBhIHF1b3J1bSwgSSBzdWdnZXN0
IHdlIGhhdmUgYW4gZW1haWwgdm90ZS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9u
dC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2kt
bGFuZ3VhZ2U6RU4tVVMiPkxhcnMgYXNrZWQgUGhpbGlwcGUgd2hldGhlciBoZSBjb3VsZCBmb2xs
b3cgdXAgYW55IGNvbmNlcm5zIGFib3V0IHRoZSBzaXplIG9mIHRoZSBib2FyZCwgYmVmb3JlIHRo
ZSB2b3RlPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g
bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7
DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4m
bmJzcDs8L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi
IHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1m
b250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5BY3Rpb24gUGhpbGlw
cGU6IGZvbGxvdyB1cCBvbiBhbnkgY29uY2VybnMgQVJNIG1heSBoYXZlIGFuZCByZXBvcnQgYmFj
ayBpZiB0aGVyZSBpcyBhbiBpc3N1ZTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250
LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1s
YW5ndWFnZTpFTi1VUyI+QWN0aW9uIExhcnM6IG9yZ2FuaXplIGVtYWlsIHZvdGUgb24gcmVzb2x1
dGlvbjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh
bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0K
bXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5i
c3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBz
dHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9u
dC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+PSBVc2VyIFN1bW1pdCAv
IERldmVsb3BlciBTdW1taXRzICZuYnNwOyhMYXJzKT08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox
NC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7
bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPlRoZSBzcGxpdCBvZiBVc2VyIFN1bW1pdCAvIERldmVs
b3BlciBTdW1taXRzIGlzIG5vdCB3b3JraW5nLiBTbyBmYXIgd2Ugb25seSBtYW5hZ2VkIHRvIHNp
Z24gdXAgMzAgdXNlcnMgZm9yIHVzZXIgc3VtbWl0DQogYW5kIG5vIHNwb25zb3JzIGFwYXJ0IGZy
b20gQ2l0cml4LiBJbiBjb250cmFzdCwgd2UgaGFkIDkwIHBlb3BsZSBhdCBEZXZlbG9wZXIgU3Vt
bWl0ICh0aGUgeWVhciBiZWZvcmUgd2UgaGFkIDk1KSwgYnV0IHdlIGRpZCBoYXZlICQyOEsgaW5j
b21lIGZyb20gc3BvbnNvcnNoaXAuIEFzIHN1Y2gsIHRoZSBjb3N0IGZvciB0aGUgcHJvamVjdCBm
b3IgdGhlIGV2ZW50IHdhcyBsb3dlciB0aGFuIGV4cGVjdGVkIChzb21ld2hlcmUgYmV0d2VlbiAk
Ny0kOEsNCiDigJMgSSBkb27igJl0IGhhdmUgdGhlIGZpbmFsIGZpZ3VyZXMpLiBJbiAyMDExIGFu
ZCAyMDEyLCB3aGVuIHdlIGRpZCBub3QgaGF2ZSBzZXBhcmF0ZSBldmVudHMsIHdlIGhhZCBhcm91
bmQgMTMwIGF0dGVuZGVlcy4gSSBoYXZlIG5vIHJlYWwgdmlzaWJpbGl0eSBvbiBudW1iZXJzIHBy
aW9yIHRvIDIwMTEgYXMgdGhpcyBpcyB0aGUgeWVhciBJIHN0YXJ0ZWQgYW5kIHJlY29yZHMgd2Vy
ZSBub3Qga2VwdC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2Fs
aWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4t
VVMiPiZuYnNwOzwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1i
aWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPkkgYW0gcHJv
cG9zaW5nIHRoYXQgZ29pbmcgZm9yd2FyZCB3ZSZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXpl
OjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJy
aTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+KiBFaXRoZXIgZG8gbm90IGRvIHVzZXIgc3VtbWl0
cyBhdCBhbGw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh
biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJy
aTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMi
PiogRXh0ZW5kIGRldmVsb3BlciBzdW1taXRzIGZyb20gYSAyIGRheSB0byBhIDMgZGF5IGV2ZW50
IGFuZCB0YXJnZXQgZGV2ZWxvcGVycyBhbmQgdXNlcnMg4oCTIGluIGZhY3Qgd2UgYWxyZWFkeSBo
YXZlIGENCiAyLjUgZGF5IGV2ZW50IChpbmNsdWRpbmcgYm9hcmQgbWVldGluZ3MpPG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0
eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250
LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4qKiBXZSBjb3VsZCBmb2xs
b3cgYSBzdHJ1Y3R1cmUgd2hlcmUgd2Ugc3RhcnQgb3IgZW5kIHdpdGggZGV2ZWxvcGVyIG9ubHkg
Y29udGVudCAob3IgV29ya2luZyBHcm91cCwgQ29tbXVuaXR5IE9yZ2FuaXNlZA0KIG1pbmkgc3Vt
bWl0cywgQm9hcmQsIERldmVsb3BlciBtZWV0aW5ncyk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox
NC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGlicmk7
bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPioqIEFuZCBvdGhlcndpc2UgaGF2ZSBvdmVybGFwcGlu
ZyB1c2VyIGFuZCBkZXZlbG9wZXIgdHJhY2tzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0
O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1h
bnNpLWxhbmd1YWdlOkVOLVVTIj4qKiBXZSB3b3VsZCBuZWVkIHRvIHJlcG9zaXRpb24gaXMgYXMg
WGVuIFByb2plY3QgU3VtbWl0PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFt
aWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1
YWdlOkVOLVVTIj4qKiBUaGlzIHNob3VsZCBtYWtlIHRoZSBldmVudHMgbW9yZSBjb3N0IGVmZmVj
dGl2ZSBhbmQgc3BvbnNvcnNoaXAgZWFzaWVyIHRvIGFjaGlldmUgYW5kIG1vcmUgYXR0cmFjdGl2
ZTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNv
LWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+KiBXZSBh
bHNvIGhhdmUgYSB0aW1pbmcgaXNzdWUgOiBieSBhbHRlcm5hdGluZyBiZXR3ZWVuIFVTIGFuZCBF
VSB3ZSBlbmQgdXAgd2l0aCBhIDkgbW9udGhzIOKAkyAxNSBtb250aHMgZ2FwIHdoaWNoIG1ha2Vz
DQogZXZlcnkgb3RoZXIgeWVhciBiaWdnZXIgdGhhbiB0aGUgcHJldmlvdXMgeWVhci4gQXQgbGVh
c3Qgd2hlbiBpdCBjb21lcyB0byBjb250ZW50IHN1Ym1pc3Npb25zLjxvOnA+PC9vOnA+PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6
Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+KiBJdCB3b3VsZCBhbHNvIGJlIGludGVy
ZXN0aW5nIHRvIGZpbmQgb3V0IGhvdyBLVk0gRm9ydW0gaXMgZG9pbmcg4oCTIEkgaGVhcmQgcnVt
b3VycyB0aGF0IEtWTSBGb3J1bSBoYXMgc2ltaWxhciBpc3N1ZXMNCiB0byBvdXIgZXZlbnRzIOKA
kyBidXQgYW0gbm90IDEwMCUgc3VyZS4gSXQgaXMgYWxzbyBub3QgY2xlYXIgdG8gbWUgd2hldGhl
ciBLVk0gRm9ydW0gaXMgbm93IGFsd2F5cyBpbiB0aGUgRVUgKGl0IHVzZWQgdG8gYWx0ZXJuYXRl
LCBidXQgaXQgaGFzIGJlZW4gaW4gdGhlIEVVIGluIHR3byBzdWJzZXF1ZW50IHllYXJzKTxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGkt
Zm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+KiBPdGhlciB0aGlu
Z3MgdG8gY29uc2lkZXI6IHdoZW4gd2Ugd2VyZSBjby1sb2NhdGVkIHdpdGggTGludXggUGx1bWJl
cnMgaW4gMjAxMiwgd2UgYXR0cmFjdGVkIG1vcmUgZGV2ZWxvcGVycywgYnV0IGF0DQogdGhlIHNh
bWUgdGltZSB0aGlzIGNhdXNlZCBhIGxvdCBvZiBzdHJlc3MgZm9yIHBlb3BsZSBhdHRlbmRpbmcg
Ym90aC4gV2UgYXJlIG5vdyBvdXQgb2Ygc3luYyB3aXRoIExpbnV4IFBsdW1iZXJzPG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0
eWxlPSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250
LWZhbWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4qIFdlIGNvdWxkIHRyeSBh
bmQgcmUtc2V0IGFuZCBob2xkIHRoZSBldmVudCBpbiBTZWF0dGxlIG5leHQgeWVhciBvciBzdGlj
ayB3aXRoIHdoYXQgdGhlIGNvbW11bml0eSBhc2tlZCBmb3IgYW5kIGNvbG9jYXRlDQogd2l0aCB0
aGUgRVUgKHdoaWNoIGlzIGVpdGhlciBCdWRhcGVzdCBvciBJc3RhbmJ1bCDigJMgbm90IHN1cmUg
dGhpcyBoYXMgYmVlbiBkZWNpZGVkKS4gQXMgdGhlIHByb2plY3QgaXMgdW5kZXJ3cml0aW5nIHJp
c2sgYW5kIGNvc3QsIEkgdGhpbmsgd2UgY2FuIGdldCBhd2F5IHdpdGggZWl0aGVyIHdpdGhvdXQg
Y2F1c2luZyBhbiB1cHJvYXIgaW4gdGhlIGNvbW11bml0eTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXpl
OjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJy
aTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250
LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYW5zaS1s
YW5ndWFnZTpFTi1VUyI+RG9uOiBzdWdnZXN0ZWQgdGhhdCBhIHByb3Bvc2FsIGlzIG1hZGUgb24g
dGhlIG1haWxpbmcgbGlzdCBhbmQgdGhhdCBMYXJzIHJlcG9ydHMgYmFjaw0KPG86cD48L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTQuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmk7DQptc28tYmlkaS1mb250LWZh
bWlseTpDYWxpYnJpO21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj5DaHJpczogdGhpbmtzIHRoYXQg
Y29tYmluaW5nIGV2ZW50cyBpcyBhIGdvb2QgdGhpbmcuDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6
ZToxNC4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCm1zby1iaWRpLWZvbnQtZmFtaWx5OkNhbGli
cmk7bXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVMiPk1hdHQgV2lsc29uIHJhaXNlZCB0aGUgcG9pbnQg
b24gZW1haWwgdGhhdCBoZSB3b3VsZCBwcmVmZXIgaWYgTGludXggUGx1bWJlcnMgd2FzIG5vdCBh
dCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBYZW4gUHJvamVjdA0KIHN1bW1pdDxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjE0LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1p
bHk6Q2FsaWJyaTttc28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+Jm5ic3A7PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0
LjBwdDtmb250LWZhbWlseTpDYWxpYnJpOw0KbXNvLWJpZGktZm9udC1mYW1pbHk6Q2FsaWJyaTtt
c28tYW5zaS1sYW5ndWFnZTpFTi1VUyI+QWN0aW9uIExhcnM6IG1ha2UgcHJvcG9zYWwgb24gdGhl
IGxpc3Qg4oCTIHJlcG9ydCBiYWNrIHRvIG5leHQgbWVldGluZzxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjE0LjBwdDtmb250LWZhbWls
eTpDYWxpYnJpO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5Og0KJnF1b3Q777yt77yzIOaYjuacnSZx
dW90Ozttc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7bXNvLWJpZGktZm9udC1m
YW1pbHk6Q2FsaWJyaTsNCm1zby1hbnNpLWxhbmd1YWdlOkVOLVVTO21zby1mYXJlYXN0LWxhbmd1
YWdlOkVOLVVTO21zby1iaWRpLWxhbmd1YWdlOkFSLVNBIj5BY3Rpb24gTWlrZTogY29ubmVjdA0K
IExhcnMgdG8gS1ZNIEZvcnVtIC8gRWxlbmEgTGludXggUGx1bWJlcnM8L3NwYW4+PCEtLUVuZEZy
YWdtZW50LS0+PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo=

--_000_D040C869111C5larskurthcitrixcom_--


--===============4824613994945341744==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Advisory-board mailing list
Advisory-board@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board
Archives: http://lists.xenproject.org/archives/html/advisory-board/ - login/pass "member"/"S3gurtasunG4be!"

--===============4824613994945341744==--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:32 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N6-0005Fa-8R; Mon, 22 Sep 2014 11:01:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1N4-0005FV-GT
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:31 +0000
Received: from [85.158.137.68:6408] by server-8.bemta-3.messagelabs.com id
	3F/ED-31195-98100245; Mon, 22 Sep 2014 11:01:29 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!3
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5536 invoked from network); 22 Sep 2014 11:01:28 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:28 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799142"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-HJ;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:03 +0100
Message-ID: <1411383603-9316-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Length: 235949
X-DLP: MIA2
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

WGVuRGlzayBpbnRlcmNlcHRzIGFuZCB0cmFuc2xhdGVzIElPQ1RMX1NUT1JBR0VfTUFOQUdFX0RB
VEFfU0VUX0FUVFJJQlVURVMKaW50byBTQ1NJT1BfVU5NQVAgU1JCcy4gU3RvcnBvcnQgd2lsbCBw
YXNzIG9uIHRoZXNlIFNDU0lPUF9VTk1BUCByZXF1ZXN0cwp0byBYZW5WYmQsIHdoaWNoIHdpbGwg
Y3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBCTEtJRl9PUF9ESVNDQVJEIHJlcXVlc3RzLgpYZW5EaXNr
IGlzIG9ubHkgbmVjY2Vzc2FyeSBiZWNhdXNlIFN0b3Jwb3J0IGRvZXMgbm90IGRvIHRoZSB0cmFu
c2xhdGlvbgp0byBTQ1NJT1BfVU5NQVAgU1JCcy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gc21pdGgg
PG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBidWlsZC5weSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogc3JjL3hlbmRpc2svYXNzZXJ0LmggICAgICAgICAgICAgICAgfCAg
MjIwICsrKysKIHNyYy94ZW5kaXNrL2RlYnVnLmggICAgICAgICAgICAgICAgIHwgICA5NCArKwog
c3JjL3hlbmRpc2svZHJpdmVyLmMgICAgICAgICAgICAgICAgfCAgMjAzICsrKysKIHNyYy94ZW5k
aXNrL2RyaXZlci5oICAgICAgICAgICAgICAgIHwgICA2OCArKwogc3JjL3hlbmRpc2svZmRvLmMg
ICAgICAgICAgICAgICAgICAgfCAxODYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
c3JjL3hlbmRpc2svZmRvLmggICAgICAgICAgICAgICAgICAgfCAgIDc4ICsrCiBzcmMveGVuZGlz
ay9tdXRleC5oICAgICAgICAgICAgICAgICB8ICAxMTMgKysKIHNyYy94ZW5kaXNrL3Bkby5jICAg
ICAgICAgICAgICAgICAgIHwgMjEyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwogc3JjL3hlbmRpc2svcGRvLmggICAgICAgICAgICAgICAgICAgfCAgIDkwICsrCiBzcmMveGVu
ZGlzay90aHJlYWQuYyAgICAgICAgICAgICAgICB8ICAyMjUgKysrKwogc3JjL3hlbmRpc2svdGhy
ZWFkLmggICAgICAgICAgICAgICAgfCAgIDc0ICsrCiBzcmMveGVuZGlzay90eXBlcy5oICAgICAg
ICAgICAgICAgICB8ICAgNTMgKwogc3JjL3hlbmRpc2svdXRpbC5oICAgICAgICAgICAgICAgICAg
fCAgMjIyICsrKysKIHNyYy94ZW5kaXNrL3hlbmRpc2sucmMgICAgICAgICAgICAgIHwgICA1NiAr
CiBzcmMveGVudmJkLmluZiAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwogdnMyMDEyL3Bh
Y2thZ2UvcGFja2FnZS52Y3hwcm9qICAgICAgfCAgICA1ICstCiB2czIwMTIveGVuZGlzay94ZW5k
aXNrLnZjeHByb2ogICAgICB8ICAgODQgKysKIHZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJv
ai51c2VyIHwgICAgOCArCiB2czIwMTIveGVudmJkLnNsbiAgICAgICAgICAgICAgICAgICB8ICAg
MzAgKy0KIHZzMjAxMy9wYWNrYWdlL3BhY2thZ2UudmN4cHJvaiAgICAgIHwgICAgNSArLQogdnMy
MDEzL3hlbmRpc2sveGVuZGlzay51c2VyICAgICAgICAgfCAgICA4ICsKIHZzMjAxMy94ZW5kaXNr
L3hlbmRpc2sudmN4cHJvaiAgICAgIHwgIDExMiArKwogdnMyMDEzL3hlbnZiZC5zbG4gICAgICAg
ICAgICAgICAgICAgfCAgIDI3ICsKIDI0IGZpbGVzIGNoYW5nZWQsIDU3ODAgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9hc3NlcnQu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL2RlYnVnLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBzcmMveGVuZGlzay9kcml2ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNr
L2RyaXZlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmRpc2svZmRvLmMKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBzcmMveGVuZGlzay9mZG8uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5k
aXNrL211dGV4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9wZG8uYwogY3JlYXRl
IG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3Bkby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hl
bmRpc2svdGhyZWFkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay90aHJlYWQuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBzcmMveGVuZGlzay91dGlsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay94ZW5k
aXNrLnJjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9q
CiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qLnVzZXIK
IGNyZWF0ZSBtb2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnVzZXIKIGNyZWF0ZSBt
b2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKCmRpZmYgLS1naXQgYS9i
dWlsZC5weSBiL2J1aWxkLnB5CmluZGV4IDI2MjYxYWQuLjNhNzFkMGMgMTAwNjQ0Ci0tLSBhL2J1
aWxkLnB5CisrKyBiL2J1aWxkLnB5CkBAIC0zNjgsNiArMzY4LDcgQEAgaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKIAogICAgIGlmIGxlbihzeXMuYXJndikgPD0gMiBvciBzZHZbc3lzLmFyZ3Zb
Ml1dOgogICAgICAgICBydW5fc2R2KCd4ZW5jcnNoJywgZHJpdmVyLCB2cykKKyAgICAgICAgcnVu
X3NkdigneGVuZGlzaycsIGRyaXZlciwgdnMpCiAgICAgICAgIHJ1bl9zZHYoJ3hlbnZiZCcsIGRy
aXZlciwgdnMpCiAKICAgICBhcmNoaXZlKGRyaXZlciArICdcXHNvdXJjZS50Z3onLCBtYW5pZmVz
dCgpLnNwbGl0bGluZXMoKSwgdGd6PVRydWUpCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9hc3Nl
cnQuaCBiL3NyYy94ZW5kaXNrL2Fzc2VydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNkNTcxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay9hc3NlcnQuaApA
QCAtMCwwICsxLDIyMCBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVm
IF9YRU5ESVNLX0FTU0VSVF9ICisjZGVmaW5lIF9YRU5ESVNLX0FTU0VSVF9ICisKKyNpbmNsdWRl
IDxudGRkay5oPgorCisjaW5jbHVkZSAiZGVidWcuaCIKKworc3RhdGljIEZPUkNFSU5MSU5FIFZP
SUQKK19fQnVnQ2hlY2soCisgICAgX19pbiAgVUxPTkcgICAgICAgQ29kZSwKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXIxLAorICAgIF9faW5fb3B0IFVMT05HX1BUUiAgIFBhcmFt
ZXRlcjIsCisgICAgX19pbl9vcHQgVUxPTkdfUFRSICAgUGFyYW1ldGVyMywKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXI0CisgICAgKQoreworI3ByYWdtYSBwcmVmYXN0KHN1cHBy
ZXNzOjI4MTU5KQorICAgIEtlQnVnQ2hlY2tFeChDb2RlLAorICAgICAgICAgICAgICAgICBQYXJh
bWV0ZXIxLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXIyLAorICAgICAgICAgICAgICAgICBQ
YXJhbWV0ZXIzLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXI0KTsKK30KKworI2RlZmluZSBB
U1NFUlRJT05fRkFJTFVSRSAgIDB4MDAwMERFQUQKKworCisjZGVmaW5lIEJVRyhfVEVYVCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIGNvbnN0IENIQVIgICpfVGV4dCA9IChfVEVYVCk7ICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBjb25zdCBDSEFSICAqX0ZpbGUgPSBfX0ZJTEVfXzsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgVUxPTkcgICAgICAgX0xpbmUgPSBfX0xJTkVf
XzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFcnJvcigi
QlVHOiAiIF9URVhUICJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgX19CdWdDaGVjayhBU1NFUlRJT05fRkFJTFVSRSwgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfVGV4dCwgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX0ZpbGUsICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9M
aW5lLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgMCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUg
KEZBTFNFKQorCisjZGVmaW5lIEJVR19NU0coX1RFWFQxLCBfVEVYVDIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnN0IENIQVIgICpf
VGV4dDEgPSAoX1RFWFQxKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb25z
dCBDSEFSICAqX1RleHQyID0gKF9URVhUMik7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgY29uc3QgQ0hBUiAgKl9GaWxlID0gX19GSUxFX187ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIFVMT05HICAgICAgIF9MaW5lID0gX19MSU5FX187ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRXJyb3IoIkJVRzogIiBfVEVYVDEg
IiAlc1xuIiwgX1RleHQyKTsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fQnVnQ2hlY2so
QVNTRVJUSU9OX0ZBSUxVUkUsICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgIChVTE9OR19QVFIpX1RleHQxLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9GaWxlLCAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfTGluZSwgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX1RleHQy
KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2Rl
ZmluZSBCVUdfT04oX0VYUCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChfRVhQKSBCVUcoI19FWFApCisKKyNkZWZpbmUgQlVHX09OX01TRyhfRVhQLCBfVEVYVCkgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoX0VYUCkgQlVHX01TRygjX0VYUCwgX1RFWFQpCisK
KyNpZiBEQkcKKworI2RlZmluZSBfX05UX0FTU0VSVChfRVhQKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCghKF9FWFApKSA/ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChFcnJvcigiQVNTRVJUSU9O
IEZBSUxFRDogIiAjX0VYUCAiXG4iKSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgX19hbm5v
dGF0aW9uKEwiRGVidWciLCBMIkFzc2VydEZhaWwiLCBMI19FWFApLCAgICAgICAgIFwKKyAgICAg
ICAgIERiZ1JhaXNlQXNzZXJ0aW9uRmFpbHVyZSgpLCBGQUxTRSkgOiAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIFRSVUUpCisKKyNkZWZpbmUgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhU
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoIShfRVhQKSkgPyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoRXJyb3Io
IkFTU0VSVElPTiBGQUlMRUQ6ICIgI19FWFAgIiAiICNfVEVYVCAiXG4iKSwgICAgIFwKKyAgICAg
ICAgIF9fYW5ub3RhdGlvbihMIkRlYnVnIiwgTCJBc3NlcnRGYWlsIiwgTCNfRVhQKSwgICAgICAg
ICBcCisgICAgICAgICBEYmdSYWlzZUFzc2VydGlvbkZhaWx1cmUoKSwgRkFMU0UpIDogICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBUUlVFKQorCisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAg
ICAgICAgICAgICBfX05UX0FTU0VSVChfRVhQKQorI2RlZmluZSBfX0FTU0VSVF9NU0coX0VYUCwg
X1RFWFQpICAgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhUKQorCisjZWxzZSAgIC8vIERCRwor
CisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAgICAgICAgICAgICBCVUdfT04oIShfRVhQKSkKKyNk
ZWZpbmUgX19BU1NFUlRfTVNHKF9FWFAsIF9URVhUKSAgIEJVR19PTl9NU0coIShfRVhQKSwgX1RF
WFQpCisKKyNlbmRpZiAgLy8gREJHCisKKyN1bmRlZiAgQVNTRVJUCisKKyNkZWZpbmUgQVNTRVJU
KF9FWFApICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgX19BU1NFUlQoX0VYUCk7ICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIF9fYW5hbHlzaXNfYXNzdW1lKF9FWFApOyAgICBcCisgICAgICAgIH0gd2hp
bGUgKEZBTFNFKQorCisjZGVmaW5lIEFTU0VSVF9NU0coX0VYUCwgX1RFWFQpICAgICAgICAgXAor
ICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9f
QVNTRVJUX01TRyhfRVhQLCBfVEVYVCk7ICBcCisgICAgICAgICAgICBfX2FuYWx5c2lzX2Fzc3Vt
ZShfRVhQKTsgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmluZSBBU1NFUlQz
VShfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBVTE9OR0xP
TkcgICBfTHZhbCA9IChVTE9OR0xPTkcpKF9YKTsgICAgXAorICAgICAgICAgICAgVUxPTkdMT05H
ICAgX1J2YWwgPSAoVUxPTkdMT05HKShfWSk7ICAgIFwKKyAgICAgICAgICAgIGlmICghKF9MdmFs
IF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgRXJyb3IoIiVz
ID0gJWxsdVxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVycm9yKCIlcyA9
ICVsbHVcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NFUlQoX1ggX09Q
IF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmlu
ZSBBU1NFUlQzUyhfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBMT05HTE9ORyAgICBfTHZhbCA9IChMT05HTE9ORykoX1gpOyAgICAgXAorICAgICAgICAgICAg
TE9OR0xPTkcgICAgX1J2YWwgPSAoTE9OR0xPTkcpKF9ZKTsgICAgIFwKKyAgICAgICAgICAgIGlm
ICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
RXJyb3IoIiVzID0gJWxsZFxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVy
cm9yKCIlcyA9ICVsbGRcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NF
UlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkK
KworI2RlZmluZSBBU1NFUlQzUChfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBQVk9JRCAgIF9MdmFsID0gKFBWT0lEKShfWCk7ICAgICAgICAgICAgXAorICAg
ICAgICAgICAgUFZPSUQgICBfUnZhbCA9IChQVk9JRCkoX1kpOyAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGlmICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgRXJyb3IoIiVzID0gJXBcbiIsICNfWCwgX0x2YWwpOyAgICAgXAorICAgICAgICAg
ICAgICAgIEVycm9yKCIlcyA9ICVwXG4iLCAjX1ksIF9SdmFsKTsgICAgIFwKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxl
IChGQUxTRSkKKworI2RlZmluZSBBU1NFUlRSRUZDT1VOVChfWCwgX09QLCBfWSwgX1opICAgICAg
ICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMT05HICAgIF9MID0gKExPTkcpKF9YKTsgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTE9ORyAgICBfUiA9IChMT05HKShfWSk7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIGlmICghKF9MIF9PUCBfUikpIHsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWCwgX0wpOyBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWSwgX1IpOyBc
CisgICAgICAgICAgICAgICAgQVNTRVJUX01TRyhfWCBfT1AgX1ksIChfWikpOyAgICAgICAgXAor
ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSB3aGlsZSAoRkFMU0UpCisKKyNpZm5kZWYgVEVTVF9NRU1PUlkKKyNkZWZpbmUgVEVT
VF9NRU1PUlkgREJHCisjZW5kaWYKKworI2lmIFRFU1RfTUVNT1JZCisKK19fY2hlY2tSZXR1cm4K
K3N0YXRpYyBfX2lubGluZSBCT09MRUFOCitfSXNaZXJvTWVtb3J5KAorICAgIF9faW4gY29uc3Qg
UENIQVIgQ2FsbGVyLAorICAgIF9faW4gY29uc3QgUENIQVIgTmFtZSwKKyAgICBfX2luIFBWT0lE
ICAgICAgIEJ1ZmZlciwKKyAgICBfX2luIFVMT05HICAgICAgIExlbmd0aAorICAgICkKK3sKKyAg
ICBVTE9ORyAgICAgICAgICAgT2Zmc2V0OworCisgICAgT2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAo
T2Zmc2V0IDwgTGVuZ3RoKSB7CisgICAgICAgIGlmICgqKChQVUNIQVIpQnVmZmVyICsgT2Zmc2V0
KSAhPSAwKSB7CisgICAgICAgICAgICBFcnJvcigiJXM6IG5vbi16ZXJvIGJ5dGUgaW4gJXMgKDB4
JXArMHgleClcbiIsIENhbGxlciwgTmFtZSwgQnVmZmVyLCBPZmZzZXQpOworICAgICAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIE9mZnNldCsrOworICAgIH0KKworICAg
IHJldHVybiBUUlVFOworfQorCisjZGVmaW5lIElzWmVyb01lbW9yeShfQnVmZmVyLCBfTGVuZ3Ro
KSBcCisgICAgICAgIF9Jc1plcm9NZW1vcnkoX19GVU5DVElPTl9fLCAjX0J1ZmZlciwgKF9CdWZm
ZXIpLCAoX0xlbmd0aCkpCisKKyNlbHNlICAgLy8gVEVTVF9NRU1PUlkKKworI2RlZmluZSBJc1pl
cm9NZW1vcnkoX0J1ZmZlciwgX0xlbmd0aCkgIFRSVUUKKworI2VuZGlmICAvLyBURVNUX01FTU9S
WQorCisjZGVmaW5lIElNUExZKF9YLCBfWSkgICAoIShfWCkgfHwgKF9ZKSkKKyNkZWZpbmUgRVFV
SVYoX1gsIF9ZKSAgIChJTVBMWSgoX1gpLCAoX1kpKSAmJiBJTVBMWSgoX1kpLCAoX1gpKSkKKwor
I2VuZGlmICAvLyBfWEVORElTS19BU1NFUlRfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9k
ZWJ1Zy5oIGIvc3JjL3hlbmRpc2svZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mNTkyZjg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZGVidWcuaApA
QCAtMCwwICsxLDk0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpZm5kZWYg
X0RFQlVHX0gKKyNkZWZpbmUgX0RFQlVHX0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVk
ZSA8c3RkYXJnLmg+CisKKyNpZmRlZiAgX1NEVl8KKyNkZWZpbmUgX19NT0RVTEVfXyAiIgorI2Vu
ZGlmCisKKy8vIERFQlVHX0ZJTFRFUl9NQVNLcworLy8gU2V0IHRoZXNlIHRvIHNlZSByZWxldmFu
dCBvdXRwdXQKKy8vIEVSUk9SICAgICAgICAweDAwMDAwMDAxCisvLyBXQVJOSU5HICAgICAgMHgw
MDAwMDAwMgorLy8gVFJBQ0UgICAgICAgIDB4MDAwMDAwMDQKKy8vIElORk8gICAgICAgICAweDAw
MDAwMDA4CisKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgLy8gY29uZGl0aW9uYWwg
ZXhwcmVzc2lvbiBpcyBjb25zdGFudAorCisvLworLy8gRGVidWcgT3V0cHV0IGFuZCBMb2dnaW5n
CisvLworc3RhdGljIF9faW5saW5lIFZPSUQKK19fRGVidWdNZXNzYWdlKAorICAgIF9faW4gICAg
VUxPTkcgICAgICAgTGV2ZWwsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIg
ICpQcmVmaXgsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIgICpGb3JtYXQs
CisgICAgLi4uCisgICAgKQoreworICAgIHZhX2xpc3QgICAgICAgICBBcmd1bWVudHM7CisKKyAg
ICB2YV9zdGFydChBcmd1bWVudHMsIEZvcm1hdCk7CisKKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVz
czo2MDAxKSAvLyBVc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeQorICAgIHZEYmdQcmludEV4V2l0
aFByZWZpeChQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERQRkxUUl9JSFZEUklW
RVJfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cyk7
CisgICAgdmFfZW5kKEFyZ3VtZW50cyk7Cit9CisKKyNkZWZpbmUgRXJyb3IoLi4uKSAgXAorICAg
ICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfRVJST1JfTEVWRUwsIF9fTU9EVUxFX18gInwiIF9f
RlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIFdhcm5pbmcoLi4uKSAgXAor
ICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfV0FSTklOR19MRVZFTCwgX19NT0RVTEVfXyAi
fCIgX19GVU5DVElPTl9fICI6IiwgX19WQV9BUkdTX18pCisKKyNpZiBEQkcKKyNkZWZpbmUgVHJh
Y2UoLi4uKSAgXAorICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfVFJBQ0VfTEVWRUwsIF9f
TU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorI2Vsc2UgICAvLyBE
QkcKKyNkZWZpbmUgVHJhY2UoLi4uKSBcCisgICAgICAgIChWT0lEKShfX1ZBX0FSR1NfXykKKyNl
bmRpZiAgLy8gREJHCisKKyNkZWZpbmUgVmVyYm9zZSguLi4pIFwKKyAgICAgICAgX19EZWJ1Z01l
c3NhZ2UoRFBGTFRSX0lORk9fTEVWRUwsIF9fTU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIs
IF9fVkFfQVJHU19fKQorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKKyNlbmRpZiAgLy8gX0RFQlVH
X0gKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5jIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzZmM2MQotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5jCkBAIC0wLDAgKzEsMjAzIEBACisvKiBDb3B5
cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAor
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
CisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAK
KyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAor
ICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgImRy
aXZlci5oIgorI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUg
ImFzc2VydC5oIgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworZXh0ZXJuIFBVTE9ORyAgICAgICBJ
bml0U2FmZUJvb3RNb2RlOworCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19EUklWRVIgeworICAg
IFBEUklWRVJfT0JKRUNUICAgICAgICAgICAgICBEcml2ZXJPYmplY3Q7Cit9IFhFTkRJU0tfRFJJ
VkVSLCAqUFhFTkRJU0tfRFJJVkVSOworCitzdGF0aWMgWEVORElTS19EUklWRVIgICBEcml2ZXI7
CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0RyaXZlclNldERyaXZlck9iamVjdCgKKyAg
ICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVjdAorICAgICkKK3sKKyAgICBEcml2ZXIu
RHJpdmVyT2JqZWN0ID0gRHJpdmVyT2JqZWN0OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUERS
SVZFUl9PQkpFQ1QKK19fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZPSUQKKyAgICApCit7
CisgICAgcmV0dXJuIERyaXZlci5Ecml2ZXJPYmplY3Q7Cit9CisKK1BEUklWRVJfT0JKRUNUCitE
cml2ZXJHZXREcml2ZXJPYmplY3QoCisgICAgVk9JRAorICAgICkKK3sKKyAgICByZXR1cm4gX19E
cml2ZXJHZXREcml2ZXJPYmplY3QoKTsKK30KKworRFJJVkVSX1VOTE9BRCAgIERyaXZlclVubG9h
ZDsKKworVk9JRAorRHJpdmVyVW5sb2FkKAorICAgIElOICBQRFJJVkVSX09CSkVDVCAgRHJpdmVy
T2JqZWN0CisgICAgKQoreworICAgIEFTU0VSVDNQKERyaXZlck9iamVjdCwgPT0sIF9fRHJpdmVy
R2V0RHJpdmVyT2JqZWN0KCkpOworCisgICAgVHJhY2UoIj09PT0+XG4iKTsKKworICAgIF9fRHJp
dmVyU2V0RHJpdmVyT2JqZWN0KE5VTEwpOworCisgICAgQVNTRVJUKElzWmVyb01lbW9yeSgmRHJp
dmVyLCBzaXplb2YgKFhFTkRJU0tfRFJJVkVSKSkpOworCisgICAgVHJhY2UoIjw9PT09XG4iKTsK
K30KKworRFJJVkVSX0FERF9ERVZJQ0UgICBBZGREZXZpY2U7CisKK05UU1RBVFVTCisjcHJhZ21h
IHByZWZhc3Qoc3VwcHJlc3M6MjgxNTIpIC8vIERvZXMgbm90IGNsZWFyIERPX0RFVklDRV9JTklU
SUFMSVpJTkcKK0FkZERldmljZSgKKyAgICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVj
dCwKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAgKQor
eworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1AoRHJpdmVy
T2JqZWN0LCA9PSwgX19Ecml2ZXJHZXREcml2ZXJPYmplY3QoKSk7CisKKyAgICBzdGF0dXMgPSBG
ZG9DcmVhdGUoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwor
CitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworRFJJVkVSX0RJU1BBVENIIERpc3BhdGNoOworCitOVFNUQVRVUyAK
K0Rpc3BhdGNoKAorICAgIElOIFBERVZJQ0VfT0JKRUNUICAgRGV2aWNlT2JqZWN0LAorICAgIElO
IFBJUlAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAg
RHg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBEeCA9IChQWEVORElT
S19EWClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzUChEeC0+RGV2
aWNlT2JqZWN0LCA9PSwgRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3Rh
dGUgPT0gRGVsZXRlZCkgeworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfTk9fU1VDSF9ERVZJQ0U7
CisKKyAgICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKyAgICAgICAgZ290byBkb25lOwor
ICAgIH0KKworICAgIHN0YXR1cyA9IFNUQVRVU19OT1RfU1VQUE9SVEVEOworICAgIHN3aXRjaCAo
RHgtPlR5cGUpIHsKKyAgICBjYXNlIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1Q6IHsKKyAgICAgICAg
UFhFTkRJU0tfUERPICAgIFBkbyA9IER4LT5QZG87CisKKyAgICAgICAgc3RhdHVzID0gUGRvRGlz
cGF0Y2goUGRvLCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGVU5DVElP
Tl9ERVZJQ0VfT0JKRUNUOiB7CisgICAgICAgIFBYRU5ESVNLX0ZETyAgICBGZG8gPSBEeC0+RmRv
OworCisgICAgICAgIHN0YXR1cyA9IEZkb0Rpc3BhdGNoKEZkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitEUklWRVJf
SU5JVElBTElaRSAgIERyaXZlckVudHJ5OworCitOVFNUQVRVUworRHJpdmVyRW50cnkoCisgICAg
SU4gIFBEUklWRVJfT0JKRUNUICBEcml2ZXJPYmplY3QsCisgICAgSU4gIFBVTklDT0RFX1NUUklO
RyBSZWdpc3RyeVBhdGgKKyAgICApCit7CisgICAgVUxPTkcgICAgICAgICAgICAgICBJbmRleDsK
KworICAgIEFTU0VSVDNQKF9fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksID09LCBOVUxMKTsKKyAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFJlZ2lzdHJ5UGF0aCk7CisKKyAgICBFeEluaXRpYWxp
emVEcml2ZXJSdW50aW1lKERydlJ0UG9vbE54T3B0SW4pOworCisgICAgVHJhY2UoIj09PT0+XG4i
KTsKKworICAgIF9fRHJpdmVyU2V0RHJpdmVyT2JqZWN0KERyaXZlck9iamVjdCk7CisKKyAgICBE
cml2ZXJPYmplY3QtPkRyaXZlclVubG9hZCA9IERyaXZlclVubG9hZDsKKworICAgIGlmICgqSW5p
dFNhZmVCb290TW9kZSA+IDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIlhF
TkRJU0sgJWQuJWQuJWQgKCVkKSAoJTAyZC4lMDJkLiUwNGQpXG4iLAorICAgICAgICAgICAgTUFK
T1JfVkVSU0lPTiwKKyAgICAgICAgICAgIE1JTk9SX1ZFUlNJT04sCisgICAgICAgICAgICBNSUNS
T19WRVJTSU9OLAorICAgICAgICAgICAgQlVJTERfTlVNQkVSLAorICAgICAgICAgICAgREFZLAor
ICAgICAgICAgICAgTU9OVEgsCisgICAgICAgICAgICBZRUFSKTsKKworICAgIERyaXZlck9iamVj
dC0+RHJpdmVyRXh0ZW5zaW9uLT5BZGREZXZpY2UgPSBBZGREZXZpY2U7CisKKyAgICBmb3IgKElu
ZGV4ID0gMDsgSW5kZXggPD0gSVJQX01KX01BWElNVU1fRlVOQ1RJT047IEluZGV4KyspIHsKKyNw
cmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OSkgLy8gTm8gX19kcnZfZGlzcGF0Y2hUeXBlIGFu
bm90YXRpb24KKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OCkgLy8gTm8gbWF0Y2hpbmcg
X19kcnZfZGlzcGF0Y2hUeXBlIGFubm90YXRpb24gZm9yIElSUF9NSl9DUkVBVEUKKyAgICAgICAg
RHJpdmVyT2JqZWN0LT5NYWpvckZ1bmN0aW9uW0luZGV4XSA9IERpc3BhdGNoOworICAgIH0KKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5oIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3ZTIxYgotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHly
aWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
CisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAg
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAK
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAor
ICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisg
KiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19EUklWRVJfSAorI2RlZmlu
ZSBfWEVORElTS19EUklWRVJfSAorCisjaW5jbHVkZSAiZmRvLmgiCisjaW5jbHVkZSAicGRvLmgi
CisKK2V4dGVybiBQRFJJVkVSX09CSkVDVAorRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZP
SUQKKyAgICApOworCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOjQyMDEpIC8vIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogbmFtZWxlc3Mgc3RydWN0
L3VuaW9uCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX0RYIHsKKyAgICBQREVWSUNFX09CSkVD
VCAgICAgIERldmljZU9iamVjdDsKKyAgICBERVZJQ0VfT0JKRUNUX1RZUEUgIFR5cGU7CisKKyAg
ICBERVZJQ0VfUE5QX1NUQVRFICAgIERldmljZVBucFN0YXRlOworICAgIERFVklDRV9QTlBfU1RB
VEUgICAgUHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKKworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtUG93ZXJTdGF0ZTsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVBvd2VyU3Rh
dGU7CisKKyAgICBJT19SRU1PVkVfTE9DSyAgICAgIFJlbW92ZUxvY2s7CisKKyAgICBMSVNUX0VO
VFJZICAgICAgICAgIExpc3RFbnRyeTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgUFhFTkRJU0tf
RkRPICAgIEZkbzsKKyAgICAgICAgUFhFTkRJU0tfUERPICAgIFBkbzsKKyAgICB9OworfSBYRU5E
SVNLX0RYLCAqUFhFTkRJU0tfRFg7CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKyNlbmRpZiAv
LyBfWEVORElTS19EUklWRVJfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svZmRvLmMgYi9zcmMv
eGVuZGlzay9mZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA5Y2E2
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZmRvLmMKQEAgLTAsMCArMSwxODYzIEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bmFtZXMuaD4KKworI2luY2x1
ZGUgImRyaXZlci5oIgorI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1
ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgIm11dGV4LmgiCisjaW5jbHVkZSAiZGVidWcuaCIKKyNp
bmNsdWRlICJhc3NlcnQuaCIKKyNpbmNsdWRlICJ1dGlsLmgiCisKKyNkZWZpbmUgRkRPX1RBRyAn
T0RGJworCitzdHJ1Y3QgX1hFTkRJU0tfRkRPIHsKKyAgICBQWEVORElTS19EWCAgICAgICAgICAg
ICAgICAgICAgIER4OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJE
ZXZpY2VPYmplY3Q7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgICAgICAgICBQaHlzaWNh
bERldmljZU9iamVjdDsKKworICAgIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICAgICAgICAgU3lz
dGVtUG93ZXJUaHJlYWQ7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0
ZW1Qb3dlcklycDsKKyAgICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgICAgIERldmljZVBv
d2VyVGhyZWFkOworICAgIFBJUlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93
ZXJJcnA7CisKKyAgICBNVVRFWCAgICAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4OworICAg
IFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKK307CisKK3N0YXRp
YyBGT1JDRUlOTElORSBQVk9JRAorX19GZG9BbGxvY2F0ZSgKKyAgICBJTiAgVUxPTkcgICBMZW5n
dGgKKyAgICApCit7CisgICAgcmV0dXJuIF9fQWxsb2NhdGVOb25QYWdlZFBvb2xXaXRoVGFnKF9f
RlVOQ1RJT05fXywgX19MSU5FX18sIExlbmd0aCwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBWT0lECitfX0Zkb0ZyZWUoCisgICAgSU4gIFBWT0lEICAgQnVmZmVyCisgICAgKQor
eworICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1ZmZlciwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX0Zkb1NldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElT
S19GRE8gICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAg
ICkKK3sKKyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICAv
LyBXZSBjYW4gbmV2ZXIgdHJhbnNpdGlvbiBvdXQgb2YgdGhlIGRlbGV0ZWQgc3RhdGUKKyAgICBB
U1NFUlQoRHgtPkRldmljZVBucFN0YXRlICE9IERlbGV0ZWQgfHwgU3RhdGUgPT0gRGVsZXRlZCk7
CisKKyAgICBEeC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZSA9IER4LT5EZXZpY2VQbnBTdGF0ZTsK
KyAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5F
IFZPSUQKK19fRmRvUmVzdG9yZURldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBpZiAoRHgt
PkRldmljZVBucFN0YXRlID09IFN0YXRlKQorICAgICAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBE
eC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIERFVklD
RV9QTlBfU1RBVEUKK19fRmRvR2V0RGV2aWNlUG5wU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBucFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19GZG9TZXREZXZpY2VQb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BPV0VSX1NUQVRFICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+RGV2
aWNlUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BP
V0VSX1NUQVRFCitfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX0Zkb1NldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICAgICAgRmRvLAorICAgIElOICBTWVNURU1fUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQor
eworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+
U3lzdGVtUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgU1lTVEVN
X1BPV0VSX1NUQVRFCitfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+
RHg7CisKKyAgICByZXR1cm4gRHgtPlN5c3RlbVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBQREVWSUNFX09CSkVDVAorX19GZG9HZXRQaHlzaWNhbERldmljZU9iamVjdCgKKyAg
ICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbworICAgICkKK3sKKyAgICByZXR1cm4gRmRvLT5QaHlz
aWNhbERldmljZU9iamVjdDsKK30KKworVk9JRAorRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3Qo
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBE
ZXZpY2VPYmplY3QKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKworICAg
IER4ID0gKFBYRU5ESVNLX0RYKURldmljZU9iamVjdC0+RGV2aWNlRXh0ZW5zaW9uOworICAgIEFT
U0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7CisKKyAgICBJbnNl
cnRUYWlsTGlzdCgmRmRvLT5EeC0+TGlzdEVudHJ5LCAmRHgtPkxpc3RFbnRyeSk7CisgICAgQVNT
RVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwgMCk7CisgICAgRmRvLT5SZWZlcmVuY2VzKys7Cit9
CisKK1ZPSUQKK0Zkb1JlbW92ZVBoeXNpY2FsRGV2aWNlT2JqZWN0KAorICAgIElOICBQWEVORElT
S19GRE8gICAgRmRvLAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHg7CisKKyAgICBEeCA9IChQWEVORElTS19E
WClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzVShEeC0+VHlwZSwg
PT0sIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgUmVtb3ZlRW50cnlMaXN0KCZEeC0+
TGlzdEVudHJ5KTsKKyAgICBBU1NFUlQzVShGZG8tPlJlZmVyZW5jZXMsICE9LCAwKTsKKyAgICAt
LUZkby0+UmVmZXJlbmNlczsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRmRvQWNx
dWlyZU11dGV4KAorICAgIElOICBQWEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBB
Y3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworfQorCitWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisg
ICAgSU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKQoreworICAgIF9fRmRvQWNxdWlyZU11
dGV4KEZkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb1JlbGVhc2VNdXRl
eCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApCit7CisgICAgUmVsZWFzZU11
dGV4KCZGZG8tPk11dGV4KTsKK30KKworVk9JRAorRmRvUmVsZWFzZU11dGV4KAorICAgIElOICBQ
WEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBfX0Zkb1JlbGVhc2VNdXRleChGZG8p
OworCisgICAgaWYgKEZkby0+UmVmZXJlbmNlcyA9PSAwKQorICAgICAgICBGZG9EZXN0cm95KEZk
byk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb0VudW1lcmF0ZSgKKyAgICBJ
TiAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfUkVMQVRJT05TICAg
UmVsYXRpb25zCisgICAgKQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICpQaHlzaWNh
bERldmljZU9iamVjdDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudDsKKyAgICBQ
TElTVF9FTlRSWSAgICAgICAgICAgICBMaXN0RW50cnk7CisgICAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgSW5kZXg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAg
Q291bnQgPSBSZWxhdGlvbnMtPkNvdW50OworICAgIEFTU0VSVChDb3VudCAhPSAwKTsKKworICAg
IFBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gX19GZG9BbGxvY2F0ZShzaXplb2YgKFBERVZJQ0VfT0JK
RUNUKSAqIENvdW50KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYg
KFBoeXNpY2FsRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBSdGxDb3B5TWVtb3J5KFBoeXNpY2FsRGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAg
UmVsYXRpb25zLT5PYmplY3RzLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChQREVWSUNFX09C
SkVDVCkgKiBDb3VudCk7CisKKyAgICBBY3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAg
Ly8gUmVtb3ZlIGFueSBQRE9zIHRoYXQgZG8gbm90IGFwcGVhciBpbiB0aGUgZGV2aWNlIGxpc3QK
KyAgICBMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7CisgICAgd2hpbGUgKExp
c3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5KSB7CisgICAgICAgIFBMSVNUX0VOVFJZICAg
ICBOZXh0ID0gTGlzdEVudHJ5LT5GbGluazsKKyAgICAgICAgUFhFTkRJU0tfRFggICAgIER4ID0g
Q09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5ESVNLX0RYLCBMaXN0RW50cnkpOworICAg
ICAgICBQWEVORElTS19QRE8gICAgUGRvID0gRHgtPlBkbzsKKyAgICAgICAgQk9PTEVBTiAgICAg
ICAgIE1pc3Npbmc7CisKKyAgICAgICAgTWlzc2luZyA9IFRSVUU7CisgICAgICAgIGZvciAoSW5k
ZXggPSAwOyBJbmRleCA8IENvdW50OyBJbmRleCsrKSB7CisgICAgICAgICAgICBpZiAoUGRvR2V0
UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKSA9PSBQaHlzaWNhbERldmljZU9iamVjdFtJbmRleF0p
IHsKKyAgICAgICAgICAgICAgICBNaXNzaW5nID0gRkFMU0U7CisjcHJhZ21hIHByZWZhc3Qoc3Vw
cHJlc3M6NjM4NykgIC8vIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSBjb3VsZCBiZSBOVUxM
CisgICAgICAgICAgICAgICAgT2JEZXJlZmVyZW5jZU9iamVjdChQaHlzaWNhbERldmljZU9iamVj
dFtJbmRleF0pOworICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSA9
IE5VTEw7IC8vIGF2b2lkIGR1cGxpY2F0aW9uCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTWlzc2luZyAmJiAhUGRvSXNNaXNz
aW5nKFBkbykpIHsKKyAgICAgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09
IFByZXNlbnQpIHsKKyAgICAgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworICAgICAgICAgICAgICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgUGRvU2V0TWlzc2luZyhQZG8sICJkZXZpY2UgZGlzYXBw
ZWFyZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIExpc3RFbnRyeSA9
IE5leHQ7CisgICAgfQorCisgICAgLy8gV2FsayB0aGUgbGlzdCBhbmQgY3JlYXRlIFBETyBmaWx0
ZXJzIGZvciBhbnkgbmV3IGRldmljZXMKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBDb3Vu
dDsgSW5kZXgrKykgeworI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjYzODUpICAvLyBSZWFkaW5n
IGludmFsaWQgZGF0YSBmcm9tICdQaHlzaWNhbERldmljZU9iamVjdCcKKyAgICAgICAgaWYgKFBo
eXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSAhPSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkg
UGRvQ3JlYXRlKEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxEZXZp
Y2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoUGh5c2lj
YWxEZXZpY2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBSZWxl
YXNlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAgX19GZG9GcmVlKFBoeXNpY2FsRGV2aWNlT2Jq
ZWN0KTsKKyAgICByZXR1cm47CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5F
KQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9Gb3J3YXJkSXJwU3luY2hy
b25vdXNseSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAg
ICApCit7CisgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVudCA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihJcnApOworCisgICAgS2VTZXRFdmVudChFdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBG
QUxTRSk7CisKKyAgICByZXR1cm4gU1RBVFVTX01PUkVfUFJPQ0VTU0lOR19SRVFVSVJFRDsKK30K
Kworc3RhdGljIE5UU1RBVFVTCitGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBLRVZFTlQgICAgICAgICAgICAgIEV2ZW50OworICAgIE5UU1RBVFVTICAgICAgICAg
ICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lW
RV9MRVZFTCk7CisKKyAgICBLZUluaXRpYWxpemVFdmVudCgmRXZlbnQsIE5vdGlmaWNhdGlvbkV2
ZW50LCBGQUxTRSk7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJ
cnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19GZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVj
dCwgSXJwKTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKSB7CisgICAgICAgIChW
T0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
ICAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsKKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQzVShzdGF0dXMsID09LCBJcnAtPklvU3RhdHVzLlN0YXR1cyk7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVT
CitGZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAgICAgICAgIFBv
d2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMg
PSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgc3RhdHVz
ID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICghTlRfU1VD
Q0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19GZG9TZXRTeXN0ZW1Q
b3dlclN0YXRlKEZkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX0Zkb1NldERldmljZVBv
d2VyU3RhdGUoRmRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNlU3Rh
dGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZpY2VP
YmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8s
IFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsK
KworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitm
YWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3RvcFBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9RdWVyeVN0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsK
KyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElO
RSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvQ2FuY2VsU3RvcERldmlj
ZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAg
ICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7
CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVy
bmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb0NhbmNl
bFN0b3BEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7
CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2Nr
LCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIF9f
RmRvUmVzdG9yZURldmljZVBucFN0YXRlKEZkbywgU3RvcFBlbmRpbmcpOworCisgICAgSW9Db3B5
Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25S
b3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsU3RvcERl
dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIo
RmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2Zh
aWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlS
UUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9TdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09C
SkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElO
ICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAg
ICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9i
amVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBE
RUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvU3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJ
U0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQT1dFUl9TVEFURSAgICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5S
ZW1vdmVMb2NrLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgaWYgKF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pICE9IFBv
d2VyRGV2aWNlRDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNl
U3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZp
Y2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQb3dlclN0YXRl
KEZkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19GZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbywg
UG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKK2RvbmU6CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0
ZShGZG8sIFN0b3BwZWQpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9TdG9wRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0
YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAg
SW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitf
X2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5UmVtb3ZlRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvUXVlcnlSZW1v
dmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisK
KyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJ
cnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOwor
CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIEly
cC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50
SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUo
SXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9RdWVyeVJlbW92ZURldmljZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5M
b3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgor
ICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0
KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19GZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAgSU4gIFBERVZJQ0Vf
T0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNl
T2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJr
SXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGlj
IERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitGZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAg
ICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJ
b0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgX19GZG9SZXN0
b3JlRGV2aWNlUG5wU3RhdGUoRmRvLCBSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVz
LlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsUmVtb3ZlRGV2aWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNl
T2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3VycHJpc2VSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNU
QVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQo
SXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRmRvU3VycHJpc2VSZW1vdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKwor
ICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOwor
CisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMg
PSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwor
CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RB
VFVTCitGZG9SZW1vdmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUE9XRVJfU1RBVEUgICAgICAg
ICBQb3dlclN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlm
IChfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAg
ICBnb3RvIGRvbmU7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VE
MzsKKyAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAg
ICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAgICAgICBQb3dlclN0
YXRlKTsKKworICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8sIFBvd2VyRGV2aWNlRDMp
OworICAgIF9fRmRvU2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8sIFBvd2VyU3lzdGVtU2h1dGRvd24p
OworCitkb25lOgorICAgIF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBEZWxldGVkKTsKKwor
ICAgIElvUmVsZWFzZVJlbW92ZUxvY2tBbmRXYWl0KCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOwor
ICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIEFjcXVp
cmVNdXRleCgmRmRvLT5NdXRleCk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwg
MCk7CisgICAgLS1GZG8tPlJlZmVyZW5jZXM7CisgICAgUmVsZWFzZU11dGV4KCZGZG8tPk11dGV4
KTsKKworICAgIGlmIChGZG8tPlJlZmVyZW5jZXMgPT0gMCkKKyAgICAgICAgRmRvRGVzdHJveShG
ZG8pOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zk
b1F1ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29u
dGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19O
T19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5H
X1JFUVVJUkVEOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb1F1
ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAg
RXZlbnQ7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVMT05H
ICAgICAgICAgICAgICAgU2l6ZTsKKyAgICBQREVWSUNFX1JFTEFUSU9OUyAgIFJlbGF0aW9uczsK
KyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKyAgICBVTE9ORyAgICAgICAgICAg
ICAgIENvdW50OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVz
ID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIEtlSW5p
dGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZpY2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElv
Q29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0
aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zkb1F1ZXJ5RGV2
aWNlUmVsYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMg
PT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAgICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVj
dCgmRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0
dXMuU3RhdHVzOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIEly
cC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgaWYgKFN0YWNrTG9jYXRpb24tPlBhcmFtZXRl
cnMuUXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPSBCdXNSZWxhdGlvbnMpCisgICAgICAgIGdv
dG8gZG9uZTsKKworICAgIFJlbGF0aW9ucyA9IChQREVWSUNFX1JFTEFUSU9OUylJcnAtPklvU3Rh
dHVzLkluZm9ybWF0aW9uOworCisgICAgaWYgKFJlbGF0aW9ucy0+Q291bnQgIT0gMCkKKyAgICAg
ICAgX19GZG9FbnVtZXJhdGUoRmRvLCBSZWxhdGlvbnMpOworCisgICAgRXhGcmVlUG9vbChSZWxh
dGlvbnMpOworCisgICAgQWNxdWlyZU11dGV4KCZGZG8tPk11dGV4KTsKKworICAgIENvdW50ID0g
MDsKKyAgICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAg
ICAgIExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5
ID0gTGlzdEVudHJ5LT5GbGluaykKKyAgICAgICAgQ291bnQrKzsKKworICAgIFNpemUgPSBGSUVM
RF9PRkZTRVQoREVWSUNFX1JFTEFUSU9OUywgT2JqZWN0cykgKyAoc2l6ZW9mIChERVZJQ0VfT0JK
RUNUKSAqIF9fbWluKENvdW50LCAxKSk7CisKKyAgICBSZWxhdGlvbnMgPSBFeEFsbG9jYXRlUG9v
bFdpdGhUYWcoUGFnZWRQb29sLCBTaXplLCAnVExJRicpOworCisgICAgc3RhdHVzID0gU1RBVFVT
X05PX01FTU9SWTsKKyAgICBpZiAoUmVsYXRpb25zID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFp
bDM7CisKKyAgICBSdGxaZXJvTWVtb3J5KFJlbGF0aW9ucywgU2l6ZSk7CisKKyAgICBmb3IgKExp
c3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAh
PSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5G
bGluaykgeworICAgICAgICBQWEVORElTS19EWCAgICAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChM
aXN0RW50cnksIFhFTkRJU0tfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5ESVNLX1BETyAg
ICBQZG8gPSBEeC0+UGRvOworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lD
QUxfREVWSUNFX09CSkVDVCk7CisKKyAgICAgICAgaWYgKFBkb0dldERldmljZVBucFN0YXRlKFBk
bykgPT0gUHJlc2VudCkKKyAgICAgICAgICAgIFBkb1NldERldmljZVBucFN0YXRlKFBkbywgRW51
bWVyYXRlZCk7CisKKyAgICAgICAgT2JSZWZlcmVuY2VPYmplY3QoUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoUGRvKSk7CisgICAgICAgIFJlbGF0aW9ucy0+T2JqZWN0c1tSZWxhdGlvbnMtPkNv
dW50KytdID0gUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKTsKKyAgICB9CisKKyAgICBB
U1NFUlQzVShSZWxhdGlvbnMtPkNvdW50LCA9PSwgQ291bnQpOworCisgICAgVHJhY2UoIiVkIFBE
TyhzKVxuIiwgUmVsYXRpb25zLT5Db3VudCk7CisKKyAgICBSZWxlYXNlTXV0ZXgoJkZkby0+TXV0
ZXgpOworCisgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IChVTE9OR19QVFIpUmVsYXRp
b25zOworICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCitkb25lOgorICAgIElvUmVsZWFz
ZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBSZWxlYXNlTXV0
ZXgoJkZkby0+TXV0ZXgpOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8t
PkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBM
RVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlz
cGF0Y2hQbnAoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0Cisg
ICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRp
bmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxl
YXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRv
RGlzcGF0Y2hQbnAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xv
Y2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAgICAgTWlub3JGdW5jdGlvbjsKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRp
b24tPk1pbm9yRnVuY3Rpb247CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb24pIHsKKyAgICBjYXNlIElSUF9NTl9TVEFSVF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9
IEZkb1N0YXJ0RGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NTl9RVUVSWV9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gRmRvUXVlcnlTdG9wRGV2
aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9DQU5DRUxf
U1RPUF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IEZkb0NhbmNlbFN0b3BEZXZpY2UoRmRvLCBJ
cnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1NUT1BfREVWSUNFOgorICAg
ICAgICBzdGF0dXMgPSBGZG9TdG9wRGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIElSUF9NTl9RVUVSWV9SRU1PVkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBG
ZG9RdWVyeVJlbW92ZURldmljZShGZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBJUlBfTU5fU1VSUFJJU0VfUkVNT1ZBTDoKKyAgICAgICAgc3RhdHVzID0gRmRvU3VycHJpc2VS
ZW1vdmFsKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9SRU1P
VkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBGZG9SZW1vdmVEZXZpY2UoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX0NBTkNFTF9SRU1PVkVfREVWSUNFOgor
ICAgICAgICBzdGF0dXMgPSBGZG9DYW5jZWxSZW1vdmVEZXZpY2UoRmRvLCBJcnApOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX0RFVklDRV9SRUxBVElPTlM6CisgICAg
ICAgIHN0YXR1cyA9IEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zKEZkbywgSXJwKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVM
b2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Mo
c3RhdHVzKSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVu
dElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91
dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9EaXNwYXRjaFBu
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1
cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigi
ZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBz
dGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zk
b1NldERldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIl
cDogJXMgLT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAg
ICBQb3dlckRldmljZVN0YXRlTmFtZShfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSksCisg
ICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19GZG9T
ZXREZXZpY2VQb3dlclN0YXRlKEZkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9TZXREZXZpY2VQb3dlckRv
d24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOwor
ICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tM
b2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVy
cy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA+
LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVz
IC0+ICVzXG4iLAorICAgICAgICAgRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93
ZXJEZXZpY2VTdGF0ZU5hbWUoX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpLAorICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsKKworICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJTdGF0ZShGZG8sIERldmljZVN0YXRlKTsKKworICAgIHN0YXR1cyA9IEZkb0Zvcndh
cmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAs
IElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9S
Q0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvU2V0RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFU
RSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xv
Y2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0
aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAg
ICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFt
ZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikp
OworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8p
KSB7CisgICAgICAgIHN0YXR1cyA9IEZkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJw
KTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBf
X0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSkgPworICAgICAgICAgICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAgICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJE
b3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxu
IiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAg
ICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
U2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1Uo
U3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBz
dGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIiVw
OiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIEZkby0+RHgtPkRldmljZU9iamVjdCwKKyAgICAgICAg
IFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fRmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSwKKyAg
ICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSk7CisKKyAgICBfX0Zkb1Nl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvLCBTeXN0ZW1TdGF0ZSk7CisKK2RvbmU6CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1NldFN5c3RlbVBvd2VyRG93
bigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAg
IElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247Cisg
ICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJz
LlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsID4s
ICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBWZXJib3NlKCIlcDogJXMg
LT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSksCisgICAgICAg
ICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSkpOworCisgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclN0YXRlKEZkbywgU3lzdGVtU3RhdGUpOworCisgICAgc3RhdHVzID0gRmRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBOVFNUQVRVUworX19GZG9TZXRTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tf
RkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRF
ICBTeXN0ZW1TdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9j
YXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rp
b24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAg
IFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1l
KFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7
CisKKyAgICBpZiAoU3lzdGVtU3RhdGUgPT0gX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykp
IHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnAp
OworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9f
RmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclVwKEZkbywgSXJwKSA6CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0ZW1Qb3dlckRv
d24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRyYWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4i
LAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAg
ICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSwKKyAgICAgICAgICBzdGF0dXMpOworICAg
IHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9R
dWVyeURldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworCisgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1
czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5RGV2aWNlUG93
ZXJEb3duKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlv
bjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0
YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFt
ZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShEZXZpY2VTdGF0
ZSwgPiwgIF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKTsKKworICAgIHN0YXR1cyA9IEZk
b0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvUXVlcnlEZXZpY2VQb3dlcigKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BP
V0VSX1NUQVRFICBEZXZpY2VTdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9
IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisgICAg
UG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlw
ZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyRGV2aWNl
U3RhdGVOYW1lKERldmljZVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2Vy
QWN0aW9uKSk7CisKKyAgICBpZiAoRGV2aWNlU3RhdGUgPT0gX19GZG9HZXREZXZpY2VQb3dlclN0
YXRlKEZkbykpIHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHko
RmRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7CisKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChEZXZpY2VT
dGF0ZSA8IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19G
ZG9RdWVyeURldmljZVBvd2VyVXAoRmRvLCBJcnApIDoKKyAgICAgICAgICAgICBfX0Zkb1F1ZXJ5
RGV2aWNlUG93ZXJEb3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVz
OiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0
ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAg
c3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRT
VEFUVVMKK19fRmRvUXVlcnlTeXN0ZW1Qb3dlclVwKAorICAgIElOICBQWEVORElTS19GRE8gICAg
IEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0
ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9j
YXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3Rh
dGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOwor
CisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUo
RmRvKSk7CisKKyAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIEly
cCk7CisKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
UXVlcnlTeXN0ZW1Qb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VS
VDNVKFN5c3RlbVN0YXRlLCA+LCAgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpOworCisg
ICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElv
Q29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9RdWVyeVN5c3RlbVBv
d2VyKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsK
KyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5c3RlbVN0YXRlOworICAgIFBPV0VSX0FDVElPTiAg
ICAgICAgUG93ZXJBY3Rpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0
ZW1TdGF0ZTsKKyAgICBQb3dlckFjdGlvbiA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU2h1dGRvd25UeXBlOworCisgICAgVHJhY2UoIj09PT0+ICglczolcylcbiIsCisgICAgICAg
ICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pKTsKKworICAgIGlmIChTeXN0ZW1TdGF0ZSA9PSBfX0Zkb0dl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvKSkgeworICAgICAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJw
U3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgc3Rh
dHVzID0gKFN5c3RlbVN0YXRlIDwgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpID8KKyAg
ICAgICAgICAgICBfX0Zkb1F1ZXJ5U3lzdGVtUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAg
ICAgIF9fRmRvUXVlcnlTeXN0ZW1Qb3dlckRvd24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRy
YWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVO
YW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9u
KSwKKyAgICAgICAgICBzdGF0dXMpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGlj
IE5UU1RBVFVTCitGZG9EZXZpY2VQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYs
CisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNL
X0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50
OworCisgICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsK
KyAgICAgICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NB
VElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1
bmN0aW9uOworCisgICAgICAgIGlmIChGZG8tPkRldmljZVBvd2VySXJwID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPkRldmljZVBvd2VySXJwOworCisgICAg
ICAgIGlmIChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZk
by0+RGV2aWNlUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKwor
ICAgICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnAp
OworICAgICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsK
KworICAgICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAg
ICAgY2FzZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0RGV2
aWNlUG93ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJ
UlBfTU5fUVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeURldmljZVBv
d2VyKEZkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIE5UU1RB
VFVTCitGZG9TeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50OworCisg
ICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsKKyAgICAg
ICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NBVElPTiAg
U3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0aW9u
OworCisgICAgICAgIGlmIChGZG8tPlN5c3RlbVBvd2VySXJwID09IE5VTEwpIHsKKyAgICAgICAg
ICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPlN5c3RlbVBvd2VySXJwOworCisgICAgICAgIGlm
IChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZkby0+U3lz
dGVtUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgICAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
ICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAg
ICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAgICAgY2Fz
ZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0U3lzdGVtUG93
ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJUlBfTU5f
UVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeVN5c3RlbVBvd2VyKEZk
bywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAg
IH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX0Zkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmpl
Y3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4
dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlm
IChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOwor
CisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBO
VFNUQVRVUworRmRvRGlzcGF0Y2hQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIFBPV0VSX1NUQVRFX1RZUEUgICAgUG93ZXJUeXBlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRv
LT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgZ290byBmYWlsMTsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICBpZiAoTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fUVVFUllfUE9X
RVIgJiYKKyAgICAgICAgTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fU0VUX1BPV0VSKSB7CisgICAg
ICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElv
U2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fRmRvRGlzcGF0Y2hQb3dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUp
OworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0
LCBJcnApOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQb3dlclR5cGUgPSBT
dGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCUwMng6JXMpXG4iLAorICAgICAgICAgIE1pbm9yRnVuY3Rpb24sIAorICAgICAgICAgIFBvd2Vy
TWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbikpOyAKKworICAgIHN3aXRjaCAoUG93ZXJU
eXBlKSB7CisgICAgY2FzZSBEZXZpY2VQb3dlclN0YXRlOgorICAgICAgICBJb01hcmtJcnBQZW5k
aW5nKElycCk7CisKKyAgICAgICAgQVNTRVJUM1AoRmRvLT5EZXZpY2VQb3dlcklycCwgPT0sIE5V
TEwpOworICAgICAgICBGZG8tPkRldmljZVBvd2VySXJwID0gSXJwOworICAgICAgICBLZU1lbW9y
eUJhcnJpZXIoKTsKKworICAgICAgICBUaHJlYWRXYWtlKEZkby0+RGV2aWNlUG93ZXJUaHJlYWQp
OworCisgICAgICAgIHN0YXR1cyA9IFNUQVRVU19QRU5ESU5HOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgU3lzdGVtUG93ZXJTdGF0ZToKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnAp
OworCisgICAgICAgIEFTU0VSVDNQKEZkby0+U3lzdGVtUG93ZXJJcnAsID09LCBOVUxMKTsKKyAg
ICAgICAgRmRvLT5TeXN0ZW1Qb3dlcklycCA9IElycDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShGZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKworICAg
ICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOwor
ICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0Zkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVHJhY2UoIjw9
PT09ICglMDJ4OiVzKSAoJTA4eClcbiIsCisgICAgICAgICAgTWlub3JGdW5jdGlvbiwgCisgICAg
ICAgICAgUG93ZXJNaW5vckZ1bmN0aW9uTmFtZShNaW5vckZ1bmN0aW9uKSwKKyAgICAgICAgICBz
dGF0dXMpOworCitkb25lOgorICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9y
KCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisK
KyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJ
T05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlzcGF0
Y2hEZWZhdWx0KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAor
ICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5k
aW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVs
ZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUwor
RmRvRGlzcGF0Y2hEZWZhdWx0KAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7
CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0Zkb0Rpc3BhdGNoRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZk
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBz
dGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAg
IHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBs
ZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOwor
fQorCitOVFNUQVRVUworRmRvRGlzcGF0Y2goCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8s
CisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xP
Q0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwor
CisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
KworICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgeworICAgIGNhc2Ug
SVJQX01KX1BOUDoKKyAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hQbnAoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01KX1BPV0VSOgorICAgICAgICBzdGF0dXMg
PSBGZG9EaXNwYXRjaFBvd2VyKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaERlZmF1bHQoRmRvLCBJcnApOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRVUwor
RmRvQ3JlYXRlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgUGh5c2ljYWxEZXZpY2VPYmplY3QK
KyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBVTE9ORyAgICAgICAgICAgICAgIERldmljZVR5cGU7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKyAgICBQ
WEVORElTS19GRE8gICAgICAgIEZkbzsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsK
KworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9HZXRBdHRhY2hlZERldmljZVJlZmVyZW5jZShQ
aHlzaWNhbERldmljZU9iamVjdCk7CisgICAgRGV2aWNlVHlwZSA9IExvd2VyRGV2aWNlT2JqZWN0
LT5EZXZpY2VUeXBlOworICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoTG93ZXJEZXZpY2VPYmplY3Qp
OworCisjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxOTcpIC8vIFBvc3NpYmx5IGxlYWtpbmcg
bWVtb3J5ICdGaWx0ZXJEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9DcmVhdGVEZXZpY2Uo
RHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mIChYRU5ESVNLX0RYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRV9ERVZJQ0VfU0VDVVJFX09QRU4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZpbHRlckRldmljZU9i
amVjdCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBEeCA9IChQWEVORElTS19EWClGaWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZUV4dGVu
c2lvbjsKKyAgICBSdGxaZXJvTWVtb3J5KER4LCBzaXplb2YgKFhFTkRJU0tfRFgpKTsKKworICAg
IER4LT5UeXBlID0gRlVOQ1RJT05fREVWSUNFX09CSkVDVDsKKyAgICBEeC0+RGV2aWNlT2JqZWN0
ID0gRmlsdGVyRGV2aWNlT2JqZWN0OworICAgIER4LT5EZXZpY2VQbnBTdGF0ZSA9IEFkZGVkOwor
ICAgIER4LT5TeXN0ZW1Qb3dlclN0YXRlID0gUG93ZXJTeXN0ZW1TaHV0ZG93bjsKKyAgICBEeC0+
RGV2aWNlUG93ZXJTdGF0ZSA9IFBvd2VyRGV2aWNlRDM7CisKKyAgICBJb0luaXRpYWxpemVSZW1v
dmVMb2NrKCZEeC0+UmVtb3ZlTG9jaywgRkRPX1RBRywgMCwgMCk7CisKKyAgICBGZG8gPSBfX0Zk
b0FsbG9jYXRlKHNpemVvZiAoWEVORElTS19GRE8pKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19O
T19NRU1PUlk7CisgICAgaWYgKEZkbyA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWwyOworCisg
ICAgTG93ZXJEZXZpY2VPYmplY3QgPSBJb0F0dGFjaERldmljZVRvRGV2aWNlU3RhY2soRmlsdGVy
RGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19V
TlNVQ0NFU1NGVUw7CisgICAgaWYgKExvd2VyRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAg
IGdvdG8gZmFpbDM7CisKKyAgICBGZG8tPkR4ID0gRHg7CisgICAgRmRvLT5QaHlzaWNhbERldmlj
ZU9iamVjdCA9IFBoeXNpY2FsRGV2aWNlT2JqZWN0OworICAgIEZkby0+TG93ZXJEZXZpY2VPYmpl
Y3QgPSBMb3dlckRldmljZU9iamVjdDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShGZG9T
eXN0ZW1Qb3dlciwgRmRvLCAmRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICBzdGF0dXMgPSBUaHJl
YWRDcmVhdGUoRmRvRGV2aWNlUG93ZXIsIEZkbywgJkZkby0+RGV2aWNlUG93ZXJUaHJlYWQpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw1OworCisgICAg
SW5pdGlhbGl6ZU11dGV4KCZGZG8tPk11dGV4KTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkR4
LT5MaXN0RW50cnkpOworICAgIEZkby0+UmVmZXJlbmNlcyA9IDE7CisKKyAgICBWZXJib3NlKCIl
cFxuIiwgRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5GZG8gPSBGZG87CisKKyNwcmFn
bWEgcHJlZmFzdChzdXBwcmVzczoyODE4MikgIC8vIERlcmVmZXJlbmNpbmcgTlVMTCBwb2ludGVy
CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5EZXZpY2VUeXBlID0gTG93ZXJEZXZpY2VPYmplY3Qt
PkRldmljZVR5cGU7CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3MgPSBM
b3dlckRldmljZU9iamVjdC0+Q2hhcmFjdGVyaXN0aWNzOworCisgICAgRmlsdGVyRGV2aWNlT2Jq
ZWN0LT5GbGFncyB8PSBMb3dlckRldmljZU9iamVjdC0+RmxhZ3M7CisgICAgRmlsdGVyRGV2aWNl
T2JqZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJQUxJWklORzsKKworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKworICAgIFRo
cmVhZEFsZXJ0KEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5T
eXN0ZW1Qb3dlclRocmVhZCk7CisgICAgRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCA9IE5VTEw7CisK
K2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAgICBGZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBGZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBG
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKworICAgIEFTU0VSVChJc1plcm9NZW1v
cnkoRmRvLCBzaXplb2YgKFhFTkRJU0tfRkRPKSkpOworICAgIF9fRmRvRnJlZShGZG8pOworCitm
YWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVy
RGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZPSUQKK0Zkb0Rlc3Ryb3koCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBMb3dlckRldmljZU9iamVjdCA9IEZkby0+TG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBGaWx0
ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0OworCisgICAgQVNTRVJUKElzTGlzdEVt
cHR5KCZEeC0+TGlzdEVudHJ5KSk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCA9PSwg
MCk7CisgICAgQVNTRVJUM1UoX19GZG9HZXREZXZpY2VQbnBTdGF0ZShGZG8pLCA9PSwgRGVsZXRl
ZCk7CisKKyAgICBEeC0+RmRvID0gTlVMTDsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+TXV0
ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIFRocmVhZEFsZXJ0KEZkby0+RGV2aWNlUG93ZXJU
aHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgRmRv
LT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisKKyAgICBUaHJlYWRBbGVydChGZG8tPlN5c3Rl
bVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2luKEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIEZkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBOVUxMOworCisgICAgRmRvLT5Mb3dlckRldmlj
ZU9iamVjdCA9IE5VTEw7CisgICAgRmRvLT5QaHlzaWNhbERldmljZU9iamVjdCA9IE5VTEw7Cisg
ICAgRmRvLT5EeCA9IE5VTEw7CisKKyAgICBJb0RldGFjaERldmljZShMb3dlckRldmljZU9iamVj
dCk7CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEZkbywgc2l6ZW9mIChYRU5ESVNLX0ZETykp
KTsKKyAgICBfX0Zkb0ZyZWUoRmRvKTsKKworICAgIElvRGVsZXRlRGV2aWNlKEZpbHRlckRldmlj
ZU9iamVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2Zkby5oIGIvc3JjL3hlbmRp
c2svZmRvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMDUyOQotLS0g
L2Rldi9udWxsCisrKyBiL3NyYy94ZW5kaXNrL2Zkby5oCkBAIC0wLDAgKzEsNzggQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19GRE9fSAorI2RlZmlu
ZSBfWEVORElTS19GRE9fSAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlICJ0eXBlcy5o
IgorCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19GRE8gWEVORElTS19GRE8sICpQWEVORElTS19G
RE87CisKK2V4dGVybiBWT0lECitGZG9BZGRQaHlzaWNhbERldmljZU9iamVjdCgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9SZW1vdmVQaHlzaWNhbERldmljZU9iamVjdCgK
KyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERl
dmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK0Zkb1JlbGVh
c2VNdXRleCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApOworCitleHRlcm4g
TlRTVEFUVVMKK0Zkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAg
IElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVTCitGZG9D
cmVhdGUoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAg
ICk7CisKK2V4dGVybiBWT0lECitGZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19GRE8gICAg
RmRvCisgICAgKTsKKworI2VuZGlmIC8vIF9YRU5ESVNLX0ZET19ICmRpZmYgLS1naXQgYS9zcmMv
eGVuZGlzay9tdXRleC5oIGIvc3JjL3hlbmRpc2svbXV0ZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iY2MyNDE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2sv
bXV0ZXguaApAQCAtMCwwICsxLDExMyBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVt
cyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgX1hFTkRJU0tfTVVURVhfSAorI2RlZmluZSBfWEVORElTS19NVVRFWF9ICisKKyNp
bmNsdWRlIDxudGRkay5oPgorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKK3R5cGVkZWYgc3RydWN0
IF9NVVRFWCB7CisgICAgUEtUSFJFQUQgICAgT3duZXI7CisgICAgS0VWRU5UICAgICAgRXZlbnQ7
Cit9IE1VVEVYLCAqUE1VVEVYOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorSW5pdGlhbGl6
ZU11dGV4KAorICAgIElOICBQTVVURVggIE11dGV4CisgICAgKQoreworICAgIFJ0bFplcm9NZW1v
cnkoTXV0ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZNdXRl
eC0+RXZlbnQsIFN5bmNocm9uaXphdGlvbkV2ZW50LCBUUlVFKTsKK30KKworc3RhdGljIEZPUkNF
SU5MSU5FIEJPT0xFQU4KK19fZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1RyeUFjcXVpcmVN
dXRleCgKKyAgICBJTiAgUE1VVEVYICAgICAgTXV0ZXgKKyAgICApCit7CisgICAgTEFSR0VfSU5U
RUdFUiAgIFRpbWVvdXQ7CisgICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKKworICAgIFRpbWVv
dXQuUXVhZFBhcnQgPSAwOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZN
dXRleC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZUaW1lb3V0KTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19USU1F
T1VUKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0
dXMpKTsKKworICAgIEFTU0VSVDNQKE11dGV4LT5Pd25lciwgPT0sIE5VTEwpOworICAgIE11dGV4
LT5Pd25lciA9IEtlR2V0Q3VycmVudFRocmVhZCgpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisK
K3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX2Rydl9tYXhJUlFMKFBBU1NJVkVfTEVWRUwpCitB
Y3F1aXJlTXV0ZXgoCisgICAgSU4gIFBNVVRFWCAgTXV0ZXgKKyAgICApCit7CisgICAgTlRTVEFU
VVMgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZNdXRl
eC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworCisgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisK
KyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBOVUxMKTsKKyAgICBNdXRleC0+T3duZXIg
PSBLZUdldEN1cnJlbnRUaHJlYWQoKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19f
ZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1JlbGVhc2VNdXRleCgKKyAgICBJTiAgUE1VVEVY
ICBNdXRleAorICAgICkKK3sKKyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBLZUdldEN1
cnJlbnRUaHJlYWQoKSk7CisgICAgTXV0ZXgtPk93bmVyID0gTlVMTDsKKworICAgIEtlU2V0RXZl
bnQoJk11dGV4LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7Cit9CisKKyNlbmRpZiAg
Ly8gX1hFTkRJU0tfTVVURVhfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmMgYi9zcmMv
eGVuZGlzay9wZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE1YTFl
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmMKQEAgLTAsMCArMSwyMTI2IEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RvcnBvcnQuaD4KKyNpbmNs
dWRlIDxOdGRkc3Rvci5oPgorI2luY2x1ZGUgPE50ZGRzY3NpLmg+CisjaW5jbHVkZSA8bmFtZXMu
aD4KKworI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1ZGUgImRyaXZl
ci5oIgorI2luY2x1ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAi
YXNzZXJ0LmgiCisjaW5jbHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFBET19UQUcgJ09EUCcKKwor
c3RydWN0IF9YRU5ESVNLX1BETyB7CisgICAgUFhFTkRJU0tfRFggICAgICAgICAgICAgICAgIER4
OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBQREVWSUNFX09CSkVDVCAgICAgICAgICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3Q7CisKKyAg
ICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgU3lzdGVtUG93ZXJUaHJlYWQ7CisgICAgUElS
UCAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVBvd2VySXJwOworICAgIFBYRU5ESVNLX1RI
UkVBRCAgICAgICAgICAgICBEZXZpY2VQb3dlclRocmVhZDsKKyAgICBQSVJQICAgICAgICAgICAg
ICAgICAgICAgICAgRGV2aWNlUG93ZXJJcnA7CisKKyAgICBQWEVORElTS19GRE8gICAgICAgICAg
ICAgICAgRmRvOworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBNaXNzaW5nOworICAg
IGNvbnN0IENIQVIgICAgICAgICAgICAgICAgICAqUmVhc29uOworCisgICAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgICAgIFNlY3RvclNpemU7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZP
SUQKK19fUGRvQWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAg
IHJldHVybiBfX0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCBMZW5ndGgsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Q
ZG9GcmVlKAorICAgIElOICBQVk9JRCAgIEJ1ZmZlcgorICAgICkKK3sKKyAgICBfX0ZyZWVQb29s
V2l0aFRhZyhCdWZmZXIsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAor
X19QZG9TZXREZXZpY2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8s
CisgICAgSU4gIERFVklDRV9QTlBfU1RBVEUgICAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgLy8gV2UgY2FuIG5ldmVyIHRy
YW5zaXRpb24gb3V0IG9mIHRoZSBkZWxldGVkIHN0YXRlCisgICAgQVNTRVJUKER4LT5EZXZpY2VQ
bnBTdGF0ZSAhPSBEZWxldGVkIHx8IFN0YXRlID09IERlbGV0ZWQpOworCisgICAgRHgtPlByZXZp
b3VzRGV2aWNlUG5wU3RhdGUgPSBEeC0+RGV2aWNlUG5wU3RhdGU7CisgICAgRHgtPkRldmljZVBu
cFN0YXRlID0gU3RhdGU7Cit9CisKK1ZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAorICAgIElO
ICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBT
dGF0ZQorICAgICkKK3sKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgU3RhdGUpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9SZXN0b3JlRGV2aWNlUG5wU3RhdGUo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBERVZJQ0VfUE5QX1NU
QVRFICAgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgIER4ID0g
UGRvLT5EeDsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3RhdGUgPT0gU3RhdGUpCisgICAgICAg
IER4LT5EZXZpY2VQbnBTdGF0ZSA9IER4LT5QcmV2aW91c0RldmljZVBucFN0YXRlOworfQorCitz
dGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BOUF9TVEFURQorX19QZG9HZXREZXZpY2VQbnBTdGF0
ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICBQWEVORElTS19E
WCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2aWNlUG5wU3RhdGU7
Cit9CisKK0RFVklDRV9QTlBfU1RBVEUKK1Bkb0dldERldmljZVBucFN0YXRlKAorICAgIElOICBQ
WEVORElTS19QRE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBfX1Bkb0dldERldmljZVBu
cFN0YXRlKFBkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1Bkb1NldERldmlj
ZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBE
RVZJQ0VfUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAg
ICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIER4LT5EZXZpY2VQb3dlclN0YXRlID0gU3RhdGU7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBERVZJQ0VfUE9XRVJfU1RBVEUKK19fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAg
ICBQWEVORElTS19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2
aWNlUG93ZXJTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUGRvU2V0U3lz
dGVtUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8sCisgICAgSU4g
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAg
ICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgRHgtPlN5c3RlbVBvd2VyU3RhdGUgPSBTdGF0
ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFNZU1RFTV9QT1dFUl9TVEFURQorX19QZG9HZXRT
eXN0ZW1Qb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKQorewor
ICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgcmV0dXJuIER4LT5T
eXN0ZW1Qb3dlclN0YXRlOworfQorCitQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgcmV0
dXJuIFBkby0+UGh5c2ljYWxEZXZpY2VPYmplY3Q7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBW
T0lECitfX1Bkb1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIGNvbnN0IENIQVIgICAgICAqUmVhc29uCisgICAgKQoreworICAgIFBkby0+UmVhc29uID0g
UmVhc29uOworICAgIFBkby0+TWlzc2luZyA9IFRSVUU7Cit9CisKK1ZPSUQKK1Bkb1NldE1pc3Np
bmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0IENIQVIgICAg
ICAqUmVhc29uCisgICAgKQoreworICAgIF9fUGRvU2V0TWlzc2luZyhQZG8sIFJlYXNvbik7Cit9
CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitfX1Bkb0lzTWlzc2luZygKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gUGRvLT5NaXNzaW5nOwor
fQorCitCT09MRUFOCitQZG9Jc01pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8K
KyAgICApCit7CisgICAgcmV0dXJuIF9fUGRvSXNNaXNzaW5nKFBkbyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX1Bkb0xpbmsoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8s
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUGRvLT5GZG8gPSBG
ZG87CisgICAgRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvLCBQZG8tPkR4LT5EZXZpY2VP
YmplY3QpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9VbmxpbmsoCisgICAg
SU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAg
ICBGZG8gPSBQZG8tPkZkbzsKKworICAgIEFTU0VSVChGZG8gIT0gTlVMTCk7CisKKyAgICBGZG9S
ZW1vdmVQaHlzaWNhbERldmljZU9iamVjdChGZG8sIFBkby0+RHgtPkRldmljZU9iamVjdCk7CisK
KyAgICBQZG8tPkZkbyA9IE5VTEw7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQWEVORElTS19G
RE8KK19fUGRvR2V0RmRvKAorICAgIElOICBQWEVORElTS19QRE8gUGRvCisgICAgKQoreworICAg
IHJldHVybiBQZG8tPkZkbzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9O
X1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAor
ICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29u
dGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29udGV4dDsK
KworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19OT19JTkNS
RU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJ
UkVEOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KAor
ICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJw
CisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAgRXZlbnQ7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
LCBQQVNTSVZFX0xFVkVMKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZp
Y2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9u
VG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2VyRGV2
aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAg
ICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdCgmRXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOworICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIElycC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NP
TVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRv
Rm9yd2FyZElycEFuZEZvcmdldCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAg
IENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0
OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYg
KElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0Zvcndh
cmRJcnBBbmRGb3JnZXQoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBBbmRGb3JnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHJldHVybiBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9Db21wbGV0ZUlycCgK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIEly
cCwKKyAgICBJTiAgTlRTVEFUVVMgICAgICAgIFN0YXR1cworICAgICkKK3sKKyAgICBJcnAtPklv
U3RhdHVzLlN0YXR1cyA9IFN0YXR1czsKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4
LT5SZW1vdmVMb2NrLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5D
UkVNRU5UKTsKKyAgICByZXR1cm4gU3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElP
X0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19f
UGRvUXVlcnlQcm9wZXJ0eSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENv
bnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0Owor
ICAgIFBTVE9SQUdFX0FDQ0VTU19BTElHTk1FTlRfREVTQ1JJUFRPUiAgICBEZXNjcmlwdG9yID0g
SXJwLT5Vc2VyQnVmZmVyOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBpZiAoIU5UX1NVQ0NFU1MoSXJwLT5Jb1N0YXR1cy5TdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBEZXNjcmlwdG9yID0gSXJwLT5Vc2VyQnVmZmVy
OworICAgIFBkby0+U2VjdG9yU2l6ZSA9IERlc2NyaXB0b3ItPkJ5dGVzUGVyTG9naWNhbFNlY3Rv
cjsKKyAgICBWZXJib3NlKCIlcCA6ICV1IGJ5dGVzIHBlciBzZWN0b3JcbiIsIFBkby0+RHgtPkRl
dmljZU9iamVjdCwgUGRvLT5TZWN0b3JTaXplKTsKKworZG9uZToKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5
UHJvcGVydHkoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUFNUT1JBR0VfUFJPUEVSVFlfUVVFUlkgUXVlcnk7
CisgICAgUERFVklDRV9UUklNX0RFU0NSSVBUT1IgVHJpbTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBRdWVyeSA9IElycC0+QXNzb2NpYXRlZElycC5TeXN0ZW1C
dWZmZXI7CisKKyAgICBzd2l0Y2ggKFF1ZXJ5LT5Qcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBTdG9y
YWdlQWNjZXNzQWxpZ25tZW50UHJvcGVydHk6CisgICAgICAgIElvQ29weUN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UHJvcGVydHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBTdG9yYWdlRGV2aWNlVHJpbVByb3BlcnR5OgorICAgICAgICBUcmlt
ID0gSXJwLT5Bc3NvY2lhdGVkSXJwLlN5c3RlbUJ1ZmZlcjsKKworICAgICAgICBUcmltLT5WZXJz
aW9uID0gMDsKKyAgICAgICAgVHJpbS0+U2l6ZSA9IHNpemVvZihERVZJQ0VfVFJJTV9ERVNDUklQ
VE9SKTsKKyAgICAgICAgVHJpbS0+VHJpbUVuYWJsZWQgPSBUUlVFOworCisgICAgICAgIElycC0+
SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAoVUxPTkdfUFRSKXNpemVvZihERVZJQ0VfVFJJTV9ERVND
UklQVE9SKTsKKyAgICAgICAgc3RhdHVzID0gUGRvQ29tcGxldGVJcnAoUGRvLCBJcnAsIFNUQVRV
U19TVUNDRVNTKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0
dXMgPSBQZG9Gb3J3YXJkSXJwQW5kRm9yZ2V0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bk
b1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lE
ICAgICAgICAgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihEZXZpY2VPYmplY3QpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4
dCk7CisKKyAgICAqKElycC0+VXNlcklvc2IpID0gSXJwLT5Jb1N0YXR1czsKKworICAgIGlmIChJ
cnAtPk1kbEFkZHJlc3MpIHsKKyAgICAgICAgTW1VbmxvY2tQYWdlcyhJcnAtPk1kbEFkZHJlc3Mp
OworICAgICAgICBJb0ZyZWVNZGwoSXJwLT5NZGxBZGRyZXNzKTsKKyAgICB9CisKKyAgICBLZVNl
dEV2ZW50KElycC0+VXNlckV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIElv
RnJlZUlycChJcnApOworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVE
OworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgICAgICAgICAgUGRvLAorICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICBT
cmIKKyAgICApCit7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIElycDsKKyAgICBJ
T19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgSW9TdGF0dXM7CisgICAgS0VWRU5UICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50OworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgICAgICBTdGFj
azsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgS2VJbml0
aWFsaXplRXZlbnQoJkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOworCisgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBJcnAgPSBJb0FsbG9jYXRlSXJwKChDQ0hBUiko
UGRvLT5Mb3dlckRldmljZU9iamVjdC0+U3RhY2tTaXplICsgMSksIEZBTFNFKTsKKyAgICBpZiAo
SXJwID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFjayA9IElvR2V0TmV4
dElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTdGFjay0+TWFqb3JGdW5jdGlvbiA9IElSUF9N
Sl9TQ1NJOworICAgIFN0YWNrLT5QYXJhbWV0ZXJzLlNjc2kuU3JiID0gU3JiOworCisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19Q
ZG9TZW5kQXdhaXRTcmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICBJcnAtPlVzZXJJ
b3NiID0gJklvU3RhdHVzOworICAgIElycC0+VXNlckV2ZW50ID0gJkV2ZW50OworCisgICAgSXJw
LT5NZGxBZGRyZXNzID0gSW9BbGxvY2F0ZU1kbChTcmItPkRhdGFCdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJcnApOworICAgIGlmIChJcnAtPk1kbEFkZHJlc3MgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMyMCkKKyAgICB0cnkgeworICAg
ICAgICBNbVByb2JlQW5kTG9ja1BhZ2VzKElycC0+TWRsQWRkcmVzcywgS2VybmVsTW9kZSwgSW9S
ZWFkQWNjZXNzKTsKKyAgICB9IGV4Y2VwdCAoRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikgewor
ICAgICAgICBzdGF0dXMgPSBHZXRFeGNlcHRpb25Db2RlKCk7CisKKyAgICAgICAgZ290byBmYWls
MzsKKyAgICB9CisjcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDo2MzIwKQorICAgIAorICAgIFNyYi0+
T3JpZ2luYWxSZXF1ZXN0ID0gSXJwOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+
TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgaWYgKHN0YXR1cyA9PSBTVEFUVVNfUEVORElO
RykgeworICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZFdmVudCwgRXhlY3V0
aXZlLCBLZXJuZWxNb2RlLCBGQUxTRSwgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElvU3RhdHVz
LlN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBFcnJv
cigiZmFpbDNcbiIpOworCisgICAgSW9GcmVlTWRsKElycC0+TWRsQWRkcmVzcyk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBJb0ZyZWVJcnAoSXJwKTsKKworZmFpbDE6
CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1NldDhCeXRlcygKKyAgICBJTiAg
UFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisgICAgSU4gIFVMT05HTE9ORyAgICAgICAg
ICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVzWzBdID0gKFVDSEFSKShWYWx1ZSA+PiA1
Nik7CisgICAgQnl0ZXNbMV0gPSAoVUNIQVIpKFZhbHVlID4+IDQ4KTsKKyAgICBCeXRlc1syXSA9
IChVQ0hBUikoVmFsdWUgPj4gNDApOworICAgIEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSA+PiAz
Mik7CisgICAgQnl0ZXNbNF0gPSAoVUNIQVIpKFZhbHVlID4+IDI0KTsKKyAgICBCeXRlc1s1XSA9
IChVQ0hBUikoVmFsdWUgPj4gMTYpOworICAgIEJ5dGVzWzZdID0gKFVDSEFSKShWYWx1ZSA+PiA4
KTsKKyAgICBCeXRlc1s3XSA9IChVQ0hBUikoVmFsdWUpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19TZXQ0Qnl0ZXMoCisgICAgSU4gIFBVQ0hBUiAgICAgICAgICAgICAgICAgIEJ5
dGVzLAorICAgIElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBWYWx1ZQorICAgICkKK3sKKyAg
ICBCeXRlc1swXSA9IChVQ0hBUikoVmFsdWUgPj4gMjQpOworICAgIEJ5dGVzWzFdID0gKFVDSEFS
KShWYWx1ZSA+PiAxNik7CisgICAgQnl0ZXNbMl0gPSAoVUNIQVIpKFZhbHVlID4+IDgpOworICAg
IEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1NldDJCeXRlcygKKyAgICBJTiAgUFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisg
ICAgSU4gIFVTSE9SVCAgICAgICAgICAgICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVz
WzBdID0gKFVDSEFSKShWYWx1ZSA8PCA4KTsKKyAgICBCeXRlc1sxXSA9IChVQ0hBUikoVmFsdWUp
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19TZXRVbm1hcCgKKyAgICBJTiAgUFVO
TUFQX0xJU1RfSEVBREVSICAgICAgVW5tYXAsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAg
ICAgIExlbmd0aCwKKyAgICBJTiAgUERFVklDRV9EQVRBX1NFVF9SQU5HRSAgUmFuZ2VzLAorICAg
IElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudCwKKyAgICBJTiAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgU2VjdG9yU2l6ZQorICAgICkKK3sKKyAgICBVTE9ORyAgICAgICBJbmRleDsK
KworICAgIF9fU2V0MkJ5dGVzKFVubWFwLT5EYXRhTGVuZ3RoLCAoVVNIT1JUKUxlbmd0aCk7Cisg
ICAgX19TZXQyQnl0ZXMoVW5tYXAtPkJsb2NrRGVzY3JEYXRhTGVuZ3RoLCAoVVNIT1JUKXNpemVv
ZihVTk1BUF9CTE9DS19ERVNDUklQVE9SKSk7CisKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg
PCBDb3VudDsgKytJbmRleCkgeworICAgICAgICBUcmFjZSgiVFJJTVsleF0gJXggQCAlbGx4XG4i
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgKFVMT05HKShSYW5nZXNbSW5kZXhdLkxlbmd0aEluQnl0ZXMgLyBTZWN0b3JTaXplKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIChVTE9ORzY0KShSYW5nZXNbSW5kZXhdLlN0YXJ0aW5nT2Zm
c2V0IC8gU2VjdG9yU2l6ZSkpOworCisgICAgICAgIF9fU2V0OEJ5dGVzKFVubWFwLT5EZXNjcmlw
dG9yc1tJbmRleF0uU3RhcnRpbmdMYmEsCisgICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkc2
NCkoUmFuZ2VzW0luZGV4XS5TdGFydGluZ09mZnNldCAvIFNlY3RvclNpemUpKTsKKyAgICAgICAg
X19TZXQ0Qnl0ZXMoVW5tYXAtPkRlc2NyaXB0b3JzW0luZGV4XS5MYmFDb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChVTE9ORykoUmFuZ2VzW0luZGV4XS5MZW5ndGhJbkJ5dGVzIC8gU2Vj
dG9yU2l6ZSkpOworICAgIH0KK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9TZW5kVHJpbVN5bmNo
cm9ub3VzKAorICAgIElOICBQWEVORElTS19QRE8gICAgICAgICAgICBQZG8sCisgICAgSU4gIFBE
RVZJQ0VfREFUQV9TRVRfUkFOR0UgIFJhbmdlcywKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgQ291bnQKKyAgICApCit7CisgICAgU0NTSV9SRVFVRVNUX0JMT0NLICAgICAgICAgIFNy
YjsKKyAgICBQQ0RCICAgICAgICAgICAgICAgICAgICAgICAgQ2RiOworICAgIFBVTk1BUF9MSVNU
X0hFQURFUiAgICAgICAgICBVbm1hcDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoOworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBM
ZW5ndGggPSBzaXplb2YoVU5NQVBfTElTVF9IRUFERVIpICsgQ291bnQgKiBzaXplb2YoVU5NQVBf
QkxPQ0tfREVTQ1JJUFRPUik7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAg
IFVubWFwID0gX19QZG9BbGxvY2F0ZShMZW5ndGgpOworICAgIGlmIChVbm1hcCA9PSBOVUxMKQor
ICAgICAgICBnb3RvIGZhaWwxOworCisgICAgUnRsWmVyb01lbW9yeSgmU3JiLCBzaXplb2YoU0NT
SV9SRVFVRVNUX0JMT0NLKSk7CisgICAgU3JiLkxlbmd0aCA9IHNpemVvZihTQ1NJX1JFUVVFU1Rf
QkxPQ0spOworICAgIFNyYi5TcmJGbGFncyA9IFNSQl9GTEFHU19CWVBBU1NfRlJPWkVOX1FVRVVF
IHwgU1JCX0ZMQUdTX05PX1FVRVVFX0ZSRUVaRTsKKyAgICBTcmIuRnVuY3Rpb24gPSBTUkJfRlVO
Q1RJT05fRVhFQ1VURV9TQ1NJOworICAgIFNyYi5EYXRhQnVmZmVyID0gVW5tYXA7CisgICAgU3Ji
LkRhdGFUcmFuc2Zlckxlbmd0aCA9IExlbmd0aDsKKyAgICBTcmIuVGltZU91dFZhbHVlID0gKFVM
T05HKS0xOworICAgIFNyYi5DZGJMZW5ndGggPSAxMDsKKworICAgIENkYiA9IChQQ0RCKSZTcmIu
Q2RiWzBdOworICAgIENkYi0+VU5NQVAuT3BlcmF0aW9uQ29kZSA9IFNDU0lPUF9VTk1BUDsKKyAg
ICBfX1NldDJCeXRlcyhDZGItPlVOTUFQLkFsbG9jYXRpb25MZW5ndGgsIChVU0hPUlQpTGVuZ3Ro
KTsKKworICAgIF9fU2V0VW5tYXAoVW5tYXAsIExlbmd0aCwgUmFuZ2VzLCBDb3VudCwgUGRvLT5T
ZWN0b3JTaXplKTsKKworICAgIHN0YXR1cyA9IFBkb1NlbmRBd2FpdFNyYihQZG8sICZTcmIpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAg
X19QZG9GcmVlKFVubWFwKTsKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMjoKKyAgICBFcnJv
cigiZmFpbDJcbiIpOworCisgICAgX19QZG9GcmVlKFVubWFwKTsKKworZmFpbDE6CisgICAgRXJy
b3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvTWFuYWdlRGF0YVNldEF0dHJp
YnV0ZXMoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAg
ICAgICBJcnAKKyAgICApCit7CisgICAgUERFVklDRV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRF
UyAgQXR0cmlidXRlczsKKyAgICBQREVWSUNFX0RBVEFfU0VUX1JBTkdFICAgICAgICAgICAgICBS
YW5nZXM7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtUmFuZ2Vz
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKKworICAg
IEF0dHJpYnV0ZXMgPSBJcnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOworCisgICAgc3dp
dGNoIChBdHRyaWJ1dGVzLT5BY3Rpb24pIHsKKyAgICBjYXNlIERldmljZURzbUFjdGlvbl9Ucmlt
OgorICAgICAgICBSYW5nZXMgPSAoUERFVklDRV9EQVRBX1NFVF9SQU5HRSkoKFBVQ0hBUilBdHRy
aWJ1dGVzICsgQXR0cmlidXRlcy0+RGF0YVNldFJhbmdlc09mZnNldCk7CisgICAgICAgIE51bVJh
bmdlcyA9IEF0dHJpYnV0ZXMtPkRhdGFTZXRSYW5nZXNMZW5ndGggLyBzaXplb2YoREVWSUNFX0RB
VEFfU0VUX1JBTkdFKTsKKworICAgICAgICBzdGF0dXMgPSBQZG9TZW5kVHJpbVN5bmNocm9ub3Vz
KFBkbywgUmFuZ2VzLCBOdW1SYW5nZXMpOworCisgICAgICAgIHN0YXR1cyA9IFBkb0NvbXBsZXRl
SXJwKFBkbywgSXJwLCBzdGF0dXMpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoQ29udHJvbCgKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUxPTkcgICAgICAgICAg
ICAgICBDb250cm9sQ29kZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IENvbnRyb2xDb2RlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5EZXZpY2VJb0NvbnRyb2wu
SW9Db250cm9sQ29kZTsKKworICAgIHN3aXRjaCAoQ29udHJvbENvZGUpIHsKKyAgICBjYXNlIElP
Q1RMX1NUT1JBR0VfUVVFUllfUFJPUEVSVFk6CisgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UHJv
cGVydHkoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSU9DVExfU1RPUkFH
RV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRFUzoKKyAgICAgICAgc3RhdHVzID0gUGRvTWFuYWdl
RGF0YVNldEF0dHJpYnV0ZXMoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAg
ICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAg
ICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisg
ICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19QZG9T
ZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX1Bkb1Nl
dERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUu
RGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShQZG8tPkR4
LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19QZG9TZXREZXZpY2VQbnBT
dGF0ZShQZG8sIFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+
UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NV
Q0NFU1M7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVM
b2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dG9wUGVuZGluZyk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1F1ZXJ5U3RvcERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJ
b0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBz
dGF0dXM7CisKK2ZhaWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAg
IElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBz
dGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQor
X19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19QZG9DYW5jZWxTdG9wRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvQ2FuY2VsU3Rv
cERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAg
ICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKwor
ICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIEly
cCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgX19QZG9S
ZXN0b3JlRGV2aWNlUG5wU3RhdGUoUGRvLCBTdG9wUGVuZGluZyk7CisKKyAgICBJb0NvcHlDdXJy
ZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRp
bmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxTdG9wRGV2aWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8t
Pkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6
CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19k
cnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAor
c3RhdGljIE5UU1RBVFVTCitfX1Bkb1N0b3BEZXZpY2UoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNU
ICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBW
T0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX1BETyAgICAgICAg
UGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0
KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVu
ZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9TdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19Q
RE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBP
V0VSX1NUQVRFICAgICAgICAgUG93ZXJTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0
YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8g
ZmFpbDE7CisKKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgIT0gUG93ZXJE
ZXZpY2VEMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0
YXRlKFBkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19QZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKFBk
bywgUG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0g
UG93ZXJEZXZpY2VEMzsKKyAgICBQb1NldFBvd2VyU3RhdGUoUGRvLT5EeC0+RGV2aWNlT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICBQb3dlclN0YXRlKTsKKworZG9uZToKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBk
bywgU3RvcHBlZCk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1N0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxs
RHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2
X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRvUXVlcnlSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBY
RU5ESVNLX1BETyAgICAgICAgUGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAg
ICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9RdWVyeVJlbW92ZURl
dmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAg
ICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgUmVtb3ZlUGVuZGluZyk7CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIElvQ29weUN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UmVtb3ZlRGV2aWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2Vy
RGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAg
SXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVu
Y3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGlj
IE5UU1RBVFVTCitfX1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpF
Q1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAg
UFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAg
ICBQZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVM
b2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVD
TFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNx
dWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX1Bkb1Jlc3RvcmVE
ZXZpY2VQbnBTdGF0ZShQZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3Rh
dHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxSZW1vdmVEZXZpY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmpl
Y3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dXJwcmlzZVJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVT
X1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19QZG9TdXJwcmlzZVJlbW92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
ZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAg
c3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0
YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMK
K1Bkb1JlbW92ZURldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZk
byA9IF9fUGRvR2V0RmRvKFBkbyk7CisgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRl
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1
aXJlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NV
Q0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlmIChfX1Bkb0dldERl
dmljZVBvd2VyU3RhdGUoUGRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAgICBnb3RvIGRvbmU7
CisKKyAgICBfX1Bkb1NldERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQzKTsKKyAg
ICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBQb3dlclN5c3RlbVNodXRkb3duKTsKKwor
ICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93
ZXJTdGF0ZShQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmlj
ZVBvd2VyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCitkb25lOgor
ICAgIGlmIChfX1Bkb0lzTWlzc2luZyhQZG8pKSB7CisgICAgICAgIF9fUGRvU2V0RGV2aWNlUG5w
U3RhdGUoUGRvLCBEZWxldGVkKTsKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9ja0FuZFdhaXQo
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX19QZG9T
ZXREZXZpY2VQbnBTdGF0ZShQZG8sIEVudW1lcmF0ZWQpOworICAgICAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIH0KKworICAgIHN0YXR1cyA9
IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICBpZiAoX19QZG9Jc01pc3NpbmcoUGRv
KSkgeworICAgICAgICBGZG9BY3F1aXJlTXV0ZXgoRmRvKTsKKyAgICAgICAgUGRvRGVzdHJveShQ
ZG8pOworICAgICAgICBGZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAg
ICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4g
c3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0VqZWN0
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAg
SXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRGZG8o
UGRvKTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIF9fUGRvU2V0TWlz
c2luZyhQZG8sICJFamVjdGVkIik7CisgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJ
cnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAg
IEZkb0FjcXVpcmVNdXRleChGZG8pOworICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICBGZG9SZWxl
YXNlTXV0ZXgoRmRvKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9u
Q2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNU
QVRVUworX19QZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
ICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBNaW5vckZ1bmN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAgIHN3aXRjaCAoU3RhY2tMb2Nh
dGlvbi0+TWlub3JGdW5jdGlvbikgeworICAgIGNhc2UgSVJQX01OX1NUQVJUX0RFVklDRToKKyAg
ICAgICAgc3RhdHVzID0gUGRvU3RhcnREZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgSVJQX01OX1FVRVJZX1NUT1BfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBQ
ZG9RdWVyeVN0b3BEZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
SVJQX01OX0NBTkNFTF9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gUGRvQ2FuY2VsU3Rv
cERldmljZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fU1RP
UF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1N0b3BEZXZpY2UoUGRvLCBJcnApOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX1JFTU9WRV9ERVZJQ0U6CisgICAg
ICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UmVtb3ZlRGV2aWNlKFBkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIElSUF9NTl9TVVJQUklTRV9SRU1PVkFMOgorICAgICAgICBzdGF0dXMg
PSBQZG9TdXJwcmlzZVJlbW92YWwoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSVJQX01OX1JFTU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1JlbW92ZURldmlj
ZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fQ0FOQ0VMX1JF
TU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb0NhbmNlbFJlbW92ZURldmljZShQZG8s
IElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fRUpFQ1Q6CisgICAgICAg
IHN0YXR1cyA9IFBkb0VqZWN0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1v
dmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
ICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBucCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQ
ZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBz
dGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldERldmljZVBvd2VyVXAo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA8LCAg
X19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIlcDogJXMgLT4gJXNcbiIsCisg
ICAgICAgICBQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dlckRldmljZVN0YXRl
TmFtZShfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSksCisgICAgICAgICBQb3dlckRldmlj
ZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0YXRl
KFBkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
c3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKwor
ICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19Q
ZG9TZXREZXZpY2VQb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VS
VDNVKERldmljZVN0YXRlLCA+LCAgX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisg
ICAgVmVyYm9zZSgiJXA6ICVzIC0+ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2Jq
ZWN0LAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoX19QZG9HZXREZXZpY2VQb3dlclN0
YXRlKFBkbykpLAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsK
KworICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8sIERldmljZVN0YXRlKTsKKworICAg
IHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0RGV2aWNlUG93ZXIo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAg
ICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0
YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2
aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0
YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5T
aHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQ
b3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9u
TmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5j
aHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMg
PSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAg
ICAgICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9f
UGRvU2V0RGV2aWNlUG93ZXJEb3duKFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09
PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZp
Y2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAg
ICAgICAgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERP
ICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9f
U1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBT
eXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNr
TG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVt
U3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRl
OworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX1Bkb0dldFN5c3RlbVBvd2VyU3Rh
dGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShQZG8s
IElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsK
KworICAgIFZlcmJvc2UoIiVwOiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIFBkby0+RHgtPkRldmlj
ZU9iamVjdCwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fUGRvR2V0U3lzdGVtUG93
ZXJTdGF0ZShQZG8pKSwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRl
KSk7CisKKyAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBTeXN0ZW1TdGF0ZSk7CisK
K2RvbmU6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0
ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30K
Kworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldFN5c3RlbVBvd2VyRG93bigK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0YXRlLCA+LCAg
X19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVzIC0+
ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93ZXJT
eXN0ZW1TdGF0ZU5hbWUoX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpLAorICAgICAgICAg
UG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpKTsKKworICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJTdGF0ZShQZG8sIFN5c3RlbVN0YXRlKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJ
TkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BE
TyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElP
X1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworICAgIFBvd2VyQWN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBU
cmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShT
eXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOwor
CisgICAgaWYgKFN5c3RlbVN0YXRlID09IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pKSB7
CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsK
KyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAg
ICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoU3lzdGVtU3RhdGUgPCBfX1Bk
b0dldFN5c3RlbVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJEb3du
KFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwK
KyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAg
IFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAgICBy
ZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvUXVl
cnlEZXZpY2VQb3dlclVwKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3Rh
Y2tMb2NhdGlvbjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5U
U1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3Vy
cmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRp
b24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShE
ZXZpY2VTdGF0ZSwgPCwgIF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKTsKKworICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKworICAgIElycC0+
SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBOVFNUQVRVUworX19QZG9RdWVyeURldmljZVBvd2VyRG93bigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BPV0VSX1NU
QVRFICBEZXZpY2VTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAg
RGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmlj
ZVN0YXRlOworCisgICAgQVNTRVJUM1UoRGV2aWNlU3RhdGUsID4sICBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNs
eShQZG8sIElycCk7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQp
OworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVT
CitfX1Bkb1F1ZXJ5RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisg
ICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FU
SU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7
CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAg
ICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0
ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSks
IAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERl
dmljZVN0YXRlID09IF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9u
ZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvUXVlcnlEZXZpY2VQb3dlclVwKFBk
bywgSXJwKSA6CisgICAgICAgICAgICAgX19QZG9RdWVyeURldmljZVBvd2VyRG93bihQZG8sIEly
cCk7CisKK2RvbmU6CisgICAgVHJhY2UoIjw9PT09ICglczolcykoJTA4eClcbiIsCisgICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pLAorICAgICAgICAgIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVt
UG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0
aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJw
U3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFy
YW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0
YXRlLCA8LCAgX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworCisgICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNS
RU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5U
U1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKAorICAgIElOICBQWEVORElTS19QRE8g
ICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19T
VEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5
c3RlbVN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tM
b2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1T
dGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7
CisKKyAgICBBU1NFUlQzVShTeXN0ZW1TdGF0ZSwgPiwgIF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywg
SXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRv
UXVlcnlTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBQ
T1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5Q
YXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMp
XG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAg
ICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7CisKKyAgICBpZiAoU3lzdGVtU3Rh
dGUgPT0gX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpIHsKKyAgICAgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRl
UmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICAgICAgZ290byBkb25lOworICAg
IH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKSA/CisgICAgICAgICAgICAgX19QZG9RdWVyeVN5c3RlbVBvd2VyVXAoUGRvLCBJcnAp
IDoKKyAgICAgICAgICAgICBfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKFBkbywgSXJwKTsKKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFt
ZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBOVFNUQVRVUworUGRvRGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1RIUkVBRCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sK
KyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAg
ICAgICAgICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAg
ICBmb3IgKDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAg
ICAgICAgTWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5EZXZpY2VQb3dlcklycCA9
PSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJF
dmVudChFdmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNl
bGYpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5EZXZpY2VQb3dl
cklycDsKKworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBQZG8tPkRldmljZVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlC
YXJyaWVyKCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNr
TG9jYXRpb24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0
aW9uKSB7CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lE
KSBfX1Bkb1NldERldmljZVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRv
UXVlcnlEZXZpY2VQb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisK
K3N0YXRpYyBOVFNUQVRVUworUGRvU3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVB
RCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQ
WEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAgICAgICAg
ICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAgICAgICAg
TWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5TeXN0ZW1Qb3dlcklycCA9PSBOVUxM
KSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJFdmVudChF
dmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNlbGYpKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5TeXN0ZW1Qb3dlcklycDsK
KworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBQZG8tPlN5c3RlbVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uKSB7
CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lEKSBfX1Bk
b1NldFN5c3RlbVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRvUXVlcnlT
eXN0ZW1Qb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19QZG9EaXNwYXRjaFBvd2VyKAorICAgIElOICBQREVWSUNFX09CSkVD
VCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQ
Vk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAg
IFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVj
dCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBl
bmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxv
Y2ssIElycCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAg
ICAgTWlub3JGdW5jdGlvbjsKKyAgICBQT1dFUl9TVEFURV9UWVBFICAgIFBvd2VyVHlwZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJl
bW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIE1pbm9yRnVuY3Rpb24gPSBTdGFj
a0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uOworCisgICAgaWYgKE1pbm9yRnVuY3Rpb24gIT0gSVJQ
X01OX1FVRVJZX1BPV0VSICYmCisgICAgICAgIE1pbm9yRnVuY3Rpb24gIT0gSVJQX01OX1NFVF9Q
T1dFUikgeworICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX1Bkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dl
ckRldmljZU9iamVjdCwgSXJwKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAg
UG93ZXJUeXBlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5UeXBlOworCisgICAg
VHJhY2UoIj09PT0+ICglMDJ4OiVzKVxuIiwKKyAgICAgICAgICBNaW5vckZ1bmN0aW9uLCAKKyAg
ICAgICAgICBQb3dlck1pbm9yRnVuY3Rpb25OYW1lKE1pbm9yRnVuY3Rpb24pKTsgCisKKyAgICBz
d2l0Y2ggKFBvd2VyVHlwZSkgeworICAgIGNhc2UgRGV2aWNlUG93ZXJTdGF0ZToKKyAgICAgICAg
SW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgICAgIEFTU0VSVDNQKFBkby0+RGV2aWNlUG93
ZXJJcnAsID09LCBOVUxMKTsKKyAgICAgICAgUGRvLT5EZXZpY2VQb3dlcklycCA9IElycDsKKyAg
ICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShQZG8tPkRldmlj
ZVBvd2VyVGhyZWFkKTsKKworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFN5c3RlbVBvd2VyU3RhdGU6CisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgICAgICBBU1NFUlQzUChQZG8tPlN5c3RlbVBvd2VySXJwLCA9
PSwgTlVMTCk7CisgICAgICAgIFBkby0+U3lzdGVtUG93ZXJJcnAgPSBJcnA7CisgICAgICAgIEtl
TWVtb3J5QmFycmllcigpOworCisgICAgICAgIFRocmVhZFdha2UoUGRvLT5TeXN0ZW1Qb3dlclRo
cmVhZCk7CisKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX1BFTkRJTkc7CisgICAgICAgIGJyZWFr
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBvd2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVy
KFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIFRyYWNlKCI8PT09PSAoJTAyeDolcykgKCUwOHgpXG4iLAorICAgICAgICAgIE1pbm9yRnVu
Y3Rpb24sIAorICAgICAgICAgIFBvd2VyTWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbiks
CisgICAgICAgICAgc3RhdHVzKTsKKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWls
MToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0
YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19J
TkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJ
TkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAg
IFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2so
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
CisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaERlZmF1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3Qs
IElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7
CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElT
S19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAg
IFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1ham9yRnVuY3Rpb24p
IHsKKyAgICBjYXNlIElSUF9NSl9ERVZJQ0VfQ09OVFJPTDoKKyAgICAgICAgc3RhdHVzID0gUGRv
RGlzcGF0Y2hDb250cm9sKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NSl9QTlA6CisgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUG5wKFBkbywgSXJwKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NSl9QT1dFUjoKKyAgICAgICAgc3RhdHVzID0g
UGRvRGlzcGF0Y2hQb3dlcihQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0Y2hEZWZhdWx0KFBkbywgSXJwKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bk
b0NyZWF0ZSgKKyAgICBQWEVORElTS19GRE8gICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICBQ
REVWSUNFX09CSkVDVCAgICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJEZXZpY2VPYmpl
Y3Q7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VUeXBlOworICAg
IFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgRmlsdGVyRGV2aWNlT2JqZWN0OworICAg
IFBYRU5ESVNLX0RYICAgICAgICAgICAgICAgICAgICAgRHg7CisgICAgUFhFTkRJU0tfUERPICAg
ICAgICAgICAgICAgICAgICBQZG87CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBMb3dlckRldmljZU9iamVjdCA9IElvR2V0QXR0YWNoZWREZXZpY2VS
ZWZlcmVuY2UoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIERldmljZVR5cGUgPSBMb3dlckRl
dmljZU9iamVjdC0+RGV2aWNlVHlwZTsKKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0KExvd2VyRGV2
aWNlT2JqZWN0KTsKKworI3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTk3KSAvLyBQb3NzaWJs
eSBsZWFraW5nIG1lbW9yeSAnUGh5c2ljYWxEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9D
cmVhdGVEZXZpY2UoRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKFhFTkRJU0tfRFgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFX0RFVklDRV9TRUNVUkVfT1BFTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmls
dGVyRGV2aWNlT2JqZWN0KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
Z290byBmYWlsMTsKKworICAgIER4ID0gKFBYRU5ESVNLX0RYKUZpbHRlckRldmljZU9iamVjdC0+
RGV2aWNlRXh0ZW5zaW9uOworICAgIFJ0bFplcm9NZW1vcnkoRHgsIHNpemVvZiAoWEVORElTS19E
WCkpOworCisgICAgRHgtPlR5cGUgPSBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUOworICAgIER4LT5E
ZXZpY2VPYmplY3QgPSBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgRHgtPkRldmljZVBucFN0YXRl
ID0gUHJlc2VudDsKKyAgICBEeC0+U3lzdGVtUG93ZXJTdGF0ZSA9IFBvd2VyU3lzdGVtU2h1dGRv
d247CisgICAgRHgtPkRldmljZVBvd2VyU3RhdGUgPSBQb3dlckRldmljZUQzOworCisgICAgSW9J
bml0aWFsaXplUmVtb3ZlTG9jaygmRHgtPlJlbW92ZUxvY2ssIFBET19UQUcsIDAsIDApOworCisg
ICAgUGRvID0gX19QZG9BbGxvY2F0ZShzaXplb2YgKFhFTkRJU0tfUERPKSk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChQZG8gPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9BdHRhY2hEZXZpY2VUb0Rldmlj
ZVN0YWNrKEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbERldmljZU9iamVjdCk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlmIChMb3dlckRldmljZU9iamVjdCA9PSBO
VUxMKQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgUGRvLT5EeCA9IER4OworICAgIFBkby0+
UGh5c2ljYWxEZXZpY2VPYmplY3QgPSBQaHlzaWNhbERldmljZU9iamVjdDsKKyAgICBQZG8tPkxv
d2VyRGV2aWNlT2JqZWN0ID0gTG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUGRvLT5TZWN0b3JTaXpl
ID0gNTEyOworCisgICAgc3RhdHVzID0gVGhyZWFkQ3JlYXRlKFBkb1N5c3RlbVBvd2VyLCBQZG8s
ICZQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsNDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShQZG9EZXZp
Y2VQb3dlciwgUGRvLCAmUGRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDU7CisKKyAgICBWZXJib3NlKCIlcFxuIiwg
RmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5QZG8gPSBQZG87CisKKyNwcmFnbWEgcHJl
ZmFzdChzdXBwcmVzczoyODE4MikgLy8gRGVyZWZlcmVuY2luZyBOVUxMIHBvaW50ZXIKKyAgICBG
aWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZVR5cGUgPSBMb3dlckRldmljZU9iamVjdC0+RGV2aWNl
VHlwZTsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkNoYXJhY3RlcmlzdGljcyA9IExvd2VyRGV2
aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3M7CisKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkZs
YWdzIHw9IExvd2VyRGV2aWNlT2JqZWN0LT5GbGFnczsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3Qt
PkZsYWdzICY9IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOworCisgICAgX19QZG9MaW5rKFBkbywg
RmRvKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3Io
ImZhaWw1XG4iKTsKKworICAgIFRocmVhZEFsZXJ0KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIFRocmVhZEpvaW4oUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgUGRvLT5TeXN0ZW1Q
b3dlclRocmVhZCA9IE5VTEw7CisKK2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAg
ICBQZG8tPlBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNl
KExvd2VyRGV2aWNlT2JqZWN0KTsKKworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKwor
ICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOworICAg
IF9fUGRvRnJlZShQZG8pOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAg
SW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZP
SUQKK1Bkb0Rlc3Ryb3koCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7Cisg
ICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdCA9IFBkby0+TG93ZXJEZXZp
Y2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IFBkby0+RHg7CisgICAgUERF
VklDRV9PQkpFQ1QgICAgICBGaWx0ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0Owor
CisgICAgQVNTRVJUM1UoX19QZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pLCA9PSwgRGVsZXRlZCk7
CisKKyAgICBBU1NFUlQoX19QZG9Jc01pc3NpbmcoUGRvKSk7CisgICAgUGRvLT5NaXNzaW5nID0g
RkFMU0U7CisKKyAgICBfX1Bkb1VubGluayhQZG8pOworCisgICAgVmVyYm9zZSgiJXAgKCVzKVxu
IiwKKyAgICAgICAgIEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgIFBkby0+UmVhc29uKTsK
KyAgICBQZG8tPlJlYXNvbiA9IE5VTEw7CisKKyAgICBEeC0+UGRvID0gTlVMTDsKKworICAgIFRo
cmVhZEFsZXJ0KFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oUGRvLT5E
ZXZpY2VQb3dlclRocmVhZCk7CisgICAgUGRvLT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisK
KyAgICBUaHJlYWRBbGVydChQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2lu
KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFBkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBO
VUxMOworCisgICAgUGRvLT5TZWN0b3JTaXplID0gMDsKKyAgICBQZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQ
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOwor
ICAgIF9fUGRvRnJlZShQZG8pOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2Jq
ZWN0KTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmggYi9zcmMveGVuZGlzay9w
ZG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTJlNWQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmgKQEAgLTAsMCArMSw5MCBAQAorLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAK
KyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
CisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAq
IFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVmIF9YRU5ESVNLX1BET19ICisjZGVmaW5lIF9Y
RU5ESVNLX1BET19ICisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgInR5cGVzLmgiCisj
aW5jbHVkZSAiZmRvLmgiCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX1BETyBYRU5ESVNLX1BE
TywgKlBYRU5ESVNLX1BETzsKKworZXh0ZXJuIFZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAor
ICAgIElOICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFU
RSAgICBTdGF0ZQorICAgICk7CisKK2V4dGVybiBERVZJQ0VfUE5QX1NUQVRFCitQZG9HZXREZXZp
Y2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICk7CisKK2V4dGVy
biBQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoCisgICAgSU4gIFBY
RU5ESVNLX1BETyAgICBQZG8KKyAgICApOworCitleHRlcm4gQk9PTEVBTgorUGRvSXNNaXNzaW5n
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK1Bk
b1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0
IENIQVIgICAgICAqUmVhc29uCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4KK1Bkb0lzTWFza2Vk
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVT
CitQZG9DcmVhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJ
Q0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitQ
ZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJu
IE5UU1RBVFVTCitQZG9EaXNwYXRjaCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAg
ICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICk7CisKKyNlbmRpZiAvLyBfWEVORElTS19Q
RE9fSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svdGhyZWFkLmMgYi9zcmMveGVuZGlzay90aHJl
YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmUyYjk0Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svdGhyZWFkLmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8bnRkZGsuaD4KKworI2luY2x1ZGUg
InRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisjaW5j
bHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFRIUkVBRF9QT09MICdFUkhUJworCitzdHJ1Y3QgX1hF
TkRJU0tfVEhSRUFEIHsKKyAgICBYRU5ESVNLX1RIUkVBRF9GVU5DVElPTiBGdW5jdGlvbjsKKyAg
ICBQVk9JRCAgICAgICAgICAgICAgICAgICBDb250ZXh0OworICAgIEtFVkVOVCAgICAgICAgICAg
ICAgICAgIEV2ZW50OworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEFsZXJ0ZWQ7CisgICAg
TE9ORyAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKKyAgICBQS1RIUkVBRCAgICAgICAg
ICAgICAgICBUaHJlYWQ7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fVGhyZWFk
QWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAgIHJldHVybiBf
X0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBMZW5n
dGgsIFRIUkVBRF9QT09MKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fVGhyZWFk
RnJlZSgKKyAgICBJTiAgUFZPSUQgICBCdWZmZXIKKyAgICApCit7CisgICAgX19GcmVlUG9vbFdp
dGhUYWcoQnVmZmVyLCBUSFJFQURfUE9PTCk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQKKyAgICApCit7
CisgICAgS2VTZXRFdmVudCgmVGhyZWFkLT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7
Cit9CisKK1ZPSUQKK1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQK
KyAgICApCit7CisgICAgX19UaHJlYWRXYWtlKFRocmVhZCk7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJFQUQgVGhyZWFk
CisgICAgKQoreworICAgIFRocmVhZC0+QWxlcnRlZCA9IFRSVUU7CisgICAgX19UaHJlYWRXYWtl
KFRocmVhZCk7Cit9CisKK1ZPSUQKK1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJF
QUQgVGhyZWFkCisgICAgKQoreworICAgIF9fVGhyZWFkQWxlcnQoVGhyZWFkKTsKK30KKworS1NU
QVJUX1JPVVRJTkUgIFRocmVhZEZ1bmN0aW9uOworCitWT0lECitUaHJlYWRGdW5jdGlvbigKKyAg
ICBJTiAgUFZPSUQgICAgICAgQXJndW1lbnQKKyAgICApCit7CisgICAgUFhFTkRJU0tfVEhSRUFE
IFNlbGYgPSBBcmd1bWVudDsKKyAgICBOVFNUQVRVUyAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gU2VsZi0+RnVuY3Rpb24oU2VsZiwgU2VsZi0+Q29udGV4dCk7CisKKyAgICBpZiAoSW50
ZXJsb2NrZWREZWNyZW1lbnQoJlNlbGYtPlJlZmVyZW5jZXMpID09IDApCisgICAgICAgIF9fVGhy
ZWFkRnJlZShTZWxmKTsKKworICAgIFBzVGVybWluYXRlU3lzdGVtVGhyZWFkKHN0YXR1cyk7Cisg
ICAgLy8gTk9UIFJFQUNIRUQKK30KKworTlRTVEFUVVMKK1RocmVhZENyZWF0ZSgKKyAgICBJTiAg
WEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICpUaHJl
YWQKKyAgICApCit7CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VH
ZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9MRVZFTCk7CisKKyAgICAoKlRocmVhZCkgPSBf
X1RocmVhZEFsbG9jYXRlKHNpemVvZiAoWEVORElTS19USFJFQUQpKTsKKworICAgIHN0YXR1cyA9
IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYgKCpUaHJlYWQgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgICgqVGhyZWFkKS0+RnVuY3Rpb24gPSBGdW5jdGlvbjsKKyAgICAoKlRo
cmVhZCktPkNvbnRleHQgPSBDb250ZXh0OworICAgICgqVGhyZWFkKS0+QWxlcnRlZCA9IEZBTFNF
OworICAgICgqVGhyZWFkKS0+UmVmZXJlbmNlcyA9IDI7IC8vIE9uZSBmb3IgdXMsIG9uZSBmb3Ig
dGhlIHRocmVhZCBmdW5jdGlvbgorCisgICAgS2VJbml0aWFsaXplRXZlbnQoJigqVGhyZWFkKS0+
RXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7CisKKyAgICBzdGF0dXMgPSBQc0NyZWF0
ZVN5c3RlbVRocmVhZCgmSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNUQU5EQVJEX1JJR0hUU19BTEwgfCBTUEVDSUZJQ19SSUdIVFNfQUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZEZ1bmN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpUaHJlYWQpOworICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKSB7CisgICAgICAgIC0tKCpUaHJlYWQpLT5SZWZlcmVuY2VzOyAgICAvLyBGYWtlIHRo
cmVhZCBmdW5jdGlvbiB0ZXJtaW5hdGlvbgorICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKwor
ICAgIHN0YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUoSGFuZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lOQ0hST05JWkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqUHNUaHJlYWRUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYoKlRocmVhZCktPlRocmVhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgWndDbG9zZShIYW5kbGUpOworCisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMzoKKyAgICBFcnJvcigiZmFpbDNcbiIpOworCisg
ICAgX19UaHJlYWRBbGVydCgqVGhyZWFkKTsKKyAgICBad0Nsb3NlKEhhbmRsZSk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQo
JigqVGhyZWFkKS0+UmVmZXJlbmNlcykgPT0gMCkKKyAgICAgICAgX19UaHJlYWRGcmVlKCpUaHJl
YWQpOworCisgICAgKlRocmVhZCA9IE5VTEw7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAo
JTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQS0VWRU5UCitU
aHJlYWRHZXRFdmVudCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sK
KyAgICByZXR1cm4gJlRocmVhZC0+RXZlbnQ7Cit9CisKK0JPT0xFQU4KK1RocmVhZElzQWxlcnRl
ZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sKKyAgICByZXR1cm4g
VGhyZWFkLT5BbGVydGVkOworfQorCitWT0lECitUaHJlYWRKb2luKAorICAgIElOICBQWEVORElT
S19USFJFQUQgVGhyZWFkCisgICAgKQoreworICAgIExPTkcgICAgICAgICAgICAgICAgUmVmZXJl
bmNlczsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVW
RUwpOworICAgIEFTU0VSVDNQKEtlR2V0Q3VycmVudFRocmVhZCgpLCAhPSwgVGhyZWFkLT5UaHJl
YWQpOworCisgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdChUaHJlYWQtPlRocmVhZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OworCisgICAgUmVmZXJlbmNlcyA9IEludGVybG9ja2VkRGVjcmVtZW50KCZUaHJlYWQtPlJlZmVy
ZW5jZXMpOworICAgIEFTU0VSVDNVKFJlZmVyZW5jZXMsID09LCAwKTsKKworICAgIF9fVGhyZWFk
RnJlZShUaHJlYWQpOworfQorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90aHJlYWQuaCBiL3Ny
Yy94ZW5kaXNrL3RocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYz
YjQ5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay90aHJlYWQuaApAQCAtMCwwICsx
LDc0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAq
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19U
SFJFQURfSAorI2RlZmluZSBfWEVORElTS19USFJFQURfSAorCisjaW5jbHVkZSA8bnRkZGsuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX1hFTkRJU0tfVEhSRUFEIFhFTkRJU0tfVEhSRUFELCAqUFhFTkRJ
U0tfVEhSRUFEOworCit0eXBlZGVmIE5UU1RBVFVTICgqWEVORElTS19USFJFQURfRlVOQ1RJT04p
KFBYRU5ESVNLX1RIUkVBRCwgUFZPSUQpOworCitleHRlcm4gTlRTVEFUVVMKK1RocmVhZENyZWF0
ZSgKKyAgICBJTiAgWEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBW
T0lEICAgICAgICAgICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAg
ICAgICAgICpUaHJlYWQKKyAgICApOworCitleHRlcm4gUEtFVkVOVAorVGhyZWFkR2V0RXZlbnQo
CisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBTZWxmCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4K
K1RocmVhZElzQWxlcnRlZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYKKyAgICApOwor
CitleHRlcm4gVk9JRAorVGhyZWFkV2FrZSgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVh
ZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRBbGVydCgKKyAgICBJTiAgUFhFTkRJU0tf
VEhSRUFEIFRocmVhZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRKb2luKAorICAgIElO
ICBQWEVORElTS19USFJFQUQgVGhyZWFkCisgICAgKTsKKworI2VuZGlmICAvLyBfWEVORElTS19U
SFJFQURfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90eXBlcy5oIGIvc3JjL3hlbmRpc2sv
dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmI0MjE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svdHlwZXMuaApAQCAtMCwwICsxLDUzIEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19UWVBFU19ICisjZGVm
aW5lIF9YRU5ESVNLX1RZUEVTX0gKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfT0JKRUNUX1RZUEUg
eworICAgIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QgPSAnT0RQJywKKyAgICBGVU5DVElPTl9ERVZJ
Q0VfT0JKRUNUID0gJ09ERicKK30gREVWSUNFX09CSkVDVF9UWVBFLCAqUERFVklDRV9PQkpFQ1Rf
VFlQRTsKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfUE5QX1NUQVRFIHsKKyAgICBJbnZhbGlkID0g
MCwKKyAgICBQcmVzZW50LCAgICAgICAgLy8gUERPIG9ubHkKKyAgICBFbnVtZXJhdGVkLCAgICAg
Ly8gUERPIG9ubHkKKyAgICBBZGRlZCwgICAgICAgICAgLy8gRkRPIG9ubHkKKyAgICBTdGFydGVk
LAorICAgIFN0b3BQZW5kaW5nLAorICAgIFN0b3BwZWQsCisgICAgUmVtb3ZlUGVuZGluZywKKyAg
ICBTdXJwcmlzZVJlbW92ZVBlbmRpbmcsCisgICAgRGVsZXRlZAorfSBERVZJQ0VfUE5QX1NUQVRF
LCAqUERFVklDRV9QTlBfU1RBVEU7CisKKyNlbmRpZiAgLy8gX1hFTkRJU0tfVFlQRVNfSApkaWZm
IC0tZ2l0IGEvc3JjL3hlbmRpc2svdXRpbC5oIGIvc3JjL3hlbmRpc2svdXRpbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YWRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9z
cmMveGVuZGlzay91dGlsLmgKQEAgLTAsMCArMSwyMjIgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0
cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywgCisgKiB3aXRoIG9y
IHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIAorICogdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAgIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisgKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisgKiBTVUNIIERBTUFH
RS4KKyAqLyAKKworI2lmbmRlZiBfVVRJTF9ICisjZGVmaW5lIF9VVElMX0gKKworI2luY2x1ZGUg
PG50ZGRrLmg+CisKKyNpbmNsdWRlICJhc3NlcnQuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX05PTl9Q
QUdFRF9CVUZGRVJfSEVBREVSIHsKKyAgICBTSVpFX1QgIExlbmd0aDsKKyAgICBVTE9ORyAgIFRh
ZzsKK30gTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIsICpQTk9OX1BBR0VEX0JVRkZFUl9IRUFERVI7
CisKK3R5cGVkZWYgc3RydWN0IF9OT05fUEFHRURfQlVGRkVSX1RSQUlMRVIgeworICAgIFVMT05H
ICAgVGFnOworfSBOT05fUEFHRURfQlVGRkVSX1RSQUlMRVIsICpQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fQWxsb2NhdGVOb25QYWdlZFBv
b2xXaXRoVGFnKAorICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICBDYWxsZXIsCisgICAg
SU4gIFVMT05HICAgICAgICAgICAgICAgICAgIExpbmUsCisgICAgSU4gIFNJWkVfVCAgICAgICAg
ICAgICAgICAgIExlbmd0aCwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgVGFnCisg
ICAgKQoreworICAgIFBVQ0hBUiAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI7CisgICAgUE5P
Tl9QQUdFRF9CVUZGRVJfSEVBREVSICAgIEhlYWRlcjsKKyAgICBQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSICAgVHJhaWxlcjsKKworICAgIEFTU0VSVDNTKExlbmd0aCwgIT0sIDApOworCisgICAg
QnVmZmVyID0gKFBVQ0hBUilFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZF
Ul9UUkFJTEVSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFnKTsKKyAg
ICBpZiAoQnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBBbGxvY0Zh
aWxlZCAlZCBieXRlcywgJTA4eCB0YWdcbiIsIENhbGxlciwgTGluZSwgTGVuZ3RoLCBUYWcpOwor
ICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUnRsWmVyb01lbW9yeShCdWZmZXIsIAor
ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05fUEFHRURfQlVGRkVSX0hFQURFUikgKworICAg
ICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BB
R0VEX0JVRkZFUl9UUkFJTEVSKSk7CisKKyAgICBIZWFkZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKUJ1ZmZlcjsKKyAgICBIZWFkZXItPkxlbmd0aCA9IExlbmd0aDsKKyAgICBIZWFkZXIt
PlRhZyA9IFRhZzsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJfSEVB
REVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUikoQnVmZmVy
ICsgTGVuZ3RoKTsKKyAgICBUcmFpbGVyLT5UYWcgPSBUYWc7CisKK2RvbmU6CisgICAgcmV0dXJu
IEJ1ZmZlcjsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRnJlZVBvb2xXaXRoVGFn
KAorICAgIElOICBQVk9JRCAgICAgICAgICAgICAgICAgICBfQnVmZmVyLAorICAgIElOICBVTE9O
RyAgICAgICAgICAgICAgICAgICBUYWcKKyAgICApCit7CisgICAgUFVDSEFSICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlciA9IChQVUNIQVIpX0J1ZmZlcjsKKyAgICBTSVpFX1QgICAgICAgICAg
ICAgICAgICAgICAgTGVuZ3RoOworICAgIFBOT05fUEFHRURfQlVGRkVSX0hFQURFUiAgICBIZWFk
ZXI7CisgICAgUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUiAgIFRyYWlsZXI7CisKKyAgICBBU1NF
UlQzUChCdWZmZXIsICE9LCBOVUxMKTsKKworICAgIEJ1ZmZlciAtPSBzaXplb2YgKE5PTl9QQUdF
RF9CVUZGRVJfSEVBREVSKTsKKworICAgIEhlYWRlciA9IChQTk9OX1BBR0VEX0JVRkZFUl9IRUFE
RVIpQnVmZmVyOworICAgIEFTU0VSVDNVKFRhZywgPT0sIEhlYWRlci0+VGFnKTsKKyAgICBMZW5n
dGggPSBIZWFkZXItPkxlbmd0aDsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9C
VUZGRVJfSEVBREVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxF
UikoQnVmZmVyICsgTGVuZ3RoKTsKKyAgICBBU1NFUlQzVShUYWcsID09LCBUcmFpbGVyLT5UYWcp
OworCisgICAgQnVmZmVyIC09IHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIpOworCisg
ICAgUnRsRmlsbE1lbW9yeShCdWZmZXIsIAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05f
UEFHRURfQlVGRkVSX0hFQURFUikgKworICAgICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAg
ICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9UUkFJTEVSKSwKKyAgICAgICAg
ICAgICAgICAgIDB4QUEpOworCisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBUYWcpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUE1ETAorX19BbGxvY1BhZ2VzRm9yTWRsKAorICAgIElO
ICBTSVpFX1QgICAgICAgICAgU2l6ZQorICAgICkKK3sKKyAgICBQTURMICAgICAgICAgICAgICAg
IE1kbDsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIExvd0FkZHI7CisgICAgUEhZU0lDQUxfQURE
UkVTUyAgICBIaWdoQWRkcjsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIFNraXBCeXRlczsKKwor
ICAgIFNraXBCeXRlcy5RdWFkUGFydCA9IDB1bGw7CisgICAgSGlnaEFkZHIuUXVhZFBhcnQgPSB+
MHVsbDsKKworICAgIC8vIHRyeSA+IDRHQgorICAgIExvd0FkZHIuUXVhZFBhcnQgPSAweDEwMDAw
MDAwMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdo
QWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAg
ICAgICBpZiAoTW1HZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBn
b3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7Cisg
ICAgICAgIEV4RnJlZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAg
ICAvLyB0cnkgPiAyR0IKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHg4MDAwMDAwMHVsbDsKKyAg
ICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5
dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAgICAgICBpZiAoTW1H
ZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBnb3RvIGRvbmU7Cisg
ICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7CisgICAgICAgIEV4RnJl
ZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyB0cnkgYW55
d2hlcmUKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRl
UGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hl
ZCwgMCk7CisgICAgLy8gTWRsIGJ5dGUgY291bnQgZ2V0cyBjaGVja2VkIGFnYWluIGFmdGVyIHRo
aXMgcmV0dXJucworCitkb25lOgorICAgIHJldHVybiBNZGw7Cit9CitzdGF0aWMgRk9SQ0VJTkxJ
TkUgUFZPSUQKK19fX0FsbG9jUGFnZXMoCisgICAgSU4gIFBDSEFSICAgICAgICAgICBDYWxsZXIs
IAorICAgIElOICBVTE9ORyAgICAgICAgICAgTGluZSwKKyAgICBJTiAgU0laRV9UICAgICAgICAg
IFNpemUsCisgICAgT1VUIFBNREwqICAgICAgICAgICBNZGwKKyAgICApCit7CisgICAgUFZPSUQg
ICAgICAgICAgICAgICBCdWZmZXI7CisKKyAgICAqTWRsID0gX19BbGxvY1BhZ2VzRm9yTWRsKFNp
emUpOworICAgIGlmICgqTWRsID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBN
bUFsbG9jYXRlUGFnZXNGb3JNZGxFeCBGYWlsZWQgJWQgYnl0ZXNcbiIsIENhbGxlciwgTGluZSwg
U2l6ZSk7CisgICAgICAgIGdvdG8gZmFpbDE7CisgICAgfQorCisgICAgaWYgKE1tR2V0TWRsQnl0
ZUNvdW50KCpNZGwpICE9IFNpemUpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiAlZCBieXRl
cyAhPSAlZCBieXRlcyByZXF1ZXN0ZWRcbiIsIENhbGxlciwgTGluZSwgTW1HZXRNZGxCeXRlQ291
bnQoKk1kbCksIFNpemUpOworICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKworICAgIEJ1ZmZl
ciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5Q2FjaGUoKk1kbCwgS2VybmVsTW9kZSwgTW1DYWNo
ZWQsIE5VTEwsIEZBTFNFLCBOb3JtYWxQYWdlUHJpb3JpdHkpOworICAgIGlmIChCdWZmZXIgPT0g
TlVMTCkgeworICAgICAgICBXYXJuaW5nKCIlczoldSA6IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5
Q2FjaGUgRmFpbGVkICVkIGJ5dGVzXG4iLCBDYWxsZXIsIExpbmUsIFNpemUpOworICAgICAgICBn
b3RvIGZhaWwzOworICAgIH0KKworICAgIHJldHVybiBCdWZmZXI7CisKK2ZhaWwzOgorZmFpbDI6
CisgICAgTW1GcmVlUGFnZXNGcm9tTWRsKCpNZGwpOworICAgIEV4RnJlZVBvb2woKk1kbCk7Citm
YWlsMToKKyAgICAqTWRsID0gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNkZWZpbmUgX19B
bGxvY1BhZ2VzKFNpemUsIE1kbCkgX19fQWxsb2NQYWdlcyhfX0ZVTkNUSU9OX18sIF9fTElORV9f
LCBTaXplLCBNZGwpCisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0ZyZWVQYWdlcygKKyAg
ICBJTiAgUFZPSUQgICAgICAgICAgIEJ1ZmZlciwKKyAgICBJTiAgUE1ETCAgICAgICAgICAgIE1k
bAorICAgICkKK3sKKyAgICBpZiAoQnVmZmVyICYmIE1kbCkgeworICAgICAgICBNbVVubWFwTG9j
a2VkUGFnZXMoQnVmZmVyLCBNZGwpOworICAgICAgICBNbUZyZWVQYWdlc0Zyb21NZGwoTWRsKTsK
KyAgICAgICAgRXhGcmVlUG9vbChNZGwpOworICAgIH0KK30KKworI2VuZGlmICAvLyBfVVRJTF9I
CmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay94ZW5kaXNrLnJjIGIvc3JjL3hlbmRpc2sveGVuZGlz
ay5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2E4ZjYwCi0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2sveGVuZGlzay5yYwpAQCAtMCwwICsxLDU2IEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisgKiBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQorICogZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyCisgKiBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisg
KiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+
CisjaW5jbHVkZSA8bnR2ZXJwLmg+CisKKworI3VuZGVmIFZFUl9DT01QQU5ZTkFNRV9TVFIKKyN1
bmRlZiBWRVJfUFJPRFVDVE5BTUVfU1RSCisjdW5kZWYgVkVSX1BST0RVQ1RWRVJTSU9OCisjdW5k
ZWYgVkVSX1BST0RVQ1RWRVJTSU9OX1NUUgorCisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisjZGVm
aW5lIFZFUl9DT01QQU5ZTkFNRV9TVFIgCQlDT01QQU5ZX05BTUVfU1RSCisjZGVmaW5lIFZFUl9M
RUdBTENPUFlSSUdIVF9TVFIgCQkiQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuIgor
CisjZGVmaW5lIFZFUl9QUk9EVUNUTkFNRV9TVFIgCQkiWEVORElTSyIKKyNkZWZpbmUgVkVSX1BS
T0RVQ1RWRVJTSU9OIAkJCU1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixNSUNST19WRVJTSU9O
LEJVSUxEX05VTUJFUgorI2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT05fU1RSIAkJTUFKT1JfVkVS
U0lPTl9TVFIgIi4iIE1JTk9SX1ZFUlNJT05fU1RSICIuIiBNSUNST19WRVJTSU9OX1NUUiAiLiIg
QlVJTERfTlVNQkVSX1NUUgorCisjZGVmaW5lIFZFUl9JTlRFUk5BTE5BTUVfU1RSIAkJIlhFTkRJ
U0suU1lTIgorI2RlZmluZSBWRVJfRklMRURFU0NSSVBUSU9OX1NUUiAJIlhFTkRJU0siCisKKyNk
ZWZpbmUgVkVSX0ZJTEVUWVBFIAkJCQlWRlRfRFJWCisjZGVmaW5lIFZFUl9GSUxFU1VCVFlQRSAJ
CQlWRlQyX0RSVl9TWVNURU0KKworI2luY2x1ZGUgPGNvbW1vbi52ZXI+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC5pbmYgYi9zcmMveGVudmJkLmlu
ZgppbmRleCBiYzg2MjdiLi4yMGJkMzhhIDEwMDY0NAotLS0gYS9zcmMveGVudmJkLmluZgorKysg
Yi9zcmMveGVudmJkLmluZgpAQCAtNDUsNiArNDUsNyBAQCBDb0luc3RfQ29weUZpbGVzPTExCiAK
IFtTb3VyY2VEaXNrc0ZpbGVzXQogeGVudmJkLnN5cz0wLCwKK3hlbmRpc2suc3lzPTAsLAogeGVu
Y3JzaC5zeXM9MCwsCiB4ZW52YmRfY29pbnN0LmRsbD0wLCwKIApAQCAtNTksMTIgKzYwLDIwIEBA
IHhlbnZiZF9jb2luc3QuZGxsPTAsLAogW1hlblZiZF9JbnN0XSAKIENvcHlGaWxlcz1YZW5WYmRf
Q29weWZpbGVzCiAKK1tYZW5WYmRfSW5zdC5IV10KK0FkZFJlZz1YZW5WYmRfQWRkUmVnCisKK1tY
ZW5WYmRfQWRkUmVnXQorSEtSLCwiVXBwZXJGaWx0ZXJzIiwweDAwMDEwMDAwLCJ4ZW5kaXNrIgor
CiBbWGVuVmJkX0NvcHlmaWxlc10KIHhlbnZiZC5zeXMKK3hlbmRpc2suc3lzCiB4ZW5jcnNoLnN5
cwogCiBbWGVuVmJkX0luc3QuU2VydmljZXNdIAogQWRkU2VydmljZT14ZW52YmQsMixYZW5WYmRf
U2VydmljZSwKK0FkZFNlcnZpY2U9eGVuZGlzaywsWGVuRGlza19TZXJ2aWNlLAogCiBbWGVuVmJk
X1NlcnZpY2VdIAogRGlzcGxheU5hbWU9JVhlblZiZERlc2MlCkBAIC03NSw2ICs4NCwxNCBAQCBT
ZXJ2aWNlQmluYXJ5PSUxMiVceGVudmJkLnN5cwogTG9hZE9yZGVyR3JvdXA9IlNjc2kgTWluaXBv
cnQiCiBBZGRSZWc9WGVuVmJkX1BhcmFtZXRlcnMKIAorW1hlbkRpc2tfU2VydmljZV0KK0Rpc3Bs
YXlOYW1lPSVYZW5EaXNrRGVzYyUKK1NlcnZpY2VUeXBlPSVTRVJWSUNFX0tFUk5FTF9EUklWRVIl
CitTdGFydFR5cGU9JVNFUlZJQ0VfQk9PVF9TVEFSVCUKK0Vycm9yQ29udHJvbD0lU0VSVklDRV9F
UlJPUl9OT1JNQUwlCitTZXJ2aWNlQmluYXJ5PSUxMiVceGVuZGlzay5zeXMKK0xvYWRPcmRlckdy
b3VwPSJTY3NpIE1pbmlwb3J0IgorCiBbWGVuVmJkX1BhcmFtZXRlcnNdIAogSEtSLCJQYXJhbWV0
ZXJzIiwsMHgwMDAwMDAxMAogSEtSLCJQYXJhbWV0ZXJzIiwiQnVzVHlwZSIsMHgwMDAxMDAwMSww
eDAwMDAwMDAxIApAQCAtOTUsNiArMTEyLDcgQEAgSEtSLCxDb0luc3RhbGxlcnMzMiwweDAwMDEw
MDAwLCJ4ZW52YmRfY29pbnN0X0BNQUpPUl9WRVJTSU9OQF9ATUlOT1JfVkVSU0lPTkBfQE0KIENv
bXBhbnkgPSAiQENPTVBBTllfTkFNRUAiCiBEaXNrRGVzYyA9ICJAUFJPRFVDVF9OQU1FQCBQViBT
dG9yYWdlIEhvc3QgQWRhcHRlciBQYWNrYWdlIiAKIFhlblZiZERlc2M9ICJAUFJPRFVDVF9OQU1F
QCBQViBTdG9yYWdlIEhvc3QgQWRhcHRlciIKK1hlbkRpc2tEZXNjPSAiQFBST0RVQ1RfTkFNRUAg
UFYgU3RvcmFnZSBGaWx0ZXIiCiAKIFNFUlZJQ0VfQk9PVF9TVEFSVCA9IDB4MCAKIFNFUlZJQ0Vf
U1lTVEVNX1NUQVJUID0gMHgxIApkaWZmIC0tZ2l0IGEvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qIGIvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qCmluZGV4IDVlNWZjYmMuLmUw
MjlkMTMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi9wYWNrYWdlL3BhY2thZ2UudmN4cHJvagorKysgYi92
czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAgLTQ4LDYgKzQ4LDkgQEAKIAkJPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiPgogCQkJPFBy
b2plY3Q+ezU4ZjViYzQzLWI5MmUtNGEyYi05NzVkLTAwNjZlYWIyOTA5Mn08L1Byb2plY3Q+CiAJ
CTwvUHJvamVjdFJlZmVyZW5jZT4KKwkJPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVu
ZGlza1x4ZW5kaXNrLnZjeHByb2oiPgorCQkJPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05
ZjU2LWUxMGEzZDJmNWJhZH08L1Byb2plY3Q+CisJCTwvUHJvamVjdFJlZmVyZW5jZT4KIAkJPFBy
b2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVudmJkXHhlbnZiZC52Y3hwcm9qIj4KIAkJCTxQ
cm9qZWN0PntlZjIzNjM3MS0zMTQ1LTQxYjEtOTljOS04MmIzM2UzNTNmMTd9PC9Qcm9qZWN0Pgog
CQk8L1Byb2plY3RSZWZlcmVuY2U+CkBAIC01OSw0ICs2Miw0IEBACiAJPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KIAk8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogCTwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMy
MDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qIGIvdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTZhZDcKLS0tIC9kZXYv
bnVsbAorKysgYi92czIwMTIveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKQEAgLTAsMCArMSw4NCBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1
bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCTxJbXBvcnQgUHJvamVj
dD0iLi5cY29uZmlncy5wcm9wcyIgLz4KKworCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKwkJPENvbmZpZ3VyYXRpb24+V2luZG93cyBWaXN0YSBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KwkJPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRm
b3JtPiAKKwkJPERlYnVnZ2VyRmxhdm9yPkRiZ2VuZ0tlcm5lbERlYnVnZ2VyPC9EZWJ1Z2dlckZs
YXZvcj4gCisJPC9Qcm9wZXJ0eUdyb3VwPgorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJQcm9lcHJ0
eVNoZWV0cyI+CisJCTxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjA8
L1BsYXRmb3JtVG9vbHNldD4KKwkJPENvbmZpZ3VyYXRpb25UeXBlPkRyaXZlcjwvQ29uZmlndXJh
dGlvblR5cGU+CisJCTxEcml2ZXJUeXBlPldETTwvRHJpdmVyVHlwZT4KKwk8L1Byb3BlcnR5R3Jv
dXA+CisKKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPgorCQorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKwkJ
PFByb2plY3RHdWlkPntENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9PC9Qcm9q
ZWN0R3VpZD4KKwk8L1Byb3BlcnR5R3JvdXA+CisJCisJPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJn
ZXRzLnByb3BzIiAvPgorCTxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPiAKKwkKKwk8UHJvcGVydHlHcm91cD4KKwkJPEluY2x1ZGVQYXRoPiQo
UHJvamVjdERpcikuLlwuLlxpbmNsdWRlOyQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJ
PFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisJCTxFbmFibGVJbmYyY2F0
PmZhbHNlPC9FbmFibGVJbmYyY2F0PgorCQk8SW50RGlyPi4uXCQoUHJvamVjdE5hbWUpXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGlyPgorCQk8T3V0RGlyPi4uXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorCTwvUHJvcGVydHlHcm91cD4K
KworCTxJdGVtRGVmaW5pdGlvbkdyb3VwPgorCQk8Q2xDb21waWxlPgorCQkJPEJ1ZmZlclNlY3Vy
aXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisJCQk8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X19NT0RVTEVfXz0iWEVORElTSyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQkJPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJu
aW5nczwvV2FybmluZ0xldmVsPgorCQkJPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ1NDg7NDcx
MTs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgorCQkJPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRp
b24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj4KKwkJCTxFbmFibGVQUkVmYXN0PnRy
dWU8L0VuYWJsZVBSRWZhc3Q+CisJCTwvQ2xDb21waWxlPgorCQk8TGluaz4KKwkJCTxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKwkJPC9MaW5rPgorCQk8SW5m
PgorCQkJPFNwZWNpZnlBcmNoaXRlY3R1cmU+dHJ1ZTwvU3BlY2lmeUFyY2hpdGVjdHVyZT4KKwkJ
CTxTcGVjaWZ5RHJpdmVyVmVyRGlyZWN0aXZlVmVyc2lvbj50cnVlPC9TcGVjaWZ5RHJpdmVyVmVy
RGlyZWN0aXZlVmVyc2lvbj4KKwkJCTxUaW1lU3RhbXA+JChNQUpPUl9WRVJTSU9OKS4kKE1JTk9S
X1ZFUlNJT04pLiQoTUlDUk9fVkVSU0lPTikuJChCVUlMRF9OVU1CRVIpPC9UaW1lU3RhbXA+CisJ
CQk8RW5hYmxlVmVyYm9zZT50cnVlPC9FbmFibGVWZXJib3NlPgorCQk8L0luZj4KKwk8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisJPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0
Zm9ybSknPT0nV2luMzInIj4KKwkJPENsQ29tcGlsZT4KKwkJCTxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5fX2kzODZfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisJCTwvQ2xDb21waWxlPgorCQk8SW5mPgorCQkJPEFyY2hpdGVjdHVyZT54ODY8
L0FyY2hpdGVjdHVyZT4KKwkJPC9JbmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCTxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgorCQk8Q2xD
b21waWxlPgorCQkJPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9feDg2XzY0X187JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQk8L0NsQ29tcGls
ZT4KKwkJPEluZj4KKwkJCTxBcmNoaXRlY3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKwkJPC9J
bmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCisJPEl0ZW1Hcm91cD4KKwkJPEZpbGVzVG9Q
YWNrYWdlIEluY2x1ZGU9IiQoVGFyZ2V0UGF0aCkiIC8+CisJCTxGaWxlc1RvUGFja2FnZSBJbmNs
dWRlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiIgLz4KKwkJPEZpbGVzVG9QYWNrYWdlIElu
Y2x1ZGU9IkAoSW5mLT4nJShDb3B5T3V0cHV0KScpIiBDb25kaXRpb249IidAKEluZiknIT0nJyIg
Lz4KKwk8L0l0ZW1Hcm91cD4KKwk8SXRlbUdyb3VwPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
Ly4uL3NyYy94ZW5kaXNrL2RyaXZlci5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4u
L3NyYy94ZW5kaXNrL2Zkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94
ZW5kaXNrL3Bkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNr
L3RocmVhZC5jIiAvPgorCTwvSXRlbUdyb3VwPgorCTxJdGVtR3JvdXA+CisJCTxSZXNvdXJjZUNv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmRpc2tceGVuZGlzay5yYyIgLz4KKwk8L0l0ZW1H
cm91cD4KKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJvai51c2VyIGIvdnMyMDEyL3hlbmRp
c2sveGVuZGlzay52Y3hwcm9qLnVzZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGVjZGQ0NgotLS0gL2Rldi9udWxsCisrKyBiL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4
cHJvai51c2VyCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKwk8UHJvcGVydHlHcm91
cD4KKwkJPFNpZ25Nb2RlPlRlc3RTaWduPC9TaWduTW9kZT4KKwkJPFRlc3RDZXJ0aWZpY2F0ZT4u
LlwuLlxzcmNceGVudmJkLnBmeDwvVGVzdENlcnRpZmljYXRlPgorCQk8VGltZVN0YW1wU2VydmVy
Pmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltc3RhbXAuZGxsPC9UaW1l
U3RhbXBTZXJ2ZXI+CisJPC9Qcm9wZXJ0eUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEv
dnMyMDEyL3hlbnZiZC5zbG4gYi92czIwMTIveGVudmJkLnNsbgppbmRleCA4NmZiMWE1Li43MWMy
NzgwIDEwMDY0NAotLS0gYS92czIwMTIveGVudmJkLnNsbgorKysgYi92czIwMTIveGVudmJkLnNs
bgpAQCAtOCw3ICs4LDEwIEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9qZWN0CiBQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmNy
c2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEyQi05NzVE
LTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNrLnZjeHBy
b2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iIAorRW5kUHJvamVj
dAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4
ZW52YmRfY29pbnN0IiwgImNvaW5zdFx4ZW52YmRfY29pbnN0LnZjeHByb2oiLCAiezUwQzA4NDM3
LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0iCitFbmRQcm9qZWN0CiAJUHJvamVjdFNlY3Rp
b24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7NThGNUJDNDMtQjkyRS00
QTJCLTk3NUQtMDA2NkVBQjI5MDkyfSA9IHs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFC
MjkwOTJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE2LDYgKzE5LDcgQEAgRW5kUHJvamVjdAog
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNr
YWdlIiwgInBhY2thZ2VccGFja2FnZS52Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlB
My1DNjQzRjFGQzE5NzJ9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKIAkJezUwQzA4NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7
NTBDMDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9CiAJCXs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVC
QzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNF
MzUzRjE3fQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0zNiw4ICs0MCwzMiBAQCBHbG9iYWwKIAkJ
V2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlF
bmRHbG9iYWxTZWN0aW9uCiAJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRm
b3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcg
RGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNm
ZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDEx
QjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIu
QnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQt
OUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQg
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8V2luMzIgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVn
fHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4
IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQWN0aXZl
Q2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2
LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3Mg
OCBSZWxlYXNlfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVs
ZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5BY3Rp
dmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZp
c3RhIERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0u
V2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyIAor
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJl
bGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMiAKKwkJe0Q3
NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0IAorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CQorCQl7RUYyMzYzNzEtMzE0NS00MUIx
LTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMiAKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4z
MgotCQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVi
dWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgogCQl7RUYyMzYzNzEtMzE0
NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAog
CQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgpkaWZmIC0tZ2l0IGEv
dnMyMDEzL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIGIvdnMyMDEzL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qCmluZGV4IDVkMGRlNGQuLjUwMDFjNjEgMTAwNjQ0Ci0tLSBhL3ZzMjAxMy9wYWNrYWdl
L3BhY2thZ2UudmN4cHJvagorKysgYi92czIwMTMvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAg
LTc3LDYgKzc3LDkgQEAKICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5jcnNo
XHhlbmNyc2gudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57NThmNWJjNDMtYjkyZS00YTJiLTk3
NWQtMDA2NmVhYjI5MDkyfTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuZGlza1x4ZW5kaXNrLnZjeHByb2oiPgor
ICAgICAgPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05ZjU2LWUxMGEzZDJmNWJhZH08L1By
b2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Ii4uXHhlbnZiZFx4ZW52YmQudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ZWYyMzYz
NzEtMzE0NS00MWIxLTk5YzktODJiMzNlMzUzZjE3fTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RS
ZWZlcmVuY2U+CkBAIC04OCw0ICs5MSw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmRp
c2sveGVuZGlzay51c2VyIGIvdnMyMDEzL3hlbmRpc2sveGVuZGlzay51c2VyCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Yjg0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi92czIw
MTMveGVuZGlzay94ZW5kaXNrLnVzZXIKQEAgLTAsMCArMSw4IEBACivvu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
PgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8U2lnbk1vZGU+VGVzdFNpZ248L1NpZ25Nb2RlPgor
ICAgIDxUZXN0Q2VydGlmaWNhdGU+Li5cLi5cc3JjXHhlbnZiZC5wZng8L1Rlc3RDZXJ0aWZpY2F0
ZT4KKyAgICA8VGltZVN0YW1wU2VydmVyPmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3Nj
cmlwdHMvdGltc3RhbXAuZGxsPC9UaW1lU3RhbXBTZXJ2ZXI+CisgIDwvUHJvcGVydHlHcm91cD4K
KzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvaiBi
L3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jZGYzYWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdnMyMDEzL3hlbmRpc2sveGVu
ZGlzay52Y3hwcm9qCkBAIC0wLDAgKzEsMTEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cY29uZmlncy5wcm9wcyIgLz4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uPldp
bmRvd3MgVmlzdGEgRGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlv
bj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxEZWJ1Z2dlckZs
YXZvcj5EYmdlbmdLZXJuZWxEZWJ1Z2dlcjwvRGVidWdnZXJGbGF2b3I+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlByb2VwcnR5U2hlZXRzIj4KKyAgICA8Q29u
ZmlndXJhdGlvblR5cGU+RHJpdmVyPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8RHJpdmVyVHlw
ZT5XRE08L0RyaXZlclR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBW
aXN0YSBEZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1v
ZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzInIj4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyA3IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxN
b2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+CisgICAgPFBsYXRm
b3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9u
IiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBE
ZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2
ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXx4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBEZWJ1
Z3x4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4x
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXx4
NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA3IERlYnVnfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93
c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+CisgICAg
PFBsYXRmb3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKyAgICA8UHJvamVjdEd1aWQ+e0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH08L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0i
Li5cdGFyZ2V0cy5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxJbmNsdWRl
UGF0aD4kKFByb2plY3REaXIpLi5cLi5caW5jbHVkZTskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+CisgICAgPFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisgICAgPEVu
YWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+CisgICAgPEludERpcj4uLlwkKFByb2pl
Y3ROYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBsYXRmb3JtKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyPi4uXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+
CisgICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fX01PRFVMRV9fPSJYRU5ESVNLIjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
V2FybmluZ0xldmVsPkVuYWJsZUFsbFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+NDU0ODs0NzExOzQ4MjA7NDY2ODs0MjU1OzYwMDE7NjA1NDsy
ODE5NjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
CisgICAgICA8TXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj50cnVlPC9NdWx0aVByb2Nlc3NvckNv
bXBpbGF0aW9uPgorICAgICAgPEVuYWJsZVBSRWZhc3Q+dHJ1ZTwvRW5hYmxlUFJFZmFzdD4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
PiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwv
QWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPEluZj4KKyAgICAgIDxT
cGVjaWZ5QXJjaGl0ZWN0dXJlPnRydWU8L1NwZWNpZnlBcmNoaXRlY3R1cmU+CisgICAgICA8U3Bl
Y2lmeURyaXZlclZlckRpcmVjdGl2ZVZlcnNpb24+dHJ1ZTwvU3BlY2lmeURyaXZlclZlckRpcmVj
dGl2ZVZlcnNpb24+CisgICAgICA8VGltZVN0YW1wPiQoTUFKT1JfVkVSU0lPTikuJChNSU5PUl9W
RVJTSU9OKS4kKE1JQ1JPX1ZFUlNJT04pLiQoQlVJTERfTlVNQkVSKTwvVGltZVN0YW1wPgorICAg
ICAgPEVuYWJsZVZlcmJvc2U+dHJ1ZTwvRW5hYmxlVmVyYm9zZT4KKyAgICA8L0luZj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+X19pMzg2X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxJbmY+CisgICAgICA8
QXJjaGl0ZWN0dXJlPng4NjwvQXJjaGl0ZWN0dXJlPgorICAgIDwvSW5mPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZv
cm0pJz09J3g2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+X194ODZfNjRfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPEluZj4KKyAgICAgIDxBcmNoaXRl
Y3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKyAgICA8L0luZj4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKFRh
cmdldFBhdGgpIiAvPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKE91dERpcikkKFRh
cmdldE5hbWUpLnBkYiIgLz4KKyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iQChJbmYtPicl
KENvcHlPdXRwdXQpJykiIENvbmRpdGlvbj0iJ0AoSW5mKSchPScnIiAvPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5k
aXNrL2RyaXZlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmRp
c2svZmRvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuZGlzay9w
ZG8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNrL3RocmVh
ZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5kaXNrXHhlbmRpc2sucmMiIC8+CisgIDwvSXRlbUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMy94ZW52YmQuc2xuIGIvdnMyMDEzL3hlbnZiZC5zbG4KaW5kZXggMTMxMjhj
NS4uNjBkOTUxMyAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbnZiZC5zbG4KKysrIGIvdnMyMDEzL3hl
bnZiZC5zbG4KQEAgLTgsNiArOCw4IEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQx
MS0wMEEwQzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9q
ZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0g
InhlbmNyc2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEy
Qi05NzVELTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNr
LnZjeHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCitFbmRQ
cm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gInhlbnZiZF9jb2luc3QiLCAiY29pbnN0XHhlbnZiZF9jb2luc3QudmN4cHJvaiIsICJ7NTBD
MDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fSIKICAgICBQcm9qZWN0U2VjdGlvbihQ
cm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJCXs1OEY1QkM0My1COTJFLTRBMkIt
OTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5
Mn0KQEAgLTE2LDYgKzE4LDcgQEAgRW5kUHJvamVjdAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNrYWdlIiwgInBhY2thZ2VccGFja2FnZS52
Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlBMy1DNjQzRjFGQzE5NzJ9IgogICAgIFBy
b2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJezUwQzA4
NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7NTBDMDg0MzctQzFGMy00MzQ5LUJG
NkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9CiAJCXs1OEY1QkM0My1C
OTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAw
NjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fQogCUVuZFByb2plY3RT
ZWN0aW9uCkBAIC0zNiw2ICszOSwzMCBAQCBHbG9iYWwKIAkJV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCiAJR2xv
YmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24K
KwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERlYnVn
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9
IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNE
MkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERl
YnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcg
PSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJl
bGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2lu
ZG93cyA3IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXx4
NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA4IERlYnVnfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVC
QUR9LldpbmRvd3MgOCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMy
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDggRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdp
bjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFC
MkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1
Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4
IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9Lldp
bmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZp
c3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXtE
NzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxl
YXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dz
IFZpc3RhIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CiAJ
CXtFRjIzNjM3MS0zMTQ1LTQxQjEtOTlDOS04MkIzM0UzNTNGMTd9LldpbmRvd3MgNyBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0
Ci0tIAoyLjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From wg-test-framework-bounces@lists.xenproject.org Mon Sep 22 12:57:27 2014
Return-path: <wg-test-framework-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 12:57:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <wg-test-framework-bounces@lists.xenproject.org>)
	id 1XW3BH-0002vS-Rr
	for archives@lists.xenproject.org; Mon, 22 Sep 2014 12:57:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Ian.Jackson@citrix.com>) id 1XW3BF-0002vH-Uc
	for wg-test-framework@lists.xenproject.org;
	Mon, 22 Sep 2014 12:57:26 +0000
Received: from [85.158.137.68:2289] by server-15.bemta-3.messagelabs.com id
	41/37-01573-5BC10245; Mon, 22 Sep 2014 12:57:25 +0000
X-Env-Sender: Ian.Jackson@citrix.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1411390642!11227676!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5906 invoked from network); 22 Sep 2014 12:57:23 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 12:57:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; 
	d="xml'?pdf'?ods'72,48?png'72,48,150?scan'72,48,150,72,48,208,150";
	a="174831523"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 08:57:20 -0400
Received: from mariner.uk.xensource.com ([10.80.2.22])	by
	ukmail1.uk.xensource.com with esmtp (Exim 4.69)	(envelope-from
	<Ian.Jackson@eu.citrix.com>)	id 1XW3B9-0001Ag-SV;
	Mon, 22 Sep 2014 13:57:19 +0100
Received: from iwj by mariner.uk.xensource.com with local (Exim 4.80)
	(envelope-from <Ian.Jackson@eu.citrix.com>)	id 1XW3B9-0007Y8-I6;
	Mon, 22 Sep 2014 13:57:19 +0100
From: Ian Jackson <Ian.Jackson@eu.citrix.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="4K3xsvNwXo"
Content-Transfer-Encoding: 7bit
Message-ID: <21536.7343.285823.447425@mariner.uk.xensource.com>
Date: Mon, 22 Sep 2014 13:57:19 +0100
To: "Paul L. George" <pgeorge@plginc.com>
In-Reply-To: <EC1529AB-9601-439B-8153-C8D3825B2BD6@plginc.com>
References: <21527.5802.902997.176928@mariner.uk.xensource.com>
	<07a601cfd428$70e54e10$52afea30$@plginc.com>
	<21532.26774.544310.598789@mariner.uk.xensource.com>
	<07f001cfd436$348ea5c0$9dabf140$@plginc.com>
	<21532.29740.781995.367485@mariner.uk.xensource.com>
	<EC1529AB-9601-439B-8153-C8D3825B2BD6@plginc.com>
X-Mailer: VM 8.1.0 under 23.4.1 (i486-pc-linux-gnu)
X-DLP: MIA2
Cc: Lars Kurth <lars.kurth@citrix.com>,
	Mike Woster <mwoster@linuxfoundation.org>, Don Slutz <dslutz@verizon.com>,
	wg-test-framework@lists.xenproject.org
Subject: Re: [Wg-test-framework] Machine suggestions from AMD
X-BeenThere: wg-test-framework@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen Project Test Framework Working Group
	<wg-test-framework.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:wg-test-framework@lists.xenproject.org>
List-Help: <mailto:wg-test-framework-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=subscribe>
Sender: wg-test-framework-bounces@lists.xenproject.org
Errors-To: wg-test-framework-bounces@lists.xenproject.org

--4K3xsvNwXo
Content-Type: text/plain; charset="us-ascii"
Content-Description: message body text
Content-Transfer-Encoding: 7bit

Here is a detailed proposal for selecting particular machines from
Paul's suggestions, in the form of a spreadsheet.

(You can find everything here too:
  http://xenbits.xen.org/gitweb/?p=people/iwj/colo-for-testing.git;a=summary
  git://xenbits.xen.org/people/iwj/colo-for-testing.git)

Summary:

Total budget $57,076 for 26 machines, 2 to become the main servers and
24 to become test boxes.  (Switches, etc., not included.)  Of the test
boxes: 42% are AMD (54% by cost).


Paul: please can you confirm the actual prices for the AMD systems.
And can you please confirm that one pair of 2U text boxes will fit.

Everyone else: comments on this selection, budgeting, etc., ASAP
please.


There are some things that need to be explained:

I have based this spreadsheet on Paul's uncorrected figures (see his
email about the omission of shipping and assembly) so there are some
increases to come in the prices.

I have added a pair of higher-spec versions of the Dell R415.  The PDF
from the dell.com website is attached.

There are two very expensive AMD test boxes at the top of the list.
This is to try to balance the quantity and spend between Intel and
AMD.  Conversely there are two very cheap AMD machines at the bottom
of the list.  (It appears that there is a greater variety of Intel
machines available.)

This amount is bigger than was approved by the Xen Project Advisory
Board but I think we can just go back to them to approve it and this
won't be a problem (and can be done quickly).  We should seek
re-approval for the bigger amount plus (as before) some headroom.

Alternatively we can go ahead without the two big AMD machines; that
would be $42,342, well within the budget (and would have 36% AMD test
boxes by number or 34% by value).  If it is convenient we could start
work now and get approval for the extra budget (which I am confident
of getting) in parallel.

I'm assuming that one pair of 2U test boxes will fit in the rack.
That will give us 26 machines of which 4 in total (the two main
servers and the two big AMD test boxes) are 2U, for a total of 30U.
(Of course we need to fit some cable management, switches,
etc. etc. in as well.)


Ian.



--4K3xsvNwXo
Content-Type: application/octet-stream; name="selections.ods"
Content-Description: proposed machines spreadsheet
Content-Disposition: attachment; filename="selections.ods"
Content-Transfer-Encoding: base64

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
BwgRp2pJpggAAJdKAABQSwMEFAAACAAAxWY2RWA/dKk2AwAANgMAAAgAAABtZXRhLnhtbDw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4
bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNl
OjEuMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRj
PSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6bWV0YT0idXJuOm9hc2lz
Om5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIgeG1sbnM6b29vPSJodHRwOi8v
b3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIHhtbG5zOmdyZGRsPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAzL2cvZGF0YS12aWV3IyIgb2ZmaWNlOnZlcnNpb249IjEuMiI+PG9mZmljZTptZXRhPjxt
ZXRhOmNyZWF0aW9uLWRhdGU+MjAxNC0wOS0yMlQxMToxNDoyNTwvbWV0YTpjcmVhdGlvbi1kYXRl
PjxkYzpkYXRlPjIwMTQtMDktMjJUMTM6NTQ6MTA8L2RjOmRhdGU+PG1ldGE6ZWRpdGluZy1kdXJh
dGlvbj5QVDJIMzFNMzBTPC9tZXRhOmVkaXRpbmctZHVyYXRpb24+PG1ldGE6ZWRpdGluZy1jeWNs
ZXM+MTQ8L21ldGE6ZWRpdGluZy1jeWNsZXM+PG1ldGE6Z2VuZXJhdG9yPkxpYnJlT2ZmaWNlLzMu
NSRMaW51eF94ODYgTGlicmVPZmZpY2VfcHJvamVjdC8zNTBtMSRCdWlsZC0yPC9tZXRhOmdlbmVy
YXRvcj48bWV0YTpkb2N1bWVudC1zdGF0aXN0aWMgbWV0YTp0YWJsZS1jb3VudD0iMyIgbWV0YTpj
ZWxsLWNvdW50PSIyNzIiIG1ldGE6b2JqZWN0LWNvdW50PSIwIi8+PC9vZmZpY2U6bWV0YT48L29m
ZmljZTpkb2N1bWVudC1tZXRhPlBLAwQUAAAIAADFZjZFAAAAAAAAAAAAAAAAGAAAAENvbmZpZ3Vy
YXRpb25zMi9tZW51YmFyL1BLAwQUAAAIAADFZjZFAAAAAAAAAAAAAAAAHwAAAENvbmZpZ3VyYXRp
b25zMi9pbWFnZXMvQml0bWFwcy9QSwMEFAAACAAAxWY2RQAAAAAAAAAAAAAAABoAAABDb25maWd1
cmF0aW9uczIvcG9wdXBtZW51L1BLAwQUAAAIAADFZjZFAAAAAAAAAAAAAAAAHAAAAENvbmZpZ3Vy
YXRpb25zMi9wcm9ncmVzc2Jhci9QSwMEFAAACAAAxWY2RQAAAAAAAAAAAAAAABgAAABDb25maWd1
cmF0aW9uczIvdG9vbGJhci9QSwMEFAAACAAAxWY2RQAAAAAAAAAAAAAAABoAAABDb25maWd1cmF0
aW9uczIvdG9vbHBhbmVsL1BLAwQUAAAIAADFZjZFAAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRp
b25zMi9mbG9hdGVyL1BLAwQUAAgICADFZjZFAAAAAAAAAAAAAAAAJwAAAENvbmZpZ3VyYXRpb25z
Mi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbAMAUEsHCAAAAAACAAAAAAAAAFBLAwQUAAAIAADFZjZF
AAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIvUEsDBBQACAgIAMVmNkUA
AAAAAAAAAAAAAAAVAAAATUVUQS1JTkYvbWFuaWZlc3QueG1srVPBbsMgDL33KyLuga2nCTXtodK+
oPsARpwUCQzCpmr/fkmlNpmmTKvWm42f33sYs9mdg69OkMlFbMSrfBEVoI2tw74RH4f3+k3stqtN
MOg6INa3oBr6kO5pI0pGHQ050mgCkGarYwJsoy0BkPV3vL4q3bOZgbXYrqpJr3Me6qE/XyZ0V7yv
k+FjI9QSyXQcoHWm5kuCRpiUvLOGB5g6YSuvhuXcp6SUwbR0BGChHrFyOJbwicZ5UnwLZcJ+wYoL
pgc11h9SIWAe3obkMM8FZoYzq7H8ELGNyOP9n81LfPHwfLsB2DyddB+xc33J1wWhtTLWgochjVnZ
kvPv8/mf1h83lgqOFmRx0s4ZRvGN+vFNt19QSwcId1t98hMBAADhAwAAUEsBAhQAFAAACAAAxWY2
RYVsOYouAAAALgAAAAgAAAAAAAAAAAAAAAAAAAAAAG1pbWV0eXBlUEsBAhQAFAAACAAAxWY2Rc7F
x+NiMAAAYjAAABgAAAAAAAAAAAAAAAAAVAAAAFRodW1ibmFpbHMvdGh1bWJuYWlsLnBuZ1BLAQIU
ABQACAgIAMVmNkUD1nIw/QMAAE0eAAAMAAAAAAAAAAAAAAAAAOwwAABzZXR0aW5ncy54bWxQSwEC
FAAUAAgICADFZjZFQzc0QDQQAADUrwAACwAAAAAAAAAAAAAAAAAjNQAAY29udGVudC54bWxQSwEC
FAAUAAgICADFZjZFEadqSaYIAACXSgAACgAAAAAAAAAAAAAAAACQRQAAc3R5bGVzLnhtbFBLAQIU
ABQAAAgAAMVmNkVgP3SpNgMAADYDAAAIAAAAAAAAAAAAAAAAAG5OAABtZXRhLnhtbFBLAQIUABQA
AAgAAMVmNkUAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAMpRAABDb25maWd1cmF0aW9uczIvbWVu
dWJhci9QSwECFAAUAAAIAADFZjZFAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAUgAAQ29uZmln
dXJhdGlvbnMyL2ltYWdlcy9CaXRtYXBzL1BLAQIUABQAAAgAAMVmNkUAAAAAAAAAAAAAAAAaAAAA
AAAAAAAAAAAAAD1SAABDb25maWd1cmF0aW9uczIvcG9wdXBtZW51L1BLAQIUABQAAAgAAMVmNkUA
AAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAHVSAABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIv
UEsBAhQAFAAACAAAxWY2RQAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAr1IAAENvbmZpZ3VyYXRp
b25zMi90b29sYmFyL1BLAQIUABQAAAgAAMVmNkUAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAOVS
AABDb25maWd1cmF0aW9uczIvdG9vbHBhbmVsL1BLAQIUABQAAAgAAMVmNkUAAAAAAAAAAAAAAAAY
AAAAAAAAAAAAAAAAAB1TAABDb25maWd1cmF0aW9uczIvZmxvYXRlci9QSwECFAAUAAgICADFZjZF
AAAAAAIAAAAAAAAAJwAAAAAAAAAAAAAAAABTUwAAQ29uZmlndXJhdGlvbnMyL2FjY2VsZXJhdG9y
L2N1cnJlbnQueG1sUEsBAhQAFAAACAAAxWY2RQAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAqlMA
AENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIvUEsBAhQAFAAICAgAxWY2RXdbffITAQAA4QMAABUA
AAAAAAAAAAAAAAAA4lMAAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAAEAAQADYEAAA4VQAA
AAA=
--4K3xsvNwXo
Content-Type: application/pdf; name="r415-from-dell.pdf"
Content-Description: bigger r415
Content-Disposition: attachment; filename="r415-from-dell.pdf"
Content-Transfer-Encoding: base64

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
6MvN+PotzpabU3LBKUWTu81qscg3r0j85oJf4IGgO3NflFV/seG9cyBm/im5XEK1wFJzEOUr1qC3
IcGT2RRrjsfhW7K9RvULtwgZ9S01QvIRNTxrqxEg4orzl2pE9q3MeA0XFKVQJ0zKfyA311dABywW
t0MjkxMizr+st9iDny8J7lfW7fuVmr++CgC+JgLmCOuZ/5KNrOG2f45w2otFtQS4bQeZ7F2L4Rt2
KkEFSyd5v1qObvLZHk4XSyh90tKfXmYKjHp/c3brmKK7ZwYdwZGR99c7Hc6vH0nohhcHf+Ob4dWW
8+EfgdbGu5ZdOf7eWWS0tMdesIbfGZXWslZzhyrYNkIdWkbAbFRhlgeZMofCags4HjB9CNjIbm7Z
r57JJF/kd1gL/Zpk/R96liet5GSxwC2HG+EPHmWDtfIXs+XfwMZziXR4G2n81xq+/acrxxJ/49p/
2veUPKr1bj8cYjvb/bTo8WCbxooiQV4mePuYE9dH+7BczJc5rMqw1eIqyY/Jm/18MSP/GjIhk9V+
U1268ExOVaDV4263Ph6PseLflQdLPmLeyd8opezvvnhUPMMSM+QiydP9Np1BBOnd6mmMF9sQwni9
mS93v2z3T0/TzfMvMzgEp2nq7I+KCEbGplSF7Qwjq3vC8SXASU9REyOk7sTPsMl6zOP3GR8H/wWR
EalTCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iagogICAzMTc4CmVuZG9iagoyIDAgb2JqCjw8CiAg
IC9FeHRHU3RhdGUgPDwKICAgICAgL2IxIDw8IC9CTSAvTm9ybWFsID4+CiAgICAgIC9iMiA8PCAv
Qk0gL05vcm1hbCA+PgogICAgICAvYTAgPDwgL0NBIDEgL2NhIDEgPj4KICAgPj4KICAgL1hPYmpl
Y3QgPDwgL3g1IDUgMCBSIC94NiA2IDAgUiAveDcgNyAwIFIgL3gxMCAxMCAwIFIgL3gxMSAxMSAw
IFIgL3gxMiAxMiAwIFIgL3gxMyAxMyAwIFIgL3gxNCAxNCAwIFIgPj4KICAgL0ZvbnQgPDwKICAg
ICAgL2YtMC0wIDggMCBSCiAgICAgIC9mLTEtMCA5IDAgUgogICAgICAvZi0yLTAgMTUgMCBSCiAg
ICAgIC9mLTItMSAxNiAwIFIKICAgPj4KPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9QYWdl
CiAgIC9QYXJlbnQgMSAwIFIKICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQogICAvQ29udGVu
dHMgMyAwIFIKICAgL0dyb3VwIDw8CiAgICAgIC9UeXBlIC9Hcm91cAogICAgICAvUyAvVHJhbnNw
YXJlbmN5CiAgICAgIC9JIHRydWUKICAgICAgL0NTIC9EZXZpY2VSR0IKICAgPj4KICAgL1Jlc291
cmNlcyAyIDAgUgo+PgplbmRvYmoKNSAwIG9iago8PCAvTGVuZ3RoIDE4IDAgUgogICAvRmlsdGVy
IC9GbGF0ZURlY29kZQogICAvVHlwZSAvWE9iamVjdAogICAvU3VidHlwZSAvSW1hZ2UKICAgL1dp
ZHRoIDE5MgogICAvSGVpZ2h0IDM0CiAgIC9Db2xvclNwYWNlIC9EZXZpY2VHcmF5CiAgIC9JbnRl
cnBvbGF0ZSB0cnVlCiAgIC9CaXRzUGVyQ29tcG9uZW50IDgKPj4Kc3RyZWFtCnic7VdhmYMwDI2Z
uIgJNNRCLeAAB1WAAgxgAAM1cAJ2SSksZXC07Lht9/F+jDZf0j7IS9rdbhcuXLhw4cI/AE4gt7Dv
BHYmRDXnUcsCQuQPUCX2Hf4WAEIUup8dT8bM0yHsfEv9Sg1gPfCzNwDdSdSycCflgHJdJW1dHJk0
b38NRWpPMgn/eex3K+VULPkjfhkZjHb+rVnlLgxF8LMvrJZ7EsVyjI8Nmw8toOqig2yMkwYI+0L+
TdAPrwCav8wA2iX/msvd+U3+Y5Sbg1dtA8YWoBwo6rLbE/OS/1CP63A/ahUTkKI242KJUGzYvGr8
Gn+AWqJwfNCGrQIaJAmTg2zsYjVVkNnWpv7J7dCODPqEiSzjZ1koeEsShJVf4e/0Y8vGitFB48aI
/lZSVBN/Mp1aTCn5YaLQ1/wOOGw47toEQ98nDiZ8Rgsmlz+uz7P4MzyFjB/i723IO2gHH1OjausE
/mo4bVjOf5DcE1HCPyjf5Z8px/iTKq/D/Csw/sEhHKOUW71H+TuY23MT9SNUOijhH8dfi9W5xCH/
SCzifz9SOOlWZtP9h6TgGizjHy5cbqEfPlpCj/19/qTOL05+cv9sZQZUpB8zroAL/p4NudVbxL8n
7Rzv/zZu5XhSF/YfuUmgHZbqNNnN8z1hX3sjfxrZZ+97ov1s+Xj6aPlwQ3rp/7lnwXfyV1O4sI1v
zg3XfQplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCiAgIDUyOAplbmRvYmoKNiAwIG9iago8PCAv
TGVuZ3RoIDE5IDAgUgogICAvRmlsdGVyIC9GbGF0ZURlY29kZQogICAvVHlwZSAvWE9iamVjdAog
ICAvU3VidHlwZSAvSW1hZ2UKICAgL1dpZHRoIDIyCiAgIC9IZWlnaHQgMTQKICAgL0NvbG9yU3Bh
Y2UgL0RldmljZVJHQgogICAvSW50ZXJwb2xhdGUgdHJ1ZQogICAvQml0c1BlckNvbXBvbmVudCA4
Cj4+CnN0cmVhbQp4nHOfc0mm9QQuJNt+Qq7rlELfacWJZ5Unn1ObdkFrxiW92ZeN5l4xm3fFesGV
pM138WgHm3BSrvuUfN8ZkAlTzqtPv6g985L+7Msm865YLrhit/Cq3pTzEJVavad33Hy36uIrCAJy
IeJyHSdle07J959RmngOaILG9Is6My8ZzLlsCnaA0fQLcLuOPfxoATPNfc4loGlQNwBN6IaYcBZi
AtwN2pPOwbWHLrkG1FK/6wHQ9r5DTwo3351z6jnEQFA4wH0x+bzatItaMy/pzLik1H0a2bNAE668
+Prx+5////8DSSB6/OEHUBAekvJ9pxUmnFWedE5l8nnFnjOYwQW0DuJsuPfhvpBpOyHbeVKu57R8
z2mgj/CEOdDlQC8AjYIEQiFyHLXhiyxkBNQLDAQgggfpKCIJuePNWcRoBwD8GdnWCmVuZHN0cmVh
bQplbmRvYmoKMTkgMCBvYmoKICAgMzIyCmVuZG9iago3IDAgb2JqCjw8IC9MZW5ndGggMjAgMCBS
CiAgIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgIC9UeXBlIC9YT2JqZWN0CiAgIC9TdWJ0eXBlIC9J
bWFnZQogICAvV2lkdGggMTIzCiAgIC9IZWlnaHQgMTA5CiAgIC9Db2xvclNwYWNlIC9EZXZpY2VS
R0IKICAgL0ludGVycG9sYXRlIHRydWUKICAgL0JpdHNQZXJDb21wb25lbnQgOAo+PgpzdHJlYW0K
eJztmwd4FOe1hp3iuGDjisGY3hFFgECoF9R77733tupdqAtVOtgYx45xcl2SOO6Ok9wUd+MWhE1V
F6IISQiEpFW57+5vrdfCIjy5hNzrzHkOw+xotJp55/u/c/6Z3fFxKaSQQgoppJBCCimkkEIKKaSQ
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
ICAvQ29sb3JTcGFjZSAvRGV2aWNlUkdCCiAgIC9JbnRlcnBvbGF0ZSB0cnVlCiAgIC9CaXRzUGVy
Q29tcG9uZW50IDgKPj4Kc3RyZWFtCnic7Z15VNtXlufnzJnp/+ZM9+mZnukzZzJd07N0VbbKqVRn
cRanYmfzEieVzYnjdDYvcWIbr7EN3hc2AzabbbDxgrExm9kFCCGB2AUIEAiQBBJCaN83JLHMV79b
vFbs4HZV25WMj+/5nV+e3u+993vv3s+79z7ZkS0Wi9PpNJvNdrvdZrNZLBar1Wp7KPdaoFjcSckQ
KyesxjovFk5YL1Z/y2jW2+TPsASXyzU7OzszMzP3UO6zQMlQ9S2Vt9TMcnJ7X7IRmYnK09PTf06r
ARX4EzY3VnhIzj2XSJXCypE83FK+nZaFGrOaUCj0oy/9Uer+NCHHyD4y7B+ics+FKRacUE2kl4Ct
pzkJBAIej8ceIRSkHA6H2+32er1TU1OsF3X588yfwhw5NHanRc0+lHsqcxE7cXaeDaoMBoNgAIaY
mJgYHR1Vq9VarVaj0eCOGt286PV6AycIBCDH5/OxHY0R6C0zEXJv50/p0OwPc5XZh6jcH4m0LBXg
IuDVgcTIyMjw8DA4ASFjY2NKpRLAoDw+Ps6AASpGo9FkMqEwOTkJZmA7Bgx7RSQn99CO5FXmIoLa
LOfW7jmTD4U5E3BCxkVAARUymWxoaEjJCQr4ODAwIJ8X1AAhgKRSqQgeCDgBYPAtk5zAw7D4dT/8
CQk4AaWz8xl15LtmHso9FQo3LKGFZ5BKpQBDoVAMDg6i3MNJb29vHycABvWghVBRzAvoAja4YwQ6
XMPVoAwCCZj7NH86xUcuh5VpRZELvAUkqpydT65YPSbMSKN68rcoIGdDgRrQFqPukWXqQpXUnjw2
zYSCMpsVm9js/CkALj1ywrPzCRgNFTkrfIysjLQmTZK9jubPrBy5wDtIZBumOuoOVyCRSAADGJB0
dEk6OnF1dUq6JV3S7p4+aW9/n1Qukcn7BmVD8v4h2cBgr3ywd2R4QKGUj4woR8c0qlH1iAK3MYNJ
b7UZTGaEJyPSXu5lwbnZYHjuIffcnG9mNjAzPTU37Z+bmZqbwSNMZS44O/ejc76D3AEVpk8oilRK
9kUlPB6wb2trQzLGknBmGiqzLqRzfJydT+1mOJwYP6wNujNgZiJQpKcodHV14b3w23jEut9iFLJF
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
xIovc0RpzdpCmTWzvu+lzIa/3VX3V1sq/+ZgxV8ervjt8XKJwedwTbBcxTkPzJ0ZuINXeSg/rdgR
iuxWGNRisxqtNvgZ0BIOHDbv+ISjV2UVDpgKW1SXGuQXG2QX6vuutAyXSJRiuU45iVwkjFnAgzTZ
NDppzG8dW3NB+J8OXf43e6/CI11unwzN/3yl4zZZaD7gRK1Wo8GP9nooP6GQKclM4d+MtVltDjsu
j1UPADw4LoUjuQXxPBz/nRZrODvmkkPELLvFajFYbUawYvZo7Q6zyebnK6ybSjsfP3T1+xvNHrub
8sm7t7uaE8c8KpE/l3oftfBQ7kJwBgUpdAYNfw7HIqBhtTg9YQ/jCP+e7R84QW6MIGWzhL9Yc1js
NpOTO0yZ3C49Poe/5LNYrAaXxQaPVNMzkd8yNGkys59tv0uLj3HCfkf3ofx8xIakFkBwtAASXDgo
ue0Oqw1wwHM4XDarK8yPA/+1O7woOyxWQIFzgstqcprNYAPt/WYMZVI77Gq9VTmi6lWO909YHCbT
QqgsNJ+HqPxshf4FBFYmWiwms8Fm0VvNOrNxwmRQGw3KSb1i0qA0WRUGx4jeqrE49HaX0eaEM0E2
DIrUdovKbJaO6nuGte3Dw+KxkWHjpM9qux0V+22RJVIeovKzFbfbyYUcsgtOHHAbTrPFNmmyqnVG
1fikYtwwog1fQ1q9fHySuyaGdbqhcY1qUquzmSctpgmDXjVh650wSXWTsomJPs2EclJnd1osZmMk
incjD1H52Uo4L7GaQQuSFWS0RpPFYLTqjBat3jQ+adQYLRqTXW2yaMwWrcWsNer1OtfkpGPS6NAa
LBNGq9ZsQ8TRmRxmnXFSbzYaJgwGg84a1OnddqORUuU/aj70e7nUy2Kx2Of/bRr7vAN8KD+5RP47
QfSvNf0r5U+bxignBAwKKk7wcfShPLhCoeRP6Pj/AGjl+5wKZW5kc3RyZWFtCmVuZG9iagoyMSAw
IG9iagogICA4ODQ4CmVuZG9iagoxMSAwIG9iago8PCAvTGVuZ3RoIDIyIDAgUgogICAvRmlsdGVy
IC9GbGF0ZURlY29kZQogICAvVHlwZSAvWE9iamVjdAogICAvU3VidHlwZSAvSW1hZ2UKICAgL1dp
ZHRoIDE3CiAgIC9IZWlnaHQgMTUKICAgL0NvbG9yU3BhY2UgL0RldmljZVJHQgogICAvSW50ZXJw
b2xhdGUgdHJ1ZQogICAvQml0c1BlckNvbXBvbmVudCA4Cj4+CnN0cmVhbQp4nPv/HwQEonqIQf+R
AK21QNjP338nBjF49QARLi0Mii1oIkCISwtQMYdhFJxElkJ2JKb5mLbgcRiRtux9//8aDEHYQMVA
EqhrL7Igki1Lz70v3vsfQiJbAUTIUsi2ALlec0AIwsjeCtII58IZyLYorv1PDMKM0EGVxgCqL7KM
CmVuZHN0cmVhbQplbmRvYmoKMjIgMCBvYmoKICAgMTI3CmVuZG9iagoxMiAwIG9iago8PCAvTGVu
Z3RoIDIzIDAgUgogICAvRmlsdGVyIC9GbGF0ZURlY29kZQogICAvVHlwZSAvWE9iamVjdAogICAv
U3VidHlwZSAvSW1hZ2UKICAgL1dpZHRoIDIwCiAgIC9IZWlnaHQgMTQKICAgL0NvbG9yU3BhY2Ug
L0RldmljZVJHQgogICAvSW50ZXJwb2xhdGUgdHJ1ZQogICAvQml0c1BlckNvbXBvbmVudCA4Cj4+
CnN0cmVhbQp4nPv/HwQEonrwoP94AYV6339///z9dyC69v7/3vf/t157v/QcCM059h+/dqAsRCNc
L0QjEBXv/Y/fDXB7gRohCJe9mNoJ2oummCT/4gk9NHuvIdkLRLj0Mii2ABGHYRSEAURo9qKFFQQB
1QMR3AS4GyDmoJHILsQMrqXHrgEFgSTWSASKM3j1bD2HXRYoBScxAcQuXLJQe3GYjN9eMvQCAOx6
eb4KZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iagogICAxNjUKZW5kb2JqCjEzIDAgb2JqCjw8IC9M
ZW5ndGggMjQgMCBSCiAgIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgIC9UeXBlIC9YT2JqZWN0CiAg
IC9TdWJ0eXBlIC9JbWFnZQogICAvV2lkdGggMTgKICAgL0hlaWdodCA4CiAgIC9Db2xvclNwYWNl
IC9EZXZpY2VHcmF5CiAgIC9JbnRlcnBvbGF0ZSB0cnVlCiAgIC9CaXRzUGVyQ29tcG9uZW50IDgK
Pj4Kc3RyZWFtCnicO3OGHHAbA3zAAP/JAgCgdoEZCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoK
ICAgMjAKZW5kb2JqCjE0IDAgb2JqCjw8IC9MZW5ndGggMjUgMCBSCiAgIC9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCiAgIC9UeXBlIC9YT2JqZWN0CiAgIC9TdWJ0eXBlIC9JbWFnZQogICAvV2lkdGggNDkK
ICAgL0hlaWdodCA0OQogICAvQ29sb3JTcGFjZSAvRGV2aWNlUkdCCiAgIC9JbnRlcnBvbGF0ZSB0
cnVlCiAgIC9CaXRzUGVyQ29tcG9uZW50IDgKPj4Kc3RyZWFtCniczVk9SkNBEN4jeASP4BE8gkfw
CB7BxlKwsLSwsLMRLG1EC0FBJIVgQDCFRcAihUXA4vmRweFz5r1ks3n7mGUIyb7d2S/f/OzsvnR0
n4pk92J0cPN+eDe5ncxY0IN+PC1Tu65sHT/sX4+xbpPXMBLjMasGmO3Tp/PRNBOJb5gLDT0yc/L4
2coAbAQSYCMW9Ig1/RTo2ZyxvcvX2fyH1V69fWHRzOkYifE8HdqgsxiPIaeYfG90aC4wFjP/Mv3e
PIKgAXrY7vlGxEieiz/YV8hAD9OFVTI1Mz/5bpMv0MlcrRzP/lMDj0e13K8QCwPg8ai6YhBm1XiH
xaviEVG/wrqtTqUmy/e6DYXjyJsPqUNpHGzHTIvMoOuapKccDmOylUuDwC6oAwgbSB1GnR/70cB4
RHQf1DDX3Fg78LtEOdHMqbwVqEL89vJHGIP6vCJEtdP8bx+zOTpNZuDdCk+1n/cjDl5Wy+PNLKmf
zTAPSYHtnD2ntn0Z/Vq6lEHSp1LPG0fqgtT8VSlc1EnlLz34xPcySOpOXJHqdJ6LFTEY/Hh4AoAH
owd0MYH5kNh/lkOSTs6x/IiLWOiB4UzJXQ8S59LWhh0K/Hgy60HSEPBNkoBkA/+0BiSYhn2jWXi4
WZd78J25wk9ZAjSyWozR07GHtFbEyUGs64wpVXrrCY4XMs1HXH5e4pLGmxI9PlXmQ+K85LO3hLYR
XyHAnzkdcYbx0+VQ7PuVB+M/BnC+iBF7KUENhoCVQMB6KWBVmeLV3inkCSXFO8elkKfdFO9OwJiv
Kqr8mxORaPdLKeQtXIp3V6kS6kZXJdq9txox1NuBJeSv1fp9h2IYi/OmyUu993G/jgeq/QplbmRz
dHJlYW0KZW5kb2JqCjI1IDAgb2JqCiAgIDY0MgplbmRvYmoKMjcgMCBvYmoKPDwgL0xlbmd0aCAy
OCAwIFIKICAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCniclVptc9u4Ef6uX4EPbYfq
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
rclE7wXJYVtOF+a6wmXPi3SLMYhHcowZpCeFjYOstCcmBoWOwdueiUJ4ZY/cwbCaMs3XSodk9oCR
BykR/ygyfIAvke9R9oxMuGSS7JItzOG2twXNe4Qg02vpub7HWia+j57xvAZD4tgxAUvkIYvxE5xj
cTP9C5PlsoHi/xWf6DxfpYddQXTObyLIkVXsVimNVY7kUFJBnrp4WUTVicJBqQFl48kml+8+/ATH
pdNSh5kP+g8cdMuOvFEBwMR1rMCJCsgniyLN+lw68XtYjmSzJr/2mfCc9JCVh1U9WwFs0Pr+6rEo
9u/PzvAQsYIULUtWPmDGyD8opeyfpg5uWH44gCFIdfeQu2uYgbtKt2fYyKspnO2xgPstP2y3sE6/
reMict0y7MsZwOndpbK6COFIM0ca8BtSerxho+EZ52ew2TPxntcV6i+9/wEMfPFlCmVuZHN0cmVh
bQplbmRvYmoKMjggMCBvYmoKICAgMzA4NgplbmRvYmoKMjYgMCBvYmoKPDwKICAgL0V4dEdTdGF0
ZSA8PAogICAgICAvYTAgPDwgL0NBIDEgL2NhIDEgPj4KICAgPj4KICAgL1hPYmplY3QgPDwgL3gy
OSAyOSAwIFIgPj4KICAgL0ZvbnQgPDwKICAgICAgL2YtMC0wIDggMCBSCiAgICAgIC9mLTEtMCA5
IDAgUgogICAgICAvZi0yLTAgMTUgMCBSCiAgICAgIC9mLTItMSAxNiAwIFIKICAgPj4KPj4KZW5k
b2JqCjMwIDAgb2JqCjw8IC9UeXBlIC9QYWdlCiAgIC9QYXJlbnQgMSAwIFIKICAgL01lZGlhQm94
IFsgMCAwIDYxMiA3OTIgXQogICAvQ29udGVudHMgMjcgMCBSCiAgIC9Hcm91cCA8PAogICAgICAv
VHlwZSAvR3JvdXAKICAgICAgL1MgL1RyYW5zcGFyZW5jeQogICAgICAvSSB0cnVlCiAgICAgIC9D
UyAvRGV2aWNlUkdCCiAgID4+CiAgIC9SZXNvdXJjZXMgMjYgMCBSCj4+CmVuZG9iagozMSAwIG9i
ago8PCAvTGVuZ3RoIDMyIDAgUgogICAvRmlsdGVyIC9GbGF0ZURlY29kZQogICAvVHlwZSAvWE9i
amVjdAogICAvU3VidHlwZSAvSW1hZ2UKICAgL1dpZHRoIDIwCiAgIC9IZWlnaHQgMjAKICAgL0Nv
bG9yU3BhY2UgL0RldmljZUdyYXkKICAgL0ludGVycG9sYXRlIHRydWUKICAgL0JpdHNQZXJDb21w
b25lbnQgOAo+PgpzdHJlYW0KeJxjYMABCv6DwXxksYb/UEEBTLH/DXAhg/kwsfkGMLH/CHAfi9h/
XGIODQ0NyGJArsP7/xgAixB9wH1MofcCDg4FyAIFDg5IAYYfAABfAgIDCmVuZHN0cmVhbQplbmRv
YmoKMzIgMCBvYmoKICAgODEKZW5kb2JqCjI5IDAgb2JqCjw8IC9MZW5ndGggMzMgMCBSCiAgIC9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCiAgIC9UeXBlIC9YT2JqZWN0CiAgIC9TdWJ0eXBlIC9JbWFnZQog
ICAvV2lkdGggMjAKICAgL0hlaWdodCAyMAogICAvQ29sb3JTcGFjZSAvRGV2aWNlUkdCCiAgIC9J
bnRlcnBvbGF0ZSB0cnVlCiAgIC9CaXRzUGVyQ29tcG9uZW50IDgKICAgL1NNYXNrIDMxIDAgUgo+
PgpzdHJlYW0KeJxjYKAa2LJlywNUcPbs2fPnzxOj9/jx499//EBG9+/f//z5C1B7f38/fr0nT578
jQoePXp0Hwx2796NR2NqauqZM2f+4QBAKaACXHpXrVp99ty5PzgAUGr9+g249C5atOT4iZPfvn/H
ioBSQAW49E6YMHnnrj0fP37CioBSQAXI6gNCQoJCwoCopq5u2rQZa9auO33mDFYElAIqACqDqAdq
rKyqrWtoqqqu27hx038iAFAZUHFzS3tKanpISFhgYDAQLVu2nBi9QGUQ9eHhkX5+AR3dFQmJkcnJ
qZWVVQRReEQUUAsEJSYmH7vtuXFvlre3L6nI3d2zviUtMjoIyCAVOTk5w5GttS0eZGlmYWdrj6ze
ytIajvR1dGfNmY8HmRiZIKtXU1RSVVKGoJys7MdPnt5/8PDc+Qt79u5ftWY9UH13T39tXWN+QVFS
cqqluSVcsYqikoKAgoIMCCnJKQQHBAJRkH+Ar7ePp5uHi5Ozg529rZWNpbmFmbGJkYGhoZ4+UBlE
PVAjvgxJSwAAeH/UJAplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCiAgIDQwMwplbmRvYmoKMzQg
MCBvYmoKPDwgL0xlbmd0aCAzNSAwIFIKICAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKICAgL0xlbmd0
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
dY/UCrSeffDogyN2FTODQwZhn6WeUU9+j2xc19a7QW0ZcFE/biSuLN7W51sIt5zLM6gPsN5/3Pxp
Tp9vdF1WqOrvL4ts7ogKZW5kc3RyZWFtCmVuZG9iagozNyAwIG9iagogICA0NjgKZW5kb2JqCjM4
IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvcgogICAvRm9udE5hbWUgL0hVQllFUytMaWJl
cmF0aW9uU2Fucy1Cb2xkCiAgIC9Gb250RmFtaWx5IChMaWJlcmF0aW9uIFNhbnMpCiAgIC9GbGFn
cyAzMgogICAvRm9udEJCb3ggWyAtMTg0IC0zMDMgMTA2MiAxMDMzIF0KICAgL0l0YWxpY0FuZ2xl
IDAKICAgL0FzY2VudCA5MDUKICAgL0Rlc2NlbnQgLTIxMQogICAvQ2FwSGVpZ2h0IDEwMzMKICAg
L1N0ZW1WIDgwCiAgIC9TdGVtSCA4MAogICAvRm9udEZpbGUyIDM0IDAgUgo+PgplbmRvYmoKOCAw
IG9iago8PCAvVHlwZSAvRm9udAogICAvU3VidHlwZSAvVHJ1ZVR5cGUKICAgL0Jhc2VGb250IC9I
VUJZRVMrTGliZXJhdGlvblNhbnMtQm9sZAogICAvRmlyc3RDaGFyIDMyCiAgIC9MYXN0Q2hhciAx
MjIKICAgL0ZvbnREZXNjcmlwdG9yIDM4IDAgUgogICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGlu
ZwogICAvV2lkdGhzIFsgMjc3IDAgMCAwIDU1NiAwIDcyMiAwIDAgMCAwIDAgMjc3IDAgMjc3IDI3
NyA1NTYgNTU2IDU1NiAwIDU1NiA1NTYgNTU2IDAgNTU2IDAgMCAwIDAgMCAwIDAgMCA3MjIgNzIy
IDcyMiA3MjIgNjY2IDAgNzc3IDcyMiAyNzcgMCA3MjIgMCA4MzMgNzIyIDc3NyA2NjYgNzc3IDcy
MiA2NjYgMCA3MjIgMCA5NDMgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDYxMCA1NTYgNjEwIDU1NiAz
MzMgNjEwIDYxMCAyNzcgMCA1NTYgMjc3IDg4OSA2MTAgNjEwIDYxMCAwIDM4OSA1NTYgMzMzIDYx
MCA1NTYgNzc3IDAgNTU2IDUwMCBdCiAgICAvVG9Vbmljb2RlIDM2IDAgUgo+PgplbmRvYmoKMzkg
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
Lyi9H3AzjFP+uMOWeUGVfv4CBXMrBAplbmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCiAgIDU2OApl
bmRvYmoKNDMgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yCiAgIC9Gb250TmFtZSAvQVlR
VVRSK0xpYmVyYXRpb25TYW5zCiAgIC9Gb250RmFtaWx5IChMaWJlcmF0aW9uIFNhbnMpCiAgIC9G
bGFncyAzMgogICAvRm9udEJCb3ggWyAtMjAzIC0zMDMgMTA1MCA5MTAgXQogICAvSXRhbGljQW5n
bGUgMAogICAvQXNjZW50IDkwNQogICAvRGVzY2VudCAtMjExCiAgIC9DYXBIZWlnaHQgOTEwCiAg
IC9TdGVtViA4MAogICAvU3RlbUggODAKICAgL0ZvbnRGaWxlMiAzOSAwIFIKPj4KZW5kb2JqCjkg
MCBvYmoKPDwgL1R5cGUgL0ZvbnQKICAgL1N1YnR5cGUgL1RydWVUeXBlCiAgIC9CYXNlRm9udCAv
QVlRVVRSK0xpYmVyYXRpb25TYW5zCiAgIC9GaXJzdENoYXIgMzIKICAgL0xhc3RDaGFyIDE3NAog
ICAvRm9udERlc2NyaXB0b3IgNDMgMCBSCiAgIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCiAg
IC9XaWR0aHMgWyAyNzcgMCAwIDAgNTU2IDg4OSA2NjYgMCAzMzMgMzMzIDM4OSAwIDI3NyAzMzMg
Mjc3IDI3NyA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgMjc3IDAgMCAw
IDAgMCAwIDY2NiA2NjYgNzIyIDcyMiA2NjYgNjEwIDc3NyA3MjIgMjc3IDAgNjY2IDU1NiA4MzMg
NzIyIDc3NyA2NjYgMCA3MjIgNjY2IDYxMCA3MjIgNjY2IDk0MyA2NjYgNjY2IDYxMCAyNzcgMCAy
NzcgNDY5IDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3NyA1NTYgNTU2IDIyMiAyMjIgNTAwIDIy
MiA4MzMgNTU2IDU1NiA1NTYgMCAzMzMgNTAwIDI3NyA1NTYgNTAwIDcyMiA1MDAgNTAwIDUwMCAw
IDI1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDEwMDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNzM2IDAgMCAwIDAgNzM2IF0K
ICAgIC9Ub1VuaWNvZGUgNDEgMCBSCj4+CmVuZG9iago0NCAwIG9iago8PCAvTGVuZ3RoIDQ1IDAg
UgogICAvRmlsdGVyIC9GbGF0ZURlY29kZQogICAvTGVuZ3RoMSA5MTI4Cj4+CnN0cmVhbQp4nOV5
e1xVVdr/s/az97lf9jmcAxw4nHO4HBBvEIiKWu5IzVuGiY7a0IAiWZMjSqaJBtoIUjZoCpYpnkzN
kBw0xw6KjiZ5CZ2pSftNk/0qpaw3MqbXLoOweJ99ALNm3nn/fD+/z29v1tl7r7X3Ws/lu77PsxbA
AMAAZYDgm7sgv+iDb2q/AYhYDyDMnvvYoz54KCYTwNUGwHhh0YMLFg157GGAaHqGvQ8+8nhh/YeP
L6H7eoDw1vnz8gu6cFwFgPs5qhs6nypMQc1j9Pw2PSfMX/DospdfsWfT83V63vTIwrn5wNbOBIhZ
S8/PLchfViQ+q1kE4PHRs69o8byikdq/061HAZDmgwCFvEYslHaStFqIUkziDdDcYDqpVBAhpflC
220gX2i70JYaZou1+WNtsYUidBZjdOenvEZr+eGbxZpkYN0dAOIX0kXqYaJi0QjVsEpkCrpBkXTy
hdbO1tsg5XpbWiqb1GDImXkUdKAAo19d9/HhtmHDZylhoPeCzGTBq5X1ir5Iv12vz8VYZ6wt3har
Eb/uutbSdU26WNdxURpAZoPDNF6BxgFhMERxoR7QwjQVFlvQtNnABB1MMet1xnEOubMt7TopkDKq
7Xpzm80ekZl6IM/JWC6jbockxsdpnHSTbruDpaeFiwXBFSuq6xsbs15bcuKUsLPrl0Lt9tpjO7sq
NI6u2nkFX5P7YFH3FbFULAEHREORkgBOpi/XrZWcrzCp0cSORDbag6Z17minoHPqYJJgt451kxDX
25pt9kwyZOv1tlb5Gp3Xr1FFqpI8OqYoJhDzdkx7jDQaRrPRwmjn6GhpoDZFl6IfaFgIC9lCYaFz
YbQ+dxFJ7Yz1kKRDhzktLN4HNhnS00A7mJEeWrG084Dp/OsPn54z9+1f8+v8NEvuvMy0QWHX2i2N
FuGB2cdODxmyr/9ANpwZWBi7i3/YvPngvlpVp7OEgwbynQ5sMFhxQrV+FauWdYJsAMllTgO3XrSH
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
pnLMNuK9HKfcI0tTON4j42SOk6hlEseJE2RpYhhOiDFLE2Qcb8a7OY6rwbE1OIbjXcIg6a4OzDqC
d05CheNojnfcbpfucODto6zS7XYcNdIsjVK6rTjSjCM4ZnIcPswhDe/AYUNlaZgDh2YYpaEyZhhx
iAfTzZh2m1FK43ibEVNTjFKqGVOMOHiQXhos4yA9DkzDAf390oAC7J9sl/r7MdmO/ZL8Ur87McmP
iX6jlGhFvxETOMZzjLNiLOkZa0dfAXo70EMqeAowxoxusqCbY3QHRmWhix5cHCMLMIIsFcExnD4K
d6GTo4NjGEc7vWDnaCNdbVkor0RrAVo4mk3hkpmjid42haORo0FGPUcdvabjqHWgpgBFahQJAU6k
WuQUXWRJGIRMRuDIgqxgzTNswP8LB/xvC/Bvj5j/As5PncUKZW5kc3RyZWFtCmVuZG9iago0NSAw
IG9iagogICA2NTM3CmVuZG9iago0NiAwIG9iago8PCAvTGVuZ3RoIDQ3IDAgUgogICAvRmlsdGVy
IC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJxdUrtuwzAM3PUVGtMh8EOx1ABGgCJdMvSBpv0AR6JT
A41sKM6Qvy+pC1Kgg83T6UgeIRbb3fMuDrMu3tPo9zTrfogh0Xm8JE/6QMchqqrWYfDz7ZT//tRN
quDk/fU802kX+1G1rS4++PI8p6tePIXxQA9Ka128pUBpiEe9+NruQe0v0/RDJ4qzLtVmowP1XO6l
m167E+kiJy93ge+H+brktD/F53UiXedzBUt+DHSeOk+pi0dSbVludNv3G0Ux/LszFimH3n93SbXN
iqVlyUG19jFjDowb4IZxXWbMQbUr6FdZ76Hxwvfge+EJPAleA68ZNwa9DGOHOi7XQa6VXFeDrxmb
LmMOXB/8SngHb068WdSxUqdBr0Z6OWCXMfo66WsD9EF4zOVkrhoe6uwfepv1DtiJBnPVMlcDfZP1
FTSVeAY2gq0Fb4WHf5PnQl8jfQ18GvFpMIuRWQw8GPFgMC8HedDby8nTyg7ed8ZfUuJ1yYua90Q2
ZIh03+VpnCQrf7/5MMN4CmVuZHN0cmVhbQplbmRvYmoKNDcgMCBvYmoKICAgMzkwCmVuZG9iago0
OCAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKICAgL0ZvbnROYW1lIC9FV1NLVkYrRGVq
YVZ1U2FucwogICAvRm9udEZhbWlseSAoRGVqYVZ1IFNhbnMpCiAgIC9GbGFncyAzMgogICAvRm9u
dEJCb3ggWyAtMTAyMCAtNDE1IDE2ODAgMTE2NiBdCiAgIC9JdGFsaWNBbmdsZSAwCiAgIC9Bc2Nl
bnQgOTI4CiAgIC9EZXNjZW50IC0yMzUKICAgL0NhcEhlaWdodCAxMTY2CiAgIC9TdGVtViA4MAog
ICAvU3RlbUggODAKICAgL0ZvbnRGaWxlMiA0NCAwIFIKPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9U
eXBlIC9Gb250CiAgIC9TdWJ0eXBlIC9UcnVlVHlwZQogICAvQmFzZUZvbnQgL0VXU0tWRitEZWph
VnVTYW5zCiAgIC9GaXJzdENoYXIgMzIKICAgL0xhc3RDaGFyIDEyMQogICAvRm9udERlc2NyaXB0
b3IgNDggMCBSCiAgIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCiAgIC9XaWR0aHMgWyAzMTcg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzMTcgMzM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2
IDAgMCAwIDYzNiAzMzYgMCAwIDAgMCAwIDAgMCA2ODYgMCA3NzAgMCAwIDAgMCAwIDAgMCAwIDAg
MCA3ODcgMCAwIDAgNjM0IDYxMCAwIDAgMCAwIDYxMCAwIDAgMCAwIDAgNTAwIDAgNjEyIDAgNTQ5
IDYzNCA2MTUgMzUyIDYzNCA2MzMgMjc3IDAgMCAyNzcgOTc0IDYzMyA2MTEgNjM0IDAgNDExIDUy
MCAzOTIgNjMzIDAgMCAwIDU5MSBdCiAgICAvVG9Vbmljb2RlIDQ2IDAgUgo+PgplbmRvYmoKNDkg
MCBvYmoKPDwgL0xlbmd0aCA1MCAwIFIKICAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKICAgL0xlbmd0
aDEgMjYwMAo+PgpzdHJlYW0KeJzVVGt0VNUV3ne+e2aSTGZyZ5gEQkhIjBd5hcCEgECwQwyvIBRI
0NA2bSDDECk0kCAP00gqBiSCwQKDPKQpUgpBcUQkCaFWC2htSFuE0FrbUhBUWopoFWTAHfcEu7pW
12r/ujznnnvPtx/ffqxzLmlEFE01BDJKlyxOpQeTRxBpj8niwMK5CxYNXTKPCIJp39z5ywONFftu
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
20Nx03MIjO6Sw/7QbA/g2HJmaGSjOIe8/WQ3dDCBLSR9P/NZ+tq/9hQy6E+OdsAMPpBjXOLKFmHE
KZBqLuCCzXtVbzubpLTAw7ZknHvyUbUt6JsMl8wbHF5cHPGoAEB/sEMONMHh+zo8WsOa0h1npAxn
1XXg0Mtzbya9mxlBV/jUO5mHvJ0E+1N8bQnhUuvmYclGh0syFtnQhKo9S3TQeolOIbl/850avf0x
XNVNUY+SinrvF6588mnKrszip26iGikWAuFzWSmmQtXzC1ORcMgKZW5kc3RyZWFtCmVuZG9iago1
MiAwIG9iagogICAyMjMKZW5kb2JqCjUzIDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvcgog
ICAvRm9udE5hbWUgL0JZQkZJWStEZWphVnVTYW5zCiAgIC9Gb250RmFtaWx5IChEZWphVnUgU2Fu
cykKICAgL0ZsYWdzIDQKICAgL0ZvbnRCQm94IFsgLTEwMjAgLTQxNSAxNjgwIDExNjYgXQogICAv
SXRhbGljQW5nbGUgMAogICAvQXNjZW50IDkyOAogICAvRGVzY2VudCAtMjM1CiAgIC9DYXBIZWln
aHQgMTE2NgogICAvU3RlbVYgODAKICAgL1N0ZW1IIDgwCiAgIC9Gb250RmlsZTIgNDkgMCBSCj4+
CmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvRm9udAogICAvU3VidHlwZSAvQ0lERm9udFR5cGUy
CiAgIC9CYXNlRm9udCAvQllCRklZK0RlamFWdVNhbnMKICAgL0NJRFN5c3RlbUluZm8KICAgPDwg
L1JlZ2lzdHJ5IChBZG9iZSkKICAgICAgL09yZGVyaW5nIChJZGVudGl0eSkKICAgICAgL1N1cHBs
ZW1lbnQgMAogICA+PgogICAvRm9udERlc2NyaXB0b3IgNTMgMCBSCiAgIC9XIFswIFsgNjAwIDYy
OSBdXQo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKICAgL1N1YnR5cGUgL1R5cGUw
CiAgIC9CYXNlRm9udCAvQllCRklZK0RlamFWdVNhbnMKICAgL0VuY29kaW5nIC9JZGVudGl0eS1I
CiAgIC9EZXNjZW5kYW50Rm9udHMgWyA1NCAwIFJdCiAgIC9Ub1VuaWNvZGUgNTEgMCBSCj4+CmVu
ZG9iagoxIDAgb2JqCjw8IC9UeXBlIC9QYWdlcwogICAvS2lkcyBbIDE3IDAgUiAzMCAwIFIgXQog
ICAvQ291bnQgMgo+PgplbmRvYmoKNTUgMCBvYmoKPDwgL0NyZWF0b3IgKGNhaXJvIDEuMTIuMiAo
aHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnKSkKICAgL1Byb2R1Y2VyIChjYWlybyAxLjEyLjIgKGh0
dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZykpCj4+CmVuZG9iago1NiAwIG9iago8PCAvVHlwZSAvQ2F0
YWxvZwogICAvUGFnZXMgMSAwIFIKPj4KZW5kb2JqCnhyZWYKMCA1NwowMDAwMDAwMDAwIDY1NTM1
IGYgCjAwMDAwNzU3MDEgMDAwMDAgbiAKMDAwMDAwMzI5MyAwMDAwMCBuIAowMDAwMDAwMDE1IDAw
MDAwIG4gCjAwMDAwMDMyNzAgMDAwMDAgbiAKMDAwMDAwMzg0MCAwMDAwMCBuIAowMDAwMDA0NjA1
IDAwMDAwIG4gCjAwMDAwMDUxNjIgMDAwMDAgbiAKMDAwMDA0MTQzNiAwMDAwMCBuIAowMDAwMDY0
MTgwIDAwMDAwIG4gCjAwMDAwMTI2NTEgMDAwMDAgbiAKMDAwMDAyMTczNyAwMDAwMCBuIAowMDAw
MDIyMTAwIDAwMDAwIG4gCjAwMDAwMjI1MDEgMDAwMDAgbiAKMDAwMDAyMjc1NiAwMDAwMCBuIAow
MDAwMDcyMjYyIDAwMDAwIG4gCjAwMDAwNzU1NDAgMDAwMDAgbiAKMDAwMDAwMzYyNSAwMDAwMCBu
IAowMDAwMDA0NTgyIDAwMDAwIG4gCjAwMDAwMDUxMzkgMDAwMDAgbiAKMDAwMDAxMjYyNyAwMDAw
MCBuIAowMDAwMDIxNzEzIDAwMDAwIG4gCjAwMDAwMjIwNzcgMDAwMDAgbiAKMDAwMDAyMjQ3OCAw
MDAwMCBuIAowMDAwMDIyNzM0IDAwMDAwIG4gCjAwMDAwMjM2MTEgMDAwMDAgbiAKMDAwMDAyNjgy
MyAwMDAwMCBuIAowMDAwMDIzNjM0IDAwMDAwIG4gCjAwMDAwMjY3OTkgMDAwMDAgbiAKMDAwMDAy
NzU1NiAwMDAwMCBuIAowMDAwMDI3MDIyIDAwMDAwIG4gCjAwMDAwMjcyMzkgMDAwMDAgbiAKMDAw
MDAyNzUzNCAwMDAwMCBuIAowMDAwMDI4MTg5IDAwMDAwIG4gCjAwMDAwMjgyMTIgMDAwMDAgbiAK
MDAwMDA0MDU1NyAwMDAwMCBuIAowMDAwMDQwNTgyIDAwMDAwIG4gCjAwMDAwNDExMjkgMDAwMDAg
biAKMDAwMDA0MTE1MiAwMDAwMCBuIAowMDAwMDQxOTQ5IDAwMDAwIG4gCjAwMDAwNjMyMDggMDAw
MDAgbiAKMDAwMDA2MzIzMyAwMDAwMCBuIAowMDAwMDYzODgwIDAwMDAwIG4gCjAwMDAwNjM5MDMg
MDAwMDAgbiAKMDAwMDA2NDg0MSAwMDAwMCBuIAowMDAwMDcxNDc0IDAwMDAwIG4gCjAwMDAwNzE0
OTggMDAwMDAgbiAKMDAwMDA3MTk2NyAwMDAwMCBuIAowMDAwMDcxOTkwIDAwMDAwIG4gCjAwMDAw
NzI3MjkgMDAwMDAgbiAKMDAwMDA3NDY4NSAwMDAwMCBuIAowMDAwMDc0NzA5IDAwMDAwIG4gCjAw
MDAwNzUwMTEgMDAwMDAgbiAKMDAwMDA3NTAzNCAwMDAwMCBuIAowMDAwMDc1MzA1IDAwMDAwIG4g
CjAwMDAwNzU3NzQgMDAwMDAgbiAKMDAwMDA3NTkwMiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXpl
IDU3CiAgIC9Sb290IDU2IDAgUgogICAvSW5mbyA1NSAwIFIKPj4Kc3RhcnR4cmVmCjc1OTU1CiUl
RU9GCg==
--4K3xsvNwXo
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Wg-test-framework mailing list
Wg-test-framework@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework
--4K3xsvNwXo--


From wg-test-framework-bounces@lists.xenproject.org Mon Sep 22 15:42:00 2014
Return-path: <wg-test-framework-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 15:42:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <wg-test-framework-bounces@lists.xenproject.org>)
	id 1XW5kW-0005mJ-3F
	for archives@lists.xenproject.org; Mon, 22 Sep 2014 15:42:00 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Aravind.Gopalakrishnan@amd.com>) id 1XW5kT-0005mA-5x
	for wg-test-framework@lists.xenproject.org;
	Mon, 22 Sep 2014 15:41:58 +0000
Received: from [85.158.139.211:23676] by server-15.bemta-5.messagelabs.com id
	CB/4C-12002-44340245; Mon, 22 Sep 2014 15:41:56 +0000
X-Env-Sender: Aravind.Gopalakrishnan@amd.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1411400511!11315216!1
X-Originating-IP: [157.56.111.138]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25516 invoked from network); 22 Sep 2014 15:41:52 -0000
Received: from mail-bn1bon0138.outbound.protection.outlook.com (HELO
	na01-bn1-obe.outbound.protection.outlook.com) (157.56.111.138)
	by server-9.tower-206.messagelabs.com with AES256-SHA encrypted SMTP;
	22 Sep 2014 15:41:52 -0000
Received: from BY1PR0201CA0034.namprd02.prod.outlook.com (25.160.191.172) by
	BLUPR02MB196.namprd02.prod.outlook.com (10.242.189.154) with Microsoft
	SMTP Server (TLS) id 15.0.1034.13; Mon, 22 Sep 2014 15:41:49 +0000
Received: from BN1AFFO11FD016.protection.gbl (2a01:111:f400:7c10::106) by
	BY1PR0201CA0034.outlook.office365.com (2a01:111:e400:4814::44) with
	Microsoft SMTP Server (TLS) id 15.0.1034.13 via Frontend Transport;
	Mon, 22 Sep 2014 15:41:49 +0000
Received: from atltwp01.amd.com (165.204.84.221) by
	BN1AFFO11FD016.mail.protection.outlook.com (10.58.52.76) with Microsoft
	SMTP
	Server id 15.0.1029.15 via Frontend Transport; Mon, 22 Sep 2014 15:41:48
	+0000
X-WSS-ID: 0NCB7LM-07-5CC-02
X-M-MSG: 
Received: from satlvexedge01.amd.com (satlvexedge01.amd.com [10.177.96.28])
	(using TLSv1 with cipher AES128-SHA (128/128 bits))
	(No client certificate requested)
	by atltwp01.amd.com (Axway MailGate 5.3.1) with ESMTPS id 27B0712C0003; 
	Mon, 22 Sep 2014 10:41:46 -0500 (CDT)
Received: from SATLEXDAG02.amd.com (10.181.40.5) by satlvexedge01.amd.com
	(10.177.96.28) with Microsoft SMTP Server (TLS) id 14.3.195.1;
	Mon, 22 Sep 2014 10:41:57 -0500
Received: from [127.0.0.1] (10.180.168.240) by SATLEXDAG02.amd.com
	(10.181.40.5) with Microsoft SMTP Server (TLS) id 14.3.195.1;
	Mon, 22 Sep 2014 11:41:46 -0400
Message-ID: <54204338.6090507@amd.com>
Date: Mon, 22 Sep 2014 10:41:44 -0500
From: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ian Jackson <Ian.Jackson@eu.citrix.com>, "Paul L. George"
	<pgeorge@plginc.com>
References: <21527.5802.902997.176928@mariner.uk.xensource.com>
	<07a601cfd428$70e54e10$52afea30$@plginc.com>
	<21532.26774.544310.598789@mariner.uk.xensource.com>
	<07f001cfd436$348ea5c0$9dabf140$@plginc.com>
	<21532.29740.781995.367485@mariner.uk.xensource.com>
	<EC1529AB-9601-439B-8153-C8D3825B2BD6@plginc.com>
	<21536.7343.285823.447425@mariner.uk.xensource.com>
In-Reply-To: <21536.7343.285823.447425@mariner.uk.xensource.com>
Content-Type: multipart/mixed; boundary="------------090104040105060300070401"
X-Originating-IP: [10.180.168.240]
X-EOPAttributedMessage: 0
X-Forefront-Antispam-Report: CIP:165.204.84.221; CTRY:US; IPV:NLI; EFV:NLI;
	SFV:NSPM;
	SFS:(10019020)(6009001)(428002)(51704005)(199003)(164054003)(189002)(479174003)(377454003)(24454002)(68736004)(567704001)(80022003)(19580395003)(93886004)(105586002)(79102003)(15975445006)(83322001)(107046002)(46102003)(44976005)(77982003)(81342003)(76482002)(74662003)(568964001)(106466001)(74502003)(81542003)(83506001)(97736003)(85306004)(59896002)(230783001)(31966008)(120916001)(64126003)(117636001)(83072002)(84326002)(92566001)(92726001)(50986999)(85852003)(84676001)(90102001)(99396002)(64706001)(87936001)(15202345003)(87266999)(54356999)(99136001)(101416001)(65806001)(86362001)(512934002)(76176999)(65816999)(36756003)(95666004)(561944003)(4396001)(65956001)(120886001)(71186001)(20776003)(21056001)(102836001)(62816006);
	DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR02MB196; H:atltwp01.amd.com;
	FPR:; MLV:sfv; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; 
X-Microsoft-Antispam: UriScan:;
X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB196;
X-Forefront-PRVS: 034215E98F
Received-SPF: None (protection.outlook.com: amd.com does not designate
	permitted sender hosts)
X-OriginatorOrg: amd4.onmicrosoft.com
Cc: Lars Kurth <lars.kurth@citrix.com>,
	Mike Woster <mwoster@linuxfoundation.org>, Don Slutz <dslutz@verizon.com>,
	wg-test-framework@lists.xenproject.org
Subject: Re: [Wg-test-framework] Machine suggestions from AMD
X-BeenThere: wg-test-framework@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen Project Test Framework Working Group
	<wg-test-framework.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:wg-test-framework@lists.xenproject.org>
List-Help: <mailto:wg-test-framework-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=subscribe>
Sender: wg-test-framework-bounces@lists.xenproject.org
Errors-To: wg-test-framework-bounces@lists.xenproject.org

--------------090104040105060300070401
Content-Type: text/plain; charset="ISO-8859-1"; format=flowed
Content-Transfer-Encoding: 7bit

On 9/22/2014 7:57 AM, Ian Jackson wrote:
> Here is a detailed proposal for selecting particular machines from
> Paul's suggestions, in the form of a spreadsheet.
>
> (You can find everything here too:
>    http://xenbits.xen.org/gitweb/?p=people/iwj/colo-for-testing.git;a=summary
>    git://xenbits.xen.org/people/iwj/colo-for-testing.git)
>
> Summary:
>
> Total budget $57,076 for 26 machines, 2 to become the main servers and
> 24 to become test boxes.  (Switches, etc., not included.)  Of the test
> boxes: 42% are AMD (54% by cost).
>
>
> I have added a pair of higher-spec versions of the Dell R415.  The PDF
> from the dell.com website is attached.
>
> There are two very expensive AMD test boxes at the top of the list.
> This is to try to balance the quantity and spend between Intel and
> AMD.  Conversely there are two very cheap AMD machines at the bottom
> of the list.  (It appears that there is a greater variety of Intel
> machines available.)

I could see a mix of different micro-architectures and socket config for 
the AMD systems on the spreadsheet.
(In fact, I think the second R515 (the cheaper one) is a K10 micro 
architecture which is a little old. But can be
used for regression tests, etc. I guess)

So, as far as variety, we should be fine.

> This amount is bigger than was approved by the Xen Project Advisory
> Board but I think we can just go back to them to approve it and this
> won't be a problem (and can be done quickly).  We should seek
> re-approval for the bigger amount plus (as before) some headroom.
>
> Alternatively we can go ahead without the two big AMD machines; that
> would be $42,342, well within the budget (and would have 36% AMD test
> boxes by number or 34% by value).  If it is convenient we could start
> work now and get approval for the extra budget (which I am confident
> of getting) in parallel.

Instead of the IBM machine, why not swap that with a HP 385p server? 
(attaching a model I found on the website).
Looking at IBM x3755's spec, I see it has a 6300 series opteron which is 
a Piledriver micro architecture.
The HP model I have attached is the same; and is also a 2U (a space 
requirement that we have already factored in).
It's different from the other AMD ones in that it's a 2P box. (i.e) a 
MCM part. Afaict, others are 1P boxes.

Aside from that, it's also less costly compared to the IBM one.
But, it still keeps the ratio of AMD boxes (by  number) intact and the 
cost balancing identical still-

Costs after swapping the HP 385p for the IBM x3755:
Total cost: $50140
Cost of AMD systems: $18956
Ratio of AMD test boxes (by value) : ~47%


Thoughts?

Thanks,
-Aravind.

> I'm assuming that one pair of 2U test boxes will fit in the rack.
> That will give us 26 machines of which 4 in total (the two main
> servers and the two big AMD test boxes) are 2U, for a total of 30U.
> (Of course we need to fit some cable management, switches,
> etc. etc. in as well.)
>
>
>


--------------090104040105060300070401
Content-Type: application/pdf; name="HP_server_DL385p.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="HP_server_DL385p.pdf"

JVBERi0xLjQKJeHp69MKOSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAxIDAgUgo+
PgplbmRvYmoKMTAgMCBvYmoKPDwvVHlwZSAvUGFnZQovUGFyZW50IDEgMCBSCi9SZXNvdXJj
ZXMgPDwvUHJvY1NldHMgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9F
eHRHU3RhdGUgPDwvRzAgMTEgMCBSCj4+Ci9YT2JqZWN0IDw8L1gwIDEyIDAgUgo+PgovRm9u
dCA8PC9GMCAxMyAwIFIKL0YxIDE0IDAgUgovRjIgMTUgMCBSCi9GMyAxNiAwIFIKL0Y0IDE3
IDAgUgovRjUgMTggMCBSCi9GNiAxOSAwIFIKL0Y3IDIwIDAgUgo+Pgo+PgovTWVkaWFCb3gg
WzAgMCA2MTIgNzkyXQovQW5ub3RzIFs8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawov
Qm9yZGVyIFswIDAgMF0KL1JlY3QgWzMzLjk5NSA3MjkuNyA2MS43NDUgNzU3LjQ1XQovQSA8
PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4v
aG9tZS5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzgxLjE3IDczNy40NyAxMTcuOCA3NDkuMTI1XQovQSA8PC9UeXBl
IC9BY3Rpb24KL1MgL1VSSQovVVJJIChqYXZhc2NyaXB0OnZvaWRcKDBcKTspCj4+Cj4+IDw8
L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMTM2
LjY3IDczNy40NyAxNzEuMDggNzQ5LjEyNV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkK
L1VSSSAoamF2YXNjcmlwdDp2b2lkXCgwXCk7KQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3Vi
dHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzE4OS45NSA3MzcuNDcgMjIxLjAz
IDc0OS4xMjVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGphdmFzY3JpcHQ6
dm9pZFwoMFwpOykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRl
ciBbMCAwIDBdCi9SZWN0IFs1MS4yIDcwMy4wNiAxNDcuMjE1IDcxMy42MDVdCi9BIDw8L1R5
cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9wcm9k
dWN0cy9wcm9saWFudC1zZXJ2ZXJzL2luZGV4Lmh0bWwpCj4+Cj4+IDw8L1R5cGUgL0Fubm90
Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMjA2LjYgMzQ2LjE5NSAy
NTAuNDQ1IDM1Ni43NF0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDov
L3d3dy5mYWNlYm9vay5jb20vaGVscC8/cGFnZT0xMDY4KQo+Pgo+PiA8PC9UeXBlIC9Bbm5v
dAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzUxLjIgMjg0LjU5IDg4
Ljk0IDI5NS4xMzVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGphdmFzY3Jp
cHQ6dm9pZFwoMFwpOykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0Jv
cmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDI3My40OSAxMDUuMDM1IDI4NC4wMzVdCi9BIDw8
L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGphdmFzY3JpcHQ6dm9pZFwoMFwpOykKPj4K
Pj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0
IFs1MS4yIDI2Mi4zOSAxMzEuNjc1IDI3Mi45MzVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAv
VVJJCi9VUkkgKGphdmFzY3JpcHQ6dm9pZFwoMFwpOykKPj4KPj4gPDwvVHlwZSAvQW5ub3QK
L1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsyOSAyNDEuODU1IDMzLjk5
NSAyNTIuNF0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoamF2YXNjcmlwdDog
dm9pZFwoMFwpOykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRl
ciBbMCAwIDBdCi9SZWN0IFszMy40NCAyNDEuODU1IDM2LjIxNSAyNTIuNF0KL0EgPDwvVHlw
ZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoamF2YXNjcmlwdDogdm9pZFwoMFwpOykKPj4KPj4g
PDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsy
OSAzODQuNDkgOTguOTMgMzk1LjAzNV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VS
SSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL2hwLWZpbmFuY2lhbC1zZXJ2aWNlcy9pbmRl
eC5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFsw
IDAgMF0KL1JlY3QgWzEwMC41OTUgMzg0LjQ5IDE3NS41MiAzOTUuMDM1XQovQSA8PC9UeXBl
IC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vc3RvcmUt
ZmluZGVyL2luZGV4LmRvKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawov
Qm9yZGVyIFswIDAgMF0KL1JlY3QgWzI5IDM3My4zOSA3Ny44NCAzODMuOTM1XQovQSA8PC9U
eXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChqYXZhc2NyaXB0OnZvaWRcKDBcKTspCj4+Cj4+
XQovQ29udGVudHMgMjEgMCBSCj4+CmVuZG9iagoyMSAwIG9iago8PC9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCi9MZW5ndGggNjY1Ngo+PiBzdHJlYW0KeJy1XduuBbdtfT9fcZ4LdKz7BSgKxLc8
tzDQvgd1gsJukfT/gXJpZvZQi1s6ToLAiff27DUSRZEUKVI67sg5fzr555/d9bX28PmHXz/+
/IGnPtZ2yP/Tp68tHvL/9vmX//r4j8//EYA/mvNtvK2+yrv+E//8++8/zy9/+ePHN793n3/8
v9FkLXn0Ic38PB44IM8vgvz2p49vfnSf7fOnn6WdQZn/DOUzhM+ffv34F+f8d//6+dN/P79F
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
YO0aN3Jl3QvfFlN7xh79ZiwNydlWm+KHuWa0oxZGt/HjLay4CuH/AQHvFQAKZW5kc3RyZWFt
CmVuZG9iagoxMSAwIG9iago8PC9UeXBlIC9FeHRHU3RhdGUKL0NBIDEKL2NhIDEKL0xDIDAK
L0xKIDAKL0xXIDAKL01MIDQKL1NBIHRydWUKL0JNIC9Ob3JtYWwKPj4KZW5kb2JqCjEyIDAg
b2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA0NzQKL0hlaWdo
dCAzNTYKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudCA4Ci9TTWFz
ayAyMiAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA3NjI4Nwo+PiBzdHJlYW0K
eJzsvQnYVcWVtn1i1NhRbI12HDBOaDM4REQUFUEQ9XeeAFtQQVRERAMKaAQRiCIyj6IgTigI
DowiigoqTiiDgoDMk4wqYBxi0n/6u089nGW9Vfsc/Dr5mnR3PRfXpt46tWvXrlr11KpVq2rn
cgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
/wNRpUqVBg0adC6OPn36jBgxYvz48VMcpnl4++23P/roowULFixZsmTp0qXLli1bsWLFqlWr
1qxZs85h/fr1GzZs2LRp0xdffPHlT8BXO8LGrzau3bJ25ZaVq7auyv/bvGrVulUlsHr16jVF
sLYAhT///PN1WVgfYfPmzVu3bv3GYWsB33777Xfffff9998T+OMf//i1wx8dSKaYbdu2EVBK
IhVjKRUgRhluK2DL1i15bN2yceNGykNV72yRSfjHwpgxY2bMmDF79mx1PR/Lly+ne86ZM+ej
4uDX+fPnL1y48P3336eDkxvXd99999NPP+UaxAizZs3iz2klATm850CgRBqhRIKZM2d+8skn
n+4IpMl8TSKpAeqhGA9Y9xdZFYORmE9HUIHuIj7o8vRcJTDqI0wXHjt2bOnWLEHFAs1Bzega
gPddUsCKAozK7EX+LlQsrNiyYjsV619J7JCKjZB/IhWr8r/xQA1zNTb+05/+JI61dtGvolbi
v3dQe8UtyJ/GxkbOX275UjFUMqX6r+njCf/4kIjCpfRN+l2mqMNUJahYIA2ixXVMAcZycYxQ
moqNHMAO0+wwwQ6pWCjxdiWoWDCyKsHGMUfRK3X71wX4XX6zg/EbKpUIhLt8ltDV8twi5Wvr
Vt1Osu8cvvbwxwJMGzQKVUp+MnVOBPLl1i8tfwYIAl8UELyUIgNy3lyAXoQMdeXfV1u/+vFf
IYftycpiS4T87Vu+0j/+tLBXxT8G4tuF/MC3ZfuvlpWqxSLzlUMOLoLM+NN/dyuhIvWmmxw2
FqA/kQRakD9JQD0TIx17ZzNBws7EypUroV9UPmgE2UCz/fjjj+cXgDZoHDVv3ry5c+fOcyDN
vCxIN+b6scMnDsqKgGIIk5uuChjsWQsLWLRo0WcOiwpYHEGRn0WQare0AMJMujX11tWH0qws
gArhSrzC+hOIMzVTXh0hiPT1NMXYLDuYa/t3fe5g2p1UPj9zP71S6hZa0G78vCxMaTe9nXeh
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
y/jl5ORkJIoz6kkTNmMUt4O4wa2KX7yYFMUZ9qZlTFt/dnY2JYrT0KebWpNdTJfnbG9vp0sw
PYrzhJqhYkR+VWlWz6kzmG2WHh4eJmN799M6/tM6Pj5Okqd73I3iWunOzs5uM9XGyNvJx57u
/crKykgU13UC6dKMRHEienl5OQGedzQSxXt7e2kg0vH4pTFSL3XqMzJMzvj01mw5Pz/PiDiD
ymxLI1GcJVk+HsV5fv5qvoCdXfqb6RY+WBRnXVnjra+q7Z1WOfW+ubn54Bn8WjaeDI1nyZ9s
aRcXF1dXV+n4JVTbq9Fq0p4UKmPHl/Quz0C+jtzec2oCAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPyf/QO3hG5+CmVuZHN0cmVhbQplbmRv
YmoKMjIgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDQ3
NAovSGVpZ2h0IDM1NgovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVu
dCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMjQ5OAo+PiBzdHJlYW0KeJzt3Xl4
TXcex/HsmyAiIrLYalAeBo/BGKKqD0pNmdJWtTpGzXiqu5ZRS6s8VG0tqqitanhMO5ahJiQi
Qiyx05BGhEmC0NQyihLRubk3N/mdk6jQn3zl5P36J/fkuec8n9/vc7M8955zfi4uAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAKNtcC7gVcvdw97Dz9Pb29vHx8fPzq1DBv5KisiqgikFg
vqp5AoMcqjkEV7cLDatVt179hxs3+W2LVm3adujU+fEevZ565rn+AwYNfn346AkfD2vjLT0x
d8/dx9fBy7OQl7eXkYfC01N5rDw07FBwJN9Ctjqc/B1d2Ga9alBQcEhIjdDQ8IjwWrVr161n
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
5s351Gz2J5OnlMjUjz5QjB23vNgpjY6O3TS6RoUqVQJtPQUHh9QIDQ+PqFmrbr2GNYsptniB
I5Yv/dJmycL5eRbMnW03a/qMGc8G+FYw8fMplre6YdipYuVCAVWDlFdWcIgiPEJRu45dzfzN
MOeTnHsHOg/oXySVt4Pzq7dXPs+CBx534l6EW9HvFFXiCTfx9C1+Sn197vWIBc3+derkj2wm
TRhvN/Y9u9HvjhrVvVLRZn2L5aNu+Kk7+FdSVAmsUsj2O6NQSA1FWLhdaP5miPNJzr0DnMfz
N6cq+pIz87ojz5IoyQvidoyvCO/iZ9TG/c7lAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
WMf/AYiHkZkKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0
eXBlIC9UeXBlMAovQmFzZUZvbnQgL0FyaWFsCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVz
Y2VuZGFudEZvbnRzIFsyMyAwIFJdCi9Ub1VuaWNvZGUgMjQgMCBSCj4+CmVuZG9iagoxNCAw
IG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL2ljb21vb24K
L0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzI1IDAgUl0KL1RvVW5p
Y29kZSAyNiAwIFIKPj4KZW5kb2JqCjE1IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5cGUg
L1R5cGUwCi9CYXNlRm9udCAvCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZv
bnRzIFsyNyAwIFJdCi9Ub1VuaWNvZGUgMjggMCBSCj4+CmVuZG9iagoxNiAwIG9iago8PC9U
eXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL1RpbWVzIzIwTmV3IzIwUm9t
YW4KL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzI5IDAgUl0KL1Rv
VW5pY29kZSAzMCAwIFIKPj4KZW5kb2JqCjE3IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5
cGUgL1R5cGUwCi9CYXNlRm9udCAvVGltZXMjMjBOZXcjMjBSb21hbgovRW5jb2RpbmcgL0lk
ZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMzEgMCBSXQovVG9Vbmljb2RlIDMyIDAgUgo+
PgplbmRvYmoKMTggMCBvYmoKPDwvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAKL0Jhc2VG
b250IC9WZXJkYW5hCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsz
MyAwIFJdCi9Ub1VuaWNvZGUgMzQgMCBSCj4+CmVuZG9iagoxOSAwIG9iago8PC9UeXBlIC9G
b250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL1ZlcmRhbmEKL0VuY29kaW5nIC9JZGVu
dGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzM1IDAgUl0KL1RvVW5pY29kZSAzNiAwIFIKPj4K
ZW5kb2JqCjIwIDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9u
dCAvCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFszNyAwIFJdCi9U
b1VuaWNvZGUgMzggMCBSCj4+CmVuZG9iagoyMyAwIG9iago8PC9UeXBlIC9Gb250Ci9Gb250
RGVzY3JpcHRvciAzOSAwIFIKL0Jhc2VGb250IC9BcmlhbAovU3VidHlwZSAvQ0lERm9udFR5
cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkg
KEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwCj4+Ci9XIFswIFs3
NTBdIDEgNSAyNzcuODMyIDYgWzU1Ni4xNTIzXSAxMSAxNiAzMzMuMDA3OCAxNyAxOCAyNzcu
ODMyIDE5IDI4IDU1Ni4xNTIzIDI5IFsyNzcuODMyIDAgMCA1ODMuOTg0NCAwIDU1Ni4xNTIz
IDAgMCA2NjYuOTkyMiA3MjIuMTY4IDcyMi4xNjggMCA2MTAuODM5OCA3NzcuODMyIDcyMi4x
NjggMCAwIDAgNTU2LjE1MjMgMCAwIDAgNjY2Ljk5MjIgMCA3MjIuMTY4IDY2Ni45OTIyIDAg
MCAwIDk0My44NDc3XSA2OCA2OSA1NTYuMTUyMyA3MCBbNTAwXSA3MSA3NSA1NTYuMTUyMyA3
NiA3OSAyMjIuMTY4IDgwIFs4MzMuMDA3OF0gODEgODQgNTU2LjE1MjMgODUgWzMzMy4wMDc4
IDUwMCAyNzcuODMyIDU1Ni4xNTIzIDUwMCA3MjIuMTY4IDUwMCA1MDBdXQo+PgplbmRvYmoK
MzkgMCBvYmoKPDwvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BcmlhbAovRmxh
Z3MgNgovQXNjZW50IDkwNS4yNzM0Ci9EZXNjZW50IDIxMS45MTQxCi9TdGVtViAwCi9DYXBI
ZWlnaHQgNzE2LjMwODYKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstNjY0LjU1MDggLTMy
NC43MDcgMjAwMCAxMDA1Ljg1OTRdCi9Gb250RmlsZTIgNDAgMCBSCj4+CmVuZG9iago0MCAw
IG9iago8PC9MZW5ndGgxIDcwMDk2Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMzEy
MjAKPj4gc3RyZWFtCnic7L0HfFRF9z98ZubWvbvJbuqmbckmoQQIHQIRFghFeidBSpCAQEBA
sCFCUKQEUFRAQKRZ6BJCC0VBRRAUUREsIKBiRQR9EAtk9z0zuxtCxIfn+f1//8/7ft5PdvnO
mXpn7plzzpyZezcAAQADCoFB3XH3DRuXerLLPoDBozHz9XuHjBn2w9qj7wBRxwGY8sYMeWhc
xDZLIQCxYyvX6LFDh0i/Xu0PMB7zGo0YMWbiQ4MbXe+L5U0xnT9ixLAhEQ1ikrHuFUQKJvPP
jO/9C8b3IhrfM/rh4Unr/xgP8Mr3AHkzho+7Z8x7D+cuBci5DqDcO/SBia5ViZ9cACiohene
Q8cMGRexoF8/bLoMIHkQ8LHLcUs7jfls7+DwrN+0BA34Z/XX1Wpyenjj4T1/bS67xwqaGZM6
1ieiAoZqC19XaGOFvzb/NckKwfzyjyWX52D4K2TBC6ACBStkAN6ZtNF4HWSgSrAJzSxHMf0E
BkkTIBpxp5oED8p9IYfMhP50PUzmYEnglTbCfVh3PaZbId3N22L9PoiziCxEX0R8MK8LYgii
F09j3V28LV5jHL+OoBOgv+aEsXJffxn2t0g+BMMRyzG+Wvoa1iqZMAbTL2G7fRJAE14H2yxS
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
h+kk+gidTB+lU+hUWkin0cfo43Q6fUI7QmfQmdq72nvaUe197Zj2gfah9pF2XPtYO6Gd1D7R
PtU+0z7XTmmntS+0M9pZ7Zz2pfaV9rV2XvtG+1b7Tvte+1G7oP2kXdR+1i5pl7VftF8trbV/
aVe037Sr2u/aH9qf2l90Fp0tW2Wbdk27LkfIkVqZ5pOj5Gg5Ro7V/DroRKeyXY7TmS7psq7o
qq7pum7SDd2MPlaCnIg+qkN26hY9TA/XrbJLdsvJske36RF6pB6lR+sxeqxu1+P0eD1BT9ST
dIfu1F26W0/WPRZFT9XT9Gp6db2GXlNP12vJKXKqXluvo2fodfV6en29gd5Qb6Q31pvoTfVM
vZmcJlfTm+tZ+h16C72l7tVb6a31Nnq23lZvZ/xq/Etvr3ewqBbNoltMFsNi1u/UO+qd9M56
F72r3k3vrvfQe+q99N56H72v3k/PsVgsYZZwi1XP1fvrd+kD9IH6IH2wnqcP0e/Wh+r5+jB9
uH6PPkIfaVzRR+kF+mh9jH6vPlYfp4/X79Mn6BP1+/UH6Dz6JH2KzqdP02fos3QBXUgXGb/R
5+hiuoQupc/TZfQFupyu0B80rhq/G38Yf9KfjFeMl401xlpjnbHe2GBslBsYf9Gf6SU2jT3O
nmAz2Ww2jz3FnmUL2RL2Au4KXmbr2Aa2iW1mW9h2tou9xt5gb7PD7Ci9zD5kJ9hn7Av2JfuG
/cAuskvsF/oL/ZX+i16hv9Gr9Hf6h9xUzpSbGZuMV43NxjXjulFm+Ay/GXe49C96jV6nZdRH
/QwYYZQxJtGfmCxXl2vJzeUsuYXsxdat5Wy5ndxB7ih3lXvKfeX+zCkPku+Wh8uj5Hvl++QH
WDV5kjxFLpQfQw9phjxLLpLnyk/K8+Vn5AXoLS2Wl8rLWLq8XF4pvySvlTfKxfI2eYe8W94j
75Pfwr3Ou/Ix+UNWWz4ufyKfks/KX7N68nfyBfmS/C/5d/ma7MedkIoefbhiUyKVWHZBiVOS
cF/kQv8+WUlR0pTqSk2lllJHqcsaKfWVhkpT3DO1QN+/tZLNNKWt0k5pr3RQ7lQ6Kp2UzkoX
pavSTemu9FB6Kr2U3kofpa/ST8lRcpX+WHKXscXYGuIPMzGDmQP8UQYoeUq+MkIZaWw3U7Ni
NpnDzBHmGHO82WFONqeZq5trmmuZ65obmpuas8xec7a5g7mzubu5tznHPMCcZ843jzCPMo82
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
IDQxIDAgUgovQmFzZUZvbnQgL2ljb21vb24KL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQ0lE
VG9HSURNYXAgL0lkZW50aXR5Ci9DSURTeXN0ZW1JbmZvIDw8L1JlZ2lzdHJ5IChBZG9iZSkK
L09yZGVyaW5nIChJZGVudGl0eSkKL1N1cHBsZW1lbnQgMAo+PgovVyBbNiBbMTAwMF1dCj4+
CmVuZG9iago0MSAwIG9iago8PC9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL2lj
b21vb24KL0ZsYWdzIDQKL0FzY2VudCA5MzcuNQovRGVzY2VudCA2Mi41Ci9TdGVtViAwCi9D
YXBIZWlnaHQgNjk5LjIxODgKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstMTMuNjcxOSAt
ODUuOTM3NSAxNTg1LjkzNzUgOTQxLjQwNjNdCi9Gb250RmlsZTIgNDIgMCBSCj4+CmVuZG9i
ago0MiAwIG9iago8PC9MZW5ndGgxIDEyNjAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0
aCA2NTQKPj4gc3RyZWFtCnicxVNNSFRRFP7uvW/mzUw1b6QxSUwmRskZh1FnHM2w0kqzoNSo
iEjyNZoz4MyYKeiiH2jRoqhoF+Qqol3loiha2KJNVLRpE22GAqvd20i4iNe5b66CYhG06Dy+
e7/zc79z3n08MAAeXIYA8mZu+KDr9gtAtAPsUc6cGsNmnKKKb4TQaCFt8gx/CfBB8mOZ3MRU
zVsMU62H/KOZzLDp8ogg8VeEGnKH2N7oc+LXCS0jo9NnJ+9nd9J56T9O58yxp91VF+k89WAa
5Cxkr599DZ022hewjjv++0sLYmm3F+0PIsY+O1OX0pDnWNEu0ty1lF8UsSWlZSt3IuU4CUdp
+eSaxkoFhgJ4g0IFvATqUgJXQrwXWwi1HPaiBKuHThAqLfcgrcy5Bw1TtFciQBEfxULzzIJV
Zm21mqxOq98yrXP2T9t2BgnNg3IBK2Q1Wh1WnzVojTk5Zn+p1AJu44fx3fhkvDPmjFnjnurw
O/tffVfaiT8+dFt2kdO3RDs6gdrmOA9HRVhPJqq5wcKtYT28m/lFebCaV2wsBf2inuk7RDKx
i6e26cnWMEdd90CKCSFYKu4LeLjW0dIV6WrtT0T2Jaqqm3uiV4Z8hpeJNu72el09ScY5Z6mB
7robbZG2SFGyW/qGMt/s3Fzx6vqGjr5YvH9P3MeyMnjX5XFpN2WH3pkZeh8/Hqq3Z8ShOCfu
V1wQq1JcIx5V3IVN2K64GzoOK+5DHY7JO9W8juYFxaXmNcWl5h3FpeYDxaXmE8XdFH+juNT8
iCzSKCBHKCCPI/TfjmASozAxviq30jtOleM4T1HphdCEOBqz6UKuUMhjPyXzToGJCdqHqOAM
pmk94IgcWlPyH5uvqvnbGX4B7HLjTgplbmRzdHJlYW0KZW5kb2JqCjI2IDAgb2JqCjw8L0Zp
bHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAyMjUKPj4gc3RyZWFtCnicXZDBasMwDIbvfgod
20NxUsZOITBaBjmsG8v2AI6tZIZFNopzyNtP9kIHO9hC/v9P/Ja+dNeOfAL9xsH2mGD05BiX
sLJFGHDypOozOG/T3pXbziYqLXC/LQnnjsagmgZAv4u6JN7g8OTCgEelX9khe5rg8Hnppe/X
GL9xRkpQqbYFh6NMejHxZmYEXbBT50T3aTsJ8+f42CLCufT1bxobHC7RWGRDE6qmqqq6BSn1
Q6uQ3D99p4bRfhku7kdxP0st7v09c/l/91B2ZZY8ZQklSI7gCe97iiFmKp8fIHJu/gplbmRz
dHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDQz
IDAgUgovQmFzZUZvbnQgLwovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJRE1hcCAv
SWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcg
KElkZW50aXR5KQovU3VwcGxlbWVudCAwCj4+Ci9XIFswIDIgMTkwIDM1IFs1NzcgMCA1MDMg
MCAwIDQ5OCAwIDYxNl0gNDcgWzczOSAwIDAgNTU4IDAgMCA1MjMgMCAwIDAgODAzXSA2NyBb
NTE4IDUzNyA0MzggNTM3IDUwNCAwIDAgMCAyNzEgMCA1MzAgMzAwIDgwMyA1NDEgNTM4IDU0
MiAwIDM4MiA0NTEgMzg5IDU0MV1dCj4+CmVuZG9iago0MyAwIG9iago8PC9UeXBlIC9Gb250
RGVzY3JpcHRvcgovRm9udE5hbWUgLwovRmxhZ3MgNgovQXNjZW50IDEwMDEKL0Rlc2NlbnQg
MzE1Ci9TdGVtViAwCi9DYXBIZWlnaHQgNjkzCi9JdGFsaWNBbmdsZSAwCi9Gb250QkJveCBb
LTE1NCAtMjEzIDExNTkgOTM2XQovRm9udEZpbGUyIDQ0IDAgUgo+PgplbmRvYmoKNDQgMCBv
YmoKPDwvTGVuZ3RoMSAxMDM5MgovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDY2NzMK
Pj4gc3RyZWFtCnic7XpreFvXceCcc/F+XgAXbwK4wCX4AEiCBPgQKZEASZCCKMkSRFEk5dAm
JVIkHT1oiRIpy6Io2bJo2qZdO2s5zbpO+sWx3W4qKI1TtdnG/tp8SfN047bpF8ex3dSN3W7p
auM6j01M7JwLgKa0yvZrv/7svZh75sycx5yZOXPmUAICAHpYBA7qZ45PzNzV2/MKgCEDQA8f
HTsycbTJ+CxAuQFA8eCRsfkZrk8tAhAX9hIPHzs4pj3BPQDAa5D246kjs/PfDIeRRzYBcC9P
TU2MqX2KTmz7rwjlWB3/1fd+dRzx/4nQPHn49KHm337oRwCWfwawiodmJo+c+tP0VwFU5QjS
wVOzYmjBif1NX8Qx9x48Mjaz+eiPJlCWX2C9BpjsCCdfePWbd5q3fABu7l2kwLdThkG5nPv9
A/lD+ajiEvc8VrVAofBgH64234PjPIf8ccUleaSNz3WZch0GQQGzoMaePMRgGLv+nUpCGoGv
IL8IuNot5HkQ6S6opi6o41KI/3coh78FkWyHBgQNeQ48yGslIYiT+6ECywbyKOiR5kfYjhAv
QhlCEqEGIYEQQAjL7REQ70PoRhgm18DPDeKcnThfI2wmP4d6egA2UzXiP8UyhfUpxCtRvqfA
TbsR/zHS/x4a6V1Y3oX8umLZiaUeYrQC2w1AC9bdnITjdqI8YZRTD0GyE9pQZoqlA+evImhV
8kVsq4IwdUOCfAllcUM1+QXCWWzjxLoP6WaIEnP+dWpFvAYSOG6C0akH+X6cL4DtF5D356iv
i9iP8Qh46bcgQNbARjnwkG8i7yDWd8AQlmz+CJMBPUskZ/PvkO+DyB1C/QDUMkC5MornUH5c
EwlAkItAPWsrt/9+Eb6CesE1MK/B9g30HRBkGQLg47QoG667ZF+c6zZmPwQrgp7JQSWoxH4e
zoo2PY46IBCUbczs+zb4kbeNjCKd0c6iHGehDmmPyuu7C/sym34R7kd6K/Yvx/4+7nehtQh1
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
got2F3EVVNHbi7gG/PS+Iq5F/DNFXA+NeNcu4Hg5pe8XcZSZqyzi/AbcwvAXxO5jM6ePT09O
zYroLXExMzF3eGJ2tnb32MGPjx0fF9MTpyYOH5s5MnF0FpsemRk7erpG3FG3uy6zW+yfPjJz
ePrQ9MS4OFjfIHYdOzy+Z2Ly5OGx43MTBw4dOzp7oq7wPXjsSNut27exSW/N2jdx/MT0saNi
Q119fWb3Rw2QX8v46bHDs8jeOTY2Ke6Yvbk6NTs70xaLzc3N1Y3LnCPIYILEfjMHXsBrb7f8
nw1Ow3GYhkmYglmkxaEeGvArQgYmYA4O43cW31p0vDE4CB/H73EYR34aOacQDsujHEHsqDwC
G/UIUsawfhpqkLIDXXU3Qga/IvTjbIx/GMtDCBPyaIPyvCJ0Ye/DSNmD9Ek4iTibbw5rB7D1
MXmOEzjWRvygPGPbv2v8tvWV/nt67UP6cZxzWp5dRF4dtqiXx7jVCIX+tev907iawyh1ofdO
rI3hKpmGZv9N7pRshxmUPIbvnPzWIf2jPkeKPUoaif2H+gD8X9Vjh2UKZW5kc3RyZWFtCmVu
ZG9iagoyOCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMzA0Cj4+IHN0
cmVhbQp4nF2Ry26DMBBF9/4KL9NFxDsPKULKo5FY9KHSfgCxB2qpGMuYBX9fe4akUhdgHWbu
9WUmOleXSivHo3c7iBocb5WWFsZhsgL4DTqlWZJyqYRbCN+ibwyLvLieRwd9pduBHQ6cRx++
Ojo789VRDjd4YtGblWCV7vjq61x7ridjfqAH7XjMypJLaL3TS2Nemx54hLJ1JX1duXntNX8d
n7MBniInlEYMEkbTCLCN7oAd4jhOSu6P52vJQMt/9SQm2a0V343F9hTb07gMlGZIeUJUEGVE
O6IN0ZFoR3QluiBl5FmQZ0YuBblke6ItUn5C2uwx7JIqu2d8/FO+xNpSN6Xzl6ETXbY54cci
v9uHY5suvuQU5hH29hi2mKz1c8bl4oDDaJWGx/7NYIIqPL/qtJ0/CmVuZHN0cmVhbQplbmRv
YmoKMjkgMCBvYmoKPDwvVHlwZSAvRm9udAovRm9udERlc2NyaXB0b3IgNDUgMCBSCi9CYXNl
Rm9udCAvVGltZXMjMjBOZXcjMjBSb21hbgovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURU
b0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQov
T3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwCj4+Ci9XIFswIFs3NzcuODMyIDAg
MCAyNTAgMCAwIDAgNTAwIDAgNzc3LjgzMl0gMTAgMTQgMzMzLjAwNzggMTUgWzI1MCAzMzMu
MDA3OCAyNTAgMjc3LjgzMl0gMTkgMjggNTAwIDI5IDMwIDI3Ny44MzIgMzYgWzcyMi4xNjgg
NjY2Ljk5MjIgNjY2Ljk5MjIgNzIyLjE2OCA2MTAuODM5OCA1NTYuMTUyMyA3MjIuMTY4IDcy
Mi4xNjggMzMzLjAwNzggMCAwIDYxMC44Mzk4IDg4OS4xNjAyIDcyMi4xNjggNzIyLjE2OCA1
NTYuMTUyMyA3MjIuMTY4IDY2Ni45OTIyIDU1Ni4xNTIzIDYxMC44Mzk4IDcyMi4xNjggMCA5
NDMuODQ3N10gNjggWzQ0My44NDc3IDUwMCA0NDMuODQ3NyA1MDAgNDQzLjg0NzcgMzMzLjAw
NzggNTAwIDUwMCAyNzcuODMyIDAgNTAwIDI3Ny44MzIgNzc3LjgzMl0gODEgODQgNTAwIDg1
IFszMzMuMDA3OCAzODkuMTYwMiAyNzcuODMyIDUwMCA1MDAgNzIyLjE2OCA1MDAgNTAwIDQ0
My44NDc3XSAxNDAgWzk3OS45ODA1XSAxOTAgWzMzMy4wMDc4XV0KPj4KZW5kb2JqCjQ1IDAg
b2JqCjw8L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvVGltZXMjMjBOZXcjMjBS
b21hbgovRmxhZ3MgNAovQXNjZW50IDg5MS4xMTMzCi9EZXNjZW50IDIxNi4zMDg2Ci9TdGVt
ViAwCi9DYXBIZWlnaHQgNjYyLjEwOTQKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstNTY4
LjM1OTQgLTMwNi42NDA2IDIwMDAgMTAwNi44MzU5XQovRm9udEZpbGUyIDQ2IDAgUgo+Pgpl
bmRvYmoKNDYgMCBvYmoKPDwvTGVuZ3RoMSA4NDA0NAovRmlsdGVyIC9GbGF0ZURlY29kZQov
TGVuZ3RoIDQzNDEzCj4+IHN0cmVhbQp4nOy9B3yUxfY/fGbmqfvsJpves7vZbHojJNRANpDQ
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
scc64uITEpOSU1LT0jNaZbbOym7Ttl37Dh1zOnXOdeZ16Zpf0K17j569Cnv36duv/4CBgwYP
GTqsqHj4TSNG3lxSOgrKRo8ZO278hImTJt8yZeq06TNmzpo9Z+6t/5g3/7YFC29ftHjJHXfe
tfTuZcvvKV+xctW9q9esXXff/Q+sf3DDxodg0yObt1Q8+tjjT2zd9uT2p3bsZLt2P72nsqq6
Zu++/c/UHjj47HP/fP7Q4RfgpZePvPLqv157/Y03j7517Di8/c67773/wYfw8ScnTn566nTL
2UzL2UzL2UzL2cyfn454TjpazmZazmZazmZazmZazmZazmZazmZazmZazmZazmZazmZazmb+
D53NOLsMGezM7dwpp2OH9u3atsnOap3ZKiM9LTUlOSkxIT7OEWuPsVkt0VGREeFhoSHBgQH+
fmZfH5NRM6iKLIkCowRSCuzdSq2VcaWVQpy9R49UHraPwohRTSJKK60Y1e36PJXWUj2b9fqc
Tsw5rllOpzunszEnMVtzICc1xVpgt1Yezbdba8nwAUXoX5VvL7ZWXtD9fXT/Gt1vQr/NhgWs
BaET8q2VpNRaUNlt7oTygtJ8rK5KM3S1dx1rSE2BKoOGXg19lSH26VUkpDPRPTSkoEMVBcWE
naoMt+cXVIbZ83kPKpmjYNSYyv4DigryI2y24tSUStJ1tL2sEuxdKn2T9SzQVW+mUupaKevN
WCfyp4EV1qqUw+Ura81QVppsHGMfM2pEUSUbVczb8EvGdvMrQ+afDb0WxMr9uxYta5oawcoL
QidaebC8fJm1smJAUdNUG3eLi7GOSuroVlreDRteiSwsHGTFtujS4qJKshQbtPLn4M/kfrqx
9gIeUzrJWqnau9gnlE8qxYEJL6+EgfNs1eHhzgOuMxBeYC0fXGS3VeZG2ItH5UdWBUL5wHk1
YU5r2PUpqSlVZj83W6t8fD0eo6mpZ2xjmu7Ts3Nf4cBGvhLeI3tPFIdK62gr9qTIjs/Ujjtj
20H56HaYDf+KCZaqHIPjMbFS7Vpabu6A8WZevlJ0mO3W8l9w61Rqv3D++phRnhjJYf4FuJdL
SaOgYbrXX5mcXJmUxAVE7oojin3srIezU1Pm1tJK+3SzFQmyD/ojb0cVd0hH5ttsfHhX1Dqh
DAOViwcUucNWKIuoBmd6cnElLeUph70pQUN4ymJvSmPxUjvK8V79UDWoUolr/OdrDg4omNCh
kgT/RfJYd3rhIHvhgOFF1oLyUg9vCwdfF3Knt2tM8/iIOwEZXik4kFM97Sh6A4cX8Qj8Jzq6
2QsmlvbAqYZ9rAzoWsQiaLHbRyOYXhXK74jGmnmgyMjrEhySLv9jamUFBViPIdZulebSHm63
2GCz/ZuFal0XeSmdXCvmeabKDsnXhzteF76ue8Zyhh0W4mjh4OHl5Ybr0rqhsiov72a3disv
LR9V61pcZrea7eUHcMEsKp9eUOod/lrXwRURld1WFuNDTCAdULQpdKmyk+UDqpxk+aDhRQfM
ANblg4uqcZvStbRLcVUsphUdsKJ+1mMpj+WRPGDlASgkOCuqcSPD80cccAIs1lMFPUIPj64l
oMcp3jgCo2upO87sjaMYJ7jjnHoc/+OaouvgoqYyoE+s4lSUqQMwmJ2vYUmW3LwgdhZK2bew
hX0JpxECmDHGjL5cxHT0uxCi6zD7rKagINNZizQ5TafVCYmZB3hCdXhk5j/ZZ3QXxIMFI05X
B0foKaequ3TxeNq0c3tqklIzT+cZ2Cn4AUHZKXYaEtylahLSMi/mmTCCsNvBlxCwQAX7FCoR
FJzsk5rYuMwth9ibmP46ew3G6MVeqzb5ZWKFr7JnwB8sbD/b50nZV+Pjlwl5s9gqZNthdI8j
ziAu8t+UgGnsSViEWI3YgxDAF10LIh3Rj8egxb4T+7kVy/uim46YhliNEJCFOzB+MnfZdjYJ
YrDsSnY/BCFdwe7T6RNIw5E+hvHRSB/FMKdbPOGHkfL0hzzxGzEcjHSDhz6I8RFI12OY0wc8
4blsjl5utodWsFnV0RZzXjSmWxEZCIa++9F3P7Lufv6+KboEdye36C1VIc1EOsVNkV0Lq212
fYwW1oSEZVYgSxci6xci5xYi5xaCgEkLvHkWuPOksgWYZwHmWYB5FiBXMtgsbG8WvyFC14yw
IhjyfRbyncdXonsYcVyPvwvdNYgKHmK3Ih8TsVf3sEnVCRYUsvE17Z2Zuc+ycchqJxtXExaV
ufpaSDVwQUTq46G+PO9YPXVsjWrksWNrwqPcFHNNzvNho+E2BIVAdGMRWYh8hMBGV8emWw6y
vjBFAaePZRFdxBYJi0QhI5/4H2KZ0F8BFEl/lgo5mCHRUpJD2pbiXnKxysy4Kc7ADW1/VZzG
FuHOD03QdJaLBnkJE2tdh6vlDq2ROLtLHVqv0Sq0SjRwj2tipXRYOi6dkS5KohXNPCduZkql
6dJiaY1UIalrpDUyLdWma4s1ZtasWobm1PprokUmFXlLWZl+61aGPC7DeVqGXCxD/l9kJRhv
ZTcjSnA0SpAVN/Mvn6ALGDIjjqP/DFIRQ76Yzxfz+WKsL8b6Yiygy1P6I0oR0z2pUmOKtwzP
f5GnIPjvMvtgrA/y9gy6F7kP0QtDJgyZMGTCXMdpHfbQjK4V0R/B9LgzCH61WNeYluFJL0VI
evpFPY83zcnL0jrnqPjDiaQykVQkkjWJxJmTm5fpjEHH39+/xF7iKEko2SpMs09zTEuYtlXo
Z+/n6JfQb6uQa8915CbkbhXS7emO9IT0rYLFbnFYEixbhdW99/Q+1PtYb6Gk97Tei3qztjh0
NdXJGZk6jXFwuq86LDyzrW9eR7oHH6cE3S2I0wgGFnTTEbmIaQiB7kHXQndj7G6M3Q39ECUI
EUvs5uoFXYsnjcdv0dO4j6fT69IZPviu6g6t++X1QpVbgtiCYFj3Lkzfped2+/bo8ZXontHj
+3nyV+jxFnS9ZRgquOG6mhuO0284Kv/hUIKYjhDhGBuGi8MwXjO6FsR0xB6EwIbjZxgbRnfj
ZxfdxVKcplZBFggOxnXG308x55mpEWXARLbr7gbdvUd3c3U31unTy3S5l+n5Xqa7e5ni0UMT
IA8T7tddm1PLM+3NM/XLMyXmmbC2ELCBiQbprsRdck53++puijPQZrpiM/1sM/1oMz1iM82w
mTrZeLlInLsmGqi7GnfJet3tpbtxTs1iesViGmYxtbWY8kxkM8HWoYvuRutuBHfJT3t9831B
fZb8BPlYE6nOSbTgkqwT4qrOyUPSUJ3THUl9dc5mJL9X59xneY5cIfqSRi5Xx5615AWRS6Sn
wMM/e+iPpCfsRHoR6Xik2yCHOJA+UZ2zhOd/HMs/hOHHIEbh+R+F/nq5LaSnHv+Ip9ym6pQy
bPXh6pR52OpDkKK3+mB1ylmMva865R4k66pTbkGyutrBOzipOifJkudHxkMs5XlHg4PynvT2
tNgDa74FaXd34YLqFF4qnzdQS7pW21shiee9fI7Yob/enKXarj9kFNj1KiLBrnc6Ahw69SG+
eudNEKNTpdq+BGuR9jrOWn7NeZY/OPxCfKs3W754Dp9vKAY/Jz2rd1rePsDZVW05llJLHPst
b9mftRyJrSVDqy2HU2oVTDiUUkvJPksVMrkS81Ky37InZbxlt11P3WrHVBzqLTmploftwy0b
HRiutixJeY53A6bgEw/F5OKUzpbeOTst3Ry1BJOdOdiY02DpYJ9paY/R7WpJz5qdllaxtbwr
GVjHzv2WJGwxzq53ZUjbgzQbZDLHmSLPlsvkofIAuaPcWk6VrXKUHCkHKv6KWfFRjIpBURRJ
ERSqgBJY6zrjTOYvUwRK+v/aIwncFXS/mf9guvsLhKgjiUJx7lQGsEJaOKgLqfQvhMLBXSrb
JhfWyq6Ble2SCyuV/jcVVRFybzGGKulytCQHF6GA8qilEXz/eQAISV+6KoLTBUtXFReTwsrD
o6GwzFp5eRA+hwHtaNHeJRSC5+aG5vp39mvfLf8GTqnHTb72F5rc9C80qnJ94aCiyh1RxZWZ
3OOKKi6s7M53rgfoDDqtIP8Anc5JcdEBMp/OKBjI48n8/OLGbBBDp2M2yOGEZ6uBGJ4NYkiN
nq23ng3FNKYgvyomxp3pRdKTZ0LxeVHPNN5dVyw2gXX15wSz0WiI1euKpdE8G8qDuzLfppUZ
gfjqlfkaQa8skmeqcjgwS4qDZ6lq68AMVY62evLOa8l2h7s7xeDQ23GQYr0dQq7lSXDnQSnw
5KEK5kn+b/6N7fIfZCY1o06OGc3PD0rtBWMRpZUr5k4IrVxcZrVWjTnpOViIKy0bPYHTUWMr
T9rH5leOsedbq0aNvkHyaJ48yp5fBaMLBhdVjXaOza8e5RxVYB+VX1yzbVHXwuvauqexra6L
blDZIl5ZV97WtsIbJBfy5G28rULeViFva5tzm95W4cAupLB/UZUCXYpxA6rTGqoZcD6URtiK
uwSbp3fWJ0dHW+jtEQcFwGVLw8270d6l0oTgSal5qXk8CWcnT/LhJ0SepNDbO9oiDpLtniQz
RvvZu0AyhBZMzG/8N2vWrNkcc+Ykozt7TqgeNxsnrW1QYWU3vp/NqcwpqHSW5hcTPhxzPH9d
i5zmQznHcui0nEU5q3O25OzJEefMKcZo/0Mxx2JoScy0mEUxq2O2xOyJkXjCiKL9zpwtMT/E
sDkoTWQ2/hXk623OQYr/eHD2nFn8D7CBWQh3c8lzkrsW5cXAaLR2CVrmqRCAsCNaIwYhRHgJ
3XcRXyB+RghwJ7r3IR5H1PAYlspSC0In5vMWi5O50gllmTUZ2ZntapGOGuemg4a7aUFfN83J
ywxFWp3b2pDni4Y3gYPovo74BPEd4neEyDJZpl75HLfUFs+CWckEuw8YmM2dWcmzSTJ6CGf3
7FnJycDBBRxHALMmk+vlHsisOYCswAFBgpn02Fm82BxOvX88AVWxeC+iN1gQkfoODVyfIfhv
ZX3T0MtVJ04Ge8Mk1xkWgJl3ewDggPWwBWLhImkFL8Jh1OTb0NTpD/dDdzgGe8AH5pE3kJt2
tDC2o76woN7vBiFEhI3wMYyAmfAlnMFdcyGcIv5YTwFMx91ie9e36BbCctcBzGWArvA0HCS3
kEGQjv4eNAU54YDVrsMQAgmuo66PMPQIfEliXVXQA31fgR9a54tgLW6jJ8HrrjrsaSyUwZNk
AfkWbatSWCFkCeWuydAR9sH7pBB9fWCe+JG6D62DtfA4CSGHXaddX8PzuJaOxZrugOXY42o4
TNNYV7ECrBAHnaAvjMLU2+BjEkBaMacr3tXFtRFjn4SfaDJ9hcnYj2ToCSWwCh5FbnwAZ9EU
0Eg2Wjg78fM2+V78CPtWCHNgPizGnm/DsrvgAGlFWtEQtA8pPmEiDMG01bAV26+B46SQFPP3
LthWMaMh1xXoCnJ97XJBEhRhD7fAC9jGJZKBebAFFsNmC9HCbDGzfgk+4RjYBMfhbezHKeT7
L/AbScLPZ/zG1zXMtd31JfAv+1ugHQyA4TBNfzflMRzVF+Fl+JFcpSrmPCYcEeeLF13rkLdx
0AX73g9zD8K6V+AoVUMtfj7Ap/QjVnyKdqQvGUjGk9VkPaklH5OPqURtuFR+xyrZG+yk0EYU
XR2wpmC+k0cpGQYTcARuR26vw+fdDkfgNRJE4kgqPtEHWP4y7Ujz8fM4PUZPsaVstVAn3t1w
puFcw1VXOcgoZd2RD3NgB3LhBxKMfUgkk8gs8gX2fA3dy3yYmdlZNstjg1kxW87uZ/9ibwkz
hZ3CJ2JPcZS4Ux7VMLXhbVeh6y7dPpGwX/GQAlnQFuVnHErTZOzfdP39nQWwBMrhXpSXdVCB
9m4tHILX4H34FM7jCACxYZ8nYutTUOqWknvxs5HsIi+QI+Q18hm5zD80Bj8JtA3NpV1pNzqe
LsXP/fQ4/YB+wyLZaNx/L8bPZraffYxaWhBcYiZ+eogrxCelN+QEuYdcprxZd6E+qb64/lQD
NIQ33NSwvuGFhq9dQ13zsP8OSIU07Oky7OVGlMGt+NmBkrgfXoE3+ZsY2NefCCUif4eH2FEa
UnDUckl3NDV6kj5kAH6G4GcYGY6fUaSMTMDPIrKY3EHuJHeRVeQB/cPfSNpKniL79feHDuLn
fXKafEW+Iz9RFGLKUJodNJ6m0/b4pF1pd9qPDsTPeDoNP9PpTDoXR+hJWkMP0A9YAHOgth3F
ZrCN7Gn2InuPXRGokCKkCznCUGG8cKdwTHhb+Ei4KlrEAnGCuFl8UYqQsqQh0iRpg7RH+kaq
kyW5P5qrC+T3ZJfiQG31Kj73vuveCkuXjpFZYqDwD3oa50Uomy4uI0OQYxIdzG5h97J3xHHk
IrOST0g5m8gmux5n3ehvbBoZSg+RGGYRO7BxsBJcZCf9jF6iXwtBZDD9liQIa8kzdBrrijs6
rlffFYKEO8Vv0NL9EDrQheQwPcLuZHe6/gkdxM3ktLiZvg1W4QwNgNM4q5fRB7HQW3QiXQFF
QpZ4FSYi358S/4H87kyXkyT2nrAZvmR2+jPurtaj1jhKegmx9GbanuxEjVtPouECmQHTyQPg
JM+ST0kt2sTb2ZOkNzXiaFVSE2mLZvdRZiPvMQMU8z6SOBpE+tOLdAh7TjrOsnHbcxzegfmE
kQxY0MivBpiKM+B+Go86rQC1ybskE0LhQdT3lxqe4xpb/EhcgXL2KEuBgZABI+kb0AHnxpf4
KYK7IRMOogwuhwy6ARa4FpMxqPf7oP6kgPs2SCcaassQ7NsiXC+CaQzqwhJs9TfU/6+j1i8k
38OtxIoz6zAkCDxlpVCAmqkU9e8K/IyBkRjaBOukfeK70I+EAAjWhs0o5SfhZlxzvsD2wyEH
+zccHhVSsNdW1MwzsMSmhh7gxM/d8AahsBD73BnneX+hB2re9a5J+IQTcY3qjWviazDR9SB0
xbEb6LrTtQJKXI+6RuBOdZBrO+rfua5qaAPLxGI6VEwWslDHvkZexvXoBFmBersHfIL6yEFC
4Tv8PI397yw+C+XCh6g7c10rXe9DEPIjBjlUhqvoWZgC3yPferDD0LqhL61ydWPTcYU6DQNc
T7osxAATXLeg5n0Otsoi6p7FEC1uRdldIYyjGdjfRAgm6Rg7QtzSOH5z/xz0aTeEz90QxyG+
uQbpbvcvWcntEDtwkTgJoB5Gy3ANgGkqgM9iALMRwA/z+aPEBGI8PzYJ3gYQMvvGCMNVOcoK
EP0QgBXL2k4B2NEKcSwHiH8RIOHsNST+DpAyFCAN603fBdAK622dBpD9FkC7fwF0iAbIiXMj
t+7fQ9fLAN06APTYgAvwJIB+vQAGYH1D8dmL1wOM6O1G6X6AsnUA40cATHoZYEoGwDQsPxP7
Mxufdx6Wu60C4PZ8gCUzAZa+B1COPFmVArA64f+7WHv//yW41IIWtKAFLWhBC1rQgha0oAUt
aEELWtCCFrSgBS1oQQta0IIWtKAFLWhBC1rQgha0oAUtaEELWtCCFrSgBS1oQQta0IL/n4OS
SAAxkv/cEMjQp4qSZ+nzIIFMD1WDKNTS5/cyMMjcs49AmCKJhzCdAiOJoJLJ5GYITTZfzqnP
6Wu+lNOnPgdy0W+uQ6dVhs3P5udAh0QKUGdlh+uc/DfgrcJhbOsW1xi2UXweHJAC2WR1VWTb
WvKAszhgYpv48PS2y0NWpt+TIXbIKswqyRqXMi9kbticlLkZ87LvEddH7ZZ2y3sC9wS90PqV
7Cvi79kBhjDiVOLjREGwZaeGhQrW4KBMR6qQHRcmCiQgOCjUGO9ziKyFIBoGvuBDtkA8Gb3X
19cokufILhDIaLCRjXtjYiwm8ixZxX/uj6yq2RNIAmvJGmdw5ucVkSQyHNoSa1tn29K2Z9oK
bX2stSzeqZrAVmqbbmO2WupfnfS5Wku+cxrNYIUSmAYChLU5SB4gBFmE3BnZ59KFSyN1To2c
cXlkHwxcMF9AfpnPXriAbj2Gzvr5t/dv394vhLuEB0J4oErivyJ3AMJcF2tU/6y4WtdFpwk9
ohmdbO6A/s37Vhld5zmT0lolJEZFG7SMVumtqJQWnVlGErSkMmgVlVoG0Za01ERDPEbFa0Yw
55hzknWHJCcnLcE/mDGSjEwOaB0cHOIXFx+XndWmbXbroOAQDNrj4uL9goODAiU5yJ6NAeIn
SUGBwQFt2rZpk50VF39Lirb+gc8Ks5/Z4RzYLurxeNOKFXWr3z7ovPmxMlI2ZlTR7sKEdnn9
HiF971nnQ3usmNx7ym21ASNGiD5y54b3t9zn0yBUPrmg/B3z4sWCPYGFk7eN4/v2XFS3xhRq
n+HsMvcWLqOFrs/Eq+JkaAWdoCcpdsZB4ZlCai4kko8aoVmDfSKsYXlS96RpEdMSprWe1mV+
hCRkkkL+k1GBwVmcOlN8/LMSna3jMwq7xpfJpZGliaWZYztNz5zd6ROr0WhKDpA6Z+YlRhpN
NEmSaklvZ0znyMDOnSOZkJKWmpEuk9aRSVJKcueAPFVttQHoBhzhWjZgb7tudqbW0kVOzdz9
WHCwWWuFs6uWZNRAQZz0T/IodCavQhgk0leeicy1FIaEhJtqyZ3OgDBLHIlbUppNsp/tWDXN
Mt1CLbUk1RmRn1MSNi1sUdjqsC1he8IOhR0LOx32Q5ghLKxXIZarsQ0eHpqc3PeSW5Lw30xz
fd+Csflf9TFfusD/XcaJyOejGQUr98IlnaI8EcQyn7TkheaXuYT5cXlDmF9rlYEjn6wLwMwZ
xBYkSVQODm6d2aZtiCTZY+LidZdLRBy6bdu0ztRlITgEBz8+Lt6hC4E9RheJOJ4bPVhaCCJP
DBtUObV4ZfeC0kCH44kpA58as+DVGVtffPpiesztZQtvXb+2dlF5ZXRwYsMdC24r7jKsOObo
XeM6/WNe+ZzcOWyiQ85teLF8wqDCnhGr7i6eNHVI5fx5Py6ZsLTTzuHdVo2fVFHy+XPvrEmL
jRC1jutH9Lh5XodW8+rD9m67rWDbqMmPZfJvwg9u6EUXiPdCAHRw2tf7PelH7zbe40cNG1Q/
2EACCIBB3e4T018i0uLAwTdzhTbyQn2Ozj3kXKsMQJaQIJwONNsMbTljggJDoild8ODYNZtI
5uXbNve1hfda2DDN0XvcWlL+HmlDXFOT8s83rD/ywZ7yJx/CPqRhH4bqfWjvjE0UkpQeIsPG
/bATAUCIasAOuH98jkmLg4qe+GMnyMiAbJyH/kFmkLPbtPFHpqfRtA1jV29qOPbrbVv62MIK
F4hjkgrHrWu49f2G1xvIVEfBOTL5yPuV5dt4D6Y27CQb4F8QAoOc8cW0OOTlYKaGlIYdD2Mq
AVkQfBV/2O/vNGpCB98gS9DiIBZUS5KcmsW3xJf6hoVuesKjx+pHotq6cNafa6iQ9rxnZEZA
dhtdDOwxskdK3OIxdfwMVZY1h39gqw6FbbqMX92wMyVmdf8AkxqodmjdqtuskvFVfIwGkcW0
iIbgDM91Wqm4OGpMm0UiIfovFTKgZtKflJI1pIIcJxJOqqx9sFjgEwClfCTnUfoFdHUJDrAF
2QZRsf4qDXmQ17zWdZZMgxdBg2RnJDgljTlVZ4ds1ZmbXaKSLeoelapLjZPm87pmzExO5s/W
KsOh9979JATSnXlpaXl5L+puWrqT18tcZ2lnHFEGA50qiG9YxrfBgeTLgomyQEqx2zj/Nagl
FmeglWWwUjadVbAzTGLPkt30DaGWTKs6zVvlkxfnaW7OMlGflq0ykgmxE9q5Iag/OSfe+/tQ
cQf/3756ub5hz4gTwAyxcLB6lGKtJVK1KAZxYjKF1xJfp78aDnHOOOqMK42riDsTJ8T58Wgf
vh4tgtVQASKEOQ6S6Gur0gV9PepzwSNmuIL0JrH22JhYKvH/uIVKsiMyIioiOoJJAXG+Di0u
NCwkjEo2wa8MLFJ4GQn0QV+wEX2xxFpGIhR0/M1BZRBmQEf/ISPuJOlISloSkOXPlUdIsF8g
RQ7Hx7U1h+hqpo0f1yO6CNFeK2cPL9204OHl75a9uGTKywXtZ7SZHZ2WEds+sUN+do8suvkb
0m9g3pYjDXvON+x/4MsXfm34puqBUTN3kfbfPDwrw9ZpUMMmHKOLuGRIyLFgeNAZ6AwtDa0I
PRMqQKgzlM6Fu4H65AWQiSQPLZkKiEGbhvsV9NtxgH8DXzIRgjEGyE9OH+LrS1VKRFUxUgYH
ya+YvafT38fH1+mXneG7yHeNb4Wv4BsWcpDGkrMe5ibn9MFFXdfCuTl+fMK0h18u1JFfkpN1
rTJjZICjtV8gLrZBtuzONJszgD//RdLLFpAzooGWtgs2yI5wRxfh1UevLpvZLpo6HDSq1Xx6
8v4ka7SFy2EKPuNOfMZoMsF5hxyqtQ8JjeyUFepEJ4w7vtHBwYlyjtxTfkqWnNabhOHKTSHD
Qycrs/1m+2/SHvHZ6LdL2+XzmvhayL9CPw75OPSM9YpwJSQoiEQJYWJEUFhwWEhUqKyGaKFa
VFZY97B7QlZb5dAwSkPCw4xhkomFUVEKDcH5IgcIuKRNcKqqM9CYu1glai1rjQaRGL46jPBF
jIYdZK2RcatqCDVG15JVThNIn/cLKAmYFrAoQAioJbIzgP++bjhYndbFVlZqrbBSa9iz5ArO
MxNxOgNL6DS6iK6mh+gxepr+QBUaZjlI7r0mz2dzLngsLK+BdaF+5Iyc3PoZbjPqmdUqOaQe
UymMnFGcfJarMH1kcA2kZneWvQvDVoVherFPzjKzuPBlH5ySZMbMkThi/OeJkgmzZQO4VzvZ
3sat6mRJprIts02btmxnSd0ZMopYN08dsyXOEXbs4a2fZvTadqUzKbtlWLdwIjZcdZAuZMNT
S7bNmXHglffWjB//2L6Gi+3MrfivPA3CWT4UxzOT9D4ABteZamN7lZstOcb2eWqBoZtWGCMc
U0liYrtEZ1Zp1rGsM1m/GmTIInnqIvv8tB2xB2IPpr2Wdtp+2nEi7buYbx3GnkpiLVlZk5Bg
hlp6tuZ4BsmoZVn7mGgOJsG1ZMu+KGdyelZULelaYzYlJjxLJkAgqPQLp9Yfx4Cu0ccAR7Km
0kiM3CTW+qcuTqVrUitSaSrG7yuRF+Gz19IvnQZnFqnIOpxFs1DvdX7GGXAogAaEteYK55vG
AdJH58LIGZe4cxb3Dah6ki/MzL0w8oJ/+3S3DmqTlh4dZ/AVpBib3RZrc9gESXT4xMUZULmk
C6llJNoXfTYNLVmDmiZllBGLKYprG7ctm+w1Z/kcmwkzkpMD2ug6B8cpWB8sm2eRCsHJx7WP
bsPg5LPzechHVp7Qoequx4d1Obhw8fR1DefuGZ1uCwv3+0eII2ncg/ZwS/L6vtZ+W3osKX14
gtDrngcm9Rt+/+ZW+2+rXLI9Pz4qRRFzJW3zLf0K20Ul5EUbbr6r3/hF27gOt+JsPYCjawAT
fOhMCDYRXygwOX2Z05ckGUmQjAqXMFWUiGDUTCAYTYJkNOGsinT6y0qgLCsKE2TJqABuVkzP
kk24V9PIFqdJJJKqSJIiCkaj8CzpifNFIeOcmqr6MrKF7WGU1ZJfnaEkV59evqQU9dUZX+Yr
OWUih/k0mUMzcvQRysEJhN6vzHxXl9s+ne8T0Iasn5nj195PnzDL0pIFjxnp6+uLGm0mGkoz
ZpIgu5/dz5ZNWiMh7MD+rfUv0jlTtzbEkkv3NjxExi1md9StpI/Wl3D9VYbyPk/sjVuwaGfX
JwTiXxw9MXqRuEhaFLVSWBUlZ9Ns2xA2xDrMNjlyrjgvchktDy+PfJxtVyvsZ+y+YCf6f3SJ
exQlEFdexlnlZ7XhkitYbeERkUwOFUSM3VJjtdoCDqImCWUBTuQp+Rzo5zYb7tMOks4QQbrv
WyxXcDkmv6Ac24nTXmqndpwgV/abaYWN2HglTtXqNFeYqTkshu/tvtU5dnYkqnnzSM4dXbTP
NlrdukCj1udaZpmSliwiu4AH3IrGaZpJZtKZ1jvIHfQOq4Qahysa1DNdRxQ5tcnCNP8x0dPF
6VHiyGI0smSbLHAJlqQmNpZHeFF24wmb17dhQjFRH1467K4Bs+bNn5ZmD49PL+wzp2rziinP
EUHsvWN//ObltZP3L45vOygzMtlsy6padNv7HVJl6sulswjHogqlMxQSoM6ZNEeda7jV5w71
Y8e3DkliZCGbL8wPXhoi5CgJksjsYQlhErOWKERB3bHfituYOF80zlbVhILIjZMaXxNB5jr5
GDn9tXBIciZRZ1JpUkXSmSQhKczNd0yCAHOANSAjwBmwJqAiQA4IS7xmotShwXnWY6PoqgIV
OnIV9zt8M3ONl3v5f1JJdRai/kiJdKj+UZHRkVTyc5jiHKodNYQ5ogxsPuiLNcSVkUh/axnE
GNEBr43ClYauMkiQD5O9ep3bKH5Z/rFtWhO+p/FyHJU/W3/Xk49Pjl2zdsWb4xe8uWLU8+uI
72+T69/0796tdc9h9yxfGDdMnOAw9Xvs1XtGn6ncsXLHiBoStZ/0aCiqz182qPSzLulPbNj5
uxVnQW/XWbYVZ4EGLxwAwXWmJiDi/2HsS+DbqM5958yMNKN9NNpGGkkzI2m0WNZiS7It24nH
2WMn2JDVCSaGpCGF0NgGQhJI47KFBEp8oextEm6BsqQvIavDamigZUmbtjwK9FLSvpSyuU3b
XFogVt45Z+Qk9N77fs/JzDk6s2jmnG/7f993jiYb8FKksOJngYGqMU0hNFufbaftdfAa+Q54
hzxug10KLICwaTaKNNDQorxbC1Ckm6JImrIZtJklwx+AERbGPwBI5iPggYM7LcDitxqeIT8i
KPJPmpWgOVqju+mdtIF+jvyQsFb7HaGPE7rXAmnQNDeW1u3TzfaNR6rEa7rGcI3xZsPNRrpK
uFBDDsJ+hBY4NF8VaMYxiZ+Tv6m09oN7KrcP5OcXQoY58S9foF8Rs30WhOZvgPS2FdKbn4gT
BbBBe6YHQqGCVKhJrClsiAxZhqxDgSHxRnUovrXwhPBo4EfqPuv+wKH4s4lXzK9YfmPzMoQZ
GG1kwJTw2nwB1abaO8Ed4CbbLfYnCHsL0Qw6iU4wO7kMLE1cXLiCuAJ8k7w8fkViVeF6cENi
be0NhW30NsMQM8Te6LyR3+be5r2fvpf9nvNe/iHvY/EfJ35cGKEPsh9bPrF+bP848XF9irGZ
Es1EGTTVG6axhDWQoPGO82Fb3GjIoMJlC7WboFw3QcpHWx7WOSiLOaKklUit1FfaWTpeokvR
5+ABCvJADeQBc96n+YZ9lM9ffAb8uSpYMLjHQmXsxCndQkcEDxDqgkRen86FI04vzXpUxRCF
5jgTugzUumsuI7I81IgRGqrIMDLH097MZUTOmdFJvUrrSD8iYTOARi1+DrJBRK9jH+z+OR/W
+1wToB5pS7Dl4d43n3jkZ6uf2lOe897TL61euB7UrdPWrlw5VKprmNf93atW3xifST51886F
N7+4d3DO9itvu2DlwLY31l969ZKn3169seub163tKq7KVf4049G+7zy0YdGs8hVQBl0IOeFx
SBM+IgGsWuH6xLuG30TeTdCr6PWGjewG03XWdbb1ruvk29mbXGYTuy1FtrCGhKAkBAMVVmmC
MTwDlhMC0PYnuqFmg5JJM+XUNSq0nIkwGh67AcqoO/b7fIRNQBIoAByHCJ7jZZ7iR8A3oDRK
aamhFKWl+lI7U8dTdAogGabA0zTzi2bS7E9+zZ4Z0w2acV3qt1WFE3dqDHtXfLppqbvmxBjr
tMY5NRiPxiWbchkRciDYxMKabAlD7OSEu4hJPV8koYHCOsGHUH+jLvkbq8YMCaUTQAOkjxAW
TatvPP7L1A82bXtz5fWv/ui6u3736sMvkAV+yvq5Pbf2tC/LfjuokteC2O5vvH9o7+1PbH3q
qz9U1n/nCvLwjRdc+vt1O7f/+rqFtQh1Q9Q8TO2B8shHTHma8qOll0O2yxuG/Tsh+NMIxgoF
ukPzQDBdHPbs9JCe54AK9cavAKFLj1PY9q56LtLgPDjtOh9aKwhQw6021z4FldQeHWNn28dd
U/TaFKSZ7qw8BbH10/B5osRyTVTUl5yXN7zqOBIhrTbR5eFM1oOCFT2Xe4S6QJPCmgBxvsMk
QXDfIHLNDkVShhRK+ZnojyGoDwcOuTE4jLzH4VPmuBN4nPBQgYGvPTD1P/g2QKD68Jf8q5OD
elrTn1378sv/6u4gIYInDHsMVxJBQiKFp0ksTXkghclwiIA6iwhJAGou9wvUHwgf3Bi4mak/
aD6WDIYpBxv0hgipHwwBEgDWQbJErg0R3dFjR3M5RHHc2NifPwM5/Y/buPnIEQ5udXlRE1m7
w2HjzGGT1K0YPQ4XF3AGRDEohIwK+oEEtYSKffnFRVyms7jcm9Kb5bjeHAjrzT7cvNeDC+0+
zlW0OSzw5mVHh2MGNzvcpfQ4FnEL3IvDVzgu51aF13JD9Gb7VsdmbjO/JXyb9JDjIe4B50Ph
w47D3POBw+E3HK9zPwu9Hv6t4x3uU8dH3EfhLxz/5L4IfRGuNTk6RVKCugl2EhEKh4Mmu1k0
eYM+0cuSjMh6nG7Rsy7s4GQuHAxGnJzb2e8E6Ee27CPka5qTDLtJMiyFHiUIveNGwAHNynIO
yuP1sqyJDY6ALzWTA15DPmrXnCNkfl9XGIRHyM80u6zZu+0n7ZT9R/KVWzF1+wOQeoQAMviw
Cx/+g/tT0AQcb0XOVWTnbe61Z4X0Zogf0wLBjQFu9L/uN3Mbj7QyrfA/NvzOLf08CC0+hcFC
16OUGhobGkEB6H4CTIwWknpi/O8XR1ouqyxY4C9MBu9HwTvl3nnjH19YTn7rw8/Aq293JaQc
o6oOIX83ffFX9992oUFV6axSuwzYyNj4fyD9GyEI+kNodYSJNNFEbtTyS4gl4S3EbeEthQcC
P0jsCuxKfBz4JPGnnLWJ2JBYX3iw/oHCo7EnC+8E3km8kzTTzSPkn/Y5Lm9oRlQRjBRRqf0f
j69Y0JRauPOHi/VaNAl3Yqg4LTZN3RJ4F7wde6/wR5WhY0C11XOUxygG3GFvzJv05LP102Md
xUVgsX9J4l7SyRFc8wKwJNbX3N881LyzmQ3kA/XdBMUxgVg46c/RRpIK+8JdhdtiD8beLTBy
s9bc3bycXE71GfqMfUxffq3x6sDVYn/4mtjViQ3Jm423ireGtxWGml/PvZf7NPZlzN/DOiTR
pEQ4SfQq0UKMoOhaopSWYlQk1VRboLKRZKlk8qaSPp+XzCYRpQxDOxeRfXMJF1NQMbSvrR3F
ZUb3TZ2BS80N2+csCwJzOB8kgwvotNRUW4cOcNNLvAbtLZKAu+M0RaNGs81ZJGgg0wAacb/U
1Fqjy0UuqLU6HGhvs8F9BNKygyMXOGT00bG93Pwc+CWhEJcCgcCBgHS6de4YpJ3x3oF07wBa
5bmOynws4mKsBwLjVkShg2OYwAZ1ZQU3J4Io2Ani02Gdr4y8U1BdteeK0aQQBkxA9Iuk0RiP
QSVaiCeFeAHkmLoCiIbjBaoI6gpUQkwVQN6QLRBqKFIgwvVUqQDtSAjGW89TZDomhxARDA4O
EoMDZ40RArlWdLPDGFVKhfrGBuwLg2hcQQgdtqs4FKHbIoyzaoJjBwy197szLh364I/jQ4UF
qi+UmFsgOx5Zfu/2G8avV5eV77r7gpefWdF9zcCBFxa+vG3yYpHcH55y8S3fOLxAbYgOUqu/
rdSqQuzQdSsfdjBM241zr3vc+9Ua8Yfruu6aTxsQPu0483uDA8rqGCC1KaZwDuTIHJWT7nU8
EP6h44f8Qcch3sKG4dNDeHS9Z533u9RW7w+oewO7qGcpk5Wy02RoFtVDGXIs54yJ0Ag3HCBF
AJ4hRqjOg/KDhmSQAiPkBwec6T0c4Eao9gPbbOh3eUeonJZzm8hdBACgntu12wkkZ5uTdAY0
SICmVlkADkESSAGThzBbXbEc67V07yD26X4+OACNxwGk3wZO9Z76sG3ss1NQ5CB78jU8vLJH
NFoZNRC3xL2qUTRlCKsH7li/IQPMPlsG2SDgfAtkEOIiVxR3Oulx89XQEB2VkaHIx5BFgkau
kf6lJE3+8OHN721cO3b/za+vl1ZWTj5b2X1460HQ9vzd22p40R2wGK6sFH5xcEvlrQ9GKn8b
HnjcfeDxL585/QaY/+wsr0vMI50fhVoSeQa80PaitB6LaAndyt3D/W/OsJZb697M3e96wPOa
+FroLY4VnLw7FKYYD9gcuC1MJlmjJBIQgUiiTYn6FL+UtNttpD/p9RJssLWLB7rBl+c13sCP
nPndQdSH/Owo4sXJbSWI/uUo6I8iDwMVVXyYG32YG324u33QFLBykBuNuNEYQI3G7ZFLq2OA
eHEc76FtOJj+HA/KOZYrT7BYMBB2eDjVHQ87ggtBwAN3Iae0EIgu/8KJ7keQFHJM70Dh64wh
07yHY4xKAvY6AWUl5ItoYWHMG0QckAR5MOmlXS9Vrv3tpoUfgfrKz08uuVptVK6mVm+Sa9Wt
lRd+XfnjC29dFgQzgA/4wbQQovUaqA/2wx4vgAatTStdHrwu+FD+CWFX/tn88RK70N9v7Gc2
sZtMQ8YhZhu7zWSKSWJIiaiSmFairIY6hFXsdskksgzqSgW1MApJSkaRCXIiCaLQ/ggViEfT
WSLDIfch+WuoKmrTkKAeDYkfBYMh1rSLZY272pBPkWA4pouh4L0+1LrxvdZmd9WmpUwOXro6
sEuGFs0HIiXO6y71Q1BFlQgODxWHR4XDQ8VF1BgeqhhujOGhim0vHj8MNmNTFQ0THivIMyiQ
emIcDlfvWKsenP8ManRYVLBqh6KydbwVGYrc2GcE959pUC2r/vxe4FQQBxScUexMVJBvv4Bj
G40FShds5wYQ8RKsgV2g5ppE0aiqdjt/0YLK21yy6cOrV+Untyev/erTfD4t+wKx+Xna40h4
CvXJbxjI8Y+i2WsqyeXBaLLSviThk3OTN1Z2qT5OW04NfCecVCu/ubLb40AjqsARRSvjZ0DN
08ncCAhrjeqKBhNtMu/JUfenn0m/mn6X+nX6Y/pj81f0V2ZTv6HfuAmO8ZBhyLgNjjHLmE01
JKNYrSMgrtlYkQlJok+JGOGgopaUQTTase4MS2JciaZrk2bWShtIONSw+30ZIhonklySTKKR
VhOJOOn1sYl0cheRAkQqD6FWP0RYw0ajxIAuBryIIdsBLUvY8Uja8aDZ8UjaI+EQHskQbgzh
kQxtz/4XpjsFea4VWmkDGJPB0ftz79nB00PeaAjT1dEbnyjhEKLgNzT+nWjI4CBmyWjUCVEV
FGwFz3l6aWL84HHww38s6LKpKkhMn/YPm1muzdeNP5OfHxdsZgkSBfVXWzQw/RtXwEH7tHNN
pdTVoVYWXq74eUFV6+QN1Gq9Xnl7WU8SjdcsqG2ehNqmCHq1+WZ6Rpb0JwJJkhM4Pyk3aA19
DevYfqHfv65mWBj27xH2+C2Z3FrLZgslNGQD3Q39DXfQP6aPN9BW6lbLaAM1i4XjIvw9wqNR
ixax/tmH9Q/YBy3ATm1q3YO1PkGIGJO1lD0ZMYG0FLaing/jTg4bUSeHI05nNz/Mkw6+iyeR
7NzEn+FpnkajwUMBemI/FqAj5D81i7m1Ow4ccSlO4kQVDt0mzqHj8dmlFVurYwUFIuSzXBoP
FR61ExguolHiJjRVVUoW5TTDsWoykUrUJCijFRoiDsXZAmSJczJpc4awReGOk+0thClhzACL
as9UATRObkGBR6zC0phHkemBFBkcRRmZ2LomcyJzoqR4EMrzOKEdgtUaZNyzXtZG+mM47PPX
v1AZ3zxw79+HOu9ol9ovIm3+C0Luq49vqVz35gMLV+69542O9WuaXC6Rgipu/s4Lrz3647+8
XBm9J66C21a2KfF4Ub2qcunk5tPP/2PfIz/55iIh5YkW4MgjbfcDyKnTwXU6Ijw0U0OdRqgj
Zz4/gEZELY6cOa3xqFrEtF/EQ1R0wRM0F2p2gQgeuwjml8jImY80zDARfGIk0M5BJBmCWy3c
cnDLEla4N8GtDW6tEGNaJhGxWHYSmQ2aSaIth5HlUQgoP/sM70AOqaTRo2lUvp8ercunRW2g
f+bOmcdmHp9Ju2ZuD2oN3bBKQoqzKJGIJAaVSFESs0pkuiROViKkJJqVqEsSRSUKFUdGiZYk
cZIShT0QjcXEyZMmWSxmMpvJBIMiy7sipBYBH0SAHMlH+iM7I8cixyPGyAgpawFuZt/M0ZmU
PBPMnK5GSt3FviJZ3D7j0v8Q0nO5U4MoHY0bGMTCACemVVEa/KeLggmrVPdQIMB1jrcxGUA6
+FfmV/5ncVC9BDxKroVyIJ3Pk9Ow8IaCoDafH38uPy/uH9+KD9WNP1sVEfAIOR12IjTkfgNu
XqULBh/XvuL0PeekBPhBZfl5MuPK805DMqMAjaV16BdQiJe0NQrWwgomHUVLlvzKpc4VDawk
kkpEkEReifglEShRkyQ6lSjvhIKaFfwkoho/i6jET6NL/RFTPzvEHmepMyzIs91sH0stY0fZ
YyzF0ug0FlMgO3Lmn/vRtbBS0ULYALhU7leGlOMKlVe6lT6FGlWOKSQalAvgSGAxDZl+YLAq
q7GA1kcB7dX/oV8nRoJc9y9dBzsVd6n6NXmK6qe/h+uoh1JQCx6CPSQTezQRokogEzLQIovI
y8nryK3yA/IT8mHZCiIj4E6tYF/RsIC8OEzCHqKUiLdRdE6KmCWRU6KyJBN5QoPA+U9BJ0cG
oyTFErvAanKEPKLlvP+dmWgymTEHmnGrGXeaebtyae85laVLv1OncKgapQP2IvMQUeUgpErg
o/4FEHniVcLElkUDfa9yzVcfFhaqHmz4rVy9SOas9Tct//63V4HrmMqw2iRfQ12JjD4V1Gjr
T++aJ3nc2Wthr0D0b/wb7JU8eE37yCEAO8H67H5b0pFy1NB5hp8EJuV6hDVglXBVbr1wH3gw
94bwnvAR+FSw2QQIEYz5GXmqQWjIzxQobz4hxPOUUTDkfT4qTaTgpxai2VcWSv5Svq2+q34V
sYFYK6z3X5PfSmwRbsk/QNyXf4J4LL+zfk/9m77XhNH6//C9KxyrH/N9InziP17/OfGl7x95
dRaY7ZuRWwJ6fAtzV/jW+V8VXsm/Lbyd/6Pwx7xdx+6yJAaUSFYSk1i6sEpUR/OKJCag9Q+V
GwHchOAngF8QkDdocj7nzgu+fE6AaA4+uy/g9/tIE8sSRD6fSLL5pZCj/LlsRJaVncoeBVHw
ccWobNfqQT0g0S1snEN2OBEOr8OkDccSyZu5yIZElVZnOVeBA4rFzYTYQb7gs2FAWAq4IpyT
QpAvBgagEYLCf2KOc1vbgL7jyoLgLAscXyZYoewbOXPsgK/sy7vLekIC3noARNEKQJTxdfGE
1BoA5/HReYcBNWP8lKh25yvJPMQObnvnPDAEPgMnwFBuEcQSandufDS/KOod/0/62tNrN0o1
qlqUB6m1S5KhhPrVb2n88fTWswe2fnU75LgzfzzzCbRj5hAJ8JLWuZUH/DYA8XNXaRsJ+BAJ
EmTG1eRa57qf/IA8QzKuSITnkF6IKEgvRCg0rlE3GtcozzsBSUb4iJvnI5BD/11zJHYBs8kE
SDHA8iYKj4eVn+d0ylye0ziKGzlzfL8TDg6snNqPkQCsYIjHbU9hHwyEeCkgox8rPZ4iUy43
uoVHUfIRMBqBOhTrTGy4RJAJY8ba1J+89N8nuLZ3APHtWXQHG2D9Qxwo18d6bGxzNdoLjc0y
HmIGJagRvYNTF2tJE+/nU6CNKPNdRAe/jFjCryGu4DfwD4EnwLPgAP8G+BLwfyEBsld6CGiR
DkxFv5pHnnl8X5hvI5GjyWtrg4bXRwchUWnBMqrurRYiLg76y1Cyo+o7moMv816+THIeuPnL
0GB4Z6+lDG9zTC/+ecBdJjVnmZhwP078EhekKqKXgkRV/Josjv4rlWEgI4J+ahKiGPAOoqXY
6RvFeBckLERILZNaQi2GOacZyj5BKl9toaedfv4s4eyeXusyQdSPLOB10AK2EiLxtFZ3H/84
84T5CY6+DqxnNoPbGHoqa0sSlCdpNAmt6Pd9SYLiKJRgp1EGanYIjW+grSSHtBAZcrai3wQm
9UDA7GDVRYLA+FxuIP25json8t7qgYjy2wJxV9xudWYIEQgZ4GZgzWuANc5sywA/CXc868kQ
PtqTIc7vrPR3IANDzQKhuIL2jQ3IS+DEyW28k4PIZwyw4KbKhsqnlY8qN/3Hi/84+K0td161
78UvtnwLmoprKm9V3qisAneCVjD1zadnb3688lxl/77bQA1oBxc/dRvyiCB/bRpr+lqw7jCR
ha96d3Mpl71WuEa8JnhDsj97T5BZLxyKPZP8rfjb4Hsxoz/BZZPxslpOtCTz2SWJbyb6s0NZ
y6sECARTwc7gb/y/FQ2PJ8HrsXd978XeTbyT/DRmDGrRUJK1I1EaAZLIKFEoaD1KlAjJtTWh
ZFu0KwqBEeOpSXq9HpJlWJ4IcIF8QAv0BwyB2dmqF4XIAi27J0vuyI5mj2WpbC3AChJgVQiw
ggQRhx1zWxXnYf1o357JjoDr9ikI2GHH5r94U3rnIu9mXPduxpF3U4d52JeJkojKvK5BkYcl
lvIFBTUZT/niBRALwl3CX1MAqgit7nMeltnz12tcGIqfaAsdCcstcAglAmD0QKT1MOkgBA4o
Of6/kbDYT+mtRowS3nPeSQY8EozPLY4/C/WzW4T6Gfz14K+Gf/uzusH20kWhVffNunl+oZu8
vnLtkAT1c5N0DbUa1Tr3bnjsmH2m2fzw0OL7Ol2IKyprDOshV3iIODGupaaDxcw9gDLawSJY
WwnWglvBMHEv+1PHHwkT7dCIKYBayFL30SPkMS3HepMcRYR3sSyyX/qJIYImLmJZG5WOtEqu
nIs8l39hcM1OTnBQUoOwPdDK2WQb6bBJNtI2O/HfcdAJ5EHuhXzU2oYSz3G3a6a4rAbjFqvZ
ShoFNRZVo6RR8kQyIGQKQOZxwF3cCT8q7nAGvpVohYWJ9du9GRDl4Q5nck0kc9Wg7NFqsNqA
oiDxWCxRzcdGvOYmwFlW09NI49StK8fu21p5tfKnlcPzN2wGWwE0WcAtkPc2HFxzx53fOvDc
1Zs7ys879jxmlQ3f2PeN5vZLgfgSyIO7KldVjn5RuY3+5MYfVvZUDu3dsuXfQevfHxtaP+GT
XAU5MEkUSVLbGxMQ2aqYeDdHAH9L/JXoKxlqduxHGVKQfNmVMcoETGpcnUksBmvINbHrwfXk
1dLV8trIOnUr2Czfn3kKPKUeij+XORPzGOWbwR2xmxMPxh4Fj5CPxXZnXsy8k/9L5kzGxhNe
ECD5JOSyuuZsc35l7Js5cw1LBoPAI4kOJUKoSZGAZr5diXoR5opqZK0ai0VI4IYmfmwXKZNM
TepR7JbzocdlOKab6WOoYZz0RIi7gsUR8G+aoz4ZCgVJh90OAMHyOMC3WA/wTe8qEcpuheyC
RhGpHOAagNbQ33CsgWoospizWdwPLOZsNuL1YM724EYP5mzP9tKlh4Gf+Bd/DdeLUFoa/zJl
TufqXJWrq8bTGJq7UO4dzKXRpAZ/gBvbjIJrKPmMLweglMDRtDTO1qzLC4jvM3XhqKRmorkC
qAvDXTZSWyCisbxcXwDEBGV95ztgUPdsY/2q4nRLAHX+XncZ8sHxg26sMGH15AGunOccUEUC
XTP2oNkSigIwy/+/RAKD4nag/mzWEGNYVbm3UirItjAXjM8pYeGAjXfw53eObvvhU0Do27rm
9CRX0PTyKztual5ObiABqKz9uohoe+LajSPxyvW3LraS3wOP37hphwshnaEzv6cNUE40kYs0
P39PLXAAB2mhCAedJFKGdBfoIk3O5hEwQzvW0NQQoER6mbDMvyywTDQabAY7UTPaTF9jucZ2
jX2toz/cL/Xn+vNb2Fstm22b7Tc7Nqcfpx8vcLytYCvaSqFCqBgqoYBIhpbDspRKZQqTwWSy
jc778+G8lFcmFSeVZtlm1cy3LLQt4hamFqZDEpBIsSCVxIb5wnz//EBP/cWFi4sXly5uWNJo
pyyWlMsipqIWubkllW8e5AddW2L3M/fnHsg/nhtNvlTzanq0+WSz+wK2SSTWkOJu8AtAgk2g
Gk/RbKUH64JiaI0khsPPhFBL0f+gGwqPVqvdbbXa09YaOx034cIYBeMQASXrqGgSxVmAFo4U
AUCzcUZAVONyzhed5AdOIDt3Oz9wUs4RcvMhaVc4zaG8ZniCtCMLXsz+JXsGqjZtZknL/gJ+
oIisnM1DhUdnnwMziDKYgcNzSGT2pgegsBw8hdKRB8cHy7m0bntgvVVNZUOxYzvCBMRZHxiu
9QJuYKwqWhtiecaVjFtqTQUi5UBKzQV3TB5+NGesBcJirU0nOKjiHPZUjcpDNcfmjIjm01+b
7qVTP6T9XmiQmpZbVtou55an6d6eXgB1LDGgJyFaLYKjTOcd5ULegc3DHoDdonq2iS9MVjOF
9FRoZyFMTqQjxuITCbbIdUY9pfK9uy5edVt68scv3N75l+daitJPAv4Qo6qBxQdWb/y3xuZE
5ZG75xz/8er1Tb6AYoYWUXrzzks2XTi50Llx5VXfu/DBD0yGtnAO/PKuf+u7eUn9ytrwT665
Y/5dvy75pRyi/MnQNtqDbaO/as1LwBJySWhJ+EpwJXll6Mowm1PalC7lfsN94uOGx0SGBKGw
F2H6iAlJzygjRAmJ5BysMkKOai4TSBOaz97GO+DtuondKHmOTGoB1oTlnAmLNBOWc6aIzyul
w0g+2tEVRJgLLwvvDNPhZ8gk4T3zmWZBUtCL5Z8X3n2fvKJXDzuc6kUCLwwFrKWEbrDX4ijC
Dk6f4Fqrbmw0MoRmKcFt4tCH2NRBzivAvaZP2iJ6dW9mXHdWnyeHsEeKibrohx1xi0u6fP6L
0CLPjb+EzPMfLksWO5g4Z5hTeXl+rLnxq1MTpjhttbtWXwwmo161nDlueBr2ahbcdJjIQ9hR
kyvmcS5IDJfafG+wmDQ2G+cY1ztoNaom6qP1ienR6YlHE0wqUU6Q3flrLNc7Hky8mPhn3Nhq
1z1RkiT6lUgN9kS5JFFQohCaQz1FqkmbqQZitL/uR70GKx9iAIcrqAdTCKlxJhOrWcusBo0U
Ns+SLIR3mtPtRroH6yEjdkQh0Ke7qvCTTmsrcXnQn9+Z35M/nqfzkowHU8aDKePBlCM8v8kF
1riAC+sulx0dc4XRMZc/d+oc/uud8NugzFSMANO955w5OEu16nqGZmjnheufbmQh68aVpNmJ
MtpJo0NNqDG7nCE4Z9yaygCLWeHUDJG0qAhVAN34wRFz0At5kRhALAvOecP0KXlxqGu+5iTD
/FfVQNQvwfFCd9pz4dibv/swL09HgfHi/Jg/NGfbqlt+NRdqHENCVadKA+Pvvfn7hx+8sec/
SX7jBapaig2OP9315mDHNQfeIdVNci2kA/HM75mNkA7KVFj3Th80gaZU3O0cof6A4CWZIIOm
vEhbeNLCEsht7Cu3tXHjx+DfKMih3CO/yWhjrKzZxJjNeWOZ4e2Cq2yFm4joiTUVRZRHAcsg
LLWPYKXBVMp1mHroxaYfmYxxY5qttSStSVcykBJrkom6BmM5UMzPNE5jOi2zxPnGxcxitse8
2Lo4sDg/v+6bxhXMasuqwCrxysJaeq1xLbPWvM5yvfX6wDpxY3CdfG3uFvoOdmvwttxt+S11
dzEPWO523S08ELhf/F7yntz38o+zT5qetDwZeFx8Ivhk6Ee5fcw+9pB5JLA//9P8F+wXltOh
L+SOVblv5FfVbTHRTeLq8BrpWxn6G8w32FUmqtM0R5qV7MzRPeKi3IV5qpvpZpdYKJohzFDJ
Bb25mmBKqmPKFlM1mTZE8C3NYt4UpC1OvWdFnmUswMKWEzyJPEltKAT5Cvo7m1UoarWmYJA1
mcxBqPXCYZYwApFwBdyiK5lLiUneCu+SCMfFRLmuSSyPnOnfJ1rM8siZNZo7zzKy1WKJiPBs
MRAMhk1mM3aDiEHYEMyFWDaC/GT5XJ2RYdCRYL4Ofqxz8YlkEkIsgrSYzSzLmFq2Gx+tg2O2
VyvV6YkxONElnskX83VDdcN1VFfdsrq+un784XjdyTq27iP2T6aLLOKBgOUZUiYC4EvNolm7
rceslPVHzS0j5BX7FJRqlUZpyH7uhMCNn8ImYnr8w7NWYdW3NpGVDEvhvApbrSB1mv6fM7DO
3zOcvZWF/xiutQe74/Q/yH0IKEIGRBrRnUx6bW1htJPzcCcJvKVNR5I9KIjggYoQ2nxRNIUv
npiIKSF1CVwJBFqwX/tcI9DVZbTEbCxNCbvTlVuTlTcqR2OVqzJW9/QW8LlQaqoFlt8nZWhD
u/x+V4rkYk3FDKABWRvyxicZ5qjxYvTmr56llp/+Ab3y2764qqr5SPTb4wy5eXBpfdxl41kj
bEoVNo1L5Kc35H0Q3KsIzcw+M0ZtoXYT9cQkanY1D1Fuw7GDNg0JR4/IZFXWYkEYB7WqhLWA
PGIWnicXFLzoFPj5d1hYF5AU9iCBWcDnFsoMLpkMdgjIJnhJtkCE6VRtvmjVTPCmVi0UQnsn
PGQdOfOWFkYnWa30JgEIuFXAZwicGmZaa2kiB+0lOJq9EHEi0Xo0N47Y4K30UZCDH7BRMzr6
fjp9hHvrKAooiNoaS3BrgeTnNQBelspDbY+bDpopPs1vJDYWbiVut9xeMoZ4bzPXNtRGm4Jz
DHOM0+XpkTnNWtuWEGu2MzIRmQ06zbMts0udjVObZ09aZLnccovpZvPNFsd8701eUmpb1kb2
sQWi2JpNZYrPQga0EtYzowdNZWvSUrZiNN1c4iB1k4jE+6yUjIu1VtraKiD3XMpS7hKWCWsE
KidsEkjh2xIH0BvnW7VWEr52P5pulSnBfhuhZmhO2pIdzYBMn0oUbFZrsQg7/jQcAeOCwrPg
ciIGUQz8RnuZUCV1SB1WaU09qZJDKlA5dJL6LDmVYAgPZFSp7BkBl2thMVeuYzR7WYaIcIih
OAacZABKnp46eeq3dON1YHAwjXLR01DBIR8MtFCq7Md93gv13anxE73c2EDb2CBKP3OW0Tnp
dE4XbnspKyB6e8aq082xFTuz1BKMGlyNTQ1NpNHEmlnSqETkCGksWcoQ0YdcQYJ3OSRbEESi
LYZykGhiizIoFS18kAsCewTumo2tQQLjR2TQVjVmTQ1KMgODYACqzIFBaMUu3tvGI8bsTROD
kIH318E3hRR5fC+Hi4P2cqMM3x15Tq2oOK5ZLGVBtpR9cAsiag9YymY4lI1JVJphaYalCZam
sx7Tib8e+J7qxPycxoaGRh3yGT0+99ncYRTI8uDMEJQr4tEBpJGp5taTM78ba5i07Ppw6o3P
Fs1rU+NkLq7m9uzYcEFLkDf7HJzV09q/sq4Z3FfbNW1h05ybr3L6b7xiat20dQtjW1ZGIrXN
2fpiZuFwSpqSvqXy2k0tbsbW2nTvtLtBb6u/tq88axnk/DNfnTlBHTbcSXiJGPiVzvlPhw2I
gznEywa3lRCw21uwItMLMboVkRlqwhXE51Z0vg2db7UKPoImTS5kDjjdmgme5vYQomqyKD0k
g3FO2/tpHehgPn0/Pcq9CpkWWgZVDRiHt6DgLeB16Bp0bdhgiKsEynAzLhBIRL3ocf65H32G
lT8fQk1Wa1x1YoEAGX8U1Y5Wv++oPj9d1NZzcfCI8aDxAPOJRBviU229DXL8WmotfSu1mX6M
eoplZjKgmXUnbO2usHua4LMStOglOAWcfZI6yTBsIPsMQ4bdBsrwqdVLEELMauVs3bZ+27CN
HoK7PTaKsCF3WR5WR23HbIwNcv+h1pKtT325s5qdhyKfHPJicOO9gzoCHGxz+sp4XjBmjaRf
pixMXKbCMgiYhSDhFyzWIAs/SbQiA79FDBIhoyhXJwlU7Uy0dgfAGQ6DPT3g3NwlSFu6KzKh
FpxO7zk3hBG03PLgd3/177c/1f3oQocsBGvswJUpXFVe+oMfrCiVkuTnh//6y1P3DDU3Uwe+
PyvARfvHk+P/UV/42Yt7nhfd0CacAWmoA2oPBfznXpYGE/qDDHwtNQ7rAKNXdZgYtFYKiVxJ
OJ1BCUGJv98FrXZYef0g0iihOgqKeCi+071tR8YwoRxFeetP8zgz7+qaTJGIotHz2RYZyKBr
Pj3PMM84n1ksLg4ylxvWGoaIIWW/+Ip8TD5O/NFgagQzwUJhQXBZtE/oC64VBoNb+Ttdw85h
4THwCLk7ug+8BH7K/NT/MXsi+Il8CghGsoNfxN8u3S4PRU9GGacMnjtznJDhJkGBQYQIJIDz
kC76lCGFJBROkXGQu18ZPi9SeFKxKStDHziA46de1cSEULjFXUaF1sSX4UtalDclK+iybrOS
1hyHY8p9RD8xTOwhRonjhAk1kMSTVwduCpDdAbAjAAIjwKrxJ42AMHJGfaEIg3FqZOph8t90
9wLK9uwdHBgf6D0xgMkqnW4bGxvAovsEX2Ux87zQ8tDVIeruEECznyFvNDU1gSY8vQSlxWAL
Zz/BCcgmP3nQVTZwHHKHjUJZCSXj6NNcuRrygCQ2ABAGIUtFolA/MWGoOn0fCzIo26gO9Z2b
vv8RAPs3/6+62paw0xKNTl4x6cKHt1x2QWMRXHzgJ8D4wTvAvm1uPBf3rJXCHZc9/MhXU7Pr
4dtPO3OCNkAJJREZsrNKW/Eczm5IGQVMVKxOYJjYCDnkxQLLa5ExHET0JGM4KOOzYes/NR3r
CegKOfgMSoZBihqllEk8El2cSzPZIdZzEyocuNpaClscSHLl4AaqFsb70L4YxcSJ0l+qfXsR
D68iZAtFoUuD/SGghfpCZEiywNtYvFiGeWkksOATulEp0w4H3JPoiCznsil8Dn454wKjMZfF
Uu1oWhduKOkmjcTF+729R9tQxjYUcJA3DhM5CJ9mzizmEItMSWeLfbkb6BsMW+mh3O7caI7R
ckM5ksh5azzpBYYF7Pz0vQwziwFyrtE807zQfD/9o5qdOWY0dzJNyjIhK89AaoewX5veKnfJ
l8grzavlDfIOYof8JHOYebXGEmddCWs7H3ZN84QS3vZgODRNgpdZ6FoP7jWpFtTWSpRFIiyK
VUYGBu/p8w55d3spyTvsJb2fprqNCPIls0VUHppZMk7NTt1UxdZzx8YH0TJJ6A9lRAzCV4bi
kcPykeDOiclAPE2zCTXOpmQiTcNdklFlUGOolScyl1HmbBOicBQ4QI5eqJ+hdtYVMQ8Vcemc
ZNTVsc8QLTmRe6tKw+RPpw513Hv8nz9Z3wUlZCBtA86MQ/GKGUvlZNbYujy3ePrSPauXXj5j
0levvAJmzn3iB1hQfvX+wzODzujAa+Cdaf3lrlU/e/03kKLRHM951B7CTYSojVWKTrJeqO+s
KLGfsOOimuvoyWsEQOEakiA4uIMdhWUlqmhOFN0mCIuoOhmUI0sit/5+dDWDpSs8j6FHzryN
r4CV1w8hbqDrLBYsGJAFjTPtkCOjF5M1VMe5o6PnlHHIM0TshOKImsh4wQ+hf6Oe2xtDJMwx
MrOHoQimj0GTp2nmLvrf6b00hb6Kga+GODGOyNntlsLwPVEVvi0ke/S2sLB7UZPdLoW/rsLT
R48hLd57pLc3Xa/PqYNkj90I/DKh199H9Lnfpgx+OQjNtGDZqwXLEp5IMbWjyEpIRUiYxJJF
3DyvJlsUjX7TYtcl3mW+JcLSAAMok5ExsVaDZ7ZxC3mHcbN1K3dL6IfkU8IB11vku473uFPk
3ykX38f0sf3w7baYXmJ+5jjJQE3H2G4mKRPiEyPkk44G0wxypqlLmk/ON11GDpJbXFv8D7ge
MT1iHmEPmPaYf0r+iTxuPWV2s8cYQDDHGHIAlajvUPBlD4SLG2k3kfd60KO6+DK/zLPJs8Pz
gYf2eMRfozkhZ45BBUIjE9WFine0WXwZ9fHFIkAjwrzJepNi2eEFa7ybvNu8lPeU2z2EEreG
WTLPbmM/YCmO1Vj4Juwe9jhrZJ+0e2hiC6Irqlbj83Y0w4ki7JxdtlMn7cCOnsQE+9I+NTy1
arlACDB3fACZLQNoXYAxaOfjKX6DiKTSg044RNDWXuOBtnYaLQJ3qheqHrw8ENHUhDJrpy7e
byQASQ70YHCAwyiDOO7CwG+zRMtWLVO2wY1FGidZZvQCyYi9ov5J1I9VP5n1T2b9kwl/0uym
sofzl/2ys2yTcUoDSH/NSu/p6XEZfecWtiKxLPB6VCWu+7HfAytWbF5yS0byvH7/o5/+9eCD
r45vBo8bOP/yhnk3kS1vXnPN8nXuLb8H4N1PAfPGk82LY03ad6A91EUQ1AbDHUSaZKvcrWaw
vspoSO1kMK4W04CzGwFrTwEWR8B52NefaDxiUDuPWV8PhRuf0TMzNTMbU8M+gnCkHCNA3Msb
0Xy/sVFutO3oGDemK6VRZE4f4V5F/47gTDpxYtE4B76GgJdqoZQxBu/EpgBmRGBEHAiwXY0f
4x3NgrkRt8PP72H72m7P1E6ooPfRDn790aN61oSoTb5dfsDzQJyaRk2zzvLfQt1iNTxIg1xm
kzJsHGZ2sDtM27ntzj0ZE2eEcmpZzbI0GWTt+8PsXRGwP8yMUKwmRcM7wi+GybAzpvpAuhuC
33xNincaWcbMQQIfARft2wYB7wj5+V5Qkx4BnGZLpgDvcHJ3ORwghoh1X19fEZfNzXrZ1qaX
sTpcat6gUhy2A0Tiy+z99lH7MbvR7q99hjJSTDVAoxPl3DFIuhjZtsLiw94Tg9jj3to6Ptja
Ng6Rba6aWcCrCbc3rnriqjcZJBLuWBD8S0wRGknnOeSRWzZaKkAIWJ28i/QQNpgg8vMUPOCx
oDp53vj7qeQU/969iw8MfHNxczHsK3RIUjyrBT+j5ow/NhSpjcWS0y4jl8xq3fLCtdMyTeGS
cpXLVXf521NmoRl9kyozqN9Cm7yFmE30UPdpN/Le7vviDzRQRIZbSq6tWTuPJGqMWeNFt8t0
W2PX0jWN18b7l6JZ8Df5bha2lbZOvmn6ts5bu+7x3SM80DVCHzbs9+0XXiu+1jm69NjS40tP
LhUDsqfAldwN0lLDj9iOhjaR8FINSodI+KfyaMKlzWoxm0wul9vEDqmAV5F/iId6SMWL8Fnb
UKlZeEvbDnW3+qJKqSNg+4HF6SEItuCpmg2dy+9QdisvooUV9WtwCS9R4LmaMNwBOtAKQx0a
bOqoRazT0Y2Xa2Q11xoWbGJhxYnCASXjA1PB1BGqTrP6O8w5P+j2D/lJ//PkrwgjZK65RCs8
ZDYy/gvBhbW1jrkvUHmo78JwXybmUnlN4vJgTX5bfkeeygtIv+atiCXypXKWGpoP5qN3s0Fu
hZXX93NuXPkd9sXM1xPHICPNV6UkwEkVXl+guC0JupL9ydHksSSdtKMzkxNZarDyZ41HAiN5
rbw0v1RbuhP2uWEpujRosRaX2rfdOwPMwF6cGXWyFzi8/d5fQGE/cuZvmhNHmazIMPDiZ/SO
kM9rrgfaQFtdnuqmyG4KoEQpkkJd6Q8VcQnvSqGvR2YyqhxC70h9c8nSZ8A6iOvMT29BPlg9
ZXdwbHAcV8bSgye49ABOextI6xMKB7gTOKl/jBurKoXxD5GKaOPQVHg0n2aQQ+fDk6GW2P8L
5QOFhHpi8NQYmvSKWtQPVNgyiBivuibT2XWZJnxGGzoXNU+PlYIhnwAMcbW+rlBXrKOM7fGu
eFatiS9U5wdBsCUcJDpLc2ViCmiTiUmGtiDRnZkbJC5Kz5fBNGFGECxILAqChYtCzSI8XWwh
5tR1yKCzo9SgkVPRWhyT6dYguCB3YZCYl7pQJqb7pgb1dRMmoqfV3bnMLz1H5Tv4DwyiLBUw
gFWbZs5ykEZLHI98TSef5qsx1InYKJ5agHC6MRqtYiijvsYI+nd29RF9HgJed7EBnJ3ojxdh
MJ7/CX4uzV9ydOdNfS+n7ZTRQDnS1zUdeXTazFpJyQf7fz6pd80V3//qpVs6Lc4Ss6yYLgNP
x4ppxe45l00vVP6ZyzeveH7/U4Xig78HF6Tu7rntiGYwmnwBs8E4q3/ooDtedjtlhqYMJlv/
RQPL71pU3yAI6hTTcqlOil5Cbl67YfuiKYMbdiyZcvo7hcVqPjZ506yi10tDpU/YoHD6O0Rz
DeS2qm4MNWmIcTmz04wVoVmIoc8CDpQKyMuDeEJA/jiM8AQ7IlIhjrSlhBriSrGUyACFtlrJ
BQq+h5IR0D0yI2e+3I9aYeVz7LLKTPAYrHymObBSxvfLAIjC2s1Q1fJwU+GWhFuCKKKwVgn7
sUoNRMIZqqWRFyuXQ1gQz4RAK7TqeBAbrdyRV+u5I2m95SgEiEfOw4aLizxiyRLew29MFOFN
0S2dCTNWv2ascs1YLZurni7cVPV9CU2NQMHNCm5WcLMC3+Ykljaw8rf96ACsnD6EjmUyTY1V
rY2VdrV+FBld8C107xhe7AB5yXNNWk3J3NQH7WaH6ogPNQ030XuaRpuONVFpI+hu6mvqR01a
E5BZIRV2jlAOzRnJpMKJjog5FeY6okoqHB+h7Fo2Wkpk24vh0jQgJxoI/JbQrHI6ObNfiJmG
zWCPGTjM/eYd5l+YaTMSUmqGUGJZKdOd6cv0Z+ihzHCG3JMBaILgaOZYhs70NT62CU+716dy
IAv0/CkdY22tznK5uq5eVTm7A0EDa1TFeNDgDwKGDTAhpJ6rnjLsGEYzvZAfw9mgz/Cp5tTr
uhpn8ehZDRgawtbq3L0qYgRz19zYfkG/6LKb81plskerN1PStHzdFR2e8oxK86SoW3BIAU/O
DnjDneOXbZi+8GLtycpzi2QhiHLXuAvAtHsvyRW7KsFLslIs5jI3LaQm6egRRWZa4Y6B/GIh
ImQ1MnOYiEFFEMITrWyY3G0K9mQoOAlNcQmUCWoQLMtNKAUapycgFIizFUbO/PwgOttkEyYk
Pqz8YX+V3Y5PsNvbBzC3ycgd4utS1iiboBqOrIE83GcERmzJYtSObmCMGF3QGnwbCvWjvdz7
vVUPiR6JOQpZAsrMNFo87ywn2GTMAwreo/vs7+ysVtrb9Yrmb2w0LtCQq2unkURfShCyEmFc
6PU+14LoSpMpFrVhfrCRiOxtmB/Qm+n8ICDGx/wDWw7pLBSLnscDOsaEz/7+0bajerCiygr+
4Rjoi/XHhmM7YydjBjnWHSM1tIshhVlfX8RlU7NeZvJ6GVVxqWX9gSJkEFdHxJYK85AtEv52
OaxMs/qtrmH4KmWCiFgZF28eNgFTGengvVNLqNAcbSXqSqvV5rfFBC1dFnDcqKG5OCyAbgH0
Cf3CsLBTOCkYhL3RvT/E7ICXK0U8AFXvmG6mQs2LZqeeXWRSV1GQ1HW38PnLsJyl64aGswtP
QrpO1bS01NS0tnzbX9demTo1K5qYcCCYtAO34U50oLWmpqWijMsLy5CQA60LwKX31Mp+R6wf
UoiTIGgrpNpG6sWqlE8HsPD2472eZOHUM3/1hAurDbZLXrSHkv0jTI2ooqV1Ed+QyEqgKtzx
vCPFiMV9FkvvrBeJ++yElM9OSPks4gN0gyyaloQT+bMccEp03OwLqEn8RcjgehbK+jhRgpTO
N2BZ39BIxP1Wqx7loP5w0GS1Yd6h/vC02YiXKUxXVcB4enR09Fw4oyplX4U0j8LNdXkdcmKK
OuwoS2WSN3IA/r/bdI952DJsfcjxoPMh/kFpR3mf2Vz2lwPLuGXOZdJqbo1zjfQQafo0PCaR
Q6bv2F+lXnV8TH7sGHP+hWfbnG1Cm9Qkt5VnOAbN1zrYHFnDyaocz5WbQBPHeLgF4CJuvkxH
uUVgkeND7j85w2znLOll08vm/2M2+ExeTgpJ0nRyisNocTpctoA15AjbJeM8agE9z9DDzXfO
dxn9jlAoLM0j6SrT5hoE7K8EHGVOlGAf3WAF1ushAZuN/oTVCr+6qpuwS0fJoogR+oxMHsyF
sPIl5sJsttx0TithpYS00VEoPs6Ga6Cw0BZwDkA6eZeL80uBsD8LFU0iYiZNYTPSM4loQyLX
Xgo3TCNyhMXFcTFZcsuAlCWo2fOAdANAoilekgvQCdJh5jjB3EgQvhHwmTZHsL5psZiNkN79
fsFsyVuHrORJKzhmPW4l+62jyCPv8+0QgBCQyqAMFRMRy+WILJfdg9PYDd1ZMJQdzpLZvqby
CFi3T3nsWzhLfWAQ5QRB2+ACbhDNAUL+j96B8+YdogUBW/3olZFJCwkHIkycxWqfmA1k11cH
LAtV/tWTWvWFYtCxIwyD8hIGBweQw36wmqBADBD67BAOso0bWptSEtrNcAtpkPCSDjTBY3Sv
pWxBhbPs0AuTXqDw9NPOcjWnterbR9FSJ7I4UWZCCa0EzjAubJEWJtafAROr1tY3ntOVSHx0
fdxhZZU4uPOiq9o//fSySD7mn1yZGheTlT/5s3Mr2RlRj8VhlwOeGifgDHeeHnhrGm+1ukOk
LJPZlncrv7leydnNsRjwuHwFcHnlWE+TAGIxp8WnXEhN2TFTdEaRpJkE9aMDShoP+LcJ7eiD
ygFrR7fVCJiqdwXLDIBlBrAiI6kayfwE24fWCQVoRWoSBzIhfjuAY5uG56FwYNHqS4QLzYt1
nY1qMkhtpOvPOl90jXIE+V/Os/kSLqzj3NjVj4KaBMFU/S66xwV7/9FD6SrLqgsvXNFVltXq
837NbGvDHn8kUw4N+0Z9J32UD7s6ZhRRqTWXW4rAt9e2oqHbBzRft6/P1+8b9u2EJzLWVJjp
iIBU2JiIToQ54SMxRjMBYjZr9TZ6skKppThsBd1W0Gfttw5bd1pPWg3Wvd7zlI5ufLW1nlMz
EPBg7wfWMl/XLBOUcb2/OLPS1pYN2CUhkHQCp+HOr9oXNoWwFqG0h2bqtg/WIsY8tZtYRP26
qkV8PRgr9GAPms+Jh9a5YE5+Qt7n0YCi4UMtmgONcT6Nz0rXNc6YOGvGxFmoRVPQWTPaZ7bj
89oxobRjQmmf40bfNmfiujkT+mXOxA1g5UvNj86dY0a3mZPGl6fx5elGnCGDGhrxtPdGlNmC
s0Abg+jGjRjCoFMbSXwcz75tdOJ7OPE9nCgdQb+HnK9Gr17W7yHX4MjWyJn3NAs6VSarx09D
GkXRLq8/Vz99FjLf5JnzF2jonNwC0LVgzYJNC6gFC40z6wS11sK01hr0uHwOabTeXmivjY+i
vwmFhojuv1arpI7Q8BEujctXsY131uWotcLbw7tbGAMzf8FCRqib6cQU75Rx+EtOYwiTxm3p
xnb8qR1/ap8D3+OTQ3pAbHEjAoGouVFHg7jyN3y0sXHxHKTjUeOcCQ6ClX/io3Pm9CyuMo7z
7J6DT443+AoEfuejbW1IKEPq3WPrnL/4RWLGmY+I6XDLwS1/5qMDAcEvQOil//WIWrDIHOv5
i5cagiTeg7BS2gaGeyAkklNhYYQ8vT/SmArXwYpmicxJhWd2RJypsA+iov3RdCqcH6Fs+6Pt
qfAMWNEmRxck5rbPDy+YxqYa52rlVJIlGHXmwkVoYNRaq9nCGGkDM3NGXV7wmXt8vgDnjCl5
GfTLe9ByzKCkORpT2XSsKd8I+hv3NJKNqM07d1F7bM4caW73XHJo7vBckpjLzSXnQr4+6PYW
5/Yt7hkhl0CdtUkYAStuwbOrzmYknEKo6oRetOKfkkBph/CvDf+fixXYRO4hcRZvTSCuSMzq
sKnReMyqBIHdEbGr5yMuCLjSALtE0c+FIMD138Cuqi7BPlGG8Z2TI2ebmfPw2Nfs1gLoXsFn
VhUW3uC5/M7O2QOK12ZumFRpdbUoPjMtJhaWrpxDkp7mGZW6OWWLQantaijNy/jrOistbfUB
bOMmHMCdJj9b4YjXrFi2rrNzQfMNlbULZS+EZz4u6uwGW/uzWmmWJV3pxJgNaqWLYFudFqpt
rHiWNIixmNiyAFxyX61StYetBEH9A0qyAnlWkpWwJMtje7hOn/rGOrxRJBKy6FM0FEuxWCRV
59ljecB6sXOkmkWOo9reCfHknUjA8yL/YRyd7iVC+OIQvlEI3yKUwr6RFDacUxMGcko30XDl
82qGNZRtZnRFigiSsTwSJKY6DQXJ6+ptaElCtIhERPeWaKaYI1bPBGr1HJ9cTl8pAmf6lL9u
Gp8nPzgkQDjdRXJObFyS82LfKvZe1uE6foA6/f6OGIu1J4slBYulBuvFwXMvbvKyqMnrLRWJ
ED4zhBtC+GAIvyiOr0+IixQSJuiMVKpU/P91lUDbtLmk1ZTYEuL/fKm71FfqLw2XDBkaaLg+
BD/tKRn3lI6VyD0l0AcbRktUiPWmwg7dbZJKhWMdETYVtndEQ6lwVHeb1CVq2vPhumlBIlpf
wG8ci0YdDrvZ540xwyzYwwIH28/uYH/B0ixym4ipQihWI6W6U31oDZ2h1HBqT4oiUlyKxJOc
TZDhU31F3XWS/v93nfCCnzLSqp/yBYHBKBgCE2ysL92GstHBIPac/I9+E7RE23mN54yAAuh8
+K7O1bLXbqmbUmlxaQUz3T73urUWO2JE94w6hzTBh2Mvdy5svaGyfpHkxx4TRxe4buPAjZVQ
rzcEOW3mCjD/0VkBxGckFNonqMOQzxxEiLRWOS0IzUA9NQ2bczqm41AqqzVAI95BB1FFc6FG
Gp9G+1TWwqmErhn1BCTdmXEuNG5Cx9F5AXSxiGgqQLsxxbmtHLbgOGy+0dgOQFWaDluteogb
qyJEXFAXERNBtOn8kAf8yHvQ+wp4zXQk9K7JyP/JDGaZpnsXeW4Bd5i2ON4VGUmrL9E4tL1D
Aq96XguQmgRmsxNPw+OFBNPQ/u+CpEiDY2jfTffR/fQwvYc20p+hJVvbNOsOCHHORnVRVidy
q6U79yTnde7pvnDJ09bw7KclevZFSxY/j/JYCRpu0plRpAKnLn6OCFD1BE24qfqPuY/F8z5C
7dBzbi51Awjxqj1OqsG4WTXGnQ63TIRAQAZeE6wJDKy5bJwMRAruPBafTPgNcFfFzBN/OI8T
0hqkOjB1sea8lrzWuMG8wb6BX+e9Vrg2yPb2VBdLNwU5Z1mEmwe52S26mx05PKqLCuqLGTf4
UKzNzVfd5SRx7NtXrv3Fpl9suHzjm/NKV07ZceOl3/7mTGr39s27rz899OjtP/72F9e1t22/
4WeV3+38yak7+lDm5BeVDuoZSGsJokxGqrSWasHZ0vXmGlQgZy7yZ7v8hEylXFgGu2ScLC0j
z/SEvYblrnw2h1KmkmmethsDz+jLvmoWaH5kVXtDj5FJYClMYClMAEidUMJCy20MC9yvJVWO
cq9CwZr7Wm7SYaL+zOkDiBDrzYgmcYKR2dzSDJ8O060Ly0iXrOsAI3qoP2siNtZkeFbSaE8Q
wG+HD2NBT4MeAGdYcrpkBGdzN45VkzfSiKq/bW5B1FrmZnNLuS1O+tZa0FLb1tJZu7T2CucV
tVez653ra29mH2U+Zr8w2fItiws9xdVFWmsBOZZKpngXNKv8t0Zc0LhKRImE0pUIE9NIPp2k
6CzXANCTkAx6Jr9gr6+TzMNmss88ZN5tpsyfyqQLZR6JstyNkg6HFICS9fQEPYPS14zSMTGY
Qcu6VTMxkThE/jPfWf8ZZUerZrbqyyXmSoyNVYtxazyvlph6GeRscFcwNcigzpKV/2W5RBwF
giRIqQXP2Z+ewHSYmDBgCt7zPMoGXWCiaVtVQ4cEgfjMbV1bLx64rf/JjoZkva/cWZH9jQmX
h4uGBRUUTfar5q2YfOHF2uJ8LkaVB99ef+nqm98ae2iTx5GpfHxJIayqwGupW0Fd1pMX7Jsq
T66JNi++YOXhXw1cIPDIyzyt0kETkJZDRBq8VaXlQByLyrjHi2fsQigdrmJpO8IkOK+uOk8f
2yF25DvGdgxaRwKnLhie0aGzxjEhoyPMR1XBmOrhLYxdpxtIMm3ng+dRTLE60YyKNUiEijWI
DsUaRIMBRyC8kKNABpvcspDozpBaZijzSHJnhs4H8kpbTVO6i9MCmtJVMyu92NEd6Al3K0tq
lqXXcJcFLlPW1NzADQQ2hQeUTelbAt9Nf99xb+D74XuV+2u2px/3PhZ4Kvjj9GHvC/AJ3kt/
lv4qXSNnrlavTm5z3ee6zz2aYea5QIS1QwSdqCJoUXCEJSoaSAH0WlE1JDCM0S6KhCTZEdnl
CAkMA7IPDIHdgAIsxvufxus4T7eHfNHzC89fPJQHx3E9U2snMt/Q7NDxdO+gvkhdDgPssbbx
QfxrgFXdLMSSLl/MF5eJpAvuVG9UBgk3SoBDtKcHH9H8zaY0SuZMn4Pi1ZUHq7lvBLa/Gynn
xMLhKIBIXSkUOir1rqaQW1h62+xbfgncPyn3xZtLNyVWtPXv/OHVLRdTu79aubg+qKqcpQxN
39Vdf3vjY6DKcjA2ngP/C+rrF146PFog9HgfeQhSVhIcmMh0q8Ey0ij5nAlsnCYECVSh/PnI
V5qwa6UJi1RC0gjHtyUMzCVswkoY8eITAUcJXj9y5gpEHJKdvSuxJrEpQSWSjGCloLA6ihDu
GMS3/8UqRTEK7uvBuii6XRxeu8a0yUSa4A0EI3xSLCidGMGiZ/wSC0oJeQQQvaIKzpaRpJrU
eR5O7gjOluk9a0OK2hoI3xz1ZL1DIzXHjTSj1YBlNUBCUg7jxVujiYTcHg8nphFmS43TLXOA
FtCPKZU5K7D2UBTBQES4zAg0IzBmpRpQQzhjkiTJYEgelklC5iBCHJWPyQa5L/XY2fkbOsYb
PDEwWF0sY3Cs11mdR0acFzAYhPYdVJyehoms3gnU5TsbBvuaw2/O1esbZxVj0UUe3pPJu2xT
JlfSMyJ+s8EWDUgJM/BQu3/+86m1iYbp7tQlldlzEtB4i3kxnlq+c1IQGXCQXlacOUH+b0gv
dXSxSi+JAqaXgoasMxLgSBfAkS7gEANsworaE4pjQvw4kCKtR8cddQybcCg0nzaA9Qaw2gAM
ag4AUMP4rwuD5WEQVuUA6Av0B8gAbyHajvT2QhsoB0tY9KLEWkQi0O47+tZR7i1dk56ljnrF
kWDpGm+YzxrImjpGv42f7zSAKw3XG0iDWsNMC4MV4WvCZFjlLQA94d+0AKIWh6NQH2DtGMUk
eFQkEoX6qsY8opdHUNZjL9q4I0d627gjeM5MdR5DylTrryV5PqtZyrVJS1lw91iXxB/ivhcz
mBlz0pzqK/QXhgpGR2EEyNpmKC7fsL1hPxI7ov4m+nbs3doP6Q+jH8Y+rrXwbbW9td/KbKzd
BraR26ghD/qdjaHglsy2rA2tGGCmTFZj0Fz7s8hrUTZIed180Bvyp8TaB0wPmB+S747eHbPw
aVuytqO2q7CssC61rvZW++PR3YWP/m9nzwIcR3Fl98x+ZmY/M7PfmV1pNav9a3+ypJW8QqCV
8RfbWDG2wSSKEdIaidiSvJJszOFDV5dgO5+zLyGJDbkToS4hVI5gjLENPgeT0l1IXZy4kkAR
6ji4KyUhdXbi5ByKOtD6XvfMymsgl9StNN1v+t893a9fd79+j/1lgz3FLQmhs0wIN+E8FbWe
Po7O5k7jQEluUULq2WAo0BTAUkCDliOe6lkf8Wx2uaIRh80kJqhlDuHvo1y+ZQlCpFEDf6mq
CmG/9/jypGGZH7owdhFGkt8SPiHWU7JNEK1GE+JhkRVP486SmgiouSYOc5nZBL4rMZGYSbBa
ojXBJF7AGmrD2jNra4OD3Muni6MFwsN4NYwHthbzQFcev4oBpOoOr1DlDmTZNF93YR+oUgHW
aVGHzeNw2GrX97fq9/cHKtfd4AfQUFWT03hHBzIUtjYkU02aJFusTXK4AVtSXAMiQuyRNWlu
wDXETtZe5Db4e9Z3pHfk95Kmga24Qi/p31FSZ/EsM8vO2h5xHPYeDhwOHm442vzVyGzWDuRx
mnCiEA6bki0fyUc/l3k0+mjGPLCVEM1yUlOLfFIt4pJQZOAJ6uyUAXoKKxRz4JShD1+0SyFX
r1MjBhGPESxSSy1GdabUiG7ZieApdzFj3Oo97tLTEl2QhQuycBUzmovEuVwSRQgmFlnJAfk4
SAKXSy4H5OOAMPAoMn0+eMHq+h/Wb1wRoQSLKjD8i+pLiERkub125SWaqBdIwBwOx/d8YuUW
rWnbF//17PSmHWGv3xEON/z93StuH6z+ezb76F90rm+XJZedfbr68pfuvSW7NJnKrRp6fN/R
kBDAqz7/Nx8rrvjk4e7i7buO+EWnAjjMc/V3TI/pJRTECzX+z8aSC3BYI+UCtdnpBozd68Zm
NwXddCJz13hd3GTmo4sF0hb6BXQblxF9HhNh/ETYAjPZwoXz+Utzxhz2Ru0O1TX8pPp17i9q
euvgIDn1pORUDVAJPUePJyZs2CYGsXfUg9d4MM2uBF0R8rYFsZkuDsx0M8VMZ0GzW98+stCS
0vnPXTvhc7sbG+o2UygXd+/ChYGBc9J5aW6gdiINnzX4PHJAAfrsxW14G8P0Nh6Vj6ovel/0
nVbfVq2zjfhgAG+wb3Bss29z/EExWxSvklBYn1dRAywmhif4GGa9rUZp2VaGwRZ7gRTa92Pv
m5TGKnuCP0Q2cu6X0WDyzOUbjzUyjQhjk8kc9fS78YwbE+FHx9zn3Bfcb7kt7rsavn2wtjRY
0C84DlBFgkS7A+pdmNdP8sBrHsP0iSh1pksOpvqPKEdJuzciU5qqq51SXHHC+dlJtTjc8uqr
7cnwTXIiMrM8d0fL33ZNZv0p00vVn65c+M7Wm1LJu4fatw0xI2Hf6Op4mcyMzNV5doF9GMWY
VqNX+RJ0D5EzyHKbljROBAx6SAsZK8z5kpsuLAM0YMBFTx9cte7mqq1FAbhCmT5c0drS06nE
LDbNqVgaM06blfBVP0eWnpyA8m+kCe+vTsIb4mB1abD0XkwdHXW7VWc4ZznBptkUZzTmh1T1
JG0GTSzoZ2D0VEwL0BOxACWxAgLdV3FxXFyjPU+z6KcCcRc5xSNBXDUeDwLQvudyJeL1+/5g
SHS/kRjnSEfshU5ICTGgB+ltggJOkFWFliDzw7GEqcPW1dStrW5arZkDnHsDWXmGN4RiiQiX
wH3WELdcs8UaudN4RcktoFgMpiRSH6dgE2y2ML3s4kTHMBbxBJ7FP8YmTBmcXGog6nL1uw+7
mRkwjrlZXeKW3u2g08W/9+D1dBpRWWlo/9WFxlOhgqTki5QaTB1SsEGUG8RAA5LkoNTYgOhG
HdVhNpCuHcTpt1pq/RDoNmshbPROmZzvskNi2NeUcFZ/k939wIr1uzINXatx39be9M61xTvZ
hxdemaV3Wb43s2zr52fw0b62II4tPDrT37mOsd7axcTIiR300UvQRzXmpZp0CB4FXBaqwUaG
R4OHYf/zGUSYKC5dvNibhxkhf21PbYki8EGO55vDEM/moZu/HrdFpus/2WVhqAuMb40CGknn
fPrav84omn/jvETvRJV4123CHcrHVValog4LzWQWGvQWPKonEOGbhbCsuaKKpmqBbr4odLuI
mNLuwC3cGn65sEJZoa4JjHJf447yfxd4JDjb/CT6FvcN/nH18cC3gt/lnuNPCieVU+oLgTPB
c82vKO8I7yjvBbKzPG6mHEJ3dVA7vUS3QyndXrVKtxMJ3Y5EdFuWqV0qqQ0dYvMDiGgEnDA/
oP2V+TPyoWa+m+sQOpRi8F8s58KvBawHhIPKfpXtcq1WGLfiCblRUAshlyCHYBQ8VMrwAVVT
VLWVFzw8LwQDgSjPAcRZLWaTiQOSzO0CsglZAqpNOY1hetomYEmICrPCSeFnglnYxwdJJ5ZK
lvxj3PPcj2D07uPV6QC51q4hHsorujp4g4WY8hC0FYh1yl5A/DlYLp3GL56UmvFMs94aEIrY
J0V3R5ggVlVKp4lMZoIvAgvKL1Xo88qVwCViVxRdDbLe1wl23a+TU9fkOHyEGAddUMOuGkVA
u34aE+bb5wTN5+gF5PX2KbD5qI0wVb0FVIpAmEoFd5HTgEyBx+B+wPrdkJpkBrebbsVQWQ2G
SAfCrp+Q8dMNiZT3lVf9nK25A6c7PJGG6plU9XlfskluYx+OxbVIa9XCOJY2OnnRFouZ5NDK
93/DmjvzEs+RtfHVefMJGC0Z9rwxWuLhkOxkMmSTz4n4uMKZkrEmi2gh3by3N5/3F+slqdQ2
9eIwey6nvG0NdElBTYVuK3C6qcR5E0rSxPdmcAZNx3DMNp3ESZueeiaTDYdzWWNfmuTVO9BL
GPloZjo7Dm3V4DMuKsShobfgS8ACU44ltNy23Cg/kft17NfJd2PvJu0kwHF3gYZ7OdjUEc7l
UsOdjaraFIxIOZMQb4xn4sX4Zv8T/ieUJ+KcLdYV7UpsQOvweusablV0ZWJ9cn3qgHVGmpG/
EDuQPJCayT0iPUwCx85Iz8eeT76Yezn2cvLnsZ8nL+SakNlktXhNfj5mTfBJS6rgv1m6We43
b7RuUTamDtoOSQeUg+rByIHYgfhMzr+ff8i/P846+K14j7RHNsGYgK8ZiwnYCqNC8sshSYuE
QxpKZUJIFJwhsUkNhWBZ/9CzXDIBk+m+UkmJRTXOyvHWaCrpSaWS0BtiiVaO93AcD9SJ6o0K
MY8gxCLRaKuiehRFTcUjKizWYfwJ8B3O4IswiEL44rNNWJTJm4ScQJvALChJsIDXEEMcMcpA
EBikyhl8L4ohDn+zJCZLUNhoNGnT3hfLAqypnjlxDpVTEXLnwVsK5vtV/JiKz6o/Vt8ErPfF
aB6Gd/CUJsawBB/d4PWPncESiiMvjHB7Schvi+NSfIbI6ccXT/D7EnnuBRjmHJBTgoaSeCZ5
mehtgLkfoiYfs9IN1f4UniGaG6SUliqljqXOpS6krKm7sotU0yVyoqwGLi3Mw6JnlzG2wSkA
DuCtzAeAlCJPTXFWQOeMIiRWTaSEDl/S11lEvgvFAoRXiquhA67e5c+W70Kku+iClqnYLLJH
BuiC4Io4EbRMFibkuomb4IlGImd50fIQ6/JxfzFGLC99e8ZbXDys0DGHRUccVMiLjjZqiMR4
xxFWxyMOPAPT8Nw/dygJXw8+sTrk4S685EkUcfj2VPVHqV9U/xCrvt64tAfwiSnU0JRZ+B1+
an+P38nGYqxfini8C7/H73VqbqIR3DH6/n8xaxZOscyadgehGYMIsb8CDLOU/b1BM9rjgtIR
N2URJJUHPHMi65aYpYTFEWVDso5o8nmCZc5RQz9TIFPpftcKAR9yHHIekvfH93e8anvV/3ri
9XZezMWFmC1qrwjTtl+2WRu6c+KdnaZcr7lX6pWXxnuTxY7W7jW2DdIGeWVoTXxdcm1HqXuL
uiXW3z1tfdD2oPSg/KDvQf+XrbPSrPyEciYecppFSZTFTJPUJDdlUkLKn+8WpO7N/J2d/d01
XsQolHvvUryUVGR3Hudz8Q5FMKEcqUMo19hYzOW6izWEls/39lKFeASjndNNUqfH4zA2/T5f
oqOjINjs9nYgP6xWNd5R6GgvxFyHfHkZywUgS332xn1qfwiH8rHxyIMRJnIogiNqLJcrtmd/
n0ol2vuhtfcVcMFstsZUqzVaiHkKhZjdl0i0tts97e12+PIKb/e3J2KqbWk+rgisvcNaEBtw
QxN8iXyOfAaYwGWZzMo5UxZns6FQo2AHEvO5cR/25WKnsfNZTcUqwat2qVBSj6lvqZdVE3Eg
s7F6hulE7ciK7zleyCUAHzyL2nH7GeYlVETdzPpnw+cP6oKUrhCu1YH0rktXakrrBmqzLblu
LVF6c4AQUnRhY4gjpBKVnIZoJay4ivvyykVpfoC08TxtaFdxID8ALhJ9lR64CJCVk3qcPfud
Us++uTlizXFzVrA4cKU8jANUVEWNddEGY0ogHIrvnuKLfrLLAPDbRNa1lyxS+Qa511EKSr0K
cYUXYpfcfmevmZxpWokIpk4CEQV0p8BOJUWS2uWTYjGmiWTCf+24SK6JvgVWG5H64gAPB3Uh
uxNxjTwyuMkkHpGOTYiE4y7dknWSIegoStAAMjz+kqsoSWJRhidT8hKR2gQr+HTLRdUikr2P
yyW3t9jJeYvJVk8xBY/M+QjvJSTmK6ZKMjzeYht5IGc/yR0eVx1T5od/H9wRwdd5UDRU2wih
HJw1+sXqXuTYBLomcZ1ywS5C5wTx06lwxObrW7u6OY47l0SXbN43v2l1sdqfVd2lh760PJut
vhINxu88951bPnYjIKYGv9ImNY+MDAW8jYCWlObKE9XTe5ew0ajH6fcPzM19XFYSTDRq9jTu
ufr+ji7CEVNdyV4BzNS2eHYK1Gm6hUX3JXCiEVYMdJ/XQxCTTEEiYO4kQ0GGgG0UbDtdW0yk
L6Uvwl9v/vxADWUZmCLEp1GjR2bub8NtyAXoIXI/yUP0eNoR6mhfJHreGJiDdSHFDfoW/TFp
7aY7zqLg1XeRevUyCgCiFySDBezbPLnP5Ux/OcW4O3K+4c6/Nn/GwvC82cWpXIBPewJxPuqK
BuLppbjTVQiuco3wI8Kouj0wFBzJ3MftFfaqewJTwfsyB4WD6hF0hP9q4CvpM+hCxy8sEaBJ
0ulMS4uAKaWuEvI+02aQ93FOUwOB1hbBAwEy6TQl7NMtEKUlwJsELgO2CpQGFzFI/AS9DQ2l
TeQjxUaxw+8PqIRaCB4S8JvCZXJYOiH8VmCFfb38Bn4bz/L7YGHrLDWmXxU1LGqzGqMd2pbB
+Uxvhsmo7R1PErYxwjI2UFk/P7BrfuHKALnjvWCwiq1fmE8b6lVq0ky5upnbUBT/Ryfqa5Mz
3kVQQ/qPkeKUFrfUSVMiK9kurEtWs+Nve7PZ8JvnZSvXnMYtsaTCq9XPdT79sRvWdbWGi0kh
tCraVz0lhlXJ3w59ONGYWFFtw/+TSrp4mwOIdSXs7H1/7DMHlmda2n3iTVtnmWebchG7ZNf1
iLA7oPd68ZOlvIszKaZZ06xj1vmk6bTJOuvHDv+0Y0lnP7pD7PeyQZPf6RY/adoovmm6IFqN
XpnErN/HiozTbF9rxn9hxv3mu8yMudVuWS7iKRFvE8dFRmxlBNS7AEiSGtd0VhVhaYvekaQ+
b4hsa0VLbWbzCSFkMzlFMcqaPCxrYm2MScR2p99BcjH1m7G51WG3SNtELLZiRhDPMDchJzIx
N5UyLM7NQrVy/Q7c6ig5JhysI5D39/o3+Fm/PWcrIAYzqs//dX0KufXKrvVXiCp2IvX7ysC8
BH8wj5B70cSoldG4uQlrt/375hRDQ5phUdSPKmlYpFG877x6ocQDlmdbwaAMLA4AxBJ5i/oI
r/q/nfQVTUkPAV876SmaJlwEPHzSVTQpXgK+fdILoEjBZ8TrkSbVisGGCzhMhfJFusJeHKba
2NhP2N5/jbmr+rPBHnfQlLSwaOERfOvoWr9kw2r1V1G2RY203VKNvf+zSEa7h5yVA6Flfc68
juhDxt8orfx8Hg/k7lYmlUl1Ont/7iHl09nP5o7mnsh+K2e/Obsmt1Vli7nlyooA26Z0Broy
rFlpijclpILUGVXigXSO0+aWwVqbP9F849yyZQSIhOeWxSiQnlsWp16tc8s6qUvP3LIuAEq9
zfLcMscXmrm5ZfYvRDxqLgvL/daAllH9nZm8m4keiSWOxOLxzmwuVzjS2bn0SFeX3QHI3+Vy
H0UsoNCbjmOfH6xSFinLGo4Eg31Hli3DAYyY7JF7czj3lKr2uGD03NiTSWvLAWmkW0RyNZtZ
c/LG1qOoB/ecZlpKLo49wviO+DsR04n3cy1ov3yGcaCb0XL8+rPhO+4nFAcgiHmJ6IEmyuR7
FgYuUURRo/GJEiaig9lQkkLEIINVpf/6xmtNepzoINLjevQwRuRL+mbYtS63+M1rghvRgDvs
j+hCcWt6c2UqpThGlKE4Ga/hfhNTkHFE3yu7jmu90M685msWNg+tTS6rfrYvsm5bv9hs2o5l
zGP/0pgrvqZauSHlrp7Xqj+EBXG0+qOlCZecXGpe94PVKxbObsrCRGhJb2SW9976g4U5pieG
PZmV1czmFlM0in0tffjiwhhzsBpanvLBjNmyAv9kXdIbI/T75NV3mS72m8iMbig5TKyAsBU/
hZDpKfYFHENm/PVTItPEPM2wzD9hG7Kir7FNutbthXfI3iHdRVnS6m7HOOKe7Mafre7u/m/2
m9VktQW/iuDXzXwXEWkB5HcvNQmMUYi+EZgBFHHAgFlUQV8xYFNdGDNS0GsGbEHNmDNgK9qN
WwyYQ62Qkg7z6CH8mAE7mEeYOOSo/wqmcwaMkWj6gwEzyGo2GTCLimabAZvqwpiR3ZwxYAuS
zcsN2IpuMG82YA4ppu8bMI9uNh82YAdeb/4ppIxNLORlt2oUNhP93NYMhS3UvYfCVuq+msIc
he+gMG+0oQ7rbajDehvqsN6GOmyqC6O3oQ7rbajDehvqsN6GOqy3oQ7rbUhgoa78Nlq2EQrb
69ydFL6PwkSWj9P6aQoT7RIu6xcp7KkL76Xp/AOFfXXuKo17gsJBGuZ7FG6sC9NUB0dp+J9Q
uIXCb1E4S+HfEJirKz9Xl5e9zt1eq8uTSENt0CJL4NHQJjSCymCvR+NoDJ4ptBdNUJeb4a0C
MDEHwX2UhsiBTx/aAX8a2ghu90D8KTRJ38pglyH0bjCHIeQm8N9JXTV0K9h7aKhxcBuElEj4
e9A0pDQIcT6Yf/efiK19IH432kLznjTKqaEClKAVdQGUhNRH0RD4joP/ONoOuaTq0tdTv5Z2
P7oNYmz6kyUYpT6D8EzRNhqGMDtpaT4FbiSf/0/7fjjkpkVoOQ27B8KOQd01tAHy2E7rRnyz
8NwG8UjpdoDLXiPfCi0pSTUDLlto+CnqrqF1tLyk5GPgpkGvKMJauA1tBf9peCf1IelM029L
ajpi1Hs7TXGKtgB5n6DtvxN8p+CP9AAN3U3jThltsAJthvz6jLiVOp8J+m2GIZchmuIobd89
NK8hMD86X/2dhB2C+k7TWgzTsONgDlP/Cdo/9tJSjlHfCdoeegpDRlp67Unf1j5U83Hamntp
PxqFfqPRr3z3Yl4fVa6xD6X957fStdSHF79zhfbCKVryocW+8tG113P/cLluqGsDUhO9LlM0
v1ovJOnrdR0Glz205uO0Z390TfWWHryuVcv0y44bpl4rHZ6GtwlqarS0uxd7rp4OCbkDQvyf
3+hJra11Sau2aaSsrR8fG5/aO1HWbh6vTIxXBqdGx8dyWt+OHdrG0XtGpia1jeXJcmV3eTi3
aXRneVK7tbxH2zi+c3BsY/me6R2DlVr87g94a4Z/95ZyZRLS1Aq51i4tuX50qDI+Ob59KkXD
Q3Aauv+29Zs+mMDopDaoTVUGh8s7Byuf0sa3//HyLjpuIsbyyuCe0bF7tA3bt48OlbWsdtvU
4NiO8l6IWxmdHB/LaFtGh6bGK9q6wcpweWxKW1Jsb9s6Pq3tHNyrTU+WtakRyHv7OPgMTmoT
5crO0amp8rB2917wKWsrNq/rA98KfZmojA9PD01po2PanpHRoZG6uGCPjg3tmB6GqFPj2vDo
5MQOyGBwbBhijUKAIQgF2ec0rZb5+NiOvVpyNKWVd95NYl1La6wW+iOLRIMPkzpXypNTFagd
tEpd9hB9Ma0baAmSo5DLVHknacLKKOQ6PL5nbMf4YH2mUOhBvajligb1HYeswJyempie0obL
u0njQpiR8o6JD9QIMP04HaGDtO/D2MQO6Hv3Qu/7NcXLNb8aph3WMSj7CPsMe5Z9EZ7n2RfY
f6xLh4QeXXz/D3irz6N8XUo6Nq73H0N7TSHTEtNa0yrTjWAWr0tpDOLfCuF201Gqzxsj+Bj+
OhCJBHf0QcgKjLkxmgf6X3qZLD0KZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago8PC9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMzEyCj4+IHN0cmVhbQp4nF2Sz26DMAzG73mKHLdD
RaCUdhJCamkncdgfje0BaGK6SCNEIT3w9kts1ko7kOhnf59tOSR1c2yM9jx5d6NswfNeG+Vg
Gq9OAj/DRRuWZlxp6RfCUw6dZUkwt/PkYWhMP7Ky5Dz5CNnJu5k/7NV4hkeWvDkFTpsLf/iq
28Dt1dofGMB4LlhVcQV9qPTS2dduAJ6gbdWokNd+XgXPXfE5W+AZckrTyFHBZDsJrjMXYKUQ
Iq14KY6bomJg1L98Qa5zL787h+p1VItMVEhbopzoiahAWu+RNlukXR0oS7MM6XCKFCWx51L9
1us+2gFLiJrq7qjLM1J6omCNwTDBQvHKUwqScr2jICnz/I/iVZAyp2KbIwUPy1g0SNxKfL3b
yuXVubBtfGJcc1ywNnD7C+xooyt+v6iYnxMKZW5kc3RyZWFtCmVuZG9iagozMSAwIG9iago8
PC9UeXBlIC9Gb250Ci9Gb250RGVzY3JpcHRvciA0NyAwIFIKL0Jhc2VGb250IC9UaW1lcyMy
ME5ldyMyMFJvbWFuCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFRvR0lETWFwIC9JZGVu
dGl0eQovQ0lEU3lzdGVtSW5mbyA8PC9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRl
bnRpdHkpCi9TdXBwbGVtZW50IDAKPj4KL1cgWzAgWzc3Ny44MzIgMCAwIDI1MF0gMTAgWzI3
Ny44MzJdIDExIDE3IDMzMy4wMDc4IDE4IFsyNzcuODMyXSAxOSAzNiA1MDAgMzcgWzY2Ni45
OTIyIDcyMi4xNjggNzIyLjE2OCAwIDYxMC44Mzk4XSA0MiA0NiA3NzcuODMyIDQ3IFs2NjYu
OTkyMiA5NDMuODQ3NyAwIDAgNjEwLjgzOTggNzc3LjgzMiA3MjIuMTY4IDU1Ni4xNTIzIDAg
MCAwIDEwMDBdIDY4IFs1MDAgMCA0NDMuODQ3NyA1NTYuMTUyMyA0NDMuODQ3NyAzMzMuMDA3
OCA1MDAgNTU2LjE1MjMgMjc3LjgzMiAwIDU1Ni4xNTIzIDI3Ny44MzIgODMzLjAwNzggNTU2
LjE1MjMgNTAwIDU1Ni4xNTIzIDAgNDQzLjg0NzcgMzg5LjE2MDIgMzMzLjAwNzggNTU2LjE1
MjMgNTAwIDcyMi4xNjggNTAwIDUwMF1dCj4+CmVuZG9iago0NyAwIG9iago8PC9UeXBlIC9G
b250RGVzY3JpcHRvcgovRm9udE5hbWUgL1RpbWVzIzIwTmV3IzIwUm9tYW4KL0ZsYWdzIDQK
L0FzY2VudCA4OTEuMTEzMwovRGVzY2VudCAyMTYuMzA4NgovU3RlbVYgMAovQ2FwSGVpZ2h0
IDY2Mi4xMDk0Ci9JdGFsaWNBbmdsZSAwCi9Gb250QkJveCBbLTU1OC4xMDU1IC0zMDYuNjQw
NiAyMDAwIDEwMjUuODc4OV0KL0ZvbnRGaWxlMiA0OCAwIFIKPj4KZW5kb2JqCjQ4IDAgb2Jq
Cjw8L0xlbmd0aDEgNzA2NzYKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzMzE5NAo+
PiBzdHJlYW0KeJzs/Qd8lEXXP4yfmbnqXrvJpvfsZjeNbBoJJdRsQhJqIFQTpIQqRQWkeFsB
GxhRsSFgw46gkmwAA6igKNgQsCsIKFgBQQUswO57ZnY3xqC39/38nt///37eT3b5Xmd6OXPm
zJm5JgsQADBgATDIn3nFpJnTL+82CmDMJwARJZePu2xS5U/VnwORHgQIvfKycf+aGb1U+hcA
icVc9ktnTBgn1RgmgKvLADrWTrlszr/2Tei7HeOL0D9qypRJ4yKk6Gsx7SlEKnonHhj7egm6
X0R0uuTSqybvHRN3HcC6JwCGnZk885LLptjHnQWoPgIg/zRh3hz7zJ9+HAFwRSKAlj7hsnEz
H5pccRSz3gvgGAi87XLYsc6OTsrY0O6ntTgN+Oexwx0rOH3j1cJBZ289v8QKWkdMqyOISIBP
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
TLgCZsNcmAPz4Er4Fv4FV8NVcA1cB9fCC/AozIfrYQEshO/hGGwiy8j9hBJGJCLDWThHlpMV
ZCVaJ+fBSxSiEg185EHyEHmYPEJWkUeJTkzEIGbyGHkczsAv5AnyJHmKPE1Wk2fIGrKWPEue
I8+TdaSeNBAPaYRf4UNSR24j68kGspG8QJqIhYSQTWQzCSVWEkbC4RB8QSJIJNlCXiRRJJos
IS+Rl8lWso28Ql4lMSQW1kE9iSPxZDt5jSSQRJJEksnrZAf8Br/Dl3CY2IidpBAH2UneIG+S
t8jb5B2yi7xLnCSVpJF0spvsIXvJe+R98gFsJhkkk7QjWXAEviIfKnXKbcoS5XblDuVOZaly
l3K3co9yr3Kfsky5X1kupyorlJXwlPKA8qDykPKw8oiySnlUeUx5XHlCeVJ5SnlamiZNV1Yr
zyhrlLXKs8pzyvPKOqVeaVA8SqOyXrpUukzZoGxUXlCalE3KZmWL8qLykvKyslXZpryivKps
V15TXld2KDuVN5Q3lbeUt5V3lF3Ku8puZY90TjoveSWfjJtNmcpMlmRZVmRV1mRdNsmGsld5
T3lf+VD5SPlY+UT5VPlM2afsVz5XDigHlUPKF8qXymHliPKV8rXyjfItzvfvlaPKMeW48gP5
iHxMPiGfks/IPiNctaphargaoUaqUWq0GqPGqnFqgpqoJqnJqk21qymqw4gwIo0oI9Q4YBw0
DhlfGF8ah40jxlfG18Y35lPm0+Yz5l/Mv5p/M/9uPms+Zz5v9ppxe2shqlNNVdPUdDVDzVTb
qVmqS04zoo0YdYG6UL1BvVG9Sb1ZvUVdpC5Wb1Xr1NvUJert6h3qnepS9S71bvUe9V71PvgI
DqrL4BP1fnW5ugI12AOoyR5SH1YfUVepj6qPqY+rT8Cn8BnsgwPwMXyuPqk+pT6trlafUdeo
a9Vn1efU59V1ar3aoHrURnW9usGINeKMeCPBSDSSjGTDZtiNFMNhOI1UI81INzKMTOlu6R6t
VLpa66WVaeVahdZbmqP10fpq/bT+2gCtUhuoDdKqtMHaEG2oNkwbro3QLtKqtRptpHaxNkob
rY3Rxmq10n1GOyPLcBnZRo6Ra+QZ+ca3xnfG98ZR45jR3igwCrXbtTu0O7Wl2l3a3do92r3a
fdoy7X5tubZCW6k9oD2oPWKhFmaR0OY/QU6SH8l+8hP5mZwiZ8gv5FfyG/mduMhZco6cJ16S
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
0n1t/ljf//gone999eQ8j1Iu3ErvfNUkr3zy06tX//h9dU8ZA/Ik6rNspdeb4ELSv/qsq6Fk
B33yIcrZn/yk6kiv/NCoDtCZHdJS9alUehscDdNUone7fZJz1X5IzY1Q4/91jh6VWpqam6Sl
6wakhUObh7buHB6QZg6NDg+Nrtw6OLS5JE3fuFG6aHDtuq1bpIsGtgyMbh9YXVo6uGlgi7Ro
YId00dCmlZtnDG1cPdG46yPnJHKya9nA6BboTWorNXVImYWDq0aHtgyt2ZqllaEurdq/pEh7
WvrRLga3SCulraMrVw9sWjm6QRpa8/dvd7JwKUlmja7cMbh5rbR4zZrBVQNSUVqydeXmjQM7
oe3o4JahzQVp2eCqrUOj0oKVo6sHNm+VmqutLcuHtkmbVu6Utm0ZkLaug2uvGYIzK7dIwwOj
mwa3bh1YLV29E84MSH0XL5gOZ0fpwfDo0Optq7ZKg5ulHesGV62b0hbywc2rNm5bDU23Dkmr
B7cMb4QLrNy8GloNQoVVUAsuX5KkiYsPbd64U8oMZqWBTVeTVuf72jxR+xNviVZfTZ55dGDL
1lF4OhiVKZeH5pN9ddM7yAzCVbYObCJDODoIV109tGPzxqGVUy8KN71SvdWBUQmedwguBem2
rcPbtkqrB7aTwYU66wY2Dn/kiaiiX0sFjijST1sCPlx7K9qGbVD+1qe2O19zDRXbT6uv1ppN
r7P1U2tr9dib2O+wL7LPQ/qtT2vzoboTTzX4/2kM1NoLIF8H+XaoQUq2fWr7j7eYQ5XRlk9t
OVFvNozjRlh0z0Ifb0HZp4/Ph+tP9LNFG9+hf/jK51sso9SntVNrzYWjjXDtNf9Qmw/X7ocz
ZLS3wSKhLgOfPkOf1GbqrH36836otk7U9ei6dTN17bpOnaKbppuvq35aD3+nzT8qL+drziej
gZuB/rQ252vOpxI6DDP+6U86pS52oP9kZTjzKW0m6y2gIGbwH5iR8zX/L8MgQBoKZW5kc3Ry
ZWFtCmVuZG9iagozMiAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMzIz
Cj4+IHN0cmVhbQp4nF1Sy26DMBC88xU+pocI2zyiSAgpIY3EoQ+V5gOIvaSWirEMOfD3xbt5
SD0AmtmZ9SzruKoPtTUTiz/9oBqYWGes9jAOV6+AneFibCQk00ZNN4Rv1bcuihdzM48T9LXt
hqgoGIu/luo4+Zmtdno4w0sUf3gN3tgLW52qZsHN1blf6MFOjEdlyTR0S6e31r23PbAYbeta
L3UzzevF81R8zw6YRCwojRo0jK5V4Ft7gajgnIuSFfyQ5WUEVv+rp+Q6d+qn9ahOgppLXgYk
OKEDomSHKNsgSlNEucC+tw7be7/n8WTiFXUir5CIxJ7II5Iyu0vCJ5VEbokkZZoTeUSUULq0
onSUPMkpJA2Q5ncJZk2IfCUJGfI9khmdnpFyI29T0Rzhx4UFP7airt4vC8FbgJsIOzAWHhfF
DS64wvMHcT6lnQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0Zv
bnREZXNjcmlwdG9yIDQ5IDAgUgovQmFzZUZvbnQgL1ZlcmRhbmEKL1N1YnR5cGUgL0NJREZv
bnRUeXBlMgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9DSURTeXN0ZW1JbmZvIDw8L1JlZ2lz
dHJ5IChBZG9iZSkKL09yZGVyaW5nIChJZGVudGl0eSkKL1N1cHBsZW1lbnQgMAo+PgovVyBb
MCBbMTAwMF0gMTkgWzYzNS43NDIyXV0KPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L1R5cGUgL0Zv
bnREZXNjcmlwdG9yCi9Gb250TmFtZSAvVmVyZGFuYQovRmxhZ3MgNgovQXNjZW50IDEwMDUu
MzcxMQovRGVzY2VudCAyMDkuOTYwOQovU3RlbVYgMAovQ2FwSGVpZ2h0IDcyNy4wNTA4Ci9J
dGFsaWNBbmdsZSAwCi9Gb250QkJveCBbLTU1OS41NzAzIC0zMDMuMjIyNyAxNDQ2Ljc3NzMg
MTA1MC43ODEzXQovRm9udEZpbGUyIDUwIDAgUgo+PgplbmRvYmoKNTAgMCBvYmoKPDwvTGVu
Z3RoMSAxMjYwOAovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDYxODAKPj4gc3RyZWFt
Cnic7Tp9XJTV0jPneXYXZGUREBGSfRbELxAUEdM0UQE11BKVCybKwq6wCuy6LF9mRh9+oanp
zcrM1CwzTRdQBLUyzdI+zOr2aRpWdq/3XtPbtbyVsu+cs7u0ot233/v+67O/eWbOnDPnzMyZ
M2ceFBAAAqAWJBhgs5ttfraLqQAR4wDY1TJjqfmE+uAOgN5OAP9VpcZqm3qI3AUAw0lKKbEW
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
YGcwi8+68wS/9U2hTzMjcUz0toNJWi/VS69IrxG0SPulnfRJqlBKGQAD6afARLBAIY2z0qel
FWaTrAJjxGw28TYSx0JUGSRQzyiav4RwFvGKoJj6ykXLTNhMoyvpbaKR2aJlEnoYRX8RVJAk
1+jGFYd1GK90kPD2l3s0UWAwrTGA3gr0ucl8fW+YzyL05JRD2GSi/lIx91zicSneU0zcm3uk
SLQryCfe0YWES6nNV7AI+xNIknvLPU+V8CNfwSF0yRXyili1hnCF8Jh7Vbd2s4VtDqEnb9uE
XCn1OsQcJuIVCFmvpukwjT6lR3lk7T49NqGviVYpFDNahNeqxFqF9L75uu42H1tInq8QXjKJ
sVZ6m0S/TexJjdCyTPTytSyeGQo9c5nFm0dMR7t5f4mg+pBUX8J8JwraV7qZVmU3zPzHffTb
7CYxUxHx7GK/HELvwvb4vrnt7tVv1OsOHw9wS9y2OMR63pPD53fbaiJOlbDcKqLv5pa6/Wy8
zqdmsa9Wz9ttlZvm/0BmE29FaFsprDG3z8NHloiI/W87VCw8Z6Mzlki/KvFLEB69/gwkeCI+
kegaYWGRsNFGM9QQ12tFOfhmKp6PLO3ts9TyzWLm63KVyFbX9ZdBjRwlD5Qz5bHyCHoPvW6m
MpKfROMqhUd5BhxFfXbySJmY9X8AAsdRigplbmRzdHJlYW0KZW5kb2JqCjM0IDAgb2JqCjw8
L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAyMjcKPj4gc3RyZWFtCnicXZDNbsMgEITv
PMUe00MEjqWcLEttevGhP6qbB8CwdpHqBa3xwW9fIFYq5QDSMPOthpWX7rUjF0F+sjc9Rhgd
WcbFr2wQBpwcieoE1pm4q3KbWQchE9xvS8S5o9GLpgGQX8ldIm9weLZ+wCchP9giO5rgcL30
SfdrCL84I0VQom3B4pgmvenwrmcEWbBjZ5Pv4nZMzH/iewsIp6KrWxvjLS5BG2RNE4pGKVW1
0Kj65dwKJPvg79Qwmh/NOV3VOa1qVdL7e+by/+6lzMqc+pQllCK5giO87yn4kKl8/gAke27/
CmVuZHN0cmVhbQplbmRvYmoKMzUgMCBvYmoKPDwvVHlwZSAvRm9udAovRm9udERlc2NyaXB0
b3IgNTEgMCBSCi9CYXNlRm9udCAvVmVyZGFuYQovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9D
SURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2Jl
KQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwCj4+Ci9XIFswIFsxMDAwXSA0
NyBbNjM3LjIwN10gNzIgWzY2NC4wNjI1IDAgMCAwIDM0MS43OTY5IDAgNjcwLjg5ODRdXQo+
PgplbmRvYmoKNTEgMCBvYmoKPDwvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9W
ZXJkYW5hCi9GbGFncyA2Ci9Bc2NlbnQgMTAwNS4zNzExCi9EZXNjZW50IDIwOS45NjA5Ci9T
dGVtViAwCi9DYXBIZWlnaHQgNzI3LjA1MDgKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFst
NTQ5LjgwNDcgLTMwMy4yMjI3IDE3MDcuMDMxMyAxMDcxLjc3NzNdCi9Gb250RmlsZTIgNTIg
MCBSCj4+CmVuZG9iago1MiAwIG9iago8PC9MZW5ndGgxIDE0NzAwCi9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCi9MZW5ndGggNzE3MQo+PiBzdHJlYW0KeJztOnl8VEXSVf3emyPnJARICGReMgQJ
IQeEW1YiIaCGI0BgEyCQITMkgRxDMiEEhESNHAEPQBFRWFARiYoTAktQBLwAFQ88ARcEBXdZ
AZEFdUUyX3XPmxAS2N3v+37fP9/P96hX1V3V3VXV1dXdZAABwBeqQYJER6ndcWL+8cMAXUYC
SMZia5H90tdjLgH0dAD4XS2yznXoerEaAAylVmphSa51wmMT3wOIInm9I7/IOffwkzmbiD8A
IOAv+fl2a1C6fwPJXiboSkXbCeesh4neTdAvr7ByxmM5o6ivGCqz7TMceUXzUi90Bei4HEDZ
mzvHqU6MnBFHQ2VSn5dyi6yOBR1G3wNgCqHx5gDXXdFvTXvn2OPTAgdfgXAD8OflwvG/cHxw
xdtvX117bZX/C4ZVJGsEBp6H2hl8m8aRjgOIP9v/BdFTi0fayWvoOwf0kA8KtTRBMkwgLRXM
JV+hQWvCdntAGgDvyw2wWXcRHldcsMgnDh7RfQeV7AXYLGfBGwTPU/0h4h9jp8EifQnFhHcq
NTCf6h2KC30I7yJYTpBB8Bzvh+BpglyCfBrjFMEo6oP380+Cc/IPsEr/Z1ih6wehulDYo7wH
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
/3MfXe/dJnrKo7pSMV9OoXduc3Tf3HbP6G31ur2FB7glHlucYjzvuuH9e2y1UU2FsLxERN/N
LfX42XqDT+1iXku0r8cqD81/duEQX1VoO0dYY2/uh0sWioj9VzOULzznoLWXQG+FeOOFR29c
A/FaxCcQXSkszBM2OqiHSqr1WlEG1zNjwb/MjB7uSML5hOdQe15T3ka+rcQIMXJZG0lv/XDK
poW0sn+iNmeprm3WvJHvbVemZdmSW/Z8o0TbfOypvYvoQup7xk1lbuSma54spyj1xGFlmxY3
k2npxbb63sCVzfId8u1yitxPHiAny3+Q0+SBrVvcVCbjlrvWdU4atwZ7Ed1a5jonTaw4B3m8
raYteSNFziq4Scxc5/wXZPHNGQplbmRzdHJlYW0KZW5kb2JqCjM2IDAgb2JqCjw8L0ZpbHRl
ciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAyNDYKPj4gc3RyZWFtCnicXZDNasMwEITveoo9pocg
2XVDC8bQuC340B/q5gFkae0IYknI8sFvX/2EFHqQ4GN2ZoelbffSaeWBfjkjevQwKi0dLmZ1
AmHASWlSlCCV8FdKv5i5JTSY+23xOHd6NKSuAeh3UBfvNtg9SzPgHaGfTqJTeoLdqe0D96u1
F5xRe2CkaUDiGJLeuf3gMwJNtn0ng678tg+ev4mfzSKUiYvcRhiJi+UCHdcTkpoxVjRQs/vj
oSGo5T+9yq5hFGfu4nT5FqdZ1TaRqsdEh4dMbaanTK+Zjin3mhA3xEvc6ovVudA8nStVjmWV
xttFrbHRFd8vNJF3cgplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1R5cGUgL0ZvbnQK
L0ZvbnREZXNjcmlwdG9yIDUzIDAgUgovQmFzZUZvbnQgLwovU3VidHlwZSAvQ0lERm9udFR5
cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkg
KEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwCj4+Ci9XIFswIDIg
MjAyIDggWzYzOV0gMTQgWzI1MCAzODUgMjUwXSAxNyAzNCA1MzYgMzUgWzU1MyA1NTcgNTAz
IDYwMiA1MTMgNDg0IDAgNjA3IDI0NSAzNzkgMCA0NzIgMCA2MTMgNjEzIDU1MSAwIDU2NyA1
MTUgNTI1IDU5NCA1NTJdIDY3IFs0OTggNTIxIDQyNCA1MjEgNDk2IDM0MSA1MTkgNTI0IDIy
NyAwIDQ5MSAyNjEgODA1IDUyNCA1MjYgNTI0IDAgMzUxIDQ0MiAzNDkgNTI0IDQ3NiA3MDAg
MCA0ODAgNDU3IDAgMjg4XSAxMzEgWzc4Nl1dCj4+CmVuZG9iago1MyAwIG9iago8PC9UeXBl
IC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgLwovRmxhZ3MgNgovQXNjZW50IDEwMDEKL0Rl
c2NlbnQgMzE1Ci9TdGVtViAwCi9DYXBIZWlnaHQgNjkzCi9JdGFsaWNBbmdsZSAwCi9Gb250
QkJveCBbLTE1OCAtMTk5IDEwODAgOTE5XQovRm9udEZpbGUyIDU0IDAgUgo+PgplbmRvYmoK
NTQgMCBvYmoKPDwvTGVuZ3RoMSAxNDk0OAovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3Ro
IDEwMDY3Cj4+IHN0cmVhbQp4nNV7aXgcx3VgVfWc3XP0nN1z90xjDswJzOAanANgAAwBHjiJ
QxwSIAEQkHhZosBDPCBFokjqsGKvJctJLPmMnY3DoR1vFMcJ9WUVZ+XPomPH67UcRVJsx9+u
EjhyLNnZWAT2dU8DPCxnv82XP9s91fXqfvXeq3d0AwgjhBi0iihUd+zehWPvfPzP5hAyjCNE
vnJk7vDCP/7sRjNCjX+IkOoLh+dOHqNWtR6EMA+jhENHD8yJ76VaEWL3QN2Plg4fP/nV46kH
AG5BiHppaWlhTvN16hfQ9x1INVCc/+X5bSqAvwqp6eChU4sXnn/lLoSsBYTE44vHDh5e+dPi
Swhp6iCJB1aOC9zTlm8iZGZhzsEDh+eO+Rb8FwCX96DcgCTcIY2G51T7zO3vIhf1P6EGfaMw
/a6cn/jP0xv7N/KqFuoZKOoRQdULxlCpjT6YZy+071e1yDPdev1UrvkpmkEqdAhpYSSLMmga
qOLUiFCH0dehXUlYi7rxLEqTXlRPeNROsShKzqME+jOUxknUCcmGn0ZeaCuif0Wt+EGUlPOj
iIO6BKRxSAVIjZAikAYhNUNqgpSElJH6S0npW4S0D/8eilK9KEdqUYCkUD/+BWohM6ifYIB/
BHk7lPehfvQulB9AHujXj78H9V9HHWQB8gVojyp5M+QgA8QI/UZRD4khL+VCNTBvDdTZiAFF
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
iUMLx4+nhucO3DN377xQXFhZOHT02OGFI8eh6+Fjc0dOJYXt6eF0aVgYWz587NDy4vLCvDBZ
Vy+MLhy8/9DcvUp2YmH/4tEjx+9LV58Hjh5u/bVDWqWlf23r7oV771s+ekSoT9fVlYZv9oEu
KaVLce7QceixY27uoLD9+PwdxaXjx4+1ZjInTpxIz8sth6FBwijz61vQ58H16pX/KeQUuhct
o4NoCR2HuiyqAyHLAlRCC+gEOgTP43Cn0DCaQwfkP2W8F81DexFaViAdkmc5DNAReQZp1sNQ
MwflUxAmCGg7hI/DkErwFECYl+X2Q5AvQlqQZ5uU1xXQKJQPovuhVVrn9tIJKO2HMUflle6D
GW+FD8jrtv47Vmnd2vX/+9jdULoX1l+WMRGgRxr61ckzvd881VlSd8xShOch2Ed1jh1QmoNW
iXLHYcy/3bok8+cY7CID9wn5TkP9zTGHlRGbNMr8u8Yg9H8AXEIecAplbmRzdHJlYW0KZW5k
b2JqCjM4IDAgb2JqCjw8L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzMzcKPj4gc3Ry
ZWFtCnicXZJNb4MwDIbv/Iocu0MFCYG2UoXUr0kc9qHR/QCamA5phCikB/79gl1aaQdAj+P3
tY0TH8pjaVrP4k/Xqwo8a1qjHQz9zSlgF7i2JuKC6Vb5O+FbdbWN4iCuxsFDV5qmj7ZbxuKv
cDp4N7LFTvcXeIniD6fBtebKFt+HKnB1s/YXOjCeJVFRMA1NcHqr7XvdAYtRtix1OG/9uAya
Z8Z5tMAEMqduVK9hsLUCV5srRNskSXjBwuc1KSIw+t95TqpLo35qh9kCs0XInmhNlCPxHCmV
SOKEJA9IGdGKaJ0i7TZY8+7Ok7nYszdS8YTKkJhTC1xSNepEkKOghiSn4G7WYXCNwZTMUnKR
JwrezUieCQxK8pR7/OTkKY9zCgb3NB3Jsw0NSfKMdBlVX82z0nDTr56uxGOP6uZcWCHeG9zd
tLXWwONq2d5Oqun5A9uZr1QKZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8L1R5cGUgL1Bh
Z2UKL1BhcmVudCAxIDAgUgovUmVzb3VyY2VzIDw8L1Byb2NTZXRzIFsvUERGIC9UZXh0IC9J
bWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQovRXh0R1N0YXRlIDw8L0cwIDExIDAgUgo+PgovRm9u
dCA8PC9GMCAxMyAwIFIKL0YxIDE2IDAgUgovRjIgMTcgMCBSCj4+Cj4+Ci9NZWRpYUJveCBb
MCAwIDYxMiA3OTJdCi9Bbm5vdHMgWzw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9C
b3JkZXIgWzAgMCAwXQovUmVjdCBbNzMuNCAxNjEuMzggNDA1LjI5IDE3MS45MjVdCi9BIDw8
L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMTgwMDQud3d3MS5ocC5jb20v
cHJvZHVjdHMvc2VydmVycy9wbGF0Zm9ybXMvd2FycmFudHkvaW5kZXguaHRtbEFkZGl0aW9u
YWwpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAw
XQovUmVjdCBbMTUxLjY1NSAxMzkuMTgwMSAyNTYuNTUgMTQ5LjcyNTFdCi9BIDw8L1R5cGUg
L0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3cuaHAuY29tL3N1cHBvcnQpCj4+Cj4+
IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBb
NjIuODU1IDEwNy41NDUgMTU4LjMxNSAxMTguMDkwMV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9T
IC9VUkkKL1VSSSAoaHR0cDovL2gyMDE5NS53d3cyLmhwLmNvbS92Mi9kZWZhdWx0LmFzcHg/
Y2M9dXMmbGM9ZW4mb2lkPTUzMzY2MTcpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBl
IC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNjIuODU1IDk2LjQ0NTEgMTcyLjc0NSAx
MDYuOTldCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMjA1NjQu
d3d3Mi5ocC5jb20vcG9ydGFsL3NpdGUvaHBzYy9wdWJsaWMvcHNpL2hvbWUvP3NwNHRzLm9p
ZD01MjQ5NTg0KQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzEyMC4wMiA2Ni40NzUxIDE0MCA3NC44XQovQSA8PC9UeXBlIC9B
Y3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vaDIwMTk1Lnd3dzIuaHAuY29tL3YyL0dldERv
Y3VtZW50LmFzcHg/ZG9jbmFtZT1jMDQyMzA3MzUpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9T
dWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMTQxLjExIDY2LjQ3NTEgMTY4
Ljg2IDc0LjhdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMjAx
OTUud3d3Mi5ocC5jb20vdjIvZ2V0aHRtbC5hc3B4P2RvY25hbWU9YzA0MjMwNzM1KQo+Pgo+
PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3Qg
Wzk4LjM3NSA1Ny41OTUxIDExOC4zNTUgNjUuOTJdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAv
VVJJCi9VUkkgKGh0dHA6Ly9oMjAxOTUud3d3Mi5ocC5jb20vdjIvR2V0RG9jdW1lbnQuYXNw
eD9kb2NuYW1lPWMwNDIyMjUyOSkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xp
bmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsxMjAuMDIgNTcuNTk1MSAxNDcuNzcgNjUuOTJd
Ci9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMjAxOTUud3d3Mi5o
cC5jb20vdjIvZ2V0aHRtbC5hc3B4P2RvY25hbWU9YzA0MjIyNTI5KQo+Pgo+Pl0KL0NvbnRl
bnRzIDMgMCBSCj4+CmVuZG9iago0IDAgb2JqCjw8L1R5cGUgL1BhZ2UKL1BhcmVudCAxIDAg
UgovUmVzb3VyY2VzIDw8L1Byb2NTZXRzIFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAv
SW1hZ2VJXQovRXh0R1N0YXRlIDw8L0cwIDExIDAgUgo+PgovWE9iamVjdCA8PC9YMCA1IDAg
Ugo+PgovRm9udCA8PC9GMCAxMyAwIFIKL0YxIDE3IDAgUgovRjIgMTYgMCBSCi9GMyAxNSAw
IFIKL0Y0IDIwIDAgUgo+Pgo+PgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovQW5ub3RzIFs8
PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzM4
Ljk5IDEzNS4yOTUyIDcwLjA3IDE0NS4yODUyXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VS
SQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vaHAtaW5mb3JtYXRpb24vaW5kZXgu
aHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAw
IDBdCi9SZWN0IFszOC45OSAxMjAuODY1IDc1LjYyIDEzMS45NjUxXQovQSA8PC9UeXBlIC9B
Y3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vY29udGFjdC1o
cC9jb250YWN0Lmh0bWwpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9C
b3JkZXIgWzAgMCAwXQovUmVjdCBbMzguOTkgMTA5LjIxMDIgNzYuMTc1IDEyMC4zMTAxXQov
QSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMv
ZW4vaHAtbmV3cy9uZXdzcm9vbS5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlw
ZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzM4Ljk5IDk3LjU1NTIgMTAwLjA0IDEw
OC42NTVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMzAyNjEu
d3d3My5ocC5jb20vcGhvZW5peC56aHRtbD9jPTcxMDg3JnA9aXJvbC1pcmhvbWUpCj4+Cj4+
IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBb
MzguOTkgODUuOTAwMSA5MS43MTUgOTddCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9V
UkkgKGh0dHA6Ly93d3cuaHAuY29tL2hwaW5mby9nbG9iYWxjaXRpemVuc2hpcC8pCj4+Cj4+
IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBb
MzguOTkgNzQuMjQ1MSA4MS43MjUgODUuMzQ1Ml0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9V
UkkKL1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL2hwLWluZm9ybWF0aW9uL2FjY2Vz
c2liaWxpdHktYWdpbmcvaW5kZXguaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5
cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFszOC45OSA2Mi41OTAxIDYyLjMgNzMu
NjkwMl0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gyMjE2Ni53
d3cyLmhwLmNvbS9jYWxlbmRhci5hc3B4P2NjPXVzJmxhbmc9ZW4pCj4+Cj4+IDw8L1R5cGUg
L0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMzguOTkgNTAu
OTM1MSA2Ni43NCA2Mi4wMzUyXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJICho
dHRwOi8vd3d3LmhwbC5ocC5jb20vKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAv
TGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzM4Ljk5IDM5LjI4IDU1LjA4NSA1MC4zODAx
XQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20v
dXMvZW4vam9ic2F0aHAvaW5kZXguaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5
cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsxNzcuNzQgNzAuMzYwMSAxODYuMDY1
IDc4LjY4NTFdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3cu
ZmFjZWJvb2suY29tL0hQKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawov
Qm9yZGVyIFswIDAgMF0KL1JlY3QgWzE5MC41MDUgNzAuMzYwMSAxOTguODMgNzguNjg1MV0K
L0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dy5saW5rZWRpbi5j
b20vY29tcGFueS9oZXdsZXR0LXBhY2thcmQpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0
eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMjAzLjI3IDcwLjM2MDEgMjExLjU5
NSA3OC42ODUxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3R3
aXR0ZXIuY29tL0hQTmV3cykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsK
L0JvcmRlciBbMCAwIDBdCi9SZWN0IFsxNzcuNzQgMTIwLjg2NSAyNjQuMzIgMTMxLjk2NTFd
Ci9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMzA0MzQud3d3My5o
cC5jb20vcHNnKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzE3Ny43NCAxMDkuMjEwMiAyODUuOTY1IDEyMC4zMTAxXQovQSA8
PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vaDMwNDk5Lnd3dzMuaHAuY29t
LykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBd
Ci9SZWN0IFsxNzcuNzQgOTcuNTU1MiAyNTMuNzc1IDEwOC42NTVdCi9BIDw8L1R5cGUgL0Fj
dGlvbgovUyAvVVJJCi9VUkkgKGh0dHBzOi8vY29tbXVuaXR5LmRldi5ocC5jb20vKQo+Pgo+
PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3Qg
WzE3Ny43NCA4NS45MDAxIDIzMi42ODUgOTddCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJ
Ci9VUkkgKGh0dHA6Ly9oMzA1MDcud3d3My5ocC5jb20vaHBibG9ncy8pCj4+Cj4+IDw8L1R5
cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbMzE0Ljgy
NSAxMzUuMjk1MiAzNTQuNzg1IDE0NS4yODUyXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VS
SQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vc29sdXRpb25zL3BhcnRuZXItcHJv
Z3JhbXMvcGFydG5lcnMuaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xp
bmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFszMTQuODI1IDEyMC44NjUgMzc1Ljg3NSAxMzEu
OTY1MV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dzguaHAu
Y29tL3VzL2VuL3NvbHV0aW9ucy9wYXJ0bmVyLXByb2dyYW1zL3BhcnRuZXJzLmh0bWwpCj4+
Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVj
dCBbMzE0LjgyNSAxMDkuMjEwMiAzNjMuNjY1IDEyMC4zMTAxXQovQSA8PC9UeXBlIC9BY3Rp
b24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vc3RvcmUtZmluZGVy
L2luZGV4LmRvKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzMxNC44MjUgOTcuNTU1MiAzNTQuNzg1IDEwOC42NTVdCi9BIDw8
L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9o
cC1pbmZvcm1hdGlvbi9wYXJ0bmVyb25lLXByb2dyYW0vb3ZlcnZpZXcuaHRtbCkKPj4KPj4g
PDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFs0
NTMuNTc1IDEzNS4yOTUyIDUxNC4wNyAxNDUuMjg1Ml0KL0EgPDwvVHlwZSAvQWN0aW9uCi9T
IC9VUkkKL1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL3N1cHBvcnQuaHRtbCkKPj4K
Pj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0
IFs0NTMuNTc1IDEyMC44NjUgNTM3LjkzNSAxMzEuOTY1MV0KL0EgPDwvVHlwZSAvQWN0aW9u
Ci9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dy5ocC5jb20vc3VwcG9ydC9Qb3dlckNvcmRSZXBs
YWNlbWVudCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBb
MCAwIDBdCi9SZWN0IFs0NTMuNTc1IDEwOS4yMTAyIDUxNC4wNyAxMjAuMzEwMV0KL0EgPDwv
VHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL2Ry
aXZlcnMuaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRl
ciBbMCAwIDBdCi9SZWN0IFs0NTMuNTc1IDk3LjU1NTIgNTI4LjUgMTA4LjY1NV0KL0EgPDwv
VHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3JlZ2lzdGVyLmhwLmNvbS8pCj4+
Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVj
dCBbNDUzLjU3NSA4NS45MDAxIDU1MS44MSA5N10KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9V
UkkKL1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL3N0b3JlLWZpbmRlci9maW5kLmRv
P2JzPVNSNCZ0eXBlPWF1dGhvcml6ZWQpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBl
IC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNDUzLjU3NSA3NC4yNDUxIDUzMi4zODUg
ODUuMzQ1Ml0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gxMDEy
MC53d3cxLmhwLmNvbS9leHBlcnRvbmUvKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlw
ZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzQ1My41NzUgNjIuNTkwMSA1MTMuNTE1
IDczLjY5MDJdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4
LmhwLmNvbS91cy9lbi9ocC1pbmZvcm1hdGlvbi9lbnZpcm9ubWVudC9wcm9kdWN0LXJlY3lj
bGluZy5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzUxLjIgNzMyLjQ3NTEgMTQzLjg4NSA3NDAuODAwMl0KL0EgPDwv
VHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dy5ocC5jb20vaHBpbmZvL2ds
b2JhbGNpdGl6ZW5zaGlwL2Vudmlyb25tZW50L3JlY3ljbGluZy91bndhbnRlZC1oYXJkd2Fy
ZS5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFsw
IDAgMF0KL1JlY3QgWzUxLjIgNzE0LjE2MDIgMTM5LjQ0NSA3MjIuNDg1MV0KL0EgPDwvVHlw
ZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2g3MTAyOC53d3c3LmhwLmNvbS9lbnRl
cnByaXNlL3VzL2VuL3NvbHV0aW9ucy9ocC1jYXJib24tZm9vdHByaW50LWNhbGN1bGF0b3Iu
aHRtbD9qdW1waWQ9cmVfcjEzOF9lY29faG9tZV9jYXJib25fZm9vdHByaW50X2xlYXJuX21v
cmUpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAw
XQovUmVjdCBbNTEuMiA2OTUuODQ1MSAxMjMuMzUgNzA0LjE3MDJdCi9BIDw8L1R5cGUgL0Fj
dGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9ocC5jb20vZW52aXJvbm1lbnQpCj4+Cj4+IDw8
L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNTEu
MiA1OTQuODM1MSAxNzMuMyA2ODUuODU1MV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkK
L1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2VuL3Byb2R1Y3RzL2RhdGEtc3RvcmFnZS9m
cmVlLXZzYS5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9y
ZGVyIFswIDAgMF0KL1JlY3QgWzUxLjIgNTYxLjUzNTIgMjIyLjE0IDU3Mi4wODAxXQovQSA8
PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vaDE4MDEzLnd3dzEuaHAuY29t
L3Byb2R1Y3RzL3NlcnZlcnMvbWFuYWdlbWVudC9pbnRlbGxpZ2VudHByb3Zpc2lvbmluZy9p
bmRleC5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzUxLjIgNTI4LjIzNTEgMTA4LjM2NSA1MzguNzgwMl0KL0EgPDwv
VHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gxODAwNC53d3cxLmhwLmNvbS9w
cm9kdWN0cy9zb2x1dGlvbnMvcG93ZXIvaW5kZXguaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5u
b3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDUxNy4xMzUx
IDEzNS4wMDUgNTI3LjY4MDJdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0
dHA6Ly9oMTgwMDAud3d3MS5ocC5jb20vcHJvZHVjdHMvc2VydmVycy9vcHRpb25zL3Rvb2wv
aHBfbWVtdG9vbC5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawov
Qm9yZGVyIFswIDAgMF0KL1JlY3QgWzUxLjIgNTA2LjAzNTIgMTY5LjQxNSA1MTYuNTgwMV0K
L0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cHM6Ly9hbGluZWFuLmF1c3Rp
bi5ocC5jb20vcmFjazJibGFkZXN5c3RlbS90Y28vbGF1bmNoLmh0bWwpCj4+Cj4+IDw8L1R5
cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNTEuMiA0
OTQuOTM1MSAxNDIuNzc1IDUwNS40ODAxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQov
VVJJIChodHRwczovL3JvaWFuYWx5c3QuYWxpbmVhbi5jb20vaHAvUHJvTGlhbnRfUk9JX0Nh
bGN1bGF0b3IvKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzUxLjIgNDgzLjgzNTEgMTI3Ljc5IDQ5NC4zODAxXQovQSA8PC9U
eXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vcHJv
ZHNlcnYvc2VydmVyYnV5aW5nZ3VpZGUvb3ZlcnZpZXcuaHRtbCkKPj4KPj4gPDwvVHlwZSAv
QW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDQ3Mi43
MzUxIDE0NC40NCA0ODMuMjgwMl0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAo
aHR0cDovL2FsaW5lYW4uYXVzdGluLmhwLmNvbS9Qcm9MaWFudF8yUC00UF9jb21wYXJlL3Rj
by9sYXVuY2guaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0Jv
cmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDQ2MS42MzUxIDE2NC40MiA0NzIuMTgwMV0KL0Eg
PDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gxNzAwNy53d3cxLmhwLmNv
bS91cy9lbi9lbnRlcnByaXNlL3NlcnZlcnMvc29sdXRpb25zL2luZm8tbGlicmFyeS9pbmRl
eC5hc3B4Iy5Vd2VmNmY3blpyUSkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xp
bmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDQyOC4zMzUxIDk4LjM3NSA0MzguODgw
MV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gxNzAwNy53d3cx
LmhwLmNvbS91cy9lbi9lbnRlcnByaXNlL3NlcnZlcnMvYmVuY2htYXJrcy9pbmRleC5hc3B4
Iy5VdzVGMWY3bmFQOCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0Jv
cmRlciBbMCAwIDBdCi9SZWN0IFs1MS4yIDQxNy4yMzUxIDExMy4zNiA0MjcuNzgwMl0KL0Eg
PDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL3d3dzguaHAuY29tL3VzL2Vu
L3Byb2R1Y3RzL3NlcnZlcnMvcHJvbGlhbnQtc2VydmVycy5odG1sP2NvbXBVUkk9MTQ1NTc5
OCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBd
Ci9SZWN0IFs1MS4yIDQwNi4xMzUxIDEzMS42NzUgNDE2LjY4MDFdCi9BIDw8L1R5cGUgL0Fj
dGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9oMTcwMDcud3d3MS5ocC5jb20vdXMvZW4vZW50
ZXJwcmlzZS9zZXJ2ZXJzL2Nhc2Utc3R1ZGllcy9pbmRleC5hc3B4KQo+Pgo+PiA8PC9UeXBl
IC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzUxLjIgMzk1
LjAzNTIgMTI2LjY4IDQwNS41ODAxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJ
IChodHRwOi8vaDE3MDA3Lnd3dzEuaHAuY29tL3VzL2VuL2VudGVycHJpc2Uvc2VydmVycy9t
YW5hZ2VtZW50L2luZGV4LmFzcHgjdGFiPVRBQjEpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9T
dWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNTEuMiAzODMuOTM1MSAxMjMu
MzUgMzk0LjQ4MDFdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly9o
MTAwNzYud3d3MS5ocC5jb20vZWR1Y2F0aW9uL2N1cnItcHJvbGlhbnQuaHRtKQo+Pgo+PiA8
PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzUx
LjIgMzUwLjYzNTEgMTc5Ljk2IDM2MS4xODAxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VS
SQovVVJJIChodHRwOi8vaDE3MDA3Lnd3dzEuaHAuY29tL3VzL2VuL2VudGVycHJpc2Uvc2Vy
dmVycy9yZXRpcmVkL2luZGV4LmFzcHgpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBl
IC9MaW5rCi9Cb3JkZXIgWzAgMCAwXQovUmVjdCBbNTEuMiAzMzkuNTM1MiAyMjcuMTM1IDM1
MC4wODAxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vaDE4MDA0
Lnd3dzEuaHAuY29tL3Byb2R1Y3RzL3NlcnZlcnMvc2VydmljZV9wYWNrcy9lbi9pbmRleC5o
dG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAg
MF0KL1JlY3QgWzUxLjIgMzI4LjQzNTEgMTUwLjU0NSAzMzguOTgwMV0KL0EgPDwvVHlwZSAv
QWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDovL2gxNzAwNy53d3cxLmhwLmNvbS91cy9lbi9l
bnRlcnByaXNlL3NlcnZlcnMvbWFuYWdlbWVudC9vcGVyYXRpbmctZW52aXJvbm1lbnRzL2lu
ZGV4LmFzcHgpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIg
WzAgMCAwXQovUmVjdCBbNTEuMiAyOTUuMTM1MSAxMTQuNDcgMzA1LjY4MDFdCi9BIDw8L1R5
cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9idXNp
bmVzcy1zZXJ2aWNlcy9pdC1zZXJ2aWNlcy5odG1sP2NvbXBVUkk9MTE5ODI3MSkKPj4KPj4g
PDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFs1
MS4yIDI4NC4wMzUyIDEwNy4yNTUgMjk0LjU4MDFdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAv
VVJJCi9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9idXNpbmVzcy1zZXJ2aWNlcy9p
dC1zZXJ2aWNlcy5odG1sP2NvbXBVUkk9MTM4MDUxNCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QK
L1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsxNzQuNDEgMTk2LjkwMDEg
MjYwLjk5IDIwNy40NDUxXQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRw
Oi8vd3d3LmhwLmNvbS9nby9yZWFjaCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5cGUg
L0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFszOC45OSAxNjcuNDg1MSA4Mi4yOCAxNzcu
NDc1MV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoamF2YXNjcmlwdDp2b2lk
XCgwXCk7KQo+Pgo+Pl0KL0NvbnRlbnRzIDYgMCBSCj4+CmVuZG9iago3IDAgb2JqCjw8L1R5
cGUgL1BhZ2UKL1BhcmVudCAxIDAgUgovUmVzb3VyY2VzIDw8L1Byb2NTZXRzIFsvUERGIC9U
ZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQovRXh0R1N0YXRlIDw8L0cwIDExIDAgUgo+
PgovRm9udCA8PC9GMCAxMyAwIFIKL0YxIDIwIDAgUgo+Pgo+PgovTWVkaWFCb3ggWzAgMCA2
MTIgNzkyXQovQW5ub3RzIFs8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVy
IFswIDAgMF0KL1JlY3QgWzE1MC41NDUgNzI1LjI2IDE2OS45NyA3MzUuMjVdCi9BIDw8L1R5
cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9ob21l
Lmh0bWwpCj4+Cj4+IDw8L1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9Cb3JkZXIgWzAg
MCAwXQovUmVjdCBbMTgwLjUxNSA3MjUuMjYgMjI0LjkxNSA3MzUuMjVdCi9BIDw8L1R5cGUg
L0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHBzOi8vaDQxMTgzLnd3dzQuaHAuY29tL2h1Yi5w
aHA/Y291bnRyeT1VUyZsYW5ndWFnZT1VUykKPj4KPj4gPDwvVHlwZSAvQW5ub3QKL1N1YnR5
cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFsyMzUuNDYgNzI1LjI2IDI2My43NjUg
NzM1LjI1XQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5o
cC5jb20vdXMvZW4vc2l0ZW1hcC5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlw
ZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzI3NC4zMSA3MjUuMjYgMjk4LjE3NSA3
MzUuMjVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJCi9VUkkgKGh0dHA6Ly93d3c4Lmhw
LmNvbS91cy9lbi9wcml2YWN5L3ByaXZhY3kuaHRtbCkKPj4KPj4gPDwvVHlwZSAvQW5ub3QK
L1N1YnR5cGUgL0xpbmsKL0JvcmRlciBbMCAwIDBdCi9SZWN0IFszMDkuMjc1IDcyNS4yNiAz
NzUuODc1IDczNS4yNV0KL0EgPDwvVHlwZSAvQWN0aW9uCi9TIC9VUkkKL1VSSSAoaHR0cDov
L3d3dzguaHAuY29tL3VzL2VuL3ByaXZhY3kvcHJpdmFjeS5odG1sI2hwZGN0KQo+Pgo+PiA8
PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzM4
Ni40MiA3MjUuMjYgNDI4LjA0NSA3MzUuMjVdCi9BIDw8L1R5cGUgL0FjdGlvbgovUyAvVVJJ
Ci9VUkkgKGh0dHA6Ly93d3c4LmhwLmNvbS91cy9lbi9wcml2YWN5L3Rlcm1zLW9mLXVzZS5o
dG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQm9yZGVyIFswIDAg
MF0KL1JlY3QgWzQzOS4xNDUgNzI1LjI2IDQ2Mi40NTUgNzM1LjI1XQovQSA8PC9UeXBlIC9B
Y3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vd3d3OC5ocC5jb20vdXMvZW4vaHAtaW5mb3Jt
YXRpb24vcmVjYWxscy5odG1sKQo+Pgo+PiA8PC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGlu
awovQm9yZGVyIFswIDAgMF0KL1JlY3QgWzI3OS44NiA2OTUuODQ1IDMzMy4xNCA3MDUuODM1
XQovQSA8PC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwOi8vbS5ocC5jb20vdXMv
ZW4vaG9tZS5odG1sP2Rldi1leHA9bSkKPj4KPj5dCi9Db250ZW50cyA4IDAgUgo+PgplbmRv
YmoKMSAwIG9iago8PC9UeXBlIC9QYWdlcwovQ291bnQgNAovS2lkcyBbMTAgMCBSIDIgMCBS
IDQgMCBSIDcgMCBSXQo+PgplbmRvYmoKMyAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Ci9MZW5ndGggMTAwMzcKPj4gc3RyZWFtCnicrV3bjm07Tn3fX1E/wCT3i4SQ6KbhGXQkPgBB
I0QjdfP/Eh6Zc60kwyuufQ7o0FKxa5Snk9iO7TiOu3LOX07++yv3/Fh7+PrXP/348w/8q4+1
XfK/9OVri5f8r3395d9+/MvXfwvAX835Nv56+VH+1n/hv3/+x6/7h7/88cdf/6P7+uP/DJK1
5PENIfPv4x8ckPcPgvzdLz/++h/cV/v65d+FzuDMf4XyFcLXL3/68TfO+d//7dcv/zl/F92V
ktCbgECAcJXq+wLIBKiXD96fAclfubp4/kSSqenRINCukMLKY9wBWXjsPi2ARADhMbl1GuoA
/OGXzzPmY7pCL8uow+92ikLucjUtTMXIiHwl7xaEU4h6lRiaQUNG1ktbEDkzIhONTLPri3Da
FjbCPzAgXTn6ZQHS7xlRrujaMn+JJthXd9VcVzY8I/IVXF0AlQH1SqFXY75qv0oOC6OBabRM
NNRgW79abas8F0L0dMmErgLNa9/bVWtdJbbtiODiFUJZJixHRsja19zOow1OOO1tkerwd4Tw
hVQvMR/Bke7xsoSQL+d7Po82hH6lTQYVp9Gz/nVGFFZAmvUg+pRluAuCRyv65GL3xleScNpa
NDjN/qreGdYsZOG0OEOvQ/FX6sUbXyli0Pw6Y2yPQmnylWYMpYpJ8zUYiy9bS4vrhAUeSkuX
30TMO0YUohGZRmc+1GBFXYgGIaJzzEdlRLpKyOdViaILu7XlLUDs1yWmYZFBNmLRZzFibmWD
tzpfiQavWwz+6jXU87KI5bhEneJ5WWKMZG55SmPMYkzjuvuQeETRlrLpk/qKaEuvqwWKzGnG
jK1WLBRGdJmxZFjkKLqw02DrEQvzoWlgxlYXJDIfFTOWgzEfogwpeGvGxP/atzDFh+wd+7oo
KZS9oze3yGnm0fZICLZioim0Q/HekVzgHSoyotIOxWubfCIaPNoksu7FCp9VXzwuosGKnUTW
g0/tvHIJsp6dsXckyHpddU7REP9RTPaCyJ0RmRE8FvG09q8oH1T2jr5ZdcWHeFoxribIMaAS
CVbKJBvDRiLz2hfhs60ymMmKpeoJ4X7HiCQu/WqBWAYTto6eViklO5egLSk2QwZbJaedPyI7
B3ntPBu9sNtA05GdZ7fBMSJK7LSaKF62LFsH0eDoAVvH7npw+OAbuR7u92b8IBFXrfm1EbGR
eEKuiWBX+BVzGYh0r+CCYHPW7xWcCP/3Oi4rJa2ID4FZk2EbiCLeo68rH3/Hc8c0FKIyH4wo
UY2F5rTc0rgAyM+V+EQE0FoWqE1JzZhSURsRV298pYm8xrJORyJxlE2GEByvySaTW94Wn4Re
9CZkY1GwxcBJWSiQYklYevWwSxiHQa4whL/jh2ptUsgBiIdu9W3pVGAI5UrR+o5EMaFsi8dL
40MSl3tfPY6UQ0UuphtT7yWQadhYlwFxhCmRTEDsZ0yuOGcVwd9ZCmTWGKLCYVGtTmaCqWTH
EDV14uR5MiUqxyCRKKJIY+qKLEDLwZq6IiOKadXipPIM5cq7sdCJBvEodmuhMw1BPtSiJVFV
fJtWszW7td/JmWXqSMt8C3fMYSyAxE8EUQrQ3R1TGLMrTiOz2xmiRqRCfdkrC1kWDuYkzBoR
0HlEwTWGsEgFr0fEMaG4n50sEPPiq2KXPyQOqNstIWtjCOWODM7aGGS77W0XTB607KYEYXkJ
sY7s1VlcQkRiyVu2IyRklly0VjG1q5ZuiW6A1vcQDB0J4qqK25wMTQui9QE5irO+htxuf/a8
3yEXwlQ4fSQBYCnNGpBs3q27zRjy5MrmnHOqFre1DN96IgLLU3O362yInGzPIjDZmjhxfJ2r
zVrn7i8JBlZWeDwdmbttL2LfF1mTXLe9iHNmwujlwrYXaYjYubptNJxqQuaky1qbEBxjbC6H
SoxIsBg2S6giX9l/Q93shmNuZf+tYbMbjj8kEWVHdGP4xkg2bhLH+jHSJ8hqLZAP+RO3e6W8
iFFCRt6JVAYlKgj76aJl35j2WALbSjZhUfZWNqfFDFFyfVIEy4rRHGTZJOPuDvFmkMXjHQH+
AnkfrfyT/PfnH2Kd5f/+9MO7+6f/un/ysRb5eftp/PY/Xudj4xvjcCdkMXd/JQ6ciIcEr98c
kvkYkvim7vnpfVI2/ikhT2AdnsE32CaqgU7sh2i7wbp5v0J4GnsScdwhjoxKl70jhLhB2E2T
zdvVHcMq5n0Qm0EYdkiC13SUN90VHU4x4XhLdKiaPIuGtLJj9BEXhGz/lvYcZewppw2j/EKR
xC6SuGC01yd7hN/JsAcqAu1i3VZL+ZcI0Rij/L6m6fAu4GX3LM5c9uCzOM07Rp1ISPDTEboa
U4hTHBziGCyHCEu0Q9QpjRgNGZbJsSy6WLkNo5wCxPyEUXuxmDSmo1wHHDuKv2TyU7FL7hjl
sDbkwneMmsHWEHZbEyi7et0QifdA2bF3GioLLRt2tliVvdiatQiPeAMwC7GpKVMbjsSerJPs
wMfsxWmOyRxMlmA57hi1Rcrm1lI3lUn06IqM4W/JZqXoqBR/U3R4mZHCZ/uokrDOK/uoEtuy
1GzT0x8I45O2ffwt35XtYzVIQdyM0orJTxCD5HcMH/gkJA3FMbAEDKn0xhjOhEtY4JorJqYi
GLVNQJIQnM0NG2NZTkVHjb1nZW50nljMhGvmPoRccqUNhHlGrjgwZq82US5GcrcT9KyKyoJf
saW4QvjcSXzIxhCaAwmymApvobIiHUdTKxVOcMb79GqF0ER295LX+SF2d9JLXCcVlVuMsjcS
RmUOvaKjXBBfXmJ/5NgH+Nc0N+yCIHt4i/2Z55hfqjExKq2HOgf3iZ+jeKBOyPey8fck849/
M7zW/p6Vo9f6hnDMN73WSeXotfbj9E+v9Y1RHqB/b75vDFsm5HdbyXXDsOsWnaKj0nGy+zE/
/g+8ROGqfUjweVyyJI+UT344aZfvrbgf5aXsv+a8oDg3vEq6JEp01u8YlbKG0jLmQ5qyZ+KH
6YgVLbVva6AyT6PwKe/f4gyKqxLCt7Bh2Nny4wjMXAOUP/WwY3SCEAVhhFF+L4rsStvGrlKE
OJUJ2/yoNCLUNNRuralEsvdxmDU/cI7FJm10VIkRzBphPjnHcZdR9S1xjlNuppjCOe6M4URg
D5oOz09/iniMNZWdXDyiHaM8T9fE88zmmkaPxLDb1jRxVkvMvu/etBcxYMev0eRHzH5EoZ5F
R2xKxxGmMYfwqBNhVJ4HOdnWo/ktnLPEVM15hmy0HaPyaCIbGZnO9Vt8lt3SnQ21+OnIEUV7
3cW2iKe3YSIXJci6i1e56Y4qoMC6E0Z51GF4jMGaZ3jLLQ23YWLYe4/iEhBGF68UNS7W5VFY
wvyowpCg+Xm7DQCJ/Y4xvvNZ9//3SmoFMSqyF60OgvsaR7cP25yZkFUtza8QtarCdCthhbCL
L/tfGfZwgZBtKRJwVIKQejXZBWXMK+L3c+Dyz/VLQjaZ6K+nKt4a8Vyo44jPcvwe8VzK44iP
1nSO+GhQ3iOeiG3EvdGIx4r/RCoTcUaeERAzny/v4WLlY2IAiejhkeRjXCdG4w5F8jFEEpsR
GcI501cQkY9BeG9XJohjp929PLl8jA29q/pT7H2Kh6rGzd4RzkhoVCpHKTJ5R1j5GM/i6kEi
jPLosJswhr8lYWOq2VuzDA/VR4i0+tY5GCkJJw3b3/xMMJLzG02ctgY3efk9RyJ1/S0X3KII
JYx81oJRpR8478kbHSUH7whjwXDh/zvCWLjlb4mn6AjD4TqiB0WHMbI2TEeNvbQn92GMHZcm
UijbuFTSOys6an6Q9M47RlWLO3e1vn+Lr2gE0SVfetow7JV61La7jY4y2OMgEEGxwph5lnzc
Aqb9O24B0/4dt4Bp/45bwLR/xy1g2j/eAz7YPyP6ftu/o1cO/bmjw2XYbEd9EjthD2omUfLR
o5xJFMXP2d5gnWvc+PsZe1N8OWjobW+W31dtb+Zv9Zz6kcKfCHUJ6Z3PWDCscb7fZy0TwuKI
jeBWSgODGy8eymQwnLF57RglBK8CrwWjD+FeCdKFDgsBKvUZow7hXglSxY+puCXH7xR3Qo6K
OyFHxV0gJ8VdICfFXSAnxZ2Qs+IuZHgeHdIECAnOn5rZzwXzYeNjOs/0GUoZxF3e2PspnazR
1sn373lnQaoxtr5CPqYa245RGy8OyAmjNl4ckLdvvhVwF2DHqLSm6G/tcRuWSmsmOGBIRy78
qCpPOFyEYTsA/aVvsZsFZ4H5UQf/tWo6nNYUZ+FbOj1pOup+Y1B0lEMxNh577EFMqeJniZd+
U2iMFPHniB4cNSSNJkQl3pC7jGWD8DEt0pIEUZdFrppEiRYI+/hZrH8nCLmIFbcwCNLm5Mg/
ZxzqiA/VfiJ+rrJ3fzctb8h5WibkOC0TcpyWN+Q8LRNynJYJ2aalFp6WXxNkN/zbx40/vU5e
JoQjwPw6eZkQTk8Vf1WHbP0Coe26lCeMXD5Em+L7vG+hQmv2Pu9bIEQFJwcjzjxT6f0JRSdE
W+941UBkPljvwBi2crAG1W1To28CiJhFcT4MlofbSRjF8yiY+YaOyGshjA7DwxVTaBsd3slz
lR1XIp2VDltm8dAyYdRBj3ho4u3Hjc53LriEkDXUbd5/Zrtv8YWOJOK4GzZi9gnRB8Cv0p4F
w7mSd+w/MfoGSnlOKSdGb+evmrjlW+oEst4FVMunVHqg3E79AuFlTO45r1u+9KFqLhHms1NP
dD459TyDLJ7DiMSjNomdvH1VYxFQMUcYfQTZFR31rS4SPgr4lm+pBIP4DAhTzp8aRXU7hA94
UVP3mKzjBKNzwmNrphTzgRZq6saB6MLxp6I6xqiKuaLpqM4FWdNRFXNR0+EZRP450Syrg8N0
e/dn2UItPX9KTWF77y/n6envDeY49CgRN9PR54ZFTw+fZ3nRPReaNYVRto9EGPWtENGGZMfw
uZiIxohxFylkSKxX2yGcl4spvjbOMze42vyNoEb0v6HZURfkRwV5iiamlic0MvgRybhDI4Of
9nLZl2+p0z5cv3LRoiNW8sohbd9SN1TF/ofUTDLiD1SHtKXBjqxWl5B8o8NleKldscRm0ilP
5waLZdnHmY7iGeX7viUTIwoYatimh5NVuISdcaJkLGnGVty7ufehNC4QRpfGVUWHlTRLlCD/
M0UsB4kBaFxsNLKEEjx2Vc4Xnzv/hoHKsqaJMBxM5FwUHcUzbkolosNjF9tcCcP2O6NgQ3wV
y8nIooI+ut2Ad8Y0Ufcdw65Txi0lNG7RG4GZqWszSmQJePt9M77jOsW323cMJOHmrr/n8Vds
3cgYLxBSjVqfysF2jCJxJjLM80SQ/CDXN0r8J4SXHXmQtkOUbwSfhjAqQnAihaNk6jxqpJ19
3TlWEYI4uoUwymGWrSvg/pQxLERHqewY5VqO6KjvK6ncYURH3RQIdDhjOt/mJ0t4Sp/m3/xU
xNLfknuMWPopebFELBNzjlj6cQFmxNKPCzAjlvmtY8QyP3WMWPpRrGbE0o9LNCOWM8czYjlz
PCOWfhSrEbH0k9YuEct5EWbE0o9aOSOW87dmxNJPmjsjFv7Ub09O9nTMJ4uZkIleIdrDvUbW
foVwSb1YvoQtZoHwVhWffPwCoZGLlR6HMmdWxAh3tyHYwiKCGJm8M6TDTUSwskBUt4t4RXRL
MbjFEWf18AEn5qPStVrMFUChqAvbzOjSjHGl0Zw9L7Fcrn4j86FhYmUyS02YH0Nu6DMoOvN9
cre/JfQsVkfjN8XqqHZTrI7KPcXqqFBvsTqy8harqXFHsTpCplid7fQUqyO3i1jZtvwWq/MK
TLE6m6MpVmd+3mJ1tnxTrNhQP2LVy68Qq+DedXu6W+ctVgtE10ILweX3+qbRfRqwkmAvtl1u
pPEXKtwc6DkNWCHctyfc8m3wKjtG2JlVDkKwuMC+P85QDDZElC4vq7pitHMWrjSa0C28sqyk
p9GBxQ/OUXxIGx0lLOjvk4LJT5Uwq/R97FzJ1Ef1XLYWEg1RR5huyYvMYYXPt2K4c2YY13d3
DF9QResrTzwv+3YYPcegcKOb6PdK0E8B+FSCfornHiV4//6sBP0Yyr2VYFI5KkGv3yrBkdeX
EvRTEuBWgiMXixIc2ViUoJ/i7UUJJq9nJTjzM5Wgn+L2RQnO/EwlmN86K8FxIRclOMvLVIJ+
ylksSjAxZyWYPG9KIFHZr1AC9Od6oqvD6fECUQMfSjB/r25hFOTD/AbhPpEy5LJDVJ2Quxpq
vI0PQU/Qr2yB8GLXJpts3yCqhxvuzu2sqJPMMLbqlQgLJxJh2KotMi/PYcWw4L08B2NmXp6D
MSbfkJNEd1yDDHJK0XVrWOgwFYnOJnc+u7tGVEb7M3LXT5d+p9y9IQe566ca6il3E3KUu+NX
ptwdPzTlrp9qdKfcTSonuevHwvG33E0iZ7k7k5lyNzFnuTvOzJS745gWuTuTmXJ3HNYidxOz
yl1w/tfIXRAxfeSOre8Qqvl7da0KzTpGO+MJ4SKXgBqGDaLypO7qqKZZII47a7a7pnOlolOl
nT7Ecoe6SFd2drno0Uus5DdedG5MZqXGfWLUTQxRN6Kjr2qjYrjsg/pwD9jn8SrCpMPb+ijL
cH7DfJDO8pnOIzLI/cgUtkHoW5GJgrJEZv7+KDIL5CQyE3IUmQk5isxC5SQyC5WTyCzsnkRm
+dBRZBYyR5FZMEeRWb51FJmFzlFkFsxRZBSdW2QiDj1JZNz4658qPgvowvlZhnClBDnNBcIy
AmuLlOYCURmYPgosDMS4lB699Z323BdeqXDK3d3XjlcIF5blu7hqheydmfXRgEt30dbyNz9x
NCBK8UZzVNSGZs7fczveeB9HGSRwqaAyRgVOBXf+okkHjTcJozti9LubxEqHd1RchsJFDYuO
RBDe7RjlX4nOZLg1E6LUASXQREYXyD2NPlaMKn5zd8MQ61vlLrmwPlWfkgtr5PUpuVhHrmK5
eNchruyoZgli4STAtPgJaMNcqzcxaJYQWzC/FZyIfdynUL0F00SdCKMaocr8uFI3DMefyV+d
MLpLmCx73jE67yFece3d5Bnt4wijGjMUNIrIm8Tr9qH+KqntssGhAM7VCaPKz3CuzpgPfcI8
mmKv31KNO9H6qBdrDiOuruZurldEj5wW9nlWxUq4/bNjVJiDq6tp51ldkIZsoDmBhUnor5dM
2UDvzdCSKWOjsyZhdCME0a/ovKUXeH2k1ZzNsaP7bCzFXC+0fh9vUxnjwutUbseocxS8IEIY
1biiI6CM2fpWwsMIfseoxgNiNyJheH7QfqzlZtoo1E/lYElhiiJhKQZrBhMiafoSX+i+3wIh
DI8K50zMMfOTnzfRzkoh3smVd4i+ipDUqFTjhvFeh70tJfRZjeZmiwc5MlknvlmAIyvb8CQR
nBJ6shY8O9QKpmYNPIvgtEgbF/dTQyVl9qaiZ/StcztGFY1F5D12DCtERillCc38VgqX9ztG
FYShWweNS81PxiVAvysozw+6dRBGjQs9DRmjir3QmyBkSyXQgTf0YBqDjKeNiI46eu3PIwuG
TmQ8fEcYFR049C8o5kZR/HhGy1ScIvIj4mNugGX0PdwxrBYF8kMY9S30bqcl5bgo4epyM33H
InvS/ZbeWS2K+Ctius19okgQ1lo2xadUsd2EYbUoFS9rFNOwFAnExB9J5rc66j8J4xnTNR1O
C0i03n3Y92Ou3fNOzQ+LavVZrQUvqUiX7KPRNAk1iKnLth9WY7wb8ht+YU0QsW7utVV2HEVH
Ybqmw8UNeOmGMRx+I4aJrppzWJsau04nS5BOc6gKKfEm2nhA1uAZD9IwhmS1uaLo8JpK6Hal
nkzz0xDn5NwsXRZXF9vO/i2K3xreeWEM84PzsbT7hepFoDQeBTPNWEManOhw3XjDI60hmrFH
k3V332HQsJ0xfIbbiuKH5achO1O6Gb81pGd66JZsdKRjGMOJIMS3hOE17YhhYvsU49lpnXbk
Pr1SMu3I2DuzM6lw85qnM+tKRSV2ntasK0bVEcVX6m5iVNKmvDIg7TRNKNy9MyDttLIjZxOr
t+bGp3h3LreGNZI2hOH87Uja7BiVbYHke2dPT3V37fPKs7r5KFo/Hl1dMJy1geQzRlV9YkcY
zsuZH9x4DXHjWWUK0AaTMeokXyQ/oczqPIch4JG8HfPptJ/p6Fd8RTQ6fUu9wYsbAdFc94B+
BYxRt9BwSSjtPHNGBv1Gci3mHKLygjCKZ3F+G3+L5xmvNH33LbSvZIx6tKVc34gzbqHdfttx
5HipVj4ULI5Hzqb3aBmE8dJsCObI0Q4+pFwsizCaV44XoI2Ri3+TfQrWDOI9WUcY/RosLMuO
US3s0ZgyeUtJ8dyrayVZQohu8DWR8DCmi8vhWrW+hW7wnfhRta+y6okxnJTwuOJZ96Gr3pW4
4lnNKUwBhmXHKJ7RaWE8ZGzwnOLz2PF5SRPOFAmj+MnlftXHGjse1U7ZFLFU8B6V38elrsWV
V6puYjiz0/CQ+I7RXeWjpqMSLngQojeLH3SVby6ba4H3R0V9imUSxgukNZrzjKtzMewYlZUJ
Moex70aeawVjlfCBMCqbkjUdxshGoOhwFqQETUdlU5oYVWeaqFyjGruaH3EAMs2hvjo3wuFu
zmHDO6ChmN/Cm34lmL5YwX0ht4kPR0UF14Wc6Y4UFPvlmKxRFXERxitghoQVFFX2blq6gmA4
5d3ychIEwTBj+Ft427K0aGl7yXD77BUtGfmoaPNcyhVdNy1vqTiU2F26eSYMkHlL52NgkdzJ
/tznxfP36lD7FVUYkPoc8y4Q1VDldVw8MfwCMB5QGL0YVwy78bIrjZ6OFubVX9MY9TguJoxq
USWWh+mo9lxwQRmj7polTUeFFVHTUYW9XtNRj43mu2/ouhYqrGjiou9zqNxUsQajlZ+FGYEw
rak66PXP8f6Z59EVn2RDFf+++msaMhZE15WM8bdwxZP4UQe0OT2158u3VHOL8FS5Lxj1TGS+
H8IyZHV0rmjNHFa7mzOuEA5gxC8crw0ZHI9e9oRRLrFooKKjetA7TYePH0N9nnQ/G42IZ8Xx
YtuKUS8w9vvFJmMG0ZVivBVh0UE4gPupK88qZBCtYH5UdS3KKGgtVFcK3M3dMepbeB0K7wpY
38LxLN4VsMbVw+VFxs356UV/68PrUJEwvEsiZhCB2fjRx7Pi0/TQrHVP8AtHmclCh0uUETOM
MpOzPOOANjGGj0RxyjZKUc5aOvrdFx+teUY8wPzoNhni+Ti3f4ssZsKb7URHzWErT5hsjAvr
PkpjLAxq9lK1voV4IHa3zyH3f/NIxDjTAUA8IFO4zyH7sjjeIIx6vxMvniNjuvLMdGTd8ygz
MXjGc6mEUe0tclR01D2lggP+fSn4ELJ0CQc2CO85iAZa3iDqKFMc/ZhNe5nx0i9e4DVkGT58
dLssK293PNObtjnm9L7YZU2HvdSAWPIbzGgaTBh1ItoVP8ojHkcbtZh00BqlOnPXLmiNwhg+
OixZ0VFePI42fPEf5lk89NvfzhJ11atGvI7y66pmS33+bqGuD0r9/fLKuookVAXtPsrOJbeF
raPR4T5adfCG1DDPGh+8eYmP2q656mAyvLJg552oigVQdBiTnKbDh3ypaTp8MDn8vF2q1MEk
Xrip38wPkoTBlpiKF25oLdSVx9rVerFG1VYVHcUPSm9IOtV6dTTc8aaX0kYXs2p6KQ0eI8JU
wyPCIWgkjDreCnjg2u9Gkiub4TGOKn2D5+Sewrfz/Miu+BS+Gd/Ce6J43NmQsVYkRmIMjx1Z
QsIonqt4Mj3a84zLrjlFS8aaBApl5EwWDB8ky7p7xqgWqvnJq5znsDs0q9ox6rBRYnWxuNGa
wx4SCm+jNfYeUA+ze56Kn4gmgTtGdToXbzAzhvmRdVd0eH5y13Tyy/obOZhwsmhPDiYcZ+Dp
wbtC9EXmu6HNglH3QUaCheiodj9d0/nQyie4srOszm2fNokLRt+KftokWnTS0yZx5UclYZ42
iStGtaMo9zN/1rfK04/K4rnk+5k/a37q04/K4gddf/Bk3srPp5e9CaP4eZ//Lt/60PUnMObD
Te7mxmZ4/Bb6n99njmdRDuiYxxjVhdRrOsyzyEa90x7Hecb73/fp3Fk2xhOHjOEkFc5/R3X7
ws+xat+Yw5peruNRB4MY8k4Y3aq0vhyKSYfPo7t/KuDPNiEiiUcYlaqBc3c7ksf5GSfAo0r+
zM84Ac612Zgk39rNjzoARtH+BuFwCp1Ka/TWBKKsnz6kmofiecM75DrPnxj6zhiVEpK56cVc
z1jwGPiOUSffqOovvVn2YBwjE0ZV4+MYOZpbRZS4JBCEkwe479HDjuHEiR+pb1OzxgFxcbtm
qYQQ+kyQlPLhpoiFv12/47BQjV8Yo5o+OUVHHxBL0Jq/+RZKqhnD30JJdf7mWzUrnnVCKL5c
2vktdaffowmwqcUot/e9mvOcJRzswXVLi7PDnaJkfSqPtil9UxxVlS7GoDBG5YxGu5NishPx
KEc2lSvH9lzmOIuhONf3DYuzcco53Pc0zguK5qsxBkt2ckkSMgVLibNEi09EcP6SGIya6FPq
bNg/l0/Om9Y4Px6dHM7mIHcYp5wsESwOxmnHqByNbDb39ZPzhlRQTh2TxbK4MriJZ/ppBenG
sGPYDykxPxdQzv6MSLqiw0GVaJ6mo6rx2xW6y5baIPV0X/g4+w8Sd8j0ZHNJkRy6L3ycRaM0
dBKu5jZaOg65doxKbDj3XPg4W8Lq8NbPjlGJDV8VHV0h75+LI2c1rqPsNO8iRj5hxVtIjPlQ
RR+9OT01FdEKM1JCism7kix7UMtIayRrtSpuuYdgRi+os+9p91AVy6iz7+TFkiLXhnT1Nzx3
5KuLKfFIMTlvRxTNva7DnMc1avE7ecNcxCBGIzGG0yxIP8Z9vXRLMYl+sze1q4n/KfuoOc8t
oYCsmhrYksxPMQOKluEeNHOaG1p5l30f1Vmo/lzTONvmhuClh2qJM7JQLu6OteIZQWuLpiJL
vCGGbseoLIuIRmQMZ31QvUoYNs7dd01HZZjQgjPtBoFL+iNa+VomrOMysblx9ZGVzqaqd1nz
+6rHMn/cDjSP24ymf9BLfK6VGOPG8xslmDLYa0ED02qZjN6QWaNgnel0cb39Rz/Dzpod2228
r0QskFOziwlR81QlZicqH3qiP0Us6WSBvHevwpJ0mgI8yvwUlhzZwcOl47mwBcMHO+Mtv3G1
YmLUe3/IjXwzdD+OzGjs6lFfd9VsjqrAsxlCPTHqRkS5X5Bcv6Ta+sa7bfdKRz0N3O6nX63V
6uHpFnLmeZQ33RnD4+wEl+6HVVY6nDnykIwREhz5Qf/DJ2PI3/pN5XyjpKru9FTWa7wFtGN0
74x0Nww2Mf1VFDMxquyqvgp5uIXNxNydiLa5VKVQ402xZELw0lyrpsC+nguyIK0obhQGB2Q8
Ks7HIEtSdozqZuElBCv2DOKZH6ajvoWDEuJH5fKiv0qxLWLEARlj+KZGjlcc/f/OSzHKpVw3
NTqW9HSmWTCqFCreL1tZ89O8psOY7jQdlfhqmo7KfCU19tl1b9W9u5s5Gqccz/eH8cD1kK8/
PT+jqhk+AppajyAOhrEipVfhCA/M89O//hgPy4y0dH3hX38/jhRHD7Z0Q9PTn+U+a0T6OK1/
J77AqCheqcvEp+RXHuLKYnzxDih+fn1i/t34TlipPz8Nhl48vPFvFuOb93gP8zWo+LWM+fV3
c2Ym9Tl/Lx7aymKbvP/Hq8Xdx+5kyDU/G6jqKnE/HLVAPrQxvm9TLhCutoniwI+9qJ364NXR
qqWtEF2FcLURJB1ZGS9j+v077J761zbUTm3wxgs7RIV708nO+ZR2tlOrPPTBe2xnO/bK8297
NunQy3jjEXem8+79PqasL8rVlXJ1pVz9g3J1pVz9rVx9V66+KldXytU/KFdflauvytUX5epK
ubpSrv5BubpSrv5Wrr4rV1+Vqyvl6h+Uq6/K1Vfl6j+jXPnYbxHOaTYB40T8/Huc6tmA+uG3
v8nfQny9fYp7puPWZ0AOPx97XbbnfZwFoqKZ/HjIZyo9Pm7Ledi9Pg0TJ0R1wUOfrkRfUtFM
vt+bWTHqZaZ4vzdjYSL6Z2A3PQ/cR/TP6Nu3VGyAA73RB+88dFzFuD2AiVFXQ7J7qgAMOnjh
qe8Y1Sa/1Kcv38Izf6tmxbOqFEAjpeA28VIVGSjnYgxfNRCLG1Ks1logVqmt7zx/uL0dGKMe
zi5P5YJaL9Gvt7aEcV8lir2x/aPspwkf50abCce/7CYcz/axCR9P+W0mPPuXCcdPiwkfv3iZ
z/l3LyO7Un+ZyMlDXFmML95vE549m3D8y27CUUvNJhz/tpvw7OOb982Ej1/MMbMJX6nP+VtM
+GSxTd6/MeHhOxN+Btwm/Pj7lwk/A+qH3/6fTPibGL+ViZtVI60wIepAoD+1SguE06PlCS8W
CBlW2TcDQXQX4ajJKA/reYHP4AY2vPe4c8xVSAEXi/v+LdWNuD3VQ+elwvsWd6XSMsefbPio
ilrGzrZO7HNijLLPTdNRVVpV0/lknxnDeSvZuEuofcOoJ1OK7F/em/Mj0WlxO0btTf11Ccei
069cd0zkvcCn+xVDY91RpRXi2N+Pchhk766MUZVcXdFR38KDMM01S8ZE3K/s4j7Pak8JYTTO
bwVPPpk19XjhTtuy/H54gesV0uVww2Ui1FGxIDyyshOiDrfRTiLsEN2JfNwQWhAU8uCSBxFh
PcIzf6Nl0sKtum1b0dZ0/5JKRmdFRxd6RsWOfnI16ZmWYPVhnu/C4BBg7GVviLouIyEzQfTO
oKioKyyvEroJYacJZ6FERZeTv1RyUlGV2VdvyPsvVLjwONzh+4LgNRXZaSPqnBA21bir5WK1
5gXbQmOMcu1RnJq3bwXl2ofn6HYZt3p1oyuMamAUi8bw9oJnj/GEsDGBaPBURx+EhR+1vfTn
pv9Ch8eei8LwK+c48GB+fp3vkejx13Q/kWytCWxH6ZsQqQOdioa0KEZc1u3DVtR5bbkzucTx
eAJUT4EMb2W2fklg5lwx8puHEaPdlE/+/2sGUb7cmR4feLj6NClaRs4YjxdoyzaD7AgiuLkb
ty0Y3mBjU3QCb2ipKjpzmtcRVTjKw4L8ymkehraHF5P8uIJEB35sqEdIKVcKyK5NiK4AQu+e
HcLFNLj4NUzXG8LmBAWMCW8cTMiH1xUYog7yq4ao5CQ6Z4zwaWKU65yeEseFG+U6uyuW4RZP
OsqOVoVRtgR2lPj5P9kShIVMTx0OO7RzT9vKK3cdN/pQD7Ismrp40V570sSwLclPYlpNAWzJ
wmz8zbZErHEeFSf/TzMIR47pKWvcnpvcy8gZI85DG1eDl1lW1rg+1RULhrsk4gUsoqNsiezq
TGc32a8RRbYl/yT//S/R7h85CmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iago8PC9GaWx0ZXIg
L0ZsYXRlRGVjb2RlCi9MZW5ndGggMTMyMDQKPj4gc3RyZWFtCnicrX3bri07bt37+Yr9Ay5L
FHUDggB99bODAyTvRuxGkE5g5/+BkKqaVdRgSXMHO+g2vHqtsVWSKFLkICWFI+f8I8h//iFc
P9ZOP/7l77/9+2/625hqO+T/+EesLR3yf+3Hf/z33/7rj/8lgHi0ENv41+ZH+bfxh/7nv/zT
j/OH//i33/7xn8KPf/s/o8la8viGNPOv4xdBkecPgvzj77/941/Dj/bj93+VdkbP4g8qP4h+
/P733/5TCPFP//nH7//j+VsKB7O09wAIAHSUGrsBZADUI1KMawDHI9eQ1p9gmZqeNg20g5hs
H9MMyNLHHtkAGADSRw52GuoA/OX39xmLiQ/qxYya/ji3KM0dobLpVEqIyAfHYBDBIepRErVN
GzKyXppB5IyIDG1kmN1YpKfNdIP+igA+copGAPwnRJQjhWbmj2GCYw1HzdV2IyIiHxSqAVQE
1IOp18181X6UTKajhG20DG24wbZ+tNrsei6A6HzIhNoFjbLv7ai12hXbZgSFdBAVM2E5IUJk
X3Nbj5aC9LQ3s6rpD4CIBVSPsR8UQPdQLET5CLHn9WiJ+sHTGnQ9TRH1ryOioALCrJPoU5bh
GgSOVvQppB43X2HpaWtp09McjxrDxppRlp6WsNFrKvHgXuLmK0UMWrQzhvaISpOvtM1Qqpi0
WGkjfNlaWrITRjiUxkecllgMiCjQRsI2OvbDDVbUBdoARAoB+1ERwUehvJZKEl2YrS1uAWK/
DjENZg2iEUsxixELthu41cUKbaDcEsWjV6prsYjlOESd0losKSUwtzilKWUxpsnuPrA8kmhL
mfTJfUW0pVdrgRL2NOuMWStGBRFdZow3FjmJLsxtoPVIBfvh29AZsy5Iwn5UnbFMm/kQZWCK
uxkT/2vewlw/ZO+Y5eJWoewdvQWzTjOOtidAoBUTTYEdCvcODoQ7VEJEhR0KZcuRoQ0cLcta
j2KF16ovHhe0gYrNstYpcltLjnWt57DZO1jXerU659oQ/1FMtkHkjoiMCByLeFrzV5wPKntH
n6y664d4WilZExQQUKEJVEqWjWFqIqPsi/Sz2TWYwYpxjYAIf0QEi0tvLRCuQdato7NdpWDn
WLWFU9uswVbBacePyM4BXjvORi/oNsB05BDRbQiISBI7WROFYsuydUAbGD3o1jG7Hhg+xAau
R/jTNn6QiKvW/NmI0EhcIdeDQFf4E3NtEHxK0CDQnPVTgg8i/tnHZaWwRbwEZk2GvUEU8R5j
tf34A84dtuEQFfuBiJLcWGBOy7kaDQD8XIlPZAHuxKJqU7htplTURpZr3HylyXpNxU4Hw3KU
TQYQGK/JJpNbnoQPi170hvJGKLrFqJNiWgDFkrD06DSvMAyDQkEIficO1ZpWIQYgUXWrT6Jz
gaEqF6fddySKoTIJD0UTicXlnqWHkTJV5WL6ZuqjBDJNN1YzIIwwJZIhjf02kyvOWdXgb70K
ZNYQ4sJhUa0OZgJbyQEhburEyYtgShzHIJGoRpGbqSsigJZpN3VFRpTYajE7nqEceTYWnmgQ
j2K2Fp5pIPlQS7sVVcW3aTXvZrf2k5wxUwdaFhudMcdGABI/AcQpQA9nTLGZXXEasbsdIW5E
LtSXvbKAZcFgTsKsEQGtR0ShIQSXFEU/IowJxf3sYIGwL7G67uKHxAENsyVEbSQqZ2Sw1kaS
7ba3eWHioGU3BQiuF0p1sFfr5UJJiaW4sx3EyiyFtJMit6OWvlu6pFrfiTY6QuKqitvMG00j
0XpSjmKtr5Tb6c+u9zvlQrAVpI8kACyl7QYkm3frYTKGOLmyOefMddfbWoZv/SAI11MLp+u8
WXKyPcuCybuJE8c3hNp2cu7xkGDAdgXH05W5m/Yi9H2VNcl12ouQM5OOHoGmvchDxM7VaaNB
qkmZky6y3kI0jTG5HI4YkWCRJkvoIl/Zf6lOdiNgb2X/rTTZjYAfkoiya3Sz8Y2VbJxWHOrH
oE+U1TKQF/4kzF4pCjFJyIg7kWNQkoOgny5a9sW0p0JoK9GEJdlb0ZyWbYiS60URrBdPlk0y
ze4QbgZZPN4R4BvInVr5Z/nPv/8m1ln++/ffYjh/+p/nTzHVIj9PP42//u2THxvfGMkdymLu
/oFyz0eV4PVLkozUi4+ydKRl4idTNn7FyhNcv0qllc9vm/+lLLLP72rq5+9SztvUm+6gB08T
zdoj0cArPMXQMh+taN7kgeAOVtRSp2QhaJTEJ2rKBxkExh3x6Np5C/kLhA3poLkRJGsksEjw
GfTxxMWQ9dt2ndWwoUalBM2Y0YWjKOpHcddfke7Boc7t3It+yEXGLBP3kdL5vz6ikoXnBVVF
xpegHFsh20vtFoJ6KrLMObYJAmKQ/bJqJGMgyPCU5iDYSlX3SnM2BgKCUIqnKGNhIPAh8W9r
blN3UQwSiyKEwazLToYQl7eTrYywGXTrJdwcQeumNxpMIsbFZ6p/gHH9oXSx+Gtxi8IdKYa8
k3cUly+LUzf12QWDxWNcHBddf9y3xjZR8nZcsroKYBLGacofjsy26Y/LszaPcZlWct9yii7h
Ua6FpnawP2J1HAa9zOEKAeZW9FNtz/Ay6EzH00JvlFyswLWlI8d7K/kNwYX6KPkNwdhGo+WY
5lYQUh0EZ0aU3EE83YQQXBNNeZEZgqmRTkfedaT3/d9VdWcArhWJGFPrZcLgmpN40GEcgyMB
Icy9W3OUxT9UUnk9bbpxOMwLz9OS5tbXc6tETwIMrqgoS0rCn+2S0hqO1mgeF26sWUxxpWme
HaukubZW0jQutCPiKiDGfUtCqVbLtsstSWze23YKRf2vbWq9djRhhpg8qbZEDGr8CsfyE6p9
ewJYsCNRs6xDthDMZ2WNQ4dJW3pAYmETQkCdZIKplbhrpYofCxCcPC11GTnzB4KRtUyvgzSn
2u1UqrVPVz5690ydY4v5oy9rhy1Gj0EWS8JIxHj9pY/ePe28MLncNY9mMI7KZY/BPnP0GGQB
JfxIp24uZ1mXZ+6lbr8luukwdVro8seotTaqnXEVZWhPumZuJKI6f6Yj9rGuxQ/L/fxNrUM1
DxqhRed0/vQvv1HRv5Xzdye+XP++q5OS1ZLrTwKV+DCcUPmDbEZ0oj7/TiNbTe/Z1uUn5mj7
kGwX06fvCtWfw/WJ598F/Q6Z1lM/fxoduvogvzvxdxd1hzv7Lj+NYV6DSmOE15jvf3fPjGn9
mb9PH5rtYnv6/jeRjEa2grrEW4Kq2ghTkzhz4wcJUq+Q9B//W/jx5/89/sk+qL3w41vFyLg4
GRcn4/Ii4+JkXG4Zl1nGxcq4OBmXFxkXK+NiZVyMjIuTcXEyzi8yzk7G+ZZxnmWcrYyzk3F+
kXGxMi5WxuWR8fjfzcihOTk0J4f2Iofm5NBuObRZDs3KoTk5tBc5NCuHZuXQjByak0Nzcqgv
cqhODvWWQ53lUK0cqpNDfZFDs3JoVg7tkcNnu69uu++tfvYsTCqLgtXSLcSF6/1odM5NXVht
icUTQDDzrL4SQJwPHo9Q4UNIz9RjlFgaBHrhMs0zgnF7DfFo3OPUCvpk6qtjX/7gt2lsx/l/
Iug0SkhMOy6EVnc9150MNIQuIcbd9EXZYFqeMW+pUNY0g8W8bNMdMS6Err4dFx5n3w66H419
Oy7vJy4p1f4iL3EJRAmSrLaP8ZGfwfiM30zGR37jjM/43WR85DeX8Rk/Pcbn/MOl+ObfXeZh
av0yIqYPyXYxffo+jI/8DMZn/AaMT38xPt0Zn34bnz4bn26NT3fGpzvjY/rQbBfb0/e/fVyw
LzyiM0zSwm2YsIBL02ExWghancxHRAjosSzl1jhZCKpWKWehoYUgSRgP8W/bFpJHKGgRSCMG
cWz71FvkCFs/AkIwUpFgRktJNtMSQz7LTTbzotxyK3UatbMnUeY3zhh38ILSaSftt1wYIqss
JZ4wLgyR1YYYtNtcXDsuLNKkby7z2J0NrK7PvsBC9sWe933WsxyIcSUW3bXj6T8+Qmxl246S
T4DB1aOVDdgO1rJRUC86buWuBypkFdZdf0j2PkaMq0sorp23IxEE/XFJbb4qznbfGgeAAOOO
LLSjUNlpF4kxiDXytssidqYZg8WUsluhOXCj6skrO+ZfQ/Da7kr+9cxRrjttT1FWBrW2G5aW
/VOdMa7AXKvHUEtdTaaE5qCBblxJawNoOywJhktJb8b95AFG9U3SCu9WaMsDpEDGPSDnHpBz
D+jFPSDnHtDtHtDsHpB1D8i5B/TiHpB1D8i6B2TcA3LuAYF7kEJ07sH43eQe6G8+fY/WPTj/
cI85gnswtf7Mn3UPyLoHNMWIKbCRA/Ix4zcgB8/HjN+BHPiWA89yYCsH5GOm1u/5ZCsHtnJg
IwfkY8ZvQA6ejxm/AzmkWw5plkOyckA+Zmr9mT8rB7Zy4J+IEccBlne11+NimYuFuBix2r+6
RA99fLkHgmxw/Phyy29oti0Mw7L8kOyk6fRqeGXnWtOSlrm7YMK6llEP68Kr/eaMIb9gNJ0D
GJdCiFo+w1Mzd8ZuyK4YnUF+a/wGdMbzW+N3oDPl1pky60yxOoP81tT6vfaL1ZlidaYYnUF+
a/wGdMbzW+N3oDP51pk860y2OoP81tT6M39WZ4rVmfLLoU1ZOc2PPpXV2tEjMggBd0/cEPGe
2EKcxuhpntKnVlBj0qEnBgzCKcxJuRgEwXYuMePlez09cfFG+/hwZWUCYiy+HZf2iNgb596T
luamupvekbVETJ68i9JG9f/o9N67aEZDkfkcvwEN9czn+B1oaLs1tM0a2qyGIvM5tX5rWrMa
2qyGNqOhyHyO34CGeuZz/A40tN4aWmcNrVZDkfmcWn/mz2posxrafllDbzop4XEpiaDj2NOW
jNyzpz2kFLSinMBJPiz5L92wEAIa2sMReESQDwS0orcjA8TXFtEnWH24YNQcDfjTvsOadyyI
cXUD0bXjSFjRQOyPU3b1W86A9sEgCZvDJ+jdEprYjj+6oYfA+yxyd6RCy27zLHN3YKIczI22
c9g0TwyY2fqIidORFa3C3FqfaKjP6KjP6KjP+EJ9Rkd9xpv6jDP1GS31GR31GV+oz2ipz2ip
z2ioz+ioz4jUZwqe+hy/A+vTb+vTZ+vTrfVB6nNq/Zk/Y32ipT7jL1Of8QmzYS3meKTUuoW4
6qoPr2kgWEL54TUNBCpDtT4SIK4Eo19qEZcRv+w4PZxzskzKaAXqDHmpryh5huCxYPnLRSiZ
ITmHms4DbpvJO8/JhXn2XH2klpcCxiVlPtSLGbmraxonCHk3dL3f5mSdzJrA/ihpmedvOftd
rvPKth1ne6L7luvPuB1mxrgaqk5ncmczz6MeMZ52YSUvJSQp5e23SGXawrzC3A0u8SDAuG+J
9geNrHd91pP43NNuwVNqB2mN2WbFE5ezDs1iJhsf9bi/jIxTKl9svOGvouOvouOv4gt/FR1/
FW/+Ks78VbT8VXT8VXzhr6Llr6Llr6Lhr6Ljr6Ljr+ILfxUdfxVv/irO/FW0/FV0/FV84a+i
5a+i5a8i/bKNp68x4ANBl+R2Qg0EVpmE4wUgeJFTZftXdyBCrBylOEFAI1qRyWtzT8Hh6yy2
EiDIqfQrX/BAvIuartyEmTbcApQvaWH6lDNxeoA5z+PG7KKWrZ9u46Y/epYRhvV2QLlF3s3f
qIzLfca4qtWqd4/l7aeKXv5T+zTLrmo1nany3bdqPcsEdn2WHWDUb24kOtLysZfd+tQbwApi
ZisoiqYjG7Z7bwUNexwdexwdexxf2OPo2ON4s8dxZo+jZY+jY4/jC3scLXscLXscDXscHXsc
HXscX9jj6NjjeLPHcWaPo2WPo2OP4wt7HC17HC17HPmXreB3ZjlumeX4nVmO35nl9TduZnn9
oZtZjt+ZZfMhjOXrlVE3H3JFxNk1g/H+k5k3n3KYdjHUph13eqxeDLVpBwPslF07bwX+oX9p
h7X4F/rjAvXq23GZ+XhZ3AfiYvBwJIC0yegop5fUDH4Nrw39Hh39Hh39Hl/o9+jo93jT73Gm
36Ol36Oj3+ML/R4t/R4t/R4N/R4d/R4d/R5f6Pfo6Pd40+9xpt+jpd+jo9/jC/0eLf0eLf0e
f5l+jzex+3JNarZ/fznecHLvccmJa3VImCG4PRa9Fmao6JKFrhpmzZCX8FuszgTBSwHF7ESA
4Ij6uD817T40ElptxrgYVKKVcYbUYFwMKsupiPWc2nHse3bfejMpEfrsna/qZuftzBCdHu6D
eTkz1Lnsv6UFj6cDW5bmSwseAeO+pZcrnPzEus8i0oufWC6vEX+3xLv1pQVBjJjZ+9IsR6ln
udjeEJosR3RZjuiyHPElyxFdliPeWY44ZzmizXJEl+WIL1mOaLMc0WY5oslyRJfliC7LEV+y
HNFlOeKd5YhzliPaLEd0WY74kuWINssRbZYj/nKWIz58v7s27ko+xCWV//CMS8ZbY9Awoq1l
ruSun4xL/l3Lw+PUCJYTa0gCCJ8p6TXHqSeYKRHnqjeaWnEXehF+yBF/Wj15hnTrhIv6aGHG
vPpoaYR962SK+miA8ckUMQZd05lxnXQ4D3HV3QQOIjLzLCg86CXbdKojxFwnSsSkdErbZaMH
LAuXvJ0fCVVTOe3BOpmiN0MAxlVPsmvHyesJVdvKeOt11YnnhezuvQntkFhinh93qVM5MmBc
tSLJZks17uZZr5y+SMZ1O7LZDorRYv40bQJ6XEJG1r8SkWSSTeSSTeSSTfSSbCKXbKI72URz
solssolcsolekk1kk01kk01kkk3kkk3kkk3xJdkUXbIp3smmOCebok02RZdsii/JJrLJJrLJ
JgpzIR0ZQpgcIUyOEKYXQpgcIUw3IUwzIUyWECZHCNMLIUyWECZLCJMhhMkRwuQIYXohhMkR
wnQTwjQTwmQJYXKEML0QwmQJYbKEMNHPFNLRwzpi1u46bGUgGLuKda3fIN23grQu27+6M9Mf
0nfdgJYFDY+Yltxej5fTTEteWDOm2Iy/0OST1KM1ZXkn9WjN1t7VQ6Y/L8FJHuyx+ZZL6omz
QhPEH9iSBdXqNIH+sILEHYDx56Hp2v4338rt2rY3Q1cKgGeMr2+QdsI8Pa4/Gr/kQNspFMf6
3LrWKyP2eG2BtGaq9bYMxLh7GPO1BdKSFR+5wTrP4dvrDsMr9+O6qizJcMvkuGVy3DK9cMvk
uGW6uWWauWWy3DI5bpleuGWy3DJZbpkMt0yOWybHLdMLt0yOW6abW6aZWybLLZPjlumFWybL
LZPllumXuWW6KT6sFrirKGjNLX+iG1pSpKVeMZJp5eWWqVFFYSB4BUW6ajHMh/xlxWf9g2nF
mUoJKUb0Qkue+glNTDt4IZheUwiY6Z4g+X1TxntEU3uP0PCj5PhRcvwovfCj5PhRuvlRmvlR
svwoOX6UXvhRsvwoWX6UDD9Kjh8lx4/SCz9Kjh+lmx+lmR8ly4+S40fphR8ly4+S5Ufpl/lR
+l6eTMgaPYrzSU3Tkny6U9MP5C01TctS38dLWRJld2radGOVmqYllXanpmnDjn5S0+vO6M0u
146/rNkeDkjhbTPpesZhM/3DAakhT+24e7H1PNeMASVX8i8q7fvtABUZ8o8c+UeO/KMX8o8c
+Uc3+Ucz+UeW/CNH/tEL+UeW/CNL/pEh/8iRf+TIP3oh/8iRf3STfzSTf2TJP3LkH72Qf2TJ
P7LkH/0y+Uftu5YvqYNHy5fsy6PlbavlS7rk0fIly/Fo+ZLgebR8yTc9Wr6pkb61/OmMq5G+
tXxNf920numOC0XyVSds2nGhyIfW2/RZi1R4xvgaxPTxCdZ0nGbFGvT5LT0LGGd29P4mxDha
L1x1k5ux31Uqblwf86U10nxdH7E1X8nQVsnRVsnRVumFtkqOtko3bZVm2ipZ2io52iq90FbJ
0lbJ0lbJ0FbJ0VbJ0Vb0QluRo63opq1opq3I0lbkaCt6oa2Spa2Spa3SL9dIp+VR5Nt8pWV5
ri6whMWXNoV7Vo4YyKpyZP2Nu3Jk/aG7ciQtC27vyhHTCtLu94HDtK5rFt9/nIa27bj75+q5
4e/aUduU4jy5rixECeO4FcBIOdQat+PKYrrHWfBNO5pu51y249LLGBAznRdPWmCmZLieH9vb
C0OvJkevJkevphd6NTl6Nd30aprp1WTp1eTo1fRCryZLryZLryZDryZHryZHr6YXejU5ejXd
9Gqa6dVk6dXk6NX0Qq8mS68mS6+mX663TU9RKF4E88l1piXdlMt10CotycqSrhqmtGRO9Sqs
ODWCS/WT6ly3oW5fGnqzLrkNRwCIu3G6uVb8y0TpqjRIa1YwqoiGMV1S0lpXnQDjvAdZAa4d
9FREP9PY9dcy0MLKcf2o/ZbzZuqVzFtP8qjLZZqE+fYmcENMnKyK1q9SP1vaWxXDMSbHMSbH
MaYXjjE5jjHdHGOaOcZkOcbkOMb0wjEmyzEmyzEmwzEmxzEmxzGmF44xOY4x3RxjmjnGZDnG
5DjG9MIxJssxJssxJp6TZ8lQVslRVslRVumFskqOsko3ZZVmyipZyio5yiq9UFbJUlbJUlbJ
UFbJUVbJUVbphbJKjrJKN2WVZsoqWcoqOcoqvVBWyVJWyVJWqfxM8iw9tNTS41uedx/GZcma
PB7f8gj64/Gtz9TfHt/6TP3t8a0P1d8e3/Ice8/XbVdpXXCmwQViXF6MfDvuFq/g23GnKrpv
x/FS13OLFuMuDO9u6K83GeIMYoLtrhXetKPXUPOM8QFr/zjW67GL0LEdR+314EXq6lD6Vbdt
+vNSY/KtP5r0cuPC2hDZki9Hfzl20qsSADMnxpJh/pJj/pJj/tIL85cc85du5i/NzF+yzF9y
zF96Yf6SZf6SZf6SYf6SY/6SY/7SC/OXHPOXbuYvzcxfssxfcsxfemH+kmX+kmX+0i8zf6l9
N6RLpucugTYQLIEuvhUsXmbfCt5/kHwraE37xUKmNbcnKjNSfWnJk4kzHNoM8ffC6nrb9XbY
0rzrrIbXPY4dZE3ZabxWZox/PjN8Nqs1jabO8hnTbKg/mpp4eXXhvDliM+jcPnHRusBOn6xE
jCv4ixePuxnSXUG9+ZZeGYsYV11Arh3/EGT4xEdLMehViAEw7j7AmC5GeK0JWjhUEeMK/urF
CK9locV8HTBvrye6dnDsel0itoOVFeK8nZUna5nqo4WkReR+CX7iIy0u1OdilQ/fxkdsWFp2
LC07lpZfWFp2LC3fLC3PLC1blpYdS8svLC1blpYtS8uGpWXH0rJjadMLS5scS5tuljbNLG2y
LG1yLG16YWnZsrRsWVr+ZZaWv7O0vGVp+TtLy99ZWvMNTDJ9LuLh5R0Dd4XGuqd3eTkviVz1
2WmGuBtzAx+lwpdcAolcOz4R1a8csMFgoQe1Kwe87rImmTJBO66+XB/VipMcfX15OQpiXDHb
h3LZ9CfLVtJnjJtDfcKKK2+/pZf1hJa3fVb/CzCYvhwPE0N/3LbV9WzCqWZLf1zsRStxWoT+
Vl2JVxCDJjfK2BtvZToK3tKMcS8Y6+28o9hvPT+jdhwwuDa0hEscnn2fWRQQ+4O3F+vDbdCO
m0N9IzeXrcUgkftZ7LfWZBqv/qW0nUOxCDHOmLcHbAtgcA41I4bt4NiTxnM9xN3aGEw5YDB2
lD32e38S+3G5d19lXLnV3diTPhQFmHnrPw8N6zbFX07Zskm4sEu4sEu48EvChV3Che+EC88J
F7YJF3YJF35JuLBNuLBNuLBJuLBLuLBLuPBLwoVdwoXvhAvPCRe2CRd2CRd+SbiwTbiwTbjw
Lydc+Em4LLf+Jbt+R5kPBK3LXV/CS65fEy4j+DMQvFc/uFZckUn7eBHL/JBGmXSKeZkrCfGi
/h6MrzL5HPBnrEZ+Ie14k0/5kHYG40LN7tt5qSBx7bxs7q4dt7nHi/xby0o3dxy7J+3CRf6Z
djBrXPki/9YS1ZOTJRXa9qeVqxJ2My6JJcPpIK1zSfq666jC4WVuSzRd4sQed+tHHYBro3yp
VD8Vrg06cmzLe6Nq8k3s8k3s8k38km9il2/iO9/Ec76Jbb6JXb6JX/JNbPNNbPNNbPJN7PJN
7PJN/JJvYpdv4jvfxHO+iW2+iV2+iV/yTWzzTWzzTQz5Jjb5Jnb5Jnb5Jn7JN7HLN/Gdb+I5
38Q238Qu38Qv+Sa2+Sa2+SY2+SZ2+SZ2+SZ+yTexyzfxnW/iOd/ENt/ELt/EL/kmtvkmtvkm
/ql8Ez/VyfgQ5uew1gPBOERfqR7Jfl6mIMZTozMEd0q9BiIVi0Cz0Mg14lhSffmTplYwUNbL
ZwDinxwX+1PGTrm+CSHIzj4oznWHx2Gs8QgELxILbBIL7BIL7BIL/JJYYJdY4DuxwHNigW1i
gV1igV8SC2wTC2wTC2wSC+wSC+wSC/ySWGCXWOA7scBzYoFtYoFdYoFfEgtsEwtsEwv8y4kF
fip9YYE9Lt+SwHxcviU3eScWeEkB34kFXrKgd2LBQPDa8jh9A3MK+SpM5jVbfR9vXA9YLz7v
iHmpycN2fNJAvJk+Y9zdK3qpXcq0G7Teq3IegeQlEz28vVEHzcief7wQLaGL6eS0t15INqxu
dqxudqxufmF1s2N1883q5pnVzZbVzY7VzS+sbrasbrasbjasbnasbnasLr+wuuxYXb5ZXZ5Z
XbasLjtWl19Y3WxZ3WxZ3fzLrG5e0m+3nuclC3MfHchLIuIO7fKSh7ipXQPBzfNTjpGX7NNN
7eYlgafRXz6nbbl7fs7n5SWt9JzPy0taaTyEwDPG38Per2zRemqea0HWQnjOD7g+X3qctSZ2
5MH6Nz02FE12FE12FE1+oWiyo2jyTdHkmaLJlqLJjqLJLxRNthRNthRNNhRNdhRNdhRNfqFo
sqNo8k3R5JmiyZaiyY6iyS8UTbYUTbYUTYY3lLLeZf+Rg/jDIAf1kGc5qH+MctBLBmY56CPr
51jkJyuHEo0c7n93z5Rp/Z7Puw/JdjF9+n7JQR+Rn+UgvwE55OLlkAvKIZdP3+UnKwf9wz3m
+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
BHEfgjBszyo5dW3nveR6g7/utd2KiDzdvoABpzdd1MNUPOhpXUV+SE+tLRIzY7ze/4wF8uDe
gl1+/A7hl8ntssNxo7jgSZrZ7h1IuhO691VYMXAcL+PkN3H1oNbl0Hy1yeA2vdnJkujMUl83
YkJu0WB3Pa4iJVUE68mvLO5g9rxuxfxT40x1xTB3ijxK63C9NCvgRYRhma+LLLQXX7zwuA1D
Mm98D3128aOtrKFPoHNtHL5fXPesH3DCyufis8e9Xcn9pENH3cVB+smR0f+mLL2f9OPIFRrX
CWYMc0vkitxXTCbfcI17sYRhmdF3IE0uGOF14r46nZ1fYXmNG4ErhhOKw39E1+B6Xedp7ang
g31c+a5/XnfrbXNcAV0wW4/scdlHVwzn37iIXte9tlwPfzLCbDkkbkA1kocT8EBfVFfM5pfo
MfLllu/L8O2iHNcs9XTy6GLvJKw/TSJxGfzilE91YwK/beN07EhFI7flRByNyER52FFcBYlp
suy0JQc4ZLE+Hgj8+urg/ySCHSAKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8L1R5cGUg
L1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAyMjAKL0hlaWdodCAxNjAKL0NvbG9y
U3BhY2UgL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCi9MZW5ndGggOTA4MTgKPj4gc3RyZWFtCnicpJwHdFzlmfdHo+m999577733Lo00GvVq
yyqWLffeC9hgY2ywMcXUUAMESDC9BVJIJ3VDElI3EHoxBML3yNrlsGSTze53z3vmXM2o3Jn3
9/7LnTv69G+ffvjBha985b5SvWh0GAvNKgKFoIuFYyNzXLZMKJBh0AQEAjk7sxAMxChkps3t
o7M5KDQWjUYTsThsRwcdh2+WyugOBJ1GwWJQcItAIORyqcViCkWCXmPcqvRaVW6z2iHjyw1q
PY1EZLMYLAqFTiQyqbROBFIqVuCwZAFfTqMJKHQBhcKhkOh0Eo1BplMpTAKZhSWyCHgqogMl
Meh0dgufz8ciMQQ8JVOp+3yJVKpSq7UHByYa9T6FVNOBQGNRxHw6g+5AwhGSiSQ6Ff4mnkjE
Mxg0NKbjssuOUOk0BpPd2dkp5HJYJLyMy9CIOVQccuO61XQaKZlM+jx+u8lRTJWSyTSBgKMz
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
5PKDvb1vv/bahbfffuvVVz987923oIG/+fqHF5au6X3ttdcAy08++eTDDz/888XtwoUL7/6D
7V9p4qlo+viRK7rK9ZDTV8kVCpksMNmJRoHTRaPxWrGaiaXSoXizCmqRbHX13nrrrStXrjx1
6tTExMSuXXsaje7du/avX7f54IEjRy87sXHjzvXrd5676cvtgemRiYVUtseXqfoz1Xi+e3Hz
QRDPfHUwUWwvbLskWy6y0IiNvbmGV6NT8bBMJgLHbFRHgDTwU0iGFodTDIlHLMbhcJDhDWo9
Fo1TqTQdSAyGQI6mctB3tFbH0NhMMtMMx+p9/StgOjF4BIVOgON3ul00JolIQaMwnVyulM9V
87kqmBqiTElny4QMpUCgASbYWi0wublvYqgXkmRrdWtsrj0iFUgQGDyKyqTyFRWjfaq3O5OJ
tGrlqXJXWu/ORfLxSvfC6t1z6/YNzG42BLLeSCUUrbkCBY0jFvAW4pb41rH1d950//Frrq01
QmsK9JNZREbFg6BCsQVIBhcORwA3h7WGFqlIZHqzp71r9342m4vB4Ag4Io/DpZIpOp3GajXT
aBShkM/jcWBIJCLYJ1BxUolAJ1XwmPyFxU3+RFZvcbmcfqvWETQuffLCzOephfSQ35COWIxS
uppFktEJMYfVqzPWYwU1TZ6350OKcD4VyabCPT2VSiWTzSRsRqvL4A7b4gBhOZlK+gM+izVo
d4SdLriNe30rhoY//eQTGM8/9dTHFz749G+fvP6XV998Y+ltHYiU//7v//7KK68AjR9B//n4
4/9WKv91wUyFU/t37O+v93mM9qGuvnwyrdfqEPCKsTjQskEkwbB8ZmdvpaucLcaD0fHx8XK5
XK/XKxWoupVMugD1fPOm7Vu27LvssquPHLl6x66jZ6+7MxStTM9ubzSnQoXeXPeYxhZqDc2O
T63ftO1Qe2R25fwWryfUykav371iLG9gURACiRSLksrYUV84Bv1i6TMOHUjonmxwaw4TKjyN
yqrXmqtmVotlajpH4ArGZZCVbG5gMlvs9QdKfQOTaCwGg0di8SjQHOiVXAGdQEbiCFixWCsS
Gvk8DZcrp8jVFIaYw5DzhTqySMlWahLh5GxzeHRoxUC1b7o5MjMwDm6JIlGJLKFYYy0YnXvW
rq8Vc5Cod0zMVZ1xvVjv8iVHW9Nzs1vKzZFotmGzQndNhwK5WKKqAdkMZ0b6Rs5ede3Onbvj
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
uVwgFLCtVuvYNSad0er0uLyZggy1zuAhUYSffPpdQ+NUpsFFFCtdoUhVVfNQ75IpzXPSYkhJ
E9DRkFi7lDO7KbM6W4JBR6Vg09hCutuh5Pz+0Ou10wd6v/3266+++srjDijkWpPBZzUH7dZM
udSUnVnI50nLy2rYLEFroe7V59tf7Vpxdl7f92tGz21bemPzyP0lU84tqru1vuflgeU/n9z7
/PSBO1/uv3Vo190PdlxfOe36mukXVwxe3zz/m/lTrq4euLai9+7q3ntrZt5YPfj8gxW/frp9
a3P47dGND3cuONZf+deDm85Mr/qgXH9ielmZlKhn4ZVCjk4lF9BZdBolK+xn0vA0RLoAg+Vi
CZl2d/+0eWfPXLt29eGnn3zz49lrt28+AUwCMq9cvgUEE9j33VtjHed/xaRUYjMZ/aNzl8VH
JeDRGDaLIRDxgUZ5vPU8volEpKelJmAwyXEJEIGEL1YqeVLFpKl9JBY3Q6kfnr+0f9ZIJqjn
wVzAJAAjv6g6O6ciM1SRHanSmHxas9+UXWLy5UUK67XWTLUnzNU5citblqzaOX/eEJ9F51Go
VTkhCRvPpSMZVFx0dCzo+0CcIRPiUlLhUdEJYEtKTm+fNGViSzuHK/T5s9yeoFAkYzB5drtf
KtXqtQ6z2Wuy+uzu7BQYJgmK4nIl6elYuxvkSdH4lPuASQKZgSbQ0jEkNJWOwlPRv1/KScZS
0TTO0Ix5QgpPLJYS8SSn3bF3zy4mnfH5F1/+cOEKXSCprqjHYfCw9BQcDqpQ8Pfs2cphMzUq
tcVmbmvvmje6KjevwWCKZIXqyiq7wNEjMAVzaltyqitK66pzS8s5YimJz0CwUEwGzyalhZWp
2WaERIUnCwl8IcYpRRMIBCQSqVYrNVpFXl5OXl4e0Emd1mzQuQGQ4K/Taa1Oh0+t0uflFlks
tu2Lu+9+sv3yusW/fnrs9anvrh05fPX9zacX93+zsPjK+rZXhxb9y/d735756O7xXVf3bLi2
Ze39TXN+WjN0dvngD6tnHhloOtJXd7yv+puZE68vmPzr3qXXV079bLDy6fsLn+1femnVtL+d
ObC/ImtnrvHbjsjF2VXrqhwGYjyLAMMR0DwWG4GCe7O9AiE7g0GT0ugBo8VjtoWySteu3nHm
9E/ff3flm1MXAJYXz98898NPly/dBFIJ2vedmw8Ak88fvXj19PU/yKRAKDGaLJs3bhFyBHwW
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
nL24IKYevo4u3tAQZ8xbKfSPcguMsiUwbCakz9oWq6hvHLz/ZPv27WQy+ckT5GpcPH5iHVLw
dZaWQdNDA0KCCRQyAEmk0hgcvg0W5+jqAVkbyTs0BpvNBQ9pY4PhcHh8vpBKpfr7+1tZWen0
PV88fQIvtLCxfvXu7TfffWtugYa+DIbq0/j7qtrSLds2yuQlafmyi/EpsUkZ2eKiE2cvILqK
tjW3sFq1cXtZbfOFK0l7D8SkJGeUyIsFXAYWPIeVCdreZv2a5dKsjLK8vILUdHF6Tn6WOF+c
LSnIlU1wKM/PlefmlOTmwg8oCsVQZUUFZYi3lJTJgUwI40XGx6piaU0pckFuQ1lpY7miGVk8
UNZaXdxaW9xWV9JaX9LcIG9tKmlrUXS31KtbGzRtjdr2Jl1Hc09nC5S+q1Wn6uzp7jJoVL1a
pPp0ygF996BBPdbbhwz69ekHDLqBgb6bt+6kpOelZxXKy8tlioqiYoWspCItK/f46VOd6o5/
PfvHd9/9LSEhq75OXVLccujAlbhrefHX81JSxL/8+qy4pPzCxav1dc2xsXEJ1+P9p3mvX7fq
4vn40yevnT6ZfOVKwZVYyZETiScvJotLapTaLnjLHn0vxJxew9BQ/5hapbs1chNStrpTo+5Q
9ajUPZ1d3ROrcoF0qpsbR3u0YCahfa9atUrEdeTR+cDktHB/W6qdi6s7AUOFqA1qTGOxzWxt
aHzO7iP75WXF1xPili1bByguWbIGnHB3d29ycvamzTtmzIzmO7lt3Lbr7KXYU+cv7zl4dPeB
I1yRC4XJJTJEK9ZsheOrtU15LOb0jNkLmFyXgLDooBnzdx84lpGWnnz96pljB/D26NDQ4LMX
LwGBcJh8/fXXwOSuXbtg9yBKwMaGLZuFzuAi3Q4dizl59py1rT1H4Eig0JctWxETcwICDkQy
S0vr4OBQDAZrZWUTHh4eExMDorppy+aNmzeBCz136eLr9+/uPbh/5OjJBQtWHTp8/Ldn/6pt
KJcUFWi0hotxybsOxpy7mnAxNj4uMQUiFZ3BcsATV27aXqSoPn4uNiWjANpWQ32Lu7s76LDI
x4Pv5rxp41pkolpWRn5qCnTw/Ky8rMzUnOx0cU4mqCWy9lp2FjCpyM+HH4MqleQjcE4wCShW
lIBaSitLQS1ltYriekWJkckmpOQtlSUt1aWtNSUttSVNdcUtDaWtjYr2usqO+qrOhmplU62R
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
vgqaHkQkIUCUIyJBiEZiQbghB1EYEr5YhyHSAXVEOh2Jw7H4IiZPpNK58SUqGpsPX8LkCaUq
3eauba6egWKqRCNxdjL6y7U+QVFpBjcfOF6JVABQF/IlfX2DcwuXTkwtTcwszcyfnTy1MDtz
vq6m3dszWCyQKyWKYD8/OZ/DpuCgOZJIjkQSli8QKZQ6rkCOJtDIDB4CjWDxGW4GBRWFcJMT
csOUzetU2+O1PcmajhDZrkjTaGrwjji39mjZ1hThYJbwcKZ+b6LqZKHfSlPUbKX3yTyXC/Xx
c/lRp2vWjWT5zG/KPdaY352X3FdZ1FqYV56WsiGvNC89Py+nsjCvLjk8M0ITFMVyiSGoTQhk
OUvZK3Qb9I5qi00qT4hLc/GodvJLKS7OqqyvbO2vbTvQ3jNdWrpjc/Po1JFrJxaujBw+HZeQ
17ax79jB47v7to3s6Ds3f6Jj48a+ri2nTx4f3tYDbDm2e/urF5cg8lyePXb19Phb11ZeWZ23
YpJOpvyfmARLCWYS6AgCLAAPMAkQzcvLs8zefmLa3c2HTuPk5RaBJn799delZVUVlTXlFdU+
vgHwcYg8jx4/7+0byMjJLquqdPPydUDj7FAYJAaLJRJKq8oqqkqzcwreef+Lhw+fb+vfDhUH
APvzt7/q6uogYu/Zswe2AsjMz8+/evXq48eP//Hmu7Y2yHfe/gDeZrc2/j+dxv7t1/u//fZH
WVnFyMh+2MM//3wAuw0P1/osfXfixAQwJ/jJ+flFoH14EmA5uGsYdnVzZ8+u4X0Ay0NHjwO9
l5VWASwFfIkNwp5GpAMmYVuQcTAkEpMjFsvUSAyeSKWR6TTYf+ugLggEGnAikWvAaqp0RhKV
1bt9t4tHAF9qVGjcwKKo1IaC/JKkpCSUA9IR2A1NApsaEhZaXFlaUlPV3rutZ2BPY2tXbXVb
SFAMmcSC9qs3GkIiQ3XOWo6QzeORyGQUGuMAf0QiGSpCLpc7u5jIHDGFwnPWepCxTIPeRSoU
KRjMEI020UtaatZs9tfsDNPtT3UZyXbdma7rT1VvDWZPFfiNJrnMFZkvNYfPlrodz3M92xB/
pzHybLHHnbboS82Rk8X+M1XxE1WZ+3JTDuREjRYnDRelHags2BIXuTcrZSQhYne4z46E+HYf
vwIcvQ3DO8V2/9It/VPJupsOxnds3V8XJBxWpp7dPNXdPHroxK36zqOdO6d2jC6OHFu6duOt
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
kN0nVWfXWjJUhjSVziYQ0/FcAkqDPtEgV/TFuPrsnsxyXAtKpdMYEfU1qOChZxFJQ1Qko5Mq
9SJKxSMVaAAXGMJo7Ik8Go3DEQBuhJT0dvnzi6vd5Q0P6lrv3q+8V1pbUFKjtqSTFMOuz1KA
UVo4J8AFhaDQiJW9yBLJhBJ5kqb1qL9IqQLyg2wQKdGBMkGw+AQeaCZk18FQUCbqMoBOwSZk
CrZOUTQSAjQJv4gtbMcgxbdcEcYmQQNkKXZkFZThjMomo0ywafg1zB1nwKnS0lwI0kajM8NV
68wqNVizFSrr3ZxyhznXqrFlmlMcVhu7qkKtR2IRJHKE8RxKxiTw5KQSo14tFNIahSU3JWug
qnq0oijSXhnuLAm3Fk17Clbbi3d7aza76jZ7vSfj/tWBehASDR20jaGmmCDByZ2R1rWBenBy
L9QaDXghyKjfw1rzbYaEU0OQOK711Vytj6DuRqWzOdhwuRrsL3VuBxrebgZXesvOlvqCVVmh
8qzrGV/PHd3N3OCJ3xOuytuZ77jYHt4baXoy5n2/5DufaHk61ng4Urv1qDEy45kcLt141LA/
Un/UVwVlXk92DharfcWm1YFG7/278jjOPad1e24U8fL64uLkYPfm9cWvPt6cHbM3qfx0yd4t
6Pe//d3f/vLX2Ocl/wHbi/jgCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDU1CjAwMDAwMDAw
MDAgNjU1MzUgZiAKMDAwMDI0OTU5MSAwMDAwMCBuIAowMDAwMjM2NzE3IDAwMDAwIG4gCjAw
MDAyNDk2NjYgMDAwMDAgbiAKMDAwMDIzODQzMCAwMDAwMCBuIAowMDAwMjc1ODE2IDAwMDAw
IG4gCjAwMDAyNTk3NzYgMDAwMDAgbiAKMDAwMDI0ODAwOSAwMDAwMCBuIAowMDAwMjczMDUz
IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2MyAwMDAwMCBuIAowMDAw
MDA5MjQyIDAwMDAwIG4gCjAwMDAwMDkzMzcgMDAwMDAgbiAKMDAwMDA4ODQ3OCAwMDAwMCBu
IAowMDAwMDg4NjEwIDAwMDAwIG4gCjAwMDAwODg3NDQgMDAwMDAgbiAKMDAwMDA4ODg3MSAw
MDAwMCBuIAowMDAwMDg5MDE3IDAwMDAwIG4gCjAwMDAwODkxNjMgMDAwMDAgbiAKMDAwMDA4
OTI5NyAwMDAwMCBuIAowMDAwMDg5NDMxIDAwMDAwIG4gCjAwMDAwMDI1MTMgMDAwMDAgbiAK
MDAwMDA4NTgwOSAwMDAwMCBuIAowMDAwMDg5NTU4IDAwMDAwIG4gCjAwMDAxMjE2NDcgMDAw
MDAgbiAKMDAwMDEyMjA1NiAwMDAwMCBuIAowMDAwMTIzMjE0IDAwMDAwIG4gCjAwMDAxMjM1
MTEgMDAwMDAgbiAKMDAwMDEzMDc5MyAwMDAwMCBuIAowMDAwMTMxMTY5IDAwMDAwIG4gCjAw
MDAxNzU1OTIgMDAwMDAgbiAKMDAwMDE3NTk3NiAwMDAwMCBuIAowMDAwMjEwMDcxIDAwMDAw
IG4gCjAwMDAyMTA0NjYgMDAwMDAgbiAKMDAwMDIxNzE3NyAwMDAwMCBuIAowMDAwMjE3NDc2
IDAwMDAwIG4gCjAwMDAyMjUyMTcgMDAwMDAgbiAKMDAwMDIyNTUzNSAwMDAwMCBuIAowMDAw
MjM2MzA4IDAwMDAwIG4gCjAwMDAwOTAxMjYgMDAwMDAgbiAKMDAwMDA5MDMzOCAwMDAwMCBu
IAowMDAwMTIyMjY0IDAwMDAwIG4gCjAwMDAxMjI0NzQgMDAwMDAgbiAKMDAwMDEyMzg1NCAw
MDAwMCBuIAowMDAwMTI0MDMyIDAwMDAwIG4gCjAwMDAxMzE4NjMgMDAwMDAgbiAKMDAwMDEz
MjA5MCAwMDAwMCBuIAowMDAwMTc2NTYxIDAwMDAwIG4gCjAwMDAxNzY3ODggMDAwMDAgbiAK
MDAwMDIxMDY4OCAwMDAwMCBuIAowMDAwMjEwOTA5IDAwMDAwIG4gCjAwMDAyMTc3MzcgMDAw
MDAgbiAKMDAwMDIxNzk1OCAwMDAwMCBuIAowMDAwMjI1OTc0IDAwMDAwIG4gCjAwMDAyMjYx
NTIgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDU1Ci9Sb290IDkgMCBSCj4+CnN0YXJ0eHJl
ZgozNjY4MDQKJSVFT0Y=
--------------090104040105060300070401
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Wg-test-framework mailing list
Wg-test-framework@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework
--------------090104040105060300070401--


From wg-test-framework-bounces@lists.xenproject.org Tue Sep 23 04:03:28 2014
Return-path: <wg-test-framework-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Sep 2014 04:03:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <wg-test-framework-bounces@lists.xenproject.org>)
	id 1XWHK4-0002mG-P6
	for archives@lists.xenproject.org; Tue, 23 Sep 2014 04:03:28 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pgeorge@plginc.com>) id 1XWHK2-0002mA-O5
	for wg-test-framework@lists.xenproject.org;
	Tue, 23 Sep 2014 04:03:27 +0000
Received: from [85.158.143.35:55911] by server-1.bemta-4.messagelabs.com id
	20/E5-05872-E01F0245; Tue, 23 Sep 2014 04:03:26 +0000
X-Env-Sender: pgeorge@plginc.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1411445002!12528122!1
X-Originating-IP: [71.126.247.220]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6486 invoked from network); 23 Sep 2014 04:03:23 -0000
Received: from ns1.cmisp.com (HELO ns1.cmisp.com) (71.126.247.220)
	by server-10.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 23 Sep 2014 04:03:23 -0000
Received: from PAULNEW1 (static-71-126-247-218.bstnma.fios.verizon.net
	[71.126.247.218]) (authenticated bits=0)
	by ns1.cmisp.com (8.13.8/8.13.8) with ESMTP id s8N43AQQ006244;
	Tue, 23 Sep 2014 00:03:11 -0400
From: "Paul L. George\(Office\)" <pgeorge@plginc.com>
To: "'Aravind Gopalakrishnan'" <aravind.gopalakrishnan@amd.com>,
	"'Ian Jackson'" <Ian.Jackson@eu.citrix.com>
References: <21527.5802.902997.176928@mariner.uk.xensource.com>	<07a601cfd428$70e54e10$52afea30$@plginc.com>	<21532.26774.544310.598789@mariner.uk.xensource.com>	<07f001cfd436$348ea5c0$9dabf140$@plginc.com>	<21532.29740.781995.367485@mariner.uk.xensource.com>	<EC1529AB-9601-439B-8153-C8D3825B2BD6@plginc.com>
	<21536.7343.285823.447425@mariner.uk.xensource.com>
	<54204338.6090507@amd.com>
In-Reply-To: <54204338.6090507@amd.com>
Date: Tue, 23 Sep 2014 00:03:10 -0400
Message-ID: <0a8f01cfd6e3$4ab6adc0$e0240940$@plginc.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_0A90_01CFD6C1.C3A50DC0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQJj2o96wtUOqRfNFJ3/HeGeBUuH7QHfERT/AcJXLwMClzOjIgHT/UZGAlVeWWgCZqLodwH4x5HemnAFq3A=
Content-Language: en-us
Cc: 'Lars Kurth' <lars.kurth@citrix.com>,
	'Mike Woster' <mwoster@linuxfoundation.org>,
	'Don Slutz' <dslutz@verizon.com>, wg-test-framework@lists.xenproject.org
Subject: Re: [Wg-test-framework] Machine suggestions from AMD
X-BeenThere: wg-test-framework@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: pgeorge@plginc.com
List-Id: Xen Project Test Framework Working Group
	<wg-test-framework.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:wg-test-framework@lists.xenproject.org>
List-Help: <mailto:wg-test-framework-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework>,
	<mailto:wg-test-framework-request@lists.xenproject.org?subject=subscribe>
Sender: wg-test-framework-bounces@lists.xenproject.org
Errors-To: wg-test-framework-bounces@lists.xenproject.org

This is a multipart message in MIME format.

------=_NextPart_000_0A90_01CFD6C1.C3A50DC0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

Guys these are the updated prices for the AMD systems I sent last week.  My
wife was going into surgery the next day so I was pretty preoccupied. 

Paul 

-----Original Message-----
From: Aravind Gopalakrishnan [mailto:aravind.gopalakrishnan@amd.com] 
Sent: Monday, September 22, 2014 11:42 AM
To: Ian Jackson; Paul L. George
Cc: Lars Kurth; Mike Woster; Don Slutz;
wg-test-framework@lists.xenproject.org
Subject: Re: [Wg-test-framework] Machine suggestions from AMD

On 9/22/2014 7:57 AM, Ian Jackson wrote:
> Here is a detailed proposal for selecting particular machines from 
> Paul's suggestions, in the form of a spreadsheet.
>
> (You can find everything here too:
>
http://xenbits.xen.org/gitweb/?p=people/iwj/colo-for-testing.git;a=summary
>    git://xenbits.xen.org/people/iwj/colo-for-testing.git)
>
> Summary:
>
> Total budget $57,076 for 26 machines, 2 to become the main servers and
> 24 to become test boxes.  (Switches, etc., not included.)  Of the test
> boxes: 42% are AMD (54% by cost).
>
>
> I have added a pair of higher-spec versions of the Dell R415.  The PDF 
> from the dell.com website is attached.
>
> There are two very expensive AMD test boxes at the top of the list.
> This is to try to balance the quantity and spend between Intel and 
> AMD.  Conversely there are two very cheap AMD machines at the bottom 
> of the list.  (It appears that there is a greater variety of Intel 
> machines available.)

I could see a mix of different micro-architectures and socket config for the
AMD systems on the spreadsheet.
(In fact, I think the second R515 (the cheaper one) is a K10 micro
architecture which is a little old. But can be used for regression tests,
etc. I guess)

So, as far as variety, we should be fine.

> This amount is bigger than was approved by the Xen Project Advisory 
> Board but I think we can just go back to them to approve it and this 
> won't be a problem (and can be done quickly).  We should seek 
> re-approval for the bigger amount plus (as before) some headroom.
>
> Alternatively we can go ahead without the two big AMD machines; that 
> would be $42,342, well within the budget (and would have 36% AMD test 
> boxes by number or 34% by value).  If it is convenient we could start 
> work now and get approval for the extra budget (which I am confident 
> of getting) in parallel.

Instead of the IBM machine, why not swap that with a HP 385p server? 
(attaching a model I found on the website).
Looking at IBM x3755's spec, I see it has a 6300 series opteron which is a
Piledriver micro architecture.
The HP model I have attached is the same; and is also a 2U (a space
requirement that we have already factored in).
It's different from the other AMD ones in that it's a 2P box. (i.e) a MCM
part. Afaict, others are 1P boxes.

Aside from that, it's also less costly compared to the IBM one.
But, it still keeps the ratio of AMD boxes (by  number) intact and the cost
balancing identical still-

Costs after swapping the HP 385p for the IBM x3755:
Total cost: $50140
Cost of AMD systems: $18956
Ratio of AMD test boxes (by value) : ~47%


Thoughts?

Thanks,
-Aravind.

> I'm assuming that one pair of 2U test boxes will fit in the rack.
> That will give us 26 machines of which 4 in total (the two main 
> servers and the two big AMD test boxes) are 2U, for a total of 30U.
> (Of course we need to fit some cable management, switches, etc. etc. 
> in as well.)
>
>
>


------=_NextPart_000_0A90_01CFD6C1.C3A50DC0
Content-Type: application/msword;
	name="1U-AMD Opteron 4133 Dell Rack.doc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="1U-AMD Opteron 4133 Dell Rack.doc"

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAASAAAAAAAAAAA
EAAASgAAAAEAAAD+////AAAAAEkAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAD8AJBAAA8BK/AAAAAAAAEAAAAAAACAAAfwsAAA4AYmpiak8LTwsAAAAAAAAAAAAAAAAAAAAA
AAAJBBYAODYAAC1hAQAtYQEAfwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAAHwFAAAAAAAAfAUAANYS
AAAAAAAA1hIAAAAAAADWEgAAAAAAANYSAAAAAAAA1hIAABQAAAAAAAAAAAAAAP////8AAAAA6hIA
AAAAAADqEgAAAAAAAOoSAAAAAAAA6hIAAAwAAAD2EgAApAAAAOoSAAAAAAAABhgAAPgAAACaEwAA
AAAAAJoTAAAAAAAAmhMAAAAAAACaEwAAAAAAAJoTAAAAAAAAdRQAAAAAAAB1FAAAAAAAAHUUAAAA
AAAAhRcAAAIAAACHFwAAAAAAAIcXAAAAAAAAhxcAAAAAAACHFwAAAAAAAIcXAAAAAAAAhxcAACQA
AAD+GAAAsgIAALAbAABWAAAAqxcAABUAAAAAAAAAAAAAAAAAAAAAAAAA1hIAAAAAAAB1FAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB1FAAAAAAAAHUUAAAAAAAAdRQAAAAAAAB1FAAAAAAAAKsXAAAAAAAA
AAAAAAAAAADWEgAAAAAAANYSAAAAAAAAmhMAAAAAAAAAAAAAAAAAAJoTAADbAAAAwBcAABYAAAD5
FAAAAAAAAPkUAAAAAAAA+RQAAAAAAAB1FAAAUgAAANYSAAAAAAAAmhMAAAAAAADWEgAAAAAAAJoT
AAAAAAAAhRcAAAAAAAAAAAAAAAAAAPkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAdRQAAAAAAACFFwAAAAAAAAAAAAAAAAAA+RQAAAAAAAAAAAAA
AAAAAPkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+RQAAAAAAACaEwAAAAAAAP////8AAAAAcOa4nOLW
zwEAAAAAAAAAAP////8AAAAAxxQAABYAAAD5FAAAAAAAAAAAAAAAAAAAcRcAABQAAADWFwAAMAAA
AAYYAAAAAAAA+RQAAAAAAAAGHAAAAAAAAN0UAAAcAAAABhwAAAAAAAD5FAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5
FAAAFAAAAAYcAAAAAAAAAAAAAAAAAADWEgAAAAAAAA0VAABkAgAAdRQAAAAAAAB1FAAAAAAAAPkU
AAAAAAAAdRQAAAAAAAB1FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdRQA
AAAAAAB1FAAAAAAAAHUUAAAAAAAAqxcAAAAAAACrFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA+RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHUUAAAA
AAAAdRQAAAAAAAB1FAAAAAAAAAYYAAAAAAAAdRQAAAAAAAB1FAAAAAAAAHUUAAAAAAAAdRQAAAAA
AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA
AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA
/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAAYcAAAAAAAAdRQAAAAAAAB1
FAAAAAAAAHUUAAAAAAAAdRQAAAAAAAB1FAAAAAAAAHUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1FAAAAAAAAHUUAAAAAAAAdRQA
AAAAAAB8BQAAIAwAAJwRAAA6AQAABQASAQAACQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdRdW90
YXRpb24jMDkxNjE0LTQgIERFTEwgMVUgQU1EIFJhY2sHBwcHBwcHUXR5LgdCYXNpYyBEZXNjcmlw
dGlvbgcHBzEHQU1EIE9wdGVyb24gNDEzMywgMi44R0h6LCA0QywgMk0gTDIvNk0gTDMsIDEzMzNN
aHogTWF4IE1lbSAoMzE5LTE2OTcpIAcHBzEHRmFuIGFuZCBoZWF0c2lua3MgaW5jbHVkZWQgKG9u
ZSBwcm9jZXNzb3IgaW5zdGFsbGVkKQcHBzEHMVRCIDcuMksgUlBNIFNBVEEgM0dicHMgMy41aW4g
SG90LXBsdWcgSGFyZCBEcml2ZSAoMzQyLTM1ODEpIAcHBzEHUEVSQyBIMjAwIEFkYXB0ZXIgUkFJ
RCBDb250cm9sbGVyICgzNDItMDcyOSkgBwcHMQc4R0IgTWVtb3J5IHRvdGFsLCg0eDJHQikgMTYw
ME1UL3MgKGluY2x1ZGVkKQcHBzEHREVMTCBTZXJ2ZXIgYm9hcmQgaW5jbHVkZWQHBwcxByhvbmJv
YXJkKQcHBzEHRGVsbCBQb3dlckVkZ2UgUjQxNQcHBzEHUG93ZXJFZGdlIFI0MTUgQ2hhc3NpcyB3
LyB1cCB0byA0IEhvdC1QbHVnIEhEcwcHBzEHUmVhZHlSYWlscyBTbGlkaW5nIFJhaWxzIHdpdGgg
Q2FibGVNYW5hZ2VtZW50IEFybSAoMzMwLTQxNDApIAcHBzEHU2luZ2xlIDMwMHcgd2F0dCBwb3dl
ciBzdXBwbHkHBwcxB09uZSBUd28tUG9ydCBFbWJlZGRlZCBCcm9hZGNvbSBOZXRYdHJlbWUgSUkg
NTcxNiBHaWdhYml0IEV0aGVybmV0IE5JQyAoMzMxLTA1NDApIAcHBzEHRFZEKy8tUlcsIFNBVEEs
IElOVEVSTkFMICgzMTMtOTA5MSkgBwcHMQdEaWFnbm9zdGljIHRlc3RpbmcsIGJ1cm4gaW4uIFNl
cnZlciBkaWFnbm9zdGljcyBhbmQgaGFyZHdhcmUgdGVzdGluZwcHBzEHT25lIHllYXIgcGFydHMg
YW5kIGxhYm9yIGF0IGRlcG90IFttYWlsLWluL2NhcnJ5IGluIHdhcnJhbnR5XQcHBwcHBwcHU3lz
dGVtIFRvdGFsLCBVbml0IFByaWNlOgckMSw4ODYuMDAHBw0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAQgA
ACcIAAAoCAAAKwgAACwIAABECAAARQgAAI8IAACQCAAAyAgAAMkIAAAKCQAACwkAADwJAAA9CQAA
bQkAAG4JAACMCQAAjQkAAJoJAACbCQAAsgkAALMJAADlCQAA5gkAACcKAAAoCgAASQoAAEoKAACf
CgAAoAoAAMgKAADJCgAAEQsAABILAABTCwAAVAsAAFcLAABYCwAAdgsAAHkLAAB9CwAAfgsAAH8L
AADt2NDt0O3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7dDtvu3QugAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFmiUVD8AACMWaHsmRABCKgFDShQAT0oCAFFKAgBeSgIA
YUoUAHBoAAAAAA4WaGsJZQBDShQAYUoUAAApFmhrCWUANQiBQioBQ0oUAE9KAgBRSgIAXAiBXkoC
AGFKFABwaAAAAAAjFmhrCWUAQioBQ0oUAE9KAgBRSgIAXkoCAGFKFABwaAAAAAAALAAIAAABCAAA
JggAACcIAAAoCAAAKQgAACoIAAArCAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAA
AAAAAAAAegAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAB/AABrZAAAAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYAZ8AD////
/////////////////wBnxx7/////////////////////AGfAA/////////////////////8KdAAA
oAQU9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c1gz/////
//////////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNdAHDWHgAA
AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAYAABYkAUlmAQAAAAAHKwgAACwIAAAx
CAAAQwgAAEQIAACAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAB6AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAYAABYkAUlmAQAAAH8AAGtkrQAAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7ED
eCLKJgBnwAP/////////////////////AGfHHv////////////////////8AZ8AD////////////
/////////wp0AACgBBT2A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP//////////
/////xzWDP///////////////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwAD
AWH2A10AcNYeAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAARECAAARQgAAEcI
AACOCAAAjwgAAIAAAAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAHEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYBAAAA
CQAAAyQCFiQBSWYBAAAAYSQCfwAAa2RaAQAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4
IsomAGfAA/////////////////////8AZ8ce/////////////////////wBnwAP/////////////
////////CnQAAKAEFPYDRyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////
////HNYM////////////////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMB
YfYDXQBw1h4AAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABI8IAACQCAAAkggA
AMcIAADICAAAgAAAAAAAAAAAAAAAAHcAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJ
AAADJAIWJAFJZgEAAABhJAJ/AABrZAcCAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3gi
yiYAZ8AD/////////////////////wBnxx7/////////////////////AGfAA///////////////
//////8KdAAAoAQU9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz/////////////
//8c1gz///////////////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh
9gNdAHDWHgAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAEyAgAAMkIAADLCAAA
CQkAAAoJAACAAAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAABxAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAAkA
AAMkAhYkAUlmAQAAAGEkAn8AAGtktAIAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLK
JgBnwAP/////////////////////AGfHHv////////////////////8AZ8AD////////////////
/////wp0AACgBBT2A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP//////////////
/xzWDP///////////////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2
A10AcNYeAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAAQKCQAACwkAAA0JAAA7
CQAAPAkAAIAAAAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAHEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYBAAAACQAA
AyQCFiQBSWYBAAAAYSQCfwAAa2RhAwAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4Isom
AGfAA/////////////////////8AZ8ce/////////////////////wBnwAP/////////////////
////CnQAAKAEFPYDRyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////////
HNYM////////////////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMBYfYD
XQBw1h4AAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABDwJAAA9CQAAPwkAAGwJ
AABtCQAAgAAAAAAAAAAAAAAAAHcAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAAD
JAIWJAFJZgEAAABhJAJ/AABrZA4EAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYA
Z8AD/////////////////////wBnxx7/////////////////////AGfAA///////////////////
//8KdAAAoAQU9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c
1gz///////////////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNd
AHDWHgAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAEbQkAAG4JAABwCQAAiwkA
AIwJAACAAAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAAkAAAMk
AhYkAUlmAQAAAGEkAn8AAGtkuwQAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLKJgBn
wAP/////////////////////AGfHHv////////////////////8AZ8AD////////////////////
/wp0AACgBBT2A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP///////////////xzW
DP///////////////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2A10A
cNYeAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAASMCQAAjQkAAI8JAACZCQAA
mgkAAIAAAAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYBAAAACQAAAyQC
FiQBSWYBAAAAYSQCfwAAa2RoBQAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4IsomAGfA
A/////////////////////8AZ8ce/////////////////////wBnwAP/////////////////////
CnQAAKAEFPYDRyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////////HNYM
////////////////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMBYfYDXQBw
1h4AAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABJoJAACbCQAAnQkAALEJAACy
CQAAgAAAAAAAAAAAAAAAAHcAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAADJAIW
JAFJZgEAAABhJAJ/AABrZBUGAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYAZ8AD
/////////////////////wBnxx7/////////////////////AGfAA/////////////////////8K
dAAAoAQU9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c1gz/
//////////////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNdAHDW
HgAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAEsgkAALMJAAC1CQAA5AkAAOUJ
AACAAAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAAkAAAMkAhYk
AUlmAQAAAGEkAn8AAGtkwgYAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLKJgBnwAP/
////////////////////AGfHHv////////////////////8AZ8AD/////////////////////wp0
AACgBBT2A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP///////////////xzWDP//
/////////////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2A10AcNYe
AAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAATlCQAA5gkAAOgJAAAmCgAAJwoA
AIAAAAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYBAAAACQAAAyQCFiQB
SWYBAAAAYSQCfwAAa2RvBwAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4IsomAGfAA///
//////////////////8AZ8ce/////////////////////wBnwAP/////////////////////CnQA
AKAEFPYDRyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////////HNYM////
////////////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMBYfYDXQBw1h4A
AAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABCcKAAAoCgAAKgoAAEgKAABJCgAA
gAAAAAAAAAAAAAAAAHcAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAADJAIWJAFJ
ZgEAAABhJAJ/AABrZBwIAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYAZ8AD////
/////////////////wBnxx7/////////////////////AGfAA/////////////////////8KdAAA
oAQU9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c1gz/////
//////////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNdAHDWHgAA
AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAESQoAAEoKAABMCgAAngoAAJ8KAACA
AAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAAkAAAMkAhYkAUlm
AQAAAGEkAn8AAGtkyQgAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLKJgBnwAP/////
////////////////AGfHHv////////////////////8AZ8AD/////////////////////wp0AACg
BBT2A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP///////////////xzWDP//////
/////////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2A10AcNYeAAAA
/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAASfCgAAoAoAAKIKAADHCgAAyAoAAIAA
AAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYBAAAACQAAAyQCFiQBSWYB
AAAAYSQCfwAAa2R2CQAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4IsomAGfAA///////
//////////////8AZ8ce/////////////////////wBnwAP/////////////////////CnQAAKAE
FPYDRyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////////HNYM////////
////////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMBYfYDXQBw1h4AAAD/
AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABMgKAADJCgAAywoAABALAAARCwAAgAAA
AAAAAAAAAAAAAHcAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAADJAIWJAFJZgEA
AABhJAJ/AABrZCMKAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYAZ8AD////////
/////////////wBnxx7/////////////////////AGfAA/////////////////////8KdAAAoAQU
9gNHJhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c1gz/////////
//////8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNdAHDWHgAAAP8A
AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAEEQsAABILAAAUCwAAUgsAAFMLAACAAAAA
AAAAAAAAAAAAdwAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAAkAAAMkAhYkAUlmAQAA
AGEkAn8AAGtk0AoAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLKJgBnwAP/////////
////////////AGfHHv////////////////////8AZ8AD/////////////////////wp0AACgBBT2
A0cmFTYBF/YDAAAY9gMAABrWDP///////////////xvWDP///////////////xzWDP//////////
/////x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2A10AcNYeAAAA/wAA
AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAARTCwAAVAsAAFULAABWCwAAVwsAAIAAAAAA
AAAAAAAAAAB6AAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAFiQBSWYB
AAAAfwAAa2R9CwAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1kYAA/H/sQN4IsomAGfAA///////////
//////////8AZ8ce/////////////////////wBnwAP/////////////////////CnQAAKAEFPYD
RyYVNgEX9gMAABj2AwAAGtYM////////////////G9YM////////////////HNYM////////////
////HdYM////////////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAMBYfYDXQBw1h4AAAD/AAAA
/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dGsJZQAABFcLAABYCwAAWQsAAHMLAAB9CwAAgAAAAAAA
AAAAAAAAAHoAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAJAAAWJAFJZgEAAABnZHsmRAAJAAADJAIWJAFJZgEAAABhJAIGAAAWJAFJZgEA
AAB/AABrZCoMAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWRgAD8f+xA3giyiYAZ8AD////////////
/////////wBnxx7/////////////////////AGfAA/////////////////////8KdAAAoAQU9gNH
JhU2ARf2AwAAGPYDAAAa1gz///////////////8b1gz///////////////8c1gz/////////////
//8d1gz///////////////801gYAAQUDAAA01gYAAQoDbABC1gMAAwFh9gNdAHDWHgAAAP8AAAD/
AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0awllAAAEfQsAAH4LAAB/CwAAgAAAAAAAAAAAAAAAAH4A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AH8AAGtk1wwAABYkARckAUlmAQAAAAKWbAAHlP8ACNZGAAPx/7EDeCLKJgBnwAP/////////////
////////AGfHHv////////////////////8AZ8AD/////////////////////wp0AACgBBT2A0cm
FTYBF/YDAAAY9gMAABrWDP///////////////xvWDP///////////////xzWDP//////////////
/x3WDP///////////////zTWBgABBQMAADTWBgABCgNsAELWAwADAWH2A10AcNYeAAAA/wAAAP8A
AAAAAP8AAAD/AAAAAAD/AAAA/wAAeXRrCWUAAAI2ACZQAQAxkGgBOnCUVD8AH7DQLyCw4D0hsAgH
IrAIByOQoAUkkKAFJbAAABew0AIYsNACDJDQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AwADAS/WCwADD////////+D/QtYDAAMBYfYDXQBw1h4AAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8A
AAD/AAB5dGsJZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABeBA8AEgABAAsBDwAHAAAAAAAAAAAABAAIAAAACAAAAA4AAAAO
AAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyBgAAGAAAAMADAADQAwAA
4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQAAFAEAABgBAAAcAQAAIAEAACQBAAAwAMAANADAADg
AwAA8AMAAAAEAAAQBAAAMgYAACgCAADYAQAA6AEAACAEAAAwBAAAQAQAAFAEAABgBAAAcAQAAIAE
AACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABABAAAUAQAAGAEAABwBAAAgAQA
AJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAEAABQBAAAYAQAAHAEAACABAAA
kAQAAMADAADQAwAA4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQAAFAEAABgBAAAcAQAAIAEAACQ
BAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABABAAAUAQAAGAEAABwBAAAgAQAAJAE
AADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAEAABQBAAAYAQAAHAEAACABAAAkAQA
ADgBAABYAQAA+AEAAAgCAAAYAgAAVgIAAH4CAAAUAAAAX0gBBG1ICQRuSAkEc0gJBHRICQQAAAAA
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
DCZMSRNM8J1KYOihByYPIPktR7N04y8AAAD//wMAUEsDBBQABgAIAAAAIQAN0ZCftgAAABsBAAAn
AAAAdGhlbWUvdGhlbWUvX3JlbHMvdGhlbWVNYW5hZ2VyLnhtbC5yZWxzhI9NCsIwFIT3gncIb2/T
uhCRJt2I0K3UA4TkNQ02PyRR7O0NriwILodhvplpu5edyRNjMt4xaKoaCDrplXGawW247I5AUhZO
idk7ZLBggo5vN+0VZ5FLKE0mJFIoLjGYcg4nSpOc0IpU+YCuOKOPVuQio6ZByLvQSPd1faDxmwF8
xSS9YhB71QAZllCa/7P9OBqJZy8fFl3+UUFz2YUFKKLGzOAjm6pMBMpburrE3wAAAP//AwBQSwEC
LQAUAAYACAAAACEA6d4Pv/8AAAAcAgAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNd
LnhtbFBLAQItABQABgAIAAAAIQCl1qfnwAAAADYBAAALAAAAAAAAAAAAAAAAADABAABfcmVscy8u
cmVsc1BLAQItABQABgAIAAAAIQBreZYWgwAAAIoAAAAcAAAAAAAAAAAAAAAAABkCAAB0aGVtZS90
aGVtZS90aGVtZU1hbmFnZXIueG1sUEsBAi0AFAAGAAgAAAAhADDdQymoBgAApBsAABYAAAAAAAAA
AAAAAAAA1gIAAHRoZW1lL3RoZW1lL3RoZW1lMS54bWxQSwECLQAUAAYACAAAACEADdGQn7YAAAAb
AQAAJwAAAAAAAAAAAAAAAACyCQAAdGhlbWUvdGhlbWUvX3JlbHMvdGhlbWVNYW5hZ2VyLnhtbC5y
ZWxzUEsFBgAAAAAFAAUAXQEAAK0KAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVU
Ri04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxhOmNsck1hcCB4bWxuczphPSJodHRwOi8vc2NoZW1h
cy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIgYmcxPSJsdDEiIHR4MT0i
ZGsxIiBiZzI9Imx0MiIgdHgyPSJkazIiIGFjY2VudDE9ImFjY2VudDEiIGFjY2VudDI9ImFjY2Vu
dDIiIGFjY2VudDM9ImFjY2VudDMiIGFjY2VudDQ9ImFjY2VudDQiIGFjY2VudDU9ImFjY2VudDUi
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB6AFeAC0AIKCcjAAAAAAAAAAAAAA
AAAAAH4DAAB+AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAABLgxEA8BAACAD8/QEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAISFgAAAAACPD/DwAJAT8AAOQEAAD///9/////f////3////9/////f////3////9/awll
AAAEAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQQAAAAAAAAAAAAAAAAAAAAAAAAQHAAAAwAAAAAA
AAAAAHgAAAB4AAAAAAAAAAAAAACgBQAAAAAAAAsAAAAAAAAA3AAAAP//EgAAAAAAAAAAAAAAAAAA
AAsAUABhAHUAbAAgAEcAZQBvAHIAZwBlAAsAUABhAHUAbAAgAEcAZQBvAHIAZwBlAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCrkQgAKyez2TAAAAB0AQAA
EQAAAAEAAACQAAAAAgAAAJgAAAADAAAApAAAAAQAAACwAAAABQAAAMQAAAAGAAAA0AAAAAcAAADc
AAAACAAAAPAAAAAJAAAABAEAABIAAAAQAQAACgAAADABAAAMAAAAPAEAAA0AAABIAQAADgAAAFQB
AAAPAAAAXAEAABAAAABkAQAAEwAAAGwBAAACAAAA5AQAAB4AAAAEAAAAAAAAAB4AAAAEAAAAAAAA
AB4AAAAMAAAAUGF1bCBHZW9yZ2UAHgAAAAQAAAAAAAAAHgAAAAQAAAAAAAAAHgAAAAwAAABOb3Jt
YWwuZG90bQAeAAAADAAAAFBhdWwgR2VvcmdlAB4AAAAEAAAAMgAAAB4AAAAYAAAATWljcm9zb2Z0
IE9mZmljZSBXb3JkAAAAQAAAAAAAAAAAAAAAQAAAAACU9ZDi1s8BQAAAAACU9ZDi1s8BAwAAAAEA
AAADAAAAhQAAAAMAAAD6AgAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8A
AAUBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAALVzdWcLhsQk5cIACss+a4wAAAA/AAAAAwAAAABAAAA
aAAAAA8AAABwAAAABQAAAJAAAAAGAAAAmAAAABEAAACgAAAAFwAAAKgAAAALAAAAsAAAABAAAAC4
AAAAEwAAAMAAAAAWAAAAyAAAAA0AAADQAAAADAAAAN0AAAACAAAA5AQAAB4AAAAYAAAAUExHIEVu
dGVycHJpc2VzLCBJbmMuAAAAAwAAAAYAAAADAAAAAQAAAAMAAAB+AwAAAwAAAAAADgALAAAAAAAA
AAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAABAAAAAQAAAAAMEAAAAgAAAB4AAAAGAAAAVGl0
bGUAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA
AAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAA
EgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAAP7///8dAAAAHgAAAB8AAAAg
AAAAIQAAACIAAAAjAAAA/v///yUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4A
AAAvAAAAMAAAADEAAAAyAAAA/v///zQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAD+////PAAA
AD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAP7////9////RQAAAP7////+/////v//////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////UgBvAG8AdAAgAEUA
bgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQH/
/////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAAAAAAAAAAAAYIPCnOLWzwFHAAAAgAAAAAAA
AABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAACgACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAABwAAAAAEAAAAAAAADEAVABhAGIAbABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAIBAQAAAAYAAAD/////AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAJAAAAAYcAAAAAAAAVwBvAHIAZABEAG8AYwB1AG0AZQBuAHQAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAgECAAAABQAAAP////8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODYAAAAAAAAFAFMAdQBtAG0AYQBy
AHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAACAf//
/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAEAAAAAAA
AAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAA
AAAAAAAAAAA4AAIBBAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAOwAAAAAQAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////AQD+/wMKAAD/////BgkC
AAAAAADAAAAAAAAARiAAAABNaWNyb3NvZnQgV29yZCA5Ny0yMDAzIERvY3VtZW50AAoAAABNU1dv
cmREb2MAEAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQA
cgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAf//////
////AwAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAACgJLFJ49bPAU0AAAAABAAAAAAAAEQA
YQB0AGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAKAAIB////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
HAAAAAAQAAAAAAAAMQBUAGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA4AAgEBAAAABgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAkAAAABhwAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBlAG4AdAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACAQIAAAAFAAAA/////wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NgAAAAAAAAEAAAACAAAAAwAAAAQAAAAF
AAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMA
AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAAP7///8dAAAAHgAAAB8AAAAgAAAAIQAA
ACIAAAAjAAAA/v///yUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAA
MAAAADEAAAAyAAAA/v///zQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAD+////////////////
/////////////////////////////////////////////////////////0wAAAD9/////v////7/
///+////SwAAAP//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////AQAAAP7///8DAAAABAAAAAUA
AAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAA/v//////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////8GAAAA5AEAAAUAAAACAAAAFAAA
AF8AQQBkAEgAbwBjAFIAZQB2AGkAZQB3AEMAeQBjAGwAZQBJAEQAAAADAAAAEAAAAF8ATgBlAHcA
UgBlAHYAaQBlAHcAQwB5AGMAbABlAAAABAAAAA4AAABfAEUAbQBhAGkAbABTAHUAYgBqAGUAYwB0
AAAABQAAAA0AAABfAEEAdQB0AGgAbwByAEUAbQBhAGkAbAAAAAAABgAAABgAAABfAEEAdQB0AGgA
bwByAEUAbQBhAGkAbABEAGkAcwBwAGwAYQB5AE4AYQBtAGUAAAACAAAAsAQAABMAAAAJBAAAAwAA
AMHeO7IfAAAAAQAAAAAAAAAfAAAAMQAAAFsAVwBnAC0AdABlAHMAdAAtAGYAcgBhAG0AZQB3AG8A
cgBrAF0AIABNAGEAYwBoAGkAbgBlACAAcwB1AGcAZwBlAHMAdABpAG8AbgBzACAAZgByAG8AbQAg
AEEATQBEAAAAAAAfAAAAEwAAAHAAZwBlAG8AcgBnAGUAQABwAGwAZwBpAG4AYwAuAGMAbwBtAAAA
AAAfAAAAFwAAAFAAYQB1AGwAIABMAC4AIABHAGUAbwByAGcAZQAoAE8AZgBmAGkAYwBlACkAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4A
ZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIB////////////
////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAAAQAAAAAAAABQBEAG8A
YwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAA
ADgAAgEEAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA
XAMAAAAAAAABAEMAbwBtAHAATwBiAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAEgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD+/wMKAAD/////BgkCAAAAAADA
AAAAAAAARiAAAABNaWNyb3NvZnQgV29yZCA5Ny0yMDAzIERvY3VtZW50AAoAAABNU1dvcmREb2MA
EAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQEC
AAAAAAAAAAAAAAAAAAAAAAACAAAAAtXN1ZwuGxCTlwgAKyz5rkQAAAAF1c3VnC4bEJOXCAArLPmu
QAEAAPwAAAAMAAAAAQAAAGgAAAAPAAAAcAAAAAUAAACQAAAABgAAAJgAAAARAAAAoAAAABcAAACo
AAAACwAAALAAAAAQAAAAuAAAABMAAADAAAAAFgAAAMgAAAANAAAA0AAAAAwAAADdAAAAAgAAAOQE
AAAeAAAAGAAAAFBMRyBFbnRlcnByaXNlcywgSW5jLgAAAAMAAAAGAAAAAwAAAAEAAAADAAAAfgMA
AAMAAAAAAA4ACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAQAAAAEAAAAADBAA
AAIAAAAeAAAABgAAAFRpdGxlAAMAAAABAAAAABwCAAAIAAAAAAAAAEgAAAABAAAAJAEAAAAAAIAs
AQAAAgAAADQBAAADAAAAPAEAAAQAAABIAQAABQAAALQBAAA=

------=_NextPart_000_0A90_01CFD6C1.C3A50DC0
Content-Type: application/msword;
	name="2U-IBM x3755AMD Opteron 2.5GHz,.doc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="2U-IBM x3755AMD Opteron 2.5GHz,.doc"

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAARgAAAAAAAAAA
EAAASAAAAAEAAAD+////AAAAAEcAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAD8AJBAAA8BK/AAAAAAAAEAAAAAAACAAADAoAAA4AYmpiak8LTwsAAAAAAAAAAAAAAAAAAAAA
AAAJBBYAODIAAC1hAQAtYQEADAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAAHwFAAAAAAAAfAUAANYS
AAAAAAAA1hIAAAAAAADWEgAAAAAAANYSAAAAAAAA1hIAABQAAAAAAAAAAAAAAP////8AAAAA6hIA
AAAAAADqEgAAAAAAAOoSAAAAAAAA6hIAABQAAAD+EgAAjAAAAOoSAAAAAAAAuhcAAF4BAACKEwAA
AAAAAIoTAAAAAAAAihMAAAAAAACKEwAAAAAAAIoTAAAAAAAAZRQAAAAAAABlFAAAAAAAAGUUAAAA
AAAAORcAAAIAAAA7FwAAAAAAADsXAAAAAAAAOxcAAAAAAAA7FwAAAAAAADsXAAAAAAAAOxcAACQA
AAAYGQAAsgIAAMobAABWAAAAXxcAABUAAAAAAAAAAAAAAAAAAAAAAAAA1hIAAAAAAABlFAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABlFAAAAAAAAGUUAAAAAAAAZRQAAAAAAABlFAAAAAAAAF8XAAAAAAAA
AAAAAAAAAADWEgAAAAAAANYSAAAAAAAAihMAAAAAAAAAAAAAAAAAAIoTAADbAAAAdBcAABYAAACt
FAAAAAAAAK0UAAAAAAAArRQAAAAAAABlFAAAIgAAANYSAAAAAAAAihMAAAAAAADWEgAAAAAAAIoT
AAAAAAAAORcAAAAAAAAAAAAAAAAAAK0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZRQAAAAAAAA5FwAAAAAAAAAAAAAAAAAArRQAAAAAAAAAAAAA
AAAAAK0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArRQAAAAAAACKEwAAAAAAAP////8AAAAAQDz2ZuLW
zwEAAAAAAAAAAP////8AAAAAhxQAAAoAAACtFAAAAAAAAAAAAAAAAAAAJRcAABQAAACKFwAAMAAA
ALoXAAAAAAAArRQAAAAAAAAgHAAAAAAAAJEUAAAcAAAAIBwAAAAAAACtFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACt
FAAAFAAAACAcAAAAAAAAAAAAAAAAAADWEgAAAAAAAMEUAABkAgAAZRQAAAAAAABlFAAAAAAAAK0U
AAAAAAAAZRQAAAAAAABlFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZRQA
AAAAAABlFAAAAAAAAGUUAAAAAAAAXxcAAAAAAABfFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAArRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUUAAAA
AAAAZRQAAAAAAABlFAAAAAAAALoXAAAAAAAAZRQAAAAAAABlFAAAAAAAAGUUAAAAAAAAZRQAAAAA
AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA
AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA
/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAACAcAAAAAAAAZRQAAAAAAABl
FAAAAAAAAGUUAAAAAAAAZRQAAAAAAABlFAAAAAAAAGUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlFAAAAAAAAGUUAAAAAAAAZRQA
AAAAAAB8BQAAIAwAAJwRAAA6AQAABQASAQAACQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAHoAcH
oAdJQk0geDM3NTVBTUQgT3B0ZXJvbiAyLjVHSHosBwegB6AHB1F0eS4HQmFzaWMgRGVzY3JpcHRp
b24HBzIHQU1EIE9wdGVyb24gMi41R0h6LCAxNiBDb3JlIFByb2Nlc3NvcnMgMTZNQiBjYWNoZSAo
aW5jbCkHBzIHRmFuIGFuZCBoZWF0c2lua3MgaW5jbHVkZWQgKHR3byBwcm9jZXNzb3JzIGluc3Rh
bGxlZCkHBzEHSUJNIFNlcnZlciAxIFRCIDcyMDAgU0FUQSAzLjVpbiBIUwcHOAc0R0IgRUNDICh0
b3RhbCAzMkdCIGluc3RhbGxlZCkgKGluY2x1ZGVkKQcHMQdJQk0gU2VydmVyIGJvYXJkIGluY2x1
ZGVkBwcxByhvbmJvYXJkKQcHMQdJQk0gIHgzNzU1IFJhY2sgc3lzdGVtBwcxBzJVIHJhY2sgaW5j
bHVkZWQHBzEHKHJhaWwga2l0IGluY2x1ZGVkKQcHMQdJQk0gT3B0aWNhbCBkcml2ZSAoRFZEUlcp
BwcxB0RpYWdub3N0aWMgdGVzdGluZywgYnVybiBpbi4gU2VydmVyIGRpYWdub3N0aWNzIGFuZCBo
YXJkd2FyZSB0ZXN0aW5nBwegB6AHBwdTeXN0ZW0gVG90YWwsIFVuaXQgUHJpY2U6ICAkOCwxMjAu
MDAgBwcNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAggA
AAQIAAAFCAAABwgAACQIAAAlCAAAKQgAACoIAABBCAAAQggAAEQIAAB9CAAAfggAAIAIAACbCAAA
tQgAALYIAAC3CAAAuQgAANwIAADdCAAA3wgAAAkJAAAKCQAADAkAACYJAAAnCQAAMwkAADQJAAA2
CQAATQkAAE4JAABQCQAAYQkAAGIJAAB4CQAAeQkAAHsJAACVCQAAlgkAAJgJAADdCQAA3gkAAOIJ
AADjCQAA5AkAAAAKAADv3dXdxdXd1bTV76bV76bvptXvptXvptXvptWm1e+m1e+Y1abV76bV76bV
itV57wAAACAWaEVtWgA1CIFDShAAT0oCAFFKAgBcCIFeSgIAYUoQAAAaFmhFbVoAQ0oUAE9KAgBR
SgIAXkoCAGFKFAAAGhZoRW1aAENKEABPSgIAUUoCAF5KAgBhShAAABoWaEVtWgBDShIAT0oCAFFK
AgBeSgIAYUoSAAAgFmhFbVoANQiBQ0oUAE9KAgBRSgIAXAiBXkoCAGFKFAAAHhZoRW1aADUIgTYI
gU9KAwBRSgMAXAiBXQiBXkoCAAAOFmhFbVoAQ0oUAGFKFAAAIxZoRW1aAEIqAUNKFABPSgIAUUoC
AF5KAgBhShQAcGgAAAAAIBZoRW1aADUIgUNKEgBPSgIAUUoCAFwIgV5KAgBhShIALwAIAAACCAAA
BAgAAAUIAAAHCAAAJAgAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAPkA
AAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AABrZAAAAAAWJAEXJAFJZgEAAAAClmwAB5QOAQjW
MAAC8f+xA/0bAGfAAwgBAAAIAQAACAEAAP////8AZ0wYCAEAAP////8IAQAA/////wnWBGgBaAEK
dAAAoAQS1hT///8AADMAAAAA////AAAzAAAAABT2AwwcFTYBF/YDAAAY9gMAABrWCAAAAP8AAAD/
G9YIAAAA//////8c1ggAAAD/AAAA/x3WCP//////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAIB
YfYDXQBw1hT///8AADMAAAAA////AAAzAAAAAHl0RW1aAAYAABYkAUlmAQAAAAAFJAgAACUIAAAn
CAAAKQgAAIkAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABYkAUlmAQAAAHYAAGtk3QAAABYkARckAUlmAQAA
AAKWbAAHlDsBCNYwAALx/7ED/RuAZsAD/////wgBAAD//////////4BmTBj/////////////////
////CdYEAQEBAQp0AACgBBLWFAAAAAD///8AAAAAAAAA////AAAAFPYDDBwVNgEX9gMAABj2AwAA
GtYI//////////8b1ggAAAD//////xzWCP//////////HdYI//////////801gYAAQUDAAA01gYA
AQoDbABC1gMAAgFh9gNdAHDWFAAAAAD///8AAAAAAAAA////AAAAeXRFbVoAAAMpCAAAKggAAC8I
AABBCAAAiQAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAACQAAAyQBFiQBSWYBAAAAYSQBdgAAa2TIAQAAFiQBFyQBSWYBAAAA
ApZsAAeUDgEI1jAAAvH/sQP9GwBnwAMIAQAACAEAAAAAAAD/////AGdMGAgBAAD/////AAAAAP//
//8J1gRhAWEBCnQAAKAEEtYUAAAAAAAzAAAAAAAAAAAAMwAAAAAU9gMMHBU2ARf2AwAAGPYDAAAa
1ggAAAD/AAAA/xvWCAAAAP//////HNYIAAAA/wAAAP8d1gj//////////zTWBgABBQMAADTWBgAB
CgNsAELWAwACAWH2A10AcNYUAAAAAAAzAAAAAAAAAAAAMwAAAAB5dEVtWgAAA0EIAABCCAAARAgA
AH0IAACYAAAAAAAAAAAAAAAAjwAAAAAAAAAAAAAAAIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAADJAEWJAFJ
ZgEAAABhJAFnAABrZKUCAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWMAAC8f+xA/0bAGfAA/////8A
AAAAAAAAAAAAAAAAZ0wY/////wAAAAAAAAAAAAAAAAp0AACgBBT2AwwcFTYBF/YDAAAY9gMAABrW
CP//////////G9YIAAAA/wAAAP8c1ggAAAD/AAAA/x3WCAAAAP8AAAD/NNYGAAEFAwAANNYGAAEK
A2wAQtYDAAIBYfYDXQBw1hQAAAD/AAAA/wAAAAAA/wAAAP8AAHl0RW1aAAADfQgAAH4IAACACAAA
tggAAIkAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAYAABYkAUlmAQAAAAkAAAMkARYkAUlmAQAAAGEkAXYAAGtkOgMAABYkARckAUlmAQAAAAKW
bAAHlP8ACNYwAALx/7ED/RsAZ8AD/////wAAAAAAAAAAAAAAAABnTBj/////AAAAAAAAAAAAAAAA
CdYEAAABAQp0AACgBBLWFAAAAP8AAAD/AAAAAAAA////AAAAFPYDDBwVNgEX9gMAABj2AwAAGtYI
//////////8b1ggAAAD/AAAA/xzWCAAAAP8AAAD/HdYIAAAA/wAAAP801gYAAQUDAAA01gYAAQoD
bABC1gMAAgFh9gNdAHDWFAAAAP8AAAD/AAAAAAAA////AAAAeXRFbVoAAAO2CAAAtwgAALkIAADc
CAAAiQAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAABgAAFiQBSWYBAAAACQAAAyQBFiQBSWYBAAAAYSQBdgAAa2TtAwAAFiQBFyQBSWYBAAAAApZs
AAeU/wAI1jAAAvH/sQP9GwBnwAP/////AAAAAAAAAAAAAAAAAGdMGP////8AAAAAAAAAAAAAAAAJ
1gQAAAEBCnQAAKAEEtYUAAAA/wAAAP8AAAAAAAD///8AAAAU9gMMHBU2ARf2AwAAGPYDAAAa1gj/
/////////xvWCAAAAP8AAAD/HNYIAAAA/wAAAP8d1ggAAAD/AAAA/zTWBgABBQMAADTWBgABCgNs
AELWAwACAWH2A10AcNYUAAAA/wAAAP8AAAAAAAD///8AAAB5dEVtWgAAA9wIAADdCAAA3wgAAAkJ
AACYAAAAAAAAAAAAAAAAjwAAAAAAAAAAAAAAAIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAWJAFJZgEAAAAJAAADJAEWJAFJZgEA
AABhJAFnAABrZKAEAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWMAAC8f+xA/0bAGfAA/////8AAAAA
AAAAAAAAAAAAZ0wY/////wAAAAAAAAAA/////wp0AACgBBT2AwwcFTYBF/YDAAAY9gMAABrWCP//
////////G9YIAAAA/wAAAP8c1ggAAAD/AAAA/x3WCAAAAP//////NNYGAAEFAwAANNYGAAEKA2wA
QtYDAAIBYfYDXQBw1hQAAAD/AAAA/wAAAAAA/wAAAP8AAHl0RW1aAAADCQkAAAoJAAAMCQAAJgkA
AIkAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAYAABYkAUlmAQAAAAkAAAMkARYkAUlmAQAAAGEkAXYAAGtkQwUAABYkARckAUlmAQAAAAKWbAAH
lP8ACNYwAALx/7ED/RsAZ8ADAAAAAAAAAAAAAAAAAAAAAABnTBgAAAAAAAAAAAAAAAAAAAAACdYE
AAABAQp0AACgBBLWFAAAAP8AAAD/AAAAAAAA////AAAAFPYDDBwVNgEX9gMAABj2AwAAGtYIAAAA
/wAAAP8b1ggAAAD/AAAA/xzWCAAAAP8AAAD/HdYIAAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC
1gMAAgFh9gNdAHDWFAAAAP8AAAD/AAAAAAAA////AAAAeXRFbVoAAAMmCQAAJwkAACkJAAAzCQAA
iQAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BgAAFiQBSWYBAAAACQAAAyQBFiQBSWYBAAAAYSQBdgAAa2ToBQAAFiQBFyQBSWYBAAAAApZsAAeU
/wAI1jAAAvH/sQP9GwBnwAP/////AAAAAAAAAAAAAAAAAGdMGP////8AAAAAAAAAAAAAAAAJ1gQA
AAEBCnQAAKAEEtYUAAAA/wAAAP8AAAAAAAD///8AAAAU9gMMHBU2ARf2AwAAGPYDAAAa1gj/////
/////xvWCAAAAP8AAAD/HNYIAAAA/wAAAP8d1ggAAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELW
AwACAWH2A10AcNYUAAAA/wAAAP8AAAAAAAD///8AAAB5dEVtWgAAAzMJAAA0CQAANgkAAE0JAACJ
AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG
AAAWJAFJZgEAAAAJAAADJAEWJAFJZgEAAABhJAF2AABrZJsGAAAWJAEXJAFJZgEAAAAClmwAB5T/
AAjWMAAC8f+xA/0bAGfAA/////8AAAAAAAAAAAAAAAAAZ0wY/////wAAAAAAAAAAAAAAAAnWBAAA
AQEKdAAAoAQS1hQAAAD/AAAA/wAAAAAAAP///wAAABT2AwwcFTYBF/YDAAAY9gMAABrWCP//////
////G9YIAAAA/wAAAP8c1ggAAAD/AAAA/x3WCAAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYD
AAIBYfYDXQBw1hQAAAD/AAAA/wAAAAAAAP///wAAAHl0RW1aAAADTQkAAE4JAABQCQAAYQkAAIkA
AAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYA
ABYkAUlmAQAAAAkAAAMkARYkAUlmAQAAAGEkAXYAAGtkTgcAABYkARckAUlmAQAAAAKWbAAHlP8A
CNYwAALx/7ED/RsAZ8AD/////wAAAAAAAAAAAAAAAABnTBj/////AAAAAAAAAAAAAAAACdYEAAAB
AQp0AACgBBLWFAAAAP8AAAD/AAAAAAAA////AAAAFPYDDBwVNgEX9gMAABj2AwAAGtYI////////
//8b1ggAAAD/AAAA/xzWCAAAAP8AAAD/HdYIAAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMA
AgFh9gNdAHDWFAAAAP8AAAD/AAAAAAAA////AAAAeXRFbVoAAANhCQAAYgkAAGQJAAB4CQAAiQAA
AAAAAAAAAAAAAIAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA
FiQBSWYBAAAACQAAAyQBFiQBSWYBAAAAYSQBdgAAa2QBCAAAFiQBFyQBSWYBAAAAApZsAAeU/wAI
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAADJAIWJAFJZgEA
AABhJAJnZJ9xkAAGAAAWJAFJZgEAAAB2AABrZM0KAAAWJAEXJAFJZgEAAAAClmwAB5T/AAjWMAAC
8f+xA/0bAGfAAwAAAAD///////////////8AZ0wYAAAAAP///////////////wnWBAEBAQEKdAAA
oAQS1hQAAAAA////AAAAAAAAAP///wAAABT2AwwcFTYBF/YDAAAY9gMAABrWCAAAAP8AAAD/G9YI
//////////8c1gj//////////x3WCP//////////NNYGAAEFAwAANNYGAAEKA2wAQtYDAAIBYfYD
XQBw1hQAAAAA////AAAAAAAAAP///wAAAHl0RW1aAAADAAoAAAgKAAAKCgAACwoAAAwKAADv3tbP
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBVoRW1aABZo
lFQ/AAAOFmhFbVoAQ0oUAGFKFAAAIBZoRW1aADUIgUNKEgBPSgIAUUoCAFwIgV5KAgBhShIAACAW
aJ9xkAA1CIFDShIAT0oCAFFKAgBcCIFeSgIAYUoSAAQKCgAACwoAAAwKAACJAAAAAAAAAAAAAAAA
hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAZ2RFbVoAdgAAa2SACwAAFiQBFyQBSWYBAAAAApZsAAeU/wAI1jAAAvH/
sQP9GwBnwAP/////////////////////AGdMGP////////////////////8J1gQAAAEBCnQAAKAE
EtYUAAAA/wAAAP8AAAAAAAD///8AAAAU9gMMHBU2ARf2AwAAGPYDAAAa1gj//////////xvWCP//
////////HNYI//////////8d1gj//////////zTWBgABBQMAADTWBgABCgNsAELWAwACAWH2A10A
cNYUAAAA/wAAAP8AAAAAAAD///8AAAB5dEVtWgAAAjYAJlABADGQaAE6cJRUPwAfsNAvILDgPSGw
CAcisAgHI5CgBSSQoAUlsAAAF7DQAhiw0AIMkNACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4EDwASAAEACwEPAAcAAAAAAAAAAAAEAAgAAAAIAAAADgAA
AA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
b9O6EJEm3YjQrdQDhOQ1DTY/JFHs7Q2uLAguh2G+mWm7l53JE2My3jFoqhoIOumVcZrBbbjsjkBS
Fk6J2TtksGCCjm837RVnkUsoTSYkUiguMZhyDidKk5zQilT5gK44o49W5CKjpkHIu9BI93V9oPGb
AXzFJL1iEHvVABmWUJr/s/04GolnLx8WXf5RQXPZhQUoosbM4CObqkwEylu6usTfAAAA//8DAFBL
AQItABQABgAIAAAAIQDp3g+//wAAABwCAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBl
c10ueG1sUEsBAi0AFAAGAAgAAAAhAKXWp+fAAAAANgEAAAsAAAAAAAAAAAAAAAAAMAEAAF9yZWxz
Ly5yZWxzUEsBAi0AFAAGAAgAAAAhAGt5lhaDAAAAigAAABwAAAAAAAAAAAAAAAAAGQIAAHRoZW1l
L3RoZW1lL3RoZW1lTWFuYWdlci54bWxQSwECLQAUAAYACAAAACEAMN1DKagGAACkGwAAFgAAAAAA
AAAAAAAAAADWAgAAdGhlbWUvdGhlbWUvdGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQAN0ZCftgAA
ABsBAAAnAAAAAAAAAAAAAAAAALIJAAB0aGVtZS90aGVtZS9fcmVscy90aGVtZU1hbmFnZXIueG1s
LnJlbHNQSwUGAAAAAAUABQBdAQAArQoAAAAAPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPGE6Y2xyTWFwIHhtbG5zOmE9Imh0dHA6Ly9zY2hl
bWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIiBiZzE9Imx0MSIgdHgx
PSJkazEiIGJnMj0ibHQyIiB0eDI9ImRrMiIgYWNjZW50MT0iYWNjZW50MSIgYWNjZW50Mj0iYWNj
ZW50MiIgYWNjZW50Mz0iYWNjZW50MyIgYWNjZW50ND0iYWNjZW50NCIgYWNjZW50NT0iYWNjZW50
NSIgYWNjZW50Nj0iYWNjZW50NiIgaGxpbms9ImhsaW5rIiBmb2xIbGluaz0iZm9sSGxpbmsiLz4A
AAAADAIAACUAADIAAAAA/////wAIAAAACgAADAoAAAYAAAAXAAAAAAgAACQIAAApCAAAQQgAAH0I
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAACAegBXgAtACCgnIwAAAAAAAAAAAAAAAAAAALAgAACwIAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAS4MR
APAQAAgA/P0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEhYAAAAAAjw/w8ACQE/AADkBAAA////
f////3////9/////f////3////9/////f0VtWgAABAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAACEE
AAAAAAAAAAAAAAAAAAAAAAAAEBwAAAQAAAAAAAAAAAB4AAAAeAAAAAAAAAAAAAAAoAUAAAAAAAAL
AAAAAAAAANwAAAD//xIAAAAAAAAAAAAAAAAAAAALAFAAYQB1AGwAIABHAGUAbwByAGcAZQALAFAA
YQB1AGwAIABHAGUAbwByAGcAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAP7/AAAFAQIAAAAAAAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAHQB
AAARAAAAAQAAAJAAAAACAAAAmAAAAAMAAACkAAAABAAAALAAAAAFAAAAxAAAAAYAAADQAAAABwAA
ANwAAAAIAAAA8AAAAAkAAAAEAQAAEgAAABABAAAKAAAAMAEAAAwAAAA8AQAADQAAAEgBAAAOAAAA
VAEAAA8AAABcAQAAEAAAAGQBAAATAAAAbAEAAAIAAADkBAAAHgAAAAQAAAAAAAAAHgAAAAQAAAAA
AAAAHgAAAAwAAABQYXVsIEdlb3JnZQAeAAAABAAAAAAAAAAeAAAABAAAAAAAAAAeAAAADAAAAE5v
cm1hbC5kb3RtAB4AAAAMAAAAUGF1bCBHZW9yZ2UAHgAAAAQAAAAyAAAAHgAAABgAAABNaWNyb3Nv
ZnQgT2ZmaWNlIFdvcmQAAABAAAAAAAAAAAAAAABAAAAAAAhvSeLWzwFAAAAAAAhvSeLWzwEDAAAA
AQAAAAMAAABOAAAAAwAAAL4BAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+
/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAAAtXN1ZwuGxCTlwgAKyz5rjAAAAD8AAAADAAAAAEA
AABoAAAADwAAAHAAAAAFAAAAkAAAAAYAAACYAAAAEQAAAKAAAAAXAAAAqAAAAAsAAACwAAAAEAAA
ALgAAAATAAAAwAAAABYAAADIAAAADQAAANAAAAAMAAAA3QAAAAIAAADkBAAAHgAAABgAAABQTEcg
RW50ZXJwcmlzZXMsIEluYy4AAAADAAAAAwAAAAMAAAABAAAAAwAAAAsCAAADAAAAAAAOAAsAAAAA
AAAACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAABAAAAAAwQAAACAAAAHgAAAAYAAABU
aXRsZQADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAD
AAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEA
AAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAP7///8bAAAAHAAAAB0AAAAeAAAAHwAA
ACAAAAAhAAAA/v///yMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAA
LgAAAC8AAAAwAAAA/v///zIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAD+////OgAAADsAAAA8
AAAAPQAAAD4AAAA/AAAAQAAAAP7////9////QwAAAP7////+/////v//////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////9SAG8AbwB0ACAA
RQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAF
Af//////////AwAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAgBQdn4tbPAUUAAACAAAAA
AAAAAEQAYQB0AGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAKAAIB////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAGgAAAAAQAAAAAAAAMQBUAGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAgEBAAAABgAAAP////8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAIBwAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBlAG4AdAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACAQIAAAAFAAAA/////wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MgAAAAAAAAUAUwB1AG0AbQBh
AHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIB
////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAQAAAA
AAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4A
AAAAAAAAAAAAADgAAgEEAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAA5AAAAABAAAAAAAAABAEMAbwBtAHAATwBiAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP7/////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////8BAP7/AwoAAP////8G
CQIAAAAAAMAAAAAAAABGIAAAAE1pY3Jvc29mdCBXb3JkIDk3LTIwMDMgRG9jdW1lbnQACgAAAE1T
V29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFIAbwBvAHQAIABFAG4A
dAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB////
//////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAFAe0Enj1s8BSwAAAAAEAAAAAAAA
RABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAaAAAAABAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAQEAAAAGAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAACIAAAAgHAAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBAgAAAAUAAAD/////AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgyAAAAAAAAAQAAAAIAAAADAAAABAAA
AAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAA
EwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAP7///8bAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAh
AAAA/v///yMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8A
AAAwAAAA/v///zIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAD+////////////////////////
/////////////////////////////////////////////////0oAAAD9/////v////7////+////
SQAAAP//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////8BAAAA/v///wMAAAAEAAAA
BQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAD+////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////wYAAADkAQAABQAAAAIAAAAU
AAAAXwBBAGQASABvAGMAUgBlAHYAaQBlAHcAQwB5AGMAbABlAEkARAAAAAMAAAAQAAAAXwBOAGUA
dwBSAGUAdgBpAGUAdwBDAHkAYwBsAGUAAAAEAAAADgAAAF8ARQBtAGEAaQBsAFMAdQBiAGoAZQBj
AHQAAAAFAAAADQAAAF8AQQB1AHQAaABvAHIARQBtAGEAaQBsAAAAAAAGAAAAGAAAAF8AQQB1AHQA
aABvAHIARQBtAGEAaQBsAEQAaQBzAHAAbABhAHkATgBhAG0AZQAAAAIAAACwBAAAEwAAAAkEAAAD
AAAA/XueHh8AAAABAAAAAAAAAB8AAAAxAAAAWwBXAGcALQB0AGUAcwB0AC0AZgByAGEAbQBlAHcA
bwByAGsAXQAgAE0AYQBjAGgAaQBuAGUAIABzAHUAZwBnAGUAcwB0AGkAbwBuAHMAIABmAHIAbwBt
ACAAQQBNAEQAAAAAAB8AAAATAAAAcABnAGUAbwByAGcAZQBAAHAAbABnAGkAbgBjAC4AYwBvAG0A
AAAAAB8AAAAXAAAAUABhAHUAbAAgAEwALgAgAEcAZQBvAHIAZwBlACgATwBmAGYAaQBjAGUAKQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQBTAHUAbQBtAGEAcgB5AEkA
bgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgH/////////
//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAAAAABAAAAAAAAAFAEQA
bwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAA
AAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA
AABcAwAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP7/AwoAAP////8GCQIAAAAA
AMAAAAAAAABGIAAAAE1pY3Jvc29mdCBXb3JkIDk3LTIwMDMgRG9jdW1lbnQACgAAAE1TV29yZERv
YwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAF
AQIAAAAAAAAAAAAAAAAAAAAAAAIAAAAC1c3VnC4bEJOXCAArLPmuRAAAAAXVzdWcLhsQk5cIACss
+a5AAQAA/AAAAAwAAAABAAAAaAAAAA8AAABwAAAABQAAAJAAAAAGAAAAmAAAABEAAACgAAAAFwAA
AKgAAAALAAAAsAAAABAAAAC4AAAAEwAAAMAAAAAWAAAAyAAAAA0AAADQAAAADAAAAN0AAAACAAAA
5AQAAB4AAAAYAAAAUExHIEVudGVycHJpc2VzLCBJbmMuAAAAAwAAAAMAAAADAAAAAQAAAAMAAAAL
AgAAAwAAAAAADgALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAABAAAAAQAAAAAM
EAAAAgAAAB4AAAAGAAAAVGl0bGUAAwAAAAEAAAAAHAIAAAgAAAAAAAAASAAAAAEAAAAkAQAAAAAA
gCwBAAACAAAANAEAAAMAAAA8AQAABAAAAEgBAAAFAAAAtAEAAA==

------=_NextPart_000_0A90_01CFD6C1.C3A50DC0
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Wg-test-framework mailing list
Wg-test-framework@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-test-framework
------=_NextPart_000_0A90_01CFD6C1.C3A50DC0--



From xen-devel-bounces@lists.xen.org Tue Sep 23 13:14:47 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Sep 2014 13:14:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XWPvY-0008ST-HT; Tue, 23 Sep 2014 13:14:44 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XWPvT-0008Lz-S8
	for xen-devel@lists.xen.org; Tue, 23 Sep 2014 13:14:40 +0000
Received: from [85.158.143.35:43107] by server-3.bemta-4.messagelabs.com id
	09/BA-06192-D3271245; Tue, 23 Sep 2014 13:14:37 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-16.tower-21.messagelabs.com!1411478073!9211192!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 603 invoked from network); 23 Sep 2014 13:14:33 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-16.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 23 Sep 2014 13:14:33 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 0EC20101963C3;
	Tue, 23 Sep 2014 15:14:32 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 0915DC31E250;
	Tue, 23 Sep 2014 15:14:32 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Tue, 23 Sep 2014 15:14:12 +0200
Message-Id: <1411478070-13836-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411478070-13836-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1411478070-13836-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v8 01/19] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v8: Define HAS_MEM_ACCESS/PAGING/SHARING in config/x86_*.mk
    and wrap required parts in mem_event into ifdefs accordingly.

v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 config/x86_32.mk                 |   4 +
 config/x86_64.mk                 |   4 +
 xen/Rules.mk                     |   3 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/hvm/vmx/vmcs.c      |   8 +-
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 -------
 xen/arch/x86/mm/mem_event.c      | 716 -------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 +++++++
 xen/common/mem_event.c           | 739 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 ---
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 32 files changed, 1198 insertions(+), 1072 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 266e47b..f659180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -337,6 +337,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/config/x86_32.mk b/config/x86_32.mk
index 7f76b25..123f1b7 100644
--- a/config/x86_32.mk
+++ b/config/x86_32.mk
@@ -6,6 +6,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CFLAGS += -m32 -march=i686
 
 # Use only if calling $(LD) directly.
diff --git a/config/x86_64.mk b/config/x86_64.mk
index 11104bd..ff0b474 100644
--- a/config/x86_64.mk
+++ b/config/x86_64.mk
@@ -7,6 +7,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CONFIG_XEN_INSTALL_SUFFIX := .gz
 
 CFLAGS += -m64
diff --git a/xen/Rules.mk b/xen/Rules.mk
index e2f9e36..a97405c 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,9 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
+CFLAGS-$(HAS_MEM_PAGING)  += -DHAS_MEM_PAGING
+CFLAGS-$(HAS_MEM_SHARING) += -DHAS_MEM_SHARING
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(HAS_PDX)       += -DHAS_PDX
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index bb45593..dd4a06a 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -484,19 +484,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -504,50 +491,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index fc1f882..9d8033e 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -22,6 +22,10 @@
 #include <xen/lib.h>
 #include <xen/errno.h>
 #include <xen/domain_page.h>
+#include <xen/event.h>
+#include <xen/kernel.h>
+#include <xen/keyhandler.h>
+#include <xen/mem_event.h>
 #include <asm/current.h>
 #include <asm/cpufeature.h>
 #include <asm/processor.h>
@@ -34,12 +38,8 @@
 #include <asm/hvm/vmx/vvmx.h>
 #include <asm/hvm/vmx/vmcs.h>
 #include <asm/flushtlb.h>
-#include <xen/event.h>
-#include <xen/kernel.h>
-#include <xen/keyhandler.h>
 #include <asm/shadow.h>
 #include <asm/tboot.h>
-#include <asm/mem_event.h>
 
 static bool_t __read_mostly opt_vpid_enabled = 1;
 boolean_param("vpid", opt_vpid_enabled);
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index fdd5ff6..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-
-            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
-                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
-            {
-                d->arch.hvm_domain.introspection_enabled = 1;
-                hvm_funcs.enable_msr_exit_interception(d);
-            }
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-            {
-                rc = mem_event_disable(d, med);
-                d->arch.hvm_domain.introspection_enabled = 0;
-            }
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 54859c8..31d0d9e 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 09817fc..cce1406 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 unsigned int __read_mostly m2p_compat_vstart = __HYPERVISOR_COMPAT_VIRT_START;
diff --git a/xen/common/Makefile b/xen/common/Makefile
index f7d10f0..9167104 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -52,6 +52,8 @@ obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
 obj-$(HAS_PDX) += pdx.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..7cc99b3
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,739 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+
+#ifdef HAS_MEM_PAGING
+#include <asm/mem_paging.h>
+#endif
+
+#ifdef HAS_MEM_SHARING
+#include <asm/mem_sharing.h>
+#endif
+
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+#ifdef HAS_MEM_PAGING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+#endif
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+
+#ifdef HAS_MEM_SHARING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+#endif
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+#ifdef HAS_MEM_PAGING
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+#endif
+#ifdef HAS_MEM_SHARING
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+#endif
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+#ifdef HAS_MEM_PAGING
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+#endif
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+#ifdef HAS_MEM_SHARING
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+#endif
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+#ifdef HAS_MEM_PAGING
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+
+            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
+                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
+            {
+                d->arch.hvm_domain.introspection_enabled = 1;
+                hvm_funcs.enable_msr_exit_interception(d);
+            }
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+            {
+                rc = mem_event_disable(d, med);
+                d->arch.hvm_domain.introspection_enabled = 0;
+            }
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+
+#ifdef HAS_MEM_SHARING
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..bad50cb 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef HAS_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef HAS_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 33ac4b4..1e4711c 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -300,7 +300,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index 121d053..405f1f0 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -228,12 +228,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 746bcf1..aae63ee 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -609,8 +609,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 24 14:16:30 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Sep 2014 14:16:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XWnMq-0008Vm-CA; Wed, 24 Sep 2014 14:16:28 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <linux@eikelenboom.it>) id 1XWnMn-0008VH-3F
	for xen-devel@lists.xen.org; Wed, 24 Sep 2014 14:16:26 +0000
Received: from [85.158.137.68:30836] by server-3.bemta-3.messagelabs.com id
	31/45-22751-332D2245; Wed, 24 Sep 2014 14:16:19 +0000
X-Env-Sender: linux@eikelenboom.it
X-Msg-Ref: server-8.tower-31.messagelabs.com!1411568170!11807749!1
X-Originating-IP: [84.200.39.61]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21685 invoked from network); 24 Sep 2014 14:16:10 -0000
Received: from vserver.eikelenboom.it (HELO smtp.eikelenboom.it) (84.200.39.61)
	by server-8.tower-31.messagelabs.com with DHE-RSA-AES128-SHA encrypted
	SMTP; 24 Sep 2014 14:16:10 -0000
Received: from 17-68-ftth.on.nl ([88.159.68.17]:52285 helo=w510-wirelesss)
	by smtp.eikelenboom.it with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256)
	(Exim 4.80) (envelope-from <linux@eikelenboom.it>)
	id 1XWnMF-00063m-1n; Wed, 24 Sep 2014 16:15:51 +0200
Date: Wed, 24 Sep 2014 16:16:04 +0200
From: Sander Eikelenboom <linux@eikelenboom.it>
Organization: Eikelenboom IT services
X-Priority: 3 (Normal)
Message-ID: <391910477.20140924161604@eikelenboom.it>
To: "Zytaruk, Kelly" <Kelly.Zytaruk@amd.com>
In-Reply-To: <B756807489D6244883AC0B799A6EEC150267480B@storexdag02.amd.com>
References: <a8c5ce3e-24ec-4816-bea8-50975af99251@email.android.com>
	<1696208142.20140922143828@eikelenboom.it>
	<B756807489D6244883AC0B799A6EEC150266D7F0@storexdag02.amd.com>
	<494115233.20140923154510@eikelenboom.it>
	<B756807489D6244883AC0B799A6EEC1502673BEE@storexdag02.amd.com>
	<1144268141.20140924152149@eikelenboom.it>
	<B756807489D6244883AC0B799A6EEC150267480B@storexdag02.amd.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----------06E0A40933546D243"
Cc: Gordan Bobic <gordan@bobich.net>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Peter Kay <syllopsium@syllopsium.co.uk>
Subject: Re: [Xen-devel] AMD GPU passthrough in Xen
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

------------06E0A40933546D243
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


Wednesday, September 24, 2014, 3:58:57 PM, you wrote:

> Sander,

> You have given me some interesting information.  First off, I would like to ask you about one of your comments;

>> Yes, from what i see the problem seems to be that the Radeon card is not reset
>> to a state were it will regard itself as "unposted". (on the first boot of the guest i
>> see the driver report it hasn't posted (which is correct), it starts to past, and it
>> works. On subsequent boots of the domU i don't see the unposted message

> I am curious how you can tell if the driver is posting or not?  Which message are you looking at? 

With domU kernel 3.17-rc5 (with older kernels (i forgot the version number where it got fixed) there was a problem with the secondary card getting the shadow rom 
from the primary(emulated cirrus) ( see https://lkml.org/lkml/2014/2/13/109)), so a recent kernel domU kernel is best :)

In the domU on first boot it says it's not posted:

[    4.346649] [drm] Initialized drm 1.1.0 20060810
[    4.359722] [drm] radeon kernel modesetting enabled.
[    4.380435] xen: --> pirq=32 -> irq=36 (gsi=36)
[    4.383891] [drm] initializing kernel modesetting (TURKS 0x1002:0x6759 0x174B:0xE193).
[    4.405597] [drm] register mmio base: 0xF3060000
[    4.418262] [drm] register mmio size: 131072
[    4.559911] ATOM BIOS: ELIXIR
[    4.569063] [drm] GPU not posted. posting now...
[    4.585542] radeon 0000:00:05.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
[    4.609664] radeon 0000:00:05.0: GTT: 1024M 0x0000000040000000 - 0x000000007FFFFFFF
....

In the domU on subsequent boots that message is not there, but i end up with 
errors like (and garbage on the screen (looks somewhat like white noise)):

[    4.321952] [drm] Initialized drm 1.1.0 20060810
[    4.335246] [drm] radeon kernel modesetting enabled.
[    4.355349] xen: --> pirq=32 -> irq=36 (gsi=36)
[    4.359541] [drm] initializing kernel modesetting (TURKS 0x1002:0x6759 0x174B:0xE193).
[    4.385655] [drm] register mmio base: 0xF3060000
[    4.401814] [drm] register mmio size: 131072
[    4.599903] ATOM BIOS: ELIXIR
[    4.609170] radeon 0000:00:05.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
[    4.632895] radeon 0000:00:05.0: GTT: 1024M 0x0000000040000000 - 0x000000007FFFFFFF
....
[    5.126844] [drm:radeon_pm_init_dpm] *ERROR* radeon: dpm initialization failed
....
[    5.555322] [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed (scratch(0x8504)=0xCAFEDEAD)
....
 
(complete dmesg from both boots attached)

--
Sander

> Thanks,
> Kelly

>> -----Original Message-----
>> From: Sander Eikelenboom [mailto:linux@eikelenboom.it]
>> Sent: Wednesday, September 24, 2014 9:22 AM
>> To: Zytaruk, Kelly
>> Cc: Peter Kay; xen-devel@lists.xen.org; Gordan Bobic; Konrad Rzeszutek Wilk
>> Subject: Re: [Xen-devel] AMD GPU passthrough in Xen
>> 
>> 
>> Wednesday, September 24, 2014, 2:12:38 PM, you wrote:
>> 
>> >> Good to know there is interest from AMD into this area :-)
>> 
>> > I am taking a personal interest in this and would like to improve AMD support
>> and presence within the Xen community.
>> 
>> Thanks for that !
>> 
>> > Gordan has also reported problems restarting a guest.
>> 
>> Added Konrad to the CC as pciback maintainer.
>> 
>> Yes, from what i see the problem seems to be that the Radeon card is not reset
>> to a state were it will regard itself as "unposted". (on the first boot of the guest i
>> see the driver report it hasn't posted (which is correct), it starts to past, and it
>> works. On subsequent boots of the domU i don't see the unposted message but
>> some failures that are probably due to the driver regarding the card as already
>> been posted and skipping some init logic and reusing wrong values.
>> 
>> So current xen-pciback logic doesn't seem to be able to reset the card in a "non-
>> posted" state.
>> 
>> I don't know if you know what kind of reset is required for radeon cards to
>> regard itself as "not posted" ?
>> 
>> Current xen-pciback logic uses the "__pci_reset_function_locked(dev);"
>> functions (see pcistub.c pcistub_device_release()) to try to reset the device ..
>> that function in turn tries some possible reset functions in a specific order and
>> bails out at the first one reporting "succes". However it could be that this level
>> of reset is not enough for this specific case. (in my case it always uses and
>> succeeds at the first (pci_dev_specific_reset(dev, probe);).
>> 
>> When looking at the code for vfio/kvm in "drivers/vfio/pci/vfio_pci.c
>> vfio_pci_disable()", it seems to use:
>> - Another order for disabling resetting and config save/restore
>> - Always try a slot/bus reset on the way out ..
>> 
>> I'm trying to experiment with that in 2 ways:
>> 1) overrulling the logic in the domU radeon driver to do the reposting no matter
>>    in what state it thinks it is.
>> 2) Trying to change the xen-pciback reset logic, but at present that delivers
>>    bad irq's to dom0 for completly different irq's as the passedthrough device
>>    has (which i have seen before .. and is a bit worrying)
>> 
>> > I have been trying to reproduce the problem but have not had any luck.  As a
>> secondary it restarts for me every time.  I don't know if I inadvertently made a
>> change that indirectly fixed it in my code base or what the difference might be.
>> 
>> Perhaps in the older qemu-traditional there is already some sort of reset done ?
>> 
>> > What Xen version are you testing with?
>> I'm almost always living on the edge with Xen-unstable ;) (the latest and
>> greatest, which is actually pretty stable)
>> 
>> --
>> Sander
>> 
>> > Thanks,
>> > Kelly
>> 
>> >> -----Original Message-----
>> >> From: Sander Eikelenboom [mailto:linux@eikelenboom.it]
>> >> Sent: Tuesday, September 23, 2014 9:45 AM
>> >> To: Zytaruk, Kelly
>> >> Cc: Peter Kay; xen-devel@lists.xen.org
>> >> Subject: Re: [Xen-devel] AMD GPU passthrough in Xen
>> >>
>> >> Good to know there is interest from AMD into this area :-)
>> >>
>> >> I'm experimenting for a while with:
>> >>
>> >> - xen-unstable (and thus xl)
>> >> - latest kernels (both dom0 and domU)
>> >> - qemu-xen
>> >> - Radeon HD 6570
>> >> - secondary passthrough
>> >> - Debian linux (sid) with the opensource (in kernel) radeon driver
>> >>   (i also tried fglrx with succes, but it's a real PITA to build with every
>> >>   new kernel, so i ditched that)
>> >>
>> >> It used to work, but something broke at the moment, but that could
>> >> also be the changes to the systemd cruft that Debian jessie/sid is
>> >> currently undergoing (or something else since i regularly update all
>> components).
>> >>
>> >> The problems are mostly with restarting the domU, it differs a bit:
>> >> - sometimes screen goes ok, sometimes it's garbage.
>> >> - the radeon powercontrols only seem to work on the first boot and
>> >> give errors on any subsequent one.
>> >>
>> >> But when it works it does:
>> >> - the powercontrol.
>> >> - opengl and opencl benchmarks with (near) native results.
>> >> - hardware video acceleration in xbmc for instance.
>> >>
>> >> So one of the main problems at present seems to be proper resetting
>> >> of the whole device on domain shutdown/start. I did do some
>> >> experiments with the opensource radeon driver, but didn't get conclusive
>> results out of that yet.
>> >>
>> >> --
>> >> Sander
>> >>
>> >> Tuesday, September 23, 2014, 3:19:41 PM, you wrote:
>> >>
>> >> > Hi Peter / Sander,
>> >>
>> >> > Yes, I have AMD GPU passthru working as both primary and secondary
>> >> passthru.  Secondary was easy but primary is a bit tricky.
>> >>
>> >> > Getting on to your questions;
>> >>
>> >> >> Is there any specific reason you're using Xen 4.2 rather than 4.4.1?
>> >>
>> >> > I am working on a project that is based on Xen 4.2 (I can't say any
>> >> > more than
>> >> that).  I have looked at some of the more recent versions just to
>> >> check if some of the bugs that I have seen have been fixed but I have
>> >> not studied the newer versions in detail.  At some point in time in
>> >> the future I would like will make the jump to a more recent version but I don't
>> know the scheduling of that.
>> >>
>> >> >> In 4.2, using xl or xm?
>> >>
>> >> > xl
>> >>
>> >> >> qemu-traditional (with rombios) or "upstream"
>> >>
>> >> > qemu-traditional
>> >>
>> >> >> Primary or secondary passthrough?
>> >>
>> >> > Both but I am focusing on secondary right now.
>> >>
>> >> >> Presumably 64 bit versions of Windows?
>> >>
>> >> > 32 bit and 64 bit Win7.  I have tested Win8.1 and it works but my
>> >> > focus is currently Win7
>> >>
>> >> >> I am quite willing to test various scenarios. I've a 6950, 6450 and 5450.
>> >>
>> >> > Awesome.  My goal right now is obtaining stability on Xen 4.2.
>> >> > Since 4.2 is
>> >> past its feature cutoff I won't be able to submit any open source changes for
>> it.
>> >> I would like to eventually work with the community to get passthru
>> >> working with a recent version of "upstream".
>> >>
>> >> > Thanks,
>> >> > Kelly
>> >>
>> >>
>> >>
>> >> >> -----Original Message-----
>> >> >> From: Sander Eikelenboom [mailto:linux@eikelenboom.it]
>> >> >> Sent: Monday, September 22, 2014 8:38 AM
>> >> >> To: Peter Kay
>> >> >> Cc: xen-devel@lists.xen.org; Zytaruk, Kelly
>> >> >> Subject: Re: [Xen-devel] AMD GPU passthrough in Xen
>> >> >>
>> >> >>
>> >> >> Monday, September 22, 2014, 2:16:58 PM, you wrote:
>> >> >>
>> >> >> > Hi Kelly, list
>> >> >>
>> >> >> > I see you're having AMD GPU success with Xen 4 2 and Linux 3.4.9.
>> >> >> > I've been
>> >> >> less than successful getting passthrough working at all in Xen
>> >> >> (although it's fine in KVM primary passthrough as long as the BIOS
>> >> >> is supplied as a file). Could I confirm the following :
>> >> >>
>> >> >> > Is there any specific reason you're using Xen 4.2 rather than
>> >> >> > 4.4.1? I know in
>> >> >> some ways 4.4 suffers as it's now xl only and some of the xm
>> >> >> functionality has not come across.
>> >> >>
>> >> >> > In 4.2, using xl or xm?
>> >> >>
>> >> >> Another interesting question/aspect would be qemu-traditional
>> >> >> (with
>> >> >> rombios) or "upstream" (with seabios) ?
>> >> >>
>> >> >> > Primary or secondary passthrough?
>> >> >>
>> >> >> > Presumably 64 bit versions of Windows?
>> >> >>
>> >> >> > My system is a bit old (Core2Quad) but as mentioned AMD
>> >> >> > passthrough works
>> >> >> in KVM but I've found it tricky in Xen.
>> >> >>
>> >> >> > I am quite willing to test various scenarios. I've a 6950, 6450 and 5450.
>> >> >>
>> >> >> > Thanks
>> >> >>
>> >> >> > Peter
>> >> >>
>> >> >>
>> >>
>> >>
>> 
>> 


------------06E0A40933546D243
Content-Type: text/plain;
 name="dmesg-firstboot.txt"
Content-transfer-encoding: base64
Content-Disposition: attachment;
 filename="dmesg-firstboot.txt"

WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0ClsgICAg
MC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdQpbICAgIDAuMDAwMDAw
XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHVhY2N0ClsgICAgMC4wMDAwMDBdIExp
bnV4IHZlcnNpb24gMy4xNy4wLXJjNS0yMDE0MDkyMC12YW5pbGxhKyAocm9vdEB4Ym1jMTNz
aWQpIChnY2MgdmVyc2lvbiA0LjkuMSAoRGViaWFuIDQuOS4xLTQpICkgIzEgU01QIFNhdCBT
ZXAgMjAgMjI6MDM6MTEgQ0VTVCAyMDE0ClsgICAgMC4wMDAwMDBdIENvbW1hbmQgbGluZTog
Qk9PVF9JTUFHRT0vYm9vdC92bWxpbnV6LTMuMTcuMC1yYzUtMjAxNDA5MjAtdmFuaWxsYSsg
cm9vdD1VVUlEPTRiNDMyYjMzLTg3ZWMtNDUyMi04YjEwLTVkYmEzZjQ5MDk5ZSBybyBkZWJ1
ZyBsb2dsZXZlbD03IGNvbnNvbGU9dHR5MSBjb25zb2xlPXR0eVMwIHNsdWJfZGVidWcgcmFk
ZW9uLmRwbT0xIHJhZGVvbi5oYXJkX3Jlc2V0PTEgcmFkZW9uLmFsd2F5c19wb3N0PTEgc3lz
dGVtZC5sb2dfbGV2ZWw9d2FybmluZwpbICAgIDAuMDAwMDAwXSB0c2VnOiAwMDAwMDAwMDAw
ClsgICAgMC4wMDAwMDBdIGU4MjA6IEJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoK
WyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0weDAw
MDAwMDAwMDAwOWZiZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0g
MHgwMDAwMDAwMDAwMDlmYzAwLTB4MDAwMDAwMDAwMDA5ZmZmZl0gcmVzZXJ2ZWQKWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDBmMDAwMC0weDAwMDAwMDAw
MDAwZmZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAw
MDAwMDAwMDAxMDAwMDAtMHgwMDAwMDAwMDNmN2ZlZmZmXSB1c2FibGUKWyAgICAwLjAwMDAw
MF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAzZjdmZjAwMC0weDAwMDAwMDAwM2Y3ZmZm
ZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAw
ZmMwMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBO
WCAoRXhlY3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uOiBhY3RpdmUKWyAgICAwLjAwMDAwMF0g
U01CSU9TIDIuNCBwcmVzZW50LgpbICAgIDAuMDAwMDAwXSBETUk6IFhlbiBIVk0gZG9tVSwg
QklPUyA0LjUtdW5zdGFibGUgMDkvMjMvMjAxNApbICAgIDAuMDAwMDAwXSBIeXBlcnZpc29y
IGRldGVjdGVkOiBYZW4gSFZNClsgICAgMC4wMDAwMDBdIFhlbiB2ZXJzaW9uIDQuNS4KWyAg
ICAwLjAwMDAwMF0gWGVuIFBsYXRmb3JtIFBDSTogSS9PIHByb3RvY29sIHZlcnNpb24gMQpb
ICAgIDAuMDAwMDAwXSBOZXRmcm9udCBhbmQgdGhlIFhlbiBwbGF0Zm9ybSBQQ0kgZHJpdmVy
IGhhdmUgYmVlbiBjb21waWxlZCBmb3IgdGhpcyBrZXJuZWw6IHVucGx1ZyBlbXVsYXRlZCBO
SUNzLgpbICAgIDAuMDAwMDAwXSBCbGtmcm9udCBhbmQgdGhlIFhlbiBwbGF0Zm9ybSBQQ0kg
ZHJpdmVyIGhhdmUgYmVlbiBjb21waWxlZCBmb3IgdGhpcyBrZXJuZWw6IHVucGx1ZyBlbXVs
YXRlZCBkaXNrcy4KWyAgICAwLjAwMDAwMF0gWW91IG1pZ2h0IGhhdmUgdG8gY2hhbmdlIHRo
ZSByb290IGRldmljZQpbICAgIDAuMDAwMDAwXSBmcm9tIC9kZXYvaGRbYS1kXSB0byAvZGV2
L3h2ZFthLWRdClsgICAgMC4wMDAwMDBdIGluIHlvdXIgcm9vdD0ga2VybmVsIGNvbW1hbmQg
bGluZSBvcHRpb24KWyAgICAwLjAwMDAwMF0gSFZNT1BfcGFnZXRhYmxlX2R5aW5nIG5vdCBz
dXBwb3J0ZWQKWyAgICAwLjAwMDAwMF0gZTgyMDogdXBkYXRlIFttZW0gMHgwMDAwMDAwMC0w
eDAwMDAwZmZmXSB1c2FibGUgPT0+IHJlc2VydmVkClsgICAgMC4wMDAwMDBdIGU4MjA6IHJl
bW92ZSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBmZmZmZl0gdXNhYmxlClsgICAgMC4wMDAwMDBd
IEFHUDogTm8gQUdQIGJyaWRnZSBmb3VuZApbICAgIDAuMDAwMDAwXSBlODIwOiBsYXN0X3Bm
biA9IDB4M2Y3ZmYgbWF4X2FyY2hfcGZuID0gMHg0MDAwMDAwMDAKWyAgICAwLjAwMDAwMF0g
TVRSUiBkZWZhdWx0IHR5cGU6IHdyaXRlLWJhY2sKWyAgICAwLjAwMDAwMF0gTVRSUiBmaXhl
ZCByYW5nZXMgZW5hYmxlZDoKWyAgICAwLjAwMDAwMF0gICAwMDAwMC05RkZGRiB3cml0ZS1i
YWNrClsgICAgMC4wMDAwMDBdICAgQTAwMDAtQkZGRkYgd3JpdGUtY29tYmluaW5nClsgICAg
MC4wMDAwMDBdICAgQzAwMDAtRkZGRkYgd3JpdGUtYmFjawpbICAgIDAuMDAwMDAwXSBNVFJS
IHZhcmlhYmxlIHJhbmdlcyBlbmFibGVkOgpbICAgIDAuMDAwMDAwXSAgIDAgYmFzZSAwMDAw
RTAwMDAwMDAgbWFzayBGRkZGRTAwMDAwMDAgdW5jYWNoYWJsZQpbICAgIDAuMDAwMDAwXSAg
IDEgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gICAyIGRpc2FibGVkClsgICAgMC4wMDAwMDBd
ICAgMyBkaXNhYmxlZApbICAgIDAuMDAwMDAwXSAgIDQgZGlzYWJsZWQKWyAgICAwLjAwMDAw
MF0gICA1IGRpc2FibGVkClsgICAgMC4wMDAwMDBdICAgNiBkaXNhYmxlZApbICAgIDAuMDAw
MDAwXSAgIDcgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gVE9NMjogMDAwMDAwMDU2MDAwMDAw
MCBha2EgMjIwMTZNClsgICAgMC4wMDAwMDBdIHg4NiBQQVQgZW5hYmxlZDogY3B1IDAsIG9s
ZCAweDcwNDA2MDAwNzA0MDYsIG5ldyAweDcwMTA2MDAwNzAxMDYKWyAgICAwLjAwMDAwMF0g
Zm91bmQgU01QIE1QLXRhYmxlIGF0IFttZW0gMHgwMDBmMGU0MC0weDAwMGYwZTRmXSBtYXBw
ZWQgYXQgW2ZmZmY4ODAwMDAwZjBlNDBdClsgICAgMC4wMDAwMDBdIFNjYW5uaW5nIDEgYXJl
YXMgZm9yIGxvdyBtZW1vcnkgY29ycnVwdGlvbgpbICAgIDAuMDAwMDAwXSBCYXNlIG1lbW9y
eSB0cmFtcG9saW5lIGF0IFtmZmZmODgwMDAwMDk5MDAwXSA5OTAwMCBzaXplIDI0NTc2Clsg
ICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHgwMDAwMDAwMC0weDAw
MGZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMDAwMDAwLTB4MDAwZmZmZmZdIHBh
Z2UgNGsKWyAgICAwLjAwMDAwMF0gQlJLIFsweDAyZTBiMDAwLCAweDAyZTBiZmZmXSBQR1RB
QkxFClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMmUwYzAwMCwgMHgwMmUwY2ZmZl0gUEdUQUJM
RQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDJlMGQwMDAsIDB4MDJlMGRmZmZdIFBHVEFCTEUK
WyAgICAwLjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweDNmNDAwMDAwLTB4
M2Y1ZmZmZmZdClsgICAgMC4wMDAwMDBdICBbbWVtIDB4M2Y0MDAwMDAtMHgzZjVmZmZmZl0g
cGFnZSAyTQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4M2Mw
MDAwMDAtMHgzZjNmZmZmZl0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgzYzAwMDAwMC0weDNm
M2ZmZmZmXSBwYWdlIDJNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFtt
ZW0gMHgwMDEwMDAwMC0weDNiZmZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMTAw
MDAwLTB4MDAxZmZmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0gIFttZW0gMHgwMDIwMDAw
MC0weDNiZmZmZmZmXSBwYWdlIDJNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBp
bmc6IFttZW0gMHgzZjYwMDAwMC0weDNmN2ZlZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAw
eDNmNjAwMDAwLTB4M2Y3ZmVmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0gQlJLIFsweDAy
ZTBlMDAwLCAweDAyZTBlZmZmXSBQR1RBQkxFClsgICAgMC4wMDAwMDBdIFJBTURJU0s6IFtt
ZW0gMHgzNmY3NjAwMC0weDM3N2IyZmZmXQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBFYXJseSB0
YWJsZSBjaGVja3N1bSB2ZXJpZmljYXRpb24gZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gQUNQ
STogUlNEUCAweDAwMDAwMDAwMDAwRjBEOTAgMDAwMDI0ICh2MDIgWGVuICAgKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBYU0RUIDB4MDAwMDAwMDBGQzAwQTEyMCAwMDAwNTQgKHYwMSBYZW4g
ICAgSFZNICAgICAgMDAwMDAwMDAgSFZNTCAwMDAwMDAwMCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogRkFDUCAweDAwMDAwMDAwRkMwMDlBNTAgMDAwMEY0ICh2MDQgWGVuICAgIEhWTSAgICAg
IDAwMDAwMDAwIEhWTUwgMDAwMDAwMDApClsgICAgMC4wMDAwMDBdIEFDUEk6IERTRFQgMHgw
MDAwMDAwMEZDMDAxMkUwIDAwODZGMCAodjAyIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBJ
TlRMIDIwMTAwNTI4KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBGQUNTIDB4MDAwMDAwMDBGQzAw
MTJBMCAwMDAwNDAKWyAgICAwLjAwMDAwMF0gQUNQSTogQVBJQyAweDAwMDAwMDAwRkMwMDlC
NTAgMDAwNDYwICh2MDIgWGVuICAgIEhWTSAgICAgIDAwMDAwMDAwIEhWTUwgMDAwMDAwMDAp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQRVQgMHgwMDAwMDAwMEZDMDBBMDMwIDAwMDAzOCAo
djAxIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBIVk1MIDAwMDAwMDAwKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBXQUVUIDB4MDAwMDAwMDBGQzAwQTA3MCAwMDAwMjggKHYwMSBYZW4gICAg
SFZNICAgICAgMDAwMDAwMDAgSFZNTCAwMDAwMDAwMCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
U1NEVCAweDAwMDAwMDAwRkMwMEEwQTAgMDAwMDMxICh2MDIgWGVuICAgIEhWTSAgICAgIDAw
MDAwMDAwIElOVEwgMjAxMDA1MjgpClsgICAgMC4wMDAwMDBdIEFDUEk6IFNTRFQgMHgwMDAw
MDAwMEZDMDBBMEUwIDAwMDAzMSAodjAyIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBJTlRM
IDIwMTAwNTI4KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhm
ZWUwMDAwMApbICAgIDAuMDAwMDAwXSBObyBOVU1BIGNvbmZpZ3VyYXRpb24gZm91bmQKWyAg
ICAwLjAwMDAwMF0gRmFraW5nIGEgbm9kZSBhdCBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0w
eDAwMDAwMDAwM2Y3ZmVmZmZdClsgICAgMC4wMDAwMDBdIEluaXRtZW0gc2V0dXAgbm9kZSAw
IFttZW0gMHgwMDAwMDAwMC0weDNmN2ZlZmZmXQpbICAgIDAuMDAwMDAwXSAgIE5PREVfREFU
QSBbbWVtIDB4M2Y3ZjQwMDAtMHgzZjdmZWZmZl0KWyAgICAwLjAwMDAwMF0gIFtmZmZmZWEw
MDAwMDAwMDAwLWZmZmZlYTAwMDBmZmZmZmZdIFBNRCAtPiBbZmZmZjg4MDAzZGUwMDAwMC1m
ZmZmODgwMDNlZGZmZmZmXSBvbiBub2RlIDAKWyAgICAwLjAwMDAwMF0gWm9uZSByYW5nZXM6
ClsgICAgMC4wMDAwMDBdICAgRE1BICAgICAgW21lbSAweDAwMDAxMDAwLTB4MDBmZmZmZmZd
ClsgICAgMC4wMDAwMDBdICAgRE1BMzIgICAgW21lbSAweDAxMDAwMDAwLTB4ZmZmZmZmZmZd
ClsgICAgMC4wMDAwMDBdICAgTm9ybWFsICAgZW1wdHkKWyAgICAwLjAwMDAwMF0gTW92YWJs
ZSB6b25lIHN0YXJ0IGZvciBlYWNoIG5vZGUKWyAgICAwLjAwMDAwMF0gRWFybHkgbWVtb3J5
IG5vZGUgcmFuZ2VzClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHgwMDAwMTAw
MC0weDAwMDllZmZmXQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAxMDAw
MDAtMHgzZjdmZWZmZl0KWyAgICAwLjAwMDAwMF0gT24gbm9kZSAwIHRvdGFscGFnZXM6IDI1
OTk5NwpbICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiA2NCBwYWdlcyB1c2VkIGZvciBtZW1t
YXAKWyAgICAwLjAwMDAwMF0gICBETUEgem9uZTogMjEgcGFnZXMgcmVzZXJ2ZWQKWyAgICAw
LjAwMDAwMF0gICBETUEgem9uZTogMzk5OCBwYWdlcywgTElGTyBiYXRjaDowClsgICAgMC4w
MDAwMDBdICAgRE1BMzIgem9uZTogNDAwMCBwYWdlcyB1c2VkIGZvciBtZW1tYXAKWyAgICAw
LjAwMDAwMF0gICBETUEzMiB6b25lOiAyNTU5OTkgcGFnZXMsIExJRk8gYmF0Y2g6MzEKWyAg
ICAwLjAwMDAwMF0gQUNQSTogUE0tVGltZXIgSU8gUG9ydDogMHhiMDA4ClsgICAgMC4wMDAw
MDBdIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDBdIGxhcGljX2lkWzB4MDBdIGVuYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDFdIGxhcGljX2lkWzB4MDJd
IGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDJdIGxh
cGljX2lkWzB4MDRdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4MDNdIGxhcGljX2lkWzB4MDZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDA0XSBsYXBpY19pZFsweDA4XSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwNV0gbGFwaWNfaWRbMHgwYV0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDZdIGxhcGlj
X2lkWzB4MGNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDA3XSBsYXBpY19pZFsweDBlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHgwOF0gbGFwaWNfaWRbMHgxMF0gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDldIGxhcGljX2lkWzB4MTJdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBhXSBsYXBpY19p
ZFsweDE0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHgwYl0gbGFwaWNfaWRbMHgxNl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4MGNdIGxhcGljX2lkWzB4MThdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBkXSBsYXBpY19pZFsweDFhXSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwZV0gbGFwaWNfaWRb
MHgxY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
MGZdIGxhcGljX2lkWzB4MWVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDEwXSBsYXBpY19pZFsweDIwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxMV0gbGFwaWNfaWRbMHgyMl0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MTJdIGxhcGljX2lkWzB4
MjRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDEz
XSBsYXBpY19pZFsweDI2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMg
KGFjcGlfaWRbMHgxNF0gbGFwaWNfaWRbMHgyOF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4MTVdIGxhcGljX2lkWzB4MmFdIGRpc2FibGVkKQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDE2XSBsYXBpY19pZFsweDJj
XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxN10g
bGFwaWNfaWRbMHgyZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4MThdIGxhcGljX2lkWzB4MzBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBMQVBJQyAoYWNwaV9pZFsweDE5XSBsYXBpY19pZFsweDMyXSBkaXNhYmxlZCkKWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxYV0gbGFwaWNfaWRbMHgzNF0g
ZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MWJdIGxh
cGljX2lkWzB4MzZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDFjXSBsYXBpY19pZFsweDM4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogTEFQSUMgKGFjcGlfaWRbMHgxZF0gbGFwaWNfaWRbMHgzYV0gZGlzYWJsZWQpClsgICAg
MC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MWVdIGxhcGljX2lkWzB4M2NdIGRp
c2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDFmXSBsYXBp
Y19pZFsweDNlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlf
aWRbMHgyMF0gbGFwaWNfaWRbMHg0MF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDIChhY3BpX2lkWzB4MjFdIGxhcGljX2lkWzB4NDJdIGRpc2FibGVkKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDIyXSBsYXBpY19pZFsweDQ0XSBkaXNh
YmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyM10gbGFwaWNf
aWRbMHg0Nl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lk
WzB4MjRdIGxhcGljX2lkWzB4NDhdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDI1XSBsYXBpY19pZFsweDRhXSBkaXNhYmxlZCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyNl0gbGFwaWNfaWRbMHg0Y10gZGlzYWJs
ZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MjddIGxhcGljX2lk
WzB4NGVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsw
eDI4XSBsYXBpY19pZFsweDUwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQ
SUMgKGFjcGlfaWRbMHgyOV0gbGFwaWNfaWRbMHg1Ml0gZGlzYWJsZWQpClsgICAgMC4wMDAw
MDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MmFdIGxhcGljX2lkWzB4NTRdIGRpc2FibGVk
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDJiXSBsYXBpY19pZFsw
eDU2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgy
Y10gbGFwaWNfaWRbMHg1OF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElD
IChhY3BpX2lkWzB4MmRdIGxhcGljX2lkWzB4NWFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDJlXSBsYXBpY19pZFsweDVjXSBkaXNhYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyZl0gbGFwaWNfaWRbMHg1
ZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MzBd
IGxhcGljX2lkWzB4NjBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAo
YWNwaV9pZFsweDMxXSBsYXBpY19pZFsweDYyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0g
QUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzMl0gbGFwaWNfaWRbMHg2NF0gZGlzYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MzNdIGxhcGljX2lkWzB4NjZd
IGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDM0XSBs
YXBpY19pZFsweDY4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHgzNV0gbGFwaWNfaWRbMHg2YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4MzZdIGxhcGljX2lkWzB4NmNdIGRpc2FibGVkKQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDM3XSBsYXBpY19pZFsweDZlXSBk
aXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzOF0gbGFw
aWNfaWRbMHg3MF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4MzldIGxhcGljX2lkWzB4NzJdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDNhXSBsYXBpY19pZFsweDc0XSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzYl0gbGFwaWNfaWRbMHg3Nl0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4M2NdIGxhcGlj
X2lkWzB4NzhdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDNkXSBsYXBpY19pZFsweDdhXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHgzZV0gbGFwaWNfaWRbMHg3Y10gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4M2ZdIGxhcGljX2lkWzB4N2VdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQwXSBsYXBpY19p
ZFsweDgwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHg0MV0gbGFwaWNfaWRbMHg4Ml0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4NDJdIGxhcGljX2lkWzB4ODRdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQzXSBsYXBpY19pZFsweDg2XSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0NF0gbGFwaWNfaWRb
MHg4OF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
NDVdIGxhcGljX2lkWzB4OGFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDQ2XSBsYXBpY19pZFsweDhjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0N10gbGFwaWNfaWRbMHg4ZV0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NDhdIGxhcGljX2lkWzB4
OTBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQ5
XSBsYXBpY19pZFsweDkyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMg
KGFjcGlfaWRbMHg0YV0gbGFwaWNfaWRbMHg5NF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4NGJdIGxhcGljX2lkWzB4OTZdIGRpc2FibGVkKQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDRjXSBsYXBpY19pZFsweDk4
XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0ZF0g
bGFwaWNfaWRbMHg5YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4NGVdIGxhcGljX2lkWzB4OWNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBMQVBJQyAoYWNwaV9pZFsweDRmXSBsYXBpY19pZFsweDllXSBkaXNhYmxlZCkKWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1MF0gbGFwaWNfaWRbMHhhMF0g
ZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NTFdIGxh
cGljX2lkWzB4YTJdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDUyXSBsYXBpY19pZFsweGE0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogTEFQSUMgKGFjcGlfaWRbMHg1M10gbGFwaWNfaWRbMHhhNl0gZGlzYWJsZWQpClsgICAg
MC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NTRdIGxhcGljX2lkWzB4YThdIGRp
c2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDU1XSBsYXBp
Y19pZFsweGFhXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlf
aWRbMHg1Nl0gbGFwaWNfaWRbMHhhY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDIChhY3BpX2lkWzB4NTddIGxhcGljX2lkWzB4YWVdIGRpc2FibGVkKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDU4XSBsYXBpY19pZFsweGIwXSBkaXNh
YmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1OV0gbGFwaWNf
aWRbMHhiMl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lk
WzB4NWFdIGxhcGljX2lkWzB4YjRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDViXSBsYXBpY19pZFsweGI2XSBkaXNhYmxlZCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1Y10gbGFwaWNfaWRbMHhiOF0gZGlzYWJs
ZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NWRdIGxhcGljX2lk
WzB4YmFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsw
eDVlXSBsYXBpY19pZFsweGJjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQ
SUMgKGFjcGlfaWRbMHg1Zl0gbGFwaWNfaWRbMHhiZV0gZGlzYWJsZWQpClsgICAgMC4wMDAw
MDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjBdIGxhcGljX2lkWzB4YzBdIGRpc2FibGVk
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDYxXSBsYXBpY19pZFsw
eGMyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2
Ml0gbGFwaWNfaWRbMHhjNF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElD
IChhY3BpX2lkWzB4NjNdIGxhcGljX2lkWzB4YzZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDY0XSBsYXBpY19pZFsweGM4XSBkaXNhYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2NV0gbGFwaWNfaWRbMHhj
YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjZd
IGxhcGljX2lkWzB4Y2NdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAo
YWNwaV9pZFsweDY3XSBsYXBpY19pZFsweGNlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0g
QUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2OF0gbGFwaWNfaWRbMHhkMF0gZGlzYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjldIGxhcGljX2lkWzB4ZDJd
IGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDZhXSBs
YXBpY19pZFsweGQ0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHg2Yl0gbGFwaWNfaWRbMHhkNl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4NmNdIGxhcGljX2lkWzB4ZDhdIGRpc2FibGVkKQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDZkXSBsYXBpY19pZFsweGRhXSBk
aXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2ZV0gbGFw
aWNfaWRbMHhkY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4NmZdIGxhcGljX2lkWzB4ZGVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDcwXSBsYXBpY19pZFsweGUwXSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3MV0gbGFwaWNfaWRbMHhlMl0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NzJdIGxhcGlj
X2lkWzB4ZTRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDczXSBsYXBpY19pZFsweGU2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHg3NF0gbGFwaWNfaWRbMHhlOF0gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NzVdIGxhcGljX2lkWzB4ZWFdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDc2XSBsYXBpY19p
ZFsweGVjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHg3N10gbGFwaWNfaWRbMHhlZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4NzhdIGxhcGljX2lkWzB4ZjBdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDc5XSBsYXBpY19pZFsweGYyXSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3YV0gbGFwaWNfaWRb
MHhmNF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
N2JdIGxhcGljX2lkWzB4ZjZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDdjXSBsYXBpY19pZFsweGY4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3ZF0gbGFwaWNfaWRbMHhmYV0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4N2VdIGxhcGljX2lkWzB4
ZmNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDdm
XSBsYXBpY19pZFsweGZlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogSU9BUElD
IChpZFsweDAxXSBhZGRyZXNzWzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQpbICAgIDAuMDAw
MDAwXSBJT0FQSUNbMF06IGFwaWNfaWQgMSwgdmVyc2lvbiAxNywgYWRkcmVzcyAweGZlYzAw
MDAwLCBHU0kgMC00NwpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAg
YnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
TlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSA1IGdsb2JhbF9pcnEgNSBsb3cgbGV2ZWwpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDEwIGdsb2Jh
bF9pcnEgMTAgbG93IGxldmVsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSAxMSBnbG9iYWxfaXJxIDExIGxvdyBsZXZlbCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
UlE1IHVzZWQgYnkgb3ZlcnJpZGUuClsgICAgMC4wMDAwMDBdIEFDUEk6IElSUTkgdXNlZCBi
eSBvdmVycmlkZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJRMTAgdXNlZCBieSBvdmVycmlk
ZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJRMTEgdXNlZCBieSBvdmVycmlkZS4KWyAgICAw
LjAwMDAwMF0gVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9y
bWF0aW9uClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQRVQgaWQ6IDB4ODA4NmEyMDEgYmFzZTog
MHhmZWQwMDAwMApbICAgIDAuMDAwMDAwXSBzbXBib290OiAxMjggUHJvY2Vzc29ycyBleGNl
ZWRzIE5SX0NQVVMgbGltaXQgb2YgOApbICAgIDAuMDAwMDAwXSBzbXBib290OiBBbGxvd2lu
ZyA4IENQVXMsIDUgaG90cGx1ZyBDUFVzClsgICAgMC4wMDAwMDBdIGU4MjA6IFttZW0gMHgz
ZjgwMDAwMC0weGZiZmZmZmZmXSBhdmFpbGFibGUgZm9yIFBDSSBkZXZpY2VzClsgICAgMC4w
MDAwMDBdIEJvb3RpbmcgcGFyYXZpcnR1YWxpemVkIGtlcm5lbCBvbiBYZW4gSFZNClsgICAg
MC4wMDAwMDBdIHNldHVwX3BlcmNwdTogTlJfQ1BVUzo4IG5yX2NwdW1hc2tfYml0czo4IG5y
X2NwdV9pZHM6OCBucl9ub2RlX2lkczoxClsgICAgMC4wMDAwMDBdIFBFUkNQVTogRW1iZWRk
ZWQgMjggcGFnZXMvY3B1IEBmZmZmODgwMDNmNDAwMDAwIHM4MzUyMCByODE5MiBkMjI5NzYg
dTI2MjE0NApbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBzODM1MjAgcjgxOTIgZDIyOTc2
IHUyNjIxNDQgYWxsb2M9MSoyMDk3MTUyClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IFsw
XSAwIDEgMiAzIDQgNSA2IDcgClsgICAgMC4wMDAwMDBdIHhlbjogUFYgc3BpbmxvY2tzIGVu
YWJsZWQKWyAgICAwLjAwMDAwMF0gQnVpbHQgMSB6b25lbGlzdHMgaW4gTm9kZSBvcmRlciwg
bW9iaWxpdHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdlczogMjU1OTEyClsgICAgMC4wMDAw
MDBdIFBvbGljeSB6b25lOiBETUEzMgpbICAgIDAuMDAwMDAwXSBLZXJuZWwgY29tbWFuZCBs
aW5lOiBCT09UX0lNQUdFPS9ib290L3ZtbGludXotMy4xNy4wLXJjNS0yMDE0MDkyMC12YW5p
bGxhKyByb290PVVVSUQ9NGI0MzJiMzMtODdlYy00NTIyLThiMTAtNWRiYTNmNDkwOTllIHJv
IGRlYnVnIGxvZ2xldmVsPTcgY29uc29sZT10dHkxIGNvbnNvbGU9dHR5UzAgc2x1Yl9kZWJ1
ZyByYWRlb24uZHBtPTEgcmFkZW9uLmhhcmRfcmVzZXQ9MSByYWRlb24uYWx3YXlzX3Bvc3Q9
MSBzeXN0ZW1kLmxvZ19sZXZlbD13YXJuaW5nClsgICAgMC4wMDAwMDBdIFBJRCBoYXNoIHRh
YmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAzLCAzMjc2OCBieXRlcykKWyAgICAwLjAwMDAw
MF0gQUdQOiBDaGVja2luZyBhcGVydHVyZS4uLgpbICAgIDAuMDAwMDAwXSBBR1A6IE5vIEFH
UCBicmlkZ2UgZm91bmQKWyAgICAwLjAwMDAwMF0gTWVtb3J5OiA5ODMyMjRLLzEwMzk5ODhL
IGF2YWlsYWJsZSAoMTAxNzVLIGtlcm5lbCBjb2RlLCA5ODFLIHJ3ZGF0YSwgNDAyOEsgcm9k
YXRhLCAxMTA4SyBpbml0LCAxNDI5MksgYnNzLCA1Njc2NEsgcmVzZXJ2ZWQpClsgICAgMC4w
MDAwMDBdIFNMVUI6IEhXYWxpZ249NjQsIE9yZGVyPTAtMywgTWluT2JqZWN0cz0wLCBDUFVz
PTgsIE5vZGVzPTEKWyAgICAwLjAwMDAwMF0gSGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRh
dGlvbi4KWyAgICAwLjAwMDAwMF0gCVJDVSBkeW50aWNrLWlkbGUgZ3JhY2UtcGVyaW9kIGFj
Y2VsZXJhdGlvbiBpcyBlbmFibGVkLgpbICAgIDAuMDAwMDAwXSAJQWRkaXRpb25hbCBwZXIt
Q1BVIGluZm8gcHJpbnRlZCB3aXRoIHN0YWxscy4KWyAgICAwLjAwMDAwMF0gTlJfSVJRUzo0
MzUyIG5yX2lycXM6ODk2IDAKWyAgICAwLjAwMDAwMF0geGVuOmV2ZW50czogVXNpbmcgRklG
Ty1iYXNlZCBBQkkKWyAgICAwLjAwMDAwMF0geGVuOmV2ZW50czogWGVuIEhWTSBjYWxsYmFj
ayB2ZWN0b3IgZm9yIGV2ZW50IGRlbGl2ZXJ5IGlzIGVuYWJsZWQKWyAgICAwLjAwMDAwMF0g
Q29uc29sZTogY29sb3VyIFZHQSsgODB4MjUKWyAgICAwLjAwMDAwMF0gY29uc29sZSBbdHR5
MV0gZW5hYmxlZApbICAgIDAuMDAwMDAwXSBjb25zb2xlIFt0dHlTMF0gZW5hYmxlZApbICAg
IDAuMDAwMDAwXSBMb2NrIGRlcGVuZGVuY3kgdmFsaWRhdG9yOiBDb3B5cmlnaHQgKGMpIDIw
MDYgUmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXIKWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9M
T0NLREVQX1NVQkNMQVNTRVM6ICA4ClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS19ERVBU
SDogICAgICAgICAgNDgKWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9MT0NLREVQX0tFWVM6ICAg
ICAgICA4MTkxClsgICAgMC4wMDAwMDBdIC4uLiBDTEFTU0hBU0hfU0laRTogICAgICAgICAg
NDA5NgpbICAgIDAuMDAwMDAwXSAuLi4gTUFYX0xPQ0tERVBfRU5UUklFUzogICAgIDMyNzY4
ClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS0RFUF9DSEFJTlM6ICAgICAgNjU1MzYKWyAg
ICAwLjAwMDAwMF0gLi4uIENIQUlOSEFTSF9TSVpFOiAgICAgICAgICAzMjc2OApbICAgIDAu
MDAwMDAwXSAgbWVtb3J5IHVzZWQgYnkgbG9jayBkZXBlbmRlbmN5IGluZm86IDgxNTkga0IK
WyAgICAwLjAwMDAwMF0gIHBlciB0YXNrLXN0cnVjdCBtZW1vcnkgZm9vdHByaW50OiAxOTIw
IGJ5dGVzClsgICAgMC4wMDAwMDBdIGttZW1sZWFrOiBLZXJuZWwgbWVtb3J5IGxlYWsgZGV0
ZWN0b3IgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gaHBldCBjbG9ja2V2ZW50IHJlZ2lzdGVy
ZWQKWyAgICAwLjAwMDAwMF0gdHNjOiBEZXRlY3RlZCAzMjAwLjE3MiBNSHogcHJvY2Vzc29y
ClsgICAgMC4wMDAwMDBdIHRzYzogTWFya2luZyBUU0MgdW5zdGFibGUgZHVlIHRvIFRTQ3Mg
dW5zeW5jaHJvbml6ZWQKWyAgICAwLjAzMzMzM10gQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcCAo
c2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcgdGltZXIgZnJlcXVlbmN5Li4gNjQw
Mi4wMiBCb2dvTUlQUyAobHBqPTEwNjY3MjQwKQpbICAgIDAuMDYwMDA1XSBwaWRfbWF4OiBk
ZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDEKWyAgICAwLjA3MzQwM10gQUNQSTogQ29yZSBy
ZXZpc2lvbiAyMDE0MDcyNApbICAgIDAuMjcwMzcxXSBBQ1BJOiBBbGwgQUNQSSBUYWJsZXMg
c3VjY2Vzc2Z1bGx5IGFjcXVpcmVkClsgICAgMC4yODcwNzddIERlbnRyeSBjYWNoZSBoYXNo
IHRhYmxlIGVudHJpZXM6IDEzMTA3MiAob3JkZXI6IDgsIDEwNDg1NzYgYnl0ZXMpClsgICAg
MC4zMDcwNDRdIElub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVy
OiA3LCA1MjQyODggYnl0ZXMpClsgICAgMC4zMjY4NTFdIE1vdW50LWNhY2hlIGhhc2ggdGFi
bGUgZW50cmllczogMjA0OCAob3JkZXI6IDIsIDE2Mzg0IGJ5dGVzKQpbICAgIDAuMzQ2NzA1
XSBNb3VudHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMjA0OCAob3JkZXI6IDIs
IDE2Mzg0IGJ5dGVzKQpbICAgIDAuMzY3NTAyXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5
cyBmcmVlemVyClsgICAgMC4zODAwMzBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGJs
a2lvClsgICAgMC4zOTAyODddIENQVTogUGh5c2ljYWwgUHJvY2Vzc29yIElEOiAwClsgICAg
MC40MDMzMzhdIENQVTogUHJvY2Vzc29yIENvcmUgSUQ6IDAKWyAgICAwLjQxMzM0Ml0gbWNl
OiBDUFUgc3VwcG9ydHMgMiBNQ0UgYmFua3MKWyAgICAwLjQyNjcwNF0gbnVtYV9hZGRfY3B1
IGNwdSAwIG5vZGUgMDogbWFzayBub3cgMApbICAgIDAuNDI2NzA5XSBMYXN0IGxldmVsIGlU
TEIgZW50cmllczogNEtCIDUxMiwgMk1CIDE2LCA0TUIgOApbICAgIDAuNDI2NzA5XSBMYXN0
IGxldmVsIGRUTEIgZW50cmllczogNEtCIDUxMiwgMk1CIDEyOCwgNE1CIDY0LCAxR0IgMApb
ICAgIDAuNDU2OTg2XSBGcmVlaW5nIFNNUCBhbHRlcm5hdGl2ZXMgbWVtb3J5OiAzMksgKGZm
ZmZmZmZmODIwMGMwMDAgLSBmZmZmZmZmZjgyMDE0MDAwKQpbICAgIDAuNDg2MzQxXSAuLlRJ
TUVSOiB2ZWN0b3I9MHgzMCBhcGljMT0wIHBpbjE9MiBhcGljMj0wIHBpbjI9MApbICAgIDAu
NTM1MjQ1XSBzbXBib290OiBDUFUwOiBBTUQgUGhlbm9tKHRtKSBJSSBYNiAxMDkwVCBQcm9j
ZXNzb3IgKGZhbTogMTAsIG1vZGVsOiAwYSwgc3RlcHBpbmc6IDAwKQpbICAgIDAuNTYwMDI2
XSBYZW46IHVzaW5nIHZjcHVvcCB0aW1lciBpbnRlcmZhY2UKWyAgICAwLjU2MDAzNV0gaW5z
dGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAwClsgICAgMC41NzM2MTddIGNwdSAwIHNwaW5s
b2NrIGV2ZW50IGlycSA1MwpbICAgIDAuNTc3MTM1XSBQZXJmb3JtYW5jZSBFdmVudHM6IEJy
b2tlbiBQTVUgaGFyZHdhcmUgZGV0ZWN0ZWQsIHVzaW5nIHNvZnR3YXJlIGV2ZW50cyBvbmx5
LgpbICAgIDAuNTgzMzQzXSBGYWlsZWQgdG8gYWNjZXNzIHBlcmZjdHIgbXNyIChNU1IgYzAw
MTAwMDQgaXMgMCkKWyAgICAwLjU4ODEyOF0gTk1JIHdhdGNoZG9nOiBkaXNhYmxlZCAoY3B1
MCk6IGhhcmR3YXJlIGV2ZW50cyBub3QgZW5hYmxlZApbICAgIDAuNTkwNTE0XSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDEKWyAgICAwLjU5MzU4NV0geDg2OiBCb290aW5nIFNN
UCBjb25maWd1cmF0aW9uOgpbICAgIDAuNTk2Njc5XSAuLi4uIG5vZGUgICMwLCBDUFVzOiAg
ICAgICMxClsgICAgMC4wMzMzMzNdIG51bWFfYWRkX2NwdSBjcHUgMSBub2RlIDA6IG1hc2sg
bm93IDAtMQpbICAgIDAuNzAwMjc0XSBjcHUgMSBzcGlubG9jayBldmVudCBpcnEgNTkKWyAg
ICAwLjcwMzgwNl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyClsgICAgMC43MDY4
NjBdICAjMgpbICAgIDAuMDMzMzMzXSBudW1hX2FkZF9jcHUgY3B1IDIgbm9kZSAwOiBtYXNr
IG5vdyAwLTIKWyAgICAwLjgwNzExOF0gY3B1IDIgc3BpbmxvY2sgZXZlbnQgaXJxIDY1Clsg
ICAgMC44MTAwODNdIHg4NjogQm9vdGVkIHVwIDEgbm9kZSwgMyBDUFVzClsgICAgMC44MTMz
NDNdIHNtcGJvb3Q6IFRvdGFsIG9mIDMgcHJvY2Vzc29ycyBhY3RpdmF0ZWQgKDE5MjMyLjAy
IEJvZ29NSVBTKQpbICAgIDAuODIwNDEyXSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQKWyAgICAw
LjgzNDMyOF0geG9yOiBtZWFzdXJpbmcgc29mdHdhcmUgY2hlY2tzdW0gc3BlZWQKWyAgICAw
Ljg4MDQ1M10gICAgcHJlZmV0Y2g2NC1zc2U6ICAgODEyLjQwMCBNQi9zZWMKWyAgICAwLjky
Njg0OV0gICAgZ2VuZXJpY19zc2U6ICAgODEwLjAwMCBNQi9zZWMKWyAgICAwLjk0MDAxNF0g
eG9yOiB1c2luZyBmdW5jdGlvbjogcHJlZmV0Y2g2NC1zc2UgKDgxMi40MDAgTUIvc2VjKQpb
ICAgIDAuOTU3MzE3XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2ClsgICAg
MC45NzM2MzFdIHhlbmJ1czogeHNfcmVzZXRfd2F0Y2hlcyBmYWlsZWQ6IC0zOApbICAgIDAu
OTg2NzQ5XSBjcHVpZGxlOiB1c2luZyBnb3Zlcm5vciBsYWRkZXIKWyAgICAwLjk5NjY4M10g
Y3B1aWRsZTogdXNpbmcgZ292ZXJub3IgbWVudQpbICAgIDEuMDE2OTc0XSBBQ1BJOiBidXMg
dHlwZSBQQ0kgcmVnaXN0ZXJlZApbICAgIDEuMDI2Njc3XSBhY3BpcGhwOiBBQ1BJIEhvdCBQ
bHVnIFBDSSBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAwLjUKWyAgICAxLjA0NjY3Ml0g
UENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5cGUgMSBmb3IgYmFzZSBhY2Nlc3MKWyAgICAx
LjA2MDAwOF0gUENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5cGUgMSBmb3IgZXh0ZW5kZWQg
YWNjZXNzClsgICAgMS4xOTM0MTNdIHJhaWQ2OiBzc2UyeDEgICAgMjcyMyBNQi9zClsgICAg
MS4yNTM0MTBdIHJhaWQ2OiBzc2UyeDIgICAgMzcxMyBNQi9zClsgICAgMS4zMTM0MjldIHJh
aWQ2OiBzc2UyeDQgICAgMzU3NSBNQi9zClsgICAgMS4zMTY3NjhdIHJhaWQ2OiB1c2luZyBh
bGdvcml0aG0gc3NlMngyICgzNzEzIE1CL3MpClsgICAgMS4zMjAwODBdIHJhaWQ2OiB1c2lu
ZyBpbnR4MSByZWNvdmVyeSBhbGdvcml0aG0KWyAgICAxLjMyMzcyNl0gQUNQSTogQWRkZWQg
X09TSShNb2R1bGUgRGV2aWNlKQpbICAgIDEuMzI2NzUzXSBBQ1BJOiBBZGRlZCBfT1NJKFBy
b2Nlc3NvciBEZXZpY2UpClsgICAgMS4zMzAwNzldIEFDUEk6IEFkZGVkIF9PU0koMy4wIF9T
Q1AgRXh0ZW5zaW9ucykKWyAgICAxLjMzMzQxMV0gQUNQSTogQWRkZWQgX09TSShQcm9jZXNz
b3IgQWdncmVnYXRvciBEZXZpY2UpClsgICAgMS40NjI5MTRdIEFDUEk6IEludGVycHJldGVy
IGVuYWJsZWQKWyAgICAxLjQ2MzM4Nl0gQUNQSTogKHN1cHBvcnRzIFMwIFM1KQpbICAgIDEu
NDY2Njc3XSBBQ1BJOiBVc2luZyBJT0FQSUMgZm9yIGludGVycnVwdCByb3V0aW5nClsgICAg
MS40NzAzODhdIFBDSTogVXNpbmcgaG9zdCBicmlkZ2Ugd2luZG93cyBmcm9tIEFDUEk7IGlm
IG5lY2Vzc2FyeSwgdXNlICJwY2k9bm9jcnMiIGFuZCByZXBvcnQgYSBidWcKWyAgICAxLjYz
Mjk5M10gQUNQSTogUENJIFJvb3QgQnJpZGdlIFtQQ0kwXSAoZG9tYWluIDAwMDAgW2J1cyAw
MC1mZl0pClsgICAgMS42NDY3MTFdIGFjcGkgUE5QMEEwMzowMDogX09TQzogT1Mgc3VwcG9y
dHMgW0V4dGVuZGVkQ29uZmlnIEFTUE0gQ2xvY2tQTSBTZWdtZW50cyBNU0ldClsgICAgMS42
NzAxMzldIGFjcGkgUE5QMEEwMzowMDogX09TQyBmYWlsZWQgKEFFX05PVF9GT1VORCk7IGRp
c2FibGluZyBBU1BNClsgICAgMS42OTQyMDBdIHBjaV9idXMgMDAwMDowMDogZGV2IDAxLCBj
cmVhdGVkIHBoeXNpY2FsIHNsb3QgMQpbICAgIDEuNjk0MzU1XSBwY2lfYnVzIDAwMDA6MDA6
IGRldiAwMiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDIKWyAgICAxLjY5NDUwN10gcGNpX2J1
cyAwMDAwOjAwOiBkZXYgMDMsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAzClsgICAgMS42OTQ2
NTldIHBjaV9idXMgMDAwMDowMDogZGV2IDA0LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgNApb
ICAgIDEuNjk0ODM4XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAwNSwgY3JlYXRlZCBwaHlzaWNh
bCBzbG90IDUKWyAgICAxLjY5NTAyN10gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMDYsIGNyZWF0
ZWQgcGh5c2ljYWwgc2xvdCA2ClsgICAgMS42OTUyMDJdIHBjaV9idXMgMDAwMDowMDogZGV2
IDA3LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgNwpbICAgIDEuNjk1Mzc0XSBwY2lfYnVzIDAw
MDA6MDA6IGRldiAwOCwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDgKWyAgICAxLjY5NTU1M10g
cGNpX2J1cyAwMDAwOjAwOiBkZXYgMDksIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCA5ClsgICAg
MS42OTU3MjVdIHBjaV9idXMgMDAwMDowMDogZGV2IDBhLCBjcmVhdGVkIHBoeXNpY2FsIHNs
b3QgMTAKWyAgICAxLjY5NTkwMl0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMGIsIGNyZWF0ZWQg
cGh5c2ljYWwgc2xvdCAxMQpbICAgIDEuNjk2MDgwXSBwY2lfYnVzIDAwMDA6MDA6IGRldiAw
YywgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDEyClsgICAgMS42OTYyNTZdIHBjaV9idXMgMDAw
MDowMDogZGV2IDBkLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMTMKWyAgICAxLjY5NjQzNl0g
cGNpX2J1cyAwMDAwOjAwOiBkZXYgMGUsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAxNApbICAg
IDEuNjk2NjA4XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAwZiwgY3JlYXRlZCBwaHlzaWNhbCBz
bG90IDE1ClsgICAgMS42OTY3NjhdIHBjaV9idXMgMDAwMDowMDogZGV2IDEwLCBjcmVhdGVk
IHBoeXNpY2FsIHNsb3QgMTYKWyAgICAxLjY5NjkyMl0gcGNpX2J1cyAwMDAwOjAwOiBkZXYg
MTEsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAxNwpbICAgIDEuNjk3MDc0XSBwY2lfYnVzIDAw
MDA6MDA6IGRldiAxMiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDE4ClsgICAgMS42OTcyMzZd
IHBjaV9idXMgMDAwMDowMDogZGV2IDEzLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMTkKWyAg
ICAxLjY5NzM4N10gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMTQsIGNyZWF0ZWQgcGh5c2ljYWwg
c2xvdCAyMApbICAgIDEuNjk3NTM4XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxNSwgY3JlYXRl
ZCBwaHlzaWNhbCBzbG90IDIxClsgICAgMS42OTc2OTBdIHBjaV9idXMgMDAwMDowMDogZGV2
IDE2LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMjIKWyAgICAxLjY5Nzg1Ml0gcGNpX2J1cyAw
MDAwOjAwOiBkZXYgMTcsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAyMwpbICAgIDEuNjk4MDA4
XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxOCwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDI0Clsg
ICAgMS42OTgxNjJdIHBjaV9idXMgMDAwMDowMDogZGV2IDE5LCBjcmVhdGVkIHBoeXNpY2Fs
IHNsb3QgMjUKWyAgICAxLjY5ODMxNl0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMWEsIGNyZWF0
ZWQgcGh5c2ljYWwgc2xvdCAyNgpbICAgIDEuNjk4NDY5XSBwY2lfYnVzIDAwMDA6MDA6IGRl
diAxYiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDI3ClsgICAgMS42OTg2MjFdIHBjaV9idXMg
MDAwMDowMDogZGV2IDFjLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMjgKWyAgICAxLjY5ODc3
Ml0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMWQsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAyOQpb
ICAgIDEuNjk4OTI0XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxZSwgY3JlYXRlZCBwaHlzaWNh
bCBzbG90IDMwClsgICAgMS42OTkwODddIHBjaV9idXMgMDAwMDowMDogZGV2IDFmLCBjcmVh
dGVkIHBoeXNpY2FsIHNsb3QgMzEKWyAgICAxLjcwMDMyN10gYWNwaXBocDogU2xvdCBbM10g
cmVnaXN0ZXJlZApbICAgIDEuNzEwMzI3XSBhY3BpcGhwOiBTbG90IFs0XSByZWdpc3RlcmVk
ClsgICAgMS43MjM2OTBdIGFjcGlwaHA6IFNsb3QgWzVdIHJlZ2lzdGVyZWQKWyAgICAxLjcz
MzY2Nl0gYWNwaXBocDogU2xvdCBbNl0gcmVnaXN0ZXJlZApbICAgIDEuNzQ2OTg3XSBhY3Bp
cGhwOiBTbG90IFs3XSByZWdpc3RlcmVkClsgICAgMS43NTcwMTNdIGFjcGlwaHA6IFNsb3Qg
WzhdIHJlZ2lzdGVyZWQKWyAgICAxLjc3MDM4N10gYWNwaXBocDogU2xvdCBbOV0gcmVnaXN0
ZXJlZApbICAgIDEuNzgwMzUwXSBhY3BpcGhwOiBTbG90IFsxMF0gcmVnaXN0ZXJlZApbICAg
IDEuNzkzNzMxXSBhY3BpcGhwOiBTbG90IFsxMV0gcmVnaXN0ZXJlZApbICAgIDEuODAzNzEw
XSBhY3BpcGhwOiBTbG90IFsxMl0gcmVnaXN0ZXJlZApbICAgIDEuODE3MDYwXSBhY3BpcGhw
OiBTbG90IFsxM10gcmVnaXN0ZXJlZApbICAgIDEuODMwNDM5XSBhY3BpcGhwOiBTbG90IFsx
NF0gcmVnaXN0ZXJlZApbICAgIDEuODQwMzM4XSBhY3BpcGhwOiBTbG90IFsxNV0gcmVnaXN0
ZXJlZApbICAgIDEuODUzODQxXSBhY3BpcGhwOiBTbG90IFsxNl0gcmVnaXN0ZXJlZApbICAg
IDEuODY3MDI4XSBhY3BpcGhwOiBTbG90IFsxN10gcmVnaXN0ZXJlZApbICAgIDEuODc3MjM1
XSBhY3BpcGhwOiBTbG90IFsxOF0gcmVnaXN0ZXJlZApbICAgIDEuODkwMzgwXSBhY3BpcGhw
OiBTbG90IFsxOV0gcmVnaXN0ZXJlZApbICAgIDEuOTAzNzAwXSBhY3BpcGhwOiBTbG90IFsy
MF0gcmVnaXN0ZXJlZApbICAgIDEuOTEzNjk4XSBhY3BpcGhwOiBTbG90IFsyMV0gcmVnaXN0
ZXJlZApbICAgIDEuOTI2OTc4XSBhY3BpcGhwOiBTbG90IFsyMl0gcmVnaXN0ZXJlZApbICAg
IDEuOTM3MzMzXSBhY3BpcGhwOiBTbG90IFsyM10gcmVnaXN0ZXJlZApbICAgIDEuOTUwNDIz
XSBhY3BpcGhwOiBTbG90IFsyNF0gcmVnaXN0ZXJlZApbICAgIDEuOTYzODc4XSBhY3BpcGhw
OiBTbG90IFsyNV0gcmVnaXN0ZXJlZApbICAgIDEuOTczNzM5XSBhY3BpcGhwOiBTbG90IFsy
Nl0gcmVnaXN0ZXJlZApbICAgIDEuOTkzNzUyXSBhY3BpcGhwOiBTbG90IFsyN10gcmVnaXN0
ZXJlZApbICAgIDIuMDA3MTAwXSBhY3BpcGhwOiBTbG90IFsyOF0gcmVnaXN0ZXJlZApbICAg
IDIuMDIwNjYyXSBhY3BpcGhwOiBTbG90IFsyOV0gcmVnaXN0ZXJlZApbICAgIDIuMDMzODg0
XSBhY3BpcGhwOiBTbG90IFszMF0gcmVnaXN0ZXJlZApbICAgIDIuMDQ3MDI5XSBhY3BpcGhw
OiBTbG90IFszMV0gcmVnaXN0ZXJlZApbICAgIDIuMDYwMDkzXSBQQ0kgaG9zdCBicmlkZ2Ug
dG8gYnVzIDAwMDA6MDAKWyAgICAyLjA3MzM1N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1
cyByZXNvdXJjZSBbYnVzIDAwLWZmXQpbICAgIDIuMDg2NjgxXSBwY2lfYnVzIDAwMDA6MDA6
IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgwMDAwLTB4MGNmN10KWyAgICAyLjEwMzM2OV0g
cGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MGQwMC0weGZmZmZd
ClsgICAgMi4xMjAwMjRdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW21l
bSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdClsgICAgMi4xNDAwMjZdIHBjaV9idXMgMDAwMDow
MDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAweGUwMDAwMDAwLTB4ZmJmZmZmZmZdClsgICAg
Mi4xNjAwMTJdIHBjaV9idXMgMDAwMDowMDogc2Nhbm5pbmcgYnVzClsgICAgMi4xNjAzODdd
IHBjaSAwMDAwOjAwOjAwLjA6IFs4MDg2OjEyMzddIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAK
WyAgICAyLjE2MTk3M10gcGNpIDAwMDA6MDA6MDAuMDogY2FsbGluZyBxdWlya19tbWlvX2Fs
d2F5c19vbisweDAvMHgxMApbICAgIDIuMTY2OTMwXSBwY2kgMDAwMDowMDowMS4wOiBbODA4
Njo3MDAwXSB0eXBlIDAwIGNsYXNzIDB4MDYwMTAwClsgICAgMi4xNzI3NTZdIHBjaSAwMDAw
OjAwOjAxLjE6IFs4MDg2OjcwMTBdIHR5cGUgMDAgY2xhc3MgMHgwMTAxODAKWyAgICAyLjE5
MTk3NV0gcGNpIDAwMDA6MDA6MDEuMTogcmVnIDB4MjA6IFtpbyAgMHhjMjYwLTB4YzI2Zl0K
WyAgICAyLjIwMDIzNl0gcGNpIDAwMDA6MDA6MDEuMTogbGVnYWN5IElERSBxdWlyazogcmVn
IDB4MTA6IFtpbyAgMHgwMWYwLTB4MDFmN10KWyAgICAyLjIyMzM0OV0gcGNpIDAwMDA6MDA6
MDEuMTogbGVnYWN5IElERSBxdWlyazogcmVnIDB4MTQ6IFtpbyAgMHgwM2Y2XQpbICAgIDIu
MjQwMDA3XSBwY2kgMDAwMDowMDowMS4xOiBsZWdhY3kgSURFIHF1aXJrOiByZWcgMHgxODog
W2lvICAweDAxNzAtMHgwMTc3XQpbICAgIDIuMjYwMDE0XSBwY2kgMDAwMDowMDowMS4xOiBs
ZWdhY3kgSURFIHF1aXJrOiByZWcgMHgxYzogW2lvICAweDAzNzZdClsgICAgMi4yNzkwNTBd
IHBjaSAwMDAwOjAwOjAxLjI6IFs4MDg2OjcwMjBdIHR5cGUgMDAgY2xhc3MgMHgwYzAzMDAK
WyAgICAyLjI5ODY3M10gcGNpIDAwMDA6MDA6MDEuMjogcmVnIDB4MjA6IFtpbyAgMHhjMjQw
LTB4YzI1Zl0KWyAgICAyLjMxMTczM10gcGNpIDAwMDA6MDA6MDEuMzogWzgwODY6NzExM10g
dHlwZSAwMCBjbGFzcyAweDA2ODAwMApbICAgIDIuMzExODI2XSBwY2kgMDAwMDowMDowMS4z
OiBjYWxsaW5nIGFjcGlfcG1fY2hlY2tfYmxhY2tsaXN0KzB4MC8weDQwClsgICAgMi4zMTU1
MTVdIHBjaSAwMDAwOjAwOjAxLjM6IGNhbGxpbmcgcXVpcmtfcGlpeDRfYWNwaSsweDAvMHgx
NDAKWyAgICAyLjMxNTU5MV0gcGNpIDAwMDA6MDA6MDEuMzogcXVpcms6IFtpbyAgMHhiMDAw
LTB4YjAzZl0gY2xhaW1lZCBieSBQSUlYNCBBQ1BJClsgICAgMi4zMzM0MDVdIHBjaSAwMDAw
OjAwOjAxLjM6IHF1aXJrOiBbaW8gIDB4YjEwMC0weGIxMGZdIGNsYWltZWQgYnkgUElJWDQg
U01CClsgICAgMi4zNTM3NTFdIHBjaSAwMDAwOjAwOjAxLjM6IGNhbGxpbmcgcGNpX2ZpeHVw
X3BpaXg0X2FjcGkrMHgwLzB4MTAKWyAgICAyLjM1NjY3NF0gcGNpIDAwMDA6MDA6MDIuMDog
WzU4NTM6MDAwMV0gdHlwZSAwMCBjbGFzcyAweGZmODAwMApbICAgIDIuMzYzMzQ1XSBwY2kg
MDAwMDowMDowMi4wOiByZWcgMHgxMDogW2lvICAweGMwMDAtMHhjMGZmXQpbICAgIDIuMzcw
MDEzXSBwY2kgMDAwMDowMDowMi4wOiByZWcgMHgxNDogW21lbSAweGYyMDAwMDAwLTB4ZjJm
ZmZmZmYgcHJlZl0KWyAgICAyLjQwNjA4MF0gcGNpIDAwMDA6MDA6MDMuMDogWzEwMTM6MDBi
OF0gdHlwZSAwMCBjbGFzcyAweDAzMDAwMApbICAgIDIuNDEzMzc0XSBwY2kgMDAwMDowMDow
My4wOiByZWcgMHgxMDogW21lbSAweGYwMDAwMDAwLTB4ZjFmZmZmZmYgcHJlZl0KWyAgICAy
LjQyMzM3M10gcGNpIDAwMDA6MDA6MDMuMDogcmVnIDB4MTQ6IFttZW0gMHhmMzBiMDAwMC0w
eGYzMGIwZmZmXQpbICAgIDIuNDYwMDE0XSBwY2kgMDAwMDowMDowMy4wOiByZWcgMHgzMDog
W21lbSAweGYzMGEwMDAwLTB4ZjMwYWZmZmYgcHJlZl0KWyAgICAyLjQ2Mzc0Nl0gcGNpIDAw
MDA6MDA6MDUuMDogWzEwMDI6Njc1OV0gdHlwZSAwMCBjbGFzcyAweDAzMDAwMApbICAgIDIu
NDkzMzU1XSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgxMDogW21lbSAweGUwMDAwMDAwLTB4
ZWZmZmZmZmYgNjRiaXQgcHJlZl0KWyAgICAyLjUyNjcyMl0gcGNpIDAwMDA6MDA6MDUuMDog
cmVnIDB4MTg6IFttZW0gMHhmMzA2MDAwMC0weGYzMDdmZmZmIDY0Yml0XQpbICAgIDIuNTU2
NjkxXSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgyMDogW2lvICAweGMxMDAtMHhjMWZmXQpb
ICAgIDIuNjE2Njg4XSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgzMDogW21lbSAweGYzMDgw
MDAwLTB4ZjMwOWZmZmYgcHJlZl0KWyAgICAyLjYxOTA5M10gcGNpIDAwMDA6MDA6MDUuMDog
c3VwcG9ydHMgRDEgRDIKWyAgICAyLjYxOTk5OV0gcGNpX2J1cyAwMDAwOjAwOiBmaXh1cHMg
Zm9yIGJ1cwpbICAgIDIuNjE5OTk5XSBwY2lfYnVzIDAwMDA6MDA6IGJ1cyBzY2FuIHJldHVy
bmluZyB3aXRoIG1heD0wMApbICAgIDIuNjE5OTk5XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExp
bmsgW0xOS0FdIChJUlFzICo1IDEwIDExKQpbICAgIDIuNjIxNzI2XSBBQ1BJOiBQQ0kgSW50
ZXJydXB0IExpbmsgW0xOS0JdIChJUlFzIDUgKjEwIDExKQpbICAgIDIuNjI2NjY2XSBBQ1BJ
OiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0NdIChJUlFzIDUgMTAgKjExKQpbICAgIDIuNjI5
OTk5XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0RdIChJUlFzICo1IDEwIDExKQpb
ICAgIDIuNjM2NjY2XSBBQ1BJOiBFbmFibGVkIDIgR1BFcyBpbiBibG9jayAwMCB0byAwRgpb
ICAgIDIuNjM3MDYzXSB4ZW46YmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24gZHJpdmVy
ClsgICAgMi42Mzk5OTldIHZnYWFyYjogc2V0dGluZyBhcyBib290IGRldmljZTogUENJOjAw
MDA6MDA6MDMuMApbICAgIDIuNjM5OTk5XSB2Z2FhcmI6IGRldmljZSBhZGRlZDogUENJOjAw
MDA6MDA6MDMuMCxkZWNvZGVzPWlvK21lbSxvd25zPWlvK21lbSxsb2Nrcz1ub25lClsgICAg
Mi42NDQxNzVdIHZnYWFyYjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAwMDowMDowNS4wLGRlY29k
ZXM9aW8rbWVtLG93bnM9aW8rbWVtLGxvY2tzPW5vbmUKWyAgICAyLjY0NjczNV0gdmdhYXJi
OiBsb2FkZWQKWyAgICAyLjY0OTk5OV0gdmdhYXJiOiBicmlkZ2UgY29udHJvbCBwb3NzaWJs
ZSAwMDAwOjAwOjA1LjAKWyAgICAyLjY1MDA3M10gdmdhYXJiOiBubyBicmlkZ2UgY29udHJv
bCBwb3NzaWJsZSAwMDAwOjAwOjAzLjAKWyAgICAyLjY1MzMzM10gU0NTSSBzdWJzeXN0ZW0g
aW5pdGlhbGl6ZWQKWyAgICAyLjY1MzYxMV0gbGliYXRhIHZlcnNpb24gMy4wMCBsb2FkZWQu
ClsgICAgMi42NTQwNzldIEFDUEk6IGJ1cyB0eXBlIFVTQiByZWdpc3RlcmVkClsgICAgMi42
NTY2NjZdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiZnMK
WyAgICAyLjY1Njk4NF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZl
ciBodWIKWyAgICAyLjY1OTk5OV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgZGV2aWNlIGRy
aXZlciB1c2IKWyAgICAyLjY2MjcwOF0gTGludXggdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2U6
IHYyLjAwClsgICAgMi42NjM0MjZdIHBwc19jb3JlOiBMaW51eFBQUyBBUEkgdmVyLiAxIHJl
Z2lzdGVyZWQKWyAgICAyLjY2Mzg2MV0gcHBzX2NvcmU6IFNvZnR3YXJlIHZlci4gNS4zLjYg
LSBDb3B5cmlnaHQgMjAwNS0yMDA3IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4
Lml0PgpbICAgIDIuNjY2ODAwXSBQVFAgY2xvY2sgc3VwcG9ydCByZWdpc3RlcmVkClsgICAg
Mi42NzAwNDBdIFBDSTogVXNpbmcgQUNQSSBmb3IgSVJRIHJvdXRpbmcKWyAgICAyLjY3MDA0
MF0gUENJOiBwY2lfY2FjaGVfbGluZV9zaXplIHNldCB0byA2NCBieXRlcwpbICAgIDIuNjcw
MjQ3XSBwY2kgMDAwMDowMDowMS4xOiBCQVIgMDogcmVzZXJ2aW5nIFtpbyAgMHgwMWYwLTB4
MDFmNyBmbGFncyAweDExMF0gKGQ9MCwgcD0wKQpbICAgIDIuNjcwMjUyXSBwY2kgMDAwMDow
MDowMS4xOiBCQVIgMTogcmVzZXJ2aW5nIFtpbyAgMHgwM2Y2IGZsYWdzIDB4MTEwXSAoZD0w
LCBwPTApClsgICAgMi42NzAyNTRdIHBjaSAwMDAwOjAwOjAxLjE6IEJBUiAyOiByZXNlcnZp
bmcgW2lvICAweDAxNzAtMHgwMTc3IGZsYWdzIDB4MTEwXSAoZD0wLCBwPTApClsgICAgMi42
NzAyNTZdIHBjaSAwMDAwOjAwOjAxLjE6IEJBUiAzOiByZXNlcnZpbmcgW2lvICAweDAzNzYg
ZmxhZ3MgMHgxMTBdIChkPTAsIHA9MCkKWyAgICAyLjY3MDI1OF0gcGNpIDAwMDA6MDA6MDEu
MTogQkFSIDQ6IHJlc2VydmluZyBbaW8gIDB4YzI2MC0weGMyNmYgZmxhZ3MgMHg0MDEwMV0g
KGQ9MCwgcD0wKQpbICAgIDIuNjcwMzI3XSBwY2kgMDAwMDowMDowMS4yOiBCQVIgNDogcmVz
ZXJ2aW5nIFtpbyAgMHhjMjQwLTB4YzI1ZiBmbGFncyAweDQwMTAxXSAoZD0wLCBwPTApClsg
ICAgMi42NzA0NzBdIHBjaSAwMDAwOjAwOjAyLjA6IEJBUiAwOiByZXNlcnZpbmcgW2lvICAw
eGMwMDAtMHhjMGZmIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9MCkKWyAgICAyLjY3MDQ3Ml0g
cGNpIDAwMDA6MDA6MDIuMDogQkFSIDE6IHJlc2VydmluZyBbbWVtIDB4ZjIwMDAwMDAtMHhm
MmZmZmZmZiBmbGFncyAweDQyMjA4XSAoZD0wLCBwPTApClsgICAgMi42NzA1NDBdIHBjaSAw
MDAwOjAwOjAzLjA6IEJBUiAwOiByZXNlcnZpbmcgW21lbSAweGYwMDAwMDAwLTB4ZjFmZmZm
ZmYgZmxhZ3MgMHg0MjIwOF0gKGQ9MCwgcD0wKQpbICAgIDIuNjcwNTQyXSBwY2kgMDAwMDow
MDowMy4wOiBCQVIgMTogcmVzZXJ2aW5nIFttZW0gMHhmMzBiMDAwMC0weGYzMGIwZmZmIGZs
YWdzIDB4NDAyMDBdIChkPTAsIHA9MCkKWyAgICAyLjY3MDYzMV0gcGNpIDAwMDA6MDA6MDUu
MDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZTAwMDAwMDAtMHhlZmZmZmZmZiBmbGFncyAw
eDE0MjIwY10gKGQ9MCwgcD0wKQpbICAgIDIuNjcwNjMzXSBwY2kgMDAwMDowMDowNS4wOiBC
QVIgMjogcmVzZXJ2aW5nIFttZW0gMHhmMzA2MDAwMC0weGYzMDdmZmZmIGZsYWdzIDB4MTQw
MjA0XSAoZD0wLCBwPTApClsgICAgMi42NzA2MzVdIHBjaSAwMDAwOjAwOjA1LjA6IEJBUiA0
OiByZXNlcnZpbmcgW2lvICAweGMxMDAtMHhjMWZmIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9
MCkKWyAgICAyLjY3MTQzMF0gZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVyIFttZW0gMHgwMDA5
ZmMwMC0weDAwMDlmZmZmXQpbICAgIDIuNjcxNDUxXSBlODIwOiByZXNlcnZlIFJBTSBidWZm
ZXIgW21lbSAweDNmN2ZmMDAwLTB4M2ZmZmZmZmZdClsgICAgMi42NzMxNjhdIEJsdWV0b290
aDogQ29yZSB2ZXIgMi4xOQpbICAgIDIuNjczMzU0XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9j
b2wgZmFtaWx5IDMxClsgICAgMi42NzMzNTRdIEJsdWV0b290aDogSENJIGRldmljZSBhbmQg
Y29ubmVjdGlvbiBtYW5hZ2VyIGluaXRpYWxpemVkClsgICAgMi42NzY2NjZdIEJsdWV0b290
aDogSENJIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgIDIuNjc2NzAwXSBCbHVldG9v
dGg6IEwyQ0FQIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgIDIuNjc5OTk5XSBCbHVl
dG9vdGg6IFNDTyBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgICAyLjY4MDM2Ml0gSFBF
VDogMyB0aW1lcnMgaW4gdG90YWwsIDAgdGltZXJzIHdpbGwgYmUgdXNlZCBmb3IgcGVyLWNw
dSB0aW1lcgpbICAgIDIuNjgzMzMzXSBocGV0MDogYXQgTU1JTyAweGZlZDAwMDAwLCBJUlFz
IDIsIDgsIDAKWyAgICAyLjY4OTk5OV0gaHBldDA6IDMgY29tcGFyYXRvcnMsIDY0LWJpdCA2
Mi41MDAwMDAgTUh6IGNvdW50ZXIKWyAgICAyLjY5MDIyNl0gU3dpdGNoZWQgdG8gY2xvY2tz
b3VyY2UgeGVuClsgICAgMi42OTMzMzNdIEZTLUNhY2hlOiBMb2FkZWQKWyAgICAyLjcxNDAw
Nl0gcG5wOiBQblAgQUNQSSBpbml0ClsgICAgMi43MjMxNzBdIHN5c3RlbSAwMDowMDogW21l
bSAweDAwMDAwMDAwLTB4MDAwOWZmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZApbICAgIDIu
NzQxNjEzXSBzeXN0ZW0gMDA6MDA6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQ
TlAwYzAyIChhY3RpdmUpClsgICAgMi43NDI0MTZdIHN5c3RlbSAwMDowMTogW2lvICAweDA4
YTAtMHgwOGEzXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDIuNzU4MjY3XSBzeXN0ZW0gMDA6
MDE6IFtpbyAgMHgwY2MwLTB4MGNjZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAyLjc3NDMw
M10gc3lzdGVtIDAwOjAxOiBbaW8gIDB4MDRkMC0weDA0ZDFdIGhhcyBiZWVuIHJlc2VydmVk
ClsgICAgMi43OTAyMTFdIHN5c3RlbSAwMDowMTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmlj
ZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICAyLjc5MDQ2M10geGVuOiAtLT4gcGlycT0x
NiAtPiBpcnE9OCAoZ3NpPTgpClsgICAgMi43OTA2NjddIHBucCAwMDowMjogUGx1ZyBhbmQg
UGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBiMDAgKGFjdGl2ZSkKWyAgICAyLjc5MDkzNl0g
eGVuOiAtLT4gcGlycT0xNyAtPiBpcnE9MTIgKGdzaT0xMikKWyAgICAyLjc5MTExOV0gcG5w
IDAwOjAzOiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGYxMyAoYWN0aXZl
KQpbICAgIDIuNzkxMzM5XSB4ZW46IC0tPiBwaXJxPTE4IC0+IGlycT0xIChnc2k9MSkKWyAg
ICAyLjc5MTU0Nl0gcG5wIDAwOjA0OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMg
UE5QMDMwMyBQTlAwMzBiIChhY3RpdmUpClsgICAgMi43OTE3NzVdIHhlbjogLS0+IHBpcnE9
MTkgLT4gaXJxPTYgKGdzaT02KQpbICAgIDIuNzkxNzkwXSBwbnAgMDA6MDU6IFtkbWEgMl0K
WyAgICAyLjc5MTk3N10gcG5wIDAwOjA1OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJ
RHMgUE5QMDcwMCAoYWN0aXZlKQpbICAgIDIuNzkyMzIyXSB4ZW46IC0tPiBwaXJxPTIwIC0+
IGlycT00IChnc2k9NCkKWyAgICAyLjc5MjUwN10gcG5wIDAwOjA2OiBQbHVnIGFuZCBQbGF5
IEFDUEkgZGV2aWNlLCBJRHMgUE5QMDUwMSAoYWN0aXZlKQpbICAgIDIuNzkzNTU0XSBzeXN0
ZW0gMDA6MDc6IFtpbyAgMHhhZTAwLTB4YWUwZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAy
LjgwOTkxMF0gc3lzdGVtIDAwOjA3OiBbaW8gIDB4YjA0NC0weGIwNDddIGhhcyBiZWVuIHJl
c2VydmVkClsgICAgMi44MjU2ODRdIHN5c3RlbSAwMDowNzogUGx1ZyBhbmQgUGxheSBBQ1BJ
IGRldmljZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICAyLjgyODMwN10gcG5wOiBQblAg
QUNQSTogZm91bmQgOCBkZXZpY2VzClsgICAgMi44NzA4NjNdIHBjaV9idXMgMDAwMDowMDog
cmVzb3VyY2UgNCBbaW8gIDB4MDAwMC0weDBjZjddClsgICAgMi44NzA4NjhdIHBjaV9idXMg
MDAwMDowMDogcmVzb3VyY2UgNSBbaW8gIDB4MGQwMC0weGZmZmZdClsgICAgMi44NzA4NzFd
IHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgNiBbbWVtIDB4MDAwYTAwMDAtMHgwMDBiZmZm
Zl0KWyAgICAyLjg3MDg3M10gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA3IFttZW0gMHhl
MDAwMDAwMC0weGZiZmZmZmZmXQpbICAgIDIuODcxMDIwXSBORVQ6IFJlZ2lzdGVyZWQgcHJv
dG9jb2wgZmFtaWx5IDIKWyAgICAyLjg4NDAwN10gVENQIGVzdGFibGlzaGVkIGhhc2ggdGFi
bGUgZW50cmllczogODE5MiAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQpbICAgIDIuOTAzOTk2
XSBUQ1AgYmluZCBoYXNoIHRhYmxlIGVudHJpZXM6IDgxOTIgKG9yZGVyOiA3LCA1MjQyODgg
Ynl0ZXMpClsgICAgMi45MjI1MDRdIFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJlZCAoZXN0
YWJsaXNoZWQgODE5MiBiaW5kIDgxOTIpClsgICAgMi45NDAwNTldIFRDUDogcmVubyByZWdp
c3RlcmVkClsgICAgMi45NDk4OTNdIFVEUCBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3Jk
ZXI6IDQsIDgxOTIwIGJ5dGVzKQpbICAgIDIuOTY2MjA4XSBVRFAtTGl0ZSBoYXNoIHRhYmxl
IGVudHJpZXM6IDUxMiAob3JkZXI6IDQsIDgxOTIwIGJ5dGVzKQpbICAgIDIuOTgzODE4XSBO
RVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDEKWyAgICAyLjk5NzAxOV0gcGNpIDAw
MDA6MDA6MDAuMDogY2FsbGluZyBxdWlya19uYXRvbWErMHgwLzB4NDAKWyAgICAyLjk5NzAy
Ml0gcGNpIDAwMDA6MDA6MDAuMDogTGltaXRpbmcgZGlyZWN0IFBDSS9QQ0kgdHJhbnNmZXJz
ClsgICAgMy4wMTQ2MzddIHBjaSAwMDAwOjAwOjAwLjA6IGNhbGxpbmcgcXVpcmtfcGFzc2l2
ZV9yZWxlYXNlKzB4MC8weDkwClsgICAgMy4wMTQ3MjJdIHBjaSAwMDAwOjAwOjAxLjA6IFBJ
SVgzOiBFbmFibGluZyBQYXNzaXZlIFJlbGVhc2UKWyAgICAzLjAzMTY0NF0gcGNpIDAwMDA6
MDA6MDEuMDogY2FsbGluZyBxdWlya19pc2FfZG1hX2hhbmdzKzB4MC8weDQwClsgICAgMy4w
MzE2NDldIHBjaSAwMDAwOjAwOjAxLjA6IEFjdGl2YXRpbmcgSVNBIERNQSBoYW5nIHdvcmth
cm91bmRzClsgICAgMy4wNDkzMjldIHBjaSAwMDAwOjAwOjAxLjI6IGNhbGxpbmcgcXVpcmtf
dXNiX2Vhcmx5X2hhbmRvZmYrMHgwLzB4NmMwClsgICAgMy4wNTM4NDNdIHhlbjogLS0+IHBp
cnE9MjEgLT4gaXJxPTIzIChnc2k9MjMpClsgICAgMy4wNjExNjldIHBjaSAwMDAwOjAwOjAz
LjA6IGNhbGxpbmcgcGNpX2ZpeHVwX3ZpZGVvKzB4MC8weGQwClsgICAgMy4wNjEyNTddIHBj
aSAwMDAwOjAwOjAzLjA6IFZpZGVvIGRldmljZSB3aXRoIHNoYWRvd2VkIFJPTQpbICAgIDMu
MDYxMzMwXSBwY2kgMDAwMDowMDowNS4wOiBjYWxsaW5nIHBjaV9maXh1cF92aWRlbysweDAv
MHhkMApbICAgIDMuMDYxNDE5XSBQQ0k6IENMUyAwIGJ5dGVzLCBkZWZhdWx0IDY0ClsgICAg
My4wNjE3ODBdIFRyeWluZyB0byB1bnBhY2sgcm9vdGZzIGltYWdlIGFzIGluaXRyYW1mcy4u
LgpbICAgIDMuMjU5NTkwXSBGcmVlaW5nIGluaXRyZCBtZW1vcnk6IDg0MzZLIChmZmZmODgw
MDM2Zjc2MDAwIC0gZmZmZjg4MDAzNzdiMzAwMCkKWyAgICAzLjQ1MDMxMl0gRE1BLUFQSTog
cHJlYWxsb2NhdGVkIDY1NTM2IGRlYnVnIGVudHJpZXMKWyAgICAzLjQ2NDUzM10gRE1BLUFQ
STogZGVidWdnaW5nIGVuYWJsZWQgYnkga2VybmVsIGNvbmZpZwpbICAgIDMuNDg0MzA0XSBT
Y2FubmluZyBmb3IgbG93IG1lbW9yeSBjb3JydXB0aW9uIGV2ZXJ5IDYwIHNlY29uZHMKWyAg
ICAzLjUwODU5OV0gc2hhMV9zc3NlMzogTmVpdGhlciBBVlggbm9yIEFWWDIgbm9yIFNTU0Uz
IGlzIGF2YWlsYWJsZS91c2FibGUuClsgICAgMy41Mjk3NjVdIGZ1dGV4IGhhc2ggdGFibGUg
ZW50cmllczogMjA0OCAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykKWyAgICAzLjU0NzIyNF0g
YXVkaXQ6IGluaXRpYWxpemluZyBuZXRsaW5rIHN1YnN5cyAoZGlzYWJsZWQpClsgICAgMy41
NjIyNThdIGF1ZGl0OiB0eXBlPTIwMDAgYXVkaXQoMTQxMTUxMDE1OS4wODI6MSk6IGluaXRp
YWxpemVkClsgICAgMy41Nzk4NzldIEh1Z2VUTEIgcmVnaXN0ZXJlZCAyIE1CIHBhZ2Ugc2l6
ZSwgcHJlLWFsbG9jYXRlZCAwIHBhZ2VzClsgICAgMy42NTI0MzldIFZGUzogRGlzayBxdW90
YXMgZHF1b3RfNi41LjIKWyAgICAzLjY2NDMzOF0gRHF1b3QtY2FjaGUgaGFzaCB0YWJsZSBl
bnRyaWVzOiA1MTIgKG9yZGVyIDAsIDQwOTYgYnl0ZXMpClsgICAgMy42OTM5NDNdIG50ZnM6
IGRyaXZlciAyLjEuMzAgW0ZsYWdzOiBSL1ddLgpbICAgIDMuNzA5Mjg4XSBmdXNlIGluaXQg
KEFQSSB2ZXJzaW9uIDcuMjMpClsgICAgMy43MjcwNzhdIGdmczI6IEdGUzIgaW5zdGFsbGVk
ClsgICAgMy43MzgzODhdIGNlcGg6IGxvYWRlZCAobWRzIHByb3RvIDMyKQpbICAgIDMuNzQ5
Mzc0XSBtc2dtbmkgaGFzIGJlZW4gc2V0IHRvIDE5MzYKWyAgICAzLjc2NDExNF0gYm91bmNl
OiBwb29sIHNpemU6IDY0IHBhZ2VzClsgICAgMy43NzU3ODRdIEJsb2NrIGxheWVyIFNDU0kg
Z2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lvbiAwLjQgbG9hZGVkIChtYWpvciAyNTApClsg
ICAgMy43OTQ2NThdIGlvIHNjaGVkdWxlciBub29wIHJlZ2lzdGVyZWQKWyAgICAzLjgwNjI2
MV0gaW8gc2NoZWR1bGVyIGRlYWRsaW5lIHJlZ2lzdGVyZWQKWyAgICAzLjgxOTUxNF0gaW8g
c2NoZWR1bGVyIGNmcSByZWdpc3RlcmVkIChkZWZhdWx0KQpbICAgIDMuODMyODc4XSBzdGFy
dCBwbGlzdCB0ZXN0ClsgICAgMy44MzQwNzldIGVuZCBwbGlzdCB0ZXN0ClsgICAgMy44MzQz
MjBdIGNyYzMyOiBDUkNfTEVfQklUUyA9IDY0LCBDUkNfQkUgQklUUyA9IDY0ClsgICAgMy44
NDg5ODJdIGNyYzMyOiBzZWxmIHRlc3RzIHBhc3NlZCwgcHJvY2Vzc2VkIDIyNTk0NCBieXRl
cyBpbiAxMDMyMTIgbnNlYwpbICAgIDMuODY4MTc4XSBjcmMzMmM6IENSQ19MRV9CSVRTID0g
NjQKWyAgICAzLjg3ODgxOV0gY3JjMzJjOiBzZWxmIHRlc3RzIHBhc3NlZCwgcHJvY2Vzc2Vk
IDIyNTk0NCBieXRlcyBpbiA1MzU1OCBuc2VjClsgICAgMy45MDY1NTRdIGNyYzMyX2NvbWJp
bmU6IDgzNzMgc2VsZiB0ZXN0cyBwYXNzZWQKWyAgICAzLjkyOTczOV0gY3JjMzJjX2NvbWJp
bmU6IDgzNzMgc2VsZiB0ZXN0cyBwYXNzZWQKWyAgICAzLjk0NDAwNV0gcGNpX2hvdHBsdWc6
IFBDSSBIb3QgUGx1ZyBQQ0kgQ29yZSB2ZXJzaW9uOiAwLjUKWyAgICAzLjk2MDQyOV0gcGNp
ZWhwOiBQQ0kgRXhwcmVzcyBIb3QgUGx1ZyBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAw
LjQKWyAgICAzLjk4MDQ3MV0gY3BjaWhwX3p0NTU1MDogWlQ1NTUwIENvbXBhY3RQQ0kgSG90
IFBsdWcgRHJpdmVyIHZlcnNpb246IDAuMgpbICAgIDMuOTk4NzY0XSBjcGNpaHBfZ2VuZXJp
YzogR2VuZXJpYyBwb3J0IEkvTyBDb21wYWN0UENJIEhvdCBQbHVnIERyaXZlciB2ZXJzaW9u
OiAwLjEKWyAgICA0LjAyMDk3MF0gY3BjaWhwX2dlbmVyaWM6IG5vdCBjb25maWd1cmVkLCBk
aXNhYmxpbmcuClsgICAgNC4wMzUwNjddIHNocGNocDogU3RhbmRhcmQgSG90IFBsdWcgUENJ
IENvbnRyb2xsZXIgRHJpdmVyIHZlcnNpb246IDAuNApbICAgIDQuMDY4NTA4XSBhY3BpcGhw
X2libTogaWJtX2FjcGlwaHBfaW5pdDogYWNwaV93YWxrX25hbWVzcGFjZSBmYWlsZWQKWyAg
ICA0LjA4Nzg0Nl0gaW5wdXQ6IFBvd2VyIEJ1dHRvbiBhcyAvZGV2aWNlcy9MTlhTWVNUTTow
MC9MTlhQV1JCTjowMC9pbnB1dC9pbnB1dDAKWyAgICA0LjExMDA3OV0gQUNQSTogUG93ZXIg
QnV0dG9uIFtQV1JGXQpbICAgIDQuMTIxMzU0XSBpbnB1dDogU2xlZXAgQnV0dG9uIGFzIC9k
ZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNMUEJOOjAwL2lucHV0L2lucHV0MQpbICAgIDQuMTQy
MjQ3XSBBQ1BJOiBTbGVlcCBCdXR0b24gW1NMUEZdClsgICAgNC4xNTYwOThdIHhlbjp4ZW5f
ZXZ0Y2huOiBFdmVudC1jaGFubmVsIGRldmljZSBpbnN0YWxsZWQKWyAgICA0LjE3Nzc5NV0g
eGVuOiAtLT4gcGlycT0yMiAtPiBpcnE9MjQgKGdzaT0yNCkKWyAgICA0LjE3ODIxMV0geGVu
OmdyYW50X3RhYmxlOiBHcmFudCB0YWJsZXMgdXNpbmcgdmVyc2lvbiAxIGxheW91dApbICAg
IDQuMjAxMjk4XSBHcmFudCB0YWJsZSBpbml0aWFsaXplZApbICAgIDQuMjE3OTkyXSBTZXJp
YWw6IDgyNTAvMTY1NTAgZHJpdmVyLCA0IHBvcnRzLCBJUlEgc2hhcmluZyBlbmFibGVkClsg
ICAgNC4yODQ0MTZdIDAwOjA2OiB0dHlTMCBhdCBJL08gMHgzZjggKGlycSA9IDQsIGJhc2Vf
YmF1ZCA9IDExNTIwMCkgaXMgYSAxNjU1MEEKWyAgICA0LjMwOTg0N10gTGludXggYWdwZ2Fy
dCBpbnRlcmZhY2UgdjAuMTAzClsgICAgNC4zMjI1MjldIEhhbmdjaGVjazogc3RhcnRpbmcg
aGFuZ2NoZWNrIHRpbWVyIDAuOS4xICh0aWNrIGlzIDE4MCBzZWNvbmRzLCBtYXJnaW4gaXMg
NjAgc2Vjb25kcykuClsgICAgNC4zNDY2NDldIFtkcm1dIEluaXRpYWxpemVkIGRybSAxLjEu
MCAyMDA2MDgxMApbICAgIDQuMzU5NzIyXSBbZHJtXSByYWRlb24ga2VybmVsIG1vZGVzZXR0
aW5nIGVuYWJsZWQuClsgICAgNC4zODA0MzVdIHhlbjogLS0+IHBpcnE9MzIgLT4gaXJxPTM2
IChnc2k9MzYpClsgICAgNC4zODM4OTFdIFtkcm1dIGluaXRpYWxpemluZyBrZXJuZWwgbW9k
ZXNldHRpbmcgKFRVUktTIDB4MTAwMjoweDY3NTkgMHgxNzRCOjB4RTE5MykuClsgICAgNC40
MDU1OTddIFtkcm1dIHJlZ2lzdGVyIG1taW8gYmFzZTogMHhGMzA2MDAwMApbICAgIDQuNDE4
MjYyXSBbZHJtXSByZWdpc3RlciBtbWlvIHNpemU6IDEzMTA3MgpbICAgIDQuNTU5OTExXSBB
VE9NIEJJT1M6IEVMSVhJUgpbICAgIDQuNTY5MDYzXSBbZHJtXSBHUFUgbm90IHBvc3RlZC4g
cG9zdGluZyBub3cuLi4KWyAgICA0LjU4NTU0Ml0gcmFkZW9uIDAwMDA6MDA6MDUuMDogVlJB
TTogMTAyNE0gMHgwMDAwMDAwMDAwMDAwMDAwIC0gMHgwMDAwMDAwMDNGRkZGRkZGICgxMDI0
TSB1c2VkKQpbICAgIDQuNjA5NjY0XSByYWRlb24gMDAwMDowMDowNS4wOiBHVFQ6IDEwMjRN
IDB4MDAwMDAwMDA0MDAwMDAwMCAtIDB4MDAwMDAwMDA3RkZGRkZGRgpbICAgIDQuNjMyNzkw
XSBbZHJtXSBEZXRlY3RlZCBWUkFNIFJBTT0xMDI0TSwgQkFSPTI1Nk0KWyAgICA0LjY0NTc2
NF0gW2RybV0gUkFNIHdpZHRoIDEyOGJpdHMgRERSClsgICAgNC42NTc1MzZdIFtUVE1dIFpv
bmUgIGtlcm5lbDogQXZhaWxhYmxlIGdyYXBoaWNzIG1lbW9yeTogNDk1ODQ2IGtpQgpbICAg
IDQuNjc0ODg3XSBbVFRNXSBJbml0aWFsaXppbmcgcG9vbCBhbGxvY2F0b3IKWyAgICA0LjY4
Njg3M10gW1RUTV0gSW5pdGlhbGl6aW5nIERNQSBwb29sIGFsbG9jYXRvcgpbICAgIDQuNzAw
NDE0XSBbZHJtXSByYWRlb246IDEwMjRNIG9mIFZSQU0gbWVtb3J5IHJlYWR5ClsgICAgNC43
MTQ2MDFdIFtkcm1dIHJhZGVvbjogMTAyNE0gb2YgR1RUIG1lbW9yeSByZWFkeS4KWyAgICA0
LjcyODY5M10gW2RybV0gTG9hZGluZyBUVVJLUyBNaWNyb2NvZGUKWyAgICA0Ljc0MDkyNl0g
W2RybV0gSW50ZXJuYWwgdGhlcm1hbCBjb250cm9sbGVyIHdpdGggZmFuIGNvbnRyb2wKWyAg
ICA0Ljc1NzQ5NF0gPT0gcG93ZXIgc3RhdGUgMCA9PQpbICAgIDQuNzY2ODMwXSAJdWkgY2xh
c3M6IG5vbmUKWyAgICA0Ljc3NjgzMl0gCWludGVybmFsIGNsYXNzOiBib290IApbICAgIDQu
Nzg5NjI1XSAJY2FwczogClsgICAgNC43OTc5NDVdIAl1dmQgICAgdmNsazogMCBkY2xrOiAw
ClsgICAgNC44MDgxOTFdIAkJcG93ZXIgbGV2ZWwgMCAgICBzY2xrOiAxMDAwMCBtY2xrOiAx
NTAwMCB2ZGRjOiA5MDAgdmRkY2k6IDAKWyAgICA0LjgyNzUyM10gCQlwb3dlciBsZXZlbCAx
ICAgIHNjbGs6IDEwMDAwIG1jbGs6IDE1MDAwIHZkZGM6IDkwMCB2ZGRjaTogMApbICAgIDQu
ODQ1MzU2XSAJCXBvd2VyIGxldmVsIDIgICAgc2NsazogMTAwMDAgbWNsazogMTUwMDAgdmRk
YzogOTAwIHZkZGNpOiAwClsgICAgNC44NjM0NTNdIAlzdGF0dXM6IGMgciBiIApbICAgIDQu
ODc2NjUwXSA9PSBwb3dlciBzdGF0ZSAxID09ClsgICAgNC44ODU5NjZdIAl1aSBjbGFzczog
cGVyZm9ybWFuY2UKWyAgICA0Ljg5OTI4OF0gCWludGVybmFsIGNsYXNzOiBub25lClsgICAg
NC45MTM0MjFdIAljYXBzOiAKWyAgICA0LjkyMTcyNV0gCXV2ZCAgICB2Y2xrOiAwIGRjbGs6
IDAKWyAgICA0LjkzMjE1MF0gCQlwb3dlciBsZXZlbCAwICAgIHNjbGs6IDEwMDAwIG1jbGs6
IDE1MDAwIHZkZGM6IDkwMCB2ZGRjaTogMApbICAgIDQuOTUwNzUxXSAJCXBvd2VyIGxldmVs
IDEgICAgc2NsazogNDAwMDAgbWNsazogNjY3MDAgdmRkYzogMTAwMCB2ZGRjaTogMApbICAg
IDQuOTY5MDMxXSAJCXBvd2VyIGxldmVsIDIgICAgc2NsazogNjUwMDAgbWNsazogNjY3MDAg
dmRkYzogMTA1MCB2ZGRjaTogMApbICAgIDQuOTkwNTgzXSAJc3RhdHVzOiAKWyAgICA0Ljk5
OTIxM10gPT0gcG93ZXIgc3RhdGUgMiA9PQpbICAgIDUuMDA4NjEwXSAJdWkgY2xhc3M6IG5v
bmUKWyAgICA1LjAxODMyMV0gCWludGVybmFsIGNsYXNzOiB1dmQgClsgICAgNS4wMzIxNjZd
IAljYXBzOiB2aWRlbyAKWyAgICA1LjA0MjM1OV0gCXV2ZCAgICB2Y2xrOiA3MDAwMCBkY2xr
OiA1NjAwMApbICAgIDUuMDU0MTk5XSAJCXBvd2VyIGxldmVsIDAgICAgc2NsazogNjUwMDAg
bWNsazogNjY3MDAgdmRkYzogMTA1MCB2ZGRjaTogMApbICAgIDUuMDcyNTY5XSAJCXBvd2Vy
IGxldmVsIDEgICAgc2NsazogNjUwMDAgbWNsazogNjY3MDAgdmRkYzogMTA1MCB2ZGRjaTog
MApbICAgIDUuMDkwMzMyXSAJCXBvd2VyIGxldmVsIDIgICAgc2NsazogNjUwMDAgbWNsazog
NjY3MDAgdmRkYzogMTA1MCB2ZGRjaTogMApbICAgIDUuMTA5MTE1XSAJc3RhdHVzOiAKWyAg
ICA1LjEyMjYzNF0gW2RybV0gcmFkZW9uOiBkcG0gaW5pdGlhbGl6ZWQKWyAgICA1LjEzNDIw
NF0gW2RybV0gR0FSVDogbnVtIGNwdSBwYWdlcyAyNjIxNDQsIG51bSBncHUgcGFnZXMgMjYy
MTQ0ClsgICAgNS4xNTQzNDBdIFtkcm1dIFBDSUUgR0FSVCBvZiAxMDI0TSBlbmFibGVkICh0
YWJsZSBhdCAweDAwMDAwMDAwMDAyNzMwMDApLgpbICAgIDUuMTczMjE1XSByYWRlb24gMDAw
MDowMDowNS4wOiBXQiBlbmFibGVkClsgICAgNS4xODQ4NzZdIHJhZGVvbiAwMDAwOjAwOjA1
LjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDAgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDA0MDAw
MGMwMCBhbmQgY3B1IGFkZHIgMHhmZmZmODgwMDM5NTc4YzAwClsgICAgNS4yMjA0ODFdIHJh
ZGVvbiAwMDAwOjAwOjA1LjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDMgdXNlIGdwdSBhZGRy
IDB4MDAwMDAwMDA0MDAwMGMwYyBhbmQgY3B1IGFkZHIgMHhmZmZmODgwMDM5NTc4YzBjClsg
ICAgNS4yNTE3NzJdIHJhZGVvbiAwMDAwOjAwOjA1LjA6IGZlbmNlIGRyaXZlciBvbiByaW5n
IDUgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDAwMDA3MjExOCBhbmQgY3B1IGFkZHIgMHhmZmZm
YzkwMDAwNDMyMTE4ClsgICAgNS4yODU1MTldIFtkcm1dIFN1cHBvcnRzIHZibGFuayB0aW1l
c3RhbXAgY2FjaGluZyBSZXYgMiAoMjEuMTAuMjAxMykuClsgICAgNS4zMDQ5ODBdIFtkcm1d
IERyaXZlciBzdXBwb3J0cyBwcmVjaXNlIHZibGFuayB0aW1lc3RhbXAgcXVlcnkuClsgICAg
NS4zMjE4ODldIHJhZGVvbiAwMDAwOjAwOjA1LjA6IHhlbjogbXNpIGJvdW5kIHRvIHBpcnE9
ODcKWyAgICA1LjMyMTk0MF0gcmFkZW9uIDAwMDA6MDA6MDUuMDogeGVuOiBtc2kgLS0+IHBp
cnE9ODcgLS0+IGlycT02OApbICAgIDUuMzIyNDAxXSByYWRlb24gMDAwMDowMDowNS4wOiBy
YWRlb246IHVzaW5nIE1TSS4KWyAgICA1LjMzNzA1OF0gW2RybV0gcmFkZW9uOiBpcnEgaW5p
dGlhbGl6ZWQuClsgICAgNS4zNzA1NjhdIFtkcm1dIHJpbmcgdGVzdCBvbiAwIHN1Y2NlZWRl
ZCBpbiAyIHVzZWNzClsgICAgNS4zODM5NzldIFtkcm1dIHJpbmcgdGVzdCBvbiAzIHN1Y2Nl
ZWRlZCBpbiAyIHVzZWNzClsgICAgNS41ODUxOTBdIFtkcm1dIHJpbmcgdGVzdCBvbiA1IHN1
Y2NlZWRlZCBpbiAyIHVzZWNzClsgICAgNS41OTkyNTJdIFtkcm1dIFVWRCBpbml0aWFsaXpl
ZCBzdWNjZXNzZnVsbHkuClsgICAgNS42MTQ5MzRdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAw
IHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAgNS42Mjk5NzVdIFtkcm1dIGliIHRlc3Qgb24g
cmluZyAzIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAgNS43OTc3MzFdIFtkcm1dIGliIHRl
c3Qgb24gcmluZyA1IHN1Y2NlZWRlZApbICAgIDUuODE2Mzk3XSBbZHJtXSBSYWRlb24gRGlz
cGxheSBDb25uZWN0b3JzClsgICAgNS44MzAxMDhdIFtkcm1dIENvbm5lY3RvciAwOgpbICAg
IDUuODM5OTY1XSBbZHJtXSAgIEhETUktQS0xClsgICAgNS44NDgzNjNdIFtkcm1dICAgSFBE
NApbICAgIDUuODU1ODYzXSBbZHJtXSAgIEREQzogMHg2NDUwIDB4NjQ1MCAweDY0NTQgMHg2
NDU0IDB4NjQ1OCAweDY0NTggMHg2NDVjIDB4NjQ1YwpbICAgIDUuODc3MTI4XSBbZHJtXSAg
IEVuY29kZXJzOgpbICAgIDUuODg2MTQ5XSBbZHJtXSAgICAgREZQMTogSU5URVJOQUxfVU5J
UEhZMgpbICAgIDUuODk4ODI2XSBbZHJtXSBDb25uZWN0b3IgMToKWyAgICA1LjkwODI5OV0g
W2RybV0gICBEVkktRC0xClsgICAgNS45MTY0MjddIFtkcm1dICAgSFBEMQpbICAgIDUuOTI0
NDkwXSBbZHJtXSAgIEREQzogMHg2NDYwIDB4NjQ2MCAweDY0NjQgMHg2NDY0IDB4NjQ2OCAw
eDY0NjggMHg2NDZjIDB4NjQ2YwpbICAgIDUuOTQ1NTU2XSBbZHJtXSAgIEVuY29kZXJzOgpb
ICAgIDUuOTU0ODcwXSBbZHJtXSAgICAgREZQMjogSU5URVJOQUxfVU5JUEhZClsgICAgNS45
NjYzODddIFtkcm1dIENvbm5lY3RvciAyOgpbICAgIDUuOTc2MTI1XSBbZHJtXSAgIFZHQS0x
ClsgICAgNS45ODUwNDNdIFtkcm1dICAgRERDOiAweDY0MzAgMHg2NDMwIDB4NjQzNCAweDY0
MzQgMHg2NDM4IDB4NjQzOCAweDY0M2MgMHg2NDNjClsgICAgNi4wMDYxMzVdIFtkcm1dICAg
RW5jb2RlcnM6ClsgICAgNi4wMTkwMzJdIFtkcm1dICAgICBDUlQxOiBJTlRFUk5BTF9LTERT
Q1BfREFDMQpbICAgIDYuMDM3NTEzXSBzd2l0Y2hpbmcgZnJvbSBwb3dlciBzdGF0ZToKWyAg
ICA2LjA1MzQyOV0gCXVpIGNsYXNzOiBub25lClsgICAgNi4wNjM2OTZdIAlpbnRlcm5hbCBj
bGFzczogYm9vdCAKWyAgICA2LjA3NTU3MV0gCWNhcHM6IApbICAgIDYuMDgzMjY5XSAJdXZk
ICAgIHZjbGs6IDAgZGNsazogMApbICAgIDYuMDkzMDY1XSAJCXBvd2VyIGxldmVsIDAgICAg
c2NsazogMTAwMDAgbWNsazogMTUwMDAgdmRkYzogOTAwIHZkZGNpOiAwClsgICAgNi4xMTI5
MzFdIAkJcG93ZXIgbGV2ZWwgMSAgICBzY2xrOiAxMDAwMCBtY2xrOiAxNTAwMCB2ZGRjOiA5
MDAgdmRkY2k6IDAKWyAgICA2LjEzMjE0NV0gCQlwb3dlciBsZXZlbCAyICAgIHNjbGs6IDEw
MDAwIG1jbGs6IDE1MDAwIHZkZGM6IDkwMCB2ZGRjaTogMApbICAgIDYuMTUwMDUzXSAJc3Rh
dHVzOiBjIGIgClsgICAgNi4xNjA5MTZdIHN3aXRjaGluZyB0byBwb3dlciBzdGF0ZToKWyAg
ICA2LjE3MjU3OV0gCXVpIGNsYXNzOiBwZXJmb3JtYW5jZQpbICAgIDYuMTgzNDM2XSAJaW50
ZXJuYWwgY2xhc3M6IG5vbmUKWyAgICA2LjE5NTQyN10gCWNhcHM6IApbICAgIDYuMjAzMTE1
XSAJdXZkICAgIHZjbGs6IDAgZGNsazogMApbICAgIDYuMjEzMzEyXSAJCXBvd2VyIGxldmVs
IDAgICAgc2NsazogMTAwMDAgbWNsazogMTUwMDAgdmRkYzogOTAwIHZkZGNpOiAwClsgICAg
Ni4yMzM1MDddIAkJcG93ZXIgbGV2ZWwgMSAgICBzY2xrOiA0MDAwMCBtY2xrOiA2NjcwMCB2
ZGRjOiAxMDAwIHZkZGNpOiAwClsgICAgNi4yNTE5NTddIAkJcG93ZXIgbGV2ZWwgMiAgICBz
Y2xrOiA2NTAwMCBtY2xrOiA2NjcwMCB2ZGRjOiAxMDUwIHZkZGNpOiAwClsgICAgNi4yNzEy
OTldIAlzdGF0dXM6IHIgClsgICAgNi4zNDIzMDFdIFtkcm1dIGZiIG1hcHBhYmxlIGF0IDB4
RTA0NzQwMDAKWyAgICA2LjM1NDExMl0gW2RybV0gdnJhbSBhcHBlciBhdCAweEUwMDAwMDAw
ClsgICAgNi4zNjU1NDNdIFtkcm1dIHNpemUgNzI5OTA3MgpbICAgIDYuMzc1MDk4XSBbZHJt
XSBmYiBkZXB0aCBpcyAyNApbICAgIDYuMzg0NDA4XSBbZHJtXSAgICBwaXRjaCBpcyA2OTEy
ClsgICAgNi4zOTcyMzZdIHN3aXRjaGluZyBmcm9tIHBvd2VyIHN0YXRlOgpbICAgIDYuMzk3
MjQzXSAJdWkgY2xhc3M6IHBlcmZvcm1hbmNlClsgICAgNi4zOTcyNDVdIAlpbnRlcm5hbCBj
bGFzczogbm9uZQpbICAgIDYuMzk3MjQ2XSAJY2FwczogClsgICAgNi4zOTcyNDddIAl1dmQg
ICAgdmNsazogMCBkY2xrOiAwClsgICAgNi4zOTcyNTJdIAkJcG93ZXIgbGV2ZWwgMCAgICBz
Y2xrOiAxMDAwMCBtY2xrOiAxNTAwMCB2ZGRjOiA5MDAgdmRkY2k6IDAKWyAgICA2LjM5NzI1
M10gCQlwb3dlciBsZXZlbCAxICAgIHNjbGs6IDQwMDAwIG1jbGs6IDY2NzAwIHZkZGM6IDEw
MDAgdmRkY2k6IDAKWyAgICA2LjM5NzI1NF0gCQlwb3dlciBsZXZlbCAyICAgIHNjbGs6IDY1
MDAwIG1jbGs6IDY2NzAwIHZkZGM6IDEwNTAgdmRkY2k6IDAKWyAgICA2LjM5NzI1Nl0gCXN0
YXR1czogYyByIApbICAgIDYuMzk3MjU2XSBzd2l0Y2hpbmcgdG8gcG93ZXIgc3RhdGU6Clsg
ICAgNi4zOTcyNTddIAl1aSBjbGFzczogcGVyZm9ybWFuY2UKWyAgICA2LjM5NzI1OF0gCWlu
dGVybmFsIGNsYXNzOiBub25lClsgICAgNi4zOTcyNTldIAljYXBzOiAKWyAgICA2LjM5NzI2
MF0gCXV2ZCAgICB2Y2xrOiAwIGRjbGs6IDAKWyAgICA2LjM5NzI2MV0gCQlwb3dlciBsZXZl
bCAwICAgIHNjbGs6IDEwMDAwIG1jbGs6IDE1MDAwIHZkZGM6IDkwMCB2ZGRjaTogMApbICAg
IDYuMzk3MjYyXSAJCXBvd2VyIGxldmVsIDEgICAgc2NsazogNDAwMDAgbWNsazogNjY3MDAg
dmRkYzogMTAwMCB2ZGRjaTogMApbICAgIDYuMzk3MjYyXSAJCXBvd2VyIGxldmVsIDIgICAg
c2NsazogNjUwMDAgbWNsazogNjY3MDAgdmRkYzogMTA1MCB2ZGRjaTogMApbICAgIDYuMzk3
MjY0XSAJc3RhdHVzOiBjIHIgClsgICAgNi40MzI5ODhdIENvbnNvbGU6IHN3aXRjaGluZyB0
byBjb2xvdXIgZnJhbWUgYnVmZmVyIGRldmljZSAyMTB4NjUKWyAgICA2LjY0ODE0OF0gcmFk
ZW9uIDAwMDA6MDA6MDUuMDogZmIwOiByYWRlb25kcm1mYiBmcmFtZSBidWZmZXIgZGV2aWNl
ClsgICAgNi42NjM4MjddIHJhZGVvbiAwMDAwOjAwOjA1LjA6IHJlZ2lzdGVyZWQgcGFuaWMg
bm90aWZpZXIKWyAgICA2LjcwNDI0M10gW2RybV0gSW5pdGlhbGl6ZWQgcmFkZW9uIDIuNDAu
MCAyMDA4MDUyOCBmb3IgMDAwMDowMDowNS4wIG9uIG1pbm9yIDAKWyAgICA2Ljc2NTEwNF0g
YnJkOiBtb2R1bGUgbG9hZGVkClsgICAgNi43ODMwNTJdIGxvb3A6IG1vZHVsZSBsb2FkZWQK
WyAgICA2Ljc5Njc3Ml0gVW5pZm9ybSBNdWx0aS1QbGF0Zm9ybSBFLUlERSBkcml2ZXIKWyAg
ICA2LjgxNTI3MV0gcGlpeCAwMDAwOjAwOjAxLjE6IElERSBjb250cm9sbGVyICgweDgwODY6
MHg3MDEwIHJldiAweDAwKQpbICAgIDYuODE5MDA2XSBibGtmcm9udDogeHZkYTogZmx1c2gg
ZGlza2NhY2hlOiBlbmFibGVkOyBwZXJzaXN0ZW50IGdyYW50czogZW5hYmxlZDsgaW5kaXJl
Y3QgZGVzY3JpcHRvcnM6IGVuYWJsZWQ7ClsgICAgNi44NTEwMjRdIHJhbmRvbTogbm9uYmxv
Y2tpbmcgcG9vbCBpcyBpbml0aWFsaXplZApbICAgIDYuODUxMDUzXSAgeHZkYTogeHZkYTEg
eHZkYTIgPCB4dmRhNSA+ClsgICAgNi44ODI1OTddIHBpaXggMDAwMDowMDowMS4xOiBub3Qg
MTAwJSBuYXRpdmUgbW9kZTogd2lsbCBwcm9iZSBpcnFzIGxhdGVyClsgICAgNi45MDEwMzdd
ICAgICBpZGUwOiBCTS1ETUEgYXQgMHhjMjYwLTB4YzI2NwpbICAgIDYuOTEyMzA4XSAgICAg
aWRlMTogQk0tRE1BIGF0IDB4YzI2OC0weGMyNmYKWyAgICA2LjkyNDM1OV0gUHJvYmluZyBJ
REUgaW50ZXJmYWNlIGlkZTAuLi4KWyAgICA3LjQ2ODE4OV0gUHJvYmluZyBJREUgaW50ZXJm
YWNlIGlkZTEuLi4KWyAgICA4LjAxMzQ3N10gaWRlMCBhdCAweDFmMC0weDFmNywweDNmNiBv
biBpcnEgMTQKWyAgICA4LjA0Mzk0NV0gaWRlMSBhdCAweDE3MC0weDE3NywweDM3NiBvbiBp
cnEgMTUKWyAgICA4LjA1NTc0NF0gaWRlX2dlbmVyaWM6IHBsZWFzZSB1c2UgInByb2JlX21h
c2s9MHgzZiIgbW9kdWxlIHBhcmFtZXRlciBmb3IgcHJvYmluZyBhbGwgbGVnYWN5IElTQSBJ
REUgcG9ydHMKWyAgICA4LjA4MzY5MF0gaWRlLWdkIGRyaXZlciAxLjE4ClsgICAgOC4wOTUz
MDddIHR1bjogVW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciwgMS42ClsgICAgOC4x
MDg5MTNdIHR1bjogKEMpIDE5OTktMjAwNCBNYXggS3Jhc255YW5za3kgPG1heGtAcXVhbGNv
bW0uY29tPgpbICAgIDguMTI1NTYyXSBlMTAwMDogSW50ZWwoUikgUFJPLzEwMDAgTmV0d29y
ayBEcml2ZXIgLSB2ZXJzaW9uIDcuMy4yMS1rOC1OQVBJClsgICAgOC4xNDQ0MTZdIGUxMDAw
OiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbi4KWyAgICA4LjE1
OTc1OV0gZTEwMDBlOiBJbnRlbChSKSBQUk8vMTAwMCBOZXR3b3JrIERyaXZlciAtIDIuMy4y
LWsKWyAgICA4LjE3NDgzMl0gZTEwMDBlOiBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTQgSW50
ZWwgQ29ycG9yYXRpb24uClsgICAgOC4xOTAyMzhdIGlnYjogSW50ZWwoUikgR2lnYWJpdCBF
dGhlcm5ldCBOZXR3b3JrIERyaXZlciAtIHZlcnNpb24gNS4yLjEzLWsKWyAgICA4LjIwODI2
MF0gaWdiOiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbi4KWyAg
ICA4LjIyMjgzNV0gaWdidmY6IEludGVsKFIpIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBO
ZXR3b3JrIERyaXZlciAtIHZlcnNpb24gMi4wLjItawpbICAgIDguMjQyNjE3XSBpZ2J2Zjog
Q29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4KWyAgICA4LjI1
ODEwNV0geGVuX25ldGZyb250OiBJbml0aWFsaXNpbmcgWGVuIHZpcnR1YWwgZXRoZXJuZXQg
ZHJpdmVyClsgICAgOC4yNzk3MDVdIGVoY2lfaGNkOiBVU0IgMi4wICdFbmhhbmNlZCcgSG9z
dCBDb250cm9sbGVyIChFSENJKSBEcml2ZXIKWyAgICA4LjI5NjM1NV0gZWhjaS1wY2k6IEVI
Q0kgUENJIHBsYXRmb3JtIGRyaXZlcgpbICAgIDguMzEzNTU0XSBvaGNpX2hjZDogVVNCIDEu
MSAnT3BlbicgSG9zdCBDb250cm9sbGVyIChPSENJKSBEcml2ZXIKWyAgICA4LjMzMzgzNF0g
b2hjaS1wY2k6IE9IQ0kgUENJIHBsYXRmb3JtIGRyaXZlcgpbICAgIDguMzQ3MDc4XSB1aGNp
X2hjZDogVVNCIFVuaXZlcnNhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGRyaXZlcgpb
ICAgIDguMzcyNDQ4XSB1aGNpX2hjZCAwMDAwOjAwOjAxLjI6IGVuYWJsaW5nIGJ1cyBtYXN0
ZXJpbmcKWyAgICA4LjM3NDk1M10gdWhjaV9oY2QgMDAwMDowMDowMS4yOiBVSENJIEhvc3Qg
Q29udHJvbGxlcgpbICAgIDguMzkxMTQ4XSB1aGNpX2hjZCAwMDAwOjAwOjAxLjI6IG5ldyBV
U0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMQpbICAgIDguNDE1MjE0
XSB1aGNpX2hjZCAwMDAwOjAwOjAxLjI6IGlycSAyMywgaW8gYmFzZSAweDAwMDBjMjQwClsg
ICAgOC40MzU1NjJdIHVzYiB1c2IxOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9
MWQ2YiwgaWRQcm9kdWN0PTAwMDEKWyAgICA4LjQ1Njg0OV0gdXNiIHVzYjE6IE5ldyBVU0Ig
ZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAg
OC40NzY1NzJdIHVzYiB1c2IxOiBQcm9kdWN0OiBVSENJIEhvc3QgQ29udHJvbGxlcgpbICAg
IDguNDkwNDc4XSB1c2IgdXNiMTogTWFudWZhY3R1cmVyOiBMaW51eCAzLjE3LjAtcmM1LTIw
MTQwOTIwLXZhbmlsbGErIHVoY2lfaGNkClsgICAgOC41MTEzMjNdIHVzYiB1c2IxOiBTZXJp
YWxOdW1iZXI6IDAwMDA6MDA6MDEuMgpbICAgIDguNTI2NjA4XSBodWIgMS0wOjEuMDogVVNC
IGh1YiBmb3VuZApbICAgIDguNTM3MzI5XSBodWIgMS0wOjEuMDogMiBwb3J0cyBkZXRlY3Rl
ZApbICAgIDguNTUxNzg5XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJp
dmVyIHVzYmxwClsgICAgOC41NjY5MTddIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVy
ZmFjZSBkcml2ZXIgdXNiLXN0b3JhZ2UKWyAgICA4LjU4MzcwM10gdXNiY29yZTogcmVnaXN0
ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JzZXJpYWwKWyAgICA4LjYwMDI3Nl0gdXNi
Y29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBjcDIxMHgKWyAgICA4LjYx
NTY1M10gdXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgY3Ay
MTB4ClsgICAgOC42MzIwNDNdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBk
cml2ZXIgY3lwcmVzc19tOApbICAgIDguNjQ4Mjk5XSB1c2JzZXJpYWw6IFVTQiBTZXJpYWwg
c3VwcG9ydCByZWdpc3RlcmVkIGZvciBEZUxvcm1lIEVhcnRobWF0ZSBVU0IKWyAgICA4LjY2
Nzc1MF0gdXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgSElE
LT5DT00gUlMyMzIgQWRhcHRlcgpbICAgIDguNjg3OTc3XSB1c2JzZXJpYWw6IFVTQiBTZXJp
YWwgc3VwcG9ydCByZWdpc3RlcmVkIGZvciBOb2tpYSBDQS00MiBWMiBBZGFwdGVyClsgICAg
OC43MDgxMTBdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgbW9z
NzcyMApbICAgIDguNzI0MzA5XSB1c2JzZXJpYWw6IFVTQiBTZXJpYWwgc3VwcG9ydCByZWdp
c3RlcmVkIGZvciBNb3NjaGlwIDIgcG9ydCBhZGFwdGVyClsgICAgOC43NDQ1NjBdIHVzYmNv
cmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgbW9zNzg0MApbICAgIDguNzYw
MTgzXSB1c2JzZXJpYWw6IFVTQiBTZXJpYWwgc3VwcG9ydCByZWdpc3RlcmVkIGZvciBNb3Nj
aGlwIDc4NDAvNzgyMCBVU0IgU2VyaWFsIERyaXZlcgpbICAgIDguNzgzMDAwXSBpODA0Mjog
UE5QOiBQUy8yIENvbnRyb2xsZXIgW1BOUDAzMDM6UFMySyxQTlAwZjEzOlBTMk1dIGF0IDB4
NjAsMHg2NCBpcnEgMSwxMgpbICAgIDguODExNzE5XSBzZXJpbzogaTgwNDIgS0JEIHBvcnQg
YXQgMHg2MCwweDY0IGlycSAxClsgICAgOC44MjU2MzZdIHNlcmlvOiBpODA0MiBBVVggcG9y
dCBhdCAweDYwLDB4NjQgaXJxIDEyClsgICAgOC44NDAzNDBdIG1vdXNlZGV2OiBQUy8yIG1v
dXNlIGRldmljZSBjb21tb24gZm9yIGFsbCBtaWNlClsgICAgOC44NjEyNzldIGlucHV0OiBY
ZW4gVmlydHVhbCBLZXlib2FyZCBhcyAvZGV2aWNlcy92aXJ0dWFsL2lucHV0L2lucHV0Mwpb
ICAgIDguODYzMTIxXSBpbnB1dDogQVQgVHJhbnNsYXRlZCBTZXQgMiBrZXlib2FyZCBhcyAv
ZGV2aWNlcy9wbGF0Zm9ybS9pODA0Mi9zZXJpbzAvaW5wdXQvaW5wdXQyClsgICAgOC45MTY5
NDBdIGlucHV0OiBYZW4gVmlydHVhbCBQb2ludGVyIGFzIC9kZXZpY2VzL3ZpcnR1YWwvaW5w
dXQvaW5wdXQ2ClsgICAgOC45Mzk1NTddIHJ0Y19jbW9zIDAwOjAyOiBydGMgY29yZTogcmVn
aXN0ZXJlZCBydGNfY21vcyBhcyBydGMwClsgICAgOC45NTc3MDFdIHJ0Y19jbW9zIDAwOjAy
OiBhbGFybXMgdXAgdG8gb25lIGRheSwgMTE0IGJ5dGVzIG52cmFtLCBocGV0IGlycXMKWyAg
ICA4Ljk3ODQwNF0gcGlpeDRfc21idXMgMDAwMDowMDowMS4zOiBTTUJ1cyBIb3N0IENvbnRy
b2xsZXIgbm90IGVuYWJsZWQhClsgICAgOC45OTg4NzhdIGxpcmNfZGV2OiBJUiBSZW1vdGUg
Q29udHJvbCBkcml2ZXIgcmVnaXN0ZXJlZCwgbWFqb3IgMjQ4IApbICAgIDkuMDE2ODkyXSBJ
UiBORUMgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZApbICAgIDkuMDE2OTY5XSB1c2Ig
MS0xOiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVzaW5nIHVoY2lfaGNk
ClsgICAgOS4wNDkwOTVdIElSIFJDNSh4L3N6KSBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxp
emVkClsgICAgOS4wNjM0MTddIElSIFJDNiBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVk
ClsgICAgOS4wNzY3MDddIElSIEpWQyBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVkClsg
ICAgOS4wOTAwOTVdIElSIFNvbnkgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZApbICAg
IDkuMTA2NDM2XSBJUiBTQU5ZTyBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVkClsgICAg
OS4xMTk1NzZdIElSIFNoYXJwIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQKWyAgICA5
LjEzMzMyNV0gSVIgTUNFIEtleWJvYXJkL21vdXNlIHByb3RvY29sIGhhbmRsZXIgaW5pdGlh
bGl6ZWQKWyAgICA5LjE1MDI2MV0gSVIgTElSQyBicmlkZ2UgaGFuZGxlciBpbml0aWFsaXpl
ZApbICAgIDkuMTYzNjE0XSBJUiBYTVAgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZApb
ICAgIDkuMTc3MDk5XSBjeDI1ODIxOiBkcml2ZXIgdmVyc2lvbiAwLjAuMTA2IGxvYWRlZApb
ICAgIDkuMTc4OTg2XSB1c2IgMS0xOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9
MDYyNywgaWRQcm9kdWN0PTAwMDEKWyAgICA5LjE3ODk4OF0gdXNiIDEtMTogTmV3IFVTQiBk
ZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MywgU2VyaWFsTnVtYmVyPTUKWyAgICA5
LjE3ODk4OV0gdXNiIDEtMTogUHJvZHVjdDogUUVNVSBVU0IgVGFibGV0ClsgICAgOS4xNzg5
OTBdIHVzYiAxLTE6IE1hbnVmYWN0dXJlcjogUUVNVQpbICAgIDkuMTc4OTkxXSB1c2IgMS0x
OiBTZXJpYWxOdW1iZXI6IDQyClsgICAgOS4yNjczNTVdIHVzYmNvcmU6IHJlZ2lzdGVyZWQg
bmV3IGludGVyZmFjZSBkcml2ZXIgcHZydXNiMgpbICAgIDkuMjg2MjkyXSBwdnJ1c2IyOiBW
NEwgaW4tdHJlZSB2ZXJzaW9uOkhhdXBwYXVnZSBXaW5UVi1QVlItVVNCMiBNUEVHMiBFbmNv
ZGVyL1R1bmVyClsgICAgOS4zMDg1MzFdIHB2cnVzYjI6IERlYnVnIG1hc2sgaXMgMzEgKDB4
MWYpClsgICAgOS4zMjQ3OThdIHNwNTEwMF90Y286IFNQNTEwMC9TQjgwMCBUQ08gV2F0Y2hE
b2cgVGltZXIgRHJpdmVyIHYwLjA1ClsgICAgOS4zNDQ2MjBdIHhlbl93ZHQ6IFhlbiBXYXRj
aERvZyBUaW1lciBEcml2ZXIgdjAuMDEKWyAgICA5LjM1OTQxNF0geGVuX3dkdDogaW5pdGlh
bGl6ZWQgKHRpbWVvdXQ9NjBzLCBub3dheW91dD0wKQpbICAgIDkuMzc3NTY0XSBkZXZpY2Ut
bWFwcGVyOiBpb2N0bDogNC4yNy4wLWlvY3RsICgyMDEzLTEwLTMwKSBpbml0aWFsaXNlZDog
ZG0tZGV2ZWxAcmVkaGF0LmNvbQpbICAgIDkuNDAzNDM5XSBCbHVldG9vdGg6IFZpcnR1YWwg
SENJIGRyaXZlciB2ZXIgMS41ClsgICAgOS40MTc0MThdIEJsdWV0b290aDogSENJIFVBUlQg
ZHJpdmVyIHZlciAyLjIKWyAgICA5LjQzMjA0MF0gQmx1ZXRvb3RoOiBIQ0kgSDQgcHJvdG9j
b2wgaW5pdGlhbGl6ZWQKWyAgICA5LjQ0NjA4M10gQmx1ZXRvb3RoOiBIQ0kgQkNTUCBwcm90
b2NvbCBpbml0aWFsaXplZApbICAgIDkuNDYxNzM4XSBCbHVldG9vdGg6IEhDSUxMIHByb3Rv
Y29sIGluaXRpYWxpemVkClsgICAgOS40NzU5NjhdIEJsdWV0b290aDogSENJQVRIM0sgcHJv
dG9jb2wgaW5pdGlhbGl6ZWQKWyAgICA5LjQ5MTY4Ml0gQmx1ZXRvb3RoOiBIQ0kgVGhyZWUt
d2lyZSBVQVJUIChINSkgcHJvdG9jb2wgaW5pdGlhbGl6ZWQKWyAgICA5LjUxMTExMF0gdXNi
Y29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBiY20yMDN4ClsgICAgOS41
MjczODldIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgYnBhMTB4
ClsgICAgOS41NDI5MjRdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2
ZXIgYmZ1c2IKWyAgICA5LjU1ODQ3MV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJm
YWNlIGRyaXZlciBidHVzYgpbICAgIDkuNTc0MzM2XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5l
dyBpbnRlcmZhY2UgZHJpdmVyIGF0aDNrClsgICAgOS41OTExNzZdIGhpZHJhdzogcmF3IEhJ
RCBldmVudHMgZHJpdmVyIChDKSBKaXJpIEtvc2luYQpbICAgIDkuNjE1MjY5XSBpbnB1dDog
UUVNVSBRRU1VIFVTQiBUYWJsZXQgYXMgL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAx
LjIvdXNiMS8xLTEvMS0xOjEuMC8wMDAzOjA2Mjc6MDAwMS4wMDAxL2lucHV0L2lucHV0Nwpb
ICAgIDkuNjQ4MzYzXSBoaWQtZ2VuZXJpYyAwMDAzOjA2Mjc6MDAwMS4wMDAxOiBpbnB1dCxo
aWRyYXcwOiBVU0IgSElEIHYwLjAxIFBvaW50ZXIgW1FFTVUgUUVNVSBVU0IgVGFibGV0XSBv
biB1c2ItMDAwMDowMDowMS4yLTEvaW5wdXQwClsgICAgOS42ODE4MjldIHVzYmNvcmU6IHJl
Z2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiaGlkClsgICAgOS42OTkxMDldIHVz
YmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcgpbICAgIDkuNzExNDIxXSBOZXRmaWx0ZXIgbWVz
c2FnZXMgdmlhIE5FVExJTksgdjAuMzAuClsgICAgOS43MjUwMzRdIG5mbmxfYWNjdDogcmVn
aXN0ZXJpbmcgd2l0aCBuZm5ldGxpbmsuClsgICAgOS43MzkyNjRdIG5mX2Nvbm50cmFjayB2
ZXJzaW9uIDAuNS4wICg3NzQ3IGJ1Y2tldHMsIDMwOTg4IG1heCkKWyAgICA5Ljc1OTQ3NV0g
Y3RuZXRsaW5rIHYwLjkzOiByZWdpc3RlcmluZyB3aXRoIG5mbmV0bGluay4KWyAgICA5Ljc3
OTA5MF0geHRfdGltZToga2VybmVsIHRpbWV6b25lIGlzIC0wMDAwClsgICAgOS43OTE1ODJd
IGlwX3NldDogcHJvdG9jb2wgNgpbICAgIDkuODAxNzM2XSBJUFZTOiBSZWdpc3RlcmVkIHBy
b3RvY29scyAoKQpbICAgIDkuODE1MTE5XSBJUFZTOiBDb25uZWN0aW9uIGhhc2ggdGFibGUg
Y29uZmlndXJlZCAoc2l6ZT00MDk2LCBtZW1vcnk9NjRLYnl0ZXMpClsgICAgOS44MzYzOThd
IElQVlM6IENyZWF0aW5nIG5ldG5zIHNpemU9MTkwNCBpZD0wClsgICAgOS44MzcwOTNdIGlu
cHV0OiBJbUV4UFMvMiBHZW5lcmljIEV4cGxvcmVyIE1vdXNlIGFzIC9kZXZpY2VzL3BsYXRm
b3JtL2k4MDQyL3NlcmlvMS9pbnB1dC9pbnB1dDUKWyAgICA5Ljg4MjE3M10gSVBWUzogaXB2
cyBsb2FkZWQuClsgICAgOS44OTIwNDhdIGlwX3RhYmxlczogKEMpIDIwMDAtMjAwNiBOZXRm
aWx0ZXIgQ29yZSBUZWFtClsgICAgOS45MDc1NjBdIFRDUDogY3ViaWMgcmVnaXN0ZXJlZApb
ICAgIDkuOTE3MzkyXSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE3ClsgICAg
OS45MzEyMjhdIEJyaWRnZSBmaXJld2FsbGluZyByZWdpc3RlcmVkClsgICAgOS45NDM0MTBd
IEVidGFibGVzIHYyLjAgcmVnaXN0ZXJlZApbICAgIDkuOTU0MDk2XSBCbHVldG9vdGg6IFJG
Q09NTSBUVFkgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgICA5Ljk2Nzc1MV0gQmx1ZXRvb3RoOiBS
RkNPTU0gc29ja2V0IGxheWVyIGluaXRpYWxpemVkClsgICAgOS45ODIxMzBdIEJsdWV0b290
aDogUkZDT01NIHZlciAxLjExClsgICAgOS45OTI4MzhdIEJsdWV0b290aDogQk5FUCAoRXRo
ZXJuZXQgRW11bGF0aW9uKSB2ZXIgMS4zClsgICAxMC4wMDc0OTddIEJsdWV0b290aDogQk5F
UCBmaWx0ZXJzOiBwcm90b2NvbCBtdWx0aWNhc3QKWyAgIDEwLjAyMjc1Ml0gQmx1ZXRvb3Ro
OiBCTkVQIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgMTAuMDM2NzczXSBCbHVldG9v
dGg6IEhJRFAgKEh1bWFuIEludGVyZmFjZSBFbXVsYXRpb24pIHZlciAxLjIKWyAgIDEwLjA1
MjY0M10gQmx1ZXRvb3RoOiBISURQIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgMTAu
MDY2OTM2XSBLZXkgdHlwZSBjZXBoIHJlZ2lzdGVyZWQKWyAgIDEwLjA3ODgzMF0gbGliY2Vw
aDogbG9hZGVkIChtb24vb3NkIHByb3RvIDE1LzI0KQpbICAgMTAuMDk1MTcxXSByZWdpc3Rl
cmVkIHRhc2tzdGF0cyB2ZXJzaW9uIDEKWyAgIDEwLjExODM1OV0gQnRyZnMgbG9hZGVkClsg
ICAxMC4xMzA3NTBdIHhlbmJ1c19wcm9iZV9mcm9udGVuZDogRGV2aWNlIHdpdGggbm8gZHJp
dmVyOiBkZXZpY2UvcGNpLzAKWyAgIDEwLjE0OTY5OF0gY29uc29sZSBbbmV0Y29uMF0gZW5h
YmxlZApbICAgMTAuMTYxMDE3XSBuZXRjb25zb2xlOiBuZXR3b3JrIGxvZ2dpbmcgc3RhcnRl
ZApbICAgMTAuMTc1NDM1XSBydGNfY21vcyAwMDowMjogc2V0dGluZyBzeXN0ZW0gY2xvY2sg
dG8gMjAxNC0wOS0yMyAyMjowOToyOCBVVEMgKDE0MTE1MTAxNjgpClsgICAxMC4yMDE5Njdd
IEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6IDExMDhLIChmZmZmZmZmZjgxZWY3MDAw
IC0gZmZmZmZmZmY4MjAwYzAwMCkKWyAgIDEwLjIyNDA2NF0gV3JpdGUgcHJvdGVjdGluZyB0
aGUga2VybmVsIHJlYWQtb25seSBkYXRhOiAxNDMzNmsKWyAgIDEwLjI0MDcyNl0gRnJlZWlu
ZyB1bnVzZWQga2VybmVsIG1lbW9yeTogNTJLIChmZmZmODgwMDAxOWYzMDAwIC0gZmZmZjg4
MDAwMWEwMDAwMCkKWyAgIDEwLjI2MTk2OV0gRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9y
eTogNjhLIChmZmZmODgwMDAxZGVmMDAwIC0gZmZmZjg4MDAwMWUwMDAwMCkKWyAgIDEwLjMy
OTkzMF0gc3lzdGVtZC11ZGV2ZFsxNDMzXTogc3RhcnRpbmcgdmVyc2lvbiAyMDgKWyAgIDEw
LjcyMzg2NV0gRVhUNC1mcyAoeHZkYTEpOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRl
cmVkIGRhdGEgbW9kZS4gT3B0czogKG51bGwpClsgICAxMS41NzUzMzBdIHN5c3RlbWRbMV06
IEZhaWxlZCB0byBpbnNlcnQgbW9kdWxlICdpcHY2JwpbICAgMTQuMDQ2NjI1XSBzeXN0ZW1k
LXVkZXZkWzE1MTRdOiBzdGFydGluZyB2ZXJzaW9uIDIwOApbICAgMTQuOTE1OTY2XSBFWFQ0
LWZzICh4dmRhMSk6IHJlLW1vdW50ZWQuIE9wdHM6IGVycm9ycz1yZW1vdW50LXJvClsgICAx
Ny4wMjYwOTRdIHN5c3RlbWQtam91cm5hbGRbMTQ5OF06IFJlY2VpdmVkIHJlcXVlc3QgdG8g
Zmx1c2ggcnVudGltZSBqb3VybmFsIGZyb20gUElEIDEKWyAgIDE4LjU3ODYwMl0gQWRkaW5n
IDkwMTExNmsgc3dhcCBvbiAvZGV2L3h2ZGE1LiAgUHJpb3JpdHk6LTEgZXh0ZW50czoxIGFj
cm9zczo5MDExMTZrIFNTClsgICAyMi41MTkwMjFdIHZnYWFyYjogZGV2aWNlIGNoYW5nZWQg
ZGVjb2RlczogUENJOjAwMDA6MDA6MDUuMCxvbGRkZWNvZGVzPWlvK21lbSxkZWNvZGVzPW5v
bmU6b3ducz1pbyttZW0K
------------06E0A40933546D243
Content-Type: text/plain;
 name="dmesg-secondboot.txt"
Content-transfer-encoding: base64
Content-Disposition: attachment;
 filename="dmesg-secondboot.txt"

WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0ClsgICAg
MC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdQpbICAgIDAuMDAwMDAw
XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHVhY2N0ClsgICAgMC4wMDAwMDBdIExp
bnV4IHZlcnNpb24gMy4xNy4wLXJjNS0yMDE0MDkyMC12YW5pbGxhKyAocm9vdEB4Ym1jMTNz
aWQpIChnY2MgdmVyc2lvbiA0LjkuMSAoRGViaWFuIDQuOS4xLTQpICkgIzEgU01QIFNhdCBT
ZXAgMjAgMjI6MDM6MTEgQ0VTVCAyMDE0ClsgICAgMC4wMDAwMDBdIENvbW1hbmQgbGluZTog
Qk9PVF9JTUFHRT0vYm9vdC92bWxpbnV6LTMuMTcuMC1yYzUtMjAxNDA5MjAtdmFuaWxsYSsg
cm9vdD1VVUlEPTRiNDMyYjMzLTg3ZWMtNDUyMi04YjEwLTVkYmEzZjQ5MDk5ZSBybyBkZWJ1
ZyBsb2dsZXZlbD03IGNvbnNvbGU9dHR5MSBjb25zb2xlPXR0eVMwIHNsdWJfZGVidWcgcmFk
ZW9uLmRwbT0xIHJhZGVvbi5oYXJkX3Jlc2V0PTEgcmFkZW9uLmFsd2F5c19wb3N0PTEgc3lz
dGVtZC5sb2dfbGV2ZWw9d2FybmluZwpbICAgIDAuMDAwMDAwXSB0c2VnOiAwMDAwMDAwMDAw
ClsgICAgMC4wMDAwMDBdIGU4MjA6IEJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoK
WyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0weDAw
MDAwMDAwMDAwOWZiZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0g
MHgwMDAwMDAwMDAwMDlmYzAwLTB4MDAwMDAwMDAwMDA5ZmZmZl0gcmVzZXJ2ZWQKWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDBmMDAwMC0weDAwMDAwMDAw
MDAwZmZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAw
MDAwMDAwMDAxMDAwMDAtMHgwMDAwMDAwMDNmN2ZlZmZmXSB1c2FibGUKWyAgICAwLjAwMDAw
MF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAzZjdmZjAwMC0weDAwMDAwMDAwM2Y3ZmZm
ZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAw
ZmMwMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBO
WCAoRXhlY3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uOiBhY3RpdmUKWyAgICAwLjAwMDAwMF0g
U01CSU9TIDIuNCBwcmVzZW50LgpbICAgIDAuMDAwMDAwXSBETUk6IFhlbiBIVk0gZG9tVSwg
QklPUyA0LjUtdW5zdGFibGUgMDkvMjMvMjAxNApbICAgIDAuMDAwMDAwXSBIeXBlcnZpc29y
IGRldGVjdGVkOiBYZW4gSFZNClsgICAgMC4wMDAwMDBdIFhlbiB2ZXJzaW9uIDQuNS4KWyAg
ICAwLjAwMDAwMF0gWGVuIFBsYXRmb3JtIFBDSTogSS9PIHByb3RvY29sIHZlcnNpb24gMQpb
ICAgIDAuMDAwMDAwXSBOZXRmcm9udCBhbmQgdGhlIFhlbiBwbGF0Zm9ybSBQQ0kgZHJpdmVy
IGhhdmUgYmVlbiBjb21waWxlZCBmb3IgdGhpcyBrZXJuZWw6IHVucGx1ZyBlbXVsYXRlZCBO
SUNzLgpbICAgIDAuMDAwMDAwXSBCbGtmcm9udCBhbmQgdGhlIFhlbiBwbGF0Zm9ybSBQQ0kg
ZHJpdmVyIGhhdmUgYmVlbiBjb21waWxlZCBmb3IgdGhpcyBrZXJuZWw6IHVucGx1ZyBlbXVs
YXRlZCBkaXNrcy4KWyAgICAwLjAwMDAwMF0gWW91IG1pZ2h0IGhhdmUgdG8gY2hhbmdlIHRo
ZSByb290IGRldmljZQpbICAgIDAuMDAwMDAwXSBmcm9tIC9kZXYvaGRbYS1kXSB0byAvZGV2
L3h2ZFthLWRdClsgICAgMC4wMDAwMDBdIGluIHlvdXIgcm9vdD0ga2VybmVsIGNvbW1hbmQg
bGluZSBvcHRpb24KWyAgICAwLjAwMDAwMF0gSFZNT1BfcGFnZXRhYmxlX2R5aW5nIG5vdCBz
dXBwb3J0ZWQKWyAgICAwLjAwMDAwMF0gZTgyMDogdXBkYXRlIFttZW0gMHgwMDAwMDAwMC0w
eDAwMDAwZmZmXSB1c2FibGUgPT0+IHJlc2VydmVkClsgICAgMC4wMDAwMDBdIGU4MjA6IHJl
bW92ZSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBmZmZmZl0gdXNhYmxlClsgICAgMC4wMDAwMDBd
IEFHUDogTm8gQUdQIGJyaWRnZSBmb3VuZApbICAgIDAuMDAwMDAwXSBlODIwOiBsYXN0X3Bm
biA9IDB4M2Y3ZmYgbWF4X2FyY2hfcGZuID0gMHg0MDAwMDAwMDAKWyAgICAwLjAwMDAwMF0g
TVRSUiBkZWZhdWx0IHR5cGU6IHdyaXRlLWJhY2sKWyAgICAwLjAwMDAwMF0gTVRSUiBmaXhl
ZCByYW5nZXMgZW5hYmxlZDoKWyAgICAwLjAwMDAwMF0gICAwMDAwMC05RkZGRiB3cml0ZS1i
YWNrClsgICAgMC4wMDAwMDBdICAgQTAwMDAtQkZGRkYgd3JpdGUtY29tYmluaW5nClsgICAg
MC4wMDAwMDBdICAgQzAwMDAtRkZGRkYgd3JpdGUtYmFjawpbICAgIDAuMDAwMDAwXSBNVFJS
IHZhcmlhYmxlIHJhbmdlcyBlbmFibGVkOgpbICAgIDAuMDAwMDAwXSAgIDAgYmFzZSAwMDAw
RTAwMDAwMDAgbWFzayBGRkZGRTAwMDAwMDAgdW5jYWNoYWJsZQpbICAgIDAuMDAwMDAwXSAg
IDEgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gICAyIGRpc2FibGVkClsgICAgMC4wMDAwMDBd
ICAgMyBkaXNhYmxlZApbICAgIDAuMDAwMDAwXSAgIDQgZGlzYWJsZWQKWyAgICAwLjAwMDAw
MF0gICA1IGRpc2FibGVkClsgICAgMC4wMDAwMDBdICAgNiBkaXNhYmxlZApbICAgIDAuMDAw
MDAwXSAgIDcgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gVE9NMjogMDAwMDAwMDU2MDAwMDAw
MCBha2EgMjIwMTZNClsgICAgMC4wMDAwMDBdIHg4NiBQQVQgZW5hYmxlZDogY3B1IDAsIG9s
ZCAweDcwNDA2MDAwNzA0MDYsIG5ldyAweDcwMTA2MDAwNzAxMDYKWyAgICAwLjAwMDAwMF0g
Zm91bmQgU01QIE1QLXRhYmxlIGF0IFttZW0gMHgwMDBmMGU0MC0weDAwMGYwZTRmXSBtYXBw
ZWQgYXQgW2ZmZmY4ODAwMDAwZjBlNDBdClsgICAgMC4wMDAwMDBdIFNjYW5uaW5nIDEgYXJl
YXMgZm9yIGxvdyBtZW1vcnkgY29ycnVwdGlvbgpbICAgIDAuMDAwMDAwXSBCYXNlIG1lbW9y
eSB0cmFtcG9saW5lIGF0IFtmZmZmODgwMDAwMDk5MDAwXSA5OTAwMCBzaXplIDI0NTc2Clsg
ICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHgwMDAwMDAwMC0weDAw
MGZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMDAwMDAwLTB4MDAwZmZmZmZdIHBh
Z2UgNGsKWyAgICAwLjAwMDAwMF0gQlJLIFsweDAyZTBiMDAwLCAweDAyZTBiZmZmXSBQR1RB
QkxFClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMmUwYzAwMCwgMHgwMmUwY2ZmZl0gUEdUQUJM
RQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDJlMGQwMDAsIDB4MDJlMGRmZmZdIFBHVEFCTEUK
WyAgICAwLjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweDNmNDAwMDAwLTB4
M2Y1ZmZmZmZdClsgICAgMC4wMDAwMDBdICBbbWVtIDB4M2Y0MDAwMDAtMHgzZjVmZmZmZl0g
cGFnZSAyTQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4M2Mw
MDAwMDAtMHgzZjNmZmZmZl0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgzYzAwMDAwMC0weDNm
M2ZmZmZmXSBwYWdlIDJNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFtt
ZW0gMHgwMDEwMDAwMC0weDNiZmZmZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMTAw
MDAwLTB4MDAxZmZmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0gIFttZW0gMHgwMDIwMDAw
MC0weDNiZmZmZmZmXSBwYWdlIDJNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBp
bmc6IFttZW0gMHgzZjYwMDAwMC0weDNmN2ZlZmZmXQpbICAgIDAuMDAwMDAwXSAgW21lbSAw
eDNmNjAwMDAwLTB4M2Y3ZmVmZmZdIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0gQlJLIFsweDAy
ZTBlMDAwLCAweDAyZTBlZmZmXSBQR1RBQkxFClsgICAgMC4wMDAwMDBdIFJBTURJU0s6IFtt
ZW0gMHgzNmY3NjAwMC0weDM3N2IyZmZmXQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBFYXJseSB0
YWJsZSBjaGVja3N1bSB2ZXJpZmljYXRpb24gZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gQUNQ
STogUlNEUCAweDAwMDAwMDAwMDAwRjBEOTAgMDAwMDI0ICh2MDIgWGVuICAgKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBYU0RUIDB4MDAwMDAwMDBGQzAwQTEyMCAwMDAwNTQgKHYwMSBYZW4g
ICAgSFZNICAgICAgMDAwMDAwMDAgSFZNTCAwMDAwMDAwMCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogRkFDUCAweDAwMDAwMDAwRkMwMDlBNTAgMDAwMEY0ICh2MDQgWGVuICAgIEhWTSAgICAg
IDAwMDAwMDAwIEhWTUwgMDAwMDAwMDApClsgICAgMC4wMDAwMDBdIEFDUEk6IERTRFQgMHgw
MDAwMDAwMEZDMDAxMkUwIDAwODZGMCAodjAyIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBJ
TlRMIDIwMTAwNTI4KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBGQUNTIDB4MDAwMDAwMDBGQzAw
MTJBMCAwMDAwNDAKWyAgICAwLjAwMDAwMF0gQUNQSTogQVBJQyAweDAwMDAwMDAwRkMwMDlC
NTAgMDAwNDYwICh2MDIgWGVuICAgIEhWTSAgICAgIDAwMDAwMDAwIEhWTUwgMDAwMDAwMDAp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQRVQgMHgwMDAwMDAwMEZDMDBBMDMwIDAwMDAzOCAo
djAxIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBIVk1MIDAwMDAwMDAwKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBXQUVUIDB4MDAwMDAwMDBGQzAwQTA3MCAwMDAwMjggKHYwMSBYZW4gICAg
SFZNICAgICAgMDAwMDAwMDAgSFZNTCAwMDAwMDAwMCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
U1NEVCAweDAwMDAwMDAwRkMwMEEwQTAgMDAwMDMxICh2MDIgWGVuICAgIEhWTSAgICAgIDAw
MDAwMDAwIElOVEwgMjAxMDA1MjgpClsgICAgMC4wMDAwMDBdIEFDUEk6IFNTRFQgMHgwMDAw
MDAwMEZDMDBBMEUwIDAwMDAzMSAodjAyIFhlbiAgICBIVk0gICAgICAwMDAwMDAwMCBJTlRM
IDIwMTAwNTI4KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhm
ZWUwMDAwMApbICAgIDAuMDAwMDAwXSBObyBOVU1BIGNvbmZpZ3VyYXRpb24gZm91bmQKWyAg
ICAwLjAwMDAwMF0gRmFraW5nIGEgbm9kZSBhdCBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0w
eDAwMDAwMDAwM2Y3ZmVmZmZdClsgICAgMC4wMDAwMDBdIEluaXRtZW0gc2V0dXAgbm9kZSAw
IFttZW0gMHgwMDAwMDAwMC0weDNmN2ZlZmZmXQpbICAgIDAuMDAwMDAwXSAgIE5PREVfREFU
QSBbbWVtIDB4M2Y3ZjQwMDAtMHgzZjdmZWZmZl0KWyAgICAwLjAwMDAwMF0gIFtmZmZmZWEw
MDAwMDAwMDAwLWZmZmZlYTAwMDBmZmZmZmZdIFBNRCAtPiBbZmZmZjg4MDAzZGUwMDAwMC1m
ZmZmODgwMDNlZGZmZmZmXSBvbiBub2RlIDAKWyAgICAwLjAwMDAwMF0gWm9uZSByYW5nZXM6
ClsgICAgMC4wMDAwMDBdICAgRE1BICAgICAgW21lbSAweDAwMDAxMDAwLTB4MDBmZmZmZmZd
ClsgICAgMC4wMDAwMDBdICAgRE1BMzIgICAgW21lbSAweDAxMDAwMDAwLTB4ZmZmZmZmZmZd
ClsgICAgMC4wMDAwMDBdICAgTm9ybWFsICAgZW1wdHkKWyAgICAwLjAwMDAwMF0gTW92YWJs
ZSB6b25lIHN0YXJ0IGZvciBlYWNoIG5vZGUKWyAgICAwLjAwMDAwMF0gRWFybHkgbWVtb3J5
IG5vZGUgcmFuZ2VzClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHgwMDAwMTAw
MC0weDAwMDllZmZmXQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAxMDAw
MDAtMHgzZjdmZWZmZl0KWyAgICAwLjAwMDAwMF0gT24gbm9kZSAwIHRvdGFscGFnZXM6IDI1
OTk5NwpbICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiA2NCBwYWdlcyB1c2VkIGZvciBtZW1t
YXAKWyAgICAwLjAwMDAwMF0gICBETUEgem9uZTogMjEgcGFnZXMgcmVzZXJ2ZWQKWyAgICAw
LjAwMDAwMF0gICBETUEgem9uZTogMzk5OCBwYWdlcywgTElGTyBiYXRjaDowClsgICAgMC4w
MDAwMDBdICAgRE1BMzIgem9uZTogNDAwMCBwYWdlcyB1c2VkIGZvciBtZW1tYXAKWyAgICAw
LjAwMDAwMF0gICBETUEzMiB6b25lOiAyNTU5OTkgcGFnZXMsIExJRk8gYmF0Y2g6MzEKWyAg
ICAwLjAwMDAwMF0gQUNQSTogUE0tVGltZXIgSU8gUG9ydDogMHhiMDA4ClsgICAgMC4wMDAw
MDBdIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDBdIGxhcGljX2lkWzB4MDBdIGVuYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDFdIGxhcGljX2lkWzB4MDJd
IGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDJdIGxh
cGljX2lkWzB4MDRdIGVuYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4MDNdIGxhcGljX2lkWzB4MDZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDA0XSBsYXBpY19pZFsweDA4XSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwNV0gbGFwaWNfaWRbMHgwYV0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDZdIGxhcGlj
X2lkWzB4MGNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDA3XSBsYXBpY19pZFsweDBlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHgwOF0gbGFwaWNfaWRbMHgxMF0gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDldIGxhcGljX2lkWzB4MTJdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBhXSBsYXBpY19p
ZFsweDE0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHgwYl0gbGFwaWNfaWRbMHgxNl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4MGNdIGxhcGljX2lkWzB4MThdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDBkXSBsYXBpY19pZFsweDFhXSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwZV0gbGFwaWNfaWRb
MHgxY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
MGZdIGxhcGljX2lkWzB4MWVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDEwXSBsYXBpY19pZFsweDIwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxMV0gbGFwaWNfaWRbMHgyMl0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MTJdIGxhcGljX2lkWzB4
MjRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDEz
XSBsYXBpY19pZFsweDI2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMg
KGFjcGlfaWRbMHgxNF0gbGFwaWNfaWRbMHgyOF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4MTVdIGxhcGljX2lkWzB4MmFdIGRpc2FibGVkKQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDE2XSBsYXBpY19pZFsweDJj
XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxN10g
bGFwaWNfaWRbMHgyZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4MThdIGxhcGljX2lkWzB4MzBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBMQVBJQyAoYWNwaV9pZFsweDE5XSBsYXBpY19pZFsweDMyXSBkaXNhYmxlZCkKWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgxYV0gbGFwaWNfaWRbMHgzNF0g
ZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MWJdIGxh
cGljX2lkWzB4MzZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDFjXSBsYXBpY19pZFsweDM4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogTEFQSUMgKGFjcGlfaWRbMHgxZF0gbGFwaWNfaWRbMHgzYV0gZGlzYWJsZWQpClsgICAg
MC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MWVdIGxhcGljX2lkWzB4M2NdIGRp
c2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDFmXSBsYXBp
Y19pZFsweDNlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlf
aWRbMHgyMF0gbGFwaWNfaWRbMHg0MF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDIChhY3BpX2lkWzB4MjFdIGxhcGljX2lkWzB4NDJdIGRpc2FibGVkKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDIyXSBsYXBpY19pZFsweDQ0XSBkaXNh
YmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyM10gbGFwaWNf
aWRbMHg0Nl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lk
WzB4MjRdIGxhcGljX2lkWzB4NDhdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDI1XSBsYXBpY19pZFsweDRhXSBkaXNhYmxlZCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyNl0gbGFwaWNfaWRbMHg0Y10gZGlzYWJs
ZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MjddIGxhcGljX2lk
WzB4NGVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsw
eDI4XSBsYXBpY19pZFsweDUwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQ
SUMgKGFjcGlfaWRbMHgyOV0gbGFwaWNfaWRbMHg1Ml0gZGlzYWJsZWQpClsgICAgMC4wMDAw
MDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MmFdIGxhcGljX2lkWzB4NTRdIGRpc2FibGVk
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDJiXSBsYXBpY19pZFsw
eDU2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgy
Y10gbGFwaWNfaWRbMHg1OF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElD
IChhY3BpX2lkWzB4MmRdIGxhcGljX2lkWzB4NWFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDJlXSBsYXBpY19pZFsweDVjXSBkaXNhYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgyZl0gbGFwaWNfaWRbMHg1
ZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MzBd
IGxhcGljX2lkWzB4NjBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAo
YWNwaV9pZFsweDMxXSBsYXBpY19pZFsweDYyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0g
QUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzMl0gbGFwaWNfaWRbMHg2NF0gZGlzYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MzNdIGxhcGljX2lkWzB4NjZd
IGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDM0XSBs
YXBpY19pZFsweDY4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHgzNV0gbGFwaWNfaWRbMHg2YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4MzZdIGxhcGljX2lkWzB4NmNdIGRpc2FibGVkKQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDM3XSBsYXBpY19pZFsweDZlXSBk
aXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzOF0gbGFw
aWNfaWRbMHg3MF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4MzldIGxhcGljX2lkWzB4NzJdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDNhXSBsYXBpY19pZFsweDc0XSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgzYl0gbGFwaWNfaWRbMHg3Nl0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4M2NdIGxhcGlj
X2lkWzB4NzhdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDNkXSBsYXBpY19pZFsweDdhXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHgzZV0gbGFwaWNfaWRbMHg3Y10gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4M2ZdIGxhcGljX2lkWzB4N2VdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQwXSBsYXBpY19p
ZFsweDgwXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHg0MV0gbGFwaWNfaWRbMHg4Ml0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4NDJdIGxhcGljX2lkWzB4ODRdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQzXSBsYXBpY19pZFsweDg2XSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0NF0gbGFwaWNfaWRb
MHg4OF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
NDVdIGxhcGljX2lkWzB4OGFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDQ2XSBsYXBpY19pZFsweDhjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0N10gbGFwaWNfaWRbMHg4ZV0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NDhdIGxhcGljX2lkWzB4
OTBdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDQ5
XSBsYXBpY19pZFsweDkyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMg
KGFjcGlfaWRbMHg0YV0gbGFwaWNfaWRbMHg5NF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4NGJdIGxhcGljX2lkWzB4OTZdIGRpc2FibGVkKQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDRjXSBsYXBpY19pZFsweDk4
XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg0ZF0g
bGFwaWNfaWRbMHg5YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4NGVdIGxhcGljX2lkWzB4OWNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBMQVBJQyAoYWNwaV9pZFsweDRmXSBsYXBpY19pZFsweDllXSBkaXNhYmxlZCkKWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1MF0gbGFwaWNfaWRbMHhhMF0g
ZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NTFdIGxh
cGljX2lkWzB4YTJdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDUyXSBsYXBpY19pZFsweGE0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogTEFQSUMgKGFjcGlfaWRbMHg1M10gbGFwaWNfaWRbMHhhNl0gZGlzYWJsZWQpClsgICAg
MC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NTRdIGxhcGljX2lkWzB4YThdIGRp
c2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDU1XSBsYXBp
Y19pZFsweGFhXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlf
aWRbMHg1Nl0gbGFwaWNfaWRbMHhhY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6
IExBUElDIChhY3BpX2lkWzB4NTddIGxhcGljX2lkWzB4YWVdIGRpc2FibGVkKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDU4XSBsYXBpY19pZFsweGIwXSBkaXNh
YmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1OV0gbGFwaWNf
aWRbMHhiMl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lk
WzB4NWFdIGxhcGljX2lkWzB4YjRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDViXSBsYXBpY19pZFsweGI2XSBkaXNhYmxlZCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg1Y10gbGFwaWNfaWRbMHhiOF0gZGlzYWJs
ZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NWRdIGxhcGljX2lk
WzB4YmFdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsw
eDVlXSBsYXBpY19pZFsweGJjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQ
SUMgKGFjcGlfaWRbMHg1Zl0gbGFwaWNfaWRbMHhiZV0gZGlzYWJsZWQpClsgICAgMC4wMDAw
MDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjBdIGxhcGljX2lkWzB4YzBdIGRpc2FibGVk
KQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDYxXSBsYXBpY19pZFsw
eGMyXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2
Ml0gbGFwaWNfaWRbMHhjNF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElD
IChhY3BpX2lkWzB4NjNdIGxhcGljX2lkWzB4YzZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDY0XSBsYXBpY19pZFsweGM4XSBkaXNhYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2NV0gbGFwaWNfaWRbMHhj
YV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjZd
IGxhcGljX2lkWzB4Y2NdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAo
YWNwaV9pZFsweDY3XSBsYXBpY19pZFsweGNlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0g
QUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2OF0gbGFwaWNfaWRbMHhkMF0gZGlzYWJsZWQpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NjldIGxhcGljX2lkWzB4ZDJd
IGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDZhXSBs
YXBpY19pZFsweGQ0XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHg2Yl0gbGFwaWNfaWRbMHhkNl0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4NmNdIGxhcGljX2lkWzB4ZDhdIGRpc2FibGVkKQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDZkXSBsYXBpY19pZFsweGRhXSBk
aXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg2ZV0gbGFw
aWNfaWRbMHhkY10gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3Bp
X2lkWzB4NmZdIGxhcGljX2lkWzB4ZGVdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJ
OiBMQVBJQyAoYWNwaV9pZFsweDcwXSBsYXBpY19pZFsweGUwXSBkaXNhYmxlZCkKWyAgICAw
LjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3MV0gbGFwaWNfaWRbMHhlMl0gZGlz
YWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NzJdIGxhcGlj
X2lkWzB4ZTRdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9p
ZFsweDczXSBsYXBpY19pZFsweGU2XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTog
TEFQSUMgKGFjcGlfaWRbMHg3NF0gbGFwaWNfaWRbMHhlOF0gZGlzYWJsZWQpClsgICAgMC4w
MDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4NzVdIGxhcGljX2lkWzB4ZWFdIGRpc2Fi
bGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDc2XSBsYXBpY19p
ZFsweGVjXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHg3N10gbGFwaWNfaWRbMHhlZV0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExB
UElDIChhY3BpX2lkWzB4NzhdIGxhcGljX2lkWzB4ZjBdIGRpc2FibGVkKQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDc5XSBsYXBpY19pZFsweGYyXSBkaXNhYmxl
ZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3YV0gbGFwaWNfaWRb
MHhmNF0gZGlzYWJsZWQpClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4
N2JdIGxhcGljX2lkWzB4ZjZdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJ
QyAoYWNwaV9pZFsweDdjXSBsYXBpY19pZFsweGY4XSBkaXNhYmxlZCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHg3ZF0gbGFwaWNfaWRbMHhmYV0gZGlzYWJsZWQp
ClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4N2VdIGxhcGljX2lkWzB4
ZmNdIGRpc2FibGVkKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDdm
XSBsYXBpY19pZFsweGZlXSBkaXNhYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogSU9BUElD
IChpZFsweDAxXSBhZGRyZXNzWzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQpbICAgIDAuMDAw
MDAwXSBJT0FQSUNbMF06IGFwaWNfaWQgMSwgdmVyc2lvbiAxNywgYWRkcmVzcyAweGZlYzAw
MDAwLCBHU0kgMC00NwpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAg
YnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
TlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSA1IGdsb2JhbF9pcnEgNSBsb3cgbGV2ZWwpClsg
ICAgMC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDEwIGdsb2Jh
bF9pcnEgMTAgbG93IGxldmVsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSAxMSBnbG9iYWxfaXJxIDExIGxvdyBsZXZlbCkKWyAgICAwLjAwMDAw
MF0gQUNQSTogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJ
UlE1IHVzZWQgYnkgb3ZlcnJpZGUuClsgICAgMC4wMDAwMDBdIEFDUEk6IElSUTkgdXNlZCBi
eSBvdmVycmlkZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJRMTAgdXNlZCBieSBvdmVycmlk
ZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJRMTEgdXNlZCBieSBvdmVycmlkZS4KWyAgICAw
LjAwMDAwMF0gVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9y
bWF0aW9uClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQRVQgaWQ6IDB4ODA4NmEyMDEgYmFzZTog
MHhmZWQwMDAwMApbICAgIDAuMDAwMDAwXSBzbXBib290OiAxMjggUHJvY2Vzc29ycyBleGNl
ZWRzIE5SX0NQVVMgbGltaXQgb2YgOApbICAgIDAuMDAwMDAwXSBzbXBib290OiBBbGxvd2lu
ZyA4IENQVXMsIDUgaG90cGx1ZyBDUFVzClsgICAgMC4wMDAwMDBdIGU4MjA6IFttZW0gMHgz
ZjgwMDAwMC0weGZiZmZmZmZmXSBhdmFpbGFibGUgZm9yIFBDSSBkZXZpY2VzClsgICAgMC4w
MDAwMDBdIEJvb3RpbmcgcGFyYXZpcnR1YWxpemVkIGtlcm5lbCBvbiBYZW4gSFZNClsgICAg
MC4wMDAwMDBdIHNldHVwX3BlcmNwdTogTlJfQ1BVUzo4IG5yX2NwdW1hc2tfYml0czo4IG5y
X2NwdV9pZHM6OCBucl9ub2RlX2lkczoxClsgICAgMC4wMDAwMDBdIFBFUkNQVTogRW1iZWRk
ZWQgMjggcGFnZXMvY3B1IEBmZmZmODgwMDNmNDAwMDAwIHM4MzUyMCByODE5MiBkMjI5NzYg
dTI2MjE0NApbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBzODM1MjAgcjgxOTIgZDIyOTc2
IHUyNjIxNDQgYWxsb2M9MSoyMDk3MTUyClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IFsw
XSAwIDEgMiAzIDQgNSA2IDcgClsgICAgMC4wMDAwMDBdIHhlbjogUFYgc3BpbmxvY2tzIGVu
YWJsZWQKWyAgICAwLjAwMDAwMF0gQnVpbHQgMSB6b25lbGlzdHMgaW4gTm9kZSBvcmRlciwg
bW9iaWxpdHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdlczogMjU1OTEyClsgICAgMC4wMDAw
MDBdIFBvbGljeSB6b25lOiBETUEzMgpbICAgIDAuMDAwMDAwXSBLZXJuZWwgY29tbWFuZCBs
aW5lOiBCT09UX0lNQUdFPS9ib290L3ZtbGludXotMy4xNy4wLXJjNS0yMDE0MDkyMC12YW5p
bGxhKyByb290PVVVSUQ9NGI0MzJiMzMtODdlYy00NTIyLThiMTAtNWRiYTNmNDkwOTllIHJv
IGRlYnVnIGxvZ2xldmVsPTcgY29uc29sZT10dHkxIGNvbnNvbGU9dHR5UzAgc2x1Yl9kZWJ1
ZyByYWRlb24uZHBtPTEgcmFkZW9uLmhhcmRfcmVzZXQ9MSByYWRlb24uYWx3YXlzX3Bvc3Q9
MSBzeXN0ZW1kLmxvZ19sZXZlbD13YXJuaW5nClsgICAgMC4wMDAwMDBdIFBJRCBoYXNoIHRh
YmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAzLCAzMjc2OCBieXRlcykKWyAgICAwLjAwMDAw
MF0gQUdQOiBDaGVja2luZyBhcGVydHVyZS4uLgpbICAgIDAuMDAwMDAwXSBBR1A6IE5vIEFH
UCBicmlkZ2UgZm91bmQKWyAgICAwLjAwMDAwMF0gTWVtb3J5OiA5ODMyMjRLLzEwMzk5ODhL
IGF2YWlsYWJsZSAoMTAxNzVLIGtlcm5lbCBjb2RlLCA5ODFLIHJ3ZGF0YSwgNDAyOEsgcm9k
YXRhLCAxMTA4SyBpbml0LCAxNDI5MksgYnNzLCA1Njc2NEsgcmVzZXJ2ZWQpClsgICAgMC4w
MDAwMDBdIFNMVUI6IEhXYWxpZ249NjQsIE9yZGVyPTAtMywgTWluT2JqZWN0cz0wLCBDUFVz
PTgsIE5vZGVzPTEKWyAgICAwLjAwMDAwMF0gSGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRh
dGlvbi4KWyAgICAwLjAwMDAwMF0gCVJDVSBkeW50aWNrLWlkbGUgZ3JhY2UtcGVyaW9kIGFj
Y2VsZXJhdGlvbiBpcyBlbmFibGVkLgpbICAgIDAuMDAwMDAwXSAJQWRkaXRpb25hbCBwZXIt
Q1BVIGluZm8gcHJpbnRlZCB3aXRoIHN0YWxscy4KWyAgICAwLjAwMDAwMF0gTlJfSVJRUzo0
MzUyIG5yX2lycXM6ODk2IDAKWyAgICAwLjAwMDAwMF0geGVuOmV2ZW50czogVXNpbmcgRklG
Ty1iYXNlZCBBQkkKWyAgICAwLjAwMDAwMF0geGVuOmV2ZW50czogWGVuIEhWTSBjYWxsYmFj
ayB2ZWN0b3IgZm9yIGV2ZW50IGRlbGl2ZXJ5IGlzIGVuYWJsZWQKWyAgICAwLjAwMDAwMF0g
Q29uc29sZTogY29sb3VyIFZHQSsgODB4MjUKWyAgICAwLjAwMDAwMF0gY29uc29sZSBbdHR5
MV0gZW5hYmxlZApbICAgIDAuMDAwMDAwXSBjb25zb2xlIFt0dHlTMF0gZW5hYmxlZApbICAg
IDAuMDAwMDAwXSBMb2NrIGRlcGVuZGVuY3kgdmFsaWRhdG9yOiBDb3B5cmlnaHQgKGMpIDIw
MDYgUmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXIKWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9M
T0NLREVQX1NVQkNMQVNTRVM6ICA4ClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS19ERVBU
SDogICAgICAgICAgNDgKWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9MT0NLREVQX0tFWVM6ICAg
ICAgICA4MTkxClsgICAgMC4wMDAwMDBdIC4uLiBDTEFTU0hBU0hfU0laRTogICAgICAgICAg
NDA5NgpbICAgIDAuMDAwMDAwXSAuLi4gTUFYX0xPQ0tERVBfRU5UUklFUzogICAgIDMyNzY4
ClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS0RFUF9DSEFJTlM6ICAgICAgNjU1MzYKWyAg
ICAwLjAwMDAwMF0gLi4uIENIQUlOSEFTSF9TSVpFOiAgICAgICAgICAzMjc2OApbICAgIDAu
MDAwMDAwXSAgbWVtb3J5IHVzZWQgYnkgbG9jayBkZXBlbmRlbmN5IGluZm86IDgxNTkga0IK
WyAgICAwLjAwMDAwMF0gIHBlciB0YXNrLXN0cnVjdCBtZW1vcnkgZm9vdHByaW50OiAxOTIw
IGJ5dGVzClsgICAgMC4wMDAwMDBdIGttZW1sZWFrOiBLZXJuZWwgbWVtb3J5IGxlYWsgZGV0
ZWN0b3IgZGlzYWJsZWQKWyAgICAwLjAwMDAwMF0gaHBldCBjbG9ja2V2ZW50IHJlZ2lzdGVy
ZWQKWyAgICAwLjAwMDAwMF0gdHNjOiBEZXRlY3RlZCAzMjAwLjE3MiBNSHogcHJvY2Vzc29y
ClsgICAgMC4wMDAwMDBdIHRzYzogTWFya2luZyBUU0MgdW5zdGFibGUgZHVlIHRvIFRTQ3Mg
dW5zeW5jaHJvbml6ZWQKWyAgICAwLjAyOTk5OV0gQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcCAo
c2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcgdGltZXIgZnJlcXVlbmN5Li4gNjQw
Mi4wMiBCb2dvTUlQUyAobHBqPTEwNjY3MjQwKQpbICAgIDAuMDU2NjczXSBwaWRfbWF4OiBk
ZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDEKWyAgICAwLjA3MDA3NF0gQUNQSTogQ29yZSBy
ZXZpc2lvbiAyMDE0MDcyNApbICAgIDAuMjY3MjIzXSBBQ1BJOiBBbGwgQUNQSSBUYWJsZXMg
c3VjY2Vzc2Z1bGx5IGFjcXVpcmVkClsgICAgMC4yODM3MTVdIERlbnRyeSBjYWNoZSBoYXNo
IHRhYmxlIGVudHJpZXM6IDEzMTA3MiAob3JkZXI6IDgsIDEwNDg1NzYgYnl0ZXMpClsgICAg
MC4zMDM3MjhdIElub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVy
OiA3LCA1MjQyODggYnl0ZXMpClsgICAgMC4zMjAxOTNdIE1vdW50LWNhY2hlIGhhc2ggdGFi
bGUgZW50cmllczogMjA0OCAob3JkZXI6IDIsIDE2Mzg0IGJ5dGVzKQpbICAgIDAuMzQwMDE5
XSBNb3VudHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMjA0OCAob3JkZXI6IDIs
IDE2Mzg0IGJ5dGVzKQpbICAgIDAuMzYxMTA4XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5
cyBmcmVlemVyClsgICAgMC4zNzMzNzNdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGJs
a2lvClsgICAgMC4zODc1MzNdIENQVTogUGh5c2ljYWwgUHJvY2Vzc29yIElEOiAwClsgICAg
MC4zOTY2NzBdIENQVTogUHJvY2Vzc29yIENvcmUgSUQ6IDAKWyAgICAwLjQxMDAwOF0gbWNl
OiBDUFUgc3VwcG9ydHMgMiBNQ0UgYmFua3MKWyAgICAwLjQyNjcxMl0gbnVtYV9hZGRfY3B1
IGNwdSAwIG5vZGUgMDogbWFzayBub3cgMApbICAgIDAuNDI2NzE4XSBMYXN0IGxldmVsIGlU
TEIgZW50cmllczogNEtCIDUxMiwgMk1CIDE2LCA0TUIgOApbICAgIDAuNDI2NzE4XSBMYXN0
IGxldmVsIGRUTEIgZW50cmllczogNEtCIDUxMiwgMk1CIDEyOCwgNE1CIDY0LCAxR0IgMApb
ICAgIDAuNDYwMzMzXSBGcmVlaW5nIFNNUCBhbHRlcm5hdGl2ZXMgbWVtb3J5OiAzMksgKGZm
ZmZmZmZmODIwMGMwMDAgLSBmZmZmZmZmZjgyMDE0MDAwKQpbICAgIDAuNDg3MDY5XSAuLlRJ
TUVSOiB2ZWN0b3I9MHgzMCBhcGljMT0wIHBpbjE9MiBhcGljMj0wIHBpbjI9MApbICAgIDAu
NTM3NTI3XSBzbXBib290OiBDUFUwOiBBTUQgUGhlbm9tKHRtKSBJSSBYNiAxMDkwVCBQcm9j
ZXNzb3IgKGZhbTogMTAsIG1vZGVsOiAwYSwgc3RlcHBpbmc6IDAwKQpbICAgIDAuNTYzMzQ1
XSBYZW46IHVzaW5nIHZjcHVvcCB0aW1lciBpbnRlcmZhY2UKWyAgICAwLjU2MzM1NF0gaW5z
dGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAwClsgICAgMC41NzM1NzldIGNwdSAwIHNwaW5s
b2NrIGV2ZW50IGlycSA1MwpbICAgIDAuNTc3MTAyXSBQZXJmb3JtYW5jZSBFdmVudHM6IEJy
b2tlbiBQTVUgaGFyZHdhcmUgZGV0ZWN0ZWQsIHVzaW5nIHNvZnR3YXJlIGV2ZW50cyBvbmx5
LgpbICAgIDAuNTgzMzQwXSBGYWlsZWQgdG8gYWNjZXNzIHBlcmZjdHIgbXNyIChNU1IgYzAw
MTAwMDQgaXMgMCkKWyAgICAwLjU4ODE4Nl0gTk1JIHdhdGNoZG9nOiBkaXNhYmxlZCAoY3B1
MCk6IGhhcmR3YXJlIGV2ZW50cyBub3QgZW5hYmxlZApbICAgIDAuNTkwNDU0XSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDEKWyAgICAwLjU5MzUyN10geDg2OiBCb290aW5nIFNN
UCBjb25maWd1cmF0aW9uOgpbICAgIDAuNTk2Njc1XSAuLi4uIG5vZGUgICMwLCBDUFVzOiAg
ICAgICMxClsgICAgMC4wMjk5OTldIG51bWFfYWRkX2NwdSBjcHUgMSBub2RlIDA6IG1hc2sg
bm93IDAtMQpbICAgIDAuNzAwMzk3XSBjcHUgMSBzcGlubG9jayBldmVudCBpcnEgNTkKWyAg
ICAwLjcwMzgyOV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyClsgICAgMC43MDY4
NDJdICAjMgpbICAgIDAuMDI5OTk5XSBudW1hX2FkZF9jcHUgY3B1IDIgbm9kZSAwOiBtYXNr
IG5vdyAwLTIKWyAgICAwLjgwNjk5MV0gY3B1IDIgc3BpbmxvY2sgZXZlbnQgaXJxIDY1Clsg
ICAgMC44MTAwNThdIHg4NjogQm9vdGVkIHVwIDEgbm9kZSwgMyBDUFVzClsgICAgMC44MTMz
NDRdIHNtcGJvb3Q6IFRvdGFsIG9mIDMgcHJvY2Vzc29ycyBhY3RpdmF0ZWQgKDE5MjI4LjUx
IEJvZ29NSVBTKQpbICAgIDAuODIwMzk1XSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQKWyAgICAw
LjgzNDM4NF0geG9yOiBtZWFzdXJpbmcgc29mdHdhcmUgY2hlY2tzdW0gc3BlZWQKWyAgICAw
Ljg3OTA4M10gICAgcHJlZmV0Y2g2NC1zc2U6ICAgODk3LjYwMCBNQi9zZWMKWyAgICAwLjky
MTkxM10gICAgZ2VuZXJpY19zc2U6ICAgODcxLjIwMCBNQi9zZWMKWyAgICAwLjkzMzM0NV0g
eG9yOiB1c2luZyBmdW5jdGlvbjogcHJlZmV0Y2g2NC1zc2UgKDg5Ny42MDAgTUIvc2VjKQpb
ICAgIDAuOTUwNjg0XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2ClsgICAg
MC45NjY5MTddIHhlbmJ1czogeHNfcmVzZXRfd2F0Y2hlcyBmYWlsZWQ6IC0zOApbICAgIDAu
OTgxMjE4XSBjcHVpZGxlOiB1c2luZyBnb3Zlcm5vciBsYWRkZXIKWyAgICAwLjk5MzM1Nl0g
Y3B1aWRsZTogdXNpbmcgZ292ZXJub3IgbWVudQpbICAgIDEuMDEwMjI5XSBBQ1BJOiBidXMg
dHlwZSBQQ0kgcmVnaXN0ZXJlZApbICAgIDEuMDIzMzQ0XSBhY3BpcGhwOiBBQ1BJIEhvdCBQ
bHVnIFBDSSBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAwLjUKWyAgICAxLjA0MTI3MF0g
UENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5cGUgMSBmb3IgYmFzZSBhY2Nlc3MKWyAgICAx
LjA1MzM0Ml0gUENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5cGUgMSBmb3IgZXh0ZW5kZWQg
YWNjZXNzClsgICAgMS4xOTMzNjBdIHJhaWQ2OiBzc2UyeDEgICAgMjc0OCBNQi9zClsgICAg
MS4yNTMzNTRdIHJhaWQ2OiBzc2UyeDIgICAgMzc4NSBNQi9zClsgICAgMS4zMTMzNTZdIHJh
aWQ2OiBzc2UyeDQgICAgMzU5MiBNQi9zClsgICAgMS4zMTY2NzhdIHJhaWQ2OiB1c2luZyBh
bGdvcml0aG0gc3NlMngyICgzNzg1IE1CL3MpClsgICAgMS4zMjAwMTRdIHJhaWQ2OiB1c2lu
ZyBpbnR4MSByZWNvdmVyeSBhbGdvcml0aG0KWyAgICAxLjMyMzY5M10gQUNQSTogQWRkZWQg
X09TSShNb2R1bGUgRGV2aWNlKQpbICAgIDEuMzI2Njc1XSBBQ1BJOiBBZGRlZCBfT1NJKFBy
b2Nlc3NvciBEZXZpY2UpClsgICAgMS4zMzAwMThdIEFDUEk6IEFkZGVkIF9PU0koMy4wIF9T
Q1AgRXh0ZW5zaW9ucykKWyAgICAxLjMzMzM0M10gQUNQSTogQWRkZWQgX09TSShQcm9jZXNz
b3IgQWdncmVnYXRvciBEZXZpY2UpClsgICAgMS40NTk1OTFdIEFDUEk6IEludGVycHJldGVy
IGVuYWJsZWQKWyAgICAxLjQ2MDA0N10gQUNQSTogKHN1cHBvcnRzIFMwIFM1KQpbICAgIDEu
NDYzMzQ1XSBBQ1BJOiBVc2luZyBJT0FQSUMgZm9yIGludGVycnVwdCByb3V0aW5nClsgICAg
MS40NjcwMTldIFBDSTogVXNpbmcgaG9zdCBicmlkZ2Ugd2luZG93cyBmcm9tIEFDUEk7IGlm
IG5lY2Vzc2FyeSwgdXNlICJwY2k9bm9jcnMiIGFuZCByZXBvcnQgYSBidWcKWyAgICAxLjYx
Njk2NV0gQUNQSTogUENJIFJvb3QgQnJpZGdlIFtQQ0kwXSAoZG9tYWluIDAwMDAgW2J1cyAw
MC1mZl0pClsgICAgMS42MzMzNzVdIGFjcGkgUE5QMEEwMzowMDogX09TQzogT1Mgc3VwcG9y
dHMgW0V4dGVuZGVkQ29uZmlnIEFTUE0gQ2xvY2tQTSBTZWdtZW50cyBNU0ldClsgICAgMS42
NTY4MTBdIGFjcGkgUE5QMEEwMzowMDogX09TQyBmYWlsZWQgKEFFX05PVF9GT1VORCk7IGRp
c2FibGluZyBBU1BNClsgICAgMS42ODA4MzBdIHBjaV9idXMgMDAwMDowMDogZGV2IDAxLCBj
cmVhdGVkIHBoeXNpY2FsIHNsb3QgMQpbICAgIDEuNjgwOTg0XSBwY2lfYnVzIDAwMDA6MDA6
IGRldiAwMiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDIKWyAgICAxLjY4MTEzNl0gcGNpX2J1
cyAwMDAwOjAwOiBkZXYgMDMsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAzClsgICAgMS42ODEy
ODddIHBjaV9idXMgMDAwMDowMDogZGV2IDA0LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgNApb
ICAgIDEuNjgxNDQwXSBwY2lfYnVzIDAwMDA6MDA6IGRldiAwNSwgY3JlYXRlZCBwaHlzaWNh
bCBzbG90IDUKWyAgICAxLjY4MTYwNF0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMDYsIGNyZWF0
ZWQgcGh5c2ljYWwgc2xvdCA2ClsgICAgMS42ODE3NzhdIHBjaV9idXMgMDAwMDowMDogZGV2
IDA3LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgNwpbICAgIDEuNjgxOTUwXSBwY2lfYnVzIDAw
MDA6MDA6IGRldiAwOCwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDgKWyAgICAxLjY4MjEyNl0g
cGNpX2J1cyAwMDAwOjAwOiBkZXYgMDksIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCA5ClsgICAg
MS42ODIzMTZdIHBjaV9idXMgMDAwMDowMDogZGV2IDBhLCBjcmVhdGVkIHBoeXNpY2FsIHNs
b3QgMTAKWyAgICAxLjY4MjQ5NF0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMGIsIGNyZWF0ZWQg
cGh5c2ljYWwgc2xvdCAxMQpbICAgIDEuNjgyNjczXSBwY2lfYnVzIDAwMDA6MDA6IGRldiAw
YywgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDEyClsgICAgMS42ODI4MjldIHBjaV9idXMgMDAw
MDowMDogZGV2IDBkLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMTMKWyAgICAxLjY4Mjk4N10g
cGNpX2J1cyAwMDAwOjAwOiBkZXYgMGUsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAxNApbICAg
IDEuNjgzMTQxXSBwY2lfYnVzIDAwMDA6MDA6IGRldiAwZiwgY3JlYXRlZCBwaHlzaWNhbCBz
bG90IDE1ClsgICAgMS42ODMzMjFdIHBjaV9idXMgMDAwMDowMDogZGV2IDEwLCBjcmVhdGVk
IHBoeXNpY2FsIHNsb3QgMTYKWyAgICAxLjY4MzQ3OV0gcGNpX2J1cyAwMDAwOjAwOiBkZXYg
MTEsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAxNwpbICAgIDEuNjgzNjQxXSBwY2lfYnVzIDAw
MDA6MDA6IGRldiAxMiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDE4ClsgICAgMS42ODM4MTJd
IHBjaV9idXMgMDAwMDowMDogZGV2IDEzLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMTkKWyAg
ICAxLjY4Mzk4Ml0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMTQsIGNyZWF0ZWQgcGh5c2ljYWwg
c2xvdCAyMApbICAgIDEuNjg0MTQ3XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxNSwgY3JlYXRl
ZCBwaHlzaWNhbCBzbG90IDIxClsgICAgMS42ODQyOTldIHBjaV9idXMgMDAwMDowMDogZGV2
IDE2LCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMjIKWyAgICAxLjY4NDQ4OF0gcGNpX2J1cyAw
MDAwOjAwOiBkZXYgMTcsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAyMwpbICAgIDEuNjg0NjYy
XSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxOCwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDI0Clsg
ICAgMS42ODQ4MzZdIHBjaV9idXMgMDAwMDowMDogZGV2IDE5LCBjcmVhdGVkIHBoeXNpY2Fs
IHNsb3QgMjUKWyAgICAxLjY4NDk4OV0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMWEsIGNyZWF0
ZWQgcGh5c2ljYWwgc2xvdCAyNgpbICAgIDEuNjg1MTQxXSBwY2lfYnVzIDAwMDA6MDA6IGRl
diAxYiwgY3JlYXRlZCBwaHlzaWNhbCBzbG90IDI3ClsgICAgMS42ODUyOTVdIHBjaV9idXMg
MDAwMDowMDogZGV2IDFjLCBjcmVhdGVkIHBoeXNpY2FsIHNsb3QgMjgKWyAgICAxLjY4NTQ0
OF0gcGNpX2J1cyAwMDAwOjAwOiBkZXYgMWQsIGNyZWF0ZWQgcGh5c2ljYWwgc2xvdCAyOQpb
ICAgIDEuNjg1NjAwXSBwY2lfYnVzIDAwMDA6MDA6IGRldiAxZSwgY3JlYXRlZCBwaHlzaWNh
bCBzbG90IDMwClsgICAgMS42ODU3NjNdIHBjaV9idXMgMDAwMDowMDogZGV2IDFmLCBjcmVh
dGVkIHBoeXNpY2FsIHNsb3QgMzEKWyAgICAxLjY4Njk1NF0gYWNwaXBocDogU2xvdCBbM10g
cmVnaXN0ZXJlZApbICAgIDEuNjk3MDI1XSBhY3BpcGhwOiBTbG90IFs0XSByZWdpc3RlcmVk
ClsgICAgMS43MTA1MTZdIGFjcGlwaHA6IFNsb3QgWzVdIHJlZ2lzdGVyZWQKWyAgICAxLjcy
MDM4MV0gYWNwaXBocDogU2xvdCBbNl0gcmVnaXN0ZXJlZApbICAgIDEuNzMzNzIyXSBhY3Bp
cGhwOiBTbG90IFs3XSByZWdpc3RlcmVkClsgICAgMS43NDM2ODNdIGFjcGlwaHA6IFNsb3Qg
WzhdIHJlZ2lzdGVyZWQKWyAgICAxLjc1NzAxM10gYWNwaXBocDogU2xvdCBbOV0gcmVnaXN0
ZXJlZApbICAgIDEuNzY3MTc1XSBhY3BpcGhwOiBTbG90IFsxMF0gcmVnaXN0ZXJlZApbICAg
IDEuNzgwMzI5XSBhY3BpcGhwOiBTbG90IFsxMV0gcmVnaXN0ZXJlZApbICAgIDEuNzkwNTA4
XSBhY3BpcGhwOiBTbG90IFsxMl0gcmVnaXN0ZXJlZApbICAgIDEuODAzNjQ0XSBhY3BpcGhw
OiBTbG90IFsxM10gcmVnaXN0ZXJlZApbICAgIDEuODEzODY0XSBhY3BpcGhwOiBTbG90IFsx
NF0gcmVnaXN0ZXJlZApbICAgIDEuODI3MTAxXSBhY3BpcGhwOiBTbG90IFsxNV0gcmVnaXN0
ZXJlZApbICAgIDEuODQwMDA5XSBhY3BpcGhwOiBTbG90IFsxNl0gcmVnaXN0ZXJlZApbICAg
IDEuODUwMzU2XSBhY3BpcGhwOiBTbG90IFsxN10gcmVnaXN0ZXJlZApbICAgIDEuODYzNjg0
XSBhY3BpcGhwOiBTbG90IFsxOF0gcmVnaXN0ZXJlZApbICAgIDEuODczODEyXSBhY3BpcGhw
OiBTbG90IFsxOV0gcmVnaXN0ZXJlZApbICAgIDEuODg3MDQwXSBhY3BpcGhwOiBTbG90IFsy
MF0gcmVnaXN0ZXJlZApbICAgIDEuODk2OTg5XSBhY3BpcGhwOiBTbG90IFsyMV0gcmVnaXN0
ZXJlZApbICAgIDEuOTEwMzM1XSBhY3BpcGhwOiBTbG90IFsyMl0gcmVnaXN0ZXJlZApbICAg
IDEuOTIwMzM2XSBhY3BpcGhwOiBTbG90IFsyM10gcmVnaXN0ZXJlZApbICAgIDEuOTMzNjc1
XSBhY3BpcGhwOiBTbG90IFsyNF0gcmVnaXN0ZXJlZApbICAgIDEuOTQ3MDcyXSBhY3BpcGhw
OiBTbG90IFsyNV0gcmVnaXN0ZXJlZApbICAgIDEuOTU3MDA4XSBhY3BpcGhwOiBTbG90IFsy
Nl0gcmVnaXN0ZXJlZApbICAgIDEuOTcwMzU4XSBhY3BpcGhwOiBTbG90IFsyN10gcmVnaXN0
ZXJlZApbICAgIDEuOTgzNjc0XSBhY3BpcGhwOiBTbG90IFsyOF0gcmVnaXN0ZXJlZApbICAg
IDEuOTk3MDMwXSBhY3BpcGhwOiBTbG90IFsyOV0gcmVnaXN0ZXJlZApbICAgIDIuMDEwMzYz
XSBhY3BpcGhwOiBTbG90IFszMF0gcmVnaXN0ZXJlZApbICAgIDIuMDIwMzc5XSBhY3BpcGhw
OiBTbG90IFszMV0gcmVnaXN0ZXJlZApbICAgIDIuMDMzNDE1XSBQQ0kgaG9zdCBicmlkZ2Ug
dG8gYnVzIDAwMDA6MDAKWyAgICAyLjA0MzM1NV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1
cyByZXNvdXJjZSBbYnVzIDAwLWZmXQpbICAgIDIuMDYwMDE1XSBwY2lfYnVzIDAwMDA6MDA6
IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgwMDAwLTB4MGNmN10KWyAgICAyLjA3MzM1MV0g
cGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MGQwMC0weGZmZmZd
ClsgICAgMi4wOTAwMTRdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW21l
bSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdClsgICAgMi4xMTAwMTldIHBjaV9idXMgMDAwMDow
MDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAweGUwMDAwMDAwLTB4ZmJmZmZmZmZdClsgICAg
Mi4xMjY2ODJdIHBjaV9idXMgMDAwMDowMDogc2Nhbm5pbmcgYnVzClsgICAgMi4xMjcxNzVd
IHBjaSAwMDAwOjAwOjAwLjA6IFs4MDg2OjEyMzddIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAK
WyAgICAyLjEyODY4NV0gcGNpIDAwMDA6MDA6MDAuMDogY2FsbGluZyBxdWlya19tbWlvX2Fs
d2F5c19vbisweDAvMHgxMApbICAgIDIuMTMzODk4XSBwY2kgMDAwMDowMDowMS4wOiBbODA4
Njo3MDAwXSB0eXBlIDAwIGNsYXNzIDB4MDYwMTAwClsgICAgMi4xNDAwMDldIHBjaSAwMDAw
OjAwOjAxLjE6IFs4MDg2OjcwMTBdIHR5cGUgMDAgY2xhc3MgMHgwMTAxODAKWyAgICAyLjE2
MDAyMV0gcGNpIDAwMDA6MDA6MDEuMTogcmVnIDB4MjA6IFtpbyAgMHhjMjYwLTB4YzI2Zl0K
WyAgICAyLjE3MjU4MV0gcGNpIDAwMDA6MDA6MDEuMTogbGVnYWN5IElERSBxdWlyazogcmVn
IDB4MTA6IFtpbyAgMHgwMWYwLTB4MDFmN10KWyAgICAyLjE5MzM0OF0gcGNpIDAwMDA6MDA6
MDEuMTogbGVnYWN5IElERSBxdWlyazogcmVnIDB4MTQ6IFtpbyAgMHgwM2Y2XQpbICAgIDIu
MjEzMzUxXSBwY2kgMDAwMDowMDowMS4xOiBsZWdhY3kgSURFIHF1aXJrOiByZWcgMHgxODog
W2lvICAweDAxNzAtMHgwMTc3XQpbICAgIDIuMjMzMzUwXSBwY2kgMDAwMDowMDowMS4xOiBs
ZWdhY3kgSURFIHF1aXJrOiByZWcgMHgxYzogW2lvICAweDAzNzZdClsgICAgMi4yNjA4Njhd
IHBjaSAwMDAwOjAwOjAxLjI6IFs4MDg2OjcwMjBdIHR5cGUgMDAgY2xhc3MgMHgwYzAzMDAK
WyAgICAyLjI3ODg3MF0gcGNpIDAwMDA6MDA6MDEuMjogcmVnIDB4MjA6IFtpbyAgMHhjMjQw
LTB4YzI1Zl0KWyAgICAyLjI5MTQ0MF0gcGNpIDAwMDA6MDA6MDEuMzogWzgwODY6NzExM10g
dHlwZSAwMCBjbGFzcyAweDA2ODAwMApbICAgIDIuMjkxNTI1XSBwY2kgMDAwMDowMDowMS4z
OiBjYWxsaW5nIGFjcGlfcG1fY2hlY2tfYmxhY2tsaXN0KzB4MC8weDQwClsgICAgMi4yOTQ2
NjJdIHBjaSAwMDAwOjAwOjAxLjM6IGNhbGxpbmcgcXVpcmtfcGlpeDRfYWNwaSsweDAvMHgx
NDAKWyAgICAyLjI5NDc0NF0gcGNpIDAwMDA6MDA6MDEuMzogcXVpcms6IFtpbyAgMHhiMDAw
LTB4YjAzZl0gY2xhaW1lZCBieSBQSUlYNCBBQ1BJClsgICAgMi4zMTM0MTBdIHBjaSAwMDAw
OjAwOjAxLjM6IHF1aXJrOiBbaW8gIDB4YjEwMC0weGIxMGZdIGNsYWltZWQgYnkgUElJWDQg
U01CClsgICAgMi4zMzcwNDFdIHBjaSAwMDAwOjAwOjAxLjM6IGNhbGxpbmcgcGNpX2ZpeHVw
X3BpaXg0X2FjcGkrMHgwLzB4MTAKWyAgICAyLjM0MDAwOV0gcGNpIDAwMDA6MDA6MDIuMDog
WzU4NTM6MDAwMV0gdHlwZSAwMCBjbGFzcyAweGZmODAwMApbICAgIDIuMzQ2Njc4XSBwY2kg
MDAwMDowMDowMi4wOiByZWcgMHgxMDogW2lvICAweGMwMDAtMHhjMGZmXQpbICAgIDIuMzUz
Mzc2XSBwY2kgMDAwMDowMDowMi4wOiByZWcgMHgxNDogW21lbSAweGYyMDAwMDAwLTB4ZjJm
ZmZmZmYgcHJlZl0KWyAgICAyLjM5MzM0NF0gcGNpIDAwMDA6MDA6MDMuMDogWzEwMTM6MDBi
OF0gdHlwZSAwMCBjbGFzcyAweDAzMDAwMApbICAgIDIuNDAwMDE4XSBwY2kgMDAwMDowMDow
My4wOiByZWcgMHgxMDogW21lbSAweGYwMDAwMDAwLTB4ZjFmZmZmZmYgcHJlZl0KWyAgICAy
LjQwNjY3OV0gcGNpIDAwMDA6MDA6MDMuMDogcmVnIDB4MTQ6IFttZW0gMHhmMzBiMDAwMC0w
eGYzMGIwZmZmXQpbICAgIDIuNDQzMzc2XSBwY2kgMDAwMDowMDowMy4wOiByZWcgMHgzMDog
W21lbSAweGYzMGEwMDAwLTB4ZjMwYWZmZmYgcHJlZl0KWyAgICAyLjQ0Njc1OV0gcGNpIDAw
MDA6MDA6MDUuMDogWzEwMDI6Njc1OV0gdHlwZSAwMCBjbGFzcyAweDAzMDAwMApbICAgIDIu
NDgwMDY0XSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgxMDogW21lbSAweGUwMDAwMDAwLTB4
ZWZmZmZmZmYgNjRiaXQgcHJlZl0KWyAgICAyLjUxMzM1N10gcGNpIDAwMDA6MDA6MDUuMDog
cmVnIDB4MTg6IFttZW0gMHhmMzA2MDAwMC0weGYzMDdmZmZmIDY0Yml0XQpbICAgIDIuNTQz
MzU0XSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgyMDogW2lvICAweGMxMDAtMHhjMWZmXQpb
ICAgIDIuNjAzMzg4XSBwY2kgMDAwMDowMDowNS4wOiByZWcgMHgzMDogW21lbSAweGYzMDgw
MDAwLTB4ZjMwOWZmZmYgcHJlZl0KWyAgICAyLjYwODAzNF0gcGNpIDAwMDA6MDA6MDUuMDog
c3VwcG9ydHMgRDEgRDIKWyAgICAyLjYwOTk5OV0gcGNpX2J1cyAwMDAwOjAwOiBmaXh1cHMg
Zm9yIGJ1cwpbICAgIDIuNjA5OTk5XSBwY2lfYnVzIDAwMDA6MDA6IGJ1cyBzY2FuIHJldHVy
bmluZyB3aXRoIG1heD0wMApbICAgIDIuNjA5OTk5XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExp
bmsgW0xOS0FdIChJUlFzICo1IDEwIDExKQpbICAgIDIuNjEzMzMzXSBBQ1BJOiBQQ0kgSW50
ZXJydXB0IExpbmsgW0xOS0JdIChJUlFzIDUgKjEwIDExKQpbICAgIDIuNjE5OTk5XSBBQ1BJ
OiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0NdIChJUlFzIDUgMTAgKjExKQpbICAgIDIuNjIz
NDE3XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0RdIChJUlFzICo1IDEwIDExKQpb
ICAgIDIuNjMzNTExXSBBQ1BJOiBFbmFibGVkIDIgR1BFcyBpbiBibG9jayAwMCB0byAwRgpb
ICAgIDIuNjM3MTA1XSB4ZW46YmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24gZHJpdmVy
ClsgICAgMi42NDAzNjJdIHZnYWFyYjogc2V0dGluZyBhcyBib290IGRldmljZTogUENJOjAw
MDA6MDA6MDMuMApbICAgIDIuNjQzMzMzXSB2Z2FhcmI6IGRldmljZSBhZGRlZDogUENJOjAw
MDA6MDA6MDMuMCxkZWNvZGVzPWlvK21lbSxvd25zPWlvK21lbSxsb2Nrcz1ub25lClsgICAg
Mi42NDY4MTddIHZnYWFyYjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAwMDowMDowNS4wLGRlY29k
ZXM9aW8rbWVtLG93bnM9aW8rbWVtLGxvY2tzPW5vbmUKWyAgICAyLjY1MDAxMF0gdmdhYXJi
OiBsb2FkZWQKWyAgICAyLjY1MzMzM10gdmdhYXJiOiBicmlkZ2UgY29udHJvbCBwb3NzaWJs
ZSAwMDAwOjAwOjA1LjAKWyAgICAyLjY1MzM0M10gdmdhYXJiOiBubyBicmlkZ2UgY29udHJv
bCBwb3NzaWJsZSAwMDAwOjAwOjAzLjAKWyAgICAyLjY1NDQ0NF0gU0NTSSBzdWJzeXN0ZW0g
aW5pdGlhbGl6ZWQKWyAgICAyLjY1NjY5NF0gbGliYXRhIHZlcnNpb24gMy4wMCBsb2FkZWQu
ClsgICAgMi42NTY4MTFdIEFDUEk6IGJ1cyB0eXBlIFVTQiByZWdpc3RlcmVkClsgICAgMi42
NTcwNTFdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiZnMK
WyAgICAyLjY2MDA3N10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZl
ciBodWIKWyAgICAyLjY2MzQ4M10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgZGV2aWNlIGRy
aXZlciB1c2IKWyAgICAyLjY2MzczNl0gTGludXggdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2U6
IHYyLjAwClsgICAgMi42Njk5OTldIHBwc19jb3JlOiBMaW51eFBQUyBBUEkgdmVyLiAxIHJl
Z2lzdGVyZWQKWyAgICAyLjY2OTk5OV0gcHBzX2NvcmU6IFNvZnR3YXJlIHZlci4gNS4zLjYg
LSBDb3B5cmlnaHQgMjAwNS0yMDA3IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4
Lml0PgpbICAgIDIuNjcwMTI0XSBQVFAgY2xvY2sgc3VwcG9ydCByZWdpc3RlcmVkClsgICAg
Mi42NzMzNjFdIFBDSTogVXNpbmcgQUNQSSBmb3IgSVJRIHJvdXRpbmcKWyAgICAyLjY3MzM2
MV0gUENJOiBwY2lfY2FjaGVfbGluZV9zaXplIHNldCB0byA2NCBieXRlcwpbICAgIDIuNjcz
NTg2XSBwY2kgMDAwMDowMDowMS4xOiBCQVIgMDogcmVzZXJ2aW5nIFtpbyAgMHgwMWYwLTB4
MDFmNyBmbGFncyAweDExMF0gKGQ9MCwgcD0wKQpbICAgIDIuNjczNTkyXSBwY2kgMDAwMDow
MDowMS4xOiBCQVIgMTogcmVzZXJ2aW5nIFtpbyAgMHgwM2Y2IGZsYWdzIDB4MTEwXSAoZD0w
LCBwPTApClsgICAgMi42NzM1OTRdIHBjaSAwMDAwOjAwOjAxLjE6IEJBUiAyOiByZXNlcnZp
bmcgW2lvICAweDAxNzAtMHgwMTc3IGZsYWdzIDB4MTEwXSAoZD0wLCBwPTApClsgICAgMi42
NzM1OTZdIHBjaSAwMDAwOjAwOjAxLjE6IEJBUiAzOiByZXNlcnZpbmcgW2lvICAweDAzNzYg
ZmxhZ3MgMHgxMTBdIChkPTAsIHA9MCkKWyAgICAyLjY3MzU5OF0gcGNpIDAwMDA6MDA6MDEu
MTogQkFSIDQ6IHJlc2VydmluZyBbaW8gIDB4YzI2MC0weGMyNmYgZmxhZ3MgMHg0MDEwMV0g
KGQ9MCwgcD0wKQpbICAgIDIuNjczNjcwXSBwY2kgMDAwMDowMDowMS4yOiBCQVIgNDogcmVz
ZXJ2aW5nIFtpbyAgMHhjMjQwLTB4YzI1ZiBmbGFncyAweDQwMTAxXSAoZD0wLCBwPTApClsg
ICAgMi42NzM4NTJdIHBjaSAwMDAwOjAwOjAyLjA6IEJBUiAwOiByZXNlcnZpbmcgW2lvICAw
eGMwMDAtMHhjMGZmIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9MCkKWyAgICAyLjY3Mzg1NV0g
cGNpIDAwMDA6MDA6MDIuMDogQkFSIDE6IHJlc2VydmluZyBbbWVtIDB4ZjIwMDAwMDAtMHhm
MmZmZmZmZiBmbGFncyAweDQyMjA4XSAoZD0wLCBwPTApClsgICAgMi42NzM5MjVdIHBjaSAw
MDAwOjAwOjAzLjA6IEJBUiAwOiByZXNlcnZpbmcgW21lbSAweGYwMDAwMDAwLTB4ZjFmZmZm
ZmYgZmxhZ3MgMHg0MjIwOF0gKGQ9MCwgcD0wKQpbICAgIDIuNjczOTI3XSBwY2kgMDAwMDow
MDowMy4wOiBCQVIgMTogcmVzZXJ2aW5nIFttZW0gMHhmMzBiMDAwMC0weGYzMGIwZmZmIGZs
YWdzIDB4NDAyMDBdIChkPTAsIHA9MCkKWyAgICAyLjY3NDAxN10gcGNpIDAwMDA6MDA6MDUu
MDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZTAwMDAwMDAtMHhlZmZmZmZmZiBmbGFncyAw
eDE0MjIwY10gKGQ9MCwgcD0wKQpbICAgIDIuNjc0MDE5XSBwY2kgMDAwMDowMDowNS4wOiBC
QVIgMjogcmVzZXJ2aW5nIFttZW0gMHhmMzA2MDAwMC0weGYzMDdmZmZmIGZsYWdzIDB4MTQw
MjA0XSAoZD0wLCBwPTApClsgICAgMi42NzQwMjFdIHBjaSAwMDAwOjAwOjA1LjA6IEJBUiA0
OiByZXNlcnZpbmcgW2lvICAweGMxMDAtMHhjMWZmIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9
MCkKWyAgICAyLjY3NDY3NV0gZTgyMDogcmVzZXJ2ZSBSQU0gYnVmZmVyIFttZW0gMHgwMDA5
ZmMwMC0weDAwMDlmZmZmXQpbICAgIDIuNjc0NjkxXSBlODIwOiByZXNlcnZlIFJBTSBidWZm
ZXIgW21lbSAweDNmN2ZmMDAwLTB4M2ZmZmZmZmZdClsgICAgMi42NzYyMjhdIEJsdWV0b290
aDogQ29yZSB2ZXIgMi4xOQpbICAgIDIuNjc2NzAwXSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9j
b2wgZmFtaWx5IDMxClsgICAgMi42NzY3MDBdIEJsdWV0b290aDogSENJIGRldmljZSBhbmQg
Y29ubmVjdGlvbiBtYW5hZ2VyIGluaXRpYWxpemVkClsgICAgMi42Nzk5OTldIEJsdWV0b290
aDogSENJIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgIDIuNjgwMDM4XSBCbHVldG9v
dGg6IEwyQ0FQIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgIDIuNjgzMzMzXSBCbHVl
dG9vdGg6IFNDTyBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgICAyLjY4NzA0Ml0gSFBF
VDogMyB0aW1lcnMgaW4gdG90YWwsIDAgdGltZXJzIHdpbGwgYmUgdXNlZCBmb3IgcGVyLWNw
dSB0aW1lcgpbICAgIDIuNjg3MDQyXSBocGV0MDogYXQgTU1JTyAweGZlZDAwMDAwLCBJUlFz
IDIsIDgsIDAKWyAgICAyLjY5MDAwNl0gaHBldDA6IDMgY29tcGFyYXRvcnMsIDY0LWJpdCA2
Mi41MDAwMDAgTUh6IGNvdW50ZXIKWyAgICAyLjY5NjQ4Nl0gU3dpdGNoZWQgdG8gY2xvY2tz
b3VyY2UgeGVuClsgICAgMi42OTY2NjZdIEZTLUNhY2hlOiBMb2FkZWQKWyAgICAyLjcxNDg0
OF0gcG5wOiBQblAgQUNQSSBpbml0ClsgICAgMi43MjUxODBdIHN5c3RlbSAwMDowMDogW21l
bSAweDAwMDAwMDAwLTB4MDAwOWZmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZApbICAgIDIu
NzQzNzMyXSBzeXN0ZW0gMDA6MDA6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQ
TlAwYzAyIChhY3RpdmUpClsgICAgMi43NDQ1MjldIHN5c3RlbSAwMDowMTogW2lvICAweDA4
YTAtMHgwOGEzXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDIuNzYxMzIyXSBzeXN0ZW0gMDA6
MDE6IFtpbyAgMHgwY2MwLTB4MGNjZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAyLjc3NzA4
N10gc3lzdGVtIDAwOjAxOiBbaW8gIDB4MDRkMC0weDA0ZDFdIGhhcyBiZWVuIHJlc2VydmVk
ClsgICAgMi43OTMxNjNdIHN5c3RlbSAwMDowMTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmlj
ZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICAyLjc5MzQ3Ml0geGVuOiAtLT4gcGlycT0x
NiAtPiBpcnE9OCAoZ3NpPTgpClsgICAgMi43OTM2OTldIHBucCAwMDowMjogUGx1ZyBhbmQg
UGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBiMDAgKGFjdGl2ZSkKWyAgICAyLjc5Mzk0OF0g
eGVuOiAtLT4gcGlycT0xNyAtPiBpcnE9MTIgKGdzaT0xMikKWyAgICAyLjc5NDEzMV0gcG5w
IDAwOjAzOiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGYxMyAoYWN0aXZl
KQpbICAgIDIuNzk0MzYxXSB4ZW46IC0tPiBwaXJxPTE4IC0+IGlycT0xIChnc2k9MSkKWyAg
ICAyLjc5NDU2MF0gcG5wIDAwOjA0OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMg
UE5QMDMwMyBQTlAwMzBiIChhY3RpdmUpClsgICAgMi43OTQ3OTFdIHhlbjogLS0+IHBpcnE9
MTkgLT4gaXJxPTYgKGdzaT02KQpbICAgIDIuNzk0ODAyXSBwbnAgMDA6MDU6IFtkbWEgMl0K
WyAgICAyLjc5NDk3OV0gcG5wIDAwOjA1OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJ
RHMgUE5QMDcwMCAoYWN0aXZlKQpbICAgIDIuNzk1MzI3XSB4ZW46IC0tPiBwaXJxPTIwIC0+
IGlycT00IChnc2k9NCkKWyAgICAyLjc5NTUxN10gcG5wIDAwOjA2OiBQbHVnIGFuZCBQbGF5
IEFDUEkgZGV2aWNlLCBJRHMgUE5QMDUwMSAoYWN0aXZlKQpbICAgIDIuNzk2NTQwXSBzeXN0
ZW0gMDA6MDc6IFtpbyAgMHhhZTAwLTB4YWUwZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICAy
LjgxMjU3MF0gc3lzdGVtIDAwOjA3OiBbaW8gIDB4YjA0NC0weGIwNDddIGhhcyBiZWVuIHJl
c2VydmVkClsgICAgMi44Mjg0MTBdIHN5c3RlbSAwMDowNzogUGx1ZyBhbmQgUGxheSBBQ1BJ
IGRldmljZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICAyLjgzMDMzMF0gcG5wOiBQblAg
QUNQSTogZm91bmQgOCBkZXZpY2VzClsgICAgMi44NjY0MzNdIHBjaV9idXMgMDAwMDowMDog
cmVzb3VyY2UgNCBbaW8gIDB4MDAwMC0weDBjZjddClsgICAgMi44NjY0MzddIHBjaV9idXMg
MDAwMDowMDogcmVzb3VyY2UgNSBbaW8gIDB4MGQwMC0weGZmZmZdClsgICAgMi44NjY0Mzld
IHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgNiBbbWVtIDB4MDAwYTAwMDAtMHgwMDBiZmZm
Zl0KWyAgICAyLjg2NjQ0MV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA3IFttZW0gMHhl
MDAwMDAwMC0weGZiZmZmZmZmXQpbICAgIDIuODY2NTgyXSBORVQ6IFJlZ2lzdGVyZWQgcHJv
dG9jb2wgZmFtaWx5IDIKWyAgICAyLjg4MjE5Nl0gVENQIGVzdGFibGlzaGVkIGhhc2ggdGFi
bGUgZW50cmllczogODE5MiAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQpbICAgIDIuOTAwOTAy
XSBUQ1AgYmluZCBoYXNoIHRhYmxlIGVudHJpZXM6IDgxOTIgKG9yZGVyOiA3LCA1MjQyODgg
Ynl0ZXMpClsgICAgMi45MjExNjVdIFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJlZCAoZXN0
YWJsaXNoZWQgODE5MiBiaW5kIDgxOTIpClsgICAgMi45Mzg4NjVdIFRDUDogcmVubyByZWdp
c3RlcmVkClsgICAgMi45NDgxNjBdIFVEUCBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3Jk
ZXI6IDQsIDgxOTIwIGJ5dGVzKQpbICAgIDIuOTY1NzExXSBVRFAtTGl0ZSBoYXNoIHRhYmxl
IGVudHJpZXM6IDUxMiAob3JkZXI6IDQsIDgxOTIwIGJ5dGVzKQpbICAgIDIuOTgyNjMwXSBO
RVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDEKWyAgICAyLjk5NTk3N10gcGNpIDAw
MDA6MDA6MDAuMDogY2FsbGluZyBxdWlya19uYXRvbWErMHgwLzB4NDAKWyAgICAyLjk5NTk4
MF0gcGNpIDAwMDA6MDA6MDAuMDogTGltaXRpbmcgZGlyZWN0IFBDSS9QQ0kgdHJhbnNmZXJz
ClsgICAgMy4wMTM4MzNdIHBjaSAwMDAwOjAwOjAwLjA6IGNhbGxpbmcgcXVpcmtfcGFzc2l2
ZV9yZWxlYXNlKzB4MC8weDkwClsgICAgMy4wMTM5MjVdIHBjaSAwMDAwOjAwOjAxLjA6IFBJ
SVgzOiBFbmFibGluZyBQYXNzaXZlIFJlbGVhc2UKWyAgICAzLjAyODgxNV0gcGNpIDAwMDA6
MDA6MDEuMDogY2FsbGluZyBxdWlya19pc2FfZG1hX2hhbmdzKzB4MC8weDQwClsgICAgMy4w
Mjg4MTddIHBjaSAwMDAwOjAwOjAxLjA6IEFjdGl2YXRpbmcgSVNBIERNQSBoYW5nIHdvcmth
cm91bmRzClsgICAgMy4wNDUwNDBdIHBjaSAwMDAwOjAwOjAxLjI6IGNhbGxpbmcgcXVpcmtf
dXNiX2Vhcmx5X2hhbmRvZmYrMHgwLzB4NmMwClsgICAgMy4wNDk1MDhdIHhlbjogLS0+IHBp
cnE9MjEgLT4gaXJxPTIzIChnc2k9MjMpClsgICAgMy4wNTYzOTJdIHBjaSAwMDAwOjAwOjAz
LjA6IGNhbGxpbmcgcGNpX2ZpeHVwX3ZpZGVvKzB4MC8weGQwClsgICAgMy4wNTY1MjRdIHBj
aSAwMDAwOjAwOjAzLjA6IFZpZGVvIGRldmljZSB3aXRoIHNoYWRvd2VkIFJPTQpbICAgIDMu
MDU2NjIwXSBwY2kgMDAwMDowMDowNS4wOiBjYWxsaW5nIHBjaV9maXh1cF92aWRlbysweDAv
MHhkMApbICAgIDMuMDU2NzMyXSBQQ0k6IENMUyAwIGJ5dGVzLCBkZWZhdWx0IDY0ClsgICAg
My4wNTcxNDJdIFRyeWluZyB0byB1bnBhY2sgcm9vdGZzIGltYWdlIGFzIGluaXRyYW1mcy4u
LgpbICAgIDMuMjQ3Mzc5XSBGcmVlaW5nIGluaXRyZCBtZW1vcnk6IDg0MzZLIChmZmZmODgw
MDM2Zjc2MDAwIC0gZmZmZjg4MDAzNzdiMzAwMCkKWyAgICAzLjQzODk3NF0gRE1BLUFQSTog
cHJlYWxsb2NhdGVkIDY1NTM2IGRlYnVnIGVudHJpZXMKWyAgICAzLjQ1MzM1NV0gRE1BLUFQ
STogZGVidWdnaW5nIGVuYWJsZWQgYnkga2VybmVsIGNvbmZpZwpbICAgIDMuNDcyNTc4XSBT
Y2FubmluZyBmb3IgbG93IG1lbW9yeSBjb3JydXB0aW9uIGV2ZXJ5IDYwIHNlY29uZHMKWyAg
ICAzLjQ5MzAwN10gc2hhMV9zc3NlMzogTmVpdGhlciBBVlggbm9yIEFWWDIgbm9yIFNTU0Uz
IGlzIGF2YWlsYWJsZS91c2FibGUuClsgICAgMy41MTQ2NjldIGZ1dGV4IGhhc2ggdGFibGUg
ZW50cmllczogMjA0OCAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykKWyAgICAzLjUzMTU0NV0g
YXVkaXQ6IGluaXRpYWxpemluZyBuZXRsaW5rIHN1YnN5cyAoZGlzYWJsZWQpClsgICAgMy41
NDY3NzVdIGF1ZGl0OiB0eXBlPTIwMDAgYXVkaXQoMTQxMTUxMDk2OC40Mzk6MSk6IGluaXRp
YWxpemVkClsgICAgMy41NjUyNDJdIEh1Z2VUTEIgcmVnaXN0ZXJlZCAyIE1CIHBhZ2Ugc2l6
ZSwgcHJlLWFsbG9jYXRlZCAwIHBhZ2VzClsgICAgMy42MzQ0OTldIFZGUzogRGlzayBxdW90
YXMgZHF1b3RfNi41LjIKWyAgICAzLjY0NjYzNl0gRHF1b3QtY2FjaGUgaGFzaCB0YWJsZSBl
bnRyaWVzOiA1MTIgKG9yZGVyIDAsIDQwOTYgYnl0ZXMpClsgICAgMy42NzU0MjhdIG50ZnM6
IGRyaXZlciAyLjEuMzAgW0ZsYWdzOiBSL1ddLgpbICAgIDMuNjkwODg3XSBmdXNlIGluaXQg
KEFQSSB2ZXJzaW9uIDcuMjMpClsgICAgMy43MDgzMjRdIGdmczI6IEdGUzIgaW5zdGFsbGVk
ClsgICAgMy43MTk5MjFdIGNlcGg6IGxvYWRlZCAobWRzIHByb3RvIDMyKQpbICAgIDMuNzMw
ODkyXSBtc2dtbmkgaGFzIGJlZW4gc2V0IHRvIDE5MzYKWyAgICAzLjc0NjU1NF0gYm91bmNl
OiBwb29sIHNpemU6IDY0IHBhZ2VzClsgICAgMy43NTk0ODldIEJsb2NrIGxheWVyIFNDU0kg
Z2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lvbiAwLjQgbG9hZGVkIChtYWpvciAyNTApClsg
ICAgMy43Nzk3MjFdIGlvIHNjaGVkdWxlciBub29wIHJlZ2lzdGVyZWQKWyAgICAzLjc5MDY2
MV0gaW8gc2NoZWR1bGVyIGRlYWRsaW5lIHJlZ2lzdGVyZWQKWyAgICAzLjgwMzcyN10gaW8g
c2NoZWR1bGVyIGNmcSByZWdpc3RlcmVkIChkZWZhdWx0KQpbICAgIDMuODE3NzQ2XSBzdGFy
dCBwbGlzdCB0ZXN0ClsgICAgMy44MTkxNTFdIGVuZCBwbGlzdCB0ZXN0ClsgICAgMy44MTkz
OTddIGNyYzMyOiBDUkNfTEVfQklUUyA9IDY0LCBDUkNfQkUgQklUUyA9IDY0ClsgICAgMy44
MzM0MTldIGNyYzMyOiBzZWxmIHRlc3RzIHBhc3NlZCwgcHJvY2Vzc2VkIDIyNTk0NCBieXRl
cyBpbiAxMDMxODAgbnNlYwpbICAgIDMuODUxNjI3XSBjcmMzMmM6IENSQ19MRV9CSVRTID0g
NjQKWyAgICAzLjg2MTgzOV0gY3JjMzJjOiBzZWxmIHRlc3RzIHBhc3NlZCwgcHJvY2Vzc2Vk
IDIyNTk0NCBieXRlcyBpbiA1MzUzOCBuc2VjClsgICAgMy44ODg5NTNdIGNyYzMyX2NvbWJp
bmU6IDgzNzMgc2VsZiB0ZXN0cyBwYXNzZWQKWyAgICAzLjkxMDgzMV0gY3JjMzJjX2NvbWJp
bmU6IDgzNzMgc2VsZiB0ZXN0cyBwYXNzZWQKWyAgICAzLjkyNTUwMl0gcGNpX2hvdHBsdWc6
IFBDSSBIb3QgUGx1ZyBQQ0kgQ29yZSB2ZXJzaW9uOiAwLjUKWyAgICAzLjk0MTIwOV0gcGNp
ZWhwOiBQQ0kgRXhwcmVzcyBIb3QgUGx1ZyBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAw
LjQKWyAgICAzLjk1OTM3NV0gY3BjaWhwX3p0NTU1MDogWlQ1NTUwIENvbXBhY3RQQ0kgSG90
IFBsdWcgRHJpdmVyIHZlcnNpb246IDAuMgpbICAgIDMuOTc4NjA5XSBjcGNpaHBfZ2VuZXJp
YzogR2VuZXJpYyBwb3J0IEkvTyBDb21wYWN0UENJIEhvdCBQbHVnIERyaXZlciB2ZXJzaW9u
OiAwLjEKWyAgICA0LjAwMDczNV0gY3BjaWhwX2dlbmVyaWM6IG5vdCBjb25maWd1cmVkLCBk
aXNhYmxpbmcuClsgICAgNC4wMTUyNTVdIHNocGNocDogU3RhbmRhcmQgSG90IFBsdWcgUENJ
IENvbnRyb2xsZXIgRHJpdmVyIHZlcnNpb246IDAuNApbICAgIDQuMDUwNTQ3XSBhY3BpcGhw
X2libTogaWJtX2FjcGlwaHBfaW5pdDogYWNwaV93YWxrX25hbWVzcGFjZSBmYWlsZWQKWyAg
ICA0LjA2OTU4MF0gaW5wdXQ6IFBvd2VyIEJ1dHRvbiBhcyAvZGV2aWNlcy9MTlhTWVNUTTow
MC9MTlhQV1JCTjowMC9pbnB1dC9pbnB1dDAKWyAgICA0LjA5MDM4OV0gQUNQSTogUG93ZXIg
QnV0dG9uIFtQV1JGXQpbICAgIDQuMTAxOTIwXSBpbnB1dDogU2xlZXAgQnV0dG9uIGFzIC9k
ZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNMUEJOOjAwL2lucHV0L2lucHV0MQpbICAgIDQuMTI0
MDAxXSBBQ1BJOiBTbGVlcCBCdXR0b24gW1NMUEZdClsgICAgNC4xMzY4MDddIHhlbjp4ZW5f
ZXZ0Y2huOiBFdmVudC1jaGFubmVsIGRldmljZSBpbnN0YWxsZWQKWyAgICA0LjE1Nzc1OV0g
eGVuOiAtLT4gcGlycT0yMiAtPiBpcnE9MjQgKGdzaT0yNCkKWyAgICA0LjE1ODI1OV0geGVu
OmdyYW50X3RhYmxlOiBHcmFudCB0YWJsZXMgdXNpbmcgdmVyc2lvbiAxIGxheW91dApbICAg
IDQuMTc0NDkyXSBHcmFudCB0YWJsZSBpbml0aWFsaXplZApbICAgIDQuMTg3NzgzXSBTZXJp
YWw6IDgyNTAvMTY1NTAgZHJpdmVyLCA0IHBvcnRzLCBJUlEgc2hhcmluZyBlbmFibGVkClsg
ICAgNC4yNTkwNDJdIDAwOjA2OiB0dHlTMCBhdCBJL08gMHgzZjggKGlycSA9IDQsIGJhc2Vf
YmF1ZCA9IDExNTIwMCkgaXMgYSAxNjU1MEEKWyAgICA0LjI4NDY0MF0gTGludXggYWdwZ2Fy
dCBpbnRlcmZhY2UgdjAuMTAzClsgICAgNC4yOTYzOTNdIEhhbmdjaGVjazogc3RhcnRpbmcg
aGFuZ2NoZWNrIHRpbWVyIDAuOS4xICh0aWNrIGlzIDE4MCBzZWNvbmRzLCBtYXJnaW4gaXMg
NjAgc2Vjb25kcykuClsgICAgNC4zMjE5NTJdIFtkcm1dIEluaXRpYWxpemVkIGRybSAxLjEu
MCAyMDA2MDgxMApbICAgIDQuMzM1MjQ2XSBbZHJtXSByYWRlb24ga2VybmVsIG1vZGVzZXR0
aW5nIGVuYWJsZWQuClsgICAgNC4zNTUzNDldIHhlbjogLS0+IHBpcnE9MzIgLT4gaXJxPTM2
IChnc2k9MzYpClsgICAgNC4zNTk1NDFdIFtkcm1dIGluaXRpYWxpemluZyBrZXJuZWwgbW9k
ZXNldHRpbmcgKFRVUktTIDB4MTAwMjoweDY3NTkgMHgxNzRCOjB4RTE5MykuClsgICAgNC4z
ODU2NTVdIFtkcm1dIHJlZ2lzdGVyIG1taW8gYmFzZTogMHhGMzA2MDAwMApbICAgIDQuNDAx
ODE0XSBbZHJtXSByZWdpc3RlciBtbWlvIHNpemU6IDEzMTA3MgpbICAgIDQuNTk5OTAzXSBB
VE9NIEJJT1M6IEVMSVhJUgpbICAgIDQuNjA5MTcwXSByYWRlb24gMDAwMDowMDowNS4wOiBW
UkFNOiAxMDI0TSAweDAwMDAwMDAwMDAwMDAwMDAgLSAweDAwMDAwMDAwM0ZGRkZGRkYgKDEw
MjRNIHVzZWQpClsgICAgNC42MzI4OTVdIHJhZGVvbiAwMDAwOjAwOjA1LjA6IEdUVDogMTAy
NE0gMHgwMDAwMDAwMDQwMDAwMDAwIC0gMHgwMDAwMDAwMDdGRkZGRkZGClsgICAgNC42NTQ0
ODhdIFtkcm1dIERldGVjdGVkIFZSQU0gUkFNPTEwMjRNLCBCQVI9MjU2TQpbICAgIDQuNjY3
NDI2XSBbZHJtXSBSQU0gd2lkdGggMTI4Yml0cyBERFIKWyAgICA0LjY3OTI4Nl0gW1RUTV0g
Wm9uZSAga2VybmVsOiBBdmFpbGFibGUgZ3JhcGhpY3MgbWVtb3J5OiA0OTU4NDYga2lCClsg
ICAgNC42OTYyNjBdIFtUVE1dIEluaXRpYWxpemluZyBwb29sIGFsbG9jYXRvcgpbICAgIDQu
NzA4MjYzXSBbVFRNXSBJbml0aWFsaXppbmcgRE1BIHBvb2wgYWxsb2NhdG9yClsgICAgNC43
MjI2MDZdIFtkcm1dIHJhZGVvbjogMTAyNE0gb2YgVlJBTSBtZW1vcnkgcmVhZHkKWyAgICA0
LjczNjA1Ml0gW2RybV0gcmFkZW9uOiAxMDI0TSBvZiBHVFQgbWVtb3J5IHJlYWR5LgpbICAg
IDQuNzQ5MjI0XSBbZHJtXSBMb2FkaW5nIFRVUktTIE1pY3JvY29kZQpbICAgIDQuNzYyNzQw
XSBbZHJtXSBJbnRlcm5hbCB0aGVybWFsIGNvbnRyb2xsZXIgd2l0aCBmYW4gY29udHJvbApb
ICAgIDQuNzc4OTExXSA9PSBwb3dlciBzdGF0ZSAwID09ClsgICAgNC43ODgwNjVdIAl1aSBj
bGFzczogbm9uZQpbICAgIDQuNzk3MzgwXSAJaW50ZXJuYWwgY2xhc3M6IGJvb3QgClsgICAg
NC44MTExMjNdIAljYXBzOiAKWyAgICA0LjgxOTA3M10gCXV2ZCAgICB2Y2xrOiAwIGRjbGs6
IDAKWyAgICA0LjgyODk4MV0gCQlwb3dlciBsZXZlbCAwICAgIHNjbGs6IDEwMDAwIG1jbGs6
IDE1MDAwIHZkZGM6IDkwMCB2ZGRjaTogMApbICAgIDQuODQ3MTU2XSAJCXBvd2VyIGxldmVs
IDEgICAgc2NsazogMTAwMDAgbWNsazogMTUwMDAgdmRkYzogOTAwIHZkZGNpOiAwClsgICAg
NC44NjQ3NzVdIAkJcG93ZXIgbGV2ZWwgMiAgICBzY2xrOiAxMDAwMCBtY2xrOiAxNTAwMCB2
ZGRjOiA5MDAgdmRkY2k6IDAKWyAgICA0Ljg4MjQ5NF0gCXN0YXR1czogYyByIGIgClsgICAg
NC44OTU4MTldID09IHBvd2VyIHN0YXRlIDEgPT0KWyAgICA0LjkwNDczM10gCXVpIGNsYXNz
OiBwZXJmb3JtYW5jZQpbICAgIDQuOTE1MzYxXSAJaW50ZXJuYWwgY2xhc3M6IG5vbmUKWyAg
ICA0LjkyNzgzOF0gCWNhcHM6IApbICAgIDQuOTM1NTg1XSAJdXZkICAgIHZjbGs6IDAgZGNs
azogMApbICAgIDQuOTQ1MzY0XSAJCXBvd2VyIGxldmVsIDAgICAgc2NsazogMTAwMDAgbWNs
azogMTUwMDAgdmRkYzogOTAwIHZkZGNpOiAwClsgICAgNC45NjM5NzFdIAkJcG93ZXIgbGV2
ZWwgMSAgICBzY2xrOiA0MDAwMCBtY2xrOiA2NjcwMCB2ZGRjOiAxMDAwIHZkZGNpOiAwClsg
ICAgNC45ODE2MThdIAkJcG93ZXIgbGV2ZWwgMiAgICBzY2xrOiA2NTAwMCBtY2xrOiA2Njcw
MCB2ZGRjOiAxMDUwIHZkZGNpOiAwClsgICAgNS4wMDAzNjZdIAlzdGF0dXM6IApbICAgIDUu
MDA4ODcxXSA9PSBwb3dlciBzdGF0ZSAyID09ClsgICAgNS4wMTgxMzhdIAl1aSBjbGFzczog
bm9uZQpbICAgIDUuMDI4NjgzXSAJaW50ZXJuYWwgY2xhc3M6IHV2ZCAKWyAgICA1LjA0MDcx
Nl0gCWNhcHM6IHZpZGVvIApbICAgIDUuMDUxMTQ1XSAJdXZkICAgIHZjbGs6IDcwMDAwIGRj
bGs6IDU2MDAwClsgICAgNS4wNjMxMzddIAkJcG93ZXIgbGV2ZWwgMCAgICBzY2xrOiA2NTAw
MCBtY2xrOiA2NjcwMCB2ZGRjOiAxMDUwIHZkZGNpOiAwClsgICAgNS4wODExODldIAkJcG93
ZXIgbGV2ZWwgMSAgICBzY2xrOiA2NTAwMCBtY2xrOiA2NjcwMCB2ZGRjOiAxMDUwIHZkZGNp
OiAwClsgICAgNS4wOTg5MTBdIAkJcG93ZXIgbGV2ZWwgMiAgICBzY2xrOiA2NTAwMCBtY2xr
OiA2NjcwMCB2ZGRjOiAxMDUwIHZkZGNpOiAwClsgICAgNS4xMTcxNDBdIAlzdGF0dXM6IApb
ICAgIDUuMTI2ODQ0XSBbZHJtOnJhZGVvbl9wbV9pbml0X2RwbV0gKkVSUk9SKiByYWRlb246
IGRwbSBpbml0aWFsaXphdGlvbiBmYWlsZWQKWyAgICA1LjE0NjQzNl0gW2RybV0gR0FSVDog
bnVtIGNwdSBwYWdlcyAyNjIxNDQsIG51bSBncHUgcGFnZXMgMjYyMTQ0ClsgICAgNS4xNzM1
MTBdIFtkcm1dIFBDSUUgR0FSVCBvZiAxMDI0TSBlbmFibGVkICh0YWJsZSBhdCAweDAwMDAw
MDAwMDAyNzMwMDApLgpbICAgIDUuMTkyOTYxXSByYWRlb24gMDAwMDowMDowNS4wOiBXQiBl
bmFibGVkClsgICAgNS4yMDU2NzhdIHJhZGVvbiAwMDAwOjAwOjA1LjA6IGZlbmNlIGRyaXZl
ciBvbiByaW5nIDAgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDA0MDAwMGMwMCBhbmQgY3B1IGFk
ZHIgMHhmZmZmODgwMDM5NTgxYzAwClsgICAgNS4yMzQ5MDRdIHJhZGVvbiAwMDAwOjAwOjA1
LjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDMgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDA0MDAw
MGMwYyBhbmQgY3B1IGFkZHIgMHhmZmZmODgwMDM5NTgxYzBjClsgICAgNS4yNjYzNDldIHJh
ZGVvbiAwMDAwOjAwOjA1LjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDUgdXNlIGdwdSBhZGRy
IDB4MDAwMDAwMDAwMDA3MjExOCBhbmQgY3B1IGFkZHIgMHhmZmZmYzkwMDAwNDMyMTE4Clsg
ICAgNS4zMDExMzBdIFtkcm1dIFN1cHBvcnRzIHZibGFuayB0aW1lc3RhbXAgY2FjaGluZyBS
ZXYgMiAoMjEuMTAuMjAxMykuClsgICAgNS4zMjEyMjNdIFtkcm1dIERyaXZlciBzdXBwb3J0
cyBwcmVjaXNlIHZibGFuayB0aW1lc3RhbXAgcXVlcnkuClsgICAgNS4zMzk3MDNdIHJhZGVv
biAwMDAwOjAwOjA1LjA6IHhlbjogbXNpIGJvdW5kIHRvIHBpcnE9ODcKWyAgICA1LjMzOTc1
N10gcmFkZW9uIDAwMDA6MDA6MDUuMDogeGVuOiBtc2kgLS0+IHBpcnE9ODcgLS0+IGlycT02
OApbICAgIDUuMzQwMjc0XSByYWRlb24gMDAwMDowMDowNS4wOiByYWRlb246IHVzaW5nIE1T
SS4KWyAgICA1LjM1NDI5OV0gW2RybV0gcmFkZW9uOiBpcnEgaW5pdGlhbGl6ZWQuClsgICAg
NS40MDg4NzZdIHJhbmRvbTogbm9uYmxvY2tpbmcgcG9vbCBpcyBpbml0aWFsaXplZApbICAg
IDUuNTU1MzIyXSBbZHJtOnI2MDBfcmluZ190ZXN0XSAqRVJST1IqIHJhZGVvbjogcmluZyAw
IHRlc3QgZmFpbGVkIChzY3JhdGNoKDB4ODUwNCk9MHhDQUZFREVBRCkKWyAgICA1LjU4MjEz
MF0gcmFkZW9uIDAwMDA6MDA6MDUuMDogZGlzYWJsaW5nIEdQVSBhY2NlbGVyYXRpb24KWyAg
ICA1LjYwODQyOV0gW2RybV0gUmFkZW9uIERpc3BsYXkgQ29ubmVjdG9ycwpbICAgIDUuNjE5
OTU2XSBbZHJtXSBDb25uZWN0b3IgMDoKWyAgICA1LjYyODQ0OV0gW2RybV0gICBIRE1JLUEt
MQpbICAgIDUuNjM2OTk1XSBbZHJtXSAgIEhQRDQKWyAgICA1LjY0NTk5Ml0gW2RybV0gICBE
REM6IDB4NjQ1MCAweDY0NTAgMHg2NDU0IDB4NjQ1NCAweDY0NTggMHg2NDU4IDB4NjQ1YyAw
eDY0NWMKWyAgICA1LjY2NTY5M10gW2RybV0gICBFbmNvZGVyczoKWyAgICA1LjY3NDU2OF0g
W2RybV0gICAgIERGUDE6IElOVEVSTkFMX1VOSVBIWTIKWyAgICA1LjY4NjM1M10gW2RybV0g
Q29ubmVjdG9yIDE6ClsgICAgNS42OTUzNjldIFtkcm1dICAgRFZJLUQtMQpbICAgIDUuNzAz
Nzk4XSBbZHJtXSAgIEhQRDEKWyAgICA1LjcxMTE1NV0gW2RybV0gICBEREM6IDB4NjQ2MCAw
eDY0NjAgMHg2NDY0IDB4NjQ2NCAweDY0NjggMHg2NDY4IDB4NjQ2YyAweDY0NmMKWyAgICA1
LjczMTI0NF0gW2RybV0gICBFbmNvZGVyczoKWyAgICA1LjczOTkxMF0gW2RybV0gICAgIERG
UDI6IElOVEVSTkFMX1VOSVBIWQpbICAgIDUuNzUwOTc4XSBbZHJtXSBDb25uZWN0b3IgMjoK
WyAgICA1Ljc2MDExOV0gW2RybV0gICBWR0EtMQpbICAgIDUuNzY4MjQ4XSBbZHJtXSAgIERE
QzogMHg2NDMwIDB4NjQzMCAweDY0MzQgMHg2NDM0IDB4NjQzOCAweDY0MzggMHg2NDNjIDB4
NjQzYwpbICAgIDUuNzg3OTM2XSBbZHJtXSAgIEVuY29kZXJzOgpbICAgIDUuNzk2NDU5XSBb
ZHJtXSAgICAgQ1JUMTogSU5URVJOQUxfS0xEU0NQX0RBQzEKWyAgICA1Ljg1OTMzOV0gW2Ry
bV0gZmIgbWFwcGFibGUgYXQgMHhFMDQ3NDAwMApbICAgIDUuODczOTE1XSBbZHJtXSB2cmFt
IGFwcGVyIGF0IDB4RTAwMDAwMDAKWyAgICA1Ljg5MDAzOV0gW2RybV0gc2l6ZSA3Mjk5MDcy
ClsgICAgNS45MDI2MjFdIFtkcm1dIGZiIGRlcHRoIGlzIDI0ClsgICAgNS45MTcxNjddIFtk
cm1dICAgIHBpdGNoIGlzIDY5MTIKWyAgICA1Ljk0MTc3OV0gQ29uc29sZTogc3dpdGNoaW5n
IHRvIGNvbG91ciBmcmFtZSBidWZmZXIgZGV2aWNlIDIxMHg2NQpbICAgIDUuOTYyMDkxXSBy
YWRlb24gMDAwMDowMDowNS4wOiBmYjA6IHJhZGVvbmRybWZiIGZyYW1lIGJ1ZmZlciBkZXZp
Y2UKWyAgICA1Ljk3Njg5Nl0gcmFkZW9uIDAwMDA6MDA6MDUuMDogcmVnaXN0ZXJlZCBwYW5p
YyBub3RpZmllcgpbICAgIDYuMDI3NDEwXSBbZHJtXSBJbml0aWFsaXplZCByYWRlb24gMi40
MC4wIDIwMDgwNTI4IGZvciAwMDAwOjAwOjA1LjAgb24gbWlub3IgMApbICAgIDYuMDg5Mjc1
XSBicmQ6IG1vZHVsZSBsb2FkZWQKWyAgICA2LjExMTk4OV0gbG9vcDogbW9kdWxlIGxvYWRl
ZApbICAgIDYuMTI4NzQ4XSBVbmlmb3JtIE11bHRpLVBsYXRmb3JtIEUtSURFIGRyaXZlcgpb
ICAgIDYuMTQ4NjE3XSBwaWl4IDAwMDA6MDA6MDEuMTogSURFIGNvbnRyb2xsZXIgKDB4ODA4
NjoweDcwMTAgcmV2IDB4MDApClsgICAgNi4xNTAyMzhdIGJsa2Zyb250OiB4dmRhOiBmbHVz
aCBkaXNrY2FjaGU6IGVuYWJsZWQ7IHBlcnNpc3RlbnQgZ3JhbnRzOiBlbmFibGVkOyBpbmRp
cmVjdCBkZXNjcmlwdG9yczogZW5hYmxlZDsKWyAgICA2LjE3NjcyNV0gIHh2ZGE6IHh2ZGEx
IHh2ZGEyIDwgeHZkYTUgPgpbICAgIDYuMjAzNTM1XSBwaWl4IDAwMDA6MDA6MDEuMTogbm90
IDEwMCUgbmF0aXZlIG1vZGU6IHdpbGwgcHJvYmUgaXJxcyBsYXRlcgpbICAgIDYuMjIwMzA5
XSAgICAgaWRlMDogQk0tRE1BIGF0IDB4YzI2MC0weGMyNjcKWyAgICA2LjIzMDgxNF0gICAg
IGlkZTE6IEJNLURNQSBhdCAweGMyNjgtMHhjMjZmClsgICAgNi4yNDEzNDhdIFByb2Jpbmcg
SURFIGludGVyZmFjZSBpZGUwLi4uClsgICAgNi43ODQ4MjNdIFByb2JpbmcgSURFIGludGVy
ZmFjZSBpZGUxLi4uClsgICAgNy4zMzAxNjZdIGlkZTAgYXQgMHgxZjAtMHgxZjcsMHgzZjYg
b24gaXJxIDE0ClsgICAgNy4zNDk5MjFdIGlkZTEgYXQgMHgxNzAtMHgxNzcsMHgzNzYgb24g
aXJxIDE1ClsgICAgNy4zNjM2NjldIGlkZV9nZW5lcmljOiBwbGVhc2UgdXNlICJwcm9iZV9t
YXNrPTB4M2YiIG1vZHVsZSBwYXJhbWV0ZXIgZm9yIHByb2JpbmcgYWxsIGxlZ2FjeSBJU0Eg
SURFIHBvcnRzClsgICAgNy4zODc4NDZdIGlkZS1nZCBkcml2ZXIgMS4xOApbICAgIDcuNDA0
MDA1XSB0dW46IFVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIsIDEuNgpbICAgIDcu
NDE0OTA5XSB0dW46IChDKSAxOTk5LTIwMDQgTWF4IEtyYXNueWFuc2t5IDxtYXhrQHF1YWxj
b21tLmNvbT4KWyAgICA3LjQzNTM3OF0gZTEwMDA6IEludGVsKFIpIFBSTy8xMDAwIE5ldHdv
cmsgRHJpdmVyIC0gdmVyc2lvbiA3LjMuMjEtazgtTkFQSQpbICAgIDcuNDUyNjI4XSBlMTAw
MDogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYgSW50ZWwgQ29ycG9yYXRpb24uClsgICAgNy40
NjY1MjZdIGUxMDAwZTogSW50ZWwoUikgUFJPLzEwMDAgTmV0d29yayBEcml2ZXIgLSAyLjMu
Mi1rClsgICAgNy40ODA3MzZdIGUxMDAwZTogQ29weXJpZ2h0KGMpIDE5OTkgLSAyMDE0IElu
dGVsIENvcnBvcmF0aW9uLgpbICAgIDcuNDk0ODA5XSBpZ2I6IEludGVsKFIpIEdpZ2FiaXQg
RXRoZXJuZXQgTmV0d29yayBEcml2ZXIgLSB2ZXJzaW9uIDUuMi4xMy1rClsgICAgNy41MTE1
ODNdIGlnYjogQ29weXJpZ2h0IChjKSAyMDA3LTIwMTQgSW50ZWwgQ29ycG9yYXRpb24uClsg
ICAgNy41MjU0NDldIGlnYnZmOiBJbnRlbChSKSBHaWdhYml0IFZpcnR1YWwgRnVuY3Rpb24g
TmV0d29yayBEcml2ZXIgLSB2ZXJzaW9uIDIuMC4yLWsKWyAgICA3LjU0NTMyNV0gaWdidmY6
IENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uClsgICAgNy41
NjEyMTJdIHhlbl9uZXRmcm9udDogSW5pdGlhbGlzaW5nIFhlbiB2aXJ0dWFsIGV0aGVybmV0
IGRyaXZlcgpbICAgIDcuNTgzMDg2XSBlaGNpX2hjZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhv
c3QgQ29udHJvbGxlciAoRUhDSSkgRHJpdmVyClsgICAgNy42MDIyODNdIGVoY2ktcGNpOiBF
SENJIFBDSSBwbGF0Zm9ybSBkcml2ZXIKWyAgICA3LjYxOTA0MF0gb2hjaV9oY2Q6IFVTQiAx
LjEgJ09wZW4nIEhvc3QgQ29udHJvbGxlciAoT0hDSSkgRHJpdmVyClsgICAgNy42MzU5MDNd
IG9oY2ktcGNpOiBPSENJIFBDSSBwbGF0Zm9ybSBkcml2ZXIKWyAgICA3LjY0NzE0OF0gdWhj
aV9oY2Q6IFVTQiBVbml2ZXJzYWwgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBkcml2ZXIK
WyAgICA3LjY2ODMzNV0gdWhjaV9oY2QgMDAwMDowMDowMS4yOiBlbmFibGluZyBidXMgbWFz
dGVyaW5nClsgICAgNy42NzAyNTJdIHVoY2lfaGNkIDAwMDA6MDA6MDEuMjogVUhDSSBIb3N0
IENvbnRyb2xsZXIKWyAgICA3LjY4NDY5M10gdWhjaV9oY2QgMDAwMDowMDowMS4yOiBuZXcg
VVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDEKWyAgICA3LjcwMzAx
OF0gdWhjaV9oY2QgMDAwMDowMDowMS4yOiBpcnEgMjMsIGlvIGJhc2UgMHgwMDAwYzI0MApb
ICAgIDcuNzIwNzA2XSB1c2IgdXNiMTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9y
PTFkNmIsIGlkUHJvZHVjdD0wMDAxClsgICAgNy43Mzk4MTVdIHVzYiB1c2IxOiBOZXcgVVNC
IGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQpbICAg
IDcuNzYxMzg5XSB1c2IgdXNiMTogUHJvZHVjdDogVUhDSSBIb3N0IENvbnRyb2xsZXIKWyAg
ICA3Ljc3NDU1N10gdXNiIHVzYjE6IE1hbnVmYWN0dXJlcjogTGludXggMy4xNy4wLXJjNS0y
MDE0MDkyMC12YW5pbGxhKyB1aGNpX2hjZApbICAgIDcuNzk0MjgzXSB1c2IgdXNiMTogU2Vy
aWFsTnVtYmVyOiAwMDAwOjAwOjAxLjIKWyAgICA3LjgxMjIzOV0gaHViIDEtMDoxLjA6IFVT
QiBodWIgZm91bmQKWyAgICA3LjgyMjk5NV0gaHViIDEtMDoxLjA6IDIgcG9ydHMgZGV0ZWN0
ZWQKWyAgICA3LjgzNzgwMl0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRy
aXZlciB1c2JscApbICAgIDcuODUzMTMwXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRl
cmZhY2UgZHJpdmVyIHVzYi1zdG9yYWdlClsgICAgNy44NzAzMjNdIHVzYmNvcmU6IHJlZ2lz
dGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNic2VyaWFsClsgICAgNy44ODc3MTJdIHVz
YmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgY3AyMTB4ClsgICAgNy45
MDMyMDldIHVzYnNlcmlhbDogVVNCIFNlcmlhbCBzdXBwb3J0IHJlZ2lzdGVyZWQgZm9yIGNw
MjEweApbICAgIDcuOTIwNzcyXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2Ug
ZHJpdmVyIGN5cHJlc3NfbTgKWyAgICA3LjkzNjYzMF0gdXNic2VyaWFsOiBVU0IgU2VyaWFs
IHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgRGVMb3JtZSBFYXJ0aG1hdGUgVVNCClsgICAgNy45
NTYwNTddIHVzYnNlcmlhbDogVVNCIFNlcmlhbCBzdXBwb3J0IHJlZ2lzdGVyZWQgZm9yIEhJ
RC0+Q09NIFJTMjMyIEFkYXB0ZXIKWyAgICA3Ljk3NzUzOV0gdXNic2VyaWFsOiBVU0IgU2Vy
aWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgTm9raWEgQ0EtNDIgVjIgQWRhcHRlcgpbICAg
IDcuOTk3MDU3XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIG1v
czc3MjAKWyAgICA4LjAxMzA2Ml0gdXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVn
aXN0ZXJlZCBmb3IgTW9zY2hpcCAyIHBvcnQgYWRhcHRlcgpbICAgIDguMDMyNjMwXSB1c2Jj
b3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIG1vczc4NDAKWyAgICA4LjA0
ODM2MF0gdXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgTW9z
Y2hpcCA3ODQwLzc4MjAgVVNCIFNlcmlhbCBEcml2ZXIKWyAgICA4LjA3MTA2Ml0gaTgwNDI6
IFBOUDogUFMvMiBDb250cm9sbGVyIFtQTlAwMzAzOlBTMkssUE5QMGYxMzpQUzJNXSBhdCAw
eDYwLDB4NjQgaXJxIDEsMTIKWyAgICA4LjA5ODg5NF0gc2VyaW86IGk4MDQyIEtCRCBwb3J0
IGF0IDB4NjAsMHg2NCBpcnEgMQpbICAgIDguMTEyODMwXSBzZXJpbzogaTgwNDIgQVVYIHBv
cnQgYXQgMHg2MCwweDY0IGlycSAxMgpbICAgIDguMTI3NTg5XSBtb3VzZWRldjogUFMvMiBt
b3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQpbICAgIDguMTQ2ODU3XSBpbnB1dDog
WGVuIFZpcnR1YWwgS2V5Ym9hcmQgYXMgL2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMK
WyAgICA4LjE0ODc4MV0gaW5wdXQ6IEFUIFRyYW5zbGF0ZWQgU2V0IDIga2V5Ym9hcmQgYXMg
L2RldmljZXMvcGxhdGZvcm0vaTgwNDIvc2VyaW8wL2lucHV0L2lucHV0MgpbICAgIDguMTk4
MDUxXSBpbnB1dDogWGVuIFZpcnR1YWwgUG9pbnRlciBhcyAvZGV2aWNlcy92aXJ0dWFsL2lu
cHV0L2lucHV0NgpbICAgIDguMjIxODAzXSBydGNfY21vcyAwMDowMjogcnRjIGNvcmU6IHJl
Z2lzdGVyZWQgcnRjX2Ntb3MgYXMgcnRjMApbICAgIDguMjM5OTAxXSBydGNfY21vcyAwMDow
MjogYWxhcm1zIHVwIHRvIG9uZSBkYXksIDExNCBieXRlcyBudnJhbSwgaHBldCBpcnFzClsg
ICAgOC4yNjA4NjhdIHBpaXg0X3NtYnVzIDAwMDA6MDA6MDEuMzogU01CdXMgSG9zdCBDb250
cm9sbGVyIG5vdCBlbmFibGVkIQpbICAgIDguMjgxMjAyXSBsaXJjX2RldjogSVIgUmVtb3Rl
IENvbnRyb2wgZHJpdmVyIHJlZ2lzdGVyZWQsIG1ham9yIDI0OCAKWyAgICA4LjI5OTU2Nl0g
SVIgTkVDIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQKWyAgICA4LjMxMjAzMF0gSVIg
UkM1KHgvc3opIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQKWyAgICA4LjMyODIyNl0g
SVIgUkM2IHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQKWyAgICA4LjMzMzcyN10gdXNi
IDEtMTogbmV3IGZ1bGwtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyB1aGNpX2hj
ZApbICAgIDguMzYwMDE2XSBJUiBKVkMgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZApb
ICAgIDguMzcyNTg2XSBJUiBTb255IHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQKWyAg
ICA4LjM4NTU5OF0gSVIgU0FOWU8gcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZApbICAg
IDguMzk5MDQzXSBJUiBTaGFycCBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVkClsgICAg
OC40MTQ3MzRdIElSIE1DRSBLZXlib2FyZC9tb3VzZSBwcm90b2NvbCBoYW5kbGVyIGluaXRp
YWxpemVkClsgICAgOC40MzEwOTZdIElSIExJUkMgYnJpZGdlIGhhbmRsZXIgaW5pdGlhbGl6
ZWQKWyAgICA4LjQ0NDExOF0gSVIgWE1QIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQK
WyAgICA4LjQ2MTU2Ml0gY3gyNTgyMTogZHJpdmVyIHZlcnNpb24gMC4wLjEwNiBsb2FkZWQK
WyAgICA4LjQ3NzUwMF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZl
ciBwdnJ1c2IyClsgICAgOC40OTcxMTVdIHVzYiAxLTE6IE5ldyBVU0IgZGV2aWNlIGZvdW5k
LCBpZFZlbmRvcj0wNjI3LCBpZFByb2R1Y3Q9MDAwMQpbICAgIDguNDk3MTE3XSB1c2IgMS0x
OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0zLCBTZXJpYWxOdW1i
ZXI9NQpbICAgIDguNDk3MTE4XSB1c2IgMS0xOiBQcm9kdWN0OiBRRU1VIFVTQiBUYWJsZXQK
WyAgICA4LjQ5NzExOV0gdXNiIDEtMTogTWFudWZhY3R1cmVyOiBRRU1VClsgICAgOC40OTcx
MjBdIHVzYiAxLTE6IFNlcmlhbE51bWJlcjogNDIKWyAgICA4LjU3NDk1NV0gcHZydXNiMjog
VjRMIGluLXRyZWUgdmVyc2lvbjpIYXVwcGF1Z2UgV2luVFYtUFZSLVVTQjIgTVBFRzIgRW5j
b2Rlci9UdW5lcgpbICAgIDguNTk2MjU5XSBwdnJ1c2IyOiBEZWJ1ZyBtYXNrIGlzIDMxICgw
eDFmKQpbICAgIDguNjExNjQ2XSBzcDUxMDBfdGNvOiBTUDUxMDAvU0I4MDAgVENPIFdhdGNo
RG9nIFRpbWVyIERyaXZlciB2MC4wNQpbICAgIDguNjI5MTU5XSB4ZW5fd2R0OiBYZW4gV2F0
Y2hEb2cgVGltZXIgRHJpdmVyIHYwLjAxClsgICAgOC42NDYwNzBdIHhlbl93ZHQ6IGluaXRp
YWxpemVkICh0aW1lb3V0PTYwcywgbm93YXlvdXQ9MCkKWyAgICA4LjY2MzU5MV0gZGV2aWNl
LW1hcHBlcjogaW9jdGw6IDQuMjcuMC1pb2N0bCAoMjAxMy0xMC0zMCkgaW5pdGlhbGlzZWQ6
IGRtLWRldmVsQHJlZGhhdC5jb20KWyAgICA4LjY4Nzk2NV0gQmx1ZXRvb3RoOiBWaXJ0dWFs
IEhDSSBkcml2ZXIgdmVyIDEuNQpbICAgIDguNzAxMzU3XSBCbHVldG9vdGg6IEhDSSBVQVJU
IGRyaXZlciB2ZXIgMi4yClsgICAgOC43MTQ4MDVdIEJsdWV0b290aDogSENJIEg0IHByb3Rv
Y29sIGluaXRpYWxpemVkClsgICAgOC43MjgxNzNdIEJsdWV0b290aDogSENJIEJDU1AgcHJv
dG9jb2wgaW5pdGlhbGl6ZWQKWyAgICA4Ljc0MTk1MV0gQmx1ZXRvb3RoOiBIQ0lMTCBwcm90
b2NvbCBpbml0aWFsaXplZApbICAgIDguNzU2MTE0XSBCbHVldG9vdGg6IEhDSUFUSDNLIHBy
b3RvY29sIGluaXRpYWxpemVkClsgICAgOC43Njk5MDJdIEJsdWV0b290aDogSENJIFRocmVl
LXdpcmUgVUFSVCAoSDUpIHByb3RvY29sIGluaXRpYWxpemVkClsgICAgOC43ODc0MjRdIHVz
YmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgYmNtMjAzeApbICAgIDgu
ODAzMTM3XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGJwYTEw
eApbICAgIDguODE4NzUwXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJp
dmVyIGJmdXNiClsgICAgOC44MzUxMThdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVy
ZmFjZSBkcml2ZXIgYnR1c2IKWyAgICA4Ljg1MjcyOF0gdXNiY29yZTogcmVnaXN0ZXJlZCBu
ZXcgaW50ZXJmYWNlIGRyaXZlciBhdGgzawpbICAgIDguODcwNzU5XSBoaWRyYXc6IHJhdyBI
SUQgZXZlbnRzIGRyaXZlciAoQykgSmlyaSBLb3NpbmEKWyAgICA4Ljg5Njc5OV0gaW5wdXQ6
IEltRXhQUy8yIEdlbmVyaWMgRXhwbG9yZXIgTW91c2UgYXMgL2RldmljZXMvcGxhdGZvcm0v
aTgwNDIvc2VyaW8xL2lucHV0L2lucHV0NQpbICAgIDguOTAxNjg2XSBpbnB1dDogUUVNVSBR
RU1VIFVTQiBUYWJsZXQgYXMgL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAxLjIvdXNi
MS8xLTEvMS0xOjEuMC8wMDAzOjA2Mjc6MDAwMS4wMDAxL2lucHV0L2lucHV0NwpbICAgIDgu
OTAzNDEyXSBoaWQtZ2VuZXJpYyAwMDAzOjA2Mjc6MDAwMS4wMDAxOiBpbnB1dCxoaWRyYXcw
OiBVU0IgSElEIHYwLjAxIFBvaW50ZXIgW1FFTVUgUUVNVSBVU0IgVGFibGV0XSBvbiB1c2It
MDAwMDowMDowMS4yLTEvaW5wdXQwClsgICAgOC45MDM1OTddIHVzYmNvcmU6IHJlZ2lzdGVy
ZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiaGlkClsgICAgOC45MDM1OThdIHVzYmhpZDog
VVNCIEhJRCBjb3JlIGRyaXZlcgpbICAgIDguOTAzNzA2XSBOZXRmaWx0ZXIgbWVzc2FnZXMg
dmlhIE5FVExJTksgdjAuMzAuClsgICAgOC45MDM3MzZdIG5mbmxfYWNjdDogcmVnaXN0ZXJp
bmcgd2l0aCBuZm5ldGxpbmsuClsgICAgOC45MDM4NDJdIG5mX2Nvbm50cmFjayB2ZXJzaW9u
IDAuNS4wICg3NzQ3IGJ1Y2tldHMsIDMwOTg4IG1heCkKWyAgICA4LjkwNTE4OV0gY3RuZXRs
aW5rIHYwLjkzOiByZWdpc3RlcmluZyB3aXRoIG5mbmV0bGluay4KWyAgICA4LjkwNzUxNV0g
eHRfdGltZToga2VybmVsIHRpbWV6b25lIGlzIC0wMDAwClsgICAgOC45MDc1NTZdIGlwX3Nl
dDogcHJvdG9jb2wgNgpbICAgIDguOTA3NjQ2XSBJUFZTOiBSZWdpc3RlcmVkIHByb3RvY29s
cyAoKQpbICAgIDguOTA4NjA2XSBJUFZTOiBDb25uZWN0aW9uIGhhc2ggdGFibGUgY29uZmln
dXJlZCAoc2l6ZT00MDk2LCBtZW1vcnk9NjRLYnl0ZXMpClsgICAgOC45MDg3NDNdIElQVlM6
IENyZWF0aW5nIG5ldG5zIHNpemU9MTkwNCBpZD0wClsgICAgOS4xNTA1NjVdIElQVlM6IGlw
dnMgbG9hZGVkLgpbICAgIDkuMTYwOTU1XSBpcF90YWJsZXM6IChDKSAyMDAwLTIwMDYgTmV0
ZmlsdGVyIENvcmUgVGVhbQpbICAgIDkuMTc1ODg1XSBUQ1A6IGN1YmljIHJlZ2lzdGVyZWQK
WyAgICA5LjE4NTcwOV0gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAxNwpbICAg
IDkuMTk5NjA3XSBCcmlkZ2UgZmlyZXdhbGxpbmcgcmVnaXN0ZXJlZApbICAgIDkuMjExNDAy
XSBFYnRhYmxlcyB2Mi4wIHJlZ2lzdGVyZWQKWyAgICA5LjIyMTg1OV0gQmx1ZXRvb3RoOiBS
RkNPTU0gVFRZIGxheWVyIGluaXRpYWxpemVkClsgICAgOS4yMzYxNDNdIEJsdWV0b290aDog
UkZDT01NIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgIDkuMjUxNTE3XSBCbHVldG9v
dGg6IFJGQ09NTSB2ZXIgMS4xMQpbICAgIDkuMjYyMjgwXSBCbHVldG9vdGg6IEJORVAgKEV0
aGVybmV0IEVtdWxhdGlvbikgdmVyIDEuMwpbICAgIDkuMjc3MzQ3XSBCbHVldG9vdGg6IEJO
RVAgZmlsdGVyczogcHJvdG9jb2wgbXVsdGljYXN0ClsgICAgOS4yOTI3OThdIEJsdWV0b290
aDogQk5FUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgICA5LjMwNjc5N10gQmx1ZXRv
b3RoOiBISURQIChIdW1hbiBJbnRlcmZhY2UgRW11bGF0aW9uKSB2ZXIgMS4yClsgICAgOS4z
MjQxNDFdIEJsdWV0b290aDogSElEUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgICA5
LjMzNzc5MV0gS2V5IHR5cGUgY2VwaCByZWdpc3RlcmVkClsgICAgOS4zNDkzMjNdIGxpYmNl
cGg6IGxvYWRlZCAobW9uL29zZCBwcm90byAxNS8yNCkKWyAgICA5LjM2NjUxM10gcmVnaXN0
ZXJlZCB0YXNrc3RhdHMgdmVyc2lvbiAxClsgICAgOS4zODgxNjZdIEJ0cmZzIGxvYWRlZApb
ICAgIDkuMzk5OTIyXSB4ZW5idXNfcHJvYmVfZnJvbnRlbmQ6IERldmljZSB3aXRoIG5vIGRy
aXZlcjogZGV2aWNlL3BjaS8wClsgICAgOS40MTgwMzldIGNvbnNvbGUgW25ldGNvbjBdIGVu
YWJsZWQKWyAgICA5LjQyODQwOV0gbmV0Y29uc29sZTogbmV0d29yayBsb2dnaW5nIHN0YXJ0
ZWQKWyAgICA5LjQ0MjY0Ml0gcnRjX2Ntb3MgMDA6MDI6IHNldHRpbmcgc3lzdGVtIGNsb2Nr
IHRvIDIwMTQtMDktMjMgMjI6MjI6NTcgVVRDICgxNDExNTEwOTc3KQpbICAgIDkuNDY5MTI0
XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiAxMTA4SyAoZmZmZmZmZmY4MWVmNzAw
MCAtIGZmZmZmZmZmODIwMGMwMDApClsgICAgOS40OTIwODRdIFdyaXRlIHByb3RlY3Rpbmcg
dGhlIGtlcm5lbCByZWFkLW9ubHkgZGF0YTogMTQzMzZrClsgICAgOS41MDk1OTJdIEZyZWVp
bmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6IDUySyAoZmZmZjg4MDAwMTlmMzAwMCAtIGZmZmY4
ODAwMDFhMDAwMDApClsgICAgOS41MzY5MjRdIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1v
cnk6IDY4SyAoZmZmZjg4MDAwMWRlZjAwMCAtIGZmZmY4ODAwMDFlMDAwMDApClsgICAgOS42
MDQ1MTZdIHN5c3RlbWQtdWRldmRbMTQzNF06IHN0YXJ0aW5nIHZlcnNpb24gMjA4ClsgICAg
OS45NzQ3NTldIEVYVDQtZnMgKHh2ZGExKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3Jk
ZXJlZCBkYXRhIG1vZGUuIE9wdHM6IChudWxsKQpbICAgMTAuODA5NDIwXSBzeXN0ZW1kWzFd
OiBGYWlsZWQgdG8gaW5zZXJ0IG1vZHVsZSAnaXB2NicKWyAgIDEyLjY0OTkyOV0gc3lzdGVt
ZC11ZGV2ZFsxNTE0XTogc3RhcnRpbmcgdmVyc2lvbiAyMDgKWyAgIDEzLjY5OTk5MV0gRVhU
NC1mcyAoeHZkYTEpOiByZS1tb3VudGVkLiBPcHRzOiBlcnJvcnM9cmVtb3VudC1ybwpbICAg
MTcuNzQzNjczXSBzeXN0ZW1kLWpvdXJuYWxkWzE0OThdOiBSZWNlaXZlZCByZXF1ZXN0IHRv
IGZsdXNoIHJ1bnRpbWUgam91cm5hbCBmcm9tIFBJRCAxClsgICAxOC4wNDkwMDRdIEFkZGlu
ZyA5MDExMTZrIHN3YXAgb24gL2Rldi94dmRhNS4gIFByaW9yaXR5Oi0xIGV4dGVudHM6MSBh
Y3Jvc3M6OTAxMTE2ayBTUwpbICAgMjIuMDI2NjA4XSB2Z2FhcmI6IGRldmljZSBjaGFuZ2Vk
IGRlY29kZXM6IFBDSTowMDAwOjAwOjA1LjAsb2xkZGVjb2Rlcz1pbyttZW0sZGVjb2Rlcz1u
b25lOm93bnM9aW8rbWVtCg==
------------06E0A40933546D243
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

------------06E0A40933546D243--



From xen-devel-bounces@lists.xen.org Wed Sep 24 17:20:10 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Sep 2014 17:20:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XWqEc-0003Bm-1m; Wed, 24 Sep 2014 17:20:10 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <daniel.kiper@oracle.com>) id 1XWqEZ-00039S-Dk
	for xen-devel@lists.xenproject.org; Wed, 24 Sep 2014 17:20:07 +0000
Received: from [85.158.143.35:38906] by server-3.bemta-4.messagelabs.com id
	E3/C1-06192-64DF2245; Wed, 24 Sep 2014 17:20:06 +0000
X-Env-Sender: daniel.kiper@oracle.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411579203!12917688!1
X-Originating-IP: [141.146.126.69]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTQxLjE0Ni4xMjYuNjkgPT4gMjc3MjE4\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31901 invoked from network); 24 Sep 2014 17:20:05 -0000
Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com)
	(141.146.126.69)
	by server-6.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 24 Sep 2014 17:20:05 -0000
Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93])
	by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with
	ESMTP id s8OHJrUp023187
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
	Wed, 24 Sep 2014 17:19:54 GMT
Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85])
	by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8OHJqq6027034
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL);
	Wed, 24 Sep 2014 17:19:53 GMT
Received: from abhmp0001.oracle.com (abhmp0001.oracle.com [141.146.116.7])
	by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8OHJp5o027004; Wed, 24 Sep 2014 17:19:52 GMT
Received: from olila.local.net-space.pl (/89.174.63.77)
	by default (Oracle Beehive Gateway v4.0)
	with ESMTP ; Wed, 24 Sep 2014 10:19:50 -0700
From: Daniel Kiper <daniel.kiper@oracle.com>
To: xen-devel@lists.xenproject.org
Date: Wed, 24 Sep 2014 19:19:20 +0200
Message-Id: <1411579162-27503-4-git-send-email-daniel.kiper@oracle.com>
X-Mailer: git-send-email 1.7.10.4
In-Reply-To: <1411579162-27503-1-git-send-email-daniel.kiper@oracle.com>
References: <1411579162-27503-1-git-send-email-daniel.kiper@oracle.com>
X-Source-IP: ucsinet21.oracle.com [156.151.31.93]
Cc: keir@xen.org, ian.campbell@citrix.com, andrew.cooper3@citrix.com,
	stefano.stabellini@eu.citrix.com, ross.philipson@citrix.com,
	roy.franz@linaro.org, ning.sun@intel.com, jbeulich@suse.com,
	qiaowei.ren@intel.com, richard.l.maliszewski@intel.com,
	gang.wei@intel.com, fu.wei@linaro.org
Subject: [Xen-devel] [PATCH v2 3/5] xen/x86: Migrate to boot_info structure
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

Break multiboot (v1) protocol dependency. It means that most of Xen code
(excluding preloader) could be bootloader agnostic and does not need almost
any knowledge about boot protocol. Additionally, we are able to pass all boot
data to __start_xen() in one bucket without any side channels. I do not mention
that we are also able to easily identify boot data in Xen code.

Here is boot data flow for legacy BIOS platform:

 BIOS -> GRUB -> multiboot[12]* -> __reloc() -> MBD ->-\
                                                       /
        ------<------<------<------<------<------<-----
         \
          \
           ---> __init_boot_info() -> boot_info_mb -> __start_xen() -> boot_info
          /
 BIOS ->-/

  * multiboot2 is not implemented yet. Look for it in later patches.

Here is boot data flow for EFI platform:

  EFI -> efi_start() -> boot_info_efi -> __start_xen() -> boot_info

WARNING: ARM build could be broken by this patch. We need to agree boot_info
integration into ARM. Personally I think that it is worth storing all data
from any bootloader and preloader in boot_info on any architecture. This give
a chance to share more code between architectures. However, every architecture
should define its own boot_info (in relevant include/asm directory). Despite
that it looks that some parts of it could be common, e.g.  modules data,
command line arguments, boot loader name, EFI data, etc., even if types
would not be the same. So, as it was stated above a lot of code could be
shared among architectures.

Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
---
v2 - suggestions/fixes:
   - rename XBI to boot_info
     (suggested by Andrew Cooper),
   - use more meaningful types in boot_info structure
     (suggested by Andrew Cooper, Jan Beulich and Stefano Stabellini),
   - improve boot_info structure comment
     (suggested by Andrew Cooper and Jan Beulich),
   - do data shuffling after exception support initialization
     (suggested by Andrew Cooper),
   - patch split rearrangement
     (suggested by Andrew Cooper and Jan Beulich).
---
 xen/arch/x86/boot_info.c          |  240 +++++++++++++++++++++++---
 xen/arch/x86/dmi_scan.c           |    7 +-
 xen/arch/x86/domain_build.c       |   24 +--
 xen/arch/x86/efi/boot.c           |  214 +++++++++++------------
 xen/arch/x86/efi/efi.h            |    3 -
 xen/arch/x86/efi/runtime.c        |   52 ++++--
 xen/arch/x86/microcode.c          |   39 ++---
 xen/arch/x86/mpparse.c            |    9 +-
 xen/arch/x86/platform_hypercall.c |   19 +--
 xen/arch/x86/setup.c              |  341 +++++++++++--------------------------
 xen/drivers/acpi/osl.c            |    9 +-
 xen/drivers/video/vesa.c          |    7 +-
 xen/drivers/video/vga.c           |   18 +-
 xen/include/asm-x86/boot_info.h   |  126 ++++++++++++++
 xen/include/asm-x86/config.h      |    2 -
 xen/include/asm-x86/e820.h        |    8 -
 xen/include/asm-x86/edd.h         |    6 -
 xen/include/asm-x86/setup.h       |   10 +-
 xen/include/xen/efi.h             |   10 --
 xen/include/xen/vga.h             |   18 --
 xen/include/xsm/xsm.h             |   14 +-
 xen/xsm/xsm_core.c                |    6 +-
 xen/xsm/xsm_policy.c              |   14 +-
 23 files changed, 680 insertions(+), 516 deletions(-)
 create mode 100644 xen/include/asm-x86/boot_info.h
 delete mode 100644 xen/include/xen/vga.h

diff --git a/xen/arch/x86/boot_info.c b/xen/arch/x86/boot_info.c
index 70830c2..10a1749 100644
--- a/xen/arch/x86/boot_info.c
+++ b/xen/arch/x86/boot_info.c
@@ -15,44 +15,244 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/*
+ * Some ideas are taken (out) from xen/arch/x86/boot/reloc.c,
+ * xen/arch/x86/efi/boot.c and xen/arch/x86/setup.c.
+ */
+
 #include <xen/types.h>
+#include <xen/cache.h>
+#include <xen/efi.h>
 #include <xen/init.h>
 #include <xen/multiboot.h>
 
+#include <asm/boot_info.h>
+#include <asm/e820.h>
 #include <asm/mbd.h>
 #include <asm/page.h>
 
-static multiboot_info_t mbi = {};
+struct boot_video_info {
+    u8  orig_x;             /* 0x00 */
+    u8  orig_y;             /* 0x01 */
+    u8  orig_video_mode;    /* 0x02 */
+    u8  orig_video_cols;    /* 0x03 */
+    u8  orig_video_lines;   /* 0x04 */
+    u8  orig_video_isVGA;   /* 0x05 */
+    u16 orig_video_points;  /* 0x06 */
+
+    /* VESA graphic mode -- linear frame buffer */
+    u32 capabilities;       /* 0x08 */
+    u16 lfb_linelength;     /* 0x0c */
+    u16 lfb_width;          /* 0x0e */
+    u16 lfb_height;         /* 0x10 */
+    u16 lfb_depth;          /* 0x12 */
+    u32 lfb_base;           /* 0x14 */
+    u32 lfb_size;           /* 0x18 */
+    u8  red_size;           /* 0x1c */
+    u8  red_pos;            /* 0x1d */
+    u8  green_size;         /* 0x1e */
+    u8  green_pos;          /* 0x1f */
+    u8  blue_size;          /* 0x20 */
+    u8  blue_pos;           /* 0x21 */
+    u8  rsvd_size;          /* 0x22 */
+    u8  rsvd_pos;           /* 0x23 */
+    u16 vesapm_seg;         /* 0x24 */
+    u16 vesapm_off;         /* 0x26 */
+    u16 vesa_attrib;        /* 0x28 */
+};
+
+/* These symbols live in the boot trampoline. Access via bootsym(). */
+extern struct e820entry e820map[];
+extern int e820nr;
+extern unsigned int lowmem_kb, highmem_kb;
+
+extern struct boot_video_info boot_vid_info;
+
+extern unsigned short boot_edid_caps;
+extern unsigned char boot_edid_info[128];
+
+extern struct edd_info boot_edd_info[];
+extern u8 boot_edd_info_nr;
+
+extern struct mbr_signature boot_mbr_signature[];
+extern u8 boot_mbr_signature_nr;
+
+static boot_info_t __read_mostly boot_info_mb = {
+    .boot_loader_name = "UNKNOWN",
+    .cmdline = NULL,
+    .mmap_type = NULL,
+    .mem_upper = 0,
+    .e820map_nr = 0,
+    .e820map = NULL,
+    .efi_mmap_size = 0,
+    .efi_mmap_desc_size = 0,
+    .efi_mmap = NULL,
+    .mps = EFI_INVALID_TABLE_ADDR,
+    .acpi = EFI_INVALID_TABLE_ADDR,
+    .acpi20 = EFI_INVALID_TABLE_ADDR,
+    .smbios = EFI_INVALID_TABLE_ADDR,
+    .efi_system_table = NULL,
+    .vga_console_info = {},
+    .edid_caps = 0,
+    .edid_info = NULL,
+    .edd_info_nr = 0,
+    .edd_info = NULL,
+    .mbr_signature_nr = 0,
+    .mbr_signature = NULL,
+    .mods_nr = 0,
+    .mods = NULL,
+    .warn_msg = NULL,
+    .err_msg = NULL
+};
+
+#define e820_raw bootsym(e820map)
+#define e820_raw_nr bootsym(e820nr)
 
 extern void enable_exception_support(void);
 
-unsigned long __init __init_boot_info(u32 mbd_ptr)
+static void __init init_mmap(boot_info_t *boot_info, mbd_t *mbd)
 {
-    mbd_t *mbd = __va(mbd_ptr);
+    int bytes = 0;
+    memory_map_t *map;
 
-    enable_exception_support();
+    if ( e820_raw_nr )
+        boot_info->mmap_type = "Xen-e820";
+    else if ( mbd->mmap_size )
+    {
+        boot_info->mmap_type = "Multiboot-e820";
+
+        while ( (bytes < mbd->mmap_size) && (e820_raw_nr < E820MAX) )
+        {
+            /*
+             * This is a gross workaround for a BIOS bug. Some bootloaders do
+             * not write e820 map entries into pre-zeroed memory. This is
+             * okay if the BIOS fills in all fields of the map entry, but
+             * some broken BIOSes do not bother to write the high word of
+             * the length field if the length is smaller than 4GB. We
+             * detect and fix this by flagging sections below 4GB that
+             * appear to be larger than 4GB in size.
+             */
+            map = __va(mbd->mmap + bytes);
+
+            if ( !map->base_addr_high && map->length_high )
+            {
+                map->length_high = 0;
+                boot_info->warn_msg = "WARNING: Buggy e820 map detected and fixed "
+                                "(truncated length fields).\n";
+            }
 
-    if ( mbd->boot_loader_name ) {
-        mbi.flags = MBI_LOADERNAME;
-        mbi.boot_loader_name = mbd->boot_loader_name;
+            e820_raw[e820_raw_nr].addr =
+                ((u64)map->base_addr_high << 32) | (u64)map->base_addr_low;
+            e820_raw[e820_raw_nr].size =
+                ((u64)map->length_high << 32) | (u64)map->length_low;
+            e820_raw[e820_raw_nr].type = map->type;
+            e820_raw_nr++;
+
+            bytes += map->size + 4;
+        }
+    }
+    else if ( bootsym(lowmem_kb) )
+    {
+        boot_info->mmap_type = "Xen-e801";
+
+        e820_raw[0].addr = 0;
+        e820_raw[0].size = bootsym(lowmem_kb) << 10;
+        e820_raw[0].type = E820_RAM;
+        e820_raw[1].addr = 0x100000;
+        e820_raw[1].size = bootsym(highmem_kb) << 10;
+        e820_raw[1].type = E820_RAM;
+        e820_raw_nr = 2;
     }
+    else if ( mbd->mem_lower || mbd->mem_upper )
+    {
+        boot_info->mmap_type = "Multiboot-e801";
 
-    if ( mbd->cmdline ) {
-        mbi.flags |= MBI_CMDLINE;
-        mbi.cmdline = mbd->cmdline;
+        e820_raw[0].addr = 0;
+        e820_raw[0].size = mbd->mem_lower << 10;
+        e820_raw[0].type = E820_RAM;
+        e820_raw[1].addr = 0x100000;
+        e820_raw[1].size = mbd->mem_upper << 10;
+        e820_raw[1].type = E820_RAM;
+        e820_raw_nr = 2;
     }
+    else
+    {
+        boot_info->err_msg = "Bootloader provided no memory information.\n";
+        return;
+    }
+
+    boot_info->mem_upper = mbd->mem_upper;
+
+    boot_info->e820map_nr = e820_raw_nr;
+    boot_info->e820map = e820_raw;
+}
+
+static void __init init_video_info(boot_info_t *boot_info)
+{
+    struct boot_video_info *bvi = &bootsym(boot_vid_info);
+
+    if ( (bvi->orig_video_isVGA == 1) && (bvi->orig_video_mode == 3) )
+    {
+        boot_info->vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
+        boot_info->vga_console_info.u.text_mode_3.font_height = bvi->orig_video_points;
+        boot_info->vga_console_info.u.text_mode_3.cursor_x = bvi->orig_x;
+        boot_info->vga_console_info.u.text_mode_3.cursor_y = bvi->orig_y;
+        boot_info->vga_console_info.u.text_mode_3.rows = bvi->orig_video_lines;
+        boot_info->vga_console_info.u.text_mode_3.columns = bvi->orig_video_cols;
+    }
+    else if ( bvi->orig_video_isVGA == 0x23 )
+    {
+        boot_info->vga_console_info.video_type = XEN_VGATYPE_VESA_LFB;
+        boot_info->vga_console_info.u.vesa_lfb.width = bvi->lfb_width;
+        boot_info->vga_console_info.u.vesa_lfb.height = bvi->lfb_height;
+        boot_info->vga_console_info.u.vesa_lfb.bytes_per_line = bvi->lfb_linelength;
+        boot_info->vga_console_info.u.vesa_lfb.bits_per_pixel = bvi->lfb_depth;
+        boot_info->vga_console_info.u.vesa_lfb.lfb_base = bvi->lfb_base;
+        boot_info->vga_console_info.u.vesa_lfb.lfb_size = bvi->lfb_size;
+        boot_info->vga_console_info.u.vesa_lfb.red_pos = bvi->red_pos;
+        boot_info->vga_console_info.u.vesa_lfb.red_size = bvi->red_size;
+        boot_info->vga_console_info.u.vesa_lfb.green_pos = bvi->green_pos;
+        boot_info->vga_console_info.u.vesa_lfb.green_size = bvi->green_size;
+        boot_info->vga_console_info.u.vesa_lfb.blue_pos = bvi->blue_pos;
+        boot_info->vga_console_info.u.vesa_lfb.blue_size = bvi->blue_size;
+        boot_info->vga_console_info.u.vesa_lfb.rsvd_pos = bvi->rsvd_pos;
+        boot_info->vga_console_info.u.vesa_lfb.rsvd_size = bvi->rsvd_size;
+        boot_info->vga_console_info.u.vesa_lfb.gbl_caps = bvi->capabilities;
+        boot_info->vga_console_info.u.vesa_lfb.mode_attrs = bvi->vesa_attrib;
+    }
+
+    boot_info->edid_caps = bootsym(boot_edid_caps);
+    boot_info->edid_info = bootsym(boot_edid_info);
+}
+
+boot_info_t __init *__init_boot_info(u32 mbd_ptr)
+{
+    mbd_t *mbd = __va(mbd_ptr);
+
+    enable_exception_support();
+
+    if ( mbd->boot_loader_name )
+        boot_info_mb.boot_loader_name = __va(mbd->boot_loader_name);
+
+    if ( mbd->cmdline )
+        boot_info_mb.cmdline = __va(mbd->cmdline);
+
+    init_mmap(&boot_info_mb, mbd);
+
+    if ( boot_info_mb.err_msg )
+        goto err;
+
+    init_video_info(&boot_info_mb);
 
-    mbi.flags |= MBI_MEMLIMITS;
-    mbi.mem_lower = mbd->mem_lower;
-    mbi.mem_upper = mbd->mem_upper;
+    boot_info_mb.edd_info_nr = bootsym(boot_edd_info_nr);
+    boot_info_mb.edd_info = bootsym(boot_edd_info);
 
-    mbi.flags |= MBI_MEMMAP;
-    mbi.mmap_length = mbd->mmap_size;
-    mbi.mmap_addr = mbd->mmap;
+    boot_info_mb.mbr_signature_nr = bootsym(boot_mbr_signature_nr);
+    boot_info_mb.mbr_signature = bootsym(boot_mbr_signature);
 
-    mbi.flags |= MBI_MODULES;
-    mbi.mods_count = mbd->mods_nr;
-    mbi.mods_addr = mbd->mods;
+    boot_info_mb.mods_nr = mbd->mods_nr;
+    boot_info_mb.mods = __va(mbd->mods);
 
-    return __pa(&mbi);
+err:
+    return &boot_info_mb;
 }
diff --git a/xen/arch/x86/dmi_scan.c b/xen/arch/x86/dmi_scan.c
index 500133a..a8153b3 100644
--- a/xen/arch/x86/dmi_scan.c
+++ b/xen/arch/x86/dmi_scan.c
@@ -12,6 +12,7 @@
 #include <xen/efi.h>
 #include <xen/pci.h>
 #include <xen/pci_regs.h>
+#include <asm/boot_info.h>
 
 #define bt_ioremap(b,l)  ((void *)__acpi_map_table(b,l))
 #define bt_iounmap(b,l)  ((void)0)
@@ -215,10 +216,10 @@ static int __init dmi_efi_iterate(void (*decode)(struct dmi_header *))
 	const struct smbios_eps __iomem *p;
 	int ret = -1;
 
-	if (efi.smbios == EFI_INVALID_TABLE_ADDR)
+	if (boot_info->smbios == EFI_INVALID_TABLE_ADDR)
 		return -1;
 
-	p = bt_ioremap(efi.smbios, sizeof(eps));
+	p = bt_ioremap(boot_info->smbios, sizeof(eps));
 	if (!p)
 		return -1;
 	memcpy_fromio(&eps, p, sizeof(eps));
@@ -227,7 +228,7 @@ static int __init dmi_efi_iterate(void (*decode)(struct dmi_header *))
 	if (memcmp(eps.anchor, "_SM_", 4))
 		return -1;
 
-	p = bt_ioremap(efi.smbios, eps.length);
+	p = bt_ioremap(boot_info->smbios, eps.length);
 	if (!p)
 		return -1;
 	if (dmi_checksum(p, eps.length) &&
diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
index d4473c1..e35260b 100644
--- a/xen/arch/x86/domain_build.c
+++ b/xen/arch/x86/domain_build.c
@@ -751,9 +751,9 @@ static __init void setup_pv_physmap(struct domain *d, unsigned long pgtbl_pfn,
 
 int __init construct_dom0(
     struct domain *d,
-    const module_t *image, unsigned long image_headroom,
-    module_t *initrd,
-    void *(*bootstrap_map)(const module_t *),
+    const boot_module_t *image, unsigned long image_headroom,
+    boot_module_t *initrd,
+    void *(*bootstrap_map)(const boot_module_t *),
     char *cmdline)
 {
     int i, cpu, rc, compatible, compat32, order, machine;
@@ -770,9 +770,9 @@ int __init construct_dom0(
     struct vcpu *v = d->vcpu[0];
     unsigned long long value;
     char *image_base = bootstrap_map(image);
-    unsigned long image_len = image->mod_end;
+    unsigned long image_len = image->end;
     char *image_start = image_base + image_headroom;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    unsigned long initrd_len = initrd ? initrd->end : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -987,7 +987,7 @@ int __init construct_dom0(
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      d->tot_pages;
-        initrd_mfn = mfn = initrd->mod_start;
+        initrd_mfn = mfn = initrd->start;
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
@@ -1002,12 +1002,12 @@ int __init construct_dom0(
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
+            memcpy(page_to_virt(page), mfn_to_virt(initrd->start),
                    initrd_len);
-            mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+            mpt_alloc = (paddr_t)initrd->start << PAGE_SHIFT;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-            initrd->mod_start = initrd_mfn = page_to_mfn(page);
+            initrd->start = initrd_mfn = page_to_mfn(page);
         }
         else
         {
@@ -1015,7 +1015,7 @@ int __init construct_dom0(
                 if ( assign_pages(d, mfn_to_page(mfn++), 0, 0) )
                     BUG();
         }
-        initrd->mod_end = 0;
+        initrd->end = 0;
     }
 
     printk("PHYSICAL MEMORY ARRANGEMENT:\n"
@@ -1026,7 +1026,7 @@ int __init construct_dom0(
                nr_pages - d->tot_pages);
     if ( initrd )
     {
-        mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+        mpt_alloc = (paddr_t)initrd->start << PAGE_SHIFT;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -1281,7 +1281,7 @@ int __init construct_dom0(
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = initrd->mod_start + (pfn - initrd_pfn);
+                mfn = initrd->start + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c
index 3bdc158..417ed5e 100644
--- a/xen/arch/x86/efi/boot.c
+++ b/xen/arch/x86/efi/boot.c
@@ -9,7 +9,6 @@
 #include <xen/keyhandler.h>
 #include <xen/lib.h>
 #include <xen/mm.h>
-#include <xen/multiboot.h>
 #include <xen/pci_regs.h>
 #include <xen/pfn.h>
 #if EFI_PAGE_SIZE != PAGE_SIZE
@@ -17,7 +16,7 @@
 #endif
 #include <xen/string.h>
 #include <xen/stringify.h>
-#include <xen/vga.h>
+#include <xen/video.h>
 #include <asm/e820.h>
 #include <asm/edd.h>
 #define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */
@@ -25,6 +24,7 @@
 #undef __ASSEMBLY__
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <asm/boot_info.h>
 
 /* Using SetVirtualAddressMap() is incompatible with kexec: */
 #undef USE_SET_VIRTUAL_ADDRESS_MAP
@@ -72,13 +72,12 @@ static struct file __initdata ramdisk;
 static struct file __initdata ucode;
 static struct file __initdata xsm;
 
-static multiboot_info_t __initdata mbi = {
-    .flags = MBI_MODULES | MBI_LOADERNAME
-};
-static module_t __initdata mb_modules[3];
-
 static CHAR16 __initdata newline[] = L"\r\n";
 
+extern unsigned short boot_edid_caps;
+
+extern boot_info_t __read_mostly boot_info_efi;
+
 #define PrintStr(s) StdOut->OutputString(StdOut, s)
 #define PrintErr(s) StdErr->OutputString(StdErr, s)
 
@@ -255,14 +254,14 @@ static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
     blexit(mesg);
 }
 
-static void __init place_string(u32 *addr, const char *s)
+static void __init place_string_char(char **addr, const char *s)
 {
     static char *__initdata alloc = start;
 
     if ( s && *s )
     {
         size_t len1 = strlen(s) + 1;
-        const char *old = (char *)(long)*addr;
+        const char *old = *addr;
         size_t len2 = *addr ? strlen(old) + 1 : 0;
 
         alloc -= len1 + len2;
@@ -278,7 +277,16 @@ static void __init place_string(u32 *addr, const char *s)
             memcpy(alloc + len1, old, len2);
         }
     }
-    *addr = (long)alloc;
+    *addr = alloc;
+}
+
+static void __init place_string_u32(u32 *addr, const char *s)
+{
+    char *s_new = (char *)(long)*addr;
+
+    place_string_char(&s_new, s);
+
+    *addr = (long)s_new;
 }
 
 static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
@@ -311,7 +319,7 @@ static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv,
                 union string rest = { .w = cmdline };
 
                 --argv;
-                place_string(&mbi.cmdline, w2s(&rest));
+                place_string_char(&boot_info_efi.cmdline, w2s(&rest));
                 break;
             }
             else
@@ -480,9 +488,9 @@ static bool_t __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
             PrintStr(L"-");
             DisplayUint(file->addr + size, 2 * sizeof(file->addr));
             PrintStr(newline);
-            mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
-            mb_modules[mbi.mods_count].mod_end = size;
-            ++mbi.mods_count;
+            boot_info_efi.mods[boot_info_efi.mods_nr].start = file->addr >> PAGE_SHIFT;
+            boot_info_efi.mods[boot_info_efi.mods_nr].end = size;
+            ++boot_info_efi.mods_nr;
         }
 
         file->size = size;
@@ -568,7 +576,7 @@ static void __init split_value(char *s)
 {
     while ( *s && isspace(*s) )
         ++s;
-    place_string(&mb_modules[mbi.mods_count].string, s);
+    place_string_u32(&boot_info_efi.mods[boot_info_efi.mods_nr].cmdline, s);
     while ( *s && !isspace(*s) )
         ++s;
     *s = 0;
@@ -884,10 +892,10 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     if ( StdOut->QueryMode(StdOut, StdOut->Mode->Mode,
                            &cols, &rows) == EFI_SUCCESS )
     {
-        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
-        vga_console_info.u.text_mode_3.columns = cols;
-        vga_console_info.u.text_mode_3.rows = rows;
-        vga_console_info.u.text_mode_3.font_height = 16;
+        boot_info_efi.vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
+        boot_info_efi.vga_console_info.u.text_mode_3.columns = cols;
+        boot_info_efi.vga_console_info.u.text_mode_3.rows = rows;
+        boot_info_efi.vga_console_info.u.text_mode_3.font_height = 16;
     }
 
     size = 0;
@@ -984,7 +992,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
         name.s = get_value(&cfg, "global", "ucode");
     if ( name.s )
     {
-        microcode_set_module(mbi.mods_count);
+        microcode_set_module(boot_info_efi.mods_nr);
         split_value(name.s);
         read_file(dir_handle, s2w(&name), &ucode);
         efi_bs->FreePool(name.w);
@@ -1000,7 +1008,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
 
     name.s = get_value(&cfg, section.s, "options");
     if ( name.s )
-        place_string(&mbi.cmdline, name.s);
+        place_string_char(&boot_info_efi.cmdline, name.s);
     /* Insert image name last, as it gets prefixed to the other options. */
     if ( argc )
     {
@@ -1009,7 +1017,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     }
     else
         name.s = "xen";
-    place_string(&mbi.cmdline, name.s);
+    place_string_char(&boot_info_efi.cmdline, name.s);
 
     cols = rows = depth = 0;
     if ( !base_video )
@@ -1075,16 +1083,10 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
         }
     }
 
-    if ( mbi.cmdline )
-        mbi.flags |= MBI_CMDLINE;
-    /*
-     * These must not be initialized statically, since the value must
-     * not get relocated when processing base relocations below.
-     */
-    mbi.boot_loader_name = (long)"EFI";
-    mbi.mods_addr = (long)mb_modules;
+    boot_info_efi.efi_system_table = SystemTable;
+    boot_info_efi.edid_caps = boot_edid_caps;
 
-    place_string(&mbi.mem_upper, NULL);
+    place_string_u32(&boot_info_efi.mem_upper, NULL);
 
     /* Collect EDD info. */
     BUILD_BUG_ON(offsetof(struct edd_info, edd_device_params) != EDDEXTSIZE);
@@ -1102,7 +1104,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     {
         EFI_BLOCK_IO *bio;
         EFI_DEV_PATH_PTR devp;
-        struct edd_info *info = boot_edd_info + boot_edd_info_nr;
+        struct edd_info *info = boot_info_efi.edd_info + boot_info_efi.edd_info_nr;
         struct edd_device_params *params = &info->edd_device_params;
         enum { root, acpi, pci, ctrlr } state = root;
 
@@ -1111,16 +1113,16 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
              bio->Media->RemovableMedia ||
              bio->Media->LogicalPartition )
             continue;
-        if ( boot_edd_info_nr < EDD_INFO_MAX )
+        if ( boot_info_efi.edd_info_nr < EDD_INFO_MAX )
         {
-            info->device = 0x80 + boot_edd_info_nr; /* fake */
+            info->device = 0x80 + boot_info_efi.edd_info_nr; /* fake */
             info->version = 0x11;
             params->length = offsetof(struct edd_device_params, dpte_ptr);
             params->number_of_sectors = bio->Media->LastBlock + 1;
             params->bytes_per_sector = bio->Media->BlockSize;
             params->dpte_ptr = ~0;
         }
-        ++boot_edd_info_nr;
+        ++boot_info_efi.edd_info_nr;
         status = efi_bs->HandleProtocol(handles[i], &devp_guid,
                                         (void **)&devp);
         if ( EFI_ERROR(status) )
@@ -1133,7 +1135,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
                 const u8 *p;
 
             case ACPI_DEVICE_PATH:
-                if ( state != root || boot_edd_info_nr > EDD_INFO_MAX )
+                if ( state != root || boot_info_efi.edd_info_nr > EDD_INFO_MAX )
                     break;
                 switch ( DevicePathSubType(devp.DevPath) )
                 {
@@ -1152,7 +1154,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             case HARDWARE_DEVICE_PATH:
                 if ( state != acpi ||
                      DevicePathSubType(devp.DevPath) != HW_PCI_DP ||
-                     boot_edd_info_nr > EDD_INFO_MAX )
+                     boot_info_efi.edd_info_nr > EDD_INFO_MAX )
                     break;
                 state = pci;
                 edd_put_string(params->host_bus_type, "PCI");
@@ -1160,7 +1162,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
                 params->interface_path.pci.function = devp.Pci->Function;
                 break;
             case MESSAGING_DEVICE_PATH:
-                if ( state != pci || boot_edd_info_nr > EDD_INFO_MAX )
+                if ( state != pci || boot_info_efi.edd_info_nr > EDD_INFO_MAX )
                     break;
                 state = ctrlr;
                 switch ( DevicePathSubType(devp.DevPath) )
@@ -1209,15 +1211,15 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             case MEDIA_DEVICE_PATH:
                 if ( DevicePathSubType(devp.DevPath) == MEDIA_HARDDRIVE_DP &&
                      devp.HardDrive->MBRType == MBR_TYPE_PCAT &&
-                     boot_mbr_signature_nr < EDD_MBR_SIG_MAX )
+                     boot_info_efi.mbr_signature_nr < EDD_MBR_SIG_MAX )
                 {
-                    struct mbr_signature *sig = boot_mbr_signature +
-                                                boot_mbr_signature_nr;
+                    struct mbr_signature *sig = boot_info_efi.mbr_signature +
+                                                boot_info_efi.mbr_signature_nr;
 
-                    sig->device = 0x80 + boot_edd_info_nr; /* fake */
+                    sig->device = 0x80 + boot_info_efi.edd_info_nr; /* fake */
                     memcpy(&sig->signature, devp.HardDrive->Signature,
                            sizeof(sig->signature));
-                    ++boot_mbr_signature_nr;
+                    ++boot_info_efi.mbr_signature_nr;
                 }
                 break;
             }
@@ -1225,8 +1227,8 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     }
     if ( handles )
         efi_bs->FreePool(handles);
-    if ( boot_edd_info_nr > EDD_INFO_MAX )
-        boot_edd_info_nr = EDD_INFO_MAX;
+    if ( boot_info_efi.edd_info_nr > EDD_INFO_MAX )
+        boot_info_efi.edd_info_nr = EDD_INFO_MAX;
 
     /* XXX Collect EDID info. */
 
@@ -1245,17 +1247,17 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
         static EFI_GUID __initdata smbios_guid = SMBIOS_TABLE_GUID;
 
         if ( match_guid(&acpi2_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi20 = (long)efi_ct[i].VendorTable;
+	       boot_info_efi.acpi20 = (paddr_t)efi_ct[i].VendorTable;
         if ( match_guid(&acpi_guid, &efi_ct[i].VendorGuid) )
-	       efi.acpi = (long)efi_ct[i].VendorTable;
+	       boot_info_efi.acpi = (paddr_t)efi_ct[i].VendorTable;
         if ( match_guid(&mps_guid, &efi_ct[i].VendorGuid) )
-	       efi.mps = (long)efi_ct[i].VendorTable;
+	       boot_info_efi.mps = (paddr_t)efi_ct[i].VendorTable;
         if ( match_guid(&smbios_guid, &efi_ct[i].VendorGuid) )
-	       efi.smbios = (long)efi_ct[i].VendorTable;
+	       boot_info_efi.smbios = (paddr_t)efi_ct[i].VendorTable;
     }
 
-    if (efi.smbios != EFI_INVALID_TABLE_ADDR)
-        dmi_efi_get_table((void *)(long)efi.smbios);
+    if (boot_info_efi.smbios != EFI_INVALID_TABLE_ADDR)
+        dmi_efi_get_table((void *)boot_info_efi.smbios);
 
     /* Collect PCI ROM contents. */
     setup_efi_pci();
@@ -1322,40 +1324,40 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             switch ( mode_info->PixelFormat )
             {
             case PixelRedGreenBlueReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 0;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 16;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.red_pos = 0;
+                boot_info_efi.vga_console_info.u.vesa_lfb.red_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.green_pos = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.green_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.blue_pos = 16;
+                boot_info_efi.vga_console_info.u.vesa_lfb.blue_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_size = 8;
                 bpp = 32;
                 break;
             case PixelBlueGreenRedReserved8BitPerColor:
-                vga_console_info.u.vesa_lfb.red_pos = 16;
-                vga_console_info.u.vesa_lfb.red_size = 8;
-                vga_console_info.u.vesa_lfb.green_pos = 8;
-                vga_console_info.u.vesa_lfb.green_size = 8;
-                vga_console_info.u.vesa_lfb.blue_pos = 0;
-                vga_console_info.u.vesa_lfb.blue_size = 8;
-                vga_console_info.u.vesa_lfb.rsvd_pos = 24;
-                vga_console_info.u.vesa_lfb.rsvd_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.red_pos = 16;
+                boot_info_efi.vga_console_info.u.vesa_lfb.red_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.green_pos = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.green_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.blue_pos = 0;
+                boot_info_efi.vga_console_info.u.vesa_lfb.blue_size = 8;
+                boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_pos = 24;
+                boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_size = 8;
                 bpp = 32;
                 break;
             case PixelBitMask:
                 bpp = set_color(mode_info->PixelInformation.RedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.red_pos,
-                                &vga_console_info.u.vesa_lfb.red_size);
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.red_pos,
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.red_size);
                 bpp = set_color(mode_info->PixelInformation.GreenMask, bpp,
-                                &vga_console_info.u.vesa_lfb.green_pos,
-                                &vga_console_info.u.vesa_lfb.green_size);
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.green_pos,
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.green_size);
                 bpp = set_color(mode_info->PixelInformation.BlueMask, bpp,
-                                &vga_console_info.u.vesa_lfb.blue_pos,
-                                &vga_console_info.u.vesa_lfb.blue_size);
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.blue_pos,
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.blue_size);
                 bpp = set_color(mode_info->PixelInformation.ReservedMask, bpp,
-                                &vga_console_info.u.vesa_lfb.rsvd_pos,
-                                &vga_console_info.u.vesa_lfb.rsvd_size);
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_pos,
+                                &boot_info_efi.vga_console_info.u.vesa_lfb.rsvd_size);
                 if ( bpp > 0 )
                     break;
                 /* fall through */
@@ -1366,37 +1368,37 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             }
         if ( !EFI_ERROR(status) )
         {
-            vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
-            vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
-            vga_console_info.u.vesa_lfb.width =
+            boot_info_efi.vga_console_info.video_type = XEN_VGATYPE_EFI_LFB;
+            boot_info_efi.vga_console_info.u.vesa_lfb.gbl_caps = 2; /* possibly non-VGA */
+            boot_info_efi.vga_console_info.u.vesa_lfb.width =
                 mode_info->HorizontalResolution;
-            vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
-            vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
-            vga_console_info.u.vesa_lfb.bytes_per_line =
+            boot_info_efi.vga_console_info.u.vesa_lfb.height = mode_info->VerticalResolution;
+            boot_info_efi.vga_console_info.u.vesa_lfb.bits_per_pixel = bpp;
+            boot_info_efi.vga_console_info.u.vesa_lfb.bytes_per_line =
                 (mode_info->PixelsPerScanLine * bpp + 7) >> 3;
-            vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
-            vga_console_info.u.vesa_lfb.lfb_size =
+            boot_info_efi.vga_console_info.u.vesa_lfb.lfb_base = gop->Mode->FrameBufferBase;
+            boot_info_efi.vga_console_info.u.vesa_lfb.lfb_size =
                 (gop->Mode->FrameBufferSize + 0xffff) >> 16;
         }
     }
 
-    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
-                         &efi_mdesc_size, &mdesc_ver);
-    mbi.mem_upper -= efi_memmap_size;
-    mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
-    if ( mbi.mem_upper < xen_phys_start )
-        blexit(L"Out of static memory");
-    efi_memmap = (void *)(long)mbi.mem_upper;
-    status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
-                                  &efi_mdesc_size, &mdesc_ver);
+    efi_bs->GetMemoryMap(&boot_info_efi.efi_mmap_size, NULL, &map_key,
+			 &boot_info_efi.efi_mmap_desc_size, &mdesc_ver);
+    boot_info_efi.mem_upper -= boot_info_efi.efi_mmap_size;
+    boot_info_efi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
+    if ( boot_info_efi.mem_upper < xen_phys_start )
+        blexit(L"Out of static memory\r\n");
+    boot_info_efi.efi_mmap = (void *)(long)boot_info_efi.mem_upper;
+    status = efi_bs->GetMemoryMap(&boot_info_efi.efi_mmap_size, boot_info_efi.efi_mmap, &map_key,
+                                  &boot_info_efi.efi_mmap_desc_size, &mdesc_ver);
     if ( EFI_ERROR(status) )
         PrintErrMesg(L"Cannot obtain memory map", status);
 
     /* Populate E820 table and check trampoline area availability. */
-    e = e820map - 1;
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    e = boot_info_efi.e820map - 1;
+    for ( i = 0; i < boot_info_efi.efi_mmap_size; i += boot_info_efi.efi_mmap_desc_size )
     {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        EFI_MEMORY_DESCRIPTOR *desc = boot_info_efi.efi_mmap + i;
         u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
         u32 type;
 
@@ -1427,10 +1429,10 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             type = E820_NVS;
             break;
         }
-        if ( e820nr && type == e->type &&
+        if ( boot_info_efi.e820map_nr && type == e->type &&
              desc->PhysicalStart == e->addr + e->size )
             e->size += len;
-        else if ( !len || e820nr >= E820MAX )
+        else if ( !len || boot_info_efi.e820map_nr >= E820MAX )
             continue;
         else
         {
@@ -1438,7 +1440,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             e->addr = desc->PhysicalStart;
             e->size = len;
             e->type = type;
-            ++e820nr;
+            ++boot_info_efi.e820map_nr;
         }
     }
     if ( !trampoline_phys )
@@ -1457,7 +1459,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
 #ifdef USE_SET_VIRTUAL_ADDRESS_MAP
     efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
 #endif
-    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
+    boot_info_efi.efi_mmap = (void *)boot_info_efi.efi_mmap + DIRECTMAP_VIRT_START;
     efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
 
     relocate_image(__XEN_VIRT_START - xen_phys_start);
@@ -1491,7 +1493,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
                      [cs] "ir" (__HYPERVISOR_CS),
                      [ds] "r" (__HYPERVISOR_DS),
                      [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)),
-                     "D" (&mbi)
+                     "D" (&boot_info_efi)
                    : "memory" );
     for( ; ; ); /* not reached */
 }
@@ -1557,9 +1559,9 @@ void __init efi_init_memory(void)
 #endif
 
     printk(XENLOG_INFO "EFI memory map:\n");
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    for ( i = 0; i < boot_info_efi.efi_mmap_size; i += boot_info_efi.efi_mmap_desc_size )
     {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        EFI_MEMORY_DESCRIPTOR *desc = boot_info_efi.efi_mmap + i;
         u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
         unsigned long smfn, emfn;
         unsigned int prot = PAGE_HYPERVISOR;
@@ -1634,8 +1636,8 @@ void __init efi_init_memory(void)
     }
 
 #ifdef USE_SET_VIRTUAL_ADDRESS_MAP
-    efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
-                                 mdesc_ver, efi_memmap);
+    efi_rs->SetVirtualAddressMap(boot_info_efi.efi_mmap_size, boot_info_efi.efi_mmap_desc_size,
+                                 mdesc_ver, boot_info_efi.efi_mmap);
 #else
     /* Set up 1:1 page tables to do runtime calls in "physical" mode. */
     efi_l4_pgtable = alloc_xen_pagetable();
@@ -1645,9 +1647,9 @@ void __init efi_init_memory(void)
     copy_mapping(0, max_page, ram_range_valid);
 
     /* Insert non-RAM runtime mappings inside the direct map. */
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    for ( i = 0; i < boot_info_efi.efi_mmap_size; i += boot_info_efi.efi_mmap_desc_size )
     {
-        const EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        const EFI_MEMORY_DESCRIPTOR *desc = boot_info_efi.efi_mmap + i;
 
         if ( (desc->Attribute & EFI_MEMORY_RUNTIME) &&
              desc->VirtualStart != INVALID_VIRTUAL_ADDRESS &&
diff --git a/xen/arch/x86/efi/efi.h b/xen/arch/x86/efi/efi.h
index a80d5f1..46099de 100644
--- a/xen/arch/x86/efi/efi.h
+++ b/xen/arch/x86/efi/efi.h
@@ -25,9 +25,6 @@ extern const CHAR16 *efi_fw_vendor;
 
 extern EFI_RUNTIME_SERVICES *efi_rs;
 
-extern UINTN efi_memmap_size, efi_mdesc_size;
-extern void *efi_memmap;
-
 extern l4_pgentry_t *efi_l4_pgtable;
 
 extern const struct efi_pci_rom *efi_pci_roms;
diff --git a/xen/arch/x86/efi/runtime.c b/xen/arch/x86/efi/runtime.c
index 166852d..b56332f 100644
--- a/xen/arch/x86/efi/runtime.c
+++ b/xen/arch/x86/efi/runtime.c
@@ -5,6 +5,7 @@
 #include <xen/irq.h>
 #include <xen/time.h>
 #include <asm/mc146818rtc.h>
+#include <asm/boot_info.h>
 
 DEFINE_XEN_GUEST_HANDLE(CHAR16);
 
@@ -26,25 +27,50 @@ const CHAR16 *__read_mostly efi_fw_vendor;
 EFI_RUNTIME_SERVICES *__read_mostly efi_rs;
 static DEFINE_SPINLOCK(efi_rs_lock);
 
-UINTN __read_mostly efi_memmap_size;
-UINTN __read_mostly efi_mdesc_size;
-void *__read_mostly efi_memmap;
-
 UINT64 __read_mostly efi_boot_max_var_store_size;
 UINT64 __read_mostly efi_boot_remain_var_store_size;
 UINT64 __read_mostly efi_boot_max_var_size;
 
-struct efi __read_mostly efi = {
-	.acpi   = EFI_INVALID_TABLE_ADDR,
-	.acpi20 = EFI_INVALID_TABLE_ADDR,
-	.mps    = EFI_INVALID_TABLE_ADDR,
-	.smbios = EFI_INVALID_TABLE_ADDR,
-};
-
 l4_pgentry_t *__read_mostly efi_l4_pgtable;
 
 const struct efi_pci_rom *__read_mostly efi_pci_roms;
 
+extern struct e820entry e820map[];
+extern struct edd_info boot_edd_info[];
+extern struct mbr_signature boot_mbr_signature[];
+
+extern unsigned char boot_edid_info[128];
+
+static boot_module_t __read_mostly boot_info_mods[3] = {};
+
+boot_info_t __read_mostly boot_info_efi = {
+    .boot_loader_name = "EFI",
+    .cmdline = NULL,
+    .mmap_type = "EFI",
+    .mem_upper = 0,
+    .e820map_nr = 0,
+    .e820map = e820map,
+    .efi_mmap_size = 0,
+    .efi_mmap_desc_size = 0,
+    .efi_mmap = NULL,
+    .mps = EFI_INVALID_TABLE_ADDR,
+    .acpi = EFI_INVALID_TABLE_ADDR,
+    .acpi20 = EFI_INVALID_TABLE_ADDR,
+    .smbios = EFI_INVALID_TABLE_ADDR,
+    .efi_system_table = NULL,
+    .vga_console_info = {},
+    .edid_caps = 0,
+    .edid_info = boot_edid_info,
+    .edd_info_nr = 0,
+    .edd_info = boot_edd_info,
+    .mbr_signature_nr = 0,
+    .mbr_signature = boot_mbr_signature,
+    .mods_nr = 0,
+    .mods = boot_info_mods,
+    .warn_msg = NULL,
+    .err_msg = NULL
+};
+
 unsigned long efi_rs_enter(void)
 {
     static const u16 fcw = FCW_DEFAULT;
@@ -173,9 +199,9 @@ int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
         }
         break;
     case XEN_FW_EFI_MEM_INFO:
-        for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+        for ( i = 0; i < boot_info->efi_mmap_size; i += boot_info->efi_mmap_desc_size )
         {
-            EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+            EFI_MEMORY_DESCRIPTOR *desc = boot_info->efi_mmap + i;
             u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT;
 
             if ( info->mem.addr >= desc->PhysicalStart &&
diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c
index 091d5d1..0293eba 100644
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode.c
@@ -40,8 +40,8 @@
 #include <asm/setup.h>
 #include <asm/microcode.h>
 
-static module_t __initdata ucode_mod;
-static void *(*__initdata ucode_mod_map)(const module_t *);
+static boot_module_t __initdata ucode_mod;
+static void *(*__initdata ucode_mod_map)(const boot_module_t *);
 static signed int __initdata ucode_mod_idx;
 static bool_t __initdata ucode_mod_forced;
 static cpumask_t __initdata init_mask;
@@ -94,10 +94,9 @@ custom_param("ucode", parse_ucode);
 
 void __init microcode_scan_module(
     unsigned long *module_map,
-    const multiboot_info_t *mbi,
-    void *(*bootmap)(const module_t *))
+    const boot_info_t *boot_info,
+    void *(*bootmap)(const boot_module_t *))
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
@@ -119,13 +118,13 @@ void __init microcode_scan_module(
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
-    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
+    for ( i = 1 /* Ignore dom0 kernel */; i < boot_info->mods_nr; i++ )
     {
         if ( !test_bit(i, module_map) )
             continue;
 
-        _blob_start = bootmap(&mod[i]);
-        _blob_size = mod[i].mod_end;
+        _blob_start = bootmap(&boot_info->mods[i]);
+        _blob_size = boot_info->mods[i].end;
         if ( !_blob_start )
         {
             printk("Could not map multiboot module #%d (size: %ld)\n",
@@ -165,21 +164,19 @@ err:
 }
 void __init microcode_grab_module(
     unsigned long *module_map,
-    const multiboot_info_t *mbi,
-    void *(*map)(const module_t *))
+    const boot_info_t *boot_info,
+    void *(*map)(const boot_module_t *))
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
-
     if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += mbi->mods_count;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
+        ucode_mod_idx += boot_info->mods_nr;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= boot_info->mods_nr ||
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
-    ucode_mod = mod[ucode_mod_idx];
+    ucode_mod = boot_info->mods[ucode_mod_idx];
     ucode_mod_map = map;
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, mbi, map);
+        microcode_scan_module(module_map, boot_info, map);
 }
 
 const struct microcode_ops *microcode_ops;
@@ -345,7 +342,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
 static void __init _do_microcode_update(unsigned long data)
 {
     void *_data = (void *)data;
-    size_t len = ucode_blob.size ? ucode_blob.size : ucode_mod.mod_end;
+    size_t len = ucode_blob.size ? ucode_blob.size : ucode_mod.end;
 
     microcode_update_cpu(_data, len);
     cpumask_set_cpu(smp_processor_id(), &init_mask);
@@ -360,7 +357,7 @@ static int __init microcode_init(void)
     if ( !microcode_ops )
         return 0;
 
-    if ( !ucode_mod.mod_end && !ucode_blob.size )
+    if ( !ucode_mod.end && !ucode_blob.size )
         return 0;
 
     data = ucode_blob.size ? ucode_blob.data : ucode_mod_map(&ucode_mod);
@@ -414,7 +411,7 @@ static int __init microcode_presmp_init(void)
 {
     if ( microcode_ops )
     {
-        if ( ucode_mod.mod_end || ucode_blob.size )
+        if ( ucode_mod.end || ucode_blob.size )
         {
             void *data;
             size_t len;
@@ -427,7 +424,7 @@ static int __init microcode_presmp_init(void)
             }
             else
             {
-                len = ucode_mod.mod_end;
+                len = ucode_mod.end;
                 data = ucode_mod_map(&ucode_mod);
             }
             if ( data )
@@ -447,7 +444,7 @@ static int __init microcode_presmp_init(void)
                     ucode_blob.data = NULL;
                 }
                 else
-                    ucode_mod.mod_end = 0;
+                    ucode_mod.end = 0;
             }
         }
 
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index a38e016..54eb357 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -29,6 +29,7 @@
 #include <asm/mpspec.h>
 #include <asm/io_apic.h>
 #include <asm/setup.h>
+#include <asm/boot_info.h>
 
 #include <mach_apic.h>
 #include <mach_mpparse.h>
@@ -676,18 +677,18 @@ static void __init efi_check_config(void)
 {
 	struct intel_mp_floating *mpf;
 
-	if (efi.mps == EFI_INVALID_TABLE_ADDR)
+	if (boot_info->mps == EFI_INVALID_TABLE_ADDR)
 		return;
 
-	__set_fixmap(FIX_EFI_MPF, PFN_DOWN(efi.mps), __PAGE_HYPERVISOR);
-	mpf = (void *)fix_to_virt(FIX_EFI_MPF) + ((long)efi.mps & (PAGE_SIZE-1));
+	__set_fixmap(FIX_EFI_MPF, PFN_DOWN(boot_info->mps), __PAGE_HYPERVISOR);
+	mpf = (void *)fix_to_virt(FIX_EFI_MPF) + ((long)boot_info->mps & (PAGE_SIZE-1));
 
 	if (memcmp(mpf->mpf_signature, "_MP_", 4) == 0 &&
 	    mpf->mpf_length == 1 &&
 	    mpf_checksum((void *)mpf, 16) &&
 	    (mpf->mpf_specification == 1 || mpf->mpf_specification == 4)) {
 		smp_found_config = 1;
-		printk(KERN_INFO "SMP MP-table at %08lx\n", efi.mps);
+		printk(KERN_INFO "SMP MP-table at %08lx\n", boot_info->mps);
 		mpf_found = mpf;
 	}
 	else
diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c
index 2162811..db31b09 100644
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -30,6 +30,7 @@
 #include <asm/mtrr.h>
 #include <asm/io_apic.h>
 #include <asm/setup.h>
+#include <asm/boot_info.h>
 #include "cpu/mtrr/mtrr.h"
 #include <xsm/xsm.h>
 
@@ -208,10 +209,10 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op)
             u16 length;
 
             ret = -ESRCH;
-            if ( op->u.firmware_info.index >= bootsym(boot_edd_info_nr) )
+            if ( op->u.firmware_info.index >= boot_info->edd_info_nr )
                 break;
 
-            info = bootsym(boot_edd_info) + op->u.firmware_info.index;
+            info = boot_info->edd_info + op->u.firmware_info.index;
 
             /* Transfer the EDD info block. */
             ret = -EFAULT;
@@ -247,10 +248,10 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op)
             const struct mbr_signature *sig;
 
             ret = -ESRCH;
-            if ( op->u.firmware_info.index >= bootsym(boot_mbr_signature_nr) )
+            if ( op->u.firmware_info.index >= boot_info->mbr_signature_nr )
                 break;
 
-            sig = bootsym(boot_mbr_signature) + op->u.firmware_info.index;
+            sig = boot_info->mbr_signature + op->u.firmware_info.index;
 
             op->u.firmware_info.u.disk_mbr_signature.device = sig->device;
             op->u.firmware_info.u.disk_mbr_signature.mbr_signature =
@@ -265,13 +266,11 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op)
             ret = -ESRCH;
             if ( op->u.firmware_info.index != 0 )
                 break;
-            if ( *(u32 *)bootsym(boot_edid_info) == 0x13131313 )
+            if ( *(u32 *)boot_info->edid_info == 0x13131313 )
                 break;
 
-            op->u.firmware_info.u.vbeddc_info.capabilities =
-                bootsym(boot_edid_caps);
-            op->u.firmware_info.u.vbeddc_info.edid_transfer_time =
-                bootsym(boot_edid_caps) >> 8;
+            op->u.firmware_info.u.vbeddc_info.capabilities = boot_info->edid_caps;
+            op->u.firmware_info.u.vbeddc_info.edid_transfer_time = boot_info->edid_caps >> 8;
 
             ret = 0;
             if ( __copy_field_to_guest(u_xenpf_op, op, u.firmware_info.
@@ -279,7 +278,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op)
                  __copy_field_to_guest(u_xenpf_op, op, u.firmware_info.
                                        u.vbeddc_info.edid_transfer_time) ||
                  copy_to_compat(op->u.firmware_info.u.vbeddc_info.edid,
-                                bootsym(boot_edid_info), 128) )
+                                boot_info->edid_info, 128) )
                 ret = -EFAULT;
             break;
         case XEN_FW_EFI_INFO:
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 9391efa..00d30a5 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -12,7 +12,6 @@
 #include <xen/console.h>
 #include <xen/serial.h>
 #include <xen/trace.h>
-#include <xen/multiboot.h>
 #include <xen/domain_page.h>
 #include <xen/version.h>
 #include <xen/gdbstub.h>
@@ -21,7 +20,7 @@
 #include <xen/keyhandler.h>
 #include <xen/numa.h>
 #include <xen/rcupdate.h>
-#include <xen/vga.h>
+#include <xen/video.h>
 #include <xen/dmi.h>
 #include <xen/pfn.h>
 #include <xen/nodemask.h>
@@ -49,6 +48,7 @@
 #include <xen/cpu.h>
 #include <asm/nmi.h>
 #include <asm/alternative.h>
+#include <asm/boot_info.h>
 
 /* opt_nosmp: If true, secondary processors are ignored. */
 static bool_t __initdata opt_nosmp;
@@ -92,6 +92,8 @@ unsigned long __initdata highmem_start;
 size_param("highmem-start", highmem_start);
 #endif
 
+boot_info_t *boot_info;
+
 cpumask_t __read_mostly cpu_present_map;
 
 unsigned long __read_mostly xen_phys_start;
@@ -137,7 +139,7 @@ static void __init parse_acpi_param(char *s)
     }
 }
 
-static const module_t *__initdata initial_images;
+static const boot_module_t *__initdata initial_images;
 static unsigned int __initdata nr_initial_images;
 
 unsigned long __init initial_images_nrpages(void)
@@ -146,7 +148,7 @@ unsigned long __init initial_images_nrpages(void)
     unsigned int i;
 
     for ( nr = i = 0; i < nr_initial_images; ++i )
-        nr += PFN_UP(initial_images[i].mod_end);
+        nr += PFN_UP(initial_images[i].end);
 
     return nr;
 }
@@ -157,10 +159,10 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < nr_initial_images; ++i )
     {
-        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
+        uint64_t start = (uint64_t)initial_images[i].start << PAGE_SHIFT;
 
         init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod_end));
+                           start + PAGE_ALIGN(initial_images[i].end));
     }
 
     nr_initial_images = 0;
@@ -261,14 +263,14 @@ static void __init normalise_cpu_order(void)
  * Ensure a given physical memory range is present in the bootstrap mappings.
  * Use superpage mappings to ensure that pagetable memory needn't be allocated.
  */
-static void *__init bootstrap_map(const module_t *mod)
+static void *__init bootstrap_map(const boot_module_t *mod)
 {
     static unsigned long __initdata map_cur = BOOTSTRAP_MAP_BASE;
     uint64_t start, end, mask = (1L << L2_PAGETABLE_SHIFT) - 1;
     void *ret;
 
     if ( system_state != SYS_STATE_early_boot )
-        return mod ? mfn_to_virt(mod->mod_start) : NULL;
+        return mod ? mfn_to_virt(mod->start) : NULL;
 
     if ( !mod )
     {
@@ -277,8 +279,8 @@ static void *__init bootstrap_map(const module_t *mod)
         return NULL;
     }
 
-    start = (uint64_t)mod->mod_start << PAGE_SHIFT;
-    end = start + mod->mod_end;
+    start = (uint64_t)mod->start << PAGE_SHIFT;
+    end = start + mod->end;
     if ( start >= end )
         return NULL;
 
@@ -308,25 +310,25 @@ static void *__init move_memory(
 
     while ( size )
     {
-        module_t mod;
+        boot_module_t mod;
         unsigned int soffs = src & mask;
         unsigned int doffs = dst & mask;
         unsigned int sz;
         void *d, *s;
 
-        mod.mod_start = (src - soffs) >> PAGE_SHIFT;
-        mod.mod_end = soffs + size;
-        if ( mod.mod_end > blksz )
-            mod.mod_end = blksz;
-        sz = mod.mod_end - soffs;
+        mod.start = (src - soffs) >> PAGE_SHIFT;
+        mod.end = soffs + size;
+        if ( mod.end > blksz )
+            mod.end = blksz;
+        sz = mod.end - soffs;
         s = bootstrap_map(&mod);
 
-        mod.mod_start = (dst - doffs) >> PAGE_SHIFT;
-        mod.mod_end = doffs + size;
-        if ( mod.mod_end > blksz )
-            mod.mod_end = blksz;
-        if ( sz > mod.mod_end - doffs )
-            sz = mod.mod_end - doffs;
+        mod.start = (dst - doffs) >> PAGE_SHIFT;
+        mod.end = doffs + size;
+        if ( mod.end > blksz )
+            mod.end = blksz;
+        if ( sz > mod.end - doffs )
+            sz = mod.end - doffs;
         d = bootstrap_map(&mod);
 
         memmove(d + doffs, s + soffs, sz);
@@ -345,7 +347,7 @@ static void *__init move_memory(
 }
 
 static uint64_t __init consider_modules(
-    uint64_t s, uint64_t e, uint32_t size, const module_t *mod,
+    uint64_t s, uint64_t e, uint32_t size, const boot_module_t *mod,
     unsigned int nr_mods, unsigned int this_mod)
 {
     unsigned int i;
@@ -355,8 +357,8 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
-        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
+        uint64_t start = (uint64_t)mod[i].start << PAGE_SHIFT;
+        uint64_t end = start + PAGE_ALIGN(mod[i].end);
 
         if ( i == this_mod )
             continue;
@@ -405,76 +407,6 @@ void set_pdx_range(unsigned long smfn, unsigned long emfn)
 /* A temporary copy of the e820 map that we can mess with during bootstrap. */
 static struct e820map __initdata boot_e820;
 
-struct boot_video_info {
-    u8  orig_x;             /* 0x00 */
-    u8  orig_y;             /* 0x01 */
-    u8  orig_video_mode;    /* 0x02 */
-    u8  orig_video_cols;    /* 0x03 */
-    u8  orig_video_lines;   /* 0x04 */
-    u8  orig_video_isVGA;   /* 0x05 */
-    u16 orig_video_points;  /* 0x06 */
-
-    /* VESA graphic mode -- linear frame buffer */
-    u32 capabilities;       /* 0x08 */
-    u16 lfb_linelength;     /* 0x0c */
-    u16 lfb_width;          /* 0x0e */
-    u16 lfb_height;         /* 0x10 */
-    u16 lfb_depth;          /* 0x12 */
-    u32 lfb_base;           /* 0x14 */
-    u32 lfb_size;           /* 0x18 */
-    u8  red_size;           /* 0x1c */
-    u8  red_pos;            /* 0x1d */
-    u8  green_size;         /* 0x1e */
-    u8  green_pos;          /* 0x1f */
-    u8  blue_size;          /* 0x20 */
-    u8  blue_pos;           /* 0x21 */
-    u8  rsvd_size;          /* 0x22 */
-    u8  rsvd_pos;           /* 0x23 */
-    u16 vesapm_seg;         /* 0x24 */
-    u16 vesapm_off;         /* 0x26 */
-    u16 vesa_attrib;        /* 0x28 */
-};
-extern struct boot_video_info boot_vid_info;
-
-static void __init parse_video_info(void)
-{
-    struct boot_video_info *bvi = &bootsym(boot_vid_info);
-
-    /* The EFI loader fills vga_console_info directly. */
-    if ( efi_enabled )
-        return;
-
-    if ( (bvi->orig_video_isVGA == 1) && (bvi->orig_video_mode == 3) )
-    {
-        vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3;
-        vga_console_info.u.text_mode_3.font_height = bvi->orig_video_points;
-        vga_console_info.u.text_mode_3.cursor_x = bvi->orig_x;
-        vga_console_info.u.text_mode_3.cursor_y = bvi->orig_y;
-        vga_console_info.u.text_mode_3.rows = bvi->orig_video_lines;
-        vga_console_info.u.text_mode_3.columns = bvi->orig_video_cols;
-    }
-    else if ( bvi->orig_video_isVGA == 0x23 )
-    {
-        vga_console_info.video_type = XEN_VGATYPE_VESA_LFB;
-        vga_console_info.u.vesa_lfb.width = bvi->lfb_width;
-        vga_console_info.u.vesa_lfb.height = bvi->lfb_height;
-        vga_console_info.u.vesa_lfb.bytes_per_line = bvi->lfb_linelength;
-        vga_console_info.u.vesa_lfb.bits_per_pixel = bvi->lfb_depth;
-        vga_console_info.u.vesa_lfb.lfb_base = bvi->lfb_base;
-        vga_console_info.u.vesa_lfb.lfb_size = bvi->lfb_size;
-        vga_console_info.u.vesa_lfb.red_pos = bvi->red_pos;
-        vga_console_info.u.vesa_lfb.red_size = bvi->red_size;
-        vga_console_info.u.vesa_lfb.green_pos = bvi->green_pos;
-        vga_console_info.u.vesa_lfb.green_size = bvi->green_size;
-        vga_console_info.u.vesa_lfb.blue_pos = bvi->blue_pos;
-        vga_console_info.u.vesa_lfb.blue_size = bvi->blue_size;
-        vga_console_info.u.vesa_lfb.rsvd_pos = bvi->rsvd_pos;
-        vga_console_info.u.vesa_lfb.rsvd_size = bvi->rsvd_size;
-        vga_console_info.u.vesa_lfb.gbl_caps = bvi->capabilities;
-        vga_console_info.u.vesa_lfb.mode_attrs = bvi->vesa_attrib;
-    }
-}
-
 static void __init kexec_reserve_area(struct e820map *e820)
 {
     unsigned long kdump_start = kexec_crash_area.start;
@@ -558,15 +490,12 @@ void __init enable_exception_support(void)
     /* Full exception support from here on in. */
 }
 
-void __init noreturn __start_xen(unsigned long mbi_p)
+void __init noreturn __start_xen(boot_info_t *boot_info_start)
 {
-    char *memmap_type = NULL;
-    char *cmdline, *kextra, *loader;
+    char *cmdline, *kextra;
     unsigned int initrdidx, domcr_flags = DOMCRF_s3_integrity;
-    multiboot_info_t *mbi = __va(mbi_p);
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     unsigned long nr_pages, raw_max_page, modules_headroom, *module_map;
-    int i, j, e820_warn = 0, bytes = 0;
+    int i, j;
     bool_t acpi_boot_table_init_done = 0;
     struct domain *dom0;
     struct ns16550_defaults ns16550 = {
@@ -577,19 +506,19 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( !efi_enabled ) {
         /* Exception support was enabled before __start_xen() call. */
+
+        boot_info = boot_info_start;
     }
     else
     {
         enable_exception_support();
-    }
 
-    loader = (mbi->flags & MBI_LOADERNAME)
-        ? (char *)__va(mbi->boot_loader_name) : "unknown";
+        boot_info = __va(boot_info_start);
+        boot_info->cmdline = __va(boot_info->cmdline);
+    }
 
     /* Parse the command-line options. */
-    cmdline = cmdline_cook((mbi->flags & MBI_CMDLINE) ?
-                           __va(mbi->cmdline) : NULL,
-                           loader);
+    cmdline = cmdline_cook(boot_info->cmdline, boot_info->boot_loader_name);
     if ( (kextra = strstr(cmdline, " -- ")) != NULL )
     {
         /*
@@ -607,8 +536,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
      * allocing any xenheap structures wanted in lower memory. */
     kexec_early_calculations();
 
-    parse_video_info();
-
     if ( cpu_has_efer )
         rdmsrl(MSR_EFER, this_cpu(efer));
     asm volatile ( "mov %%cr4,%0" : "=r" (this_cpu(cr4)) );
@@ -623,27 +550,33 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     ehci_dbgp_init();
     console_init_preirq();
 
-    printk("Bootloader: %s\n", loader);
+    if ( boot_info->err_msg )
+        panic(boot_info->err_msg);
+
+    if ( boot_info->warn_msg )
+        printk(boot_info->warn_msg);
+
+    printk("Bootloader: %s\n", boot_info->boot_loader_name);
 
-    printk("Command line: %s\n", cmdline);
+    printk("Command line: %s\n", boot_info->cmdline ? boot_info->cmdline : "NONE");
 
     printk("Video information:\n");
 
     /* Print VGA display mode information. */
-    switch ( vga_console_info.video_type )
+    switch ( boot_info->vga_console_info.video_type )
     {
     case XEN_VGATYPE_TEXT_MODE_3:
         printk(" VGA is text mode %dx%d, font 8x%d\n",
-               vga_console_info.u.text_mode_3.columns,
-               vga_console_info.u.text_mode_3.rows,
-               vga_console_info.u.text_mode_3.font_height);
+               boot_info->vga_console_info.u.text_mode_3.columns,
+               boot_info->vga_console_info.u.text_mode_3.rows,
+               boot_info->vga_console_info.u.text_mode_3.font_height);
         break;
     case XEN_VGATYPE_VESA_LFB:
     case XEN_VGATYPE_EFI_LFB:
         printk(" VGA is graphics mode %dx%d, %d bpp\n",
-               vga_console_info.u.vesa_lfb.width,
-               vga_console_info.u.vesa_lfb.height,
-               vga_console_info.u.vesa_lfb.bits_per_pixel);
+               boot_info->vga_console_info.u.vesa_lfb.width,
+               boot_info->vga_console_info.u.vesa_lfb.height,
+               boot_info->vga_console_info.u.vesa_lfb.bits_per_pixel);
         break;
     default:
         printk(" No VGA detected\n");
@@ -651,15 +584,15 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     }
 
     /* Print VBE/DDC EDID information. */
-    if ( bootsym(boot_edid_caps) != 0x1313 )
+    if ( boot_info->edid_caps != 0x1313 )
     {
-        u16 caps = bootsym(boot_edid_caps);
+        u16 caps = boot_info->edid_caps;
         printk(" VBE/DDC methods:%s%s%s; ",
                (caps & 1) ? " V1" : "",
                (caps & 2) ? " V2" : "",
                !(caps & 3) ? " none" : "");
         printk("EDID transfer time: %d seconds\n", caps >> 8);
-        if ( *(u32 *)bootsym(boot_edid_info) == 0x13131313 )
+        if ( *(u32 *)boot_info->edid_info == 0x13131313 )
         {
             printk(" EDID info not retrieved because ");
             if ( !(caps & 3) )
@@ -672,13 +605,11 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     }
 
     printk("Disc information:\n");
-    printk(" Found %d MBR signatures\n",
-           bootsym(boot_mbr_signature_nr));
-    printk(" Found %d EDD information structures\n",
-           bootsym(boot_edd_info_nr));
+    printk(" Found %d MBR signatures\n", boot_info->mbr_signature_nr);
+    printk(" Found %d EDD information structures\n", boot_info->edd_info_nr);
 
     /* Check that we have at least one Multiboot module. */
-    if ( !(mbi->flags & MBI_MODULES) || (mbi->mods_count == 0) )
+    if ( !boot_info->mods_nr )
         panic("dom0 kernel not specified. Check bootloader configuration.");
 
     if ( ((unsigned long)cpu0_stack & (STACK_SIZE-1)) != 0 )
@@ -696,77 +627,10 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         /* Make boot page tables match non-EFI boot. */
         l3_bootmap[l3_table_offset(BOOTSTRAP_MAP_BASE)] =
             l3e_from_paddr(__pa(l2_bootmap), __PAGE_HYPERVISOR);
-
-        memmap_type = loader;
     }
-    else if ( e820_raw_nr != 0 )
-    {
-        memmap_type = "Xen-e820";
-    }
-    else if ( mbi->flags & MBI_MEMMAP )
-    {
-        memmap_type = "Multiboot-e820";
-        while ( (bytes < mbi->mmap_length) && (e820_raw_nr < E820MAX) )
-        {
-            memory_map_t *map = __va(mbi->mmap_addr + bytes);
-
-            /*
-             * This is a gross workaround for a BIOS bug. Some bootloaders do
-             * not write e820 map entries into pre-zeroed memory. This is
-             * okay if the BIOS fills in all fields of the map entry, but
-             * some broken BIOSes do not bother to write the high word of
-             * the length field if the length is smaller than 4GB. We
-             * detect and fix this by flagging sections below 4GB that
-             * appear to be larger than 4GB in size.
-             */
-            if ( (map->base_addr_high == 0) && (map->length_high != 0) )
-            {
-                if ( !e820_warn )
-                {
-                    printk("WARNING: Buggy e820 map detected and fixed "
-                           "(truncated length fields).\n");
-                    e820_warn = 1;
-                }
-                map->length_high = 0;
-            }
-
-            e820_raw[e820_raw_nr].addr = 
-                ((u64)map->base_addr_high << 32) | (u64)map->base_addr_low;
-            e820_raw[e820_raw_nr].size = 
-                ((u64)map->length_high << 32) | (u64)map->length_low;
-            e820_raw[e820_raw_nr].type = map->type;
-            e820_raw_nr++;
-
-            bytes += map->size + 4;
-        }
-    }
-    else if ( bootsym(lowmem_kb) )
-    {
-        memmap_type = "Xen-e801";
-        e820_raw[0].addr = 0;
-        e820_raw[0].size = bootsym(lowmem_kb) << 10;
-        e820_raw[0].type = E820_RAM;
-        e820_raw[1].addr = 0x100000;
-        e820_raw[1].size = bootsym(highmem_kb) << 10;
-        e820_raw[1].type = E820_RAM;
-        e820_raw_nr = 2;
-    }
-    else if ( mbi->flags & MBI_MEMLIMITS )
-    {
-        memmap_type = "Multiboot-e801";
-        e820_raw[0].addr = 0;
-        e820_raw[0].size = mbi->mem_lower << 10;
-        e820_raw[0].type = E820_RAM;
-        e820_raw[1].addr = 0x100000;
-        e820_raw[1].size = mbi->mem_upper << 10;
-        e820_raw[1].type = E820_RAM;
-        e820_raw_nr = 2;
-    }
-    else
-        panic("Bootloader provided no memory information.");
 
     /* Sanitise the raw E820 map to produce a final clean version. */
-    max_page = raw_max_page = init_e820(memmap_type, e820_raw, &e820_raw_nr);
+    max_page = raw_max_page = init_e820(boot_info->mmap_type, boot_info->e820map, &boot_info->e820map_nr);
 
     /* Create a temporary copy of the E820 map. */
     memcpy(&boot_e820, &e820, sizeof(e820));
@@ -779,8 +643,8 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area(&boot_e820);
 
-    initial_images = mod;
-    nr_initial_images = mbi->mods_count;
+    nr_initial_images = boot_info->mods_nr;
+    initial_images = boot_info->mods;
 
     /*
      * Iterate backwards over all superpage-aligned RAM regions.
@@ -795,16 +659,15 @@ void __init noreturn __start_xen(unsigned long mbi_p)
      * we can relocate the dom0 kernel and other multiboot modules. Also, on
      * x86/64, we relocate Xen to higher memory.
      */
-    for ( i = 0; !efi_enabled && i < mbi->mods_count; i++ )
+    for ( i = 0; !efi_enabled && i < boot_info->mods_nr; i++ )
     {
-        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
+        if ( boot_info->mods[i].start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request.");
-        mod[i].mod_end -= mod[i].mod_start;
-        mod[i].mod_start >>= PAGE_SHIFT;
-        mod[i].reserved = 0;
+        boot_info->mods[i].end -= boot_info->mods[i].start;
+        boot_info->mods[i].start >>= PAGE_SHIFT;
     }
 
-    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
+    modules_headroom = bzimage_headroom(bootstrap_map(boot_info->mods), boot_info->mods->end);
     bootstrap_map(NULL);
 
 #ifndef highmem_start
@@ -845,7 +708,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, mbi->mods_count, -1);
+                                   boot_info->mods, boot_info->mods_nr, -1);
             end &= ~mask;
         }
         else
@@ -933,36 +796,36 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         }
 
         /* Is the region suitable for relocating the multiboot modules? */
-        for ( j = mbi->mods_count - 1; j >= 0; j-- )
+        for ( j = boot_info->mods_nr - 1; j >= 0; j-- )
         {
             unsigned long headroom = j ? 0 : modules_headroom;
-            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
+            unsigned long size = PAGE_ALIGN(headroom + boot_info->mods[j].end);
 
-            if ( mod[j].reserved )
+            if ( boot_info->mods[j].relocated )
                 continue;
 
             /* Don't overlap with other modules. */
-            end = consider_modules(s, e, size, mod, mbi->mods_count, j);
+            end = consider_modules(s, e, size, boot_info->mods, boot_info->mods_nr, j);
 
             if ( highmem_start && end > highmem_start )
                 continue;
 
             if ( s < end &&
                  (headroom ||
-                  ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
+                  ((end - size) >> PAGE_SHIFT) > boot_info->mods[j].start) )
             {
                 move_memory(end - size + headroom,
-                            (uint64_t)mod[j].mod_start << PAGE_SHIFT,
-                            mod[j].mod_end, 0);
-                mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += headroom;
-                mod[j].reserved = 1;
+                            (uint64_t)boot_info->mods[j].start << PAGE_SHIFT,
+                            boot_info->mods[j].end, 0);
+                boot_info->mods[j].start = (end - size) >> PAGE_SHIFT;
+                boot_info->mods[j].end += headroom;
+                boot_info->mods[j].relocated = 1;
             }
         }
 
         /* Don't overlap with modules. */
         e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size),
-                             mod, mbi->mods_count, -1);
+                             boot_info->mods, boot_info->mods_nr, -1);
         if ( !kexec_crash_area.start && (s < e) )
         {
             e = (e - kexec_crash_area.size) & PAGE_MASK;
@@ -970,18 +833,18 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         }
     }
 
-    if ( modules_headroom && !mod->reserved )
+    if ( modules_headroom && !boot_info->mods->relocated )
         panic("Not enough memory to relocate the dom0 kernel image.");
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < boot_info->mods_nr; ++i )
     {
-        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
+        uint64_t s = (uint64_t)boot_info->mods[i].start << PAGE_SHIFT;
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
+        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(boot_info->mods[i].end));
     }
 
     if ( !xen_phys_start )
         panic("Not enough memory to relocate Xen.");
-    reserve_e820_ram(&boot_e820, efi_enabled ? mbi->mem_upper : __pa(&_start),
+    reserve_e820_ram(&boot_e820, efi_enabled ? boot_info->mem_upper : __pa(&_start),
                      __pa(&_end));
 
     /* Late kexec reservation (dynamic start address). */
@@ -1027,10 +890,10 @@ void __init noreturn __start_xen(unsigned long mbi_p)
                     ASSERT(j);
                 }
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
-                for ( j = 0; j < mbi->mods_count; ++j )
+                for ( j = 0; j < boot_info->mods_nr; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
-                                   mod[j].mod_end;
+                    uint64_t end = pfn_to_paddr(boot_info->mods[j].start) +
+                                   boot_info->mods[j].end;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1103,13 +966,13 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         }
     }
 
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < boot_info->mods_nr; ++i )
     {
-        set_pdx_range(mod[i].mod_start,
-                      mod[i].mod_start + PFN_UP(mod[i].mod_end));
-        map_pages_to_xen((unsigned long)mfn_to_virt(mod[i].mod_start),
-                         mod[i].mod_start,
-                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
+        set_pdx_range(boot_info->mods[i].start,
+                      boot_info->mods[i].start + PFN_UP(boot_info->mods[i].end));
+        map_pages_to_xen((unsigned long)mfn_to_virt(boot_info->mods[i].start),
+                         boot_info->mods[i].start,
+                         PFN_UP(boot_info->mods[i].end), PAGE_HYPERVISOR);
     }
 
     if ( kexec_crash_area.size )
@@ -1263,13 +1126,13 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     init_IRQ();
 
-    module_map = xmalloc_array(unsigned long, BITS_TO_LONGS(mbi->mods_count));
-    bitmap_fill(module_map, mbi->mods_count);
+    module_map = xmalloc_array(unsigned long, BITS_TO_LONGS(boot_info->mods_nr));
+    bitmap_fill(module_map, boot_info->mods_nr);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
 
-    xsm_multiboot_init(module_map, mbi, bootstrap_map);
+    xsm_multiboot_init(module_map, boot_info, bootstrap_map);
 
-    microcode_grab_module(module_map, mbi, bootstrap_map);
+    microcode_grab_module(module_map, boot_info, bootstrap_map);
 
     timer_init();
 
@@ -1374,12 +1237,12 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     dom0->target = NULL;
 
     /* Grab the DOM0 command line. */
-    cmdline = (char *)(mod[0].string ? __va(mod[0].string) : NULL);
+    cmdline = (char *)(boot_info->mods[0].cmdline ? __va(boot_info->mods[0].cmdline) : NULL);
     if ( (cmdline != NULL) || (kextra != NULL) )
     {
         static char __initdata dom0_cmdline[MAX_GUEST_CMDLINE];
 
-        cmdline = cmdline_cook(cmdline, loader);
+        cmdline = cmdline_cook(cmdline, boot_info->boot_loader_name);
         safe_strcpy(dom0_cmdline, cmdline);
 
         if ( kextra != NULL )
@@ -1406,8 +1269,8 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     if ( xen_cpuidle )
         xen_processor_pmbits |= XEN_PROCESSOR_PM_CX;
 
-    initrdidx = find_first_bit(module_map, mbi->mods_count);
-    if ( bitmap_weight(module_map, mbi->mods_count) > 1 )
+    initrdidx = find_first_bit(module_map, boot_info->mods_nr);
+    if ( bitmap_weight(module_map, boot_info->mods_nr) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
                initrdidx);
@@ -1424,9 +1287,9 @@ void __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    if ( construct_dom0(dom0, mod, modules_headroom,
-                        (initrdidx > 0) && (initrdidx < mbi->mods_count)
-                        ? mod + initrdidx : NULL,
+    if ( construct_dom0(dom0, boot_info->mods, modules_headroom,
+                        (initrdidx > 0) && (initrdidx < boot_info->mods_nr)
+                        ? boot_info->mods + initrdidx : NULL,
                         bootstrap_map, cmdline) != 0)
         panic("Could not set up DOM0 guest OS");
 
diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
index 93c983c..e328566 100644
--- a/xen/drivers/acpi/osl.c
+++ b/xen/drivers/acpi/osl.c
@@ -39,6 +39,7 @@
 #include <xen/domain_page.h>
 #include <xen/efi.h>
 #include <xen/vmap.h>
+#include <asm/boot_info.h>
 
 #define _COMPONENT		ACPI_OS_SERVICES
 ACPI_MODULE_NAME("osl")
@@ -67,10 +68,10 @@ void __init acpi_os_vprintf(const char *fmt, va_list args)
 acpi_physical_address __init acpi_os_get_root_pointer(void)
 {
 	if (efi_enabled) {
-		if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
-			return efi.acpi20;
-		else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
-			return efi.acpi;
+		if (boot_info->acpi20 != EFI_INVALID_TABLE_ADDR)
+			return boot_info->acpi20;
+		else if (boot_info->acpi != EFI_INVALID_TABLE_ADDR)
+			return boot_info->acpi;
 		else {
 			printk(KERN_ERR PREFIX
 			       "System description tables not found\n");
diff --git a/xen/drivers/video/vesa.c b/xen/drivers/video/vesa.c
index 575db62..e95c157 100644
--- a/xen/drivers/video/vesa.c
+++ b/xen/drivers/video/vesa.c
@@ -9,13 +9,14 @@
 #include <xen/lib.h>
 #include <xen/xmalloc.h>
 #include <xen/kernel.h>
-#include <xen/vga.h>
+#include <xen/video.h>
 #include <asm/io.h>
 #include <asm/page.h>
+#include <asm/boot_info.h>
 #include "font.h"
 #include "lfb.h"
 
-#define vlfb_info    vga_console_info.u.vesa_lfb
+#define vlfb_info    (boot_info->vga_console_info.u.vesa_lfb)
 
 static void lfb_flush(void);
 
@@ -43,7 +44,7 @@ void __init vesa_early_init(void)
 {
     unsigned int vram_vmode;
 
-    vga_compat = !(vga_console_info.u.vesa_lfb.gbl_caps & 2);
+    vga_compat = !(boot_info->vga_console_info.u.vesa_lfb.gbl_caps & 2);
 
     if ( (vlfb_info.bits_per_pixel < 8) || (vlfb_info.bits_per_pixel > 32) )
         return;
diff --git a/xen/drivers/video/vga.c b/xen/drivers/video/vga.c
index 40e5963..608d92b 100644
--- a/xen/drivers/video/vga.c
+++ b/xen/drivers/video/vga.c
@@ -8,12 +8,10 @@
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/mm.h>
-#include <xen/vga.h>
+#include <xen/video.h>
 #include <xen/pci.h>
 #include <asm/io.h>
-
-/* Filled in by arch boot code. */
-struct xen_vga_console_info vga_console_info;
+#include <asm/boot_info.h>
 
 static int vgacon_keep;
 static unsigned int xpos, ypos;
@@ -75,15 +73,15 @@ void __init video_init(void)
             vgacon_keep = 1;
     }
 
-    switch ( vga_console_info.video_type )
+    switch ( boot_info->vga_console_info.video_type )
     {
     case XEN_VGATYPE_TEXT_MODE_3:
         if ( page_is_ram_type(paddr_to_pfn(0xB8000), RAM_TYPE_CONVENTIONAL) ||
              ((video = ioremap(0xB8000, 0x8000)) == NULL) )
             return;
         outw(0x200a, 0x3d4); /* disable cursor */
-        columns = vga_console_info.u.text_mode_3.columns;
-        lines   = vga_console_info.u.text_mode_3.rows;
+        columns = boot_info->vga_console_info.u.text_mode_3.columns;
+        lines   = boot_info->vga_console_info.u.text_mode_3.rows;
         memset(video, 0, columns * lines * 2);
         video_puts = vga_text_puts;
         break;
@@ -92,7 +90,7 @@ void __init video_init(void)
         vesa_early_init();
         break;
     default:
-        memset(&vga_console_info, 0, sizeof(vga_console_info));
+        memset(&boot_info->vga_console_info, 0, sizeof(boot_info->vga_console_info));
         break;
     }
 }
@@ -163,7 +161,7 @@ void __init video_endboot(void)
             }
     }
 
-    switch ( vga_console_info.video_type )
+    switch ( boot_info->vga_console_info.video_type )
     {
     case XEN_VGATYPE_TEXT_MODE_3:
         if ( !vgacon_keep )
@@ -206,6 +204,6 @@ static void vga_text_puts(const char *s)
 
 int __init fill_console_start_info(struct dom0_vga_console_info *ci)
 {
-    memcpy(ci, &vga_console_info, sizeof(*ci));
+    memcpy(ci, &boot_info->vga_console_info, sizeof(*ci));
     return 1;
 }
diff --git a/xen/include/asm-x86/boot_info.h b/xen/include/asm-x86/boot_info.h
new file mode 100644
index 0000000..2559753
--- /dev/null
+++ b/xen/include/asm-x86/boot_info.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2013, 2014 Oracle Co., Daniel Kiper
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __BOOT_INFO_H__
+#define __BOOT_INFO_H__
+
+#include <xen/types.h>
+#include <xen/video.h>
+
+#include <asm/e820.h>
+#include <asm/edd.h>
+#include <asm/mbd.h>
+
+/*
+ * Define boot_info type. It will be used to define variable which in turn
+ * will store data collected by bootloader and preloader. This way it will
+ * be possible to make most of Xen code bootloader agnostic.
+ *
+ * Some members should have relevant EFI/ACPI types. However, due to type
+ * conflicts among ACPI and EFI headers it is not possible to use required
+ * EFI/ACPI types here. Instead of them there are simple types in use which
+ * are compatible as much as possible with relevant EFI/ACPI types.
+ */
+typedef struct {
+    /* Boot loader name. */
+    char *boot_loader_name;
+
+    /* Xen command line. */
+    char *cmdline;
+
+    /* Memory map type (source of memory map). */
+    char *mmap_type;
+
+    /*
+     * Amount of upper memory (in KiB) accordingly to The Multiboot
+     * Specification version 0.6.96.
+     */
+    u32 mem_upper;
+
+    /* Number of memory map entries provided by Xen preloader. */
+    unsigned int e820map_nr;
+
+    /*
+     * Memory map provided by Xen preloader. It should always point
+     * to an area able to accommodate at least E820MAX entries.
+     */
+    struct e820entry *e820map;
+
+    /* Size (in bytes) of EFI memory map provided by Xen preloader. */
+    size_t efi_mmap_size;
+
+    /* Size (in bytes) of EFI memory map descriptor provided by Xen preloader. */
+    size_t efi_mmap_desc_size;
+
+    /* Pointer to EFI memory map provided by preloader. */
+    void *efi_mmap;
+
+    /* Pointer to MPS. */
+    paddr_t mps;
+
+    /* Pointer to ACPI RSDP. */
+    paddr_t acpi;
+
+    /* Pointer to ACPI 2.0 RSDP. */
+    paddr_t acpi20;
+
+    /* Pointer to SMBIOS. */
+    paddr_t smbios;
+
+    /* Pointer to EFI System Table. */
+    void *efi_system_table;
+
+    /* VGA console info. */
+    struct xen_vga_console_info vga_console_info;
+
+    /* EDID info. */
+    unsigned short edid_caps;
+    unsigned char *edid_info;
+
+    /* Number of EDD entries provided by Xen preloader. */
+    u8 edd_info_nr;
+
+    /* Pointer to EDD info. */
+    struct edd_info *edd_info;
+
+    /* Number of MBR entries provided by Xen preloader. */
+    u8 mbr_signature_nr;
+
+    /* Pointer to MBR info. */
+    struct mbr_signature *mbr_signature;
+
+    /* Number of modules. */
+    unsigned int mods_nr;
+
+    /* Pointer to modules description. */
+    boot_module_t *mods;
+
+    /*
+     * Info about warning occurred during boot_info initialization.
+     * NULL if everything went OK.
+     */
+    char *warn_msg;
+
+    /*
+     * Info about error occurred during boot_info initialization. NULL if everything
+     * went OK. Otherwise boot_info is not fully/properly initialized.
+     */
+    char *err_msg;
+} boot_info_t;
+
+extern boot_info_t *boot_info;
+#endif /* __BOOT_INFO_H__ */
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 210ff57..ae68322 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -119,8 +119,6 @@ extern unsigned int trampoline_xen_phys_start;
 extern unsigned char trampoline_cpu_started;
 extern char wakeup_start[];
 extern unsigned int video_mode, video_flags;
-extern unsigned short boot_edid_caps;
-extern unsigned char boot_edid_info[128];
 #endif
 
 #define asmlinkage
diff --git a/xen/include/asm-x86/e820.h b/xen/include/asm-x86/e820.h
index d9ff4eb..8727afb 100644
--- a/xen/include/asm-x86/e820.h
+++ b/xen/include/asm-x86/e820.h
@@ -33,12 +33,4 @@ extern int e820_add_range(
 extern unsigned long init_e820(const char *, struct e820entry *, unsigned int *);
 extern struct e820map e820;
 
-/* These symbols live in the boot trampoline. */
-extern struct e820entry e820map[];
-extern unsigned int e820nr;
-extern unsigned int lowmem_kb, highmem_kb;
-
-#define e820_raw bootsym(e820map)
-#define e820_raw_nr bootsym(e820nr)
-
 #endif /*__E820_HEADER*/
diff --git a/xen/include/asm-x86/edd.h b/xen/include/asm-x86/edd.h
index afaa237..e8361a5 100644
--- a/xen/include/asm-x86/edd.h
+++ b/xen/include/asm-x86/edd.h
@@ -143,12 +143,6 @@ struct __packed mbr_signature {
     u32 signature;
 };
 
-/* These all reside in the boot trampoline. Access via bootsym(). */
-extern struct mbr_signature boot_mbr_signature[];
-extern u8 boot_mbr_signature_nr;
-extern struct edd_info boot_edd_info[];
-extern u8 boot_edd_info_nr;
-
 #endif /* __ASSEMBLY__ */
 
 /* Maximum number of EDD information structures at boot_edd_info. */
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index 8f8c6f3..75b5c5a 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -1,7 +1,7 @@
 #ifndef __X86_SETUP_H_
 #define __X86_SETUP_H_
 
-#include <xen/multiboot.h>
+#include <asm/boot_info.h>
 
 extern unsigned long xenheap_initial_phys_start;
 
@@ -27,9 +27,9 @@ void vesa_mtrr_init(void);
 
 int construct_dom0(
     struct domain *d,
-    const module_t *kernel, unsigned long kernel_headroom,
-    module_t *initrd,
-    void *(*bootstrap_map)(const module_t *),
+    const boot_module_t *kernel, unsigned long kernel_headroom,
+    boot_module_t *initrd,
+    void *(*bootstrap_map)(const boot_module_t *),
     char *cmdline);
 
 unsigned long initial_images_nrpages(void);
@@ -38,7 +38,7 @@ void discard_initial_images(void);
 int xen_in_range(unsigned long mfn);
 
 void microcode_grab_module(
-    unsigned long *, const multiboot_info_t *, void *(*)(const module_t *));
+    unsigned long *, const boot_info_t *, void *(*)(const boot_module_t *));
 
 extern uint8_t kbd_shift_flags;
 
diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
index 8a2b788..64d2dea 100644
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -9,16 +9,6 @@ extern const bool_t efi_enabled;
 
 #define EFI_INVALID_TABLE_ADDR (~0UL)
 
-/* Add fields here only if they need to be referenced from non-EFI code. */
-struct efi {
-    unsigned long mps;          /* MPS table */
-    unsigned long acpi;         /* ACPI table (IA64 ext 0.71) */
-    unsigned long acpi20;       /* ACPI table (ACPI 2.0) */
-    unsigned long smbios;       /* SM BIOS table */
-};
-
-extern struct efi efi;
-
 #ifndef __ASSEMBLY__
 
 union xenpf_efi_info;
diff --git a/xen/include/xen/vga.h b/xen/include/xen/vga.h
deleted file mode 100644
index f72b63d..0000000
--- a/xen/include/xen/vga.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- *  vga.h
- *
- *  This file is subject to the terms and conditions of the GNU General Public
- *  License.  See the file COPYING in the main directory of this archive
- *  for more details.
- */
-
-#ifndef _XEN_VGA_H
-#define _XEN_VGA_H
-
-#include <xen/video.h>
-
-#ifdef CONFIG_VGA
-extern struct xen_vga_console_info vga_console_info;
-#endif
-
-#endif /* _XEN_VGA_H */
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 6c1c079..7e333bd 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -16,7 +16,7 @@
 #define __XSM_H__
 
 #include <xen/sched.h>
-#include <xen/multiboot.h>
+#include <asm/boot_info.h>
 
 typedef void xsm_op_t;
 DEFINE_XEN_GUEST_HANDLE(xsm_op_t);
@@ -666,11 +666,11 @@ static inline int xsm_ioport_mapping (xsm_default_t def, struct domain *d, uint3
 
 #ifdef CONFIG_MULTIBOOT
 extern int xsm_multiboot_init(unsigned long *module_map,
-                              const multiboot_info_t *mbi,
-                              void *(*bootstrap_map)(const module_t *));
+                              const boot_info_t *boot_info,
+                              void *(*bootstrap_map)(const boot_module_t *));
 extern int xsm_multiboot_policy_init(unsigned long *module_map,
-                                     const multiboot_info_t *mbi,
-                                     void *(*bootstrap_map)(const module_t *));
+                                     const boot_info_t *boot_info,
+                                     void *(*bootstrap_map)(const boot_module_t *));
 #endif
 
 #ifdef HAS_DEVICE_TREE
@@ -690,8 +690,8 @@ extern void xsm_fixup_ops(struct xsm_operations *ops);
 
 #ifdef CONFIG_MULTIBOOT
 static inline int xsm_multiboot_init (unsigned long *module_map,
-                                      const multiboot_info_t *mbi,
-                                      void *(*bootstrap_map)(const module_t *))
+                                      const boot_info_t *boot_info,
+                                      void *(*bootstrap_map)(const boot_module_t *))
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index 0ac6d03..39b7ff6 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -60,8 +60,8 @@ static int __init xsm_core_init(void)
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_init(unsigned long *module_map,
-                              const multiboot_info_t *mbi,
-                              void *(*bootstrap_map)(const module_t *))
+                              const boot_info_t *boot_info,
+                              void *(*bootstrap_map)(const boot_module_t *))
 {
     int ret = 0;
 
@@ -69,7 +69,7 @@ int __init xsm_multiboot_init(unsigned long *module_map,
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, mbi, bootstrap_map);
+        ret = xsm_multiboot_policy_init(module_map, boot_info, bootstrap_map);
         if ( ret )
         {
             bootstrap_map(NULL);
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 6e0bb78..46c694b 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -19,9 +19,6 @@
  */
 
 #include <xsm/xsm.h>
-#ifdef CONFIG_MULTIBOOT
-#include <xen/multiboot.h>
-#endif
 #include <xen/bitops.h>
 #ifdef HAS_DEVICE_TREE
 # include <asm/setup.h>
@@ -33,11 +30,10 @@ u32 __initdata policy_size = 0;
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(unsigned long *module_map,
-                                     const multiboot_info_t *mbi,
-                                     void *(*bootstrap_map)(const module_t *))
+                                     const boot_info_t *boot_info,
+                                     void *(*bootstrap_map)(const boot_module_t *))
 {
     int i;
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
@@ -46,13 +42,13 @@ int __init xsm_multiboot_policy_init(unsigned long *module_map,
      * Try all modules and see whichever could be the binary policy.
      * Adjust module_map for the module that is the binary policy.
      */
-    for ( i = mbi->mods_count-1; i >= 1; i-- )
+    for ( i = boot_info->mods_nr - 1; i >= 1; i-- )
     {
         if ( !test_bit(i, module_map) )
             continue;
 
-        _policy_start = bootstrap_map(mod + i);
-        _policy_len   = mod[i].mod_end;
+        _policy_start = bootstrap_map(boot_info->mods + i);
+        _policy_len   = boot_info->mods[i].end;
 
         if ( (xsm_magic_t)(*_policy_start) == XSM_MAGIC )
         {
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Wed Sep 24 18:48:40 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Sep 2014 18:48:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XWrcA-0000Wt-6x; Wed, 24 Sep 2014 18:48:34 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <rshriram@cs.ubc.ca>) id 1XWrc7-0000Wk-N7
	for xen-devel@lists.xen.org; Wed, 24 Sep 2014 18:48:32 +0000
Received: from [85.158.143.35:47808] by server-2.bemta-4.messagelabs.com id
	86/0F-04525-EF113245; Wed, 24 Sep 2014 18:48:30 +0000
X-Env-Sender: rshriram@cs.ubc.ca
X-Msg-Ref: server-4.tower-21.messagelabs.com!1411584505!12948995!1
X-Originating-IP: [142.103.6.52]
X-SpamReason: No, hits=1.7 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_20_30,HTML_MESSAGE,RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16129 invoked from network); 24 Sep 2014 18:48:26 -0000
Received: from smtp.cs.ubc.ca (HELO smtp.cs.ubc.ca) (142.103.6.52)
	by server-4.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 24 Sep 2014 18:48:26 -0000
Received: from mail-ie0-f182.google.com (mail-ie0-f182.google.com
	[209.85.223.182]) (authenticated bits=0)
	by smtp.cs.ubc.ca (8.14.5/8.13.6) with ESMTP id s8OImNab022390
	(version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL)
	for <xen-devel@lists.xen.org>; Wed, 24 Sep 2014 11:48:24 -0700
Received: by mail-ie0-f182.google.com with SMTP id tp5so6926401ieb.13
	for <xen-devel@lists.xen.org>; Wed, 24 Sep 2014 11:48:22 -0700 (PDT)
MIME-Version: 1.0
X-Received: by 10.43.6.200 with SMTP id ol8mr13184161icb.39.1411584502814;
	Wed, 24 Sep 2014 11:48:22 -0700 (PDT)
Received: by 10.42.139.71 with HTTP; Wed, 24 Sep 2014 11:48:22 -0700 (PDT)
Received: by 10.42.139.71 with HTTP; Wed, 24 Sep 2014 11:48:22 -0700 (PDT)
In-Reply-To: <1409909158-19243-16-git-send-email-wency@cn.fujitsu.com>
References: <1409909158-19243-1-git-send-email-wency@cn.fujitsu.com>
	<1409909158-19243-16-git-send-email-wency@cn.fujitsu.com>
Date: Wed, 24 Sep 2014 11:48:22 -0700
Message-ID: <CAP8mzPOAjPF08NFjBms7HWryabmZaDBfqeSQTQZjztfEYSDJSw@mail.gmail.com>
From: Shriram Rajagopalan <rshriram@cs.ubc.ca>
To: Wen Congyang <wency@cn.fujitsu.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Jiang Yunhong <yunhong.jiang@intel.com>, Dong Eddie <eddie.dong@intel.com>,
	xen devel <xen-devel@lists.xen.org>, Yang Hongyang <yanghy@cn.fujitsu.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [Xen-devel] [RFC Patch v3 15/22] blktap2: move async connect
	related codes to block-replication.c
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: rshriram@cs.ubc.ca
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8024538590219703831=="
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============8024538590219703831==
Content-Type: multipart/alternative; boundary=bcaec5014c9fdc65c80503d42006

--bcaec5014c9fdc65c80503d42006
Content-Type: text/plain; charset=UTF-8

On Sep 5, 2014 5:31 AM, "Wen Congyang" <wency@cn.fujitsu.com> wrote:
>
>    COLO will reuse them.
>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> Cc: Shriram Rajagopalan <rshriram@cs.ubc.ca>
> ---
>  tools/blktap2/drivers/Makefile            |   2 +-
>  tools/blktap2/drivers/block-remus.c       | 494
+++---------------------------
>  tools/blktap2/drivers/block-replication.c | 468
++++++++++++++++++++++++++++
>  tools/blktap2/drivers/block-replication.h | 113 +++++++
>  4 files changed, 630 insertions(+), 447 deletions(-)
>  create mode 100644 tools/blktap2/drivers/block-replication.c
>  create mode 100644 tools/blktap2/drivers/block-replication.h
>
> diff --git a/tools/blktap2/drivers/Makefile
b/tools/blktap2/drivers/Makefile
> index 37c3485..3d8ed8a 100644
> --- a/tools/blktap2/drivers/Makefile
> +++ b/tools/blktap2/drivers/Makefile
> @@ -23,7 +23,7 @@ endif
>
>  VHDLIBS    := -L$(LIBVHDDIR) -lvhd
>
> -REMUS-OBJS  := block-remus.o
> +REMUS-OBJS  := block-remus.o block-replication.o
>  REMUS-OBJS  += hashtable.o
>  REMUS-OBJS  += hashtable_itr.o
>  REMUS-OBJS  += hashtable_utility.o
> diff --git a/tools/blktap2/drivers/block-remus.c
b/tools/blktap2/drivers/block-remus.c
> index 5d27d41..8b6f157 100644
> --- a/tools/blktap2/drivers/block-remus.c
> +++ b/tools/blktap2/drivers/block-remus.c
> @@ -40,6 +40,7 @@
>  #include "hashtable.h"
>  #include "hashtable_itr.h"
>  #include "hashtable_utility.h"
> +#include "block-replication.h"
>
>  #include <errno.h>
>  #include <inttypes.h>
> @@ -49,10 +50,7 @@
>  #include <string.h>
>  #include <sys/time.h>
>  #include <sys/types.h>
> -#include <sys/socket.h>
> -#include <netdb.h>
>  #include <netinet/in.h>
> -#include <arpa/inet.h>
>  #include <sys/param.h>
>  #include <sys/sysctl.h>
>  #include <unistd.h>
> @@ -67,22 +65,6 @@
>
>  #define RPRINTF(_f, _a...) syslog (LOG_DEBUG, "remus: " _f, ## _a)
>
> -#define UNREGISTER_EVENT(id)                                   \
> -       do {                                                    \
> -               if (id >= 0) {                                  \
> -                       tapdisk_server_unregister_event(id);    \
> -                       id = -1;                                \
> -               }                                               \
> -       } while (0)
> -
> -#define CLOSE_FD(fd)                   \
> -       do {                            \
> -               if (fd >= 0) {          \
> -                       close(fd);      \
> -                       fd = -1;        \
> -               }                       \
> -       } while (0)
> -
>  #define MAX_REMUS_REQUEST       TAPDISK_DATA_REQUESTS
>
>  enum tdremus_mode {
> @@ -92,13 +74,6 @@ enum tdremus_mode {
>         mode_backup
>  };
>
> -enum {
> -       ERROR_INTERNAL = -1,
> -       ERROR_IO = -2,
> -       ERROR_CONNECTION = -3,
> -       ERROR_CLOSE = -4,
> -};
> -
>  struct tdremus_req {
>         td_request_t treq;
>  };
> @@ -167,21 +142,9 @@ struct ramdisk_write_cbdata {
>
>  typedef void (*queue_rw_t) (td_driver_t *driver, td_request_t treq);
>
> -/*
> - * If cid, rid and wid are -1, fd must be -1. It means that
> - * we are in unpritected mode or we don't start to connect
> - * to backup.
> - * If fd is an valid fd:
> - *  cid is valid, rid and wid must be invalid. It means that
> - *      the connection is in progress.
> - *  cid is invalid. rid or wid must be valid. It means that
> - *      the connection is established.
> - */
>  typedef struct poll_fd {
>         int        fd;
> -       event_id_t cid;
> -       event_id_t rid;
> -       event_id_t wid;
> +       event_id_t id;
>  } poll_fd_t;
>
>  struct tdremus_state {
> @@ -195,9 +158,7 @@ struct tdremus_state {
>         char*     msg_path; /* output completion message here */
>         poll_fd_t msg_fd;
>
> -  /* replication host */
> -       struct sockaddr_in sa;
> -       poll_fd_t server_fd;    /* server listen port */
> +       td_replication_connect_t t;
>         poll_fd_t stream_fd;     /* replication channel */
>
>         /*
> @@ -777,28 +738,8 @@ static int mwrite(int fd, void* buf, size_t len)
>         select(fd + 1, NULL, &wfds, NULL, &tv);
>  }
>
> -
> -static void inline close_stream_fd(struct tdremus_state *s)
> -{
> -
> -       UNREGISTER_EVENT(s->stream_fd.cid);
> -       UNREGISTER_EVENT(s->stream_fd.rid);
> -       UNREGISTER_EVENT(s->stream_fd.wid);
> -
> -       /* close the connection */
> -       CLOSE_FD(s->stream_fd.fd);
> -}
> -
> -static void close_server_fd(struct tdremus_state *s)
> -{
> -       UNREGISTER_EVENT(s->server_fd.cid);
> -       CLOSE_FD(s->server_fd.fd);
> -}
> -
>  /* primary functions */
> -static void remus_client_event(event_id_t, char mode, void *private);
> -static void remus_connect_event(event_id_t id, char mode, void *private);
> -static void remus_retry_connect_event(event_id_t id, char mode, void
*private);
> +static void remus_client_event(event_id_t id, char mode, void *private);
>  static int primary_forward_request(struct tdremus_state *s,
>                                    const td_request_t *treq);
>
> @@ -808,56 +749,15 @@ static int primary_forward_request(struct
tdremus_state *s,
>   */
>  static void primary_failed(struct tdremus_state *s, int rc)
>  {
> -       close_stream_fd(s);
> +       td_replication_connect_kill(&s->t);
>         if (rc == ERROR_INTERNAL)
>                 RPRINTF("switch to unprotected mode due to internal
error");
>         if (rc == ERROR_CLOSE)
>                 RPRINTF("switch to unprotected mode before closing");
> +       UNREGISTER_EVENT(s->stream_fd.id);
>         switch_mode(s->tdremus_driver, mode_unprotected);
>  }
>
> -static int primary_do_connect(struct tdremus_state *state)
> -{
> -       event_id_t id;
> -       int fd;
> -       int rc;
> -       int flags;
> -
> -       RPRINTF("client connecting to %s:%d...\n",
> -               inet_ntoa(state->sa.sin_addr), ntohs(state->sa.sin_port));
> -
> -       if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
> -               RPRINTF("could not create client socket: %d\n", errno);
> -               return ERROR_INTERNAL;
> -       }
> -       state->stream_fd.fd = fd;
> -
> -       /* make socket nonblocking */
> -       if ((flags = fcntl(fd, F_GETFL, 0)) == -1)
> -               flags = 0;
> -       if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
> -               RPRINTF("error setting fd %d to non block mode\n", fd);
> -               return ERROR_INTERNAL;
> -       }
> -
> -       /*
> -        * once we have created the socket and populated the address,
> -        * we can now start our non-blocking connect. rather than
> -        * duplicating code we trigger a timeout on the socket fd,
> -        * which calls out nonblocking connect code
> -        */
> -       if((id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
fd, 0,
> -                                              remus_retry_connect_event,
> -                                              state)) < 0) {
> -               RPRINTF("error registering timeout client connection
event handler: %s\n",
> -                       strerror(id));
> -               return ERROR_INTERNAL;
> -       }
> -
> -       state->stream_fd.cid = id;
> -       return 0;
> -}
> -
>  static int remus_handle_queued_io(struct tdremus_state *s)
>  {
>         struct req_ring *queued_io = &s->queued_io;
> @@ -882,184 +782,35 @@ static int remus_handle_queued_io(struct
tdremus_state *s)
>         return 0;
>  }
>
> -static int remus_connection_done(struct tdremus_state *s)
> +static void remus_client_established(td_replication_connect_t *t, int rc)
>  {
> +       struct tdremus_state *s = CONTAINER_OF(t, *s, t);
>         event_id_t id;
>
> -       /* the connect succeeded */
> -       /* unregister this function and register a new event handler */
> -       tapdisk_server_unregister_event(s->stream_fd.cid);
> -       s->stream_fd.cid = -1;
> +       if (rc) {
> +               primary_failed(s, rc);
> +               return;
> +       }
>
> -       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
s->stream_fd.fd,
> +       /* the connect succeeded */
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, t->fd,
>                                            0, remus_client_event, s);
>         if(id < 0) {
>                 RPRINTF("error registering client event handler: %s\n",
>                         strerror(id));
> -               return ERROR_INTERNAL;
> -       }
> -       s->stream_fd.rid = id;
> -
> -       /* handle the queued requests */
> -       return remus_handle_queued_io(s);
> -}
> -
> -static int remus_retry_connect(struct tdremus_state *s)
> -{
> -       event_id_t id;
> -
> -       tapdisk_server_unregister_event(s->stream_fd.cid);
> -       s->stream_fd.cid = -1;
> -
> -       RPRINTF("connect to backup 1 second later");
> -       id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
> -                                          s->stream_fd.fd,
> -                                          REMUS_CONNRETRY_TIMEOUT,
> -                                          remus_retry_connect_event, s);
> -       if (id < 0) {
> -               RPRINTF("error registering timeout client connection
event handler: %s\n",
> -                       strerror(id));
> -               return ERROR_INTERNAL;
> -       }
> -
> -       s->stream_fd.cid = id;
> -       return 0;
> -}
> -
> -static int remus_wait_connect_done(struct tdremus_state *s)
> -{
> -       event_id_t id;
> -
> -       tapdisk_server_unregister_event(s->stream_fd.cid);
> -       s->stream_fd.cid = -1;
> -
> -       id = tapdisk_server_register_event(SCHEDULER_POLL_WRITE_FD,
> -                                          s->stream_fd.fd, 0,
> -                                          remus_connect_event, s);
> -       if (id < 0) {
> -               RPRINTF("error registering client connection event
handler: %s\n",
> -                       strerror(id));
> -               return ERROR_INTERNAL;
> -       }
> -       s->stream_fd.cid = id;
> -
> -       return 0;
> -}
> -
> -/* return 1 if we need to reconnect to backup */
> -static int check_connect_errno(int err)
> -{
> -       /*
> -        * The fd is non-block, so we will not get ETIMEDOUT
> -        * after calling connect(). We only can get this errno
> -        * by getsockopt().
> -        */
> -       if (err == ECONNREFUSED || err == ENETUNREACH ||
> -           err == EAGAIN || err == ECONNABORTED ||
> -           err == ETIMEDOUT)
> -           return 1;
> -
> -       return 0;
> -}
> -
> -static void remus_retry_connect_event(event_id_t id, char mode, void
*private)
> -{
> -       struct tdremus_state *s = (struct tdremus_state *)private;
> -       int rc, ret;
> -
> -       /* do a non-blocking connect */
> -       ret = connect(s->stream_fd.fd,
> -                     (struct sockaddr *)&s->sa,
> -                     sizeof(s->sa));
> -       if (ret) {
> -               if (errno == EINPROGRESS) {
> -                       /*
> -                        * the connect returned EINPROGRESS (nonblocking
> -                        * connect) we must wait for the fd to be
writeable
> -                        * to determine if the connect worked
> -                        */
> -                       rc = remus_wait_connect_done(s);
> -                       if (rc)
> -                               goto fail;
> -                       return;
> -               }
> -
> -               if (check_connect_errno(errno)) {
> -                       rc = remus_retry_connect(s);
> -                       if (rc)
> -                               goto fail;
> -                       return;
> -               }
> -
> -               /* not recoverable */
> -               RPRINTF("error connection to server %s\n",
strerror(errno));
> -               rc = ERROR_CONNECTION;
> -               goto fail;
> -       }
> -
> -       /* The connection is established unexpectedly */
> -       rc = remus_connection_done(s);
> -       if (rc)
> -               goto fail;
> -
> -       return;
> -
> -fail:
> -       primary_failed(s, rc);
> -       return;
> -}
> -
> -/* callback when nonblocking connect() is finished */
> -static void remus_connect_event(event_id_t id, char mode, void *private)
> -{
> -       int socket_errno;
> -       socklen_t socket_errno_size;
> -       struct tdremus_state *s = (struct tdremus_state *)private;
> -       int rc;
> -
> -       /* check to see if the connect succeeded */
> -       socket_errno_size = sizeof(socket_errno);
> -       if (getsockopt(s->stream_fd.fd, SOL_SOCKET, SO_ERROR,
> -                      &socket_errno, &socket_errno_size)) {
> -               RPRINTF("error getting socket errno\n");
> +               primary_failed(s, ERROR_INTERNAL);
>                 return;
>         }
>
> -       RPRINTF("socket connect returned %d\n", socket_errno);
> +       s->stream_fd.fd = t->fd;
> +       s->stream_fd.id = id;
>
> -       if (socket_errno) {
> -               /* the connect did not succeed */
> -               if (check_connect_errno(socket_errno)) {
> -                       /*
> -                        * we can probably assume that the backup is down.
> -                        * just try again later
> -                        */
> -                       rc = remus_retry_connect(s);
> -                       if (rc)
> -                               goto fail;
> -
> -                       return;
> -               } else {
> -                       RPRINTF("socket connect returned %d, giving up\n",
> -                               socket_errno);
> -                       rc = ERROR_CONNECTION;
> -                       goto fail;
> -               }
> -
> -               return;
> -       }
> -
> -       rc = remus_connection_done(s);
> +       /* handle the queued requests */
> +       rc = remus_handle_queued_io(s);
>         if (rc)
> -               goto fail;
> -
> -       return;
> -
> -fail:
> -       primary_failed(s, rc);
> +               primary_failed(s, rc);
>  }
>
> -
>  /*
>   * we install this event handler on the primary once we have
>   * connected to the backup.
> @@ -1142,19 +893,21 @@ static int primary_forward_request(struct
tdremus_state *s,
>  static void primary_queue_write(td_driver_t *driver, td_request_t treq)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -       int rc;
> +       int rc, ret;
>
>         // RPRINTF("write: stream_fd.fd: %d\n", s->stream_fd.fd);
>
> -       if(s->stream_fd.fd < 0) {
> +       ret = td_replication_connect_status(&s->t);
> +       if(ret == -1) {
>                 RPRINTF("connecting to backup...\n");
> -               rc = primary_do_connect(s);
> +               s->t.callback = remus_client_established;
> +               rc = td_replication_client_start(&s->t);
>                 if (rc)
>                         goto fail;
>         }
>
>         /* The connection is not established, just queue the request */
> -       if (s->stream_fd.cid >= 0) {
> +       if (ret != 1) {
>                 ring_add_request(&s->queued_io, &treq);
>                 return;
>         }
> @@ -1227,9 +980,7 @@ static int primary_start(td_driver_t *driver)
>         s->queue_flush = primary_flush;
>
>         s->stream_fd.fd = -1;
> -       s->stream_fd.cid = -1;
> -       s->stream_fd.rid = -1;
> -       s->stream_fd.wid = -1;
> +       s->stream_fd.id = -1;
>
>         return 0;
>  }
> @@ -1240,100 +991,32 @@ static void remus_server_event(event_id_t id,
char mode, void *private);
>  /* It is called when we find some I/O error */
>  static void backup_failed(struct tdremus_state *s, int rc)
>  {
> -       close_stream_fd(s);
> -       close_server_fd(s);
> +       td_replication_connect_kill(&s->t);
>         /* We will switch to unprotected mode in backup_queue_write() */
>  }
>
>  /* returns the socket that receives write requests */
> -static void remus_server_accept(event_id_t id, char mode, void* private)
> +static void remus_server_established(td_replication_connect_t *t, int rc)
>  {
> -       struct tdremus_state* s = (struct tdremus_state *) private;
> -
> -       int stream_fd;
> -
> -       /* XXX: add address-based black/white list */
> -       if ((stream_fd = accept(s->server_fd.fd, NULL, NULL)) < 0) {
> -               RPRINTF("error accepting connection: %d\n", errno);
> -               return;
> -       }
> +       struct tdremus_state *s = CONTAINER_OF(t, *s, t);
> +       event_id_t id;
>
> -       /*
> -        * TODO: check to see if we are already replicating.
> -        * if so just close the connection (or do something
> -        * smarter)
> -        */
> -       RPRINTF("server accepted connection\n");
> +       /* rc is always 0 */
>
>         /* add tapdisk event for replication stream */
> -       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
stream_fd, 0,
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, t->fd,
0,
>                                            remus_server_event, s);
>
>         if (id < 0) {
>                 RPRINTF("error registering connection event handler:
%s\n",
>                         strerror(errno));
> -               close(stream_fd);
> +               td_replication_server_restart(t);
>                 return;
>         }
>
>         /* store replication file descriptor */
> -       s->stream_fd.fd = stream_fd;
> -       s->stream_fd.rid = id;
> -}
> -
> -/* returns -2 if EADDRNOTAVAIL */
> -static int remus_bind(struct tdremus_state* s)
> -{
> -       int opt;
> -       int rc = -1;
> -       event_id_t id;
> -
> -       if ((s->server_fd.fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
> -               RPRINTF("could not create server socket: %d\n", errno);
> -               return rc;
> -       }
> -
> -       opt = 1;
> -       if (setsockopt(s->server_fd.fd, SOL_SOCKET,
> -                      SO_REUSEADDR, &opt, sizeof(opt)) < 0)
> -               RPRINTF("Error setting REUSEADDR on %d: %d\n",
> -                       s->server_fd.fd, errno);
> -
> -       if (bind(s->server_fd.fd, (struct sockaddr *)&s->sa,
> -                sizeof(s->sa)) < 0) {
> -               RPRINTF("could not bind server socket %d to %s:%d: %d
%s\n",
> -                       s->server_fd.fd, inet_ntoa(s->sa.sin_addr),
> -                       ntohs(s->sa.sin_port), errno, strerror(errno));
> -               if (errno == EADDRNOTAVAIL)
> -                       rc = -2;
> -               goto err_sfd;
> -       }
> -
> -       if (listen(s->server_fd.fd, 10)) {
> -               RPRINTF("could not listen on socket: %d\n", errno);
> -               goto err_sfd;
> -       }
> -
> -       /*
> -        * The socket s now bound to the address and listening so we
> -        * may now register the fd with tapdisk
> -        */
> -       id =  tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
> -                                           s->server_fd.fd, 0,
> -                                           remus_server_accept, s);
> -       if (id < 0) {
> -               RPRINTF("error registering server connection event
handler: %s",
> -                       strerror(id));
> -               goto err_sfd;
> -       }
> -       s->server_fd.cid = id;
> -
> -       return 0;
> -
> -err_sfd:
> -       CLOSE_FD(s->server_fd.fd);
> -
> -       return rc;
> +       s->stream_fd.fd = t->fd;
> +       s->stream_fd.id = id;
>  }
>
>  /* wait for latest checkpoint to be applied */
> @@ -1566,90 +1249,6 @@ static int unprotected_start(td_driver_t *driver)
>
>
>  /* control */
> -
> -static inline int resolve_address(const char* addr, struct in_addr* ia)
> -{
> -       struct hostent* he;
> -       uint32_t ip;
> -
> -       if (!(he = gethostbyname(addr))) {
> -               RPRINTF("error resolving %s: %d\n", addr, h_errno);
> -               return -1;
> -       }
> -
> -       if (!he->h_addr_list[0]) {
> -               RPRINTF("no address found for %s\n", addr);
> -               return -1;
> -       }
> -
> -       /* network byte order */
> -       ip = *((uint32_t**)he->h_addr_list)[0];
> -       ia->s_addr = ip;
> -
> -       return 0;
> -}
> -
> -static int get_args(td_driver_t *driver, const char* name)
> -{
> -       struct tdremus_state *state = (struct tdremus_state
*)driver->data;
> -       char* host;
> -       char* port;
> -//  char* driver_str;
> -//  char* parent;
> -//  int type;
> -//  char* path;
> -//  unsigned long ulport;
> -//  int i;
> -//  struct sockaddr_in server_addr_in;
> -
> -       int gai_status;
> -       int valid_addr;
> -       struct addrinfo gai_hints;
> -       struct addrinfo *servinfo, *servinfo_itr;
> -
> -       memset(&gai_hints, 0, sizeof gai_hints);
> -       gai_hints.ai_family = AF_UNSPEC;
> -       gai_hints.ai_socktype = SOCK_STREAM;
> -
> -       port = strchr(name, ':');
> -       if (!port) {
> -               RPRINTF("missing host in %s\n", name);
> -               return -ENOENT;
> -       }
> -       if (!(host = strndup(name, port - name))) {
> -               RPRINTF("unable to allocate host\n");
> -               return -ENOMEM;
> -       }
> -       port++;
> -
> -       if ((gai_status = getaddrinfo(host, port, &gai_hints, &servinfo))
!= 0) {
> -               RPRINTF("getaddrinfo error: %s\n",
gai_strerror(gai_status));
> -               return -ENOENT;
> -       }
> -
> -       /* TODO: do something smarter here */
> -       valid_addr = 0;
> -       for(servinfo_itr = servinfo; servinfo_itr != NULL; servinfo_itr =
servinfo_itr->ai_next) {
> -               void *addr;
> -               char *ipver;
> -
> -               if (servinfo_itr->ai_family == AF_INET) {
> -                       valid_addr = 1;
> -                       memset(&state->sa, 0, sizeof(state->sa));
> -                       state->sa = *(struct sockaddr_in
*)servinfo_itr->ai_addr;
> -                       break;
> -               }
> -       }
> -       freeaddrinfo(servinfo);
> -
> -       if (!valid_addr)
> -               return -ENOENT;
> -
> -       RPRINTF("host: %s, port: %d\n", inet_ntoa(state->sa.sin_addr),
ntohs(state->sa.sin_port));
> -
> -       return 0;
> -}
> -
>  static int switch_mode(td_driver_t *driver, enum tdremus_mode mode)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
> @@ -1844,11 +1443,11 @@ static int ctl_register(struct tdremus_state *s)
>         RPRINTF("registering ctl fifo\n");
>
>         /* register ctl fd */
> -       s->ctl_fd.cid =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s->ctl_fd.fd, 0,
ctl_request, s);
> +       s->ctl_fd.id =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s->ctl_fd.fd, 0,
ctl_request, s);
>
> -       if (s->ctl_fd.cid < 0) {
> +       if (s->ctl_fd.id < 0) {
>                 RPRINTF("error registering ctrl FIFO %s: %d\n",
> -                       s->ctl_path, s->ctl_fd.cid);
> +                       s->ctl_path, s->ctl_fd.id);
>                 return -1;
>         }
>
> @@ -1859,7 +1458,7 @@ static void ctl_unregister(struct tdremus_state *s)
>  {
>         RPRINTF("unregistering ctl fifo\n");
>
> -       UNREGISTER_EVENT(s->ctl_fd.cid);
> +       UNREGISTER_EVENT(s->ctl_fd.id);
>  }
>
>  /* interface */
> @@ -1867,6 +1466,7 @@ static void ctl_unregister(struct tdremus_state *s)
>  static int tdremus_open(td_driver_t *driver, td_image_t *image,
td_uuid_t uuid)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +       td_replication_connect_t *t = &s->t;
>         int rc;
>         const char *name = image->name;
>         td_flag_t flags = image->flags;
> @@ -1877,7 +1477,6 @@ static int tdremus_open(td_driver_t *driver,
td_image_t *image, td_uuid_t uuid)
>         remus_image = image;
>
>         memset(s, 0, sizeof(*s));
> -       s->server_fd.fd = -1;
>         s->stream_fd.fd = -1;
>         s->ctl_fd.fd = -1;
>         s->msg_fd.fd = -1;
> @@ -1886,8 +1485,12 @@ static int tdremus_open(td_driver_t *driver,
td_image_t *image, td_uuid_t uuid)
>          * the driver stack from the stream_fd event handler */
>         s->tdremus_driver = driver;
>
> +       t->log_prefix = "remus";
> +       t->retry_timeout_s = REMUS_CONNRETRY_TIMEOUT;
> +       t->max_connections = 10;
> +       t->callback = remus_server_established;
>         /* parse name to get info etc */
> -       if ((rc = get_args(driver, name)))
> +       if ((rc = td_replication_connect_init(t, name)))
>                 return rc;
>
>         if ((rc = ctl_open(driver, name))) {
> @@ -1901,7 +1504,7 @@ static int tdremus_open(td_driver_t *driver,
td_image_t *image, td_uuid_t uuid)
>                 return rc;
>         }
>
> -       if (!(rc = remus_bind(s)))
> +       if (!(rc = td_replication_server_start(t)))
>                 rc = switch_mode(driver, mode_backup);
>         else if (rc == -2)
>                 rc = switch_mode(driver, mode_primary);
> @@ -1932,8 +1535,7 @@ static int tdremus_close(td_driver_t *driver)
>         if (s->ramdisk.inprogress)
>                 hashtable_destroy(s->ramdisk.inprogress, 0);
>
> -       close_server_fd(s);
> -       close_stream_fd(s);
> +       td_replication_connect_kill(&s->t);
>         ctl_unregister(s);
>         ctl_close(s);
>
> diff --git a/tools/blktap2/drivers/block-replication.c
b/tools/blktap2/drivers/block-replication.c
> new file mode 100644
> index 0000000..e4b2679
> --- /dev/null
> +++ b/tools/blktap2/drivers/block-replication.c
> @@ -0,0 +1,468 @@
> +/*
> + * Copyright (C) 2014 FUJITSU LIMITED
> + * Author: Wen Congyang <wency@cn.fujitsu.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU Lesser General Public License as
published
> + * by the Free Software Foundation; version 2.1 only. with the special
> + * exception on linking described in file LICENSE.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU Lesser General Public License for more details.
> + */
> +
> +#include "tapdisk-server.h"
> +#include "block-replication.h"
> +
> +#include <string.h>
> +#include <errno.h>
> +#include <sys/types.h>
> +#include <unistd.h>
> +#include <fcntl.h>
> +#include <syslog.h>
> +#include <stdlib.h>
> +#include <arpa/inet.h>
> +
> +#undef DPRINTF
> +#undef EPRINTF
> +#define DPRINTF(_f, _a...) syslog (LOG_DEBUG, "%s: " _f, log_prefix, ##
_a)
> +#define EPRINTF(_f, _a...) syslog (LOG_ERR, "%s: " _f, log_prefix, ## _a)
> +
> +/* connection status */
> +enum {
> +       connection_none,
> +       connection_in_progress,
> +       connection_established,
> +       connection_closed,
> +};
> +
> +/* common functions */
> +/* args should be host:port */
> +static int get_args(td_replication_connect_t *t, const char* name)
> +{
> +       char* host;
> +       const char* port;
> +       int gai_status;
> +       int valid_addr;
> +       struct addrinfo gai_hints;
> +       struct addrinfo *servinfo, *servinfo_itr;
> +       const char *log_prefix = t->log_prefix;
> +
> +       memset(&gai_hints, 0, sizeof gai_hints);
> +       gai_hints.ai_family = AF_UNSPEC;
> +       gai_hints.ai_socktype = SOCK_STREAM;
> +
> +       port = strchr(name, ':');
> +       if (!port) {
> +               EPRINTF("missing host in %s\n", name);
> +               return -ENOENT;
> +       }
> +       if (!(host = strndup(name, port - name))) {
> +               EPRINTF("unable to allocate host\n");
> +               return -ENOMEM;
> +       }
> +       port++;
> +       if ((gai_status = getaddrinfo(host, port,
> +                                     &gai_hints, &servinfo)) != 0) {
> +               EPRINTF("getaddrinfo error: %s\n",
gai_strerror(gai_status));
> +               free(host);
> +               return -ENOENT;
> +       }
> +       free(host);
> +
> +       /* TODO: do something smarter here */
> +       valid_addr = 0;
> +       for (servinfo_itr = servinfo; servinfo_itr != NULL;
> +            servinfo_itr = servinfo_itr->ai_next) {
> +               if (servinfo_itr->ai_family == AF_INET) {
> +                       valid_addr = 1;
> +                       memset(&t->sa, 0, sizeof(t->sa));
> +                       t->sa = *(struct sockaddr_in
*)servinfo_itr->ai_addr;
> +                       break;
> +               }
> +       }
> +       freeaddrinfo(servinfo);
> +
> +       if (!valid_addr)
> +               return -ENOENT;
> +
> +       DPRINTF("host: %s, port: %d\n", inet_ntoa(t->sa.sin_addr),
> +               ntohs(t->sa.sin_port));
> +
> +       return 0;
> +}
> +
> +int td_replication_connect_init(td_replication_connect_t *t, const char
*name)
> +{
> +       int rc;
> +
> +       rc = get_args(t, name);
> +       if (rc)
> +               return rc;
> +
> +       t->listen_fd = -1;
> +       t->id = -1;
> +       t->status = connection_none;
> +       return 0;
> +}
> +
> +int td_replication_connect_status(td_replication_connect_t *t)
> +{
> +       const char *log_prefix = t->log_prefix;
> +
> +       switch (t->status) {
> +       case connection_none:
> +       case connection_closed:
> +               return -1;
> +       case connection_in_progress:
> +               return 0;
> +       case connection_established:
> +               return 1;
> +       default:
> +               EPRINTF("td_replication_connect is corruptted\n");
> +               return -2;
> +       }
> +}
> +
> +void td_replication_connect_kill(td_replication_connect_t *t)
> +{
> +       if (t->status != connection_in_progress &&
> +           t->status != connection_established)
> +               return;
> +
> +       UNREGISTER_EVENT(t->id);
> +       CLOSE_FD(t->fd);
> +       CLOSE_FD(t->listen_fd);
> +       t->status = connection_closed;
> +}
> +
> +/* server */
> +static void td_replication_server_accept(event_id_t id, char mode,
> +                                        void *private);
> +
> +int td_replication_server_start(td_replication_connect_t *t)
> +{
> +       int opt;
> +       int rc = -1;
> +       event_id_t id;
> +       int fd;
> +       const char *log_prefix = t->log_prefix;
> +
> +       if (t->status == connection_in_progress ||
> +           t->status == connection_established)
> +               return rc;
> +
> +       fd = socket(AF_INET, SOCK_STREAM, 0);
> +       if (fd < 0) {
> +               EPRINTF("could not create server socket: %d\n", errno);
> +               return rc;
> +       }
> +
> +       opt = 1;
> +       if (setsockopt(fd, SOL_SOCKET,
> +                      SO_REUSEADDR, &opt, sizeof(opt)) < 0)
> +               DPRINTF("Error setting REUSEADDR on %d: %d\n", fd, errno);
> +
> +       if (bind(fd, (struct sockaddr *)&t->sa, sizeof(t->sa)) < 0) {
> +               DPRINTF("could not bind server socket %d to %s:%d: %d
%s\n",
> +                       fd, inet_ntoa(t->sa.sin_addr),
> +                       ntohs(t->sa.sin_port), errno, strerror(errno));
> +               if (errno == EADDRNOTAVAIL)
> +                       rc = -2;
> +               goto err;
> +       }
> +
> +       if (listen(fd, t->max_connections)) {
> +               EPRINTF("could not listen on socket: %d\n", errno);
> +               goto err;
> +       }
> +
> +       /*
> +        * The socket is now bound to the address and listening so we
> +        * may now register the fd with tapdisk
> +        */
> +       id =  tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
> +                                           fd, 0,
> +                                           td_replication_server_accept,
t);
> +       if (id < 0) {
> +               EPRINTF("error registering server connection event
handler: %s",
> +                       strerror(id));
> +               goto err;
> +       }
> +       t->listen_fd = fd;
> +       t->id = id;
> +       t->status = connection_in_progress;
> +
> +       return 0;
> +
> +err:
> +       close(fd);
> +       return rc;
> +}
> +
> +static void td_replication_server_accept(event_id_t id, char mode,
> +                                        void *private)
> +{
> +       td_replication_connect_t *t = private;
> +       int fd;
> +       const char *log_prefix = t->log_prefix;
> +
> +       /* XXX: add address-based black/white list */
> +       fd = accept(t->listen_fd, NULL, NULL);
> +       if (fd < 0) {
> +               EPRINTF("error accepting connection: %d\n", errno);
> +               return;
> +       }
> +
> +       if (t->status == connection_established) {
> +               EPRINTF("connection is already established\n");
> +               close(fd);
> +               return;
> +       }
> +
> +       DPRINTF("server accepted connection\n");
> +       t->fd = fd;
> +       t->status = connection_established;
> +       t->callback(t, 0);
> +}
> +
> +int td_replication_server_restart(td_replication_connect_t *t)
> +{
> +       switch (t->status) {
> +       case connection_in_progress:
> +               return 0;
> +       case connection_established:
> +               CLOSE_FD(t->fd);
> +               t->status = connection_in_progress;
> +               return 0;
> +       case connection_none:
> +       case connection_closed:
> +               return td_replication_server_start(t);
> +       default:
> +               /* not reached */
> +               return -1;
> +       }
> +}
> +
> +/* client */
> +static void td_replication_retry_connect_event(event_id_t id, char mode,
> +                                              void *private);
> +static void td_replication_connect_event(event_id_t id, char mode,
> +                                        void *private);
> +int td_replication_client_start(td_replication_connect_t *t)
> +{
> +       event_id_t id;
> +       int fd;
> +       int rc;
> +       int flags;
> +       const char *log_prefix = t->log_prefix;
> +
> +       if (t->status == connection_in_progress ||
> +           t->status == connection_established)
> +               return ERROR_INTERNAL;
> +
> +       DPRINTF("client connecting to %s:%d...\n",
> +               inet_ntoa(t->sa.sin_addr), ntohs(t->sa.sin_port));
> +
> +       if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
> +               EPRINTF("could not create client socket: %d\n", errno);
> +               return ERROR_INTERNAL;
> +       }
> +
> +       /* make socket nonblocking */
> +       if ((flags = fcntl(fd, F_GETFL, 0)) == -1)
> +               flags = 0;
> +       if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
> +               EPRINTF("error setting fd %d to non block mode\n", fd);
> +               goto err;
> +       }
> +
> +       /*
> +        * once we have created the socket and populated the address,
> +        * we can now start our non-blocking connect. rather than
> +        * duplicating code we trigger a timeout on the socket fd,
> +        * which calls out nonblocking connect code
> +        */
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT, fd, 0,
> +
td_replication_retry_connect_event,
> +                                          t);
> +       if(id < 0) {
> +               EPRINTF("error registering timeout client connection
event handler: %s\n",
> +                       strerror(id));
> +               goto err;
> +       }
> +
> +       t->fd = fd;
> +       t->id = id;
> +       t->status = connection_in_progress;
> +       return 0;
> +
> +err:
> +       close(fd);
> +       return ERROR_INTERNAL;
> +}
> +
> +static void td_replication_client_failed(td_replication_connect_t *t,
int rc)
> +{
> +       td_replication_connect_kill(t);
> +       t->callback(t, rc);
> +}
> +
> +static void td_replication_client_done(td_replication_connect_t *t)
> +{
> +       UNREGISTER_EVENT(t->id);
> +       t->status = connection_established;
> +       t->callback(t, 0);
> +}
> +
> +static int td_replication_retry_connect(td_replication_connect_t *t)
> +{
> +       event_id_t id;
> +       const char *log_prefix = t->log_prefix;
> +
> +       UNREGISTER_EVENT(t->id);
> +
> +       DPRINTF("connect to server 1 second later");
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
> +                                          t->fd, t->retry_timeout_s,
> +
td_replication_retry_connect_event,
> +                                          t);
> +       if (id < 0) {
> +               EPRINTF("error registering timeout client connection
event handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
> +       }
> +
> +       t->id = id;
> +       return 0;
> +}
> +
> +static int td_replication_wait_connect_done(td_replication_connect_t *t)
> +{
> +       event_id_t id;
> +       const char *log_prefix = t->log_prefix;
> +
> +       UNREGISTER_EVENT(t->id);
> +
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_WRITE_FD,
> +                                          t->fd, 0,
> +                                          td_replication_connect_event,
t);
> +       if (id < 0) {
> +               EPRINTF("error registering client connection event
handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
> +       }
> +       t->id = id;
> +
> +       return 0;
> +}
> +
> +/* return 1 if we need to reconnect to backup server */
> +static int check_connect_errno(int err)
> +{
> +       /*
> +        * The fd is non-block, so we will not get ETIMEDOUT
> +        * after calling connect(). We only can get this errno
> +        * by getsockopt().
> +        */
> +       if (err == ECONNREFUSED || err == ENETUNREACH ||
> +           err == EAGAIN || err == ECONNABORTED ||
> +           err == ETIMEDOUT)
> +           return 1;
> +
> +       return 0;
> +}
> +
> +static void td_replication_retry_connect_event(event_id_t id, char mode,
> +                                              void *private)
> +{
> +       td_replication_connect_t *t = private;
> +       int rc, ret;
> +       const char *log_prefix = t->log_prefix;
> +
> +       /* do a non-blocking connect */
> +       ret = connect(t->fd, (struct sockaddr *)&t->sa, sizeof(t->sa));
> +       if (ret) {
> +               if (errno == EINPROGRESS) {
> +                       /*
> +                        * the connect returned EINPROGRESS (nonblocking
> +                        * connect) we must wait for the fd to be
writeable
> +                        * to determine if the connect worked
> +                        */
> +                       rc = td_replication_wait_connect_done(t);
> +                       if (rc)
> +                               goto fail;
> +                       return;
> +               }
> +
> +               if (check_connect_errno(errno)) {
> +                       rc = td_replication_retry_connect(t);
> +                       if (rc)
> +                               goto fail;
> +                       return;
> +               }
> +
> +               /* not recoverable */
> +               EPRINTF("error connection to server %s\n",
strerror(errno));
> +               rc = ERROR_CONNECTION;
> +               goto fail;
> +       }
> +
> +       /* The connection is established unexpectedly */
> +       td_replication_client_done(t);
> +
> +       return;
> +
> +fail:
> +       td_replication_client_failed(t, rc);
> +}
> +
> +/* callback when nonblocking connect() is finished */
> +static void td_replication_connect_event(event_id_t id, char mode,
> +                                        void *private)
> +{
> +       int socket_errno;
> +       socklen_t socket_errno_size;
> +       td_replication_connect_t *t = private;
> +       int rc;
> +       const char *log_prefix = t->log_prefix;
> +
> +       /* check to see if the connect succeeded */
> +       socket_errno_size = sizeof(socket_errno);
> +       if (getsockopt(t->fd, SOL_SOCKET, SO_ERROR,
> +                      &socket_errno, &socket_errno_size)) {
> +               EPRINTF("error getting socket errno\n");
> +               return;
> +       }
> +
> +       DPRINTF("socket connect returned %d\n", socket_errno);
> +
> +       if (socket_errno) {
> +               /* the connect did not succeed */
> +               if (check_connect_errno(socket_errno)) {
> +                       /*
> +                        * we can probably assume that the backup is down.
> +                        * just try again later
> +                        */
> +                       rc = td_replication_retry_connect(t);
> +                       if (rc)
> +                               goto fail;
> +
> +                       return;
> +               } else {
> +                       EPRINTF("socket connect returned %d, giving up\n",
> +                               socket_errno);
> +                       rc = ERROR_CONNECTION;
> +                       goto fail;
> +               }
> +       }
> +
> +       td_replication_client_done(t);
> +
> +       return;
> +
> +fail:
> +       td_replication_client_failed(t, rc);
> +}
> diff --git a/tools/blktap2/drivers/block-replication.h
b/tools/blktap2/drivers/block-replication.h
> new file mode 100644
> index 0000000..0bd6e71
> --- /dev/null
> +++ b/tools/blktap2/drivers/block-replication.h
> @@ -0,0 +1,113 @@
> +/*
> + * Copyright (C) 2014 FUJITSU LIMITED
> + * Author: Wen Congyang <wency@cn.fujitsu.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU Lesser General Public License as
published
> + * by the Free Software Foundation; version 2.1 only. with the special
> + * exception on linking described in file LICENSE.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU Lesser General Public License for more details.
> + */
> +
> +#ifndef BLOCK_REPLICATION_H
> +#define BLOCK_REPLICATION_H
> +
> +#include "scheduler.h"
> +#include <sys/socket.h>
> +#include <netdb.h>
> +
> +#define CONTAINER_OF(inner_ptr, outer, member_name)                    \
> +       ({                                                              \
> +               typeof(outer) *container_of_;                           \
> +               container_of_ = (void*)((char*)(inner_ptr) -            \
> +                               offsetof(typeof(outer), member_name));  \
> +               (void)(&container_of_->member_name ==                   \
> +                      (typeof(inner_ptr))0) /* type check */;          \
> +               container_of_;                                          \
> +       })
> +
> +#define UNREGISTER_EVENT(id)                                   \
> +       do {                                                    \
> +               if (id >= 0) {                                  \
> +                       tapdisk_server_unregister_event(id);    \
> +                       id = -1;                                \
> +               }                                               \
> +       } while (0)
> +#define CLOSE_FD(fd)                   \
> +       do {                            \
> +               if (fd >= 0) {          \
> +                       close(fd);      \
> +                       fd = -1;        \
> +               }                       \
> +       } while (0)
> +
> +enum {
> +       ERROR_INTERNAL = -1,
> +       ERROR_IO = -2,
> +       ERROR_CONNECTION = -3,
> +       ERROR_CLOSE = -4,
> +};
> +
> +typedef struct td_replication_connect td_replication_connect_t;
> +typedef void td_replication_callback(td_replication_connect_t *r, int
rc);
> +
> +struct td_replication_connect {
> +       /*
> +        * caller must fill these in before calling
> +        * td_replication_connect_init()
> +        */
> +       const char *log_prefix;
> +       td_replication_callback *callback;
> +       int retry_timeout_s;
> +       int max_connections;
> +       /*
> +        * The caller uses this fd to read/write after
> +        * the connection is established
> +        */
> +       int fd;
> +
> +       /* private */
> +       struct sockaddr_in sa;
> +       int listen_fd;
> +       event_id_t id;
> +
> +       int status;
> +};
> +
> +/* return -errno if failure happened, otherwise return 0 */
> +int td_replication_connect_init(td_replication_connect_t *t, const char
*name);
> +/*
> + * Return value:
> + *   -1: connection is closed or not connected
> + *    0: connection is in progress
> + *    1: connection is established
> + */
> +int td_replication_connect_status(td_replication_connect_t *t);
> +void td_replication_connect_kill(td_replication_connect_t *t);
> +
> +/*
> + * Return value:
> + *   -2: this caller should be client
> + *   -1: error
> + *    0: connection is in progress
> + */
> +int td_replication_server_start(td_replication_connect_t *t);
> +/*
> + * Return value:
> + *   -2: this caller should be client
> + *   -1: error
> + *    0: connection is in progress
> + */
> +int td_replication_server_restart(td_replication_connect_t *t);
> +/*
> + * Return value:
> + *   -1: error
> + *    0: connection is in progress
> + */
> +int td_replication_client_start(td_replication_connect_t *t);
> +
> +#endif
> --
> 1.9.3
>

Acked-by:  Shriram Rajagopalan <rshriram@cs.ubc.ca>

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

<p dir=3D"ltr">On Sep 5, 2014 5:31 AM, &quot;Wen Congyang&quot; &lt;<a href=
=3D"mailto:wency@cn.fujitsu.com">wency@cn.fujitsu.com</a>&gt; wrote:<br>
&gt;<br>
&gt; =C2=A0 =C2=A0COLO will reuse them.<br>
&gt;<br>
&gt; Signed-off-by: Wen Congyang &lt;<a href=3D"mailto:wency@cn.fujitsu.com=
">wency@cn.fujitsu.com</a>&gt;<br>
&gt; Cc: Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca">rshr=
iram@cs.ubc.ca</a>&gt;<br>
&gt; ---<br>
&gt; =C2=A0tools/blktap2/drivers/Makefile=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 |=C2=A0 =C2=A02 +-<br>
&gt; =C2=A0tools/blktap2/drivers/block-remus.c=C2=A0 =C2=A0 =C2=A0 =C2=A0| =
494 +++---------------------------<br>
&gt; =C2=A0tools/blktap2/drivers/block-replication.c | 468 ++++++++++++++++=
++++++++++++<br>
&gt; =C2=A0tools/blktap2/drivers/block-replication.h | 113 +++++++<br>
&gt; =C2=A04 files changed, 630 insertions(+), 447 deletions(-)<br>
&gt; =C2=A0create mode 100644 tools/blktap2/drivers/block-replication.c<br>
&gt; =C2=A0create mode 100644 tools/blktap2/drivers/block-replication.h<br>
&gt;<br>
&gt; diff --git a/tools/blktap2/drivers/Makefile b/tools/blktap2/drivers/Ma=
kefile<br>
&gt; index 37c3485..3d8ed8a 100644<br>
&gt; --- a/tools/blktap2/drivers/Makefile<br>
&gt; +++ b/tools/blktap2/drivers/Makefile<br>
&gt; @@ -23,7 +23,7 @@ endif<br>
&gt;<br>
&gt; =C2=A0VHDLIBS=C2=A0 =C2=A0 :=3D -L$(LIBVHDDIR) -lvhd<br>
&gt;<br>
&gt; -REMUS-OBJS=C2=A0 :=3D block-remus.o<br>
&gt; +REMUS-OBJS=C2=A0 :=3D block-remus.o block-replication.o<br>
&gt; =C2=A0REMUS-OBJS=C2=A0 +=3D hashtable.o<br>
&gt; =C2=A0REMUS-OBJS=C2=A0 +=3D hashtable_itr.o<br>
&gt; =C2=A0REMUS-OBJS=C2=A0 +=3D hashtable_utility.o<br>
&gt; diff --git a/tools/blktap2/drivers/block-remus.c b/tools/blktap2/drive=
rs/block-remus.c<br>
&gt; index 5d27d41..8b6f157 100644<br>
&gt; --- a/tools/blktap2/drivers/block-remus.c<br>
&gt; +++ b/tools/blktap2/drivers/block-remus.c<br>
&gt; @@ -40,6 +40,7 @@<br>
&gt; =C2=A0#include &quot;hashtable.h&quot;<br>
&gt; =C2=A0#include &quot;hashtable_itr.h&quot;<br>
&gt; =C2=A0#include &quot;hashtable_utility.h&quot;<br>
&gt; +#include &quot;block-replication.h&quot;<br>
&gt;<br>
&gt; =C2=A0#include &lt;errno.h&gt;<br>
&gt; =C2=A0#include &lt;inttypes.h&gt;<br>
&gt; @@ -49,10 +50,7 @@<br>
&gt; =C2=A0#include &lt;string.h&gt;<br>
&gt; =C2=A0#include &lt;sys/time.h&gt;<br>
&gt; =C2=A0#include &lt;sys/types.h&gt;<br>
&gt; -#include &lt;sys/socket.h&gt;<br>
&gt; -#include &lt;netdb.h&gt;<br>
&gt; =C2=A0#include &lt;netinet/in.h&gt;<br>
&gt; -#include &lt;arpa/inet.h&gt;<br>
&gt; =C2=A0#include &lt;sys/param.h&gt;<br>
&gt; =C2=A0#include &lt;sys/sysctl.h&gt;<br>
&gt; =C2=A0#include &lt;unistd.h&gt;<br>
&gt; @@ -67,22 +65,6 @@<br>
&gt;<br>
&gt; =C2=A0#define RPRINTF(_f, _a...) syslog (LOG_DEBUG, &quot;remus: &quot=
; _f, ## _a)<br>
&gt;<br>
&gt; -#define UNREGISTER_EVENT(id)=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=A0 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0tapdisk_server_unregister_event(id);=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=A0id =3D -1;=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=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0\<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; -<br>
&gt; -#define CLOSE_FD(fd)=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 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (fd &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0close(fd);=C2=A0 =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=A0fd =3D -1;=C2=A0 =C2=A0 =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\<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; -<br>
&gt; =C2=A0#define MAX_REMUS_REQUEST=C2=A0 =C2=A0 =C2=A0 =C2=A0TAPDISK_DATA=
_REQUESTS<br>
&gt;<br>
&gt; =C2=A0enum tdremus_mode {<br>
&gt; @@ -92,13 +74,6 @@ enum tdremus_mode {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 mode_backup<br>
&gt; =C2=A0};<br>
&gt;<br>
&gt; -enum {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_INTERNAL =3D -1,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_IO =3D -2,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_CONNECTION =3D -3,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_CLOSE =3D -4,<br>
&gt; -};<br>
&gt; -<br>
&gt; =C2=A0struct tdremus_req {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 td_request_t treq;<br>
&gt; =C2=A0};<br>
&gt; @@ -167,21 +142,9 @@ struct ramdisk_write_cbdata {<br>
&gt;<br>
&gt; =C2=A0typedef void (*queue_rw_t) (td_driver_t *driver, td_request_t tr=
eq);<br>
&gt;<br>
&gt; -/*<br>
&gt; - * If cid, rid and wid are -1, fd must be -1. It means that<br>
&gt; - * we are in unpritected mode or we don&#39;t start to connect<br>
&gt; - * to backup.<br>
&gt; - * If fd is an valid fd:<br>
&gt; - *=C2=A0 cid is valid, rid and wid must be invalid. It means that<br>
&gt; - *=C2=A0 =C2=A0 =C2=A0 the connection is in progress.<br>
&gt; - *=C2=A0 cid is invalid. rid or wid must be valid. It means that<br>
&gt; - *=C2=A0 =C2=A0 =C2=A0 the connection is established.<br>
&gt; - */<br>
&gt; =C2=A0typedef struct poll_fd {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int=C2=A0 =C2=A0 =C2=A0 =C2=A0 fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t cid;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t rid;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t wid;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; =C2=A0} poll_fd_t;<br>
&gt;<br>
&gt; =C2=A0struct tdremus_state {<br>
&gt; @@ -195,9 +158,7 @@ struct tdremus_state {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 char*=C2=A0 =C2=A0 =C2=A0msg_path; /* outp=
ut completion message here */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 poll_fd_t msg_fd;<br>
&gt;<br>
&gt; -=C2=A0 /* replication host */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct sockaddr_in sa;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0poll_fd_t server_fd;=C2=A0 =C2=A0 /* serve=
r listen port */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_t t;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 poll_fd_t stream_fd;=C2=A0 =C2=A0 =C2=A0/*=
 replication channel */<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; @@ -777,28 +738,8 @@ static int mwrite(int fd, void* buf, size_t len)<=
br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 select(fd + 1, NULL, &amp;wfds, NULL, &amp=
;tv);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -<br>
&gt; -static void inline close_stream_fd(struct tdremus_state *s)<br>
&gt; -{<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.cid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.rid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.wid);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* close the connection */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;stream_fd.fd);<br>
&gt; -}<br>
&gt; -<br>
&gt; -static void close_server_fd(struct tdremus_state *s)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;server_fd.cid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;server_fd.fd);<br>
&gt; -}<br>
&gt; -<br>
&gt; =C2=A0/* primary functions */<br>
&gt; -static void remus_client_event(event_id_t, char mode, void *private);=
<br>
&gt; -static void remus_connect_event(event_id_t id, char mode, void *priva=
te);<br>
&gt; -static void remus_retry_connect_event(event_id_t id, char mode, void =
*private);<br>
&gt; +static void remus_client_event(event_id_t id, char mode, void *privat=
e);<br>
&gt; =C2=A0static int primary_forward_request(struct tdremus_state *s,<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=A0const td_request_t *=
treq);<br>
&gt;<br>
&gt; @@ -808,56 +749,15 @@ static int primary_forward_request(struct tdremu=
s_state *s,<br>
&gt; =C2=A0 */<br>
&gt; =C2=A0static void primary_failed(struct tdremus_state *s, int rc)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_kill(&amp;s-&gt;t);=
<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (rc =3D=3D ERROR_INTERNAL)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
switch to unprotected mode due to internal error&quot;);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (rc =3D=3D ERROR_CLOSE)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
switch to unprotected mode before closing&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;<a href=3D"http://s=
tream_fd.id">stream_fd.id</a>);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch_mode(s-&gt;tdremus_driver, mode_unp=
rotected);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int primary_do_connect(struct tdremus_state *state)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int flags;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;client connecting to %s:%d..=
.\n&quot;,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0inet_ntoa(stat=
e-&gt;sa.sin_addr), ntohs(state-&gt;sa.sin_port));<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((fd =3D socket(PF_INET, SOCK_STREAM, 0=
)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not create client socket: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.fd =3D fd;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* make socket nonblocking */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((flags =3D fcntl(fd, F_GETFL, 0)) =3D=
=3D -1)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flags =3D 0;<b=
r>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)=
 =3D=3D -1) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error setting fd %d to non block mode\n&quot;, fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * once we have created the socket and pop=
ulated the address,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * we can now start our non-blocking conne=
ct. rather than<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * duplicating code we trigger a timeout o=
n the socket fd,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * which calls out nonblocking connect cod=
e<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tapdisk_server_register_event(S=
CHEDULER_POLL_TIMEOUT, fd, 0,<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=A0 remus_retry_connect_event,<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=A0 state)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.cid =3D id;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; =C2=A0static int remus_handle_queued_io(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct req_ring *queued_io =3D &amp;s-&gt;=
queued_io;<br>
&gt; @@ -882,184 +782,35 @@ static int remus_handle_queued_io(struct tdremu=
s_state *s)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int remus_connection_done(struct tdremus_state *s)<br>
&gt; +static void remus_client_established(td_replication_connect_t *t, int=
 rc)<br>
&gt; =C2=A0{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D CONTAINER_OF(t=
, *s, t);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 event_id_t id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect succeeded */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* unregister this function and register a=
 new event handler */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, s-&gt;stream_fd.fd,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect succeeded */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, t-&gt;fd,<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=A00, remus_client_event, s);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(id &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
error registering client event handler: %s\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 strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* handle the queued requests */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return remus_handle_queued_io(s);<br>
&gt; -}<br>
&gt; -<br>
&gt; -static int remus_retry_connect(struct tdremus_state *s)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;connect to backup 1 second l=
ater&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_TIMEOUT,<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 s-&gt;stream_fd.fd,<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 REMUS_CONNRETRY_TIMEOUT,<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 remus_retry_connect_event, s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D id;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; -static int remus_wait_connect_done(struct tdremus_state *s)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_WRITE_FD,<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 s-&gt;stream_fd.fd, 0,<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 remus_connect_event, s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering client connection event handler: %s\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=A0strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; -/* return 1 if we need to reconnect to backup */<br>
&gt; -static int check_connect_errno(int err)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The fd is non-block, so we will not get=
 ETIMEDOUT<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * after calling connect(). We only can ge=
t this errno<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * by getsockopt().<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (err =3D=3D ECONNREFUSED || err =3D=3D =
ENETUNREACH ||<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D EAGAIN || err =3D=
=3D ECONNABORTED ||<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D ETIMEDOUT)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; -static void remus_retry_connect_event(event_id_t id, char mode, void =
*private)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)private;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc, ret;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* do a non-blocking connect */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D connect(s-&gt;stream_fd.fd,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0(struct sockaddr *)&amp;s-&gt;sa,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0sizeof(s-&gt;sa));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EINPROGRESS) {<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/*<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 * the connect returned EINPROGRESS (nonblocking<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 * connect) we must wait for the fd to be writeable<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 * to determine if the connect worked<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 */<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=A0rc =3D remus_wait_connect_done(s);<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=A0if (rc)<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=A0goto fail;<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=A0return;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(errno)) {<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=A0rc =3D remus_retry_connect(s);<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=A0if (rc)<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=A0goto fail;<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=A0return;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* not recover=
able */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error connection to server %s\n&quot;, strerror(errno));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D ERROR_C=
ONNECTION;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The connection is established unexpecte=
dly */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D remus_connection_done(s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -<br>
&gt; -fail:<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed(s, rc);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -}<br>
&gt; -<br>
&gt; -/* callback when nonblocking connect() is finished */<br>
&gt; -static void remus_connect_event(event_id_t id, char mode, void *priva=
te)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int socket_errno;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0socklen_t socket_errno_size;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)private;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* check to see if the connect succeeded *=
/<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0socket_errno_size =3D sizeof(socket_errno)=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (getsockopt(s-&gt;stream_fd.fd, SOL_SOC=
KET, SO_ERROR,<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;socket_errno, &amp;socket_errno_size)) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error getting socket errno\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, ERROR_INTERNAL);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;socket connect returned %d\n=
&quot;, socket_errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D t-&gt;fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://stream_fd.id">stre=
am_fd.id</a> =3D id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (socket_errno) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect=
 did not succeed */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(socket_errno)) {<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/*<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 * we can probably assume that the backup is down.<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 * just try again later<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 */<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=A0rc =3D remus_retry_connect(s);<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=A0if (rc)<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=A0goto fail;<br>
&gt; -<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=A0return;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<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=A0RPRINTF(&quot;socket connect returned %d, giving up\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=A0socket_errno);<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=A0rc =3D ERROR_CONNECTION;<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=A0goto fail;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D remus_connection_done(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* handle the queued requests */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D remus_handle_queued_io(s);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (rc)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -<br>
&gt; -fail:<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed(s, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, rc);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -<br>
&gt; =C2=A0/*<br>
&gt; =C2=A0 * we install this event handler on the primary once we have<br>
&gt; =C2=A0 * connected to the backup.<br>
&gt; @@ -1142,19 +893,21 @@ static int primary_forward_request(struct tdrem=
us_state *s,<br>
&gt; =C2=A0static void primary_queue_write(td_driver_t *driver, td_request_=
t treq)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc, ret;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 // RPRINTF(&quot;write: stream_fd.fd: %d\n=
&quot;, s-&gt;stream_fd.fd);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if(s-&gt;stream_fd.fd &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D td_replication_connect_status(&amp=
;s-&gt;t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if(ret =3D=3D -1) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
connecting to backup...\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D primary=
_do_connect(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;t.callba=
ck =3D remus_client_established;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D td_repl=
ication_client_start(&amp;s-&gt;t);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (rc)<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 goto fail;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* The connection is not established, just=
 queue the request */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;stream_fd.cid &gt;=3D 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret !=3D 1) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ring_add_reque=
st(&amp;s-&gt;queued_io, &amp;treq);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; @@ -1227,9 +980,7 @@ static int primary_start(td_driver_t *driver)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;queue_flush =3D primary_flush;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;stream_fd.fd =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.wid =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://stream_fd.id">stre=
am_fd.id</a> =3D -1;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt; @@ -1240,100 +991,32 @@ static void remus_server_event(event_id_t id, =
char mode, void *private);<br>
&gt; =C2=A0/* It is called when we find some I/O error */<br>
&gt; =C2=A0static void backup_failed(struct tdremus_state *s, int rc)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_server_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_kill(&amp;s-&gt;t);=
<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* We will switch to unprotected mode in b=
ackup_queue_write() */<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* returns the socket that receives write requests */<br>
&gt; -static void remus_server_accept(event_id_t id, char mode, void* priva=
te)<br>
&gt; +static void remus_server_established(td_replication_connect_t *t, int=
 rc)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state* s =3D (struct tdremu=
s_state *) private;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int stream_fd;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* XXX: add address-based black/white list=
 */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((stream_fd =3D accept(s-&gt;server_fd.=
fd, NULL, NULL)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error accepting connection: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D CONTAINER_OF(t=
, *s, t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * TODO: check to see if we are already re=
plicating.<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * if so just close the connection (or do =
something<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * smarter)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;server accepted connection\n=
&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* rc is always 0 */<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* add tapdisk event for replication strea=
m */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, stream_fd, 0,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, t-&gt;fd, 0,<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=A0remus_server_event, s);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (id &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
error registering connection event handler: %s\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 strerror(errno));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close(stream_f=
d);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication=
_server_restart(t);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* store replication file descriptor */<br=
>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D stream_fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D id;<br>
&gt; -}<br>
&gt; -<br>
&gt; -/* returns -2 if EADDRNOTAVAIL */<br>
&gt; -static int remus_bind(struct tdremus_state* s)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int opt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;server_fd.fd =3D socket(AF_INET=
, SOCK_STREAM, 0)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not create server socket: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0opt =3D 1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (setsockopt(s-&gt;server_fd.fd, SOL_SOC=
KET,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 SO_REUSEADDR, &amp;opt, sizeof(opt)) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
Error setting REUSEADDR on %d: %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=A0s-&gt;server_fd.fd, errno);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (bind(s-&gt;server_fd.fd, (struct socka=
ddr *)&amp;s-&gt;sa,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sizeof(s-&gt;=
sa)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not bind server socket %d to %s:%d: %d %s\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=A0s-&gt;server_fd.fd, inet_ntoa(s-&gt;sa.sin_addr),<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=A0ntohs(s-&gt;sa.sin_port), errno, strerror(errno));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EADDRNOTAVAIL)<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=A0rc =3D -2;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err_sfd;<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (listen(s-&gt;server_fd.fd, 10)) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not listen on socket: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err_sfd;<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The socket s now bound to the address a=
nd listening so we<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * may now register the fd with tapdisk<br=
>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D=C2=A0 tapdisk_server_register_event=
(SCHEDULER_POLL_READ_FD,<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=A0s-&gt;server_fd.fd, 0,<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=A0remus_server_accept, s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering server connection event handler: %s&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=A0strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err_sfd;<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;server_fd.cid =3D id;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -<br>
&gt; -err_sfd:<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;server_fd.fd);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D t-&gt;fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://stream_fd.id">stre=
am_fd.id</a> =3D id;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* wait for latest checkpoint to be applied */<br>
&gt; @@ -1566,90 +1249,6 @@ static int unprotected_start(td_driver_t *drive=
r)<br>
&gt;<br>
&gt;<br>
&gt; =C2=A0/* control */<br>
&gt; -<br>
&gt; -static inline int resolve_address(const char* addr, struct in_addr* i=
a)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct hostent* he;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0uint32_t ip;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(he =3D gethostbyname(addr))) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error resolving %s: %d\n&quot;, addr, h_errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!he-&gt;h_addr_list[0]) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
no address found for %s\n&quot;, addr);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* network byte order */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ip =3D *((uint32_t**)he-&gt;h_addr_list)[0=
];<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0ia-&gt;s_addr =3D ip;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; -static int get_args(td_driver_t *driver, const char* name)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *state =3D (struct td=
remus_state *)driver-&gt;data;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0char* host;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0char* port;<br>
&gt; -//=C2=A0 char* driver_str;<br>
&gt; -//=C2=A0 char* parent;<br>
&gt; -//=C2=A0 int type;<br>
&gt; -//=C2=A0 char* path;<br>
&gt; -//=C2=A0 unsigned long ulport;<br>
&gt; -//=C2=A0 int i;<br>
&gt; -//=C2=A0 struct sockaddr_in server_addr_in;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int gai_status;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int valid_addr;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct addrinfo gai_hints;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct addrinfo *servinfo, *servinfo_itr;<=
br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0memset(&amp;gai_hints, 0, sizeof gai_hints=
);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0gai_hints.ai_family =3D AF_UNSPEC;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0gai_hints.ai_socktype =3D SOCK_STREAM;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0port =3D strchr(name, &#39;:&#39;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!port) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
missing host in %s\n&quot;, name);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(host =3D strndup(name, port - name))=
) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
unable to allocate host\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOMEM=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0port++;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((gai_status =3D getaddrinfo(host, port=
, &amp;gai_hints, &amp;servinfo)) !=3D 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
getaddrinfo error: %s\n&quot;, gai_strerror(gai_status));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: do something smarter here */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0valid_addr =3D 0;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0for(servinfo_itr =3D servinfo; servinfo_it=
r !=3D NULL; servinfo_itr =3D servinfo_itr-&gt;ai_next) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *addr;<br=
>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0char *ipver;<b=
r>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (servinfo_i=
tr-&gt;ai_family =3D=3D AF_INET) {<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=A0valid_addr =3D 1;<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=A0memset(&amp;state-&gt;sa, 0, sizeof(state-&gt;sa));<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=A0state-&gt;sa =3D *(struct sockaddr_in *)servinfo_itr-&gt;ai_a=
ddr;<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=A0break;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0freeaddrinfo(servinfo);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!valid_addr)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;host: %s, port: %d\n&quot;, =
inet_ntoa(state-&gt;sa.sin_addr), ntohs(state-&gt;sa.sin_port));<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -}<br>
&gt; -<br>
&gt; =C2=A0static int switch_mode(td_driver_t *driver, enum tdremus_mode mo=
de)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; @@ -1844,11 +1443,11 @@ static int ctl_register(struct tdremus_state *=
s)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;registering ctl fifo\n&quot;=
);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* register ctl fd */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ctl_fd.cid =3D tapdisk_server_regist=
er_event(SCHEDULER_POLL_READ_FD, s-&gt;ctl_fd.fd, 0, ctl_request, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://ctl_fd.id">ctl_fd.=
id</a> =3D tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s-&gt;ctl_=
fd.fd, 0, ctl_request, s);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;ctl_fd.cid &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;<a href=3D"http://ctl_fd.id">ctl=
_fd.id</a> &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
error registering ctrl FIFO %s: %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=A0s-&gt;ctl_path, s-&gt;ctl_fd.cid);<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=A0s-&gt;ctl_path, s-&gt;<a href=3D"http://ctl_fd.id">ctl_fd.id<=
/a>);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; @@ -1859,7 +1458,7 @@ static void ctl_unregister(struct tdremus_state =
*s)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;unregistering ctl fifo\n&quo=
t;);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;ctl_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;<a href=3D"http://c=
tl_fd.id">ctl_fd.id</a>);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* interface */<br>
&gt; @@ -1867,6 +1466,7 @@ static void ctl_unregister(struct tdremus_state =
*s)<br>
&gt; =C2=A0static int tdremus_open(td_driver_t *driver, td_image_t *image, =
td_uuid_t uuid)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_t *t =3D &amp;s-&gt=
;t;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int rc;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 const char *name =3D image-&gt;name;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 td_flag_t flags =3D image-&gt;flags;<br>
&gt; @@ -1877,7 +1477,6 @@ static int tdremus_open(td_driver_t *driver, td_=
image_t *image, td_uuid_t uuid)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 remus_image =3D image;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 memset(s, 0, sizeof(*s));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;server_fd.fd =3D -1;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;stream_fd.fd =3D -1;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;ctl_fd.fd =3D -1;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;msg_fd.fd =3D -1;<br>
&gt; @@ -1886,8 +1485,12 @@ static int tdremus_open(td_driver_t *driver, td=
_image_t *image, td_uuid_t uuid)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* the driver stack from the stream_f=
d event handler */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;tdremus_driver =3D driver;<br>
&gt;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;log_prefix =3D &quot;remus&quot;;<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;retry_timeout_s =3D REMUS_CONNRETRY_=
TIMEOUT;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;max_connections =3D 10;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;callback =3D remus_server_establishe=
d;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* parse name to get info etc */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((rc =3D get_args(driver, name)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((rc =3D td_replication_connect_init(t,=
 name)))<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return rc;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((rc =3D ctl_open(driver, name))) {<br>
&gt; @@ -1901,7 +1504,7 @@ static int tdremus_open(td_driver_t *driver, td_=
image_t *image, td_uuid_t uuid)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return rc;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(rc =3D remus_bind(s)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(rc =3D td_replication_server_start(t=
)))<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 rc =3D switch_=
mode(driver, mode_backup);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (rc =3D=3D -2)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 rc =3D switch_=
mode(driver, mode_primary);<br>
&gt; @@ -1932,8 +1535,7 @@ static int tdremus_close(td_driver_t *driver)<br=
>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (s-&gt;ramdisk.inprogress)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 hashtable_dest=
roy(s-&gt;ramdisk.inprogress, 0);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_server_fd(s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_kill(&amp;s-&gt;t);=
<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 ctl_unregister(s);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 ctl_close(s);<br>
&gt;<br>
&gt; diff --git a/tools/blktap2/drivers/block-replication.c b/tools/blktap2=
/drivers/block-replication.c<br>
&gt; new file mode 100644<br>
&gt; index 0000000..e4b2679<br>
&gt; --- /dev/null<br>
&gt; +++ b/tools/blktap2/drivers/block-replication.c<br>
&gt; @@ -0,0 +1,468 @@<br>
&gt; +/*<br>
&gt; + * Copyright (C) 2014 FUJITSU LIMITED<br>
&gt; + * Author: Wen Congyang &lt;<a href=3D"mailto:wency@cn.fujitsu.com">w=
ency@cn.fujitsu.com</a>&gt;<br>
&gt; + *<br>
&gt; + * This program is free software; you can redistribute it and/or modi=
fy<br>
&gt; + * it under the terms of the GNU Lesser General Public License as pub=
lished<br>
&gt; + * by the Free Software Foundation; version 2.1 only. with the specia=
l<br>
&gt; + * exception on linking described in file LICENSE.<br>
&gt; + *<br>
&gt; + * This program is distributed in the hope that it will be useful,<br=
>
&gt; + * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
&gt; + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the=
<br>
&gt; + * GNU Lesser General Public License for more details.<br>
&gt; + */<br>
&gt; +<br>
&gt; +#include &quot;tapdisk-server.h&quot;<br>
&gt; +#include &quot;block-replication.h&quot;<br>
&gt; +<br>
&gt; +#include &lt;string.h&gt;<br>
&gt; +#include &lt;errno.h&gt;<br>
&gt; +#include &lt;sys/types.h&gt;<br>
&gt; +#include &lt;unistd.h&gt;<br>
&gt; +#include &lt;fcntl.h&gt;<br>
&gt; +#include &lt;syslog.h&gt;<br>
&gt; +#include &lt;stdlib.h&gt;<br>
&gt; +#include &lt;arpa/inet.h&gt;<br>
&gt; +<br>
&gt; +#undef DPRINTF<br>
&gt; +#undef EPRINTF<br>
&gt; +#define DPRINTF(_f, _a...) syslog (LOG_DEBUG, &quot;%s: &quot; _f, lo=
g_prefix, ## _a)<br>
&gt; +#define EPRINTF(_f, _a...) syslog (LOG_ERR, &quot;%s: &quot; _f, log_=
prefix, ## _a)<br>
&gt; +<br>
&gt; +/* connection status */<br>
&gt; +enum {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0connection_none,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0connection_in_progress,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0connection_established,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0connection_closed,<br>
&gt; +};<br>
&gt; +<br>
&gt; +/* common functions */<br>
&gt; +/* args should be host:port */<br>
&gt; +static int get_args(td_replication_connect_t *t, const char* name)<br=
>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0char* host;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char* port;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int gai_status;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int valid_addr;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct addrinfo gai_hints;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct addrinfo *servinfo, *servinfo_itr;<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0memset(&amp;gai_hints, 0, sizeof gai_hints=
);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0gai_hints.ai_family =3D AF_UNSPEC;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0gai_hints.ai_socktype =3D SOCK_STREAM;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0port =3D strchr(name, &#39;:&#39;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!port) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
missing host in %s\n&quot;, name);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(host =3D strndup(name, port - name))=
) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
unable to allocate host\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOMEM=
;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0port++;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((gai_status =3D getaddrinfo(host, port=
,<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&amp;gai_hin=
ts, &amp;servinfo)) !=3D 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
getaddrinfo error: %s\n&quot;, gai_strerror(gai_status));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0free(host);<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0free(host);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: do something smarter here */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0valid_addr =3D 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0for (servinfo_itr =3D servinfo; servinfo_i=
tr !=3D NULL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 servinfo_itr =3D servinfo_i=
tr-&gt;ai_next) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (servinfo_i=
tr-&gt;ai_family =3D=3D AF_INET) {<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=A0valid_addr =3D 1;<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=A0memset(&amp;t-&gt;sa, 0, sizeof(t-&gt;sa));<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=A0t-&gt;sa =3D *(struct sockaddr_in *)servinfo_itr-&gt;ai_addr;=
<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=A0break;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0freeaddrinfo(servinfo);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!valid_addr)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOENT=
;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;host: %s, port: %d\n&quot;, =
inet_ntoa(t-&gt;sa.sin_addr),<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ntohs(t-&gt;sa=
.sin_port));<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +int td_replication_connect_init(td_replication_connect_t *t, const ch=
ar *name)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D get_args(t, name);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;listen_fd =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;id =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_none;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +int td_replication_connect_status(td_replication_connect_t *t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0switch (t-&gt;status) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_none:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_closed:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_in_progress:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_established:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0default:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
td_replication_connect is corruptted\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -2;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +}<br>
&gt; +<br>
&gt; +void td_replication_connect_kill(td_replication_connect_t *t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (t-&gt;status !=3D connection_in_progre=
ss &amp;&amp;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status !=3D connection=
_established)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(t-&gt;id);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(t-&gt;fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(t-&gt;listen_fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_closed;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* server */<br>
&gt; +static void td_replication_server_accept(event_id_t id, char mode,<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 void=
 *private);<br>
&gt; +<br>
&gt; +int td_replication_server_start(td_replication_connect_t *t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int opt;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (t-&gt;status =3D=3D connection_in_prog=
ress ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D=3D connecti=
on_established)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0fd =3D socket(AF_INET, SOCK_STREAM, 0);<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fd &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
could not create server socket: %d\n&quot;, errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0opt =3D 1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (setsockopt(fd, SOL_SOCKET,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 SO_REUSEADDR, &amp;opt, sizeof(opt)) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;=
Error setting REUSEADDR on %d: %d\n&quot;, fd, errno);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (bind(fd, (struct sockaddr *)&amp;t-&gt=
;sa, sizeof(t-&gt;sa)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;=
could not bind server socket %d to %s:%d: %d %s\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=A0fd, inet_ntoa(t-&gt;sa.sin_addr),<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=A0ntohs(t-&gt;sa.sin_port), errno, strerror(errno));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EADDRNOTAVAIL)<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=A0rc =3D -2;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (listen(fd, t-&gt;max_connections)) {<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
could not listen on socket: %d\n&quot;, errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The socket is now bound to the address =
and listening so we<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * may now register the fd with tapdisk<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D=C2=A0 tapdisk_server_register_event=
(SCHEDULER_POLL_READ_FD,<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=A0fd, 0,<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=A0td_replication_server_accept, t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error registering server connection event handler: %s&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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;listen_fd =3D fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;id =3D id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_in_progress;<b=
r>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +<br>
&gt; +err:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0close(fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void td_replication_server_accept(event_id_t id, char mode,<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 void=
 *private)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_t *t =3D private;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* XXX: add address-based black/white list=
 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0fd =3D accept(t-&gt;listen_fd, NULL, NULL)=
;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fd &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error accepting connection: %d\n&quot;, errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (t-&gt;status =3D=3D connection_establi=
shed) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
connection is already established\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close(fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;server accepted connection\n=
&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;fd =3D fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_established;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;callback(t, 0);<br>
&gt; +}<br>
&gt; +<br>
&gt; +int td_replication_server_restart(td_replication_connect_t *t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0switch (t-&gt;status) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_in_progress:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_established:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(t-&gt=
;fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =
=3D connection_in_progress;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_none:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0case connection_closed:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return td_repl=
ication_server_start(t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0default:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* not reached=
 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* client */<br>
&gt; +static void td_replication_retry_connect_event(event_id_t id, char mo=
de,<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=A0 void *private);<br>
&gt; +static void td_replication_connect_event(event_id_t id, char mode,<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 void=
 *private);<br>
&gt; +int td_replication_client_start(td_replication_connect_t *t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int flags;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (t-&gt;status =3D=3D connection_in_prog=
ress ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D=3D connecti=
on_established)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;client connecting to %s:%d..=
.\n&quot;,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0inet_ntoa(t-&g=
t;sa.sin_addr), ntohs(t-&gt;sa.sin_port));<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((fd =3D socket(PF_INET, SOCK_STREAM, 0=
)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
could not create client socket: %d\n&quot;, errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* make socket nonblocking */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((flags =3D fcntl(fd, F_GETFL, 0)) =3D=
=3D -1)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flags =3D 0;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)=
 =3D=3D -1) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error setting fd %d to non block mode\n&quot;, fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * once we have created the socket and pop=
ulated the address,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * we can now start our non-blocking conne=
ct. rather than<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * duplicating code we trigger a timeout o=
n the socket fd,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * which calls out nonblocking connect cod=
e<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_TIMEOUT, fd, 0,<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 td_replication_retry_connect_event,<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 t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if(id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;fd =3D fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;id =3D id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_in_progress;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +<br>
&gt; +err:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0close(fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_INTERNAL;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void td_replication_client_failed(td_replication_connect_t *t,=
 int rc)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_kill(t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;callback(t, rc);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void td_replication_client_done(td_replication_connect_t *t)<b=
r>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(t-&gt;id);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;status =3D connection_established;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;callback(t, 0);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static int td_replication_retry_connect(td_replication_connect_t *t)<=
br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(t-&gt;id);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;connect to server 1 second l=
ater&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_TIMEOUT,<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 t-&gt;fd, t-&gt;retry_timeout_s,<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 td_replication_retry_connect_event,<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 t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;id =3D id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static int td_replication_wait_connect_done(td_replication_connect_t =
*t)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(t-&gt;id);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_WRITE_FD,<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 t-&gt;fd, 0,<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 td_replication_connect_event, t);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error registering client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;id =3D id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* return 1 if we need to reconnect to backup server */<br>
&gt; +static int check_connect_errno(int err)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The fd is non-block, so we will not get=
 ETIMEDOUT<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * after calling connect(). We only can ge=
t this errno<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * by getsockopt().<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (err =3D=3D ECONNREFUSED || err =3D=3D =
ENETUNREACH ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D EAGAIN || err =3D=
=3D ECONNABORTED ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D ETIMEDOUT)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void td_replication_retry_connect_event(event_id_t id, char mo=
de,<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=A0 void *private)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_t *t =3D private;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc, ret;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* do a non-blocking connect */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D connect(t-&gt;fd, (struct sockaddr=
 *)&amp;t-&gt;sa, sizeof(t-&gt;sa));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EINPROGRESS) {<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/*<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 * the connect returned EINPROGRESS (nonblocking<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 * connect) we must wait for the fd to be writeable<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 * to determine if the connect worked<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 */<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=A0rc =3D td_replication_wait_connect_done(t);<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=A0if (rc)<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=A0goto fail;<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=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(errno)) {<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=A0rc =3D td_replication_retry_connect(t);<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=A0if (rc)<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=A0goto fail;<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=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* not recover=
able */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error connection to server %s\n&quot;, strerror(errno));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D ERROR_C=
ONNECTION;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The connection is established unexpecte=
dly */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_client_done(t);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +<br>
&gt; +fail:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_client_failed(t, rc);<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* callback when nonblocking connect() is finished */<br>
&gt; +static void td_replication_connect_event(event_id_t id, char mode,<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 void=
 *private)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int socket_errno;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0socklen_t socket_errno_size;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_connect_t *t =3D private;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix =3D t-&gt;log_prefi=
x;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* check to see if the connect succeeded *=
/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0socket_errno_size =3D sizeof(socket_errno)=
;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (getsockopt(t-&gt;fd, SOL_SOCKET, SO_ER=
ROR,<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;socket_errno, &amp;socket_errno_size)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EPRINTF(&quot;=
error getting socket errno\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0DPRINTF(&quot;socket connect returned %d\n=
&quot;, socket_errno);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (socket_errno) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect=
 did not succeed */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(socket_errno)) {<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/*<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 * we can probably assume that the backup is down.<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 * just try again later<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 */<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=A0rc =3D td_replication_retry_connect(t);<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=A0if (rc)<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=A0goto fail;<br>
&gt; +<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=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<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=A0EPRINTF(&quot;socket connect returned %d, giving up\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=A0socket_errno);<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=A0rc =3D ERROR_CONNECTION;<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=A0goto fail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_client_done(t);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +<br>
&gt; +fail:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_client_failed(t, rc);<br>
&gt; +}<br>
&gt; diff --git a/tools/blktap2/drivers/block-replication.h b/tools/blktap2=
/drivers/block-replication.h<br>
&gt; new file mode 100644<br>
&gt; index 0000000..0bd6e71<br>
&gt; --- /dev/null<br>
&gt; +++ b/tools/blktap2/drivers/block-replication.h<br>
&gt; @@ -0,0 +1,113 @@<br>
&gt; +/*<br>
&gt; + * Copyright (C) 2014 FUJITSU LIMITED<br>
&gt; + * Author: Wen Congyang &lt;<a href=3D"mailto:wency@cn.fujitsu.com">w=
ency@cn.fujitsu.com</a>&gt;<br>
&gt; + *<br>
&gt; + * This program is free software; you can redistribute it and/or modi=
fy<br>
&gt; + * it under the terms of the GNU Lesser General Public License as pub=
lished<br>
&gt; + * by the Free Software Foundation; version 2.1 only. with the specia=
l<br>
&gt; + * exception on linking described in file LICENSE.<br>
&gt; + *<br>
&gt; + * This program is distributed in the hope that it will be useful,<br=
>
&gt; + * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
&gt; + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the=
<br>
&gt; + * GNU Lesser General Public License for more details.<br>
&gt; + */<br>
&gt; +<br>
&gt; +#ifndef BLOCK_REPLICATION_H<br>
&gt; +#define BLOCK_REPLICATION_H<br>
&gt; +<br>
&gt; +#include &quot;scheduler.h&quot;<br>
&gt; +#include &lt;sys/socket.h&gt;<br>
&gt; +#include &lt;netdb.h&gt;<br>
&gt; +<br>
&gt; +#define CONTAINER_OF(inner_ptr, outer, member_name)=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 =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=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0typeof(outer) =
*container_of_;=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0container_of_ =
=3D (void*)((char*)(inner_ptr) -=C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0offsetof(typeof(outer), member_na=
me));=C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(void)(&amp;co=
ntainer_of_-&gt;member_name =3D=3D=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 (typeof(inner_ptr))0) /* type check */;=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=A0 =C2=A0container_of_;=
=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 \=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0})<br>
&gt; +<br>
&gt; +#define UNREGISTER_EVENT(id)=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=A0 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0tapdisk_server_unregister_event(id);=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=A0id =3D -1;=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=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; +#define CLOSE_FD(fd)=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 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (fd &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0close(fd);=C2=A0 =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=A0fd =3D -1;=C2=A0 =C2=A0 =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\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; +<br>
&gt; +enum {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_INTERNAL =3D -1,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_IO =3D -2,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_CONNECTION =3D -3,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_CLOSE =3D -4,<br>
&gt; +};<br>
&gt; +<br>
&gt; +typedef struct td_replication_connect td_replication_connect_t;<br>
&gt; +typedef void td_replication_callback(td_replication_connect_t *r, int=
 rc);<br>
&gt; +<br>
&gt; +struct td_replication_connect {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * caller must fill these in before callin=
g<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * td_replication_connect_init()<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0const char *log_prefix;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_replication_callback *callback;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int retry_timeout_s;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int max_connections;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The caller uses this fd to read/write a=
fter<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * the connection is established<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* private */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct sockaddr_in sa;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int listen_fd;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int status;<br>
&gt; +};<br>
&gt; +<br>
&gt; +/* return -errno if failure happened, otherwise return 0 */<br>
&gt; +int td_replication_connect_init(td_replication_connect_t *t, const ch=
ar *name);<br>
&gt; +/*<br>
&gt; + * Return value:<br>
&gt; + *=C2=A0 =C2=A0-1: connection is closed or not connected<br>
&gt; + *=C2=A0 =C2=A0 0: connection is in progress<br>
&gt; + *=C2=A0 =C2=A0 1: connection is established<br>
&gt; + */<br>
&gt; +int td_replication_connect_status(td_replication_connect_t *t);<br>
&gt; +void td_replication_connect_kill(td_replication_connect_t *t);<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Return value:<br>
&gt; + *=C2=A0 =C2=A0-2: this caller should be client<br>
&gt; + *=C2=A0 =C2=A0-1: error<br>
&gt; + *=C2=A0 =C2=A0 0: connection is in progress<br>
&gt; + */<br>
&gt; +int td_replication_server_start(td_replication_connect_t *t);<br>
&gt; +/*<br>
&gt; + * Return value:<br>
&gt; + *=C2=A0 =C2=A0-2: this caller should be client<br>
&gt; + *=C2=A0 =C2=A0-1: error<br>
&gt; + *=C2=A0 =C2=A0 0: connection is in progress<br>
&gt; + */<br>
&gt; +int td_replication_server_restart(td_replication_connect_t *t);<br>
&gt; +/*<br>
&gt; + * Return value:<br>
&gt; + *=C2=A0 =C2=A0-1: error<br>
&gt; + *=C2=A0 =C2=A0 0: connection is in progress<br>
&gt; + */<br>
&gt; +int td_replication_client_start(td_replication_connect_t *t);<br>
&gt; +<br>
&gt; +#endif<br>
&gt; --<br>
&gt; 1.9.3<br>
&gt;<br></p>
<p dir=3D"ltr">Acked-by:=C2=A0 Shriram Rajagopalan &lt;<a href=3D"mailto:rs=
hriram@cs.ubc.ca">rshriram@cs.ubc.ca</a>&gt;<br>
</p>

--bcaec5014c9fdc65c80503d42006--


--===============8024538590219703831==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--===============8024538590219703831==--


From xen-devel-bounces@lists.xen.org Wed Sep 24 19:11:53 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Sep 2014 19:11:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XWrye-0001T7-EX; Wed, 24 Sep 2014 19:11:48 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <rshriram@cs.ubc.ca>) id 1XWryc-0001T0-Gq
	for xen-devel@lists.xen.org; Wed, 24 Sep 2014 19:11:47 +0000
Received: from [193.109.254.147:24042] by server-8.bemta-14.messagelabs.com id
	30/6F-01875-17713245; Wed, 24 Sep 2014 19:11:45 +0000
X-Env-Sender: rshriram@cs.ubc.ca
X-Msg-Ref: server-7.tower-27.messagelabs.com!1411585899!12783681!1
X-Originating-IP: [142.103.6.52]
X-SpamReason: No, hits=1.7 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_20_30,HTML_MESSAGE,RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30656 invoked from network); 24 Sep 2014 19:11:41 -0000
Received: from smtp.cs.ubc.ca (HELO smtp.cs.ubc.ca) (142.103.6.52)
	by server-7.tower-27.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 24 Sep 2014 19:11:41 -0000
Received: from mail-ie0-f182.google.com (mail-ie0-f182.google.com
	[209.85.223.182]) (authenticated bits=0)
	by smtp.cs.ubc.ca (8.14.5/8.13.6) with ESMTP id s8OJBcoN029841
	(version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL)
	for <xen-devel@lists.xen.org>; Wed, 24 Sep 2014 12:11:38 -0700
Received: by mail-ie0-f182.google.com with SMTP id tp5so6972076ieb.13
	for <xen-devel@lists.xen.org>; Wed, 24 Sep 2014 12:11:36 -0700 (PDT)
MIME-Version: 1.0
X-Received: by 10.42.203.4 with SMTP id fg4mr12470584icb.74.1411585896888;
	Wed, 24 Sep 2014 12:11:36 -0700 (PDT)
Received: by 10.42.139.71 with HTTP; Wed, 24 Sep 2014 12:11:36 -0700 (PDT)
Received: by 10.42.139.71 with HTTP; Wed, 24 Sep 2014 12:11:36 -0700 (PDT)
In-Reply-To: <1409909158-19243-14-git-send-email-wency@cn.fujitsu.com>
References: <1409909158-19243-1-git-send-email-wency@cn.fujitsu.com>
	<1409909158-19243-14-git-send-email-wency@cn.fujitsu.com>
Date: Wed, 24 Sep 2014 12:11:36 -0700
Message-ID: <CAP8mzPMtZUOop8NOkpta1RJksTaGb9OkzBr90yz4L8_bGxpAGg@mail.gmail.com>
From: Shriram Rajagopalan <rshriram@cs.ubc.ca>
To: Wen Congyang <wency@cn.fujitsu.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Jiang Yunhong <yunhong.jiang@intel.com>, Dong Eddie <eddie.dong@intel.com>,
	xen devel <xen-devel@lists.xen.org>, Yang Hongyang <yanghy@cn.fujitsu.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [Xen-devel] [RFC Patch v3 13/22] blktap2: connect to backup
	asynchronously
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: rshriram@cs.ubc.ca
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0893330380259408558=="
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============0893330380259408558==
Content-Type: multipart/alternative; boundary=20cf303f6406f43fda0503d47373

--20cf303f6406f43fda0503d47373
Content-Type: text/plain; charset=UTF-8

On Sep 5, 2014 5:30 AM, "Wen Congyang" <wency@cn.fujitsu.com> wrote:
>
> tapdisk2 is a single thread process. If we use remus,
> we will block in primary_blocking_connect(). The
> user will not have any chance to talk with tapdisk2.
> So we should connect to backup asynchronously.
> Before the connection is established, we queue
> all I/O request, and handle it when the connection
> is established.
>

Hi
  This is useful functionality but also very dangerous. I am afraid your
comments are quite sparse in addressing how the I/O requests are handled at
the primary until the connection is established.
Before this patch, the guest would block halfway through boot, until the
backup connection is established. What happens after this patch?
Will the guest's write requests go through? If so, are you merging writes
to same block in your internal ring? What about reads? Do you query your in
memory queue to serve these reads?
  You are basically introducing a copy on write semantics at the primary
until a backup connection is established, with the faulting writes and
subsequent reads being served out of memory. What happens to the network io
during this wait time? Are all outputs blocked?
The DRBD version allows the primary to function just like a normal VM until
Remus is started. When Remus is started, it ensures that both disks are in
sync before the initial migration starts. Are you doing something similar
here?

The patch is unfortunately too mangled to follow. You may have to break it
up, as the diff lines seem to straddle across function boundaries in
confusing ways, making it hard to understand.

> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> Cc: Shriram Rajagopalan <rshriram@cs.ubc.ca>
> ---
>  tools/blktap2/drivers/block-remus.c | 760
+++++++++++++++++++++++-------------
>  1 file changed, 479 insertions(+), 281 deletions(-)
>
> diff --git a/tools/blktap2/drivers/block-remus.c
b/tools/blktap2/drivers/block-remus.c
> index d358b44..c21f851 100644
> --- a/tools/blktap2/drivers/block-remus.c
> +++ b/tools/blktap2/drivers/block-remus.c
> @@ -63,10 +63,28 @@
>  #define RAMDISK_HASHSIZE 128
>
>  /* connect retry timeout (seconds) */
> -#define REMUS_CONNRETRY_TIMEOUT 10
> +#define REMUS_CONNRETRY_TIMEOUT 1
>
>  #define RPRINTF(_f, _a...) syslog (LOG_DEBUG, "remus: " _f, ## _a)
>
> +#define UNREGISTER_EVENT(id)                                   \
> +       do {                                                    \
> +               if (id >= 0) {                                  \
> +                       tapdisk_server_unregister_event(id);    \
> +                       id = -1;                                \
> +               }                                               \
> +       } while (0)
> +
> +#define CLOSE_FD(fd)                   \
> +       do {                            \
> +               if (fd >= 0) {          \
> +                       close(fd);      \
> +                       fd = -1;        \
> +               }                       \
> +       } while (0)
> +
> +#define MAX_REMUS_REQUEST       TAPDISK_DATA_REQUESTS
> +
>  enum tdremus_mode {
>         mode_invalid = 0,
>         mode_unprotected,
> @@ -74,17 +92,21 @@ enum tdremus_mode {
>         mode_backup
>  };
>
> +enum {
> +       ERROR_INTERNAL = -1,
> +       ERROR_IO = -2,
> +       ERROR_CONNECTION = -3,
> +};
> +
>  struct tdremus_req {
> -       uint64_t sector;
> -       int nb_sectors;
> -       char buf[4096];
> +       td_request_t treq;
>  };
>
>  struct req_ring {
>         /* waste one slot to distinguish between empty and full */
> -       struct tdremus_req requests[MAX_REQUESTS * 2 + 1];
> -       unsigned int head;
> -       unsigned int tail;
> +       struct tdremus_req pending_requests[MAX_REMUS_REQUEST + 1];
> +       unsigned int prod;
> +       unsigned int cons;
>  };
>
>  /* TODO: This isn't very pretty, but to properly generate our own treqs
(needed
> @@ -144,10 +166,21 @@ struct ramdisk_write_cbdata {
>
>  typedef void (*queue_rw_t) (td_driver_t *driver, td_request_t treq);
>
> -/* poll_fd type for blktap2 fd system. taken from block_log.c */
> +/*
> + * If cid, rid and wid are -1, fd must be -1. It means that
> + * we are in unpritected mode or we don't start to connect
> + * to backup.
> + * If fd is an valid fd:
> + *  cid is valid, rid and wid must be invalid. It means that
> + *      the connection is in progress.
> + *  cid is invalid. rid or wid must be valid. It means that
> + *      the connection is established.
> + */
>  typedef struct poll_fd {
>         int        fd;
> -       event_id_t id;
> +       event_id_t cid;
> +       event_id_t rid;
> +       event_id_t wid;
>  } poll_fd_t;
>
>  struct tdremus_state {
> @@ -166,8 +199,11 @@ struct tdremus_state {
>         poll_fd_t server_fd;    /* server listen port */
>         poll_fd_t stream_fd;     /* replication channel */
>
> -       /* queue write requests, batch-replicate at submit */
> -       struct req_ring write_ring;
> +       /*
> +        * queue I/O requests, batch-replicate when
> +        * the connection is established.
> +        */
> +       struct req_ring queued_io;
>
>         /* ramdisk data*/
>         struct ramdisk ramdisk;
> @@ -207,11 +243,13 @@ static int tdremus_close(td_driver_t *driver);
>
>  static int switch_mode(td_driver_t *driver, enum tdremus_mode mode);
>  static int ctl_respond(struct tdremus_state *s, const char *response);
> +static int ctl_register(struct tdremus_state *s);
> +static void ctl_unregister(struct tdremus_state *s);
>
>  /* ring functions */
> -static inline unsigned int ring_next(struct req_ring* ring, unsigned int
pos)
> +static inline unsigned int ring_next(unsigned int pos)
>  {
> -       if (++pos >= MAX_REQUESTS * 2 + 1)
> +       if (++pos >= MAX_REMUS_REQUEST + 1)
>                 return 0;
>
>         return pos;
> @@ -219,13 +257,26 @@ static inline unsigned int ring_next(struct
req_ring* ring, unsigned int pos)
>
>  static inline int ring_isempty(struct req_ring* ring)
>  {
> -       return ring->head == ring->tail;
> +       return ring->cons == ring->prod;
>  }
>
>  static inline int ring_isfull(struct req_ring* ring)
>  {
> -       return ring_next(ring, ring->tail) == ring->head;
> +       return ring_next(ring->prod) == ring->cons;
> +}
> +
> +static void ring_add_request(struct req_ring *ring, const td_request_t
*treq)
> +{
> +       /* If ring is full, it means that tapdisk2 has some bug */
> +       if (ring_isfull(ring)) {
> +               RPRINTF("OOPS, ring is full\n");
> +               exit(1);
> +       }
> +
> +       ring->pending_requests[ring->prod].treq = *treq;
> +       ring->prod = ring_next(ring->prod);
>  }
> +
>  /* Prototype declarations */
>  static int ramdisk_flush(td_driver_t *driver, struct tdremus_state* s);
>
> @@ -728,30 +779,39 @@ static int mwrite(int fd, void* buf, size_t len)
>
>  static void inline close_stream_fd(struct tdremus_state *s)
>  {
> -       if (s->stream_fd.fd < 0)
> -               return;
>
> -       /* XXX: -2 is magic. replace with macro perhaps? */
> -       tapdisk_server_unregister_event(s->stream_fd.id);
> -       close(s->stream_fd.fd);
> -       s->stream_fd.fd = -2;
> +       UNREGISTER_EVENT(s->stream_fd.cid);
> +       UNREGISTER_EVENT(s->stream_fd.rid);
> +       UNREGISTER_EVENT(s->stream_fd.wid);
> +
> +       /* close the connection */
> +       CLOSE_FD(s->stream_fd.fd);
>  }
>
>  static void close_server_fd(struct tdremus_state *s)
>  {
> -       if (s->server_fd.fd < 0)
> -               return;
> -
> -       tapdisk_server_unregister_event(s->server_fd.id);
> -       s->server_fd.id = -1;
> -       close(s->stream_fd.fd);
> -       s->stream_fd.fd = -1;
> +       UNREGISTER_EVENT(s->server_fd.cid);
> +       CLOSE_FD(s->server_fd.fd);
>  }
>
>  /* primary functions */
>  static void remus_client_event(event_id_t, char mode, void *private);
>  static void remus_connect_event(event_id_t id, char mode, void *private);
>  static void remus_retry_connect_event(event_id_t id, char mode, void
*private);
> +static int primary_forward_request(struct tdremus_state *s,
> +                                  const td_request_t *treq);
> +
> +/*
> + * It is called when we cannot connect to backup, or find I/O error when
> + * reading/writing.
> + */
> +static void primary_failed(struct tdremus_state *s, int rc)
> +{
> +       close_stream_fd(s);
> +       if (rc == ERROR_INTERNAL)
> +               RPRINTF("switch to unprotected mode due to internal
error");
> +       switch_mode(s->tdremus_driver, mode_unprotected);
> +}
>
>  static int primary_do_connect(struct tdremus_state *state)
>  {
> @@ -760,281 +820,247 @@ static int primary_do_connect(struct
tdremus_state *state)
>         int rc;
>         int flags;
>
> -       RPRINTF("client connecting to %s:%d...\n",
inet_ntoa(state->sa.sin_addr), ntohs(state->sa.sin_port));
> +       RPRINTF("client connecting to %s:%d...\n",
> +               inet_ntoa(state->sa.sin_addr), ntohs(state->sa.sin_port));
>
>         if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
>                 RPRINTF("could not create client socket: %d\n", errno);
> -               return -1;
> +               return ERROR_INTERNAL;
>         }
> +       state->stream_fd.fd = fd;
>
>         /* make socket nonblocking */
>         if ((flags = fcntl(fd, F_GETFL, 0)) == -1)
>                 flags = 0;
> -       if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1)
> -               return -1;
> +       if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
> +               RPRINTF("error setting fd %d to non block mode\n", fd);
> +               return ERROR_INTERNAL;
> +       }
>
> -       /* once we have created the socket and populated the address, we
can now start
> -        * our non-blocking connect. rather than duplicating code we
trigger a timeout
> -        * on the socket fd, which calls out nonblocking connect code
> +       /*
> +        * once we have created the socket and populated the address,
> +        * we can now start our non-blocking connect. rather than
> +        * duplicating code we trigger a timeout on the socket fd,
> +        * which calls out nonblocking connect code
>          */
> -       if((id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
fd, 0, remus_retry_connect_event, state)) < 0) {
> -               RPRINTF("error registering timeout client connection
event handler: %s\n", strerror(id));
> -               /* TODO: we leak a fd here */
> -               return -1;
> +       if((id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
fd, 0,
> +                                              remus_retry_connect_event,
> +                                              state)) < 0) {
> +               RPRINTF("error registering timeout client connection
event handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
>         }
> -       state->stream_fd.fd = fd;
> -       state->stream_fd.id = id;
> +
> +       state->stream_fd.cid = id;
>         return 0;
>  }
>
> -static int primary_blocking_connect(struct tdremus_state *state)
> +static int remus_handle_queued_io(struct tdremus_state *s)
>  {
> -       int fd;
> -       int id;
> +       struct req_ring *queued_io = &s->queued_io;
> +       unsigned int cons;
> +       td_request_t *treq;
>         int rc;
> -       int flags;
> -
> -       RPRINTF("client connecting to %s:%d...\n",
inet_ntoa(state->sa.sin_addr), ntohs(state->sa.sin_port));
>
> -       if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
> -               RPRINTF("could not create client socket: %d\n", errno);
> -               return -1;
> -       }
> +       while (!ring_isempty(queued_io)) {
> +               cons = queued_io->cons;
> +               treq = &queued_io->pending_requests[cons].treq;
>
> -       do {
> -               if ((rc = connect(fd, (struct sockaddr *)&state->sa,
> -                   sizeof(state->sa))) < 0)
> -               {
> -                       if (errno == ECONNREFUSED) {
> -                               RPRINTF("connection refused -- retrying
in 1 second\n");
> -                               sleep(1);
> -                       } else {
> -                               RPRINTF("connection failed: %d\n", errno);
> -                               close(fd);
> -                               return -1;
> -                       }
> +               if (treq->op == TD_OP_WRITE) {
> +                       rc = primary_forward_request(s, treq);
> +                       if (rc)
> +                               return rc;
>                 }
> -       } while (rc < 0);
> -
> -       RPRINTF("client connected\n");
> -
> -       /* make socket nonblocking */
> -       if ((flags = fcntl(fd, F_GETFL, 0)) == -1)
> -               flags = 0;
> -       if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1)
> -       {
> -               RPRINTF("error making socket nonblocking\n");
> -               close(fd);
> -               return -1;
> -       }
>
> -       if((id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
fd, 0, remus_client_event, state)) < 0) {
> -               RPRINTF("error registering client event handler: %s\n",
strerror(id));
> -               close(fd);
> -               return -1;
> +               td_forward_request(*treq);
> +               queued_io->cons = ring_next(cons);
>         }
>
> -       state->stream_fd.fd = fd;
> -       state->stream_fd.id = id;
>         return 0;
>  }
>
> -/* on read, just pass request through */
> -static void primary_queue_read(td_driver_t *driver, td_request_t treq)
> -{
> -       /* just pass read through */
> -       td_forward_request(treq);
> -}
> -
> -/* TODO:
> - * The primary uses mwrite() to write the contents of a write request to
the
> - * backup. This effectively blocks until all data has been copied into a
system
> - * buffer or a timeout has occured. We may wish to instead use tapdisk's
> - * nonblocking i/o interface, tapdisk_server_register_event(), to set
timeouts
> - * and write data in an asynchronous fashion.
> - */
> -static void primary_queue_write(td_driver_t *driver, td_request_t treq)
> +static int remus_connection_done(struct tdremus_state *s)
>  {
> -       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -
> -       char header[sizeof(uint32_t) + sizeof(uint64_t)];
> -       uint32_t *sectors = (uint32_t *)header;
> -       uint64_t *sector = (uint64_t *)(header + sizeof(uint32_t));
> +       event_id_t id;
>
> -       // RPRINTF("write: stream_fd.fd: %d\n", s->stream_fd.fd);
> +       /* the connect succeeded */
> +       /* unregister this function and register a new event handler */
> +       tapdisk_server_unregister_event(s->stream_fd.cid);
> +       s->stream_fd.cid = -1;
>
> -       /* -1 means we haven't connected yet, -2 means the connection was
lost */
> -       if(s->stream_fd.fd == -1) {
> -               RPRINTF("connecting to backup...\n");
> -               primary_blocking_connect(s);
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
s->stream_fd.fd,
> +                                          0, remus_client_event, s);
> +       if(id < 0) {
> +               RPRINTF("error registering client event handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
>         }
> +       s->stream_fd.rid = id;
>
> -       *sectors = treq.secs;
> -       *sector = treq.sec;
> -
> -       if (mwrite(s->stream_fd.fd, TDREMUS_WRITE, strlen(TDREMUS_WRITE))
< 0)
> -               goto fail;
> -       if (mwrite(s->stream_fd.fd, header, sizeof(header)) < 0)
> -               goto fail;
> +       /* handle the queued requests */
> +       return remus_handle_queued_io(s);
> +}
>
> -       if (mwrite(s->stream_fd.fd, treq.buf, treq.secs *
driver->info.sector_size) < 0)
> -               goto fail;
> +static int remus_retry_connect(struct tdremus_state *s)
> +{
> +       event_id_t id;
>
> -       td_forward_request(treq);
> +       tapdisk_server_unregister_event(s->stream_fd.cid);
> +       s->stream_fd.cid = -1;
>
> -       return;
> +       RPRINTF("connect to backup 1 second later");
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT,
> +                                          s->stream_fd.fd,
> +                                          REMUS_CONNRETRY_TIMEOUT,
> +                                          remus_retry_connect_event, s);
> +       if (id < 0) {
> +               RPRINTF("error registering timeout client connection
event handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
> +       }
>
> - fail:
> -       /* switch to unprotected mode and tell tapdisk to retry */
> -       RPRINTF("write request replication failed, switching to
unprotected mode");
> -       switch_mode(s->tdremus_driver, mode_unprotected);
> -       td_complete_request(treq, -EBUSY);
> +       s->stream_fd.cid = id;
> +       return 0;
>  }
>
> -
> -/* It is called when the user writes "flush" to control file */
> -static int client_flush(td_driver_t *driver)
> +static int remus_wait_connect_done(struct tdremus_state *s)
>  {
> -       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -
> -       // RPRINTF("committing output\n");
> +       event_id_t id;
>
> -       if (s->stream_fd.fd == -1)
> -               /* connection not yet established, nothing to flush */
> -               return 0;
> +       tapdisk_server_unregister_event(s->stream_fd.cid);
> +       s->stream_fd.cid = -1;
>
> -       if (mwrite(s->stream_fd.fd, TDREMUS_COMMIT,
> -           strlen(TDREMUS_COMMIT)) < 0) {
> -               RPRINTF("error flushing output");
> -               close_stream_fd(s);
> -               return -1;
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_WRITE_FD,
> +                                          s->stream_fd.fd, 0,
> +                                          remus_connect_event, s);
> +       if (id < 0) {
> +               RPRINTF("error registering client connection event
handler: %s\n",
> +                       strerror(id));
> +               return ERROR_INTERNAL;
>         }
> +       s->stream_fd.cid = id;
>
>         return 0;
>  }
>
> -static int server_flush(td_driver_t *driver)
> +/* return 1 if we need to reconnect to backup */
> +static int check_connect_errno(int err)
>  {
> -       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -       /*
> -        * Nothing to flush in beginning.
> +       /*
> +        * The fd is non-block, so we will not get ETIMEDOUT
> +        * after calling connect(). We only can get this errno
> +        * by getsockopt().
>          */
> -       if (!s->ramdisk.prev)
> -               return 0;
> -       /* Try to flush any remaining requests */
> -       return ramdisk_flush(driver, s);
> -}
> -
> -static int primary_start(td_driver_t *driver)
> -{
> -       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -
> -       RPRINTF("activating client mode\n");
> -
> -       tapdisk_remus.td_queue_read = primary_queue_read;
> -       tapdisk_remus.td_queue_write = primary_queue_write;
> -
> -       s->stream_fd.fd = -1;
> -       s->stream_fd.id = -1;
> +       if (err == ECONNREFUSED || err == ENETUNREACH ||
> +           err == EAGAIN || err == ECONNABORTED ||
> +           err == ETIMEDOUT)
> +           return 1;
>
>         return 0;
>  }
>
> -/* timeout callback */
>  static void remus_retry_connect_event(event_id_t id, char mode, void
*private)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)private;
> +       int rc, ret;
>
>         /* do a non-blocking connect */
> -       if (connect(s->stream_fd.fd, (struct sockaddr *)&s->sa,
sizeof(s->sa))
> -           && errno != EINPROGRESS)
> -       {
> -               if(errno == ECONNREFUSED || errno == ENETUNREACH || errno
== EAGAIN || errno == ECONNABORTED)
> -               {
> -                       /* try again in a second */
> -                       tapdisk_server_unregister_event(s->stream_fd.id);
> -                       if((id =
tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT, s->stream_fd.fd,
REMUS_CONNRETRY_TIMEOUT, remus_retry_connect_event, s)) < 0) {
> -                               RPRINTF("error registering timeout client
connection event handler: %s\n", strerror(id));
> -                               return;
> -                       }
> -                       s->stream_fd.id = id;
> -               }
> -               else
> -               {
> -                       /* not recoverable */
> -                       RPRINTF("error connection to server %s\n",
strerror(errno));
> +       ret = connect(s->stream_fd.fd,
> +                     (struct sockaddr *)&s->sa,
> +                     sizeof(s->sa));
> +       if (ret) {
> +               if (errno == EINPROGRESS) {
> +                       /*
> +                        * the connect returned EINPROGRESS (nonblocking
> +                        * connect) we must wait for the fd to be
writeable
> +                        * to determine if the connect worked
> +                        */
> +                       rc = remus_wait_connect_done(s);
> +                       if (rc)
> +                               goto fail;
>                         return;
>                 }
> -       }
> -       else
> -       {
> -               /* the connect returned EINPROGRESS (nonblocking connect)
we must wait for the fd to be writeable to determine if the connect worked
*/
>
> -               tapdisk_server_unregister_event(s->stream_fd.id);
> -               if((id =
tapdisk_server_register_event(SCHEDULER_POLL_WRITE_FD, s->stream_fd.fd, 0,
remus_connect_event, s)) < 0) {
> -                       RPRINTF("error registering client connection
event handler: %s\n", strerror(id));
> +               if (check_connect_errno(errno)) {
> +                       rc = remus_retry_connect(s);
> +                       if (rc)
> +                               goto fail;
>                         return;
>                 }
> -               s->stream_fd.id = id;
> +
> +               /* not recoverable */
> +               RPRINTF("error connection to server %s\n",
strerror(errno));
> +               rc = ERROR_CONNECTION;
> +               goto fail;
>         }
> +
> +       /* The connection is established unexpectedly */
> +       rc = remus_connection_done(s);
> +       if (rc)
> +               goto fail;
> +
> +       return;
> +
> +fail:
> +       primary_failed(s, rc);
> +       return;
>  }
>
>  /* callback when nonblocking connect() is finished */
> -/* called only by primary in unprotected state */
>  static void remus_connect_event(event_id_t id, char mode, void *private)
>  {
>         int socket_errno;
>         socklen_t socket_errno_size;
>         struct tdremus_state *s = (struct tdremus_state *)private;
> +       int rc;
>
> -       /* check to se if the connect succeeded */
> +       /* check to see if the connect succeeded */
>         socket_errno_size = sizeof(socket_errno);
> -       if (getsockopt(s->stream_fd.fd, SOL_SOCKET, SO_ERROR,
&socket_errno, &socket_errno_size)) {
> +       if (getsockopt(s->stream_fd.fd, SOL_SOCKET, SO_ERROR,
> +                      &socket_errno, &socket_errno_size)) {
>                 RPRINTF("error getting socket errno\n");
>                 return;
>         }
>
>         RPRINTF("socket connect returned %d\n", socket_errno);
>
> -       if(socket_errno)
> -       {
> +       if (socket_errno) {
>                 /* the connect did not succeed */
> +               if (check_connect_errno(socket_errno)) {
> +                       /*
> +                        * we can probably assume that the backup is down.
> +                        * just try again later
> +                        */
> +                       rc = remus_retry_connect(s);
> +                       if (rc)
> +                               goto fail;
>
> -               if(socket_errno == ECONNREFUSED || socket_errno ==
ENETUNREACH || socket_errno == ETIMEDOUT
> -                  || socket_errno == ECONNABORTED || socket_errno ==
EAGAIN)
> -               {
> -                       /* we can probably assume that the backup is
down. just try again later */
> -                       tapdisk_server_unregister_event(s->stream_fd.id);
> -                       if((id =
tapdisk_server_register_event(SCHEDULER_POLL_TIMEOUT, s->stream_fd.fd,
REMUS_CONNRETRY_TIMEOUT, remus_retry_connect_event, s)) < 0) {
> -                               RPRINTF("error registering timeout client
connection event handler: %s\n", strerror(id));
> -                               return;
> -                       }
> -                       s->stream_fd.id = id;
> -               }
> -               else
> -               {
> -                       RPRINTF("socket connect returned %d, giving
up\n", socket_errno);
> -               }
> -       }
> -       else
> -       {
> -               /* the connect succeeded */
> -
> -               /* unregister this function and register a new event
handler */
> -               tapdisk_server_unregister_event(s->stream_fd.id);
> -               if((id =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s->stream_fd.fd, 0,
remus_client_event, s)) < 0) {
> -                       RPRINTF("error registering client event handler:
%s\n", strerror(id));
>                         return;
> +               } else {
> +                       RPRINTF("socket connect returned %d, giving up\n",
> +                               socket_errno);
> +                       rc = ERROR_CONNECTION;
> +                       goto fail;
>                 }
> -               s->stream_fd.id = id;
>
> -               /* switch from unprotected to protected client */
> -               switch_mode(s->tdremus_driver, mode_primary);
> +               return;
>         }
> +
> +       rc = remus_connection_done(s);
> +       if (rc)
> +               goto fail;
> +
> +       return;
> +
> +fail:
> +       primary_failed(s, rc);
>  }
>
>
> -/* we install this event handler on the primary once we have connected
to the backup */
> +/*
> + * we install this event handler on the primary once we have
> + * connected to the backup.
> + */
>  /* wait for "done" message to commit checkpoint */
>  static void remus_client_event(event_id_t id, char mode, void *private)
>  {
> @@ -1043,9 +1069,12 @@ static void remus_client_event(event_id_t id, char
mode, void *private)
>         int rc;
>
>         if (mread(s->stream_fd.fd, req, sizeof(req) - 1) < 0) {
> -               /* replication stream closed or otherwise broken
(timeout, reset, &c) */
> +               /*
> +                * replication stream closed or otherwise broken
> +                * (timeout, reset, &c)
> +                */
>                 RPRINTF("error reading from backup\n");
> -               close_stream_fd(s);
> +               primary_failed(s, ERROR_IO);
>                 return;
>         }
>
> @@ -1056,22 +1085,169 @@ static void remus_client_event(event_id_t id,
char mode, void *private)
>                 ctl_respond(s, TDREMUS_DONE);
>         else {
>                 RPRINTF("received unknown message: %s\n", req);
> -               close_stream_fd(s);
> +               primary_failed(s, ERROR_IO);
> +       }
> +
> +       return;
> +}
> +
> +static void primary_queue_read(td_driver_t *driver, td_request_t treq)
> +{
> +       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +       struct req_ring *ring = &s->queued_io;
> +
> +       if (ring_isempty(ring)) {
> +               /* just pass read through */
> +               td_forward_request(treq);
> +               return;
> +       }
> +
> +       ring_add_request(ring, &treq);
> +}
> +
> +static int primary_forward_request(struct tdremus_state *s,
> +                                  const td_request_t *treq)
> +{
> +       char header[sizeof(uint32_t) + sizeof(uint64_t)];
> +       uint32_t *sectors = (uint32_t *)header;
> +       uint64_t *sector = (uint64_t *)(header + sizeof(uint32_t));
> +       td_driver_t *driver = s->tdremus_driver;
> +
> +       *sectors = treq->secs;
> +       *sector = treq->sec;
> +
> +       if (mwrite(s->stream_fd.fd, TDREMUS_WRITE, strlen(TDREMUS_WRITE))
< 0)
> +               return ERROR_IO;
> +
> +       if (mwrite(s->stream_fd.fd, header, sizeof(header)) < 0)
> +               return ERROR_IO;
> +
> +       if (mwrite(s->stream_fd.fd, treq->buf,
> +           treq->secs * driver->info.sector_size) < 0)
> +               return ERROR_IO;
> +
> +       return 0;
> +}
> +
> +/* TODO:
> + * The primary uses mwrite() to write the contents of a write request to
the
> + * backup. This effectively blocks until all data has been copied into a
system
> + * buffer or a timeout has occured. We may wish to instead use tapdisk's
> + * nonblocking i/o interface, tapdisk_server_register_event(), to set
timeouts
> + * and write data in an asynchronous fashion.
> + */
> +static void primary_queue_write(td_driver_t *driver, td_request_t treq)
> +{
> +       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +       int rc;
> +
> +       // RPRINTF("write: stream_fd.fd: %d\n", s->stream_fd.fd);
> +
> +       if(s->stream_fd.fd < 0) {
> +               RPRINTF("connecting to backup...\n");
> +               rc = primary_do_connect(s);
> +               if (rc)
> +                       goto fail;
> +       }
> +
> +       /* The connection is not established, just queue the request */
> +       if (s->stream_fd.cid >= 0) {
> +               ring_add_request(&s->queued_io, &treq);
> +               return;
>         }
>
> +       /* The connection is established */
> +       rc = primary_forward_request(s, &treq);
> +       if (rc)
> +               goto fail;
> +
> +       td_forward_request(treq);
> +
>         return;
> +
> +fail:
> +       /* switch to unprotected mode and forward the request */
> +       RPRINTF("write request replication failed, switching to
unprotected mode");
> +       primary_failed(s, rc);
> +       td_forward_request(treq);
> +}
> +
> +/* It is called when the user write "flush" to control file. */
> +static int client_flush(td_driver_t *driver)
> +{
> +       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +
> +       // RPRINTF("committing output\n");
> +
> +       if (s->stream_fd.fd == -1)
> +               /* connection not yet established, nothing to flush */
> +               return 0;
> +
> +       if (mwrite(s->stream_fd.fd, TDREMUS_COMMIT,
> +           strlen(TDREMUS_COMMIT)) < 0) {
> +               RPRINTF("error flushing output");
> +               primary_failed(s, ERROR_IO);
> +               return -1;
> +       }
> +
> +       return 0;
> +}
> +
> +/* It is called when switching the mode from primary to unprotected */
> +static int primary_flush(td_driver_t *driver)
> +{
> +       struct tdremus_state *s = driver->data;
> +       struct req_ring *ring = &s->queued_io;
> +       unsigned int cons;
> +
> +       if (ring_isempty(ring))
> +               return 0;
> +
> +       while (!ring_isempty(ring)) {
> +               cons = ring->cons;
> +               ring->cons = ring_next(cons);
> +
> +               td_forward_request(ring->pending_requests[cons].treq);
> +       }
> +
> +       return 0;
> +}
> +
> +static int primary_start(td_driver_t *driver)
> +{
> +       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +
> +       RPRINTF("activating client mode\n");
> +
> +       tapdisk_remus.td_queue_read = primary_queue_read;
> +       tapdisk_remus.td_queue_write = primary_queue_write;
> +       s->queue_flush = primary_flush;
> +
> +       s->stream_fd.fd = -1;
> +       s->stream_fd.cid = -1;
> +       s->stream_fd.rid = -1;
> +       s->stream_fd.wid = -1;
> +
> +       return 0;
>  }
>
>  /* backup functions */
>  static void remus_server_event(event_id_t id, char mode, void *private);
>
> +/* It is called when we find some I/O error */
> +static void backup_failed(struct tdremus_state *s, int rc)
> +{
> +       close_stream_fd(s);
> +       close_server_fd(s);
> +       /* We will switch to unprotected mode in backup_queue_write() */
> +}
> +
>  /* returns the socket that receives write requests */
>  static void remus_server_accept(event_id_t id, char mode, void* private)
>  {
>         struct tdremus_state* s = (struct tdremus_state *) private;
>
>         int stream_fd;
> -       event_id_t cid;
>
>         /* XXX: add address-based black/white list */
>         if ((stream_fd = accept(s->server_fd.fd, NULL, NULL)) < 0) {
> @@ -1079,68 +1255,80 @@ static void remus_server_accept(event_id_t id,
char mode, void* private)
>                 return;
>         }
>
> -       /* TODO: check to see if we are already replicating. if so just
close the
> -        * connection (or do something smarter) */
> +       /*
> +        * TODO: check to see if we are already replicating.
> +        * if so just close the connection (or do something
> +        * smarter)
> +        */
>         RPRINTF("server accepted connection\n");
>
>         /* add tapdisk event for replication stream */
> -       cid = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
stream_fd, 0,
> -                                           remus_server_event, s);
> +       id = tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
stream_fd, 0,
> +                                          remus_server_event, s);
>
> -       if(cid < 0) {
> -               RPRINTF("error registering connection event handler:
%s\n", strerror(errno));
> +       if (id < 0) {
> +               RPRINTF("error registering connection event handler:
%s\n",
> +                       strerror(errno));
>                 close(stream_fd);
>                 return;
>         }
>
>         /* store replication file descriptor */
>         s->stream_fd.fd = stream_fd;
> -       s->stream_fd.id = cid;
> +       s->stream_fd.rid = id;
>  }
>
>  /* returns -2 if EADDRNOTAVAIL */
>  static int remus_bind(struct tdremus_state* s)
>  {
> -//  struct sockaddr_in sa;
>         int opt;
>         int rc = -1;
> +       event_id_t id;
>
>         if ((s->server_fd.fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
>                 RPRINTF("could not create server socket: %d\n", errno);
>                 return rc;
>         }
> -       opt = 1;
> -       if (setsockopt(s->server_fd.fd, SOL_SOCKET, SO_REUSEADDR, &opt,
sizeof(opt)) < 0)
> -               RPRINTF("Error setting REUSEADDR on %d: %d\n",
s->server_fd.fd, errno);
>
> -       if (bind(s->server_fd.fd, (struct sockaddr *)&s->sa,
sizeof(s->sa)) < 0) {
> -               RPRINTF("could not bind server socket %d to %s:%d: %d
%s\n", s->server_fd.fd,
> -                       inet_ntoa(s->sa.sin_addr), ntohs(s->sa.sin_port),
errno, strerror(errno));
> -               if (errno != EADDRINUSE)
> +       opt = 1;
> +       if (setsockopt(s->server_fd.fd, SOL_SOCKET,
> +                      SO_REUSEADDR, &opt, sizeof(opt)) < 0)
> +               RPRINTF("Error setting REUSEADDR on %d: %d\n",
> +                       s->server_fd.fd, errno);
> +
> +       if (bind(s->server_fd.fd, (struct sockaddr *)&s->sa,
> +                sizeof(s->sa)) < 0) {
> +               RPRINTF("could not bind server socket %d to %s:%d: %d
%s\n",
> +                       s->server_fd.fd, inet_ntoa(s->sa.sin_addr),
> +                       ntohs(s->sa.sin_port), errno, strerror(errno));
> +               if (errno == EADDRNOTAVAIL)
>                         rc = -2;
>                 goto err_sfd;
>         }
> +
>         if (listen(s->server_fd.fd, 10)) {
>                 RPRINTF("could not listen on socket: %d\n", errno);
>                 goto err_sfd;
>         }
>
> -       /* The socket s now bound to the address and listening so we may
now register
> -   * the fd with tapdisk */
> -
> -       if((s->server_fd.id =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
> -
 s->server_fd.fd, 0,
> -
 remus_server_accept, s)) < 0) {
> +       /*
> +        * The socket s now bound to the address and listening so we
> +        * may now register the fd with tapdisk
> +        */
> +       id =  tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,
> +                                           s->server_fd.fd, 0,
> +                                           remus_server_accept, s);
> +       if (id < 0) {
>                 RPRINTF("error registering server connection event
handler: %s",
> -                       strerror(s->server_fd.id));
> +                       strerror(id));
>                 goto err_sfd;
>         }
> +       s->server_fd.cid = id;
>
>         return 0;
>
> - err_sfd:
> -       close(s->server_fd.fd);
> -       s->server_fd.fd = -1;
> +err_sfd:
> +       CLOSE_FD(s->server_fd.fd);
>
>         return rc;
>  }
> @@ -1190,10 +1378,21 @@ void backup_queue_write(td_driver_t *driver,
td_request_t treq)
>         td_complete_request(treq, -EBUSY);
>  }
>
> +static int server_flush(td_driver_t *driver)
> +{
> +       struct tdremus_state *s = (struct tdremus_state *)driver->data;
> +       /*
> +        * Nothing to flush in beginning.
> +        */
> +       if (!s->ramdisk.prev)
> +               return 0;
> +       /* Try to flush any remaining requests */
> +       return ramdisk_flush(driver, s);
> +}
> +
>  static int backup_start(td_driver_t *driver)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
> -       int fd;
>
>         if (ramdisk_start(driver) < 0)
>                 return -1;
> @@ -1201,16 +1400,15 @@ static int backup_start(td_driver_t *driver)
>         tapdisk_remus.td_queue_read = backup_queue_read;
>         tapdisk_remus.td_queue_write = backup_queue_write;
>         s->queue_flush = server_flush;
> -       /* TODO set flush function */
>         return 0;
>  }
>
> -static int server_do_wreq(td_driver_t *driver)
> +static void server_do_wreq(td_driver_t *driver)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
>         static tdremus_wire_t twreq;
>         char buf[4096];
> -       int len, rc;
> +       int len, rc = ERROR_IO;
>
>         char header[sizeof(uint32_t) + sizeof(uint64_t)];
>         uint32_t *sectors = (uint32_t *) header;
> @@ -1227,39 +1425,40 @@ static int server_do_wreq(td_driver_t *driver)
>         // *sector);
>
>         if (len > sizeof(buf)) {
> -               /* freak out! */
> -               RPRINTF("write request too large: %d/%u\n", len,
(unsigned)sizeof(buf));
> -               return -1;
> +               /* freak out! How to handle the remaining data from
primary */
> +               RPRINTF("write request too large: %d/%u\n",
> +                       len, (unsigned)sizeof(buf));
> +               goto err;
>         }
>
>         if (mread(s->stream_fd.fd, buf, len) < 0)
>                 goto err;
>
> -       if (ramdisk_write(&s->ramdisk, *sector, *sectors, buf) < 0)
> +       if (ramdisk_write(&s->ramdisk, *sector, *sectors, buf) < 0) {
> +               rc = ERROR_INTERNAL;
>                 goto err;
> +       }
>
> -       return 0;
> +       return;
>
>   err:
>         /* should start failover */
>         RPRINTF("backup write request error\n");
> -       close_stream_fd(s);
> -
> -       return -1;
> +       backup_failed(s, rc);
>  }
>
> -static int server_do_sreq(td_driver_t *driver)
> +static void server_do_sreq(td_driver_t *driver)
>  {
>         /*
>           RPRINTF("submit request received\n");
>    */
>
> -       return 0;
> +       return;
>  }
>
>  /* at this point, the server can start applying the most recent
>   * ramdisk. */
> -static int server_do_creq(td_driver_t *driver)
> +static void server_do_creq(td_driver_t *driver)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)driver->data;
>
> @@ -1269,9 +1468,7 @@ static int server_do_creq(td_driver_t *driver)
>
>         /* XXX this message should not be sent until flush completes! */
>         if (write(s->stream_fd.fd, TDREMUS_DONE, strlen(TDREMUS_DONE)) !=
4)
> -               return -1;
> -
> -       return 0;
> +               backup_failed(s, ERROR_IO);
>  }
>
>
> @@ -1356,10 +1553,6 @@ static int unprotected_start(td_driver_t *driver)
>
>         RPRINTF("failure detected, activating passthrough\n");
>
> -       /* close the server socket */
> -       close_stream_fd(s);
> -
> -       close_server_fd(s);
>
>         /* install the unprotected read/write handlers */
>         tapdisk_remus.td_queue_read = unprotected_queue_read;
> @@ -1486,6 +1679,19 @@ static int switch_mode(td_driver_t *driver, enum
tdremus_mode mode)
>         return rc;
>  }
>
> +static void ctl_reopen(struct tdremus_state *s)
> +{
> +       ctl_unregister(s);
> +       CLOSE_FD(s->ctl_fd.fd);
> +       RPRINTF("FIFO closed\n");
> +
> +       if ((s->ctl_fd.fd = open(s->ctl_path, O_RDWR)) < 0) {
> +               RPRINTF("error reopening FIFO: %d\n", errno);
> +               return;
> +       }
> +       ctl_register(s);
> +}
> +
>  static void ctl_request(event_id_t id, char mode, void *private)
>  {
>         struct tdremus_state *s = (struct tdremus_state *)private;
> @@ -1497,12 +1703,6 @@ static void ctl_request(event_id_t id, char mode,
void *private)
>
>         if (!(rc = read(s->ctl_fd.fd, msg, sizeof(msg) - 1 /* append nul
*/))) {
>                 RPRINTF("0-byte read received, reopening FIFO\n");
> -               /*TODO: we may have to unregister/re-register with
tapdisk_server */
> -               close(s->ctl_fd.fd);
> -               RPRINTF("FIFO closed\n");
> -               if ((s->ctl_fd.fd = open(s->ctl_path, O_RDWR)) < 0) {
> -                       RPRINTF("error reopening FIFO: %d\n", errno);
> -               }
>                 return;
>         }
>
> @@ -1641,10 +1841,11 @@ static int ctl_register(struct tdremus_state *s)
>         RPRINTF("registering ctl fifo\n");
>
>         /* register ctl fd */
> -       s->ctl_fd.id =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s->ctl_fd.fd, 0,
ctl_request, s);
> +       s->ctl_fd.cid =
tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s->ctl_fd.fd, 0,
ctl_request, s);
>
> -       if (s->ctl_fd.id < 0) {
> -               RPRINTF("error registering ctrl FIFO %s: %d\n",
s->ctl_path, s->ctl_fd.id);
> +       if (s->ctl_fd.cid < 0) {
> +               RPRINTF("error registering ctrl FIFO %s: %d\n",
> +                       s->ctl_path, s->ctl_fd.cid);
>                 return -1;
>         }
>
> @@ -1655,10 +1856,7 @@ static void ctl_unregister(struct tdremus_state *s)
>  {
>         RPRINTF("unregistering ctl fifo\n");
>
> -       if (s->ctl_fd.id >= 0) {
> -               tapdisk_server_unregister_event(s->ctl_fd.id);
> -               s->ctl_fd.id = -1;
> -       }
> +       UNREGISTER_EVENT(s->ctl_fd.cid);
>  }
>
>  /* interface */
> --
> 1.9.3
>

--20cf303f6406f43fda0503d47373
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<p dir=3D"ltr">On Sep 5, 2014 5:30 AM, &quot;Wen Congyang&quot; &lt;<a href=
=3D"mailto:wency@cn.fujitsu.com">wency@cn.fujitsu.com</a>&gt; wrote:<br>
&gt;<br>
&gt; tapdisk2 is a single thread process. If we use remus,<br>
&gt; we will block in primary_blocking_connect(). The<br>
&gt; user will not have any chance to talk with tapdisk2.<br>
&gt; So we should connect to backup asynchronously.<br>
&gt; Before the connection is established, we queue<br>
&gt; all I/O request, and handle it when the connection<br>
&gt; is established.<br>
&gt;</p>
<p dir=3D"ltr">Hi<br>
=C2=A0 This is useful functionality but also very dangerous. I am afraid yo=
ur comments are quite sparse in addressing how the I/O requests are handled=
 at the primary until the connection is established.<br>
 Before this patch, the guest would block halfway through boot, until the b=
ackup connection is established. What happens after this patch?<br>
 Will the guest&#39;s write requests go through? If so, are you merging wri=
tes to same block in your internal ring? What about reads? Do you query you=
r in memory queue to serve these reads?<br>
=C2=A0 You are basically introducing a copy on write semantics at the prima=
ry until a backup connection is established, with the faulting writes and s=
ubsequent reads being served out of memory. What happens to the network io =
during this wait time? Are all outputs blocked?<br>
 The DRBD version allows the primary to function just like a normal VM unti=
l Remus is started. When Remus is started, it ensures that both disks are i=
n sync before the initial migration starts. Are you doing something similar=
 here?</p>
<p dir=3D"ltr">The patch is unfortunately too mangled to follow. You may ha=
ve to break it up, as the diff lines seem to straddle across function bound=
aries in confusing ways, making it hard to understand.<br></p>
<p dir=3D"ltr">&gt; Signed-off-by: Wen Congyang &lt;<a href=3D"mailto:wency=
@cn.fujitsu.com">wency@cn.fujitsu.com</a>&gt;<br>
&gt; Cc: Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca">rshr=
iram@cs.ubc.ca</a>&gt;<br>
&gt; ---<br>
&gt; =C2=A0tools/blktap2/drivers/block-remus.c | 760 ++++++++++++++++++++++=
+-------------<br>
&gt; =C2=A01 file changed, 479 insertions(+), 281 deletions(-)<br>
&gt;<br>
&gt; diff --git a/tools/blktap2/drivers/block-remus.c b/tools/blktap2/drive=
rs/block-remus.c<br>
&gt; index d358b44..c21f851 100644<br>
&gt; --- a/tools/blktap2/drivers/block-remus.c<br>
&gt; +++ b/tools/blktap2/drivers/block-remus.c<br>
&gt; @@ -63,10 +63,28 @@<br>
&gt; =C2=A0#define RAMDISK_HASHSIZE 128<br>
&gt;<br>
&gt; =C2=A0/* connect retry timeout (seconds) */<br>
&gt; -#define REMUS_CONNRETRY_TIMEOUT 10<br>
&gt; +#define REMUS_CONNRETRY_TIMEOUT 1<br>
&gt;<br>
&gt; =C2=A0#define RPRINTF(_f, _a...) syslog (LOG_DEBUG, &quot;remus: &quot=
; _f, ## _a)<br>
&gt;<br>
&gt; +#define UNREGISTER_EVENT(id)=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=A0 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0tapdisk_server_unregister_event(id);=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=A0id =3D -1;=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=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; +<br>
&gt; +#define CLOSE_FD(fd)=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 =C2=A0do {=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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (fd &gt;=3D=
 0) {=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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0close(fd);=C2=A0 =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=A0fd =3D -1;=C2=A0 =C2=A0 =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\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (0)<br>
&gt; +<br>
&gt; +#define MAX_REMUS_REQUEST=C2=A0 =C2=A0 =C2=A0 =C2=A0TAPDISK_DATA_REQU=
ESTS<br>
&gt; +<br>
&gt; =C2=A0enum tdremus_mode {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 mode_invalid =3D 0,<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 mode_unprotected,<br>
&gt; @@ -74,17 +92,21 @@ enum tdremus_mode {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 mode_backup<br>
&gt; =C2=A0};<br>
&gt;<br>
&gt; +enum {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_INTERNAL =3D -1,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_IO =3D -2,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ERROR_CONNECTION =3D -3,<br>
&gt; +};<br>
&gt; +<br>
&gt; =C2=A0struct tdremus_req {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0uint64_t sector;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int nb_sectors;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0char buf[4096];<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_request_t treq;<br>
&gt; =C2=A0};<br>
&gt;<br>
&gt; =C2=A0struct req_ring {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* waste one slot to distinguish between e=
mpty and full */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_req requests[MAX_REQUESTS *=
 2 + 1];<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int head;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int tail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_req pending_requests[MAX_RE=
MUS_REQUEST + 1];<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int prod;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int cons;<br>
&gt; =C2=A0};<br>
&gt;<br>
&gt; =C2=A0/* TODO: This isn&#39;t very pretty, but to properly generate ou=
r own treqs (needed<br>
&gt; @@ -144,10 +166,21 @@ struct ramdisk_write_cbdata {<br>
&gt;<br>
&gt; =C2=A0typedef void (*queue_rw_t) (td_driver_t *driver, td_request_t tr=
eq);<br>
&gt;<br>
&gt; -/* poll_fd type for blktap2 fd system. taken from block_log.c */<br>
&gt; +/*<br>
&gt; + * If cid, rid and wid are -1, fd must be -1. It means that<br>
&gt; + * we are in unpritected mode or we don&#39;t start to connect<br>
&gt; + * to backup.<br>
&gt; + * If fd is an valid fd:<br>
&gt; + *=C2=A0 cid is valid, rid and wid must be invalid. It means that<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 the connection is in progress.<br>
&gt; + *=C2=A0 cid is invalid. rid or wid must be valid. It means that<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 the connection is established.<br>
&gt; + */<br>
&gt; =C2=A0typedef struct poll_fd {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int=C2=A0 =C2=A0 =C2=A0 =C2=A0 fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t cid;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t rid;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t wid;<br>
&gt; =C2=A0} poll_fd_t;<br>
&gt;<br>
&gt; =C2=A0struct tdremus_state {<br>
&gt; @@ -166,8 +199,11 @@ struct tdremus_state {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 poll_fd_t server_fd;=C2=A0 =C2=A0 /* serve=
r listen port */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 poll_fd_t stream_fd;=C2=A0 =C2=A0 =C2=A0/*=
 replication channel */<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* queue write requests, batch-replicate a=
t submit */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct req_ring write_ring;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * queue I/O requests, batch-replicate whe=
n<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * the connection is established.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct req_ring queued_io;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* ramdisk data*/<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct ramdisk ramdisk;<br>
&gt; @@ -207,11 +243,13 @@ static int tdremus_close(td_driver_t *driver);<b=
r>
&gt;<br>
&gt; =C2=A0static int switch_mode(td_driver_t *driver, enum tdremus_mode mo=
de);<br>
&gt; =C2=A0static int ctl_respond(struct tdremus_state *s, const char *resp=
onse);<br>
&gt; +static int ctl_register(struct tdremus_state *s);<br>
&gt; +static void ctl_unregister(struct tdremus_state *s);<br>
&gt;<br>
&gt; =C2=A0/* ring functions */<br>
&gt; -static inline unsigned int ring_next(struct req_ring* ring, unsigned =
int pos)<br>
&gt; +static inline unsigned int ring_next(unsigned int pos)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (++pos &gt;=3D MAX_REQUESTS * 2 + 1)<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (++pos &gt;=3D MAX_REMUS_REQUEST + 1)<b=
r>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return pos;<br>
&gt; @@ -219,13 +257,26 @@ static inline unsigned int ring_next(struct req_=
ring* ring, unsigned int pos)<br>
&gt;<br>
&gt; =C2=A0static inline int ring_isempty(struct req_ring* ring)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ring-&gt;head =3D=3D ring-&gt;tail;=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return ring-&gt;cons =3D=3D ring-&gt;prod;=
<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0static inline int ring_isfull(struct req_ring* ring)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ring_next(ring, ring-&gt;tail) =3D=
=3D ring-&gt;head;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return ring_next(ring-&gt;prod) =3D=3D rin=
g-&gt;cons;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void ring_add_request(struct req_ring *ring, const td_request_=
t *treq)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* If ring is full, it means that tapdisk2=
 has some bug */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ring_isfull(ring)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
OOPS, ring is full\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0exit(1);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ring-&gt;pending_requests[ring-&gt;prod].t=
req =3D *treq;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ring-&gt;prod =3D ring_next(ring-&gt;prod)=
;<br>
&gt; =C2=A0}<br>
&gt; +<br>
&gt; =C2=A0/* Prototype declarations */<br>
&gt; =C2=A0static int ramdisk_flush(td_driver_t *driver, struct tdremus_sta=
te* s);<br>
&gt;<br>
&gt; @@ -728,30 +779,39 @@ static int mwrite(int fd, void* buf, size_t len)=
<br>
&gt;<br>
&gt; =C2=A0static void inline close_stream_fd(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;stream_fd.fd &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* XXX: -2 is magic. replace with macro pe=
rhaps? */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;<a h=
ref=3D"http://stream_fd.id">stream_fd.id</a>);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close(s-&gt;stream_fd.fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D -2;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.rid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;stream_fd.wid);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* close the connection */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;stream_fd.fd);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0static void close_server_fd(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;server_fd.fd &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;<a h=
ref=3D"http://server_fd.id">server_fd.id</a>);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://server_fd.id">serv=
er_fd.id</a> =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close(s-&gt;stream_fd.fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;server_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;server_fd.fd);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* primary functions */<br>
&gt; =C2=A0static void remus_client_event(event_id_t, char mode, void *priv=
ate);<br>
&gt; =C2=A0static void remus_connect_event(event_id_t id, char mode, void *=
private);<br>
&gt; =C2=A0static void remus_retry_connect_event(event_id_t id, char mode, =
void *private);<br>
&gt; +static int primary_forward_request(struct tdremus_state *s,<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 const td_request_t *treq)=
;<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * It is called when we cannot connect to backup, or find I/O error w=
hen<br>
&gt; + * reading/writing.<br>
&gt; + */<br>
&gt; +static void primary_failed(struct tdremus_state *s, int rc)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc =3D=3D ERROR_INTERNAL)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
switch to unprotected mode due to internal error&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0switch_mode(s-&gt;tdremus_driver, mode_unp=
rotected);<br>
&gt; +}<br>
&gt;<br>
&gt; =C2=A0static int primary_do_connect(struct tdremus_state *state)<br>
&gt; =C2=A0{<br>
&gt; @@ -760,281 +820,247 @@ static int primary_do_connect(struct tdremus_s=
tate *state)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int rc;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int flags;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;client connecting to %s:%d..=
.\n&quot;, inet_ntoa(state-&gt;sa.sin_addr), ntohs(state-&gt;sa.sin_port));=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;client connecting to %s:%d..=
.\n&quot;,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0inet_ntoa(stat=
e-&gt;sa.sin_addr), ntohs(state-&gt;sa.sin_port));<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((fd =3D socket(PF_INET, SOCK_STREAM, 0=
)) &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
could not create client socket: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.fd =3D fd;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* make socket nonblocking */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((flags =3D fcntl(fd, F_GETFL, 0)) =3D=
=3D -1)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 flags =3D 0;<b=
r>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)=
 =3D=3D -1)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)=
 =3D=3D -1) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error setting fd %d to non block mode\n&quot;, fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* once we have created the socket and pop=
ulated the address, we can now start<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * our non-blocking connect. rather than d=
uplicating code we trigger a timeout<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * on the socket fd, which calls out nonbl=
ocking connect code<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * once we have created the socket and pop=
ulated the address,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * we can now start our non-blocking conne=
ct. rather than<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * duplicating code we trigger a timeout o=
n the socket fd,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * which calls out nonblocking connect cod=
e<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tapdisk_server_register_event(S=
CHEDULER_POLL_TIMEOUT, fd, 0, remus_retry_connect_event, state)) &lt; 0) {<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering timeout client connection event handler: %s\n&quot;, stre=
rror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: we le=
ak a fd here */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tapdisk_server_register_event(S=
CHEDULER_POLL_TIMEOUT, fd, 0,<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=A0 remus_retry_connect_event,<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=A0 state)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.fd =3D fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;<a href=3D"http://stream_fd.id">=
stream_fd.id</a> =3D id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.cid =3D id;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int primary_blocking_connect(struct tdremus_state *state)<br>
&gt; +static int remus_handle_queued_io(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct req_ring *queued_io =3D &amp;s-&gt;=
queued_io;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int cons;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_request_t *treq;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int rc;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int flags;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;client connecting to %s:%d..=
.\n&quot;, inet_ntoa(state-&gt;sa.sin_addr), ntohs(state-&gt;sa.sin_port));=
<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((fd =3D socket(PF_INET, SOCK_STREAM, 0=
)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not create client socket: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0while (!ring_isempty(queued_io)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cons =3D queue=
d_io-&gt;cons;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0treq =3D &amp;=
queued_io-&gt;pending_requests[cons].treq;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0do {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((rc =3D co=
nnect(fd, (struct sockaddr *)&amp;state-&gt;sa,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
sizeof(state-&gt;sa))) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if (errno =3D=3D ECONNREFUSED) {<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=A0RPRINTF(&quot;connection refused =
-- retrying in 1 second\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=A0sleep(1);<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} else {<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=A0RPRINTF(&quot;connection failed: =
%d\n&quot;, errno);<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=A0close(fd);<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=A0return -1;<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}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (treq-&gt;o=
p =3D=3D TD_OP_WRITE) {<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=A0rc =3D primary_forward_request(s, treq);<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=A0if (rc)<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=A0return rc;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0} while (rc &lt; 0);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;client connected\n&quot;);<b=
r>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* make socket nonblocking */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((flags =3D fcntl(fd, F_GETFL, 0)) =3D=
=3D -1)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flags =3D 0;<b=
r>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)=
 =3D=3D -1)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error making socket nonblocking\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close(fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tapdisk_server_register_event(S=
CHEDULER_POLL_READ_FD, fd, 0, remus_client_event, state)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering client event handler: %s\n&quot;, strerror(id));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close(fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_req=
uest(*treq);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queued_io-&gt;=
cons =3D ring_next(cons);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;stream_fd.fd =3D fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0state-&gt;<a href=3D"http://stream_fd.id">=
stream_fd.id</a> =3D id;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -/* on read, just pass request through */<br>
&gt; -static void primary_queue_read(td_driver_t *driver, td_request_t treq=
)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* just pass read through */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_request(treq);<br>
&gt; -}<br>
&gt; -<br>
&gt; -/* TODO:<br>
&gt; - * The primary uses mwrite() to write the contents of a write request=
 to the<br>
&gt; - * backup. This effectively blocks until all data has been copied int=
o a system<br>
&gt; - * buffer or a timeout has occured. We may wish to instead use tapdis=
k&#39;s<br>
&gt; - * nonblocking i/o interface, tapdisk_server_register_event(), to set=
 timeouts<br>
&gt; - * and write data in an asynchronous fashion.<br>
&gt; - */<br>
&gt; -static void primary_queue_write(td_driver_t *driver, td_request_t tre=
q)<br>
&gt; +static int remus_connection_done(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0char header[sizeof(uint32_t) + sizeof(uint=
64_t)];<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0uint32_t *sectors =3D (uint32_t *)header;<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0uint64_t *sector =3D (uint64_t *)(header +=
 sizeof(uint32_t));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0// RPRINTF(&quot;write: stream_fd.fd: %d\n=
&quot;, s-&gt;stream_fd.fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect succeeded */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* unregister this function and register a=
 new event handler */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* -1 means we haven&#39;t connected yet, =
-2 means the connection was lost */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if(s-&gt;stream_fd.fd =3D=3D -1) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
connecting to backup...\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_blocki=
ng_connect(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, s-&gt;stream_fd.fd,<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 0, remus_client_event, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if(id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering client event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0*sectors =3D treq.secs;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0*sector =3D treq.sec;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, TDREMUS_WRI=
TE, strlen(TDREMUS_WRITE)) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, header, siz=
eof(header)) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* handle the queued requests */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return remus_handle_queued_io(s);<br>
&gt; +}<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, treq.buf, t=
req.secs * driver-&gt;info.sector_size) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +static int remus_retry_connect(struct tdremus_state *s)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_request(treq);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;connect to backup 1 second l=
ater&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_TIMEOUT,<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 s-&gt;stream_fd.fd,<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 REMUS_CONNRETRY_TIMEOUT,<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 remus_retry_connect_event, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering timeout client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt;<br>
&gt; - fail:<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* switch to unprotected mode and tell tap=
disk to retry */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;write request replication fa=
iled, switching to unprotected mode&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0switch_mode(s-&gt;tdremus_driver, mode_unp=
rotected);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0td_complete_request(treq, -EBUSY);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -<br>
&gt; -/* It is called when the user writes &quot;flush&quot; to control fil=
e */<br>
&gt; -static int client_flush(td_driver_t *driver)<br>
&gt; +static int remus_wait_connect_done(struct tdremus_state *s)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0// RPRINTF(&quot;committing output\n&quot;=
);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;stream_fd.fd =3D=3D -1)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* connection =
not yet established, nothing to flush */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server_unregister_event(s-&gt;stre=
am_fd.cid);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, TDREMUS_COM=
MIT,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0strlen(TDREMUS_COMMIT)) &lt;=
 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error flushing output&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_f=
d(s);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_WRITE_FD,<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 s-&gt;stream_fd.fd, 0,<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 remus_connect_event, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering client connection event handler: %s\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=A0strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
NTERNAL;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D id;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int server_flush(td_driver_t *driver)<br>
&gt; +/* return 1 if we need to reconnect to backup */<br>
&gt; +static int check_connect_errno(int err)<br>
&gt; =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * Nothing to flush in beginning.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The fd is non-block, so we will not get=
 ETIMEDOUT<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * after calling connect(). We only can ge=
t this errno<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * by getsockopt().<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;ramdisk.prev)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Try to flush any remaining requests */<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ramdisk_flush(driver, s);<br>
&gt; -}<br>
&gt; -<br>
&gt; -static int primary_start(td_driver_t *driver)<br>
&gt; -{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;activating client mode\n&quo=
t;);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_remus.td_queue_read =3D primary_qu=
eue_read;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_remus.td_queue_write =3D primary_q=
ueue_write;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://stream_fd.id">stre=
am_fd.id</a> =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (err =3D=3D ECONNREFUSED || err =3D=3D =
ENETUNREACH ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D EAGAIN || err =3D=
=3D ECONNABORTED ||<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D=3D ETIMEDOUT)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -/* timeout callback */<br>
&gt; =C2=A0static void remus_retry_connect_event(event_id_t id, char mode, =
void *private)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)private;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc, ret;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* do a non-blocking connect */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (connect(s-&gt;stream_fd.fd, (struct so=
ckaddr *)&amp;s-&gt;sa, sizeof(s-&gt;sa))<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;&amp; errno !=3D EINPRO=
GRESS)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if(errno =3D=
=3D ECONNREFUSED || errno =3D=3D ENETUNREACH || errno =3D=3D EAGAIN || errn=
o =3D=3D ECONNABORTED)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0/* try again in a second */<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=A0tapdisk_server_unregister_event(s-&gt;<a href=3D"http://strea=
m_fd.id">stream_fd.id</a>);<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=A0if((id =3D tapdisk_server_register_event(SCHEDULER_POLL_TIMEO=
UT, s-&gt;stream_fd.fd, REMUS_CONNRETRY_TIMEOUT, remus_retry_connect_event,=
 s)) &lt; 0) {<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=A0RPRINTF(&quot;error registering t=
imeout client connection event handler: %s\n&quot;, strerror(id));<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=A0return;<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}<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=A0s-&gt;<a href=3D"http://stream_fd.id">stream_fd.id</a> =3D id=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0else<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0/* not recoverable */<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=A0RPRINTF(&quot;error connection to server %s\n&quot;, strerror=
(errno));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D connect(s-&gt;stream_fd.fd,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0(struct sockaddr *)&amp;s-&gt;sa,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0sizeof(s-&gt;sa));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EINPROGRESS) {<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/*<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 * the connect returned EINPROGRESS (nonblocking<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 * connect) we must wait for the fd to be writeable<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 * to determine if the connect worked<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 */<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=A0rc =3D remus_wait_connect_done(s);<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=A0if (rc)<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=A0goto fail;<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 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect=
 returned EINPROGRESS (nonblocking connect) we must wait for the fd to be w=
riteable to determine if the connect worked */<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server=
_unregister_event(s-&gt;<a href=3D"http://stream_fd.id">stream_fd.id</a>);<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tap=
disk_server_register_event(SCHEDULER_POLL_WRITE_FD, s-&gt;stream_fd.fd, 0, =
remus_connect_event, s)) &lt; 0) {<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=A0RPRINTF(&quot;error registering client connection event handl=
er: %s\n&quot;, strerror(id));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(errno)) {<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=A0rc =3D remus_retry_connect(s);<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=A0if (rc)<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=A0goto fail;<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 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0s-&gt;<a href=
=3D"http://stream_fd.id">stream_fd.id</a> =3D id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* not recover=
able */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error connection to server %s\n&quot;, strerror(errno));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D ERROR_C=
ONNECTION;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The connection is established unexpecte=
dly */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D remus_connection_done(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +<br>
&gt; +fail:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed(s, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* callback when nonblocking connect() is finished */<br>
&gt; -/* called only by primary in unprotected state */<br>
&gt; =C2=A0static void remus_connect_event(event_id_t id, char mode, void *=
private)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int socket_errno;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 socklen_t socket_errno_size;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)private;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* check to se if the connect succeeded */=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* check to see if the connect succeeded *=
/<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 socket_errno_size =3D sizeof(socket_errno)=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (getsockopt(s-&gt;stream_fd.fd, SOL_SOC=
KET, SO_ERROR, &amp;socket_errno, &amp;socket_errno_size)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (getsockopt(s-&gt;stream_fd.fd, SOL_SOC=
KET, SO_ERROR,<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;socket_errno, &amp;socket_errno_size)) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
error getting socket errno\n&quot;);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;socket connect returned %d\n=
&quot;, socket_errno);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if(socket_errno)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (socket_errno) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* the connect=
 did not succeed */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (check_conn=
ect_errno(socket_errno)) {<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/*<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 * we can probably assume that the backup is down.<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 * just try again later<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 */<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=A0rc =3D remus_retry_connect(s);<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=A0if (rc)<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=A0goto fail;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if(socket_errn=
o =3D=3D ECONNREFUSED || socket_errno =3D=3D ENETUNREACH || socket_errno =
=3D=3D ETIMEDOUT<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 || soc=
ket_errno =3D=3D ECONNABORTED || socket_errno =3D=3D EAGAIN)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0/* we can probably assume that the backup is down. just try a=
gain later */<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=A0tapdisk_server_unregister_event(s-&gt;<a href=3D"http://strea=
m_fd.id">stream_fd.id</a>);<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=A0if((id =3D tapdisk_server_register_event(SCHEDULER_POLL_TIMEO=
UT, s-&gt;stream_fd.fd, REMUS_CONNRETRY_TIMEOUT, remus_retry_connect_event,=
 s)) &lt; 0) {<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=A0RPRINTF(&quot;error registering t=
imeout client connection event handler: %s\n&quot;, strerror(id));<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=A0return;<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}<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=A0s-&gt;<a href=3D"http://stream_fd.id">stream_fd.id</a> =3D id=
;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0else<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0RPRINTF(&quot;socket connect returned %d, giving up\n&quot;, =
socket_errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* the connect=
 succeeded */<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* unregister =
this function and register a new event handler */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server=
_unregister_event(s-&gt;<a href=3D"http://stream_fd.id">stream_fd.id</a>);<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if((id =3D tap=
disk_server_register_event(SCHEDULER_POLL_READ_FD, s-&gt;stream_fd.fd, 0, r=
emus_client_event, s)) &lt; 0) {<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=A0RPRINTF(&quot;error registering client event handler: %s\n&qu=
ot;, strerror(id));<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 return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<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=A0RPRINTF(&quot;socket connect returned %d, giving up\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=A0socket_errno);<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=A0rc =3D ERROR_CONNECTION;<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=A0goto fail;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0s-&gt;<a href=
=3D"http://stream_fd.id">stream_fd.id</a> =3D id;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* switch from=
 unprotected to protected client */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0switch_mode(s-=
&gt;tdremus_driver, mode_primary);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D remus_connection_done(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +<br>
&gt; +fail:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed(s, rc);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt;<br>
&gt; -/* we install this event handler on the primary once we have connecte=
d to the backup */<br>
&gt; +/*<br>
&gt; + * we install this event handler on the primary once we have<br>
&gt; + * connected to the backup.<br>
&gt; + */<br>
&gt; =C2=A0/* wait for &quot;done&quot; message to commit checkpoint */<br>
&gt; =C2=A0static void remus_client_event(event_id_t id, char mode, void *p=
rivate)<br>
&gt; =C2=A0{<br>
&gt; @@ -1043,9 +1069,12 @@ static void remus_client_event(event_id_t id, c=
har mode, void *private)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int rc;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (mread(s-&gt;stream_fd.fd, req, sizeof(=
req) - 1) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* replication=
 stream closed or otherwise broken (timeout, reset, &amp;c) */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 * replication=
 stream closed or otherwise broken<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * (timeout, r=
eset, &amp;c)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 RPRINTF(&quot;=
error reading from backup\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_f=
d(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, ERROR_IO);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; @@ -1056,22 +1085,169 @@ static void remus_client_event(event_id_t id,=
 char mode, void *private)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ctl_respond(s,=
 TDREMUS_DONE);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 else {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
received unknown message: %s\n&quot;, req);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_f=
d(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, ERROR_IO);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static void primary_queue_read(td_driver_t *driver, td_request_t treq=
)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct req_ring *ring =3D &amp;s-&gt;queue=
d_io;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ring_isempty(ring)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* just pass r=
ead through */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_req=
uest(treq);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ring_add_request(ring, &amp;treq);<br>
&gt; +}<br>
&gt; +<br>
&gt; +static int primary_forward_request(struct tdremus_state *s,<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 const td_request_t *treq)=
<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0char header[sizeof(uint32_t) + sizeof(uint=
64_t)];<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0uint32_t *sectors =3D (uint32_t *)header;<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0uint64_t *sector =3D (uint64_t *)(header +=
 sizeof(uint32_t));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_driver_t *driver =3D s-&gt;tdremus_driv=
er;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0*sectors =3D treq-&gt;secs;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0*sector =3D treq-&gt;sec;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, TDREMUS_WRI=
TE, strlen(TDREMUS_WRITE)) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
O;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, header, siz=
eof(header)) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
O;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, treq-&gt;bu=
f,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0treq-&gt;secs * driver-&gt;i=
nfo.sector_size) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return ERROR_I=
O;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* TODO:<br>
&gt; + * The primary uses mwrite() to write the contents of a write request=
 to the<br>
&gt; + * backup. This effectively blocks until all data has been copied int=
o a system<br>
&gt; + * buffer or a timeout has occured. We may wish to instead use tapdis=
k&#39;s<br>
&gt; + * nonblocking i/o interface, tapdisk_server_register_event(), to set=
 timeouts<br>
&gt; + * and write data in an asynchronous fashion.<br>
&gt; + */<br>
&gt; +static void primary_queue_write(td_driver_t *driver, td_request_t tre=
q)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int rc;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0// RPRINTF(&quot;write: stream_fd.fd: %d\n=
&quot;, s-&gt;stream_fd.fd);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if(s-&gt;stream_fd.fd &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
connecting to backup...\n&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D primary=
_do_connect(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<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=A0goto fail;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The connection is not established, just=
 queue the request */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;stream_fd.cid &gt;=3D 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ring_add_reque=
st(&amp;s-&gt;queued_io, &amp;treq);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The connection is established */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D primary_forward_request(s, &amp;tre=
q);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto fail;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_request(treq);<br>
&gt; +<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; +<br>
&gt; +fail:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* switch to unprotected mode and forward =
the request */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;write request replication fa=
iled, switching to unprotected mode&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed(s, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_request(treq);<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* It is called when the user write &quot;flush&quot; to control file=
. */<br>
&gt; +static int client_flush(td_driver_t *driver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0// RPRINTF(&quot;committing output\n&quot;=
);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;stream_fd.fd =3D=3D -1)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* connection =
not yet established, nothing to flush */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (mwrite(s-&gt;stream_fd.fd, TDREMUS_COM=
MIT,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0strlen(TDREMUS_COMMIT)) &lt;=
 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error flushing output&quot;);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0primary_failed=
(s, ERROR_IO);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +/* It is called when switching the mode from primary to unprotected *=
/<br>
&gt; +static int primary_flush(td_driver_t *driver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D driver-&gt;dat=
a;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct req_ring *ring =3D &amp;s-&gt;queue=
d_io;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int cons;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ring_isempty(ring))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0while (!ring_isempty(ring)) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cons =3D ring-=
&gt;cons;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ring-&gt;cons =
=3D ring_next(cons);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0td_forward_req=
uest(ring-&gt;pending_requests[cons].treq);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static int primary_start(td_driver_t *driver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;activating client mode\n&quo=
t;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_remus.td_queue_read =3D primary_qu=
eue_read;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_remus.td_queue_write =3D primary_q=
ueue_write;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;queue_flush =3D primary_flush;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.fd =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.cid =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.wid =3D -1;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* backup functions */<br>
&gt; =C2=A0static void remus_server_event(event_id_t id, char mode, void *p=
rivate);<br>
&gt;<br>
&gt; +/* It is called when we find some I/O error */<br>
&gt; +static void backup_failed(struct tdremus_state *s, int rc)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0close_server_fd(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* We will switch to unprotected mode in b=
ackup_queue_write() */<br>
&gt; +}<br>
&gt; +<br>
&gt; =C2=A0/* returns the socket that receives write requests */<br>
&gt; =C2=A0static void remus_server_accept(event_id_t id, char mode, void* =
private)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state* s =3D (struct tdremu=
s_state *) private;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int stream_fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t cid;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* XXX: add address-based black/white list=
 */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((stream_fd =3D accept(s-&gt;server_fd.=
fd, NULL, NULL)) &lt; 0) {<br>
&gt; @@ -1079,68 +1255,80 @@ static void remus_server_accept(event_id_t id,=
 char mode, void* private)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: check to see if we are already re=
plicating. if so just close the<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * connection (or do something smarter) */=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * TODO: check to see if we are already re=
plicating.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * if so just close the connection (or do =
something<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * smarter)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;server accepted connection\n=
&quot;);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* add tapdisk event for replication strea=
m */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0cid =3D tapdisk_server_register_event(SCHE=
DULER_POLL_READ_FD, stream_fd, 0,<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=A0remus_server_event, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D tapdisk_server_register_event(SCHED=
ULER_POLL_READ_FD, stream_fd, 0,<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 remus_server_event, s);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if(cid &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering connection event handler: %s\n&quot;, strerror(errno));<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering connection event handler: %s\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=A0strerror(errno));<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 close(stream_f=
d);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* store replication file descriptor */<br=
>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;stream_fd.fd =3D stream_fd;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://stream_fd.id">stre=
am_fd.id</a> =3D cid;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stream_fd.rid =3D id;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* returns -2 if EADDRNOTAVAIL */<br>
&gt; =C2=A0static int remus_bind(struct tdremus_state* s)<br>
&gt; =C2=A0{<br>
&gt; -//=C2=A0 struct sockaddr_in sa;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int opt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 int rc =3D -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0event_id_t id;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((s-&gt;server_fd.fd =3D socket(AF_INET=
, SOCK_STREAM, 0)) &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
could not create server socket: %d\n&quot;, errno);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return rc;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0opt =3D 1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (setsockopt(s-&gt;server_fd.fd, SOL_SOC=
KET, SO_REUSEADDR, &amp;opt, sizeof(opt)) &lt; 0)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
Error setting REUSEADDR on %d: %d\n&quot;, s-&gt;server_fd.fd, errno);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (bind(s-&gt;server_fd.fd, (struct socka=
ddr *)&amp;s-&gt;sa, sizeof(s-&gt;sa)) &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not bind server socket %d to %s:%d: %d %s\n&quot;, s-&gt;server_fd.fd=
,<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=A0inet_ntoa(s-&gt;sa.sin_addr), ntohs(s-&gt;sa.sin_port), errno=
, strerror(errno));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno !=3D=
 EADDRINUSE)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0opt =3D 1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (setsockopt(s-&gt;server_fd.fd, SOL_SOC=
KET,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 SO_REUSEADDR, &amp;opt, sizeof(opt)) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
Error setting REUSEADDR on %d: %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=A0s-&gt;server_fd.fd, errno);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (bind(s-&gt;server_fd.fd, (struct socka=
ddr *)&amp;s-&gt;sa,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sizeof(s-&gt;=
sa)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
could not bind server socket %d to %s:%d: %d %s\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=A0s-&gt;server_fd.fd, inet_ntoa(s-&gt;sa.sin_addr),<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=A0ntohs(s-&gt;sa.sin_port), errno, strerror(errno));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno =3D=
=3D EADDRNOTAVAIL)<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 rc =3D -2;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_sfd;<=
br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (listen(s-&gt;server_fd.fd, 10)) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
could not listen on socket: %d\n&quot;, errno);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_sfd;<=
br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* The socket s now bound to the address a=
nd listening so we may now register<br>
&gt; -=C2=A0 =C2=A0* the fd with tapdisk */<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if((s-&gt;<a href=3D"http://server_fd.id">=
server_fd.id</a> =3D tapdisk_server_register_event(SCHEDULER_POLL_READ_FD,<=
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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ser=
ver_fd.fd, 0,<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=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0remus_ser=
ver_accept, s)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * The socket s now bound to the address a=
nd listening so we<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * may now register the fd with tapdisk<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0id =3D=C2=A0 tapdisk_server_register_event=
(SCHEDULER_POLL_READ_FD,<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=A0s-&gt;server_fd.fd, 0,<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=A0remus_server_accept, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (id &lt; 0) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
error registering server connection event handler: %s&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=A0strerror(s-&gt;<a href=3D"http://server_fd.id">server_fd.id</=
a>));<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=A0strerror(id));<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_sfd;<=
br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;server_fd.cid =3D id;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt;<br>
&gt; - err_sfd:<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close(s-&gt;server_fd.fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;server_fd.fd =3D -1;<br>
&gt; +err_sfd:<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;server_fd.fd);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return rc;<br>
&gt; =C2=A0}<br>
&gt; @@ -1190,10 +1378,21 @@ void backup_queue_write(td_driver_t *driver, t=
d_request_t treq)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 td_complete_request(treq, -EBUSY);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; +static int server_flush(td_driver_t *driver)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/*<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 * Nothing to flush in beginning.<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;ramdisk.prev)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Try to flush any remaining requests */<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return ramdisk_flush(driver, s);<br>
&gt; +}<br>
&gt; +<br>
&gt; =C2=A0static int backup_start(td_driver_t *driver)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int fd;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ramdisk_start(driver) &lt; 0)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; @@ -1201,16 +1400,15 @@ static int backup_start(td_driver_t *driver)<b=
r>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 tapdisk_remus.td_queue_read =3D backup_que=
ue_read;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 tapdisk_remus.td_queue_write =3D backup_qu=
eue_write;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;queue_flush =3D server_flush;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO set flush function */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int server_do_wreq(td_driver_t *driver)<br>
&gt; +static void server_do_wreq(td_driver_t *driver)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 static tdremus_wire_t twreq;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 char buf[4096];<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0int len, rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0int len, rc =3D ERROR_IO;<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 char header[sizeof(uint32_t) + sizeof(uint=
64_t)];<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 uint32_t *sectors =3D (uint32_t *) header;=
<br>
&gt; @@ -1227,39 +1425,40 @@ static int server_do_wreq(td_driver_t *driver)=
<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 // *sector);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (len &gt; sizeof(buf)) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* freak out! =
*/<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
write request too large: %d/%u\n&quot;, len, (unsigned)sizeof(buf));<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* freak out! =
How to handle the remaining data from primary */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
write request too large: %d/%u\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=A0len, (unsigned)sizeof(buf));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto err;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (mread(s-&gt;stream_fd.fd, buf, len) &l=
t; 0)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err;<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ramdisk_write(&amp;s-&gt;ramdisk, *sec=
tor, *sectors, buf) &lt; 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ramdisk_write(&amp;s-&gt;ramdisk, *sec=
tor, *sectors, buf) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rc =3D ERROR_I=
NTERNAL;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt;<br>
&gt; =C2=A0 err:<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* should start failover */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;backup write request error\n=
&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0backup_failed(s, rc);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; -static int server_do_sreq(td_driver_t *driver)<br>
&gt; +static void server_do_sreq(td_driver_t *driver)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;submit request receiv=
ed\n&quot;);<br>
&gt; =C2=A0 =C2=A0*/<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* at this point, the server can start applying the most recent<=
br>
&gt; =C2=A0 * ramdisk. */<br>
&gt; -static int server_do_creq(td_driver_t *driver)<br>
&gt; +static void server_do_creq(td_driver_t *driver)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)driver-&gt;data;<br>
&gt;<br>
&gt; @@ -1269,9 +1468,7 @@ static int server_do_creq(td_driver_t *driver)<b=
r>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* XXX this message should not be sent unt=
il flush completes! */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (write(s-&gt;stream_fd.fd, TDREMUS_DONE=
, strlen(TDREMUS_DONE)) !=3D 4)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -1;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0backup_failed(=
s, ERROR_IO);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt;<br>
&gt; @@ -1356,10 +1553,6 @@ static int unprotected_start(td_driver_t *drive=
r)<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;failure detected, activating=
 passthrough\n&quot;);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* close the server socket */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_stream_fd(s);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0close_server_fd(s);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* install the unprotected read/write hand=
lers */<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 tapdisk_remus.td_queue_read =3D unprotecte=
d_queue_read;<br>
&gt; @@ -1486,6 +1679,19 @@ static int switch_mode(td_driver_t *driver, enu=
m tdremus_mode mode)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 return rc;<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; +static void ctl_reopen(struct tdremus_state *s)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ctl_unregister(s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0CLOSE_FD(s-&gt;ctl_fd.fd);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;FIFO closed\n&quot;);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;ctl_fd.fd =3D open(s-&gt;ctl_pa=
th, O_RDWR)) &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error reopening FIFO: %d\n&quot;, errno);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0ctl_register(s);<br>
&gt; +}<br>
&gt; +<br>
&gt; =C2=A0static void ctl_request(event_id_t id, char mode, void *private)=
<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct tdremus_state *s =3D (struct tdremu=
s_state *)private;<br>
&gt; @@ -1497,12 +1703,6 @@ static void ctl_request(event_id_t id, char mod=
e, void *private)<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!(rc =3D read(s-&gt;ctl_fd.fd, msg, si=
zeof(msg) - 1 /* append nul */))) {<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;=
0-byte read received, reopening FIFO\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*TODO: we may=
 have to unregister/re-register with tapdisk_server */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0close(s-&gt;ct=
l_fd.fd);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
FIFO closed\n&quot;);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;ctl=
_fd.fd =3D open(s-&gt;ctl_path, O_RDWR)) &lt; 0) {<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=A0RPRINTF(&quot;error reopening FIFO: %d\n&quot;, errno);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =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=A0 =C2=A0 return;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; @@ -1641,10 +1841,11 @@ static int ctl_register(struct tdremus_state *=
s)<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;registering ctl fifo\n&quot;=
);<br>
&gt;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* register ctl fd */<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=3D"http://ctl_fd.id">ctl_fd.=
id</a> =3D tapdisk_server_register_event(SCHEDULER_POLL_READ_FD, s-&gt;ctl_=
fd.fd, 0, ctl_request, s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ctl_fd.cid =3D tapdisk_server_regist=
er_event(SCHEDULER_POLL_READ_FD, s-&gt;ctl_fd.fd, 0, ctl_request, s);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;<a href=3D"http://ctl_fd.id">ctl=
_fd.id</a> &lt; 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering ctrl FIFO %s: %d\n&quot;, s-&gt;ctl_path, s-&gt;<a href=
=3D"http://ctl_fd.id">ctl_fd.id</a>);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;ctl_fd.cid &lt; 0) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RPRINTF(&quot;=
error registering ctrl FIFO %s: %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=A0s-&gt;ctl_path, s-&gt;ctl_fd.cid);<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -1;<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt; @@ -1655,10 +1856,7 @@ static void ctl_unregister(struct tdremus_state=
 *s)<br>
&gt; =C2=A0{<br>
&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRINTF(&quot;unregistering ctl fifo\n&quo=
t;);<br>
&gt;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;<a href=3D"http://ctl_fd.id">ctl=
_fd.id</a> &gt;=3D 0) {<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tapdisk_server=
_unregister_event(s-&gt;<a href=3D"http://ctl_fd.id">ctl_fd.id</a>);<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;<a href=
=3D"http://ctl_fd.id">ctl_fd.id</a> =3D -1;<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0UNREGISTER_EVENT(s-&gt;ctl_fd.cid);<br>
&gt; =C2=A0}<br>
&gt;<br>
&gt; =C2=A0/* interface */<br>
&gt; --<br>
&gt; 1.9.3<br>
&gt;<br>
</p>

--20cf303f6406f43fda0503d47373--


--===============0893330380259408558==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--===============0893330380259408558==--


From xen-devel-bounces@lists.xen.org Thu Sep 25 11:57:00 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Sep 2014 11:57:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XX7fQ-0006fq-Bk; Thu, 25 Sep 2014 11:57:00 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XX7fO-0006dw-RV
	for xen-devel@lists.xen.org; Thu, 25 Sep 2014 11:56:59 +0000
Received: from [85.158.143.35:8374] by server-2.bemta-4.messagelabs.com id
	2A/44-04525-A0304245; Thu, 25 Sep 2014 11:56:58 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-5.tower-21.messagelabs.com!1411646214!11878367!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21002 invoked from network); 25 Sep 2014 11:56:54 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-5.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 25 Sep 2014 11:56:54 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 6E9D510198C0B;
	Thu, 25 Sep 2014 13:56:53 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 60355C0009CE;
	Thu, 25 Sep 2014 13:56:53 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Thu, 25 Sep 2014 13:56:34 +0200
Message-Id: <1411646212-17041-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411646212-17041-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1411646212-17041-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v10 01/19] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v8: Define HAS_MEM_ACCESS/PAGING/SHARING in config/x86_*.mk
    and wrap required parts in mem_event into ifdefs accordingly.

v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 config/x86_32.mk                 |   4 +
 config/x86_64.mk                 |   4 +
 xen/Rules.mk                     |   3 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/hvm/vmx/vmcs.c      |   8 +-
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 -------
 xen/arch/x86/mm/mem_event.c      | 716 -------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 +++++++
 xen/common/mem_event.c           | 745 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 --
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 32 files changed, 1204 insertions(+), 1072 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index bf6b099..f5c9dc2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -338,6 +338,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/config/x86_32.mk b/config/x86_32.mk
index 6121fdc..c2d785e 100644
--- a/config/x86_32.mk
+++ b/config/x86_32.mk
@@ -6,6 +6,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CFLAGS += -m32 -march=i686
 
 # Use only if calling $(LD) directly.
diff --git a/config/x86_64.mk b/config/x86_64.mk
index 1b97476..bf104c2 100644
--- a/config/x86_64.mk
+++ b/config/x86_64.mk
@@ -7,6 +7,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CONFIG_XEN_INSTALL_SUFFIX := .gz
 
 CFLAGS += -m64
diff --git a/xen/Rules.mk b/xen/Rules.mk
index e2f9e36..a97405c 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,9 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
+CFLAGS-$(HAS_MEM_PAGING)  += -DHAS_MEM_PAGING
+CFLAGS-$(HAS_MEM_SHARING) += -DHAS_MEM_SHARING
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(HAS_PDX)       += -DHAS_PDX
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 34f28d0..7b9111d 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -489,19 +489,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -509,50 +496,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index fc1f882..9d8033e 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -22,6 +22,10 @@
 #include <xen/lib.h>
 #include <xen/errno.h>
 #include <xen/domain_page.h>
+#include <xen/event.h>
+#include <xen/kernel.h>
+#include <xen/keyhandler.h>
+#include <xen/mem_event.h>
 #include <asm/current.h>
 #include <asm/cpufeature.h>
 #include <asm/processor.h>
@@ -34,12 +38,8 @@
 #include <asm/hvm/vmx/vvmx.h>
 #include <asm/hvm/vmx/vmcs.h>
 #include <asm/flushtlb.h>
-#include <xen/event.h>
-#include <xen/kernel.h>
-#include <xen/keyhandler.h>
 #include <asm/shadow.h>
 #include <asm/tboot.h>
-#include <asm/mem_event.h>
 
 static bool_t __read_mostly opt_vpid_enabled = 1;
 boolean_param("vpid", opt_vpid_enabled);
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index fdd5ff6..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-
-            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
-                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
-            {
-                d->arch.hvm_domain.introspection_enabled = 1;
-                hvm_funcs.enable_msr_exit_interception(d);
-            }
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-            {
-                rc = mem_event_disable(d, med);
-                d->arch.hvm_domain.introspection_enabled = 0;
-            }
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 54859c8..31d0d9e 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 09817fc..cce1406 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 unsigned int __read_mostly m2p_compat_vstart = __HYPERVISOR_COMPAT_VIRT_START;
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 720293a..8391246 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -53,6 +53,8 @@ obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
 obj-$(HAS_PDX) += pdx.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..1e33769
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,745 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+
+#ifdef HAS_MEM_PAGING
+#include <asm/mem_paging.h>
+#endif
+
+#ifdef HAS_MEM_SHARING
+#include <asm/mem_sharing.h>
+#endif
+
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+#ifdef HAS_MEM_PAGING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+#endif
+
+#ifdef HAS_MEM_ACCESS
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+#endif
+
+#ifdef HAS_MEM_SHARING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+#endif
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+#ifdef HAS_MEM_PAGING
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+#endif
+#ifdef HAS_MEM_SHARING
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+#endif
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+#ifdef HAS_MEM_PAGING
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+#endif
+#ifdef HAS_MEM_ACCESS
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+#endif
+#ifdef HAS_MEM_SHARING
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+#endif
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+#ifdef HAS_MEM_PAGING
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+#ifdef HAS_MEM_ACCESS
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+
+            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
+                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
+            {
+                d->arch.hvm_domain.introspection_enabled = 1;
+                hvm_funcs.enable_msr_exit_interception(d);
+            }
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+            {
+                rc = mem_event_disable(d, med);
+                d->arch.hvm_domain.introspection_enabled = 0;
+            }
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+#ifdef HAS_MEM_SHARING
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..bad50cb 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef HAS_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef HAS_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 33ac4b4..1e4711c 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -300,7 +300,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index c0fbc8b..c09e16b 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -228,12 +228,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 746bcf1..aae63ee 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -609,8 +609,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Thu Sep 25 11:57:00 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Sep 2014 11:57:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XX7fQ-0006fq-Bk; Thu, 25 Sep 2014 11:57:00 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <tklengyel@sec.in.tum.de>) id 1XX7fO-0006dw-RV
	for xen-devel@lists.xen.org; Thu, 25 Sep 2014 11:56:59 +0000
Received: from [85.158.143.35:8374] by server-2.bemta-4.messagelabs.com id
	2A/44-04525-A0304245; Thu, 25 Sep 2014 11:56:58 +0000
X-Env-Sender: tklengyel@sec.in.tum.de
X-Msg-Ref: server-5.tower-21.messagelabs.com!1411646214!11878367!1
X-Originating-IP: [131.159.0.8]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21002 invoked from network); 25 Sep 2014 11:56:54 -0000
Received: from mail-out1.informatik.tu-muenchen.de (HELO
	smtp1.informatik.tu-muenchen.de) (131.159.0.8)
	by server-5.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 25 Sep 2014 11:56:54 -0000
Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1])
	by services.sec.in.tum.de (Postfix) with ESMTP id 6E9D510198C0B;
	Thu, 25 Sep 2014 13:56:53 +0200 (CEST)
Received: from ourea.sec.in.tum.de (ourea.sec.in.tum.de [131.159.50.52])
	by files.sec.in.tum.de (Postfix) with ESMTP id 60355C0009CE;
	Thu, 25 Sep 2014 13:56:53 +0200 (CEST)
From: Tamas K Lengyel <tklengyel@sec.in.tum.de>
To: xen-devel@lists.xen.org
Date: Thu, 25 Sep 2014 13:56:34 +0200
Message-Id: <1411646212-17041-2-git-send-email-tklengyel@sec.in.tum.de>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411646212-17041-1-git-send-email-tklengyel@sec.in.tum.de>
References: <1411646212-17041-1-git-send-email-tklengyel@sec.in.tum.de>
Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org,
	ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com,
	andres@lagarcavilla.org, jbeulich@suse.com,
	dgdegra@tycho.nsa.gov, Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: [Xen-devel] [PATCH for-4.5 v10 01/19] xen: Relocate mem_access and
	mem_event into common.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

In preparation to add support for ARM LPAE mem_event, relocate mem_access,
mem_event and auxiliary functions into common Xen code.
This patch makes no functional changes to the X86 side, for ARM mem_event
and mem_access functions are just defined as placeholder stubs, and are
actually enabled later in the series.

Edits that are only header path adjustments:
   xen/arch/x86/domctl.c
   xen/arch/x86/mm/hap/nested_ept.c
   xen/arch/x86/mm/hap/nested_hap.c
   xen/arch/x86/mm/mem_paging.c
   xen/arch/x86/mm/mem_sharing.c
   xen/arch/x86/mm/p2m-pod.c
   xen/arch/x86/mm/p2m-pt.c
   xen/arch/x86/mm/p2m.c
   xen/arch/x86/x86_64/compat/mm.c
   xen/arch/x86/x86_64/mm.c

Makefile adjustments for new/removed code:
   xen/common/Makefile
   xen/arch/x86/mm/Makefile

Relocated prepare_ring_for_helper and destroy_ring_for_helper functions:
   xen/include/xen/mm.h
   xen/common/memory.c
   xen/include/asm-x86/hvm/hvm.h
   xen/arch/x86/hvm/hvm.c

Code movement of mem_event and mem_access:
    xen/arch/x86/mm/mem_access.c -> xen/common/mem_access.c
    xen/arch/x86/mm/mem_event.c -> xen/common/mem_event.c
    xen/include/asm-x86/mem_access.h -> xen/include/xen/mem_access.h
    xen/include/asm-x86/mem_event.h -> xen/include/xen/mem_event.h

Signed-off-by: Tamas K Lengyel <tklengyel@sec.in.tum.de>
Acked-by: Tim Deegan <tim@xen.org>
---
v8: Define HAS_MEM_ACCESS/PAGING/SHARING in config/x86_*.mk
    and wrap required parts in mem_event into ifdefs accordingly.

v5: Make <xen/mem-event.h> include <xen/sched.h> by default.
    Style fix with grouping of #includes.

v4: Make <xen/mem_access.h> include <public/memory.h> by default.

v3: Replace asm/domain.h with xen/sched.h in mem_event.c to better
    accomodate for the new code location.
    Replace #ifdef CONFIG_X86 wrappers with HAS_MEM_ACCESS flags.

v2: Update MAINTAINERS.
    More descriptive commit message to aid in the review process.
---
 MAINTAINERS                      |   6 +
 config/x86_32.mk                 |   4 +
 config/x86_64.mk                 |   4 +
 xen/Rules.mk                     |   3 +
 xen/arch/x86/domctl.c            |   2 +-
 xen/arch/x86/hvm/hvm.c           |  63 +---
 xen/arch/x86/hvm/vmx/vmcs.c      |   8 +-
 xen/arch/x86/mm/Makefile         |   2 -
 xen/arch/x86/mm/hap/nested_ept.c |   6 +-
 xen/arch/x86/mm/hap/nested_hap.c |   6 +-
 xen/arch/x86/mm/mem_access.c     | 133 -------
 xen/arch/x86/mm/mem_event.c      | 716 -------------------------------------
 xen/arch/x86/mm/mem_paging.c     |   2 +-
 xen/arch/x86/mm/mem_sharing.c    |   4 +-
 xen/arch/x86/mm/p2m-pod.c        |   8 +-
 xen/arch/x86/mm/p2m-pt.c         |  10 +-
 xen/arch/x86/mm/p2m.c            |   8 +-
 xen/arch/x86/x86_64/compat/mm.c  |   4 +-
 xen/arch/x86/x86_64/mm.c         |   4 +-
 xen/common/Makefile              |   2 +
 xen/common/domain.c              |   1 +
 xen/common/mem_access.c          | 133 +++++++
 xen/common/mem_event.c           | 745 +++++++++++++++++++++++++++++++++++++++
 xen/common/memory.c              |  63 ++++
 xen/include/asm-arm/mm.h         |   1 -
 xen/include/asm-x86/hvm/hvm.h    |   6 -
 xen/include/asm-x86/mem_access.h |  39 --
 xen/include/asm-x86/mem_event.h  |  82 -----
 xen/include/asm-x86/mm.h         |   2 -
 xen/include/xen/mem_access.h     |  60 ++++
 xen/include/xen/mem_event.h      | 143 ++++++++
 xen/include/xen/mm.h             |   6 +
 32 files changed, 1204 insertions(+), 1072 deletions(-)
 delete mode 100644 xen/arch/x86/mm/mem_access.c
 delete mode 100644 xen/arch/x86/mm/mem_event.c
 create mode 100644 xen/common/mem_access.c
 create mode 100644 xen/common/mem_event.c
 delete mode 100644 xen/include/asm-x86/mem_access.h
 delete mode 100644 xen/include/asm-x86/mem_event.h
 create mode 100644 xen/include/xen/mem_access.h
 create mode 100644 xen/include/xen/mem_event.h

diff --git a/MAINTAINERS b/MAINTAINERS
index bf6b099..f5c9dc2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -338,6 +338,12 @@ F:	xen/arch/x86/mm/mem_sharing.c
 F:	xen/arch/x86/mm/mem_paging.c
 F:	tools/memshr
 
+MEMORY EVENT AND ACCESS
+M:	Tim Deegan <tim@xen.org>
+S:	Supported
+F:	xen/common/mem_event.c
+F:	xen/common/mem_access.c
+
 XENTRACE
 M:	George Dunlap <george.dunlap@eu.citrix.com>
 S:	Supported
diff --git a/config/x86_32.mk b/config/x86_32.mk
index 6121fdc..c2d785e 100644
--- a/config/x86_32.mk
+++ b/config/x86_32.mk
@@ -6,6 +6,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CFLAGS += -m32 -march=i686
 
 # Use only if calling $(LD) directly.
diff --git a/config/x86_64.mk b/config/x86_64.mk
index 1b97476..bf104c2 100644
--- a/config/x86_64.mk
+++ b/config/x86_64.mk
@@ -7,6 +7,10 @@ CONFIG_HVM := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
+HAS_MEM_ACCESS := y
+HAS_MEM_PAGING := y
+HAS_MEM_SHARING := y
+
 CONFIG_XEN_INSTALL_SUFFIX := .gz
 
 CFLAGS += -m64
diff --git a/xen/Rules.mk b/xen/Rules.mk
index e2f9e36..a97405c 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,6 +57,9 @@ CFLAGS-$(HAS_ACPI)      += -DHAS_ACPI
 CFLAGS-$(HAS_GDBSX)     += -DHAS_GDBSX
 CFLAGS-$(HAS_PASSTHROUGH) += -DHAS_PASSTHROUGH
 CFLAGS-$(HAS_DEVICE_TREE) += -DHAS_DEVICE_TREE
+CFLAGS-$(HAS_MEM_ACCESS)  += -DHAS_MEM_ACCESS
+CFLAGS-$(HAS_MEM_PAGING)  += -DHAS_MEM_PAGING
+CFLAGS-$(HAS_MEM_SHARING) += -DHAS_MEM_SHARING
 CFLAGS-$(HAS_PCI)       += -DHAS_PCI
 CFLAGS-$(HAS_IOPORTS)   += -DHAS_IOPORTS
 CFLAGS-$(HAS_PDX)       += -DHAS_PDX
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7a5de43..26a3ea1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -30,7 +30,7 @@
 #include <xen/hypercall.h> /* for arch_do_domctl */
 #include <xsm/xsm.h>
 #include <xen/iommu.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 #include <public/mem_event.h>
 #include <asm/mem_sharing.h>
 #include <asm/xstate.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 34f28d0..7b9111d 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -35,6 +35,9 @@
 #include <xen/paging.h>
 #include <xen/cpu.h>
 #include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <xen/rangeset.h>
 #include <asm/shadow.h>
 #include <asm/hap.h>
 #include <asm/current.h>
@@ -63,10 +66,7 @@
 #include <public/hvm/ioreq.h>
 #include <public/version.h>
 #include <public/memory.h>
-#include <asm/mem_event.h>
-#include <asm/mem_access.h>
 #include <public/mem_event.h>
-#include <xen/rangeset.h>
 #include <public/arch-x86/cpuid.h>
 
 bool_t __read_mostly hvm_enabled;
@@ -489,19 +489,6 @@ static void hvm_free_ioreq_gmfn(struct domain *d, unsigned long gmfn)
     clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
 }
 
-void destroy_ring_for_helper(
-    void **_va, struct page_info *page)
-{
-    void *va = *_va;
-
-    if ( va != NULL )
-    {
-        unmap_domain_page_global(va);
-        put_page_and_type(page);
-        *_va = NULL;
-    }
-}
-
 static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
 {
     struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
@@ -509,50 +496,6 @@ static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, bool_t buf)
     destroy_ring_for_helper(&iorp->va, iorp->page);
 }
 
-int prepare_ring_for_helper(
-    struct domain *d, unsigned long gmfn, struct page_info **_page,
-    void **_va)
-{
-    struct page_info *page;
-    p2m_type_t p2mt;
-    void *va;
-
-    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
-    if ( p2m_is_paging(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        p2m_mem_paging_populate(d, gmfn);
-        return -ENOENT;
-    }
-    if ( p2m_is_shared(p2mt) )
-    {
-        if ( page )
-            put_page(page);
-        return -ENOENT;
-    }
-    if ( !page )
-        return -EINVAL;
-
-    if ( !get_page_type(page, PGT_writable_page) )
-    {
-        put_page(page);
-        return -EINVAL;
-    }
-
-    va = __map_domain_page_global(page);
-    if ( va == NULL )
-    {
-        put_page_and_type(page);
-        return -ENOMEM;
-    }
-
-    *_va = va;
-    *_page = page;
-
-    return 0;
-}
-
 static int hvm_map_ioreq_page(
     struct hvm_ioreq_server *s, bool_t buf, unsigned long gmfn)
 {
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index fc1f882..9d8033e 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -22,6 +22,10 @@
 #include <xen/lib.h>
 #include <xen/errno.h>
 #include <xen/domain_page.h>
+#include <xen/event.h>
+#include <xen/kernel.h>
+#include <xen/keyhandler.h>
+#include <xen/mem_event.h>
 #include <asm/current.h>
 #include <asm/cpufeature.h>
 #include <asm/processor.h>
@@ -34,12 +38,8 @@
 #include <asm/hvm/vmx/vvmx.h>
 #include <asm/hvm/vmx/vmcs.h>
 #include <asm/flushtlb.h>
-#include <xen/event.h>
-#include <xen/kernel.h>
-#include <xen/keyhandler.h>
 #include <asm/shadow.h>
 #include <asm/tboot.h>
-#include <asm/mem_event.h>
 
 static bool_t __read_mostly opt_vpid_enabled = 1;
 boolean_param("vpid", opt_vpid_enabled);
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index 73dcdf4..ed4b1f8 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -6,10 +6,8 @@ obj-y += p2m.o p2m-pt.o p2m-ept.o p2m-pod.o
 obj-y += guest_walk_2.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
-obj-$(x86_64) += mem_event.o
 obj-$(x86_64) += mem_paging.o
 obj-$(x86_64) += mem_sharing.o
-obj-$(x86_64) += mem_access.o
 
 guest_walk_%.o: guest_walk.c Makefile
 	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff --git a/xen/arch/x86/mm/hap/nested_ept.c b/xen/arch/x86/mm/hap/nested_ept.c
index 0d044bc..cbbc4e9 100644
--- a/xen/arch/x86/mm/hap/nested_ept.c
+++ b/xen/arch/x86/mm/hap/nested_ept.c
@@ -17,14 +17,14 @@
  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index 137a87c..a4bb835 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -19,14 +19,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hap.h>
 #include <asm/hvm/support.h>
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
deleted file mode 100644
index e8465a5..0000000
--- a/xen/arch/x86/mm/mem_access.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_access.c
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <xen/sched.h>
-#include <xen/guest_access.h>
-#include <xen/hypercall.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <xsm/xsm.h>
-
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
-{
-    long rc;
-    xen_mem_access_op_t mao;
-    struct domain *d;
-
-    if ( copy_from_guest(&mao, arg, 1) )
-        return -EFAULT;
-
-    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
-    if ( rc )
-        return rc;
-
-    rc = -EINVAL;
-    if ( !is_hvm_domain(d) )
-        goto out;
-
-    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
-    if ( rc )
-        goto out;
-
-    rc = -ENODEV;
-    if ( unlikely(!d->mem_event->access.ring_page) )
-        goto out;
-
-    switch ( mao.op )
-    {
-    case XENMEM_access_op_resume:
-        p2m_mem_access_resume(d);
-        rc = 0;
-        break;
-
-    case XENMEM_access_op_set_access:
-    {
-        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
-
-        rc = -EINVAL;
-        if ( (mao.pfn != ~0ull) &&
-             (mao.nr < start_iter ||
-              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
-              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
-            break;
-
-        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
-                                MEMOP_CMD_MASK, mao.access);
-        if ( rc > 0 )
-        {
-            ASSERT(!(rc & MEMOP_CMD_MASK));
-            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
-                                               XENMEM_access_op | rc, arg);
-        }
-        break;
-    }
-
-    case XENMEM_access_op_get_access:
-    {
-        xenmem_access_t access;
-
-        rc = -EINVAL;
-        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
-            break;
-
-        rc = p2m_get_mem_access(d, mao.pfn, &access);
-        if ( rc != 0 )
-            break;
-
-        mao.access = access;
-        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
-
-        break;
-    }
-
-    default:
-        rc = -ENOSYS;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return rc;
-}
-
-int mem_access_send_req(struct domain *d, mem_event_request_t *req)
-{
-    int rc = mem_event_claim_slot(d, &d->mem_event->access);
-    if ( rc < 0 )
-        return rc;
-
-    mem_event_put_request(d, &d->mem_event->access, req);
-
-    return 0;
-} 
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
deleted file mode 100644
index fdd5ff6..0000000
--- a/xen/arch/x86/mm/mem_event.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/******************************************************************************
- * arch/x86/mm/mem_event.c
- *
- * Memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include <asm/domain.h>
-#include <xen/event.h>
-#include <xen/wait.h>
-#include <asm/p2m.h>
-#include <asm/mem_event.h>
-#include <asm/mem_paging.h>
-#include <asm/mem_access.h>
-#include <asm/mem_sharing.h>
-#include <xsm/xsm.h>
-
-/* for public/io/ring.h macros */
-#define xen_mb()   mb()
-#define xen_rmb()  rmb()
-#define xen_wmb()  wmb()
-
-#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
-#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
-#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
-
-static int mem_event_enable(
-    struct domain *d,
-    xen_domctl_mem_event_op_t *mec,
-    struct mem_event_domain *med,
-    int pause_flag,
-    int param,
-    xen_event_channel_notification_t notification_fn)
-{
-    int rc;
-    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
-
-    /* Only one helper at a time. If the helper crashed,
-     * the ring is in an undefined state and so is the guest.
-     */
-    if ( med->ring_page )
-        return -EBUSY;
-
-    /* The parameter defaults to zero, and it should be 
-     * set to something */
-    if ( ring_gfn == 0 )
-        return -ENOSYS;
-
-    mem_event_ring_lock_init(med);
-    mem_event_ring_lock(med);
-
-    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
-                                    &med->ring_page);
-    if ( rc < 0 )
-        goto err;
-
-    /* Set the number of currently blocked vCPUs to 0. */
-    med->blocked = 0;
-
-    /* Allocate event channel */
-    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
-                                         current->domain->domain_id,
-                                         notification_fn);
-    if ( rc < 0 )
-        goto err;
-
-    med->xen_port = mec->port = rc;
-
-    /* Prepare ring buffer */
-    FRONT_RING_INIT(&med->front_ring,
-                    (mem_event_sring_t *)med->ring_page,
-                    PAGE_SIZE);
-
-    /* Save the pause flag for this particular ring. */
-    med->pause_flag = pause_flag;
-
-    /* Initialize the last-chance wait queue. */
-    init_waitqueue_head(&med->wq);
-
-    mem_event_ring_unlock(med);
-    return 0;
-
- err:
-    destroy_ring_for_helper(&med->ring_page, 
-                            med->ring_pg_struct);
-    mem_event_ring_unlock(med);
-
-    return rc;
-}
-
-static unsigned int mem_event_ring_available(struct mem_event_domain *med)
-{
-    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
-    avail_req -= med->target_producers;
-    avail_req -= med->foreign_producers;
-
-    BUG_ON(avail_req < 0);
-
-    return avail_req;
-}
-
-/*
- * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
- * ring. These vCPUs were paused on their way out after placing an event,
- * but need to be resumed where the ring is capable of processing at least
- * one event from them.
- */
-static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
-{
-    struct vcpu *v;
-    int online = d->max_vcpus;
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req == 0 || med->blocked == 0 )
-        return;
-
-    /*
-     * We ensure that we only have vCPUs online if there are enough free slots
-     * for their memory events to be processed.  This will ensure that no
-     * memory events are lost (due to the fact that certain types of events
-     * cannot be replayed, we need to ensure that there is space in the ring
-     * for when they are hit).
-     * See comment below in mem_event_put_request().
-     */
-    for_each_vcpu ( d, v )
-        if ( test_bit(med->pause_flag, &v->pause_flags) )
-            online--;
-
-    ASSERT(online == (d->max_vcpus - med->blocked));
-
-    /* We remember which vcpu last woke up to avoid scanning always linearly
-     * from zero and starving higher-numbered vcpus under high load */
-    if ( d->vcpu )
-    {
-        int i, j, k;
-
-        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
-        {
-            k = i % d->max_vcpus;
-            v = d->vcpu[k];
-            if ( !v )
-                continue;
-
-            if ( !(med->blocked) || online >= avail_req )
-               break;
-
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                online++;
-                med->blocked--;
-                med->last_vcpu_wake_up = k;
-            }
-        }
-    }
-}
-
-/*
- * In the event that a vCPU attempted to place an event in the ring and
- * was unable to do so, it is queued on a wait queue.  These are woken as
- * needed, and take precedence over the blocked vCPUs.
- */
-static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
-{
-    unsigned int avail_req = mem_event_ring_available(med);
-
-    if ( avail_req > 0 )
-        wake_up_nr(&med->wq, avail_req);
-}
-
-/*
- * mem_event_wake() will wakeup all vcpus waiting for the ring to
- * become available.  If we have queued vCPUs, they get top priority. We
- * are guaranteed that they will go through code paths that will eventually
- * call mem_event_wake() again, ensuring that any blocked vCPUs will get
- * unpaused once all the queued vCPUs have made it through.
- */
-void mem_event_wake(struct domain *d, struct mem_event_domain *med)
-{
-    if (!list_empty(&med->wq.list))
-        mem_event_wake_queued(d, med);
-    else
-        mem_event_wake_blocked(d, med);
-}
-
-static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
-{
-    if ( med->ring_page )
-    {
-        struct vcpu *v;
-
-        mem_event_ring_lock(med);
-
-        if ( !list_empty(&med->wq.list) )
-        {
-            mem_event_ring_unlock(med);
-            return -EBUSY;
-        }
-
-        /* Free domU's event channel and leave the other one unbound */
-        free_xen_event_channel(d->vcpu[0], med->xen_port);
-
-        /* Unblock all vCPUs */
-        for_each_vcpu ( d, v )
-        {
-            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
-            {
-                vcpu_unpause(v);
-                med->blocked--;
-            }
-        }
-
-        destroy_ring_for_helper(&med->ring_page, 
-                                med->ring_pg_struct);
-        mem_event_ring_unlock(med);
-    }
-
-    return 0;
-}
-
-static inline void mem_event_release_slot(struct domain *d,
-                                          struct mem_event_domain *med)
-{
-    /* Update the accounting */
-    if ( current->domain == d )
-        med->target_producers--;
-    else
-        med->foreign_producers--;
-
-    /* Kick any waiters */
-    mem_event_wake(d, med);
-}
-
-/*
- * mem_event_mark_and_pause() tags vcpu and put it to sleep.
- * The vcpu will resume execution in mem_event_wake_waiters().
- */
-void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
-{
-    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
-    {
-        vcpu_pause_nosync(v);
-        med->blocked++;
-    }
-}
-
-/*
- * This must be preceded by a call to claim_slot(), and is guaranteed to
- * succeed.  As a side-effect however, the vCPU may be paused if the ring is
- * overly full and its continued execution would cause stalling and excessive
- * waiting.  The vCPU will be automatically unpaused when the ring clears.
- */
-void mem_event_put_request(struct domain *d,
-                           struct mem_event_domain *med,
-                           mem_event_request_t *req)
-{
-    mem_event_front_ring_t *front_ring;
-    int free_req;
-    unsigned int avail_req;
-    RING_IDX req_prod;
-
-    if ( current->domain != d )
-    {
-        req->flags |= MEM_EVENT_FLAG_FOREIGN;
-        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
-    }
-
-    mem_event_ring_lock(med);
-
-    /* Due to the reservations, this step must succeed. */
-    front_ring = &med->front_ring;
-    free_req = RING_FREE_REQUESTS(front_ring);
-    ASSERT(free_req > 0);
-
-    /* Copy request */
-    req_prod = front_ring->req_prod_pvt;
-    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
-    req_prod++;
-
-    /* Update ring */
-    front_ring->req_prod_pvt = req_prod;
-    RING_PUSH_REQUESTS(front_ring);
-
-    /* We've actually *used* our reservation, so release the slot. */
-    mem_event_release_slot(d, med);
-
-    /* Give this vCPU a black eye if necessary, on the way out.
-     * See the comments above wake_blocked() for more information
-     * on how this mechanism works to avoid waiting. */
-    avail_req = mem_event_ring_available(med);
-    if( current->domain == d && avail_req < d->max_vcpus )
-        mem_event_mark_and_pause(current, med);
-
-    mem_event_ring_unlock(med);
-
-    notify_via_xen_event_channel(d, med->xen_port);
-}
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
-{
-    mem_event_front_ring_t *front_ring;
-    RING_IDX rsp_cons;
-
-    mem_event_ring_lock(med);
-
-    front_ring = &med->front_ring;
-    rsp_cons = front_ring->rsp_cons;
-
-    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
-    {
-        mem_event_ring_unlock(med);
-        return 0;
-    }
-
-    /* Copy response */
-    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
-    rsp_cons++;
-
-    /* Update ring */
-    front_ring->rsp_cons = rsp_cons;
-    front_ring->sring->rsp_event = rsp_cons + 1;
-
-    /* Kick any waiters -- since we've just consumed an event,
-     * there may be additional space available in the ring. */
-    mem_event_wake(d, med);
-
-    mem_event_ring_unlock(med);
-
-    return 1;
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
-{
-    mem_event_ring_lock(med);
-    mem_event_release_slot(d, med);
-    mem_event_ring_unlock(med);
-}
-
-static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
-{
-    unsigned int avail_req;
-
-    if ( !med->ring_page )
-        return -ENOSYS;
-
-    mem_event_ring_lock(med);
-
-    avail_req = mem_event_ring_available(med);
-    if ( avail_req == 0 )
-    {
-        mem_event_ring_unlock(med);
-        return -EBUSY;
-    }
-
-    if ( !foreign )
-        med->target_producers++;
-    else
-        med->foreign_producers++;
-
-    mem_event_ring_unlock(med);
-
-    return 0;
-}
-
-/* Simple try_grab wrapper for use in the wait_event() macro. */
-static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
-{
-    *rc = mem_event_grab_slot(med, 0);
-    return *rc;
-}
-
-/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
-static int mem_event_wait_slot(struct mem_event_domain *med)
-{
-    int rc = -EBUSY;
-    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
-    return rc;
-}
-
-bool_t mem_event_check_ring(struct mem_event_domain *med)
-{
-    return (med->ring_page != NULL);
-}
-
-/*
- * Determines whether or not the current vCPU belongs to the target domain,
- * and calls the appropriate wait function.  If it is a guest vCPU, then we
- * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
- * this function will always return 0 for a guest.  For a non-guest, we check
- * for space and return -EBUSY if the ring is not available.
- *
- * Return codes: -ENOSYS: the ring is not yet configured
- *               -EBUSY: the ring is busy
- *               0: a spot has been reserved
- *
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep)
-{
-    if ( (current->domain == d) && allow_sleep )
-        return mem_event_wait_slot(med);
-    else
-        return mem_event_grab_slot(med, (current->domain != d));
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_paging_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
-        p2m_mem_paging_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_access_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
-        p2m_mem_access_resume(v->domain);
-}
-
-/* Registered with Xen-bound event channel for incoming notifications. */
-static void mem_sharing_notification(struct vcpu *v, unsigned int port)
-{
-    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
-        mem_sharing_sharing_resume(v->domain);
-}
-
-int do_mem_event_op(int op, uint32_t domain, void *arg)
-{
-    int ret;
-    struct domain *d;
-
-    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
-    if ( ret )
-        return ret;
-
-    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
-    if ( ret )
-        goto out;
-
-    switch (op)
-    {
-        case XENMEM_paging_op:
-            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
-            break;
-        case XENMEM_sharing_op:
-            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
-            break;
-        default:
-            ret = -ENOSYS;
-    }
-
- out:
-    rcu_unlock_domain(d);
-    return ret;
-}
-
-/* Clean up on domain destruction */
-void mem_event_cleanup(struct domain *d)
-{
-    if ( d->mem_event->paging.ring_page ) {
-        /* Destroying the wait queue head means waking up all
-         * queued vcpus. This will drain the list, allowing
-         * the disable routine to complete. It will also drop
-         * all domain refs the wait-queued vcpus are holding.
-         * Finally, because this code path involves previously
-         * pausing the domain (domain_kill), unpausing the 
-         * vcpus causes no harm. */
-        destroy_waitqueue_head(&d->mem_event->paging.wq);
-        (void)mem_event_disable(d, &d->mem_event->paging);
-    }
-    if ( d->mem_event->access.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->access.wq);
-        (void)mem_event_disable(d, &d->mem_event->access);
-    }
-    if ( d->mem_event->share.ring_page ) {
-        destroy_waitqueue_head(&d->mem_event->share.wq);
-        (void)mem_event_disable(d, &d->mem_event->share);
-    }
-}
-
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
-{
-    int rc;
-
-    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
-    if ( rc )
-        return rc;
-
-    if ( unlikely(d == current->domain) )
-    {
-        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
-        return -EINVAL;
-    }
-
-    if ( unlikely(d->is_dying) )
-    {
-        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
-                 d->domain_id);
-        return 0;
-    }
-
-    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
-    {
-        gdprintk(XENLOG_INFO,
-                 "Memory event op on a domain (%u) with no vcpus\n",
-                 d->domain_id);
-        return -EINVAL;
-    }
-
-    rc = -ENOSYS;
-
-    switch ( mec->mode )
-    {
-    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
-    {
-        struct mem_event_domain *med = &d->mem_event->paging;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
-        {
-            struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* No paging if iommu is used */
-            rc = -EMLINK;
-            if ( unlikely(need_iommu(d)) )
-                break;
-
-            rc = -EXDEV;
-            /* Disallow paging in a PoD guest */
-            if ( p2m->pod.entry_count )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
-                                    HVM_PARAM_PAGING_RING_PFN,
-                                    mem_paging_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
-    {
-        struct mem_event_domain *med = &d->mem_event->access;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
-        {
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            /* Currently only EPT is supported */
-            if ( !cpu_has_vmx )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
-                                    HVM_PARAM_ACCESS_RING_PFN,
-                                    mem_access_notification);
-
-            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
-                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
-            {
-                d->arch.hvm_domain.introspection_enabled = 1;
-                hvm_funcs.enable_msr_exit_interception(d);
-            }
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
-        {
-            if ( med->ring_page )
-            {
-                rc = mem_event_disable(d, med);
-                d->arch.hvm_domain.introspection_enabled = 0;
-            }
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
-    {
-        struct mem_event_domain *med = &d->mem_event->share;
-        rc = -EINVAL;
-
-        switch( mec->op )
-        {
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
-        {
-            rc = -EOPNOTSUPP;
-            /* pvh fixme: p2m_is_foreign types need addressing */
-            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
-                break;
-
-            rc = -ENODEV;
-            /* Only HAP is supported */
-            if ( !hap_enabled(d) )
-                break;
-
-            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
-                                    HVM_PARAM_SHARING_RING_PFN,
-                                    mem_sharing_notification);
-        }
-        break;
-
-        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
-        {
-            if ( med->ring_page )
-                rc = mem_event_disable(d, med);
-        }
-        break;
-
-        default:
-            rc = -ENOSYS;
-            break;
-        }
-    }
-    break;
-
-    default:
-        rc = -ENOSYS;
-    }
-
-    return rc;
-}
-
-void mem_event_vcpu_pause(struct vcpu *v)
-{
-    ASSERT(v == current);
-
-    atomic_inc(&v->mem_event_pause_count);
-    vcpu_pause_nosync(v);
-}
-
-void mem_event_vcpu_unpause(struct vcpu *v)
-{
-    int old, new, prev = v->mem_event_pause_count.counter;
-
-    /* All unpause requests as a result of toolstack responses.  Prevent
-     * underflow of the vcpu pause count. */
-    do
-    {
-        old = prev;
-        new = old - 1;
-
-        if ( new < 0 )
-        {
-            printk(XENLOG_G_WARNING
-                   "%pv mem_event: Too many unpause attempts\n", v);
-            return;
-        }
-
-        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
-    } while ( prev != old );
-
-    vcpu_unpause(v);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index 235776d..65f6a3d 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -22,7 +22,7 @@
 
 
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
+#include <xen/mem_event.h>
 
 
 int mem_paging_memop(struct domain *d, xen_mem_event_op_t *mec)
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 79188b9..7c0fc7d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -27,12 +27,12 @@
 #include <xen/mm.h>
 #include <xen/grant_table.h>
 #include <xen/sched.h>
+#include <xen/rcupdate.h>
+#include <xen/mem_event.h>
 #include <asm/page.h>
 #include <asm/string.h>
 #include <asm/p2m.h>
-#include <asm/mem_event.h>
 #include <asm/atomic.h>
-#include <xen/rcupdate.h>
 #include <asm/event.h>
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index bd4c7c8..43f507c 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -20,16 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 085ab6f..e48b63a 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -25,16 +25,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <xen/trace.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
-#include <xen/trace.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 54859c8..31d0d9e 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -24,16 +24,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <xen/iommu.h>
+#include <xen/mem_event.h>
+#include <xen/event.h>
+#include <public/mem_event.h>
 #include <asm/domain.h>
 #include <asm/page.h>
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/hvm/vmx/vmx.h> /* ept_p2m_init() */
-#include <xen/iommu.h>
-#include <asm/mem_event.h>
-#include <public/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <xen/event.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm/amd-iommu-proto.h>
 #include <xsm/xsm.h>
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index 69c6195..c079702 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,10 +1,10 @@
 #include <xen/event.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <xen/multicall.h>
 #include <compat/memory.h>
 #include <compat/xen.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 
 int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries)
 {
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 09817fc..cce1406 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -26,6 +26,8 @@
 #include <xen/nodemask.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
 #include <asm/current.h>
 #include <asm/asm_defns.h>
 #include <asm/page.h>
@@ -35,9 +37,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/numa.h>
-#include <asm/mem_event.h>
 #include <asm/mem_sharing.h>
-#include <asm/mem_access.h>
 #include <public/memory.h>
 
 unsigned int __read_mostly m2p_compat_vstart = __HYPERVISOR_COMPAT_VIRT_START;
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 720293a..8391246 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -53,6 +53,8 @@ obj-y += radix-tree.o
 obj-y += rbtree.o
 obj-y += lzo.o
 obj-$(HAS_PDX) += pdx.o
+obj-$(HAS_MEM_ACCESS) += mem_access.o
+obj-$(HAS_MEM_ACCESS) += mem_event.o
 
 obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 62514b0..134bed6 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -15,6 +15,7 @@
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
+#include <xen/mem_event.h>
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
diff --git a/xen/common/mem_access.c b/xen/common/mem_access.c
new file mode 100644
index 0000000..9a8c1a9
--- /dev/null
+++ b/xen/common/mem_access.c
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * mem_access.c
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/guest_access.h>
+#include <xen/hypercall.h>
+#include <xen/mem_event.h>
+#include <public/memory.h>
+#include <asm/p2m.h>
+#include <xsm/xsm.h>
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    long rc;
+    xen_mem_access_op_t mao;
+    struct domain *d;
+
+    if ( copy_from_guest(&mao, arg, 1) )
+        return -EFAULT;
+
+    rc = rcu_lock_live_remote_domain_by_id(mao.domid, &d);
+    if ( rc )
+        return rc;
+
+    rc = -EINVAL;
+    if ( !is_hvm_domain(d) )
+        goto out;
+
+    rc = xsm_mem_event_op(XSM_DM_PRIV, d, XENMEM_access_op);
+    if ( rc )
+        goto out;
+
+    rc = -ENODEV;
+    if ( unlikely(!d->mem_event->access.ring_page) )
+        goto out;
+
+    switch ( mao.op )
+    {
+    case XENMEM_access_op_resume:
+        p2m_mem_access_resume(d);
+        rc = 0;
+        break;
+
+    case XENMEM_access_op_set_access:
+    {
+        unsigned long start_iter = cmd & ~MEMOP_CMD_MASK;
+
+        rc = -EINVAL;
+        if ( (mao.pfn != ~0ull) &&
+             (mao.nr < start_iter ||
+              ((mao.pfn + mao.nr - 1) < mao.pfn) ||
+              ((mao.pfn + mao.nr - 1) > domain_get_maximum_gpfn(d))) )
+            break;
+
+        rc = p2m_set_mem_access(d, mao.pfn, mao.nr, start_iter,
+                                MEMOP_CMD_MASK, mao.access);
+        if ( rc > 0 )
+        {
+            ASSERT(!(rc & MEMOP_CMD_MASK));
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op, "lh",
+                                               XENMEM_access_op | rc, arg);
+        }
+        break;
+    }
+
+    case XENMEM_access_op_get_access:
+    {
+        xenmem_access_t access;
+
+        rc = -EINVAL;
+        if ( (mao.pfn > domain_get_maximum_gpfn(d)) && mao.pfn != ~0ull )
+            break;
+
+        rc = p2m_get_mem_access(d, mao.pfn, &access);
+        if ( rc != 0 )
+            break;
+
+        mao.access = access;
+        rc = __copy_field_to_guest(arg, &mao, access) ? -EFAULT : 0;
+
+        break;
+    }
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return rc;
+}
+
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    int rc = mem_event_claim_slot(d, &d->mem_event->access);
+    if ( rc < 0 )
+        return rc;
+
+    mem_event_put_request(d, &d->mem_event->access, req);
+
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c
new file mode 100644
index 0000000..1e33769
--- /dev/null
+++ b/xen/common/mem_event.c
@@ -0,0 +1,745 @@
+/******************************************************************************
+ * mem_event.c
+ *
+ * Memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <xen/sched.h>
+#include <xen/event.h>
+#include <xen/wait.h>
+#include <xen/mem_event.h>
+#include <xen/mem_access.h>
+#include <asm/p2m.h>
+
+#ifdef HAS_MEM_PAGING
+#include <asm/mem_paging.h>
+#endif
+
+#ifdef HAS_MEM_SHARING
+#include <asm/mem_sharing.h>
+#endif
+
+#include <xsm/xsm.h>
+
+/* for public/io/ring.h macros */
+#define xen_mb()   mb()
+#define xen_rmb()  rmb()
+#define xen_wmb()  wmb()
+
+#define mem_event_ring_lock_init(_med)  spin_lock_init(&(_med)->ring_lock)
+#define mem_event_ring_lock(_med)       spin_lock(&(_med)->ring_lock)
+#define mem_event_ring_unlock(_med)     spin_unlock(&(_med)->ring_lock)
+
+static int mem_event_enable(
+    struct domain *d,
+    xen_domctl_mem_event_op_t *mec,
+    struct mem_event_domain *med,
+    int pause_flag,
+    int param,
+    xen_event_channel_notification_t notification_fn)
+{
+    int rc;
+    unsigned long ring_gfn = d->arch.hvm_domain.params[param];
+
+    /* Only one helper at a time. If the helper crashed,
+     * the ring is in an undefined state and so is the guest.
+     */
+    if ( med->ring_page )
+        return -EBUSY;
+
+    /* The parameter defaults to zero, and it should be 
+     * set to something */
+    if ( ring_gfn == 0 )
+        return -ENOSYS;
+
+    mem_event_ring_lock_init(med);
+    mem_event_ring_lock(med);
+
+    rc = prepare_ring_for_helper(d, ring_gfn, &med->ring_pg_struct, 
+                                    &med->ring_page);
+    if ( rc < 0 )
+        goto err;
+
+    /* Set the number of currently blocked vCPUs to 0. */
+    med->blocked = 0;
+
+    /* Allocate event channel */
+    rc = alloc_unbound_xen_event_channel(d->vcpu[0],
+                                         current->domain->domain_id,
+                                         notification_fn);
+    if ( rc < 0 )
+        goto err;
+
+    med->xen_port = mec->port = rc;
+
+    /* Prepare ring buffer */
+    FRONT_RING_INIT(&med->front_ring,
+                    (mem_event_sring_t *)med->ring_page,
+                    PAGE_SIZE);
+
+    /* Save the pause flag for this particular ring. */
+    med->pause_flag = pause_flag;
+
+    /* Initialize the last-chance wait queue. */
+    init_waitqueue_head(&med->wq);
+
+    mem_event_ring_unlock(med);
+    return 0;
+
+ err:
+    destroy_ring_for_helper(&med->ring_page, 
+                            med->ring_pg_struct);
+    mem_event_ring_unlock(med);
+
+    return rc;
+}
+
+static unsigned int mem_event_ring_available(struct mem_event_domain *med)
+{
+    int avail_req = RING_FREE_REQUESTS(&med->front_ring);
+    avail_req -= med->target_producers;
+    avail_req -= med->foreign_producers;
+
+    BUG_ON(avail_req < 0);
+
+    return avail_req;
+}
+
+/*
+ * mem_event_wake_blocked() will wakeup vcpus waiting for room in the
+ * ring. These vCPUs were paused on their way out after placing an event,
+ * but need to be resumed where the ring is capable of processing at least
+ * one event from them.
+ */
+static void mem_event_wake_blocked(struct domain *d, struct mem_event_domain *med)
+{
+    struct vcpu *v;
+    int online = d->max_vcpus;
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req == 0 || med->blocked == 0 )
+        return;
+
+    /*
+     * We ensure that we only have vCPUs online if there are enough free slots
+     * for their memory events to be processed.  This will ensure that no
+     * memory events are lost (due to the fact that certain types of events
+     * cannot be replayed, we need to ensure that there is space in the ring
+     * for when they are hit).
+     * See comment below in mem_event_put_request().
+     */
+    for_each_vcpu ( d, v )
+        if ( test_bit(med->pause_flag, &v->pause_flags) )
+            online--;
+
+    ASSERT(online == (d->max_vcpus - med->blocked));
+
+    /* We remember which vcpu last woke up to avoid scanning always linearly
+     * from zero and starving higher-numbered vcpus under high load */
+    if ( d->vcpu )
+    {
+        int i, j, k;
+
+        for (i = med->last_vcpu_wake_up + 1, j = 0; j < d->max_vcpus; i++, j++)
+        {
+            k = i % d->max_vcpus;
+            v = d->vcpu[k];
+            if ( !v )
+                continue;
+
+            if ( !(med->blocked) || online >= avail_req )
+               break;
+
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                online++;
+                med->blocked--;
+                med->last_vcpu_wake_up = k;
+            }
+        }
+    }
+}
+
+/*
+ * In the event that a vCPU attempted to place an event in the ring and
+ * was unable to do so, it is queued on a wait queue.  These are woken as
+ * needed, and take precedence over the blocked vCPUs.
+ */
+static void mem_event_wake_queued(struct domain *d, struct mem_event_domain *med)
+{
+    unsigned int avail_req = mem_event_ring_available(med);
+
+    if ( avail_req > 0 )
+        wake_up_nr(&med->wq, avail_req);
+}
+
+/*
+ * mem_event_wake() will wakeup all vcpus waiting for the ring to
+ * become available.  If we have queued vCPUs, they get top priority. We
+ * are guaranteed that they will go through code paths that will eventually
+ * call mem_event_wake() again, ensuring that any blocked vCPUs will get
+ * unpaused once all the queued vCPUs have made it through.
+ */
+void mem_event_wake(struct domain *d, struct mem_event_domain *med)
+{
+    if (!list_empty(&med->wq.list))
+        mem_event_wake_queued(d, med);
+    else
+        mem_event_wake_blocked(d, med);
+}
+
+static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
+{
+    if ( med->ring_page )
+    {
+        struct vcpu *v;
+
+        mem_event_ring_lock(med);
+
+        if ( !list_empty(&med->wq.list) )
+        {
+            mem_event_ring_unlock(med);
+            return -EBUSY;
+        }
+
+        /* Free domU's event channel and leave the other one unbound */
+        free_xen_event_channel(d->vcpu[0], med->xen_port);
+
+        /* Unblock all vCPUs */
+        for_each_vcpu ( d, v )
+        {
+            if ( test_and_clear_bit(med->pause_flag, &v->pause_flags) )
+            {
+                vcpu_unpause(v);
+                med->blocked--;
+            }
+        }
+
+        destroy_ring_for_helper(&med->ring_page, 
+                                med->ring_pg_struct);
+        mem_event_ring_unlock(med);
+    }
+
+    return 0;
+}
+
+static inline void mem_event_release_slot(struct domain *d,
+                                          struct mem_event_domain *med)
+{
+    /* Update the accounting */
+    if ( current->domain == d )
+        med->target_producers--;
+    else
+        med->foreign_producers--;
+
+    /* Kick any waiters */
+    mem_event_wake(d, med);
+}
+
+/*
+ * mem_event_mark_and_pause() tags vcpu and put it to sleep.
+ * The vcpu will resume execution in mem_event_wake_waiters().
+ */
+void mem_event_mark_and_pause(struct vcpu *v, struct mem_event_domain *med)
+{
+    if ( !test_and_set_bit(med->pause_flag, &v->pause_flags) )
+    {
+        vcpu_pause_nosync(v);
+        med->blocked++;
+    }
+}
+
+/*
+ * This must be preceded by a call to claim_slot(), and is guaranteed to
+ * succeed.  As a side-effect however, the vCPU may be paused if the ring is
+ * overly full and its continued execution would cause stalling and excessive
+ * waiting.  The vCPU will be automatically unpaused when the ring clears.
+ */
+void mem_event_put_request(struct domain *d,
+                           struct mem_event_domain *med,
+                           mem_event_request_t *req)
+{
+    mem_event_front_ring_t *front_ring;
+    int free_req;
+    unsigned int avail_req;
+    RING_IDX req_prod;
+
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
+    mem_event_ring_lock(med);
+
+    /* Due to the reservations, this step must succeed. */
+    front_ring = &med->front_ring;
+    free_req = RING_FREE_REQUESTS(front_ring);
+    ASSERT(free_req > 0);
+
+    /* Copy request */
+    req_prod = front_ring->req_prod_pvt;
+    memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
+    req_prod++;
+
+    /* Update ring */
+    front_ring->req_prod_pvt = req_prod;
+    RING_PUSH_REQUESTS(front_ring);
+
+    /* We've actually *used* our reservation, so release the slot. */
+    mem_event_release_slot(d, med);
+
+    /* Give this vCPU a black eye if necessary, on the way out.
+     * See the comments above wake_blocked() for more information
+     * on how this mechanism works to avoid waiting. */
+    avail_req = mem_event_ring_available(med);
+    if( current->domain == d && avail_req < d->max_vcpus )
+        mem_event_mark_and_pause(current, med);
+
+    mem_event_ring_unlock(med);
+
+    notify_via_xen_event_channel(d, med->xen_port);
+}
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med, mem_event_response_t *rsp)
+{
+    mem_event_front_ring_t *front_ring;
+    RING_IDX rsp_cons;
+
+    mem_event_ring_lock(med);
+
+    front_ring = &med->front_ring;
+    rsp_cons = front_ring->rsp_cons;
+
+    if ( !RING_HAS_UNCONSUMED_RESPONSES(front_ring) )
+    {
+        mem_event_ring_unlock(med);
+        return 0;
+    }
+
+    /* Copy response */
+    memcpy(rsp, RING_GET_RESPONSE(front_ring, rsp_cons), sizeof(*rsp));
+    rsp_cons++;
+
+    /* Update ring */
+    front_ring->rsp_cons = rsp_cons;
+    front_ring->sring->rsp_event = rsp_cons + 1;
+
+    /* Kick any waiters -- since we've just consumed an event,
+     * there may be additional space available in the ring. */
+    mem_event_wake(d, med);
+
+    mem_event_ring_unlock(med);
+
+    return 1;
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{
+    mem_event_ring_lock(med);
+    mem_event_release_slot(d, med);
+    mem_event_ring_unlock(med);
+}
+
+static int mem_event_grab_slot(struct mem_event_domain *med, int foreign)
+{
+    unsigned int avail_req;
+
+    if ( !med->ring_page )
+        return -ENOSYS;
+
+    mem_event_ring_lock(med);
+
+    avail_req = mem_event_ring_available(med);
+    if ( avail_req == 0 )
+    {
+        mem_event_ring_unlock(med);
+        return -EBUSY;
+    }
+
+    if ( !foreign )
+        med->target_producers++;
+    else
+        med->foreign_producers++;
+
+    mem_event_ring_unlock(med);
+
+    return 0;
+}
+
+/* Simple try_grab wrapper for use in the wait_event() macro. */
+static int mem_event_wait_try_grab(struct mem_event_domain *med, int *rc)
+{
+    *rc = mem_event_grab_slot(med, 0);
+    return *rc;
+}
+
+/* Call mem_event_grab_slot() until the ring doesn't exist, or is available. */
+static int mem_event_wait_slot(struct mem_event_domain *med)
+{
+    int rc = -EBUSY;
+    wait_event(med->wq, mem_event_wait_try_grab(med, &rc) != -EBUSY);
+    return rc;
+}
+
+bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return (med->ring_page != NULL);
+}
+
+/*
+ * Determines whether or not the current vCPU belongs to the target domain,
+ * and calls the appropriate wait function.  If it is a guest vCPU, then we
+ * use mem_event_wait_slot() to reserve a slot.  As long as there is a ring,
+ * this function will always return 0 for a guest.  For a non-guest, we check
+ * for space and return -EBUSY if the ring is not available.
+ *
+ * Return codes: -ENOSYS: the ring is not yet configured
+ *               -EBUSY: the ring is busy
+ *               0: a spot has been reserved
+ *
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep)
+{
+    if ( (current->domain == d) && allow_sleep )
+        return mem_event_wait_slot(med);
+    else
+        return mem_event_grab_slot(med, (current->domain != d));
+}
+
+#ifdef HAS_MEM_PAGING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->paging.ring_page != NULL) )
+        p2m_mem_paging_resume(v->domain);
+}
+#endif
+
+#ifdef HAS_MEM_ACCESS
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->access.ring_page != NULL) )
+        p2m_mem_access_resume(v->domain);
+}
+#endif
+
+#ifdef HAS_MEM_SHARING
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_sharing_notification(struct vcpu *v, unsigned int port)
+{
+    if ( likely(v->domain->mem_event->share.ring_page != NULL) )
+        mem_sharing_sharing_resume(v->domain);
+}
+#endif
+
+int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    int ret;
+    struct domain *d;
+
+    ret = rcu_lock_live_remote_domain_by_id(domain, &d);
+    if ( ret )
+        return ret;
+
+    ret = xsm_mem_event_op(XSM_DM_PRIV, d, op);
+    if ( ret )
+        goto out;
+
+    switch (op)
+    {
+#ifdef HAS_MEM_PAGING
+        case XENMEM_paging_op:
+            ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg);
+            break;
+#endif
+#ifdef HAS_MEM_SHARING
+        case XENMEM_sharing_op:
+            ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg);
+            break;
+#endif
+        default:
+            ret = -ENOSYS;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+    return ret;
+}
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d)
+{
+#ifdef HAS_MEM_PAGING
+    if ( d->mem_event->paging.ring_page ) {
+        /* Destroying the wait queue head means waking up all
+         * queued vcpus. This will drain the list, allowing
+         * the disable routine to complete. It will also drop
+         * all domain refs the wait-queued vcpus are holding.
+         * Finally, because this code path involves previously
+         * pausing the domain (domain_kill), unpausing the 
+         * vcpus causes no harm. */
+        destroy_waitqueue_head(&d->mem_event->paging.wq);
+        (void)mem_event_disable(d, &d->mem_event->paging);
+    }
+#endif
+#ifdef HAS_MEM_ACCESS
+    if ( d->mem_event->access.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->access.wq);
+        (void)mem_event_disable(d, &d->mem_event->access);
+    }
+#endif
+#ifdef HAS_MEM_SHARING
+    if ( d->mem_event->share.ring_page ) {
+        destroy_waitqueue_head(&d->mem_event->share.wq);
+        (void)mem_event_disable(d, &d->mem_event->share);
+    }
+#endif
+}
+
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    int rc;
+
+    rc = xsm_mem_event_control(XSM_PRIV, d, mec->mode, mec->op);
+    if ( rc )
+        return rc;
+
+    if ( unlikely(d == current->domain) )
+    {
+        gdprintk(XENLOG_INFO, "Tried to do a memory event op on itself.\n");
+        return -EINVAL;
+    }
+
+    if ( unlikely(d->is_dying) )
+    {
+        gdprintk(XENLOG_INFO, "Ignoring memory event op on dying domain %u\n",
+                 d->domain_id);
+        return 0;
+    }
+
+    if ( unlikely(d->vcpu == NULL) || unlikely(d->vcpu[0] == NULL) )
+    {
+        gdprintk(XENLOG_INFO,
+                 "Memory event op on a domain (%u) with no vcpus\n",
+                 d->domain_id);
+        return -EINVAL;
+    }
+
+    rc = -ENOSYS;
+
+    switch ( mec->mode )
+    {
+#ifdef HAS_MEM_PAGING
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING:
+    {
+        struct mem_event_domain *med = &d->mem_event->paging;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE:
+        {
+            struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* No paging if iommu is used */
+            rc = -EMLINK;
+            if ( unlikely(need_iommu(d)) )
+                break;
+
+            rc = -EXDEV;
+            /* Disallow paging in a PoD guest */
+            if ( p2m->pod.entry_count )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_paging, 
+                                    HVM_PARAM_PAGING_RING_PFN,
+                                    mem_paging_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+#ifdef HAS_MEM_ACCESS
+    case XEN_DOMCTL_MEM_EVENT_OP_ACCESS: 
+    {
+        struct mem_event_domain *med = &d->mem_event->access;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE:
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION:
+        {
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            /* Currently only EPT is supported */
+            if ( !cpu_has_vmx )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_access, 
+                                    HVM_PARAM_ACCESS_RING_PFN,
+                                    mem_access_notification);
+
+            if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE &&
+                 rc == 0 && hvm_funcs.enable_msr_exit_interception )
+            {
+                d->arch.hvm_domain.introspection_enabled = 1;
+                hvm_funcs.enable_msr_exit_interception(d);
+            }
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE:
+        {
+            if ( med->ring_page )
+            {
+                rc = mem_event_disable(d, med);
+                d->arch.hvm_domain.introspection_enabled = 0;
+            }
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+#ifdef HAS_MEM_SHARING
+    case XEN_DOMCTL_MEM_EVENT_OP_SHARING: 
+    {
+        struct mem_event_domain *med = &d->mem_event->share;
+        rc = -EINVAL;
+
+        switch( mec->op )
+        {
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE:
+        {
+            rc = -EOPNOTSUPP;
+            /* pvh fixme: p2m_is_foreign types need addressing */
+            if ( is_pvh_vcpu(current) || is_pvh_domain(hardware_domain) )
+                break;
+
+            rc = -ENODEV;
+            /* Only HAP is supported */
+            if ( !hap_enabled(d) )
+                break;
+
+            rc = mem_event_enable(d, mec, med, _VPF_mem_sharing, 
+                                    HVM_PARAM_SHARING_RING_PFN,
+                                    mem_sharing_notification);
+        }
+        break;
+
+        case XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE:
+        {
+            if ( med->ring_page )
+                rc = mem_event_disable(d, med);
+        }
+        break;
+
+        default:
+            rc = -ENOSYS;
+            break;
+        }
+    }
+    break;
+#endif
+
+    default:
+        rc = -ENOSYS;
+    }
+
+    return rc;
+}
+
+void mem_event_vcpu_pause(struct vcpu *v)
+{
+    ASSERT(v == current);
+
+    atomic_inc(&v->mem_event_pause_count);
+    vcpu_pause_nosync(v);
+}
+
+void mem_event_vcpu_unpause(struct vcpu *v)
+{
+    int old, new, prev = v->mem_event_pause_count.counter;
+
+    /* All unpause requests as a result of toolstack responses.  Prevent
+     * underflow of the vcpu pause count. */
+    do
+    {
+        old = prev;
+        new = old - 1;
+
+        if ( new < 0 )
+        {
+            printk(XENLOG_G_WARNING
+                   "%pv mem_event: Too many unpause attempts\n", v);
+            return;
+        }
+
+        prev = cmpxchg(&v->mem_event_pause_count.counter, old, new);
+    } while ( prev != old );
+
+    vcpu_unpause(v);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 2e3225d..bad50cb 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1104,6 +1104,69 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
+void destroy_ring_for_helper(
+    void **_va, struct page_info *page)
+{
+    void *va = *_va;
+
+    if ( va != NULL )
+    {
+        unmap_domain_page_global(va);
+        put_page_and_type(page);
+        *_va = NULL;
+    }
+}
+
+int prepare_ring_for_helper(
+    struct domain *d, unsigned long gmfn, struct page_info **_page,
+    void **_va)
+{
+    struct page_info *page;
+    p2m_type_t p2mt;
+    void *va;
+
+    page = get_page_from_gfn(d, gmfn, &p2mt, P2M_UNSHARE);
+
+#ifdef HAS_MEM_PAGING
+    if ( p2m_is_paging(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        p2m_mem_paging_populate(d, gmfn);
+        return -ENOENT;
+    }
+#endif
+#ifdef HAS_MEM_SHARING
+    if ( p2m_is_shared(p2mt) )
+    {
+        if ( page )
+            put_page(page);
+        return -ENOENT;
+    }
+#endif
+
+    if ( !page )
+        return -EINVAL;
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        return -EINVAL;
+    }
+
+    va = __map_domain_page_global(page);
+    if ( va == NULL )
+    {
+        put_page_and_type(page);
+        return -ENOMEM;
+    }
+
+    *_va = va;
+    *_page = page;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index 33ac4b4..1e4711c 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -300,7 +300,6 @@ struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
     })
 
 static inline void put_gfn(struct domain *d, unsigned long gfn) {}
-static inline void mem_event_cleanup(struct domain *d) {}
 static inline int relinquish_shared_pages(struct domain *d)
 {
     return 0;
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index c0fbc8b..c09e16b 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -228,12 +228,6 @@ int hvm_vcpu_cacheattr_init(struct vcpu *v);
 void hvm_vcpu_cacheattr_destroy(struct vcpu *v);
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip);
 
-/* Prepare/destroy a ring for a dom0 helper. Helper with talk
- * with Xen on behalf of this hvm domain. */
-int prepare_ring_for_helper(struct domain *d, unsigned long gmfn, 
-                            struct page_info **_page, void **_va);
-void destroy_ring_for_helper(void **_va, struct page_info *page);
-
 bool_t hvm_send_assist_req(ioreq_t *p);
 void hvm_broadcast_assist_req(ioreq_t *p);
 
diff --git a/xen/include/asm-x86/mem_access.h b/xen/include/asm-x86/mem_access.h
deleted file mode 100644
index 5c7c5fd..0000000
--- a/xen/include/asm-x86/mem_access.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_access.h
- *
- * Memory access support.
- *
- * Copyright (c) 2011 Virtuata, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _XEN_ASM_MEM_ACCESS_H
-#define _XEN_ASM_MEM_ACCESS_H
-
-int mem_access_memop(unsigned long cmd,
-                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
-int mem_access_send_req(struct domain *d, mem_event_request_t *req);
-
-#endif /* _XEN_ASM_MEM_ACCESS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mem_event.h b/xen/include/asm-x86/mem_event.h
deleted file mode 100644
index ed4481a..0000000
--- a/xen/include/asm-x86/mem_event.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- * include/asm-x86/mem_event.h
- *
- * Common interface for memory event support.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __MEM_EVENT_H__
-#define __MEM_EVENT_H__
-
-/* Returns whether a ring has been set up */
-bool_t mem_event_check_ring(struct mem_event_domain *med);
-
-/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
- * available space and the caller is a foreign domain. If the guest itself
- * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
- * that the ring does not lose future events. 
- *
- * However, the allow_sleep flag can be set to false in cases in which it is ok
- * to lose future events, and thus -EBUSY can be returned to guest vcpus
- * (handle with care!). 
- *
- * In general, you must follow a claim_slot() call with either put_request() or
- * cancel_slot(), both of which are guaranteed to
- * succeed. 
- */
-int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
-                            bool_t allow_sleep);
-static inline int mem_event_claim_slot(struct domain *d, 
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 1);
-}
-
-static inline int mem_event_claim_slot_nosleep(struct domain *d,
-                                        struct mem_event_domain *med)
-{
-    return __mem_event_claim_slot(d, med, 0);
-}
-
-void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
-
-void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
-                            mem_event_request_t *req);
-
-int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
-                           mem_event_response_t *rsp);
-
-int do_mem_event_op(int op, uint32_t domain, void *arg);
-int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
-                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
-
-void mem_event_vcpu_pause(struct vcpu *v);
-void mem_event_vcpu_unpause(struct vcpu *v);
-
-#endif /* __MEM_EVENT_H__ */
-
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 746bcf1..aae63ee 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -609,8 +609,6 @@ unsigned int domain_clamp_alloc_bitsize(struct domain *d, unsigned int bits);
 
 unsigned long domain_get_maximum_gpfn(struct domain *d);
 
-void mem_event_cleanup(struct domain *d);
-
 extern struct domain *dom_xen, *dom_io, *dom_cow;	/* for vmcoreinfo */
 
 /* Definition of an mm lock: spinlock with extra fields for debugging */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
new file mode 100644
index 0000000..19d1a2d
--- /dev/null
+++ b/xen/include/xen/mem_access.h
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * mem_access.h
+ *
+ * Memory access support.
+ *
+ * Copyright (c) 2011 Virtuata, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_ASM_MEM_ACCESS_H
+#define _XEN_ASM_MEM_ACCESS_H
+
+#include <public/memory.h>
+
+#ifdef HAS_MEM_ACCESS
+
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg);
+int mem_access_send_req(struct domain *d, mem_event_request_t *req);
+
+#else
+
+static inline
+int mem_access_memop(unsigned long cmd,
+                     XEN_GUEST_HANDLE_PARAM(xen_mem_access_op_t) arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_access_send_req(struct domain *d, mem_event_request_t *req)
+{
+    return -ENOSYS;
+}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* _XEN_ASM_MEM_ACCESS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mem_event.h b/xen/include/xen/mem_event.h
new file mode 100644
index 0000000..8612b26
--- /dev/null
+++ b/xen/include/xen/mem_event.h
@@ -0,0 +1,143 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Common interface for memory event support.
+ *
+ * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef __MEM_EVENT_H__
+#define __MEM_EVENT_H__
+
+#include <xen/sched.h>
+
+#ifdef HAS_MEM_ACCESS
+
+/* Clean up on domain destruction */
+void mem_event_cleanup(struct domain *d);
+
+/* Returns whether a ring has been set up */
+bool_t mem_event_check_ring(struct mem_event_domain *med);
+
+/* Returns 0 on success, -ENOSYS if there is no ring, -EBUSY if there is no
+ * available space and the caller is a foreign domain. If the guest itself
+ * is the caller, -EBUSY is avoided by sleeping on a wait queue to ensure
+ * that the ring does not lose future events. 
+ *
+ * However, the allow_sleep flag can be set to false in cases in which it is ok
+ * to lose future events, and thus -EBUSY can be returned to guest vcpus
+ * (handle with care!). 
+ *
+ * In general, you must follow a claim_slot() call with either put_request() or
+ * cancel_slot(), both of which are guaranteed to
+ * succeed. 
+ */
+int __mem_event_claim_slot(struct domain *d, struct mem_event_domain *med,
+                            bool_t allow_sleep);
+static inline int mem_event_claim_slot(struct domain *d, 
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 1);
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return __mem_event_claim_slot(d, med, 0);
+}
+
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med);
+
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req);
+
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp);
+
+int do_mem_event_op(int op, uint32_t domain, void *arg);
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl);
+
+void mem_event_vcpu_pause(struct vcpu *v);
+void mem_event_vcpu_unpause(struct vcpu *v);
+
+#else
+
+static inline void mem_event_cleanup(struct domain *d) {}
+
+static inline bool_t mem_event_check_ring(struct mem_event_domain *med)
+{
+    return 0;
+}
+
+static inline int mem_event_claim_slot(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline int mem_event_claim_slot_nosleep(struct domain *d,
+                                        struct mem_event_domain *med)
+{
+    return -ENOSYS;
+}
+
+static inline
+void mem_event_cancel_slot(struct domain *d, struct mem_event_domain *med)
+{}
+
+static inline
+void mem_event_put_request(struct domain *d, struct mem_event_domain *med,
+                            mem_event_request_t *req)
+{}
+
+static inline
+int mem_event_get_response(struct domain *d, struct mem_event_domain *med,
+                           mem_event_response_t *rsp)
+{
+    return -ENOSYS;
+}
+
+static inline int do_mem_event_op(int op, uint32_t domain, void *arg)
+{
+    return -ENOSYS;
+}
+
+static inline
+int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                     XEN_GUEST_HANDLE_PARAM(void) u_domctl)
+{
+    return -ENOSYS;
+}
+
+static inline void mem_event_vcpu_pause(struct vcpu *v) {}
+static inline void mem_event_vcpu_unpause(struct vcpu *v) {}
+
+#endif /* HAS_MEM_ACCESS */
+
+#endif /* __MEM_EVENT_H__ */
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b183189..7c0efc7 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -371,4 +371,10 @@ int guest_remove_page(struct domain *d, unsigned long gmfn);
 /* TRUE if the whole page at @mfn is of the requested RAM type(s) above. */
 int page_is_ram_type(unsigned long mfn, unsigned long mem_type);
 
+/* Prepare/destroy a ring for a dom0 helper. Helper with talk
+ * with Xen on behalf of this domain. */
+int prepare_ring_for_helper(struct domain *d, unsigned long gmfn,
+                            struct page_info **_page, void **_va);
+void destroy_ring_for_helper(void **_va, struct page_info *page);
+
 #endif /* __XEN_MM_H__ */
-- 
2.1.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

From xen-devel-bounces@lists.xen.org Thu Sep 25 14:38:38 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Sep 2014 14:38:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XXABj-0000TW-Ff; Thu, 25 Sep 2014 14:38:31 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <linux@eikelenboom.it>) id 1XXAAI-0000OS-Bb
	for xen-devel@lists.xenproject.org; Thu, 25 Sep 2014 14:37:03 +0000
Received: from [85.158.137.68:31763] by server-7.bemta-3.messagelabs.com id
	7F/B6-01084-D8824245; Thu, 25 Sep 2014 14:37:01 +0000
X-Env-Sender: linux@eikelenboom.it
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411655816!11987676!1
X-Originating-IP: [84.200.39.61]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20573 invoked from network); 25 Sep 2014 14:36:56 -0000
Received: from vserver.eikelenboom.it (HELO smtp.eikelenboom.it) (84.200.39.61)
	by server-4.tower-31.messagelabs.com with DHE-RSA-AES128-SHA encrypted
	SMTP; 25 Sep 2014 14:36:56 -0000
Received: from 17-68-ftth.on.nl ([88.159.68.17]:55928 helo=w510-wirelesss)
	by smtp.eikelenboom.it with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256)
	(Exim 4.80) (envelope-from <linux@eikelenboom.it>)
	id 1XXA9m-0000un-HT; Thu, 25 Sep 2014 16:36:31 +0200
Date: Thu, 25 Sep 2014 16:36:49 +0200
From: Sander Eikelenboom <linux@eikelenboom.it>
Organization: Eikelenboom IT services
X-Priority: 3 (Normal)
Message-ID: <885160611.20140925163649@eikelenboom.it>
To: "Jan Beulich" <JBeulich@suse.com>, 
	"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----------0F00510E42C86A23A"
X-Mailman-Approved-At: Thu, 25 Sep 2014 14:38:30 +0000
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: [Xen-devel] Xen-unstable: pci-passthrough "irq 16: nobody cared" on
	HVM guest shutdown on irq of device not passed through.
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

------------0F00510E42C86A23A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi Jan / Konrad,

I mentioned before seeing this sometimes, but since it happened infrequently it was hard to describe the case and log everything.
Somehow it seems i can trigger it quite reliably at the moment, so here a extensive report.

When shutting down a HVM guest with pci passthrough (in this case a VGA adapter),
 i *sometimes* run into this:

[ 2265.395971] irq 16: nobody cared (try booting with the "irqpoll" option)
[ 2265.422948] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.17.0-rc6-20140925-vanilla+ #1
[ 2265.453314] Hardware name: MSI MS-7640/890FXA-GD70 (MS-7640)  , BIOS V1.8B1 09/13/2010
[ 2265.484046]  ffff880057a1a290 ffff88005f603d88 ffffffff81b7d90e 0000000000000001
[ 2265.513053]  ffff880057a1a200 ffff88005f603db8 ffffffff8110d6c8 ffff88005f603db8
[ 2265.542121]  ffff880057a1a200 0000000000000010 0000000000000000 ffff88005f603e08
[ 2265.571135] Call Trace:
[ 2265.585507]  <IRQ>  [<ffffffff81b7d90e>] dump_stack+0x46/0x58
[ 2265.609694]  [<ffffffff8110d6c8>] __report_bad_irq+0x38/0xd0
[ 2265.633625]  [<ffffffff8110dc1a>] note_interrupt+0x23a/0x290
[ 2265.657572]  [<ffffffff8155f0f5>] ? add_interrupt_randomness+0x45/0x210
[ 2265.684405]  [<ffffffff8110b45d>] handle_irq_event_percpu+0x9d/0x150
[ 2265.710379]  [<ffffffff8110b553>] handle_irq_event+0x43/0x70
[ 2265.734213]  [<ffffffff8110e29a>] ? handle_fasteoi_irq+0x2a/0x150
[ 2265.759463]  [<ffffffff8110e2f7>] handle_fasteoi_irq+0x87/0x150
[ 2265.784122]  [<ffffffff8110acbd>] generic_handle_irq+0x1d/0x40
[ 2265.808338]  [<ffffffff8152037a>] evtchn_fifo_handle_events+0x16a/0x170
[ 2265.834898]  [<ffffffff8151d4c8>] __xen_evtchn_do_upcall+0x48/0x90
[ 2265.860241]  [<ffffffff8151f0d2>] xen_evtchn_do_upcall+0x32/0x50
[ 2265.885031]  [<ffffffff81b8a76e>] xen_do_hypervisor_callback+0x1e/0x30
[ 2265.911279]  <EOI>  [<ffffffff810013aa>] ? xen_hypercall_sched_op+0xa/0x20
[ 2265.938509]  [<ffffffff810013aa>] ? xen_hypercall_sched_op+0xa/0x20
[ 2265.963981]  [<ffffffff81008d80>] ? xen_safe_halt+0x10/0x20
[ 2265.987198]  [<ffffffff81018bd8>] ? default_idle+0x18/0x20
[ 2266.010032]  [<ffffffff8101949a>] ? arch_cpu_idle+0xa/0x10
[ 2266.032827]  [<ffffffff810f84f1>] ? cpu_startup_entry+0x281/0x2f0
[ 2266.057481]  [<ffffffff81b741e4>] ? rest_init+0xb4/0xc0
[ 2266.079672]  [<ffffffff81b74130>] ? csum_partial_copy_generic+0x170/0x170
[ 2266.106401]  [<ffffffff82321079>] ? start_kernel+0x43f/0x44c
[ 2266.129479]  [<ffffffff82320a27>] ? set_init_arg+0x58/0x58
[ 2266.151971]  [<ffffffff82320608>] ? x86_64_start_reservations+0x2a/0x2c
[ 2266.177879]  [<ffffffff823240af>] ? xen_start_kernel+0x59b/0x59d
[ 2266.201994] handlers:
[ 2266.214783] [<ffffffff81945580>] azx_interrupt
[ 2266.234031] Disabling IRQ #16

The system:

- AMD
- Xen-unstable xen_changeset: Wed Sep 24 11:19:57 2014 +0200 git:b67a26f-dirty
- Both dom0 and domU (HVM guest using qemu-xen) run a 3.17-rc6 kernel
- The device passed through is 09:00.0

- This IRQ is *not* coupled to the passthrough device (09:00.0), but to the onboard 
  soundcard (00:14.2 on the southbridge) and is in dom0 and not in active use (although the 
  snd-hda-intel driver is loaded).

- No "soundhw" option is specified in the guest config, so it also shouldn't be 
  trying to use it that way.



There are 2 things that can happen when trying to start and shutdown a guest:
A) It starts and shutdowns OK, (no irq nobody cared messages)
B) It starts fine and but after shutdown the nirq nobody cared message

- B *can* happen both on: the first start-and-shutdown of the HVM guest, or only on a subsequent start-and-shutdown
  (so on the first start-and-shutdown it can work ok, but does not always)

There seems to be some small differences for both cases from the start of the domain:

- When booting the HVM guest the irq number of /proc/interrupts stays the same for when A happens, but when B happens, the number of interrupts has been
  doubled (so that seems like a reinit of the device that is not passed through).

- When shutting down the HVM guest when A happens the number of interrupts in /proc/interrups is still what it was, but when B happens it seems like a irq storm
  and after the irq nobody cared that ends with (always that 200000 so perhaps a threshold ?):
  16:     200000          0          0          0          0          0  xen-pirq-ioapic-level  snd_hda_intel

- On the start when B happens, xl dmesg contains this message (when A happens it doesn't contain it):
  (XEN) [2014-09-25 13:39:48.149] d32767v2: Unsupported MSI delivery mode 3 for Dom2

  If i interpret that right in the logging the d32767 seems to be used for the IOMMU.

I attached the complete serial log while doing this (hope it's not too large for the mailing list):

- Cold boot of the host system
- Dump with xl debug-keys of i, I, Q, M, z, e, v
- Start of the HVM guest with pci device passed through.
- Dump with xl debug-keys of i, I, Q, M, z, e, v
- Shutdown of the HVM guest with pci device passed through, A happened.
- Dump with xl debug-keys of i, I, Q, M, z, e, v
- Start of the HVM guest with pci device passed through.
- Dump with xl debug-keys of i, I, Q, M, z, e, v
- Shutdown of the HVM guest with pci device passed through, B happened.
- Dump with xl debug-keys of i, I, Q, M, z, e, v

I also attached the output of lspci -vvvknn
------------0F00510E42C86A23A
Content-Type: text/plain;
 name="lspci.txt"
Content-transfer-encoding: base64
Content-Disposition: attachment;
 filename="lspci.txt"

MDA6MDAuMCBIb3N0IGJyaWRnZSBbMDYwMF06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FN
RF0gbmVlIEFUSSBSRDg5MCBOb3J0aGJyaWRnZSBvbmx5IHNpbmdsZSBzbG90IFBDSS1lIEdG
WCBIeWRyYSBwYXJ0IFsxMDAyOjVhMTFdIChyZXYgMDIpCglTdWJzeXN0ZW06IEFkdmFuY2Vk
IE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBSRDg5MCBOb3J0aGJyaWRnZSBvbmx5IHNp
bmdsZSBzbG90IFBDSS1lIEdGWCBIeWRyYSBwYXJ0IFsxMDAyOjVhMTFdCglDb250cm9sOiBJ
L08tIE1lbSsgQnVzTWFzdGVyLSBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJF
cnItIFN0ZXBwaW5nLSBTRVJSLSBGYXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXArIDY2
TUh6LSBVREYtIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9y
dC0gPE1BYm9ydCsgPlNFUlItIDxQRVJSLSBJTlR4LQoJQ2FwYWJpbGl0aWVzOiBbZjBdIEh5
cGVyVHJhbnNwb3J0OiBNU0kgTWFwcGluZyBFbmFibGUrIEZpeGVkKwoJQ2FwYWJpbGl0aWVz
OiBbYzRdIEh5cGVyVHJhbnNwb3J0OiBTbGF2ZSBvciBQcmltYXJ5IEludGVyZmFjZQoJCUNv
bW1hbmQ6IEJhc2VVbml0SUQ9MCBVbml0Q250PTIwIE1hc3RIb3N0LSBEZWZEaXItIERVTC0K
CQlMaW5rIENvbnRyb2wgMDogQ0ZsRS0gQ1NULSBDRkUtIDxMa0ZhaWwtIEluaXQrIEVPQy0g
VFhPLSA8Q1JDRXJyPTAgSXNvY0VuLSBMU0VuLSBFeHRDVEwtIDY0Yi0KCQlMaW5rIENvbmZp
ZyAwOiBNTFdJPTE2Yml0IER3RmNJbi0gTUxXTz0xNmJpdCBEd0ZjT3V0LSBMV0k9MTZiaXQg
RHdGY0luRW4tIExXTz0xNmJpdCBEd0ZjT3V0RW4tCgkJTGluayBDb250cm9sIDE6IENGbEUt
IENTVC0gQ0ZFLSA8TGtGYWlsKyBJbml0LSBFT0MrIFRYTysgPENSQ0Vycj0wIElzb2NFbi0g
TFNFbi0gRXh0Q1RMLSA2NGItCgkJTGluayBDb25maWcgMTogTUxXST04Yml0IER3RmNJbi0g
TUxXTz04Yml0IER3RmNPdXQtIExXST04Yml0IER3RmNJbkVuLSBMV089OGJpdCBEd0ZjT3V0
RW4tCgkJUmV2aXNpb24gSUQ6IDMuMDAKCQlMaW5rIEZyZXF1ZW5jeSAwOiBbYl0KCQlMaW5r
IEVycm9yIDA6IDxQcm90LSA8T3ZmbC0gPEVPQy0gQ1RMVG0tCgkJTGluayBGcmVxdWVuY3kg
Q2FwYWJpbGl0eSAwOiAyMDBNSHorIDMwME1Iei0gNDAwTUh6KyA1MDBNSHotIDYwME1Ieisg
ODAwTUh6KyAxLjBHSHorIDEuMkdIeisgMS40R0h6LSAxLjZHSHotIFZlbmQtCgkJRmVhdHVy
ZSBDYXBhYmlsaXR5OiBJc29jRkMrIExEVFNUT1ArIENSQ1RNLSBFQ1RMVC0gNjRiQSsgVUlE
UkQtCgkJTGluayBGcmVxdWVuY3kgMTogMjAwTUh6CgkJTGluayBFcnJvciAxOiA8UHJvdC0g
PE92ZmwtIDxFT0MtIENUTFRtLQoJCUxpbmsgRnJlcXVlbmN5IENhcGFiaWxpdHkgMTogMjAw
TUh6LSAzMDBNSHotIDQwME1Iei0gNTAwTUh6LSA2MDBNSHotIDgwME1Iei0gMS4wR0h6LSAx
LjJHSHotIDEuNEdIei0gMS42R0h6LSBWZW5kLQoJCUVycm9yIEhhbmRsaW5nOiBQRmxFLSBP
RmxFLSBQRkUtIE9GRS0gRU9DRkUtIFJGRS0gQ1JDRkUtIFNFUlJGRS0gQ0YtIFJFLSBQTkZF
LSBPTkZFLSBFT0NORkUtIFJORkUtIENSQ05GRS0gU0VSUk5GRS0KCQlQcmVmZXRjaGFibGUg
bWVtb3J5IGJlaGluZCBicmlkZ2UgVXBwZXI6IDAwLTAwCgkJQnVzIE51bWJlcjogMDAKCUNh
cGFiaWxpdGllczogWzQwXSBIeXBlclRyYW5zcG9ydDogUmV0cnkgTW9kZQoJQ2FwYWJpbGl0
aWVzOiBbNTRdIEh5cGVyVHJhbnNwb3J0OiBVbml0SUQgQ2x1bXBpbmcKCUNhcGFiaWxpdGll
czogWzljXSBIeXBlclRyYW5zcG9ydDogIzFhCglDYXBhYmlsaXRpZXM6IFs3MF0gTVNJOiBF
bmFibGUtIENvdW50PTEvNCBNYXNrYWJsZS0gNjRiaXQtCgkJQWRkcmVzczogMDAwMDAwMDAg
IERhdGE6IDAwMDAKCjAwOjAwLjIgSU9NTVUgWzA4MDZdOiBBZHZhbmNlZCBNaWNybyBEZXZp
Y2VzIFtBTURdIG5lZSBBVEkgUkQ5OTAgSS9PIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKElP
TU1VKSBbMTAwMjo1YTIzXQoJU3Vic3lzdGVtOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzIFtB
TURdIG5lZSBBVEkgUkQ5OTAgSS9PIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKElPTU1VKSBb
MTAwMjo1YTIzXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBN
ZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlz
SU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNF
TD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0K
CUxhdGVuY3k6IDAKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAxMAoJQ2FwYWJp
bGl0aWVzOiBbNDBdIFNlY3VyZSBkZXZpY2UgPD8+CglDYXBhYmlsaXRpZXM6IFs1NF0gTVNJ
OiBFbmFibGUrIENvdW50PTEvMSBNYXNrYWJsZS0gNjRiaXQrCgkJQWRkcmVzczogMDAwMDAw
MDBmZWUwMTAwYyAgRGF0YTogNDEyOAoJQ2FwYWJpbGl0aWVzOiBbNjRdIEh5cGVyVHJhbnNw
b3J0OiBNU0kgTWFwcGluZyBFbmFibGUrIEZpeGVkKwoKMDA6MDIuMCBQQ0kgYnJpZGdlIFsw
NjA0XTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFJEODkwIFBDSSB0
byBQQ0kgYnJpZGdlIChQQ0kgZXhwcmVzcyBncHAgcG9ydCBCKSBbMTAwMjo1YTE2XSAocHJv
Zy1pZiAwMCBbTm9ybWFsIGRlY29kZV0pCglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVy
KyBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJS
KyBGYXN0QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkIt
IFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlIt
IDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogMCwgQ2FjaGUgTGluZSBTaXplOiA2NCBieXRlcwoJ
QnVzOiBwcmltYXJ5PTAwLCBzZWNvbmRhcnk9MGYsIHN1Ym9yZGluYXRlPTBmLCBzZWMtbGF0
ZW5jeT0wCglJL08gYmVoaW5kIGJyaWRnZTogMDAwMGUwMDAtMDAwMGVmZmYKCU1lbW9yeSBi
ZWhpbmQgYnJpZGdlOiBmZTkwMDAwMC1mZTlmZmZmZgoJUHJlZmV0Y2hhYmxlIG1lbW9yeSBi
ZWhpbmQgYnJpZGdlOiAwMDAwMDAwMGQwMDAwMDAwLTAwMDAwMDAwZGZmZmZmZmYKCVNlY29u
ZGFyeSBzdGF0dXM6IDY2TUh6LSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJv
cnQtIDxUQWJvcnQtIDxNQWJvcnQrIDxTRVJSLSA8UEVSUi0KCUJyaWRnZUN0bDogUGFyaXR5
KyBTRVJSKyBOb0lTQS0gVkdBKyBNQWJvcnQtID5SZXNldC0gRmFzdEIyQi0KCQlQcmlEaXNj
VG1yLSBTZWNEaXNjVG1yLSBEaXNjVG1yU3RhdC0gRGlzY1RtclNFUlJFbi0KCUNhcGFiaWxp
dGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJCUZsYWdzOiBQTUVDbGst
IERTSS0gRDEtIEQyLSBBdXhDdXJyZW50PTBtQSBQTUUoRDArLEQxLSxEMi0sRDNob3QrLEQz
Y29sZCspCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFibGUtIERTZWw9MCBEU2Nh
bGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAodjIpIFJvb3QgUG9ydCAo
U2xvdCspLCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgMTI4IGJ5dGVzLCBQaGFudEZ1
bmMgMCwgTGF0ZW5jeSBMMHMgPDY0bnMsIEwxIDwxdXMKCQkJRXh0VGFnKyBSQkUrIEZMUmVz
ZXQtCgkJRGV2Q3RsOglSZXBvcnQgZXJyb3JzOiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBG
YXRhbC0gVW5zdXBwb3J0ZWQtCgkJCVJseGRPcmQrIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQ
d3ItIE5vU25vb3ArCgkJCU1heFBheWxvYWQgMTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDEyOCBi
eXRlcwoJCURldlN0YToJQ29yckVyci0gVW5jb3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVx
LSBBdXhQd3ItIFRyYW5zUGVuZC0KCQlMbmtDYXA6CVBvcnQgIzAsIFNwZWVkIDVHVC9zLCBX
aWR0aCB4OCwgQVNQTSBMMHMgTDEsIExhdGVuY3kgTDAgPDF1cywgTDEgPDh1cwoJCQlDbG9j
a1BNLSBTdXJwcmlzZS0gTExBY3RSZXArIEJ3Tm90KwoJCUxua0N0bDoJQVNQTSBEaXNhYmxl
ZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVkLSBSZXRyYWluLSBDb21tQ2xrKwoJCQlFeHRTeW5j
aC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVl
ZCAyLjVHVC9zLCBXaWR0aCB4OCwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZSsg
QldNZ210KyBBQldNZ210LQoJCVNsdENhcDoJQXR0bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRu
SW5kLSBQd3JJbmQtIEhvdFBsdWctIFN1cnByaXNlLQoJCQlTbG90ICMxLCBQb3dlckxpbWl0
IDI1LjAwMFc7IEludGVybG9jay0gTm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0
bi0gUHdyRmx0LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlD
b250cm9sOiBBdHRuSW5kIFVua25vd24sIFB3ckluZCBVbmtub3duLCBQb3dlci0gSW50ZXJs
b2NrLQoJCVNsdFN0YToJU3RhdHVzOiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0
LSBQcmVzRGV0KyBJbnRlcmxvY2stCgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldCsgTGlua1N0
YXRlKwoJCVJvb3RDdGw6IEVyckNvcnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVyckZhdGFs
LSBQTUVJbnRFbmEtIENSU1Zpc2libGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0KCQlSb290
U3RhOiBQTUUgUmVxSUQgMDAwMCwgUE1FU3RhdHVzLSBQTUVQZW5kaW5nLQoJCURldkNhcDI6
IENvbXBsZXRpb24gVGltZW91dDogUmFuZ2UgQUJDRCwgVGltZW91dERpcysgQVJJRndkKwoJ
CURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNjVtcyB0byAyMTBtcywgVGltZW91dERp
cy0gQVJJRndkLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJD
b21wbGlhbmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC0zLjVkQgoJ
CQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlm
aWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFz
aXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtMy41ZEIs
IEVxdWFsaXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkgRXF1YWxp
emF0aW9uUGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXphdGlvblJl
cXVlc3QtCglDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENvdW50PTEvMSBNYXNr
YWJsZS0gNjRiaXQtCgkJQWRkcmVzczogZmVlM2YwMGMgIERhdGE6IDQwMDAKCUNhcGFiaWxp
dGllczogW2IwXSBTdWJzeXN0ZW06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVl
IEFUSSBEZXZpY2UgWzEwMDI6NWExMV0KCUNhcGFiaWxpdGllczogW2I4XSBIeXBlclRyYW5z
cG9ydDogTVNJIE1hcHBpbmcgRW5hYmxlKyBGaXhlZCsKCUNhcGFiaWxpdGllczogWzEwMCB2
MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMTAg
PD8+CglDYXBhYmlsaXRpZXM6IFsxOTAgdjFdIEFjY2VzcyBDb250cm9sIFNlcnZpY2VzCgkJ
QUNTQ2FwOglTcmNWYWxpZCsgVHJhbnNCbGsrIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0
cmVhbUZ3ZCsgRWdyZXNzQ3RybC0gRGlyZWN0VHJhbnMrCgkJQUNTQ3RsOglTcmNWYWxpZCsg
VHJhbnNCbGstIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsgRWdyZXNzQ3Ry
bC0gRGlyZWN0VHJhbnMtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKCjAwOjAz
LjAgUENJIGJyaWRnZSBbMDYwNF06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVl
IEFUSSBSRDg5MCBQQ0kgdG8gUENJIGJyaWRnZSAoUENJIGV4cHJlc3MgZ3BwIHBvcnQgQykg
WzEwMDI6NWExN10gKHByb2ctaWYgMDAgW05vcm1hbCBkZWNvZGVdKQoJQ29udHJvbDogSS9P
KyBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJy
LSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeCsKCVN0YXR1czogQ2FwKyA2Nk1I
ei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQt
IDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAsIENhY2hlIExpbmUg
U2l6ZTogNjQgYnl0ZXMKCUJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5PTBlLCBzdWJvcmRp
bmF0ZT0wZSwgc2VjLWxhdGVuY3k9MAoJSS9PIGJlaGluZCBicmlkZ2U6IDAwMDBkMDAwLTAw
MDBkZmZmCglNZW1vcnkgYmVoaW5kIGJyaWRnZTogZmU4MDAwMDAtZmU4ZmZmZmYKCVByZWZl
dGNoYWJsZSBtZW1vcnkgYmVoaW5kIGJyaWRnZTogMDAwMDAwMDBjMDAwMDAwMC0wMDAwMDAw
MGNmZmZmZmZmCglTZWNvbmRhcnkgc3RhdHVzOiA2Nk1Iei0gRmFzdEIyQi0gUGFyRXJyLSBE
RVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0KyA8U0VSUi0gPFBFUlItCglC
cmlkZ2VDdGw6IFBhcml0eSsgU0VSUisgTm9JU0ErIFZHQS0gTUFib3J0LSA+UmVzZXQtIEZh
c3RCMkItCgkJUHJpRGlzY1Rtci0gU2VjRGlzY1Rtci0gRGlzY1RtclN0YXQtIERpc2NUbXJT
RVJSRW4tCglDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMK
CQlGbGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1FKEQwKyxE
MS0sRDItLEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5h
YmxlLSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIEV4cHJlc3Mg
KHYyKSBSb290IFBvcnQgKFNsb3QrKSwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEy
OCBieXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw2NG5zLCBMMSA8MXVzCgkJCUV4
dFRhZysgUkJFKyBGTFJlc2V0LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFi
bGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkKyBFeHRUYWct
IFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29wKwoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywg
TWF4UmVhZFJlcSAxMjggYnl0ZXMKCQlEZXZTdGE6CUNvcnJFcnItIFVuY29yckVyci0gRmF0
YWxFcnItIFVuc3VwcFJlcS0gQXV4UHdyLSBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMx
LCBTcGVlZCA1R1QvcywgV2lkdGggeDgsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDwxdXMs
IEwxIDw4dXMKCQkJQ2xvY2tQTS0gU3VycHJpc2UtIExMQWN0UmVwKyBCd05vdCsKCQlMbmtD
dGw6CUFTUE0gRGlzYWJsZWQ7IFJDQiA2NCBieXRlcyBEaXNhYmxlZC0gUmV0cmFpbi0gQ29t
bUNsaysKCQkJRXh0U3luY2gtIENsb2NrUE0tIEF1dFdpZERpcy0gQldJbnQtIEF1dEJXSW50
LQoJCUxua1N0YToJU3BlZWQgMi41R1QvcywgV2lkdGggeDgsIFRyRXJyLSBUcmFpbi0gU2xv
dENsaysgRExBY3RpdmUrIEJXTWdtdCsgQUJXTWdtdC0KCQlTbHRDYXA6CUF0dG5CdG4tIFB3
ckN0cmwtIE1STC0gQXR0bkluZC0gUHdySW5kLSBIb3RQbHVnLSBTdXJwcmlzZS0KCQkJU2xv
dCAjMywgUG93ZXJMaW1pdCAyNS4wMDBXOyBJbnRlcmxvY2stIE5vQ29tcGwrCgkJU2x0Q3Rs
OglFbmFibGU6IEF0dG5CdG4tIFB3ckZsdC0gTVJMLSBQcmVzRGV0LSBDbWRDcGx0LSBIUEly
cS0gTGlua0NoZy0KCQkJQ29udHJvbDogQXR0bkluZCBVbmtub3duLCBQd3JJbmQgVW5rbm93
biwgUG93ZXItIEludGVybG9jay0KCQlTbHRTdGE6CVN0YXR1czogQXR0bkJ0bi0gUG93ZXJG
bHQtIE1STC0gQ21kQ3BsdC0gUHJlc0RldCsgSW50ZXJsb2NrLQoJCQlDaGFuZ2VkOiBNUkwt
IFByZXNEZXQrIExpbmtTdGF0ZSsKCQlSb290Q3RsOiBFcnJDb3JyZWN0YWJsZS0gRXJyTm9u
LUZhdGFsLSBFcnJGYXRhbC0gUE1FSW50RW5hLSBDUlNWaXNpYmxlLQoJCVJvb3RDYXA6IENS
U1Zpc2libGUtCgkJUm9vdFN0YTogUE1FIFJlcUlEIDAwMDAsIFBNRVN0YXR1cy0gUE1FUGVu
ZGluZy0KCQlEZXZDYXAyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IFJhbmdlIEFCQ0QsIFRpbWVv
dXREaXMrIEFSSUZ3ZCsKCQlEZXZDdGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDY1bXMgdG8g
MjEwbXMsIFRpbWVvdXREaXMtIEFSSUZ3ZC0KCQlMbmtDdGwyOiBUYXJnZXQgTGluayBTcGVl
ZDogNUdUL3MsIEVudGVyQ29tcGxpYW5jZS0gU3BlZWREaXMtLCBTZWxlY3RhYmxlIERlLWVt
cGhhc2lzOiAtMy41ZEIKCQkJIFRyYW5zbWl0IE1hcmdpbjogTm9ybWFsIE9wZXJhdGluZyBS
YW5nZSwgRW50ZXJNb2RpZmllZENvbXBsaWFuY2UtIENvbXBsaWFuY2VTT1MtCgkJCSBDb21w
bGlhbmNlIERlLWVtcGhhc2lzOiAtNmRCCgkJTG5rU3RhMjogQ3VycmVudCBEZS1lbXBoYXNp
cyBMZXZlbDogLTMuNWRCLCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBo
YXNlMS0KCQkJIEVxdWFsaXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExp
bmtFcXVhbGl6YXRpb25SZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTogRW5hYmxl
KyBDb3VudD0xLzEgTWFza2FibGUtIDY0Yml0LQoJCUFkZHJlc3M6IGZlZTNmMDBjICBEYXRh
OiA0MDAwCglDYXBhYmlsaXRpZXM6IFtiMF0gU3Vic3lzdGVtOiBBZHZhbmNlZCBNaWNybyBE
ZXZpY2VzIFtBTURdIG5lZSBBVEkgRGV2aWNlIFsxMDAyOjVhMTFdCglDYXBhYmlsaXRpZXM6
IFtiOF0gSHlwZXJUcmFuc3BvcnQ6IE1TSSBNYXBwaW5nIEVuYWJsZSsgRml4ZWQrCglDYXBh
YmlsaXRpZXM6IFsxMDAgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAw
MSBSZXY9MSBMZW49MDEwIDw/PgoJQ2FwYWJpbGl0aWVzOiBbMTkwIHYxXSBBY2Nlc3MgQ29u
dHJvbCBTZXJ2aWNlcwoJCUFDU0NhcDoJU3JjVmFsaWQrIFRyYW5zQmxrKyBSZXFSZWRpcisg
Q21wbHRSZWRpcisgVXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRyYW5zKwoJCUFD
U0N0bDoJU3JjVmFsaWQrIFRyYW5zQmxrLSBSZXFSZWRpcisgQ21wbHRSZWRpcisgVXBzdHJl
YW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRyYW5zLQoJS2VybmVsIGRyaXZlciBpbiB1c2U6
IHBjaWVwb3J0CgowMDowNS4wIFBDSSBicmlkZ2UgWzA2MDRdOiBBZHZhbmNlZCBNaWNybyBE
ZXZpY2VzIFtBTURdIG5lZSBBVEkgUkQ4OTAgUENJIHRvIFBDSSBicmlkZ2UgKFBDSSBleHBy
ZXNzIGdwcCBwb3J0IEUpIFsxMDAyOjVhMTldIChwcm9nLWlmIDAwIFtOb3JtYWwgZGVjb2Rl
XSkKCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0g
VkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgrCglT
dGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+
VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5
OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHByaW1hcnk9MDAsIHNlY29u
ZGFyeT0wZCwgc3Vib3JkaW5hdGU9MGQsIHNlYy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQgYnJp
ZGdlOiAwMDAwYzAwMC0wMDAwY2ZmZgoJTWVtb3J5IGJlaGluZCBicmlkZ2U6IGZlNzAwMDAw
LWZlN2ZmZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJlaGluZCBicmlkZ2U6IDAwMDAwMDAw
YmZmMDAwMDAtMDAwMDAwMDBiZmZmZmZmZgoJU2Vjb25kYXJ5IHN0YXR1czogNjZNSHotIEZh
c3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydCsg
PFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkrIFNFUlIrIE5vSVNBKyBWR0EtIE1B
Ym9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NUbXItIFNlY0Rpc2NUbXItIERpc2NU
bXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFn
ZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJl
bnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQwIE5v
U29mdFJzdC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGll
czogWzU4XSBFeHByZXNzICh2MikgUm9vdCBQb3J0IChTbG90KyksIE1TSSAwMAoJCURldkNh
cDoJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIFBoYW50RnVuYyAwLCBMYXRlbmN5IEwwcyA8NjRu
cywgTDEgPDF1cwoJCQlFeHRUYWcrIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6CVJlcG9ydCBl
cnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0KCQkJ
Umx4ZE9yZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsKCQkJTWF4UGF5
bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJy
LSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3ci0gVHJhbnNQZW5kLQoJ
CUxua0NhcDoJUG9ydCAjMSwgU3BlZWQgNUdUL3MsIFdpZHRoIHgxLCBBU1BNIEwwcyBMMSwg
TGF0ZW5jeSBMMCA8MXVzLCBMMSA8OHVzCgkJCUNsb2NrUE0tIFN1cnByaXNlLSBMTEFjdFJl
cCsgQndOb3QrCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQgYnl0ZXMgRGlzYWJs
ZWQtIFJldHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9ja1BNLSBBdXRXaWREaXMt
IEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdUL3MsIFdpZHRoIHgxLCBU
ckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlKyBCV01nbXQrIEFCV01nbXQtCgkJU2x0
Q2FwOglBdHRuQnRuLSBQd3JDdHJsLSBNUkwtIEF0dG5JbmQtIFB3ckluZC0gSG90UGx1Zy0g
U3VycHJpc2UtCgkJCVNsb3QgIzUsIFBvd2VyTGltaXQgNzUuMDAwVzsgSW50ZXJsb2NrLSBO
b0NvbXBsKwoJCVNsdEN0bDoJRW5hYmxlOiBBdHRuQnRuLSBQd3JGbHQtIE1STC0gUHJlc0Rl
dC0gQ21kQ3BsdC0gSFBJcnEtIExpbmtDaGctCgkJCUNvbnRyb2w6IEF0dG5JbmQgVW5rbm93
biwgUHdySW5kIFVua25vd24sIFBvd2VyLSBJbnRlcmxvY2stCgkJU2x0U3RhOglTdGF0dXM6
IEF0dG5CdG4tIFBvd2VyRmx0LSBNUkwtIENtZENwbHQtIFByZXNEZXQrIEludGVybG9jay0K
CQkJQ2hhbmdlZDogTVJMLSBQcmVzRGV0KyBMaW5rU3RhdGUrCgkJUm9vdEN0bDogRXJyQ29y
cmVjdGFibGUtIEVyck5vbi1GYXRhbC0gRXJyRmF0YWwtIFBNRUludEVuYS0gQ1JTVmlzaWJs
ZS0KCQlSb290Q2FwOiBDUlNWaXNpYmxlLQoJCVJvb3RTdGE6IFBNRSBSZXFJRCAwMDAwLCBQ
TUVTdGF0dXMtIFBNRVBlbmRpbmctCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBS
YW5nZSBBQkNELCBUaW1lb3V0RGlzKyBBUklGd2QrCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBU
aW1lb3V0OiA2NW1zIHRvIDIxMG1zLCBUaW1lb3V0RGlzLSBBUklGd2QtCgkJTG5rQ3RsMjog
VGFyZ2V0IExpbmsgU3BlZWQ6IDVHVC9zLCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwg
U2VsZWN0YWJsZSBEZS1lbXBoYXNpczogLTMuNWRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5v
cm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlh
bmNlU09TLQoJCQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1
cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUt
LCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6
YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczog
W2EwXSBNU0k6IEVuYWJsZSsgQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdC0KCQlBZGRyZXNz
OiBmZWUzZjAwYyAgRGF0YTogNDAwMAoJQ2FwYWJpbGl0aWVzOiBbYjBdIFN1YnN5c3RlbTog
QWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIERldmljZSBbMTAwMjo1YTEx
XQoJQ2FwYWJpbGl0aWVzOiBbYjhdIEh5cGVyVHJhbnNwb3J0OiBNU0kgTWFwcGluZyBFbmFi
bGUrIEZpeGVkKwoJQ2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5m
b3JtYXRpb246IElEPTAwMDEgUmV2PTEgTGVuPTAxMCA8Pz4KCUNhcGFiaWxpdGllczogWzE5
MCB2MV0gQWNjZXNzIENvbnRyb2wgU2VydmljZXMKCQlBQ1NDYXA6CVNyY1ZhbGlkKyBUcmFu
c0JsaysgUmVxUmVkaXIrIENtcGx0UmVkaXIrIFVwc3RyZWFtRndkKyBFZ3Jlc3NDdHJsLSBE
aXJlY3RUcmFucysKCQlBQ1NDdGw6CVNyY1ZhbGlkKyBUcmFuc0Jsay0gUmVxUmVkaXIrIENt
cGx0UmVkaXIrIFVwc3RyZWFtRndkKyBFZ3Jlc3NDdHJsLSBEaXJlY3RUcmFucy0KCUtlcm5l
bCBkcml2ZXIgaW4gdXNlOiBwY2llcG9ydAoKMDA6MDYuMCBQQ0kgYnJpZGdlIFswNjA0XTog
QWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFJEODkwIFBDSSB0byBQQ0kg
YnJpZGdlIChQQ0kgZXhwcmVzcyBncHAgcG9ydCBGKSBbMTAwMjo1YTFhXSAocHJvZy1pZiAw
MCBbTm9ybWFsIGRlY29kZV0pCglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVyKyBTcGVj
Q3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBGYXN0
QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkItIFBhckVy
ci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJS
LSBJTlR4LQoJTGF0ZW5jeTogMCwgQ2FjaGUgTGluZSBTaXplOiA2NCBieXRlcwoJQnVzOiBw
cmltYXJ5PTAwLCBzZWNvbmRhcnk9MGMsIHN1Ym9yZGluYXRlPTBjLCBzZWMtbGF0ZW5jeT0w
CglJL08gYmVoaW5kIGJyaWRnZTogMDAwMGIwMDAtMDAwMGJmZmYKCU1lbW9yeSBiZWhpbmQg
YnJpZGdlOiBmZTYwMDAwMC1mZTZmZmZmZgoJUHJlZmV0Y2hhYmxlIG1lbW9yeSBiZWhpbmQg
YnJpZGdlOiAwMDAwMDAwMGJmZTAwMDAwLTAwMDAwMDAwYmZlZmZmZmYKCVNlY29uZGFyeSBz
dGF0dXM6IDY2TUh6LSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxU
QWJvcnQtIDxNQWJvcnQrIDxTRVJSLSA8UEVSUi0KCUJyaWRnZUN0bDogUGFyaXR5KyBTRVJS
KyBOb0lTQSsgVkdBLSBNQWJvcnQtID5SZXNldC0gRmFzdEIyQi0KCQlQcmlEaXNjVG1yLSBT
ZWNEaXNjVG1yLSBEaXNjVG1yU3RhdC0gRGlzY1RtclNFUlJFbi0KCUNhcGFiaWxpdGllczog
WzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJCUZsYWdzOiBQTUVDbGstIERTSS0g
RDEtIEQyLSBBdXhDdXJyZW50PTBtQSBQTUUoRDArLEQxLSxEMi0sRDNob3QrLEQzY29sZCsp
CgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQ
TUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAodjIpIFJvb3QgUG9ydCAoU2xvdCsp
LCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgMTI4IGJ5dGVzLCBQaGFudEZ1bmMgMCwg
TGF0ZW5jeSBMMHMgPDY0bnMsIEwxIDwxdXMKCQkJRXh0VGFnKyBSQkUrIEZMUmVzZXQtCgkJ
RGV2Q3RsOglSZXBvcnQgZXJyb3JzOiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0g
VW5zdXBwb3J0ZWQtCgkJCVJseGRPcmQrIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5v
U25vb3ArCgkJCU1heFBheWxvYWQgMTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDEyOCBieXRlcwoJ
CURldlN0YToJQ29yckVyci0gVW5jb3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVxLSBBdXhQ
d3ItIFRyYW5zUGVuZC0KCQlMbmtDYXA6CVBvcnQgIzIsIFNwZWVkIDVHVC9zLCBXaWR0aCB4
MSwgQVNQTSBMMHMgTDEsIExhdGVuY3kgTDAgPDF1cywgTDEgPDh1cwoJCQlDbG9ja1BNLSBT
dXJwcmlzZS0gTExBY3RSZXArIEJ3Tm90KwoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNC
IDY0IGJ5dGVzIERpc2FibGVkLSBSZXRyYWluLSBDb21tQ2xrKwoJCQlFeHRTeW5jaC0gQ2xv
Y2tQTS0gQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCAyLjVH
VC9zLCBXaWR0aCB4MSwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZSsgQldNZ210
KyBBQldNZ210LQoJCVNsdENhcDoJQXR0bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRuSW5kLSBQ
d3JJbmQtIEhvdFBsdWctIFN1cnByaXNlLQoJCQlTbG90ICM2LCBQb3dlckxpbWl0IDc1LjAw
MFc7IEludGVybG9jay0gTm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdy
Rmx0LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9s
OiBBdHRuSW5kIFVua25vd24sIFB3ckluZCBVbmtub3duLCBQb3dlci0gSW50ZXJsb2NrLQoJ
CVNsdFN0YToJU3RhdHVzOiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0LSBQcmVz
RGV0KyBJbnRlcmxvY2stCgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldCsgTGlua1N0YXRlKwoJ
CVJvb3RDdGw6IEVyckNvcnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVyckZhdGFsLSBQTUVJ
bnRFbmEtIENSU1Zpc2libGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0KCQlSb290U3RhOiBQ
TUUgUmVxSUQgMDAwMCwgUE1FU3RhdHVzLSBQTUVQZW5kaW5nLQoJCURldkNhcDI6IENvbXBs
ZXRpb24gVGltZW91dDogUmFuZ2UgQUJDRCwgVGltZW91dERpcysgQVJJRndkKwoJCURldkN0
bDI6IENvbXBsZXRpb24gVGltZW91dDogNjVtcyB0byAyMTBtcywgVGltZW91dERpcy0gQVJJ
RndkLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJDb21wbGlh
bmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC0zLjVkQgoJCQkgVHJh
bnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29t
cGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02
ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtMy41ZEIsIEVxdWFs
aXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkgRXF1YWxpemF0aW9u
UGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXphdGlvblJlcXVlc3Qt
CglDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENvdW50PTEvMSBNYXNrYWJsZS0g
NjRiaXQtCgkJQWRkcmVzczogZmVlM2YwMGMgIERhdGE6IDQwMDAKCUNhcGFiaWxpdGllczog
W2IwXSBTdWJzeXN0ZW06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBE
ZXZpY2UgWzEwMDI6NWExMV0KCUNhcGFiaWxpdGllczogW2I4XSBIeXBlclRyYW5zcG9ydDog
TVNJIE1hcHBpbmcgRW5hYmxlKyBGaXhlZCsKCUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVu
ZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CglD
YXBhYmlsaXRpZXM6IFsxOTAgdjFdIEFjY2VzcyBDb250cm9sIFNlcnZpY2VzCgkJQUNTQ2Fw
OglTcmNWYWxpZCsgVHJhbnNCbGsrIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3
ZCsgRWdyZXNzQ3RybC0gRGlyZWN0VHJhbnMrCgkJQUNTQ3RsOglTcmNWYWxpZCsgVHJhbnNC
bGstIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsgRWdyZXNzQ3RybC0gRGly
ZWN0VHJhbnMtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKCjAwOjA5LjAgUENJ
IGJyaWRnZSBbMDYwNF06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBS
RDg5MCBQQ0kgdG8gUENJIGJyaWRnZSAoUENJIGV4cHJlc3MgZ3BwIHBvcnQgSCkgWzEwMDI6
NWExY10gKHByb2ctaWYgMDAgW05vcm1hbCBkZWNvZGVdKQoJQ29udHJvbDogSS9PLSBNZW0r
IEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVw
cGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeCsKCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURG
LSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJv
cnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAsIENhY2hlIExpbmUgU2l6ZTog
NjQgYnl0ZXMKCUJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5PTBiLCBzdWJvcmRpbmF0ZT0w
Yiwgc2VjLWxhdGVuY3k9MAoJSS9PIGJlaGluZCBicmlkZ2U6IDAwMDBmMDAwLTAwMDAwZmZm
CglNZW1vcnkgYmVoaW5kIGJyaWRnZTogZmU1MDAwMDAtZmU1ZmZmZmYKCVByZWZldGNoYWJs
ZSBtZW1vcnkgYmVoaW5kIGJyaWRnZTogMDAwMDAwMDBmZmYwMDAwMC0wMDAwMDAwMDAwMGZm
ZmZmCglTZWNvbmRhcnkgc3RhdHVzOiA2Nk1Iei0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9
ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0KyA8U0VSUi0gPFBFUlItCglCcmlkZ2VD
dGw6IFBhcml0eSsgU0VSUisgTm9JU0ErIFZHQS0gTUFib3J0LSA+UmVzZXQtIEZhc3RCMkIt
CgkJUHJpRGlzY1Rtci0gU2VjRGlzY1Rtci0gRGlzY1RtclN0YXQtIERpc2NUbXJTRVJSRW4t
CglDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKCQlGbGFn
czogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1FKEQwKyxEMS0sRDIt
LEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBE
U2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIEV4cHJlc3MgKHYyKSBS
b290IFBvcnQgKFNsb3QrKSwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEyOCBieXRl
cywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw2NG5zLCBMMSA8MXVzCgkJCUV4dFRhZysg
UkJFKyBGTFJlc2V0LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5v
bi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkKyBFeHRUYWctIFBoYW50
RnVuYy0gQXV4UHdyLSBOb1Nub29wKwoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVh
ZFJlcSAxMjggYnl0ZXMKCQlEZXZTdGE6CUNvcnJFcnItIFVuY29yckVyci0gRmF0YWxFcnIt
IFVuc3VwcFJlcS0gQXV4UHdyLSBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICM0LCBTcGVl
ZCA1R1QvcywgV2lkdGggeDEsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDwxdXMsIEwxIDw4
dXMKCQkJQ2xvY2tQTS0gU3VycHJpc2UtIExMQWN0UmVwKyBCd05vdCsKCQlMbmtDdGw6CUFT
UE0gRGlzYWJsZWQ7IFJDQiA2NCBieXRlcyBEaXNhYmxlZC0gUmV0cmFpbi0gQ29tbUNsaysK
CQkJRXh0U3luY2gtIENsb2NrUE0tIEF1dFdpZERpcy0gQldJbnQtIEF1dEJXSW50LQoJCUxu
a1N0YToJU3BlZWQgNUdUL3MsIFdpZHRoIHgxLCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERM
QWN0aXZlKyBCV01nbXQrIEFCV01nbXQrCgkJU2x0Q2FwOglBdHRuQnRuLSBQd3JDdHJsLSBN
UkwtIEF0dG5JbmQtIFB3ckluZC0gSG90UGx1Zy0gU3VycHJpc2UtCgkJCVNsb3QgIzksIFBv
d2VyTGltaXQgNzUuMDAwVzsgSW50ZXJsb2NrLSBOb0NvbXBsKwoJCVNsdEN0bDoJRW5hYmxl
OiBBdHRuQnRuLSBQd3JGbHQtIE1STC0gUHJlc0RldC0gQ21kQ3BsdC0gSFBJcnEtIExpbmtD
aGctCgkJCUNvbnRyb2w6IEF0dG5JbmQgVW5rbm93biwgUHdySW5kIFVua25vd24sIFBvd2Vy
LSBJbnRlcmxvY2stCgkJU2x0U3RhOglTdGF0dXM6IEF0dG5CdG4tIFBvd2VyRmx0LSBNUkwt
IENtZENwbHQtIFByZXNEZXQrIEludGVybG9jay0KCQkJQ2hhbmdlZDogTVJMLSBQcmVzRGV0
KyBMaW5rU3RhdGUrCgkJUm9vdEN0bDogRXJyQ29ycmVjdGFibGUtIEVyck5vbi1GYXRhbC0g
RXJyRmF0YWwtIFBNRUludEVuYS0gQ1JTVmlzaWJsZS0KCQlSb290Q2FwOiBDUlNWaXNpYmxl
LQoJCVJvb3RTdGE6IFBNRSBSZXFJRCAwMDAwLCBQTUVTdGF0dXMtIFBNRVBlbmRpbmctCgkJ
RGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBSYW5nZSBBQkNELCBUaW1lb3V0RGlzKyBB
UklGd2QrCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBUaW1lb3V0OiA2NW1zIHRvIDIxMG1zLCBU
aW1lb3V0RGlzLSBBUklGd2QtCgkJTG5rQ3RsMjogVGFyZ2V0IExpbmsgU3BlZWQ6IDVHVC9z
LCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNpczog
LTMuNWRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5vcm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVu
dGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlhbmNlU09TLQoJCQkgQ29tcGxpYW5jZSBE
ZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6
IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUtLCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJ
CSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxp
emF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczogW2EwXSBNU0k6IEVuYWJsZSsgQ291bnQ9
MS8xIE1hc2thYmxlLSA2NGJpdC0KCQlBZGRyZXNzOiBmZWUzZjAwYyAgRGF0YTogNDAwMAoJ
Q2FwYWJpbGl0aWVzOiBbYjBdIFN1YnN5c3RlbTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBb
QU1EXSBuZWUgQVRJIERldmljZSBbMTAwMjo1YTExXQoJQ2FwYWJpbGl0aWVzOiBbYjhdIEh5
cGVyVHJhbnNwb3J0OiBNU0kgTWFwcGluZyBFbmFibGUrIEZpeGVkKwoJQ2FwYWJpbGl0aWVz
OiBbMTAwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5mb3JtYXRpb246IElEPTAwMDEgUmV2PTEg
TGVuPTAxMCA8Pz4KCUNhcGFiaWxpdGllczogWzE5MCB2MV0gQWNjZXNzIENvbnRyb2wgU2Vy
dmljZXMKCQlBQ1NDYXA6CVNyY1ZhbGlkKyBUcmFuc0JsaysgUmVxUmVkaXIrIENtcGx0UmVk
aXIrIFVwc3RyZWFtRndkKyBFZ3Jlc3NDdHJsLSBEaXJlY3RUcmFucysKCQlBQ1NDdGw6CVNy
Y1ZhbGlkKyBUcmFuc0Jsay0gUmVxUmVkaXIrIENtcGx0UmVkaXIrIFVwc3RyZWFtRndkKyBF
Z3Jlc3NDdHJsLSBEaXJlY3RUcmFucy0KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBwY2llcG9y
dAoKMDA6MGEuMCBQQ0kgYnJpZGdlIFswNjA0XTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBb
QU1EXSBuZWUgQVRJIFJEODkwIFBDSSB0byBQQ0kgYnJpZGdlIChleHRlcm5hbCBnZngxIHBv
cnQgQSkgWzEwMDI6NWExZF0gKHByb2ctaWYgMDAgW05vcm1hbCBkZWNvZGVdKQoJQ29udHJv
bDogSS9PLSBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0g
UGFyRXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeCsKCVN0YXR1czogQ2Fw
KyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxU
QWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAsIENhY2hl
IExpbmUgU2l6ZTogNjQgYnl0ZXMKCUJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5PTBhLCBz
dWJvcmRpbmF0ZT0wYSwgc2VjLWxhdGVuY3k9MAoJSS9PIGJlaGluZCBicmlkZ2U6IDAwMDBm
MDAwLTAwMDAwZmZmCglNZW1vcnkgYmVoaW5kIGJyaWRnZTogZmUyMDAwMDAtZmUzZmZmZmYK
CVByZWZldGNoYWJsZSBtZW1vcnkgYmVoaW5kIGJyaWRnZTogMDAwMDAwMDBmZmYwMDAwMC0w
MDAwMDAwMDAwMGZmZmZmCglTZWNvbmRhcnkgc3RhdHVzOiA2Nk1Iei0gRmFzdEIyQi0gUGFy
RXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0KyA8U0VSUi0gPFBF
UlItCglCcmlkZ2VDdGw6IFBhcml0eSsgU0VSUisgTm9JU0ErIFZHQS0gTUFib3J0LSA+UmVz
ZXQtIEZhc3RCMkItCgkJUHJpRGlzY1Rtci0gU2VjRGlzY1Rtci0gRGlzY1RtclN0YXQtIERp
c2NUbXJTRVJSRW4tCglDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJz
aW9uIDMKCQlGbGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0wbUEgUE1F
KEQwKyxEMS0sRDItLEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQ
TUUtRW5hYmxlLSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIEV4
cHJlc3MgKHYyKSBSb290IFBvcnQgKFNsb3QrKSwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXls
b2FkIDEyOCBieXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw2NG5zLCBMMSA8MXVz
CgkJCUV4dFRhZysgUkJFKyBGTFJlc2V0LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29y
cmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkKyBF
eHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29wKwoJCQlNYXhQYXlsb2FkIDEyOCBi
eXRlcywgTWF4UmVhZFJlcSAxMjggYnl0ZXMKCQlEZXZTdGE6CUNvcnJFcnItIFVuY29yckVy
ci0gRmF0YWxFcnItIFVuc3VwcFJlcS0gQXV4UHdyLSBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQ
b3J0ICM1LCBTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MSwgQVNQTSBMMHMgTDEsIExhdGVuY3kg
TDAgPDF1cywgTDEgPDh1cwoJCQlDbG9ja1BNLSBTdXJwcmlzZS0gTExBY3RSZXArIEJ3Tm90
KwoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVkLSBSZXRy
YWluLSBDb21tQ2xrLQoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBCV0ludC0g
QXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MSwgVHJFcnItIFRy
YWluLSBTbG90Q2xrKyBETEFjdGl2ZSsgQldNZ210KyBBQldNZ210LQoJCVNsdENhcDoJQXR0
bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRuSW5kLSBQd3JJbmQtIEhvdFBsdWctIFN1cnByaXNl
LQoJCQlTbG90ICMyLCBQb3dlckxpbWl0IDc1LjAwMFc7IEludGVybG9jay0gTm9Db21wbCsK
CQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdyRmx0LSBNUkwtIFByZXNEZXQtIENtZENw
bHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBBdHRuSW5kIFVua25vd24sIFB3cklu
ZCBVbmtub3duLCBQb3dlci0gSW50ZXJsb2NrLQoJCVNsdFN0YToJU3RhdHVzOiBBdHRuQnRu
LSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0LSBQcmVzRGV0KyBJbnRlcmxvY2stCgkJCUNoYW5n
ZWQ6IE1STC0gUHJlc0RldCsgTGlua1N0YXRlKwoJCVJvb3RDdGw6IEVyckNvcnJlY3RhYmxl
LSBFcnJOb24tRmF0YWwtIEVyckZhdGFsLSBQTUVJbnRFbmEtIENSU1Zpc2libGUtCgkJUm9v
dENhcDogQ1JTVmlzaWJsZS0KCQlSb290U3RhOiBQTUUgUmVxSUQgMDAwMCwgUE1FU3RhdHVz
LSBQTUVQZW5kaW5nLQoJCURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogUmFuZ2UgQUJD
RCwgVGltZW91dERpcysgQVJJRndkKwoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDog
NjVtcyB0byAyMTBtcywgVGltZW91dERpcy0gQVJJRndkLQoJCUxua0N0bDI6IFRhcmdldCBM
aW5rIFNwZWVkOiAyLjVHVC9zLCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0
YWJsZSBEZS1lbXBoYXNpczogLTZkQgoJCQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3Bl
cmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0K
CQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERl
LWVtcGhhc2lzIExldmVsOiAtNmRCLCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXph
dGlvblBoYXNlMS0KCQkJIEVxdWFsaXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNl
My0sIExpbmtFcXVhbGl6YXRpb25SZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTog
RW5hYmxlKyBDb3VudD0xLzEgTWFza2FibGUtIDY0Yml0LQoJCUFkZHJlc3M6IGZlZTNmMDBj
ICBEYXRhOiA0MDAwCglDYXBhYmlsaXRpZXM6IFtiMF0gU3Vic3lzdGVtOiBBZHZhbmNlZCBN
aWNybyBEZXZpY2VzIFtBTURdIG5lZSBBVEkgRGV2aWNlIFsxMDAyOjVhMTFdCglDYXBhYmls
aXRpZXM6IFtiOF0gSHlwZXJUcmFuc3BvcnQ6IE1TSSBNYXBwaW5nIEVuYWJsZSsgRml4ZWQr
CglDYXBhYmlsaXRpZXM6IFsxMDAgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjog
SUQ9MDAwMSBSZXY9MSBMZW49MDEwIDw/PgoJQ2FwYWJpbGl0aWVzOiBbMTkwIHYxXSBBY2Nl
c3MgQ29udHJvbCBTZXJ2aWNlcwoJCUFDU0NhcDoJU3JjVmFsaWQrIFRyYW5zQmxrKyBSZXFS
ZWRpcisgQ21wbHRSZWRpcisgVXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRyYW5z
KwoJCUFDU0N0bDoJU3JjVmFsaWQrIFRyYW5zQmxrLSBSZXFSZWRpcisgQ21wbHRSZWRpcisg
VXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRyYW5zLQoJS2VybmVsIGRyaXZlciBp
biB1c2U6IHBjaWVwb3J0CgowMDowYi4wIFBDSSBicmlkZ2UgWzA2MDRdOiBBZHZhbmNlZCBN
aWNybyBEZXZpY2VzIFtBTURdIG5lZSBBVEkgUkQ4OTAgUENJIHRvIFBDSSBicmlkZ2UgKE5C
LVNCIGxpbmspIFsxMDAyOjVhMWZdIChwcm9nLWlmIDAwIFtOb3JtYWwgZGVjb2RlXSkKCUNv
bnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25v
b3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgrCglTdGF0dXM6
IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0
LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiAwLCBD
YWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHByaW1hcnk9MDAsIHNlY29uZGFyeT0w
OSwgc3Vib3JkaW5hdGU9MDksIHNlYy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQgYnJpZGdlOiAw
MDAwYTAwMC0wMDAwYWZmZgoJTWVtb3J5IGJlaGluZCBicmlkZ2U6IGZlMTAwMDAwLWZlMWZm
ZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJlaGluZCBicmlkZ2U6IDAwMDAwMDAwYTAwMDAw
MDAtMDAwMDAwMDBhZmZmZmZmZgoJU2Vjb25kYXJ5IHN0YXR1czogNjZNSHotIEZhc3RCMkIt
IFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydCsgPFNFUlIt
IDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkrIFNFUlIrIE5vSVNBKyBWR0EtIE1BYm9ydC0g
PlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NUbXItIFNlY0Rpc2NUbXItIERpc2NUbXJTdGF0
LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQg
dmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1B
IFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQwIE5vU29mdFJz
dC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzU4
XSBFeHByZXNzICh2MikgUm9vdCBQb3J0IChTbG90KyksIE1TSSAwMAoJCURldkNhcDoJTWF4
UGF5bG9hZCAxMjggYnl0ZXMsIFBoYW50RnVuYyAwLCBMYXRlbmN5IEwwcyA8NjRucywgTDEg
PDF1cwoJCQlFeHRUYWcrIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6CVJlcG9ydCBlcnJvcnM6
IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0KCQkJUmx4ZE9y
ZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsKCQkJTWF4UGF5bG9hZCAx
MjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJyLSBVbmNv
cnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3ci0gVHJhbnNQZW5kLQoJCUxua0Nh
cDoJUG9ydCAjMCwgU3BlZWQgNUdUL3MsIFdpZHRoIHg4LCBBU1BNIEwwcyBMMSwgTGF0ZW5j
eSBMMCA8MXVzLCBMMSA8OHVzCgkJCUNsb2NrUE0tIFN1cnByaXNlLSBMTEFjdFJlcCsgQndO
b3QrCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQgYnl0ZXMgRGlzYWJsZWQtIFJl
dHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9ja1BNLSBBdXRXaWREaXMtIEJXSW50
LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdUL3MsIFdpZHRoIHg4LCBUckVyci0g
VHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlKyBCV01nbXQrIEFCV01nbXQtCgkJU2x0Q2FwOglB
dHRuQnRuLSBQd3JDdHJsLSBNUkwtIEF0dG5JbmQtIFB3ckluZC0gSG90UGx1Zy0gU3VycHJp
c2UtCgkJCVNsb3QgIzUsIFBvd2VyTGltaXQgMjUuMDAwVzsgSW50ZXJsb2NrLSBOb0NvbXBs
KwoJCVNsdEN0bDoJRW5hYmxlOiBBdHRuQnRuLSBQd3JGbHQtIE1STC0gUHJlc0RldC0gQ21k
Q3BsdC0gSFBJcnEtIExpbmtDaGctCgkJCUNvbnRyb2w6IEF0dG5JbmQgVW5rbm93biwgUHdy
SW5kIFVua25vd24sIFBvd2VyLSBJbnRlcmxvY2stCgkJU2x0U3RhOglTdGF0dXM6IEF0dG5C
dG4tIFBvd2VyRmx0LSBNUkwtIENtZENwbHQtIFByZXNEZXQrIEludGVybG9jay0KCQkJQ2hh
bmdlZDogTVJMLSBQcmVzRGV0KyBMaW5rU3RhdGUrCgkJUm9vdEN0bDogRXJyQ29ycmVjdGFi
bGUtIEVyck5vbi1GYXRhbC0gRXJyRmF0YWwtIFBNRUludEVuYS0gQ1JTVmlzaWJsZS0KCQlS
b290Q2FwOiBDUlNWaXNpYmxlLQoJCVJvb3RTdGE6IFBNRSBSZXFJRCAwMDAwLCBQTUVTdGF0
dXMtIFBNRVBlbmRpbmctCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBSYW5nZSBB
QkNELCBUaW1lb3V0RGlzKyBBUklGd2QrCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBUaW1lb3V0
OiA2NW1zIHRvIDIxMG1zLCBUaW1lb3V0RGlzLSBBUklGd2QtCgkJTG5rQ3RsMjogVGFyZ2V0
IExpbmsgU3BlZWQ6IDVHVC9zLCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0
YWJsZSBEZS1lbXBoYXNpczogLTMuNWRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5vcm1hbCBP
cGVyYXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlhbmNlU09T
LQoJCQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1cnJlbnQg
RGUtZW1waGFzaXMgTGV2ZWw6IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUtLCBFcXVh
bGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6YXRpb25Q
aGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczogW2EwXSBN
U0k6IEVuYWJsZSsgQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdC0KCQlBZGRyZXNzOiBmZWUz
ZjAwYyAgRGF0YTogNDAwMAoJQ2FwYWJpbGl0aWVzOiBbYjBdIFN1YnN5c3RlbTogQWR2YW5j
ZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIERldmljZSBbMTAwMjo1YTExXQoJQ2Fw
YWJpbGl0aWVzOiBbYjhdIEh5cGVyVHJhbnNwb3J0OiBNU0kgTWFwcGluZyBFbmFibGUrIEZp
eGVkKwoJQ2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5mb3JtYXRp
b246IElEPTAwMDEgUmV2PTEgTGVuPTAxMCA8Pz4KCUNhcGFiaWxpdGllczogWzE5MCB2MV0g
QWNjZXNzIENvbnRyb2wgU2VydmljZXMKCQlBQ1NDYXA6CVNyY1ZhbGlkKyBUcmFuc0Jsaysg
UmVxUmVkaXIrIENtcGx0UmVkaXIrIFVwc3RyZWFtRndkKyBFZ3Jlc3NDdHJsLSBEaXJlY3RU
cmFucysKCQlBQ1NDdGw6CVNyY1ZhbGlkKyBUcmFuc0Jsay0gUmVxUmVkaXIrIENtcGx0UmVk
aXIrIFVwc3RyZWFtRndkKyBFZ3Jlc3NDdHJsLSBEaXJlY3RUcmFucy0KCUtlcm5lbCBkcml2
ZXIgaW4gdXNlOiBwY2llcG9ydAoKMDA6MGMuMCBQQ0kgYnJpZGdlIFswNjA0XTogQWR2YW5j
ZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFJEODkwUyBQQ0kgRXhwcmVzcyBicmlk
Z2UgZm9yIEdQUDIgcG9ydCAxIFsxMDAyOjVhMjBdIChwcm9nLWlmIDAwIFtOb3JtYWwgZGVj
b2RlXSkKCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lO
Vi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgr
CglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFz
dCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRl
bmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHByaW1hcnk9MDAsIHNl
Y29uZGFyeT0wNSwgc3Vib3JkaW5hdGU9MDgsIHNlYy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQg
YnJpZGdlOiAwMDAwODAwMC0wMDAwOWZmZgoJTWVtb3J5IGJlaGluZCBicmlkZ2U6IGZkZTAw
MDAwLWZlMGZmZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJlaGluZCBicmlkZ2U6IDAwMDAw
MDAwZmZmMDAwMDAtMDAwMDAwMDAwMDBmZmZmZgoJU2Vjb25kYXJ5IHN0YXR1czogNjZNSHot
IEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9y
dCsgPFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkrIFNFUlIrIE5vSVNBKyBWR0Et
IE1BYm9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NUbXItIFNlY0Rpc2NUbXItIERp
c2NUbXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1h
bmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1
cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQw
IE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxp
dGllczogWzU4XSBFeHByZXNzICh2MikgUm9vdCBQb3J0IChTbG90KyksIE1TSSAwMAoJCURl
dkNhcDoJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIFBoYW50RnVuYyAwLCBMYXRlbmN5IEwwcyA8
NjRucywgTDEgPDF1cwoJCQlFeHRUYWcrIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6CVJlcG9y
dCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0K
CQkJUmx4ZE9yZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsKCQkJTWF4
UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJRGV2U3RhOglDb3Jy
RXJyLSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3ci0gVHJhbnNQZW5k
LQoJCUxua0NhcDoJUG9ydCAjMSwgU3BlZWQgNUdUL3MsIFdpZHRoIHg4LCBBU1BNIEwwcyBM
MSwgTGF0ZW5jeSBMMCA8MXVzLCBMMSA8OHVzCgkJCUNsb2NrUE0tIFN1cnByaXNlLSBMTEFj
dFJlcCsgQndOb3QrCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQgYnl0ZXMgRGlz
YWJsZWQtIFJldHJhaW4tIENvbW1DbGstCgkJCUV4dFN5bmNoLSBDbG9ja1BNLSBBdXRXaWRE
aXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDVHVC9zLCBXaWR0aCB4NCwg
VHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZSsgQldNZ210KyBBQldNZ210LQoJCVNs
dENhcDoJQXR0bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRuSW5kLSBQd3JJbmQtIEhvdFBsdWct
IFN1cnByaXNlLQoJCQlTbG90ICM2LCBQb3dlckxpbWl0IDI1LjAwMFc7IEludGVybG9jay0g
Tm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdyRmx0LSBNUkwtIFByZXNE
ZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBBdHRuSW5kIFVua25v
d24sIFB3ckluZCBVbmtub3duLCBQb3dlci0gSW50ZXJsb2NrLQoJCVNsdFN0YToJU3RhdHVz
OiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0LSBQcmVzRGV0KyBJbnRlcmxvY2st
CgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldCsgTGlua1N0YXRlKwoJCVJvb3RDdGw6IEVyckNv
cnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVyckZhdGFsLSBQTUVJbnRFbmEtIENSU1Zpc2li
bGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0KCQlSb290U3RhOiBQTUUgUmVxSUQgMDAwMCwg
UE1FU3RhdHVzLSBQTUVQZW5kaW5nLQoJCURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDog
UmFuZ2UgQUJDRCwgVGltZW91dERpcysgQVJJRndkKwoJCURldkN0bDI6IENvbXBsZXRpb24g
VGltZW91dDogNjVtcyB0byAyMTBtcywgVGltZW91dERpcy0gQVJJRndkLQoJCUxua0N0bDI6
IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJDb21wbGlhbmNlLSBTcGVlZERpcy0s
IFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC0zLjVkQgoJCQkgVHJhbnNtaXQgTWFyZ2luOiBO
b3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxp
YW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBD
dXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtMy41ZEIsIEVxdWFsaXphdGlvbkNvbXBsZXRl
LSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkgRXF1YWxpemF0aW9uUGhhc2UyLSwgRXF1YWxp
emF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXphdGlvblJlcXVlc3QtCglDYXBhYmlsaXRpZXM6
IFthMF0gTVNJOiBFbmFibGUrIENvdW50PTEvMSBNYXNrYWJsZS0gNjRiaXQtCgkJQWRkcmVz
czogZmVlM2YwMGMgIERhdGE6IDQwMDAKCUNhcGFiaWxpdGllczogW2IwXSBTdWJzeXN0ZW06
IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBEZXZpY2UgWzEwMDI6NWEx
MV0KCUNhcGFiaWxpdGllczogW2I4XSBIeXBlclRyYW5zcG9ydDogTVNJIE1hcHBpbmcgRW5h
YmxlKyBGaXhlZCsKCUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9yIFNwZWNpZmljIElu
Zm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CglDYXBhYmlsaXRpZXM6IFsx
OTAgdjFdIEFjY2VzcyBDb250cm9sIFNlcnZpY2VzCgkJQUNTQ2FwOglTcmNWYWxpZCsgVHJh
bnNCbGsrIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsgRWdyZXNzQ3RybC0g
RGlyZWN0VHJhbnMrCgkJQUNTQ3RsOglTcmNWYWxpZCsgVHJhbnNCbGstIFJlcVJlZGlyKyBD
bXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsgRWdyZXNzQ3RybC0gRGlyZWN0VHJhbnMtCglLZXJu
ZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKCjAwOjBkLjAgUENJIGJyaWRnZSBbMDYwNF06
IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBSRDg5MCBQQ0kgdG8gUENJ
IGJyaWRnZSAoZXh0ZXJuYWwgZ2Z4MSBwb3J0IEIpIFsxMDAyOjVhMWVdIChwcm9nLWlmIDAw
IFtOb3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTy0gTWVtKyBCdXNNYXN0ZXIrIFNwZWND
eWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RC
MkItIERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJy
LSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlIt
IElOVHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHBy
aW1hcnk9MDAsIHNlY29uZGFyeT0wNCwgc3Vib3JkaW5hdGU9MDQsIHNlYy1sYXRlbmN5PTAK
CUkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwZjAwMC0wMDAwMGZmZgoJTWVtb3J5IGJlaGluZCBi
cmlkZ2U6IGZkZDAwMDAwLWZkZGZmZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJlaGluZCBi
cmlkZ2U6IDAwMDAwMDAwZmZmMDAwMDAtMDAwMDAwMDAwMDBmZmZmZgoJU2Vjb25kYXJ5IHN0
YXR1czogNjZNSHotIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRB
Ym9ydC0gPE1BYm9ydCsgPFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkrIFNFUlIr
IE5vSVNBKyBWR0EtIE1BYm9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NUbXItIFNl
Y0Rpc2NUbXItIERpc2NUbXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0aWVzOiBb
NTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBE
MS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykK
CQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBN
RS0KCUNhcGFiaWxpdGllczogWzU4XSBFeHByZXNzICh2MikgUm9vdCBQb3J0IChTbG90Kyks
IE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIFBoYW50RnVuYyAwLCBM
YXRlbmN5IEwwcyA8NjRucywgTDEgPDF1cwoJCQlFeHRUYWcrIFJCRSsgRkxSZXNldC0KCQlE
ZXZDdGw6CVJlcG9ydCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBV
bnN1cHBvcnRlZC0KCQkJUmx4ZE9yZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9T
bm9vcCsKCQkJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5dGVzCgkJ
RGV2U3RhOglDb3JyRXJyLSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3
ci0gVHJhbnNQZW5kLQoJCUxua0NhcDoJUG9ydCAjMCwgU3BlZWQgNUdUL3MsIFdpZHRoIHg0
LCBBU1BNIEwwcyBMMSwgTGF0ZW5jeSBMMCA8MXVzLCBMMSA8OHVzCgkJCUNsb2NrUE0tIFN1
cnByaXNlLSBMTEFjdFJlcCsgQndOb3QrCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0Ig
NjQgYnl0ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9j
a1BNLSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDVHVC9z
LCBXaWR0aCB4MSwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZSsgQldNZ210KyBB
QldNZ210KwoJCVNsdENhcDoJQXR0bkJ0bi0gUHdyQ3RybC0gTVJMLSBBdHRuSW5kLSBQd3JJ
bmQtIEhvdFBsdWctIFN1cnByaXNlLQoJCQlTbG90ICM0LCBQb3dlckxpbWl0IDc1LjAwMFc7
IEludGVybG9jay0gTm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdyRmx0
LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBB
dHRuSW5kIFVua25vd24sIFB3ckluZCBVbmtub3duLCBQb3dlci0gSW50ZXJsb2NrLQoJCVNs
dFN0YToJU3RhdHVzOiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBDbWRDcGx0LSBQcmVzRGV0
KyBJbnRlcmxvY2stCgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldCsgTGlua1N0YXRlKwoJCVJv
b3RDdGw6IEVyckNvcnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVyckZhdGFsLSBQTUVJbnRF
bmEtIENSU1Zpc2libGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0KCQlSb290U3RhOiBQTUUg
UmVxSUQgMDAwMCwgUE1FU3RhdHVzLSBQTUVQZW5kaW5nLQoJCURldkNhcDI6IENvbXBsZXRp
b24gVGltZW91dDogUmFuZ2UgQUJDRCwgVGltZW91dERpcysgQVJJRndkKwoJCURldkN0bDI6
IENvbXBsZXRpb24gVGltZW91dDogNjVtcyB0byAyMTBtcywgVGltZW91dERpcy0gQVJJRndk
LQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJDb21wbGlhbmNl
LSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC0zLjVkQgoJCQkgVHJhbnNt
aXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29tcGxp
YW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02ZEIK
CQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtMy41ZEIsIEVxdWFsaXph
dGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkgRXF1YWxpemF0aW9uUGhh
c2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXphdGlvblJlcXVlc3QtCglD
YXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENvdW50PTEvMSBNYXNrYWJsZS0gNjRi
aXQtCgkJQWRkcmVzczogZmVlM2YwMGMgIERhdGE6IDQwMDAKCUNhcGFiaWxpdGllczogW2Iw
XSBTdWJzeXN0ZW06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBEZXZp
Y2UgWzEwMDI6NWExMV0KCUNhcGFiaWxpdGllczogW2I4XSBIeXBlclRyYW5zcG9ydDogTVNJ
IE1hcHBpbmcgRW5hYmxlKyBGaXhlZCsKCUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9y
IFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CglDYXBh
YmlsaXRpZXM6IFsxOTAgdjFdIEFjY2VzcyBDb250cm9sIFNlcnZpY2VzCgkJQUNTQ2FwOglT
cmNWYWxpZCsgVHJhbnNCbGsrIFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsg
RWdyZXNzQ3RybC0gRGlyZWN0VHJhbnMrCgkJQUNTQ3RsOglTcmNWYWxpZCsgVHJhbnNCbGst
IFJlcVJlZGlyKyBDbXBsdFJlZGlyKyBVcHN0cmVhbUZ3ZCsgRWdyZXNzQ3RybC0gRGlyZWN0
VHJhbnMtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKCjAwOjExLjAgU0FUQSBj
b250cm9sbGVyIFswMTA2XTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJ
IFNCN3gwL1NCOHgwL1NCOXgwIFNBVEEgQ29udHJvbGxlciBbQUhDSSBtb2RlXSBbMTAwMjo0
MzkxXSAocmV2IDQwKSAocHJvZy1pZiAwMSBbQUhDSSAxLjBdKQoJU3Vic3lzdGVtOiBNaWNy
by1TdGFyIEludGVybmF0aW9uYWwgQ28uLCBMdGQuIERldmljZSBbMTQ2Mjo3NjQwXQoJQ29u
dHJvbDogSS9PKyBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9v
cC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeCsKCVN0YXR1czog
Q2FwKyA2Nk1IeisgVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1tZWRpdW0gPlRBYm9y
dC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogNjQs
IENhY2hlIExpbmUgU2l6ZTogNjQgYnl0ZXMKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRv
IElSUSAxMTQKCVJlZ2lvbiAwOiBJL08gcG9ydHMgYXQgMzAwMCBbc2l6ZT04XQoJUmVnaW9u
IDE6IEkvTyBwb3J0cyBhdCAyMDAwIFtzaXplPTRdCglSZWdpb24gMjogSS9PIHBvcnRzIGF0
IDEwMDAgW3NpemU9OF0KCVJlZ2lvbiAzOiBJL08gcG9ydHMgYXQgNDgwMCBbc2l6ZT00XQoJ
UmVnaW9uIDQ6IEkvTyBwb3J0cyBhdCAzODAwIFtzaXplPTE2XQoJUmVnaW9uIDU6IE1lbW9y
eSBhdCBmZGJmZjAwMCAoMzItYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xS10KCUNh
cGFiaWxpdGllczogWzUwXSBNU0k6IEVuYWJsZSsgQ291bnQ9OC84IE1hc2thYmxlLSA2NGJp
dCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTAxMDBjICBEYXRhOiA0MDAwCglDYXBhYmlsaXRp
ZXM6IFs3MF0gU0FUQSBIQkEgdjEuMCBJbkNmZ1NwYWNlCglDYXBhYmlsaXRpZXM6IFthNF0g
UENJIEFkdmFuY2VkIEZlYXR1cmVzCgkJQUZDYXA6IFRQKyBGTFIrCgkJQUZDdHJsOiBGTFIt
CgkJQUZTdGF0dXM6IFRQLQoJS2VybmVsIGRyaXZlciBpbiB1c2U6IGFoY2kKCjAwOjEyLjAg
VVNCIGNvbnRyb2xsZXIgWzBjMDNdOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzIFtBTURdIG5l
ZSBBVEkgU0I3eDAvU0I4eDAvU0I5eDAgVVNCIE9IQ0kwIENvbnRyb2xsZXIgWzEwMDI6NDM5
N10gKHByb2ctaWYgMTAgW09IQ0ldKQoJU3Vic3lzdGVtOiBNaWNyby1TdGFyIEludGVybmF0
aW9uYWwgQ28uLCBMdGQuIERldmljZSBbMTQ2Mjo3NjQwXQoJQ29udHJvbDogSS9PKyBNZW0r
IEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WKyBWR0FTbm9vcC0gUGFyRXJyLSBTdGVw
cGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwLSA2Nk1IeisgVURG
LSBGYXN0QjJCKyBQYXJFcnItIERFVlNFTD1tZWRpdW0gPlRBYm9ydC0gPFRBYm9ydC0gPE1B
Ym9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogNjQsIENhY2hlIExpbmUgU2l6
ZTogNjQgYnl0ZXMKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAxOAoJUmVnaW9u
IDA6IE1lbW9yeSBhdCBmZGJmNzAwMCAoMzItYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6
ZT00S10KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBvaGNpLXBjaQoKMDA6MTIuMiBVU0IgY29u
dHJvbGxlciBbMGMwM106IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBT
Qjd4MC9TQjh4MC9TQjl4MCBVU0IgRUhDSSBDb250cm9sbGVyIFsxMDAyOjQzOTZdIChwcm9n
LWlmIDIwIFtFSENJXSkKCVN1YnN5c3RlbTogTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsIENv
LiwgTHRkLiBEZXZpY2UgWzE0NjI6NzY0MF0KCUNvbnRyb2w6IEkvTy0gTWVtKyBCdXNNYXN0
ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVisgVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNF
UlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHorIFVERi0gRmFzdEIy
QisgUGFyRXJyLSBERVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5T
RVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDY0LCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5
dGVzCglJbnRlcnJ1cHQ6IHBpbiBCIHJvdXRlZCB0byBJUlEgMTcKCVJlZ2lvbiAwOiBNZW1v
cnkgYXQgZmRiZmY0MDAgKDMyLWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW3NpemU9MjU2XQoJ
Q2FwYWJpbGl0aWVzOiBbYzBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAyCgkJRmxhZ3M6
IFBNRUNsay0gRFNJLSBEMSsgRDIrIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDErLEQyKyxE
M2hvdCssRDNjb2xkLSkKCQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNl
bD0wIERTY2FsZT0wIFBNRS0KCQlCcmlkZ2U6IFBNLSBCMysKCUNhcGFiaWxpdGllczogW2U0
XSBEZWJ1ZyBwb3J0OiBCQVI9MSBvZmZzZXQ9MDBlMAoJS2VybmVsIGRyaXZlciBpbiB1c2U6
IGVoY2ktcGNpCgowMDoxMy4wIFVTQiBjb250cm9sbGVyIFswYzAzXTogQWR2YW5jZWQgTWlj
cm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFNCN3gwL1NCOHgwL1NCOXgwIFVTQiBPSENJMCBD
b250cm9sbGVyIFsxMDAyOjQzOTddIChwcm9nLWlmIDEwIFtPSENJXSkKCVN1YnN5c3RlbTog
TWljcm8tU3RhciBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLiBEZXZpY2UgWzE0NjI6NzY0MF0K
CUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVisgVkdB
U25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0
dXM6IENhcC0gNjZNSHorIFVERi0gRmFzdEIyQisgUGFyRXJyLSBERVZTRUw9bWVkaXVtID5U
QWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6
IDY0LCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglJbnRlcnJ1cHQ6IHBpbiBBIHJvdXRl
ZCB0byBJUlEgMTgKCVJlZ2lvbiAwOiBNZW1vcnkgYXQgZmRiZmMwMDAgKDMyLWJpdCwgbm9u
LXByZWZldGNoYWJsZSkgW3NpemU9NEtdCglLZXJuZWwgZHJpdmVyIGluIHVzZTogb2hjaS1w
Y2kKCjAwOjEzLjIgVVNCIGNvbnRyb2xsZXIgWzBjMDNdOiBBZHZhbmNlZCBNaWNybyBEZXZp
Y2VzIFtBTURdIG5lZSBBVEkgU0I3eDAvU0I4eDAvU0I5eDAgVVNCIEVIQ0kgQ29udHJvbGxl
ciBbMTAwMjo0Mzk2XSAocHJvZy1pZiAyMCBbRUhDSV0pCglTdWJzeXN0ZW06IE1pY3JvLVN0
YXIgSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4gRGV2aWNlIFsxNDYyOjc2NDBdCglDb250cm9s
OiBJL08tIE1lbSsgQnVzTWFzdGVyKyBTcGVjQ3ljbGUtIE1lbVdJTlYrIFZHQVNub29wLSBQ
YXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBGYXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXAr
IDY2TUh6KyBVREYtIEZhc3RCMkIrIFBhckVyci0gREVWU0VMPW1lZGl1bSA+VEFib3J0LSA8
VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiA2NCwgQ2Fj
aGUgTGluZSBTaXplOiA2NCBieXRlcwoJSW50ZXJydXB0OiBwaW4gQiByb3V0ZWQgdG8gSVJR
IDE3CglSZWdpb24gMDogTWVtb3J5IGF0IGZkYmZmODAwICgzMi1iaXQsIG5vbi1wcmVmZXRj
aGFibGUpIFtzaXplPTI1Nl0KCUNhcGFiaWxpdGllczogW2MwXSBQb3dlciBNYW5hZ2VtZW50
IHZlcnNpb24gMgoJCUZsYWdzOiBQTUVDbGstIERTSS0gRDErIEQyKyBBdXhDdXJyZW50PTBt
QSBQTUUoRDArLEQxKyxEMissRDNob3QrLEQzY29sZC0pCgkJU3RhdHVzOiBEMCBOb1NvZnRS
c3QtIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQTUUtCgkJQnJpZGdlOiBQTS0gQjMr
CglDYXBhYmlsaXRpZXM6IFtlNF0gRGVidWcgcG9ydDogQkFSPTEgb2Zmc2V0PTAwZTAKCUtl
cm5lbCBkcml2ZXIgaW4gdXNlOiBlaGNpLXBjaQoKMDA6MTQuMCBTTUJ1cyBbMGMwNV06IEFk
dmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBTQngwMCBTTUJ1cyBDb250cm9s
bGVyIFsxMDAyOjQzODVdIChyZXYgNDEpCglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVy
LSBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJS
LSBGYXN0QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBDYXAtIDY2TUh6KyBVREYtIEZhc3RCMkIt
IFBhckVyci0gREVWU0VMPW1lZGl1bSA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VS
Ui0gPFBFUlItIElOVHgtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGlpeDRfc21idXMKCjAw
OjE0LjIgQXVkaW8gZGV2aWNlIFswNDAzXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1E
XSBuZWUgQVRJIFNCeDAwIEF6YWxpYSAoSW50ZWwgSERBKSBbMTAwMjo0MzgzXSAocmV2IDQw
KQoJU3Vic3lzdGVtOiBNaWNyby1TdGFyIEludGVybmF0aW9uYWwgQ28uLCBMdGQuIERldmlj
ZSBbMTQ2Mjo3NjQwXQoJQ29udHJvbDogSS9PLSBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xl
LSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0g
RGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERF
VlNFTD1zbG93ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5U
eC0KCUxhdGVuY3k6IDY0LCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglJbnRlcnJ1cHQ6
IHBpbiBBIHJvdXRlZCB0byBJUlEgMTYKCVJlZ2lvbiAwOiBNZW1vcnkgYXQgZmRiZjgwMDAg
KDY0LWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW3NpemU9MTZLXQoJQ2FwYWJpbGl0aWVzOiBb
NTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAyCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBE
MS0gRDItIEF1eEN1cnJlbnQ9NTVtQSBQTUUoRDArLEQxLSxEMi0sRDNob3QrLEQzY29sZCsp
CgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQ
TUUtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogc25kX2hkYV9pbnRlbAoKMDA6MTQuMyBJU0Eg
YnJpZGdlIFswNjAxXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFNC
N3gwL1NCOHgwL1NCOXgwIExQQyBob3N0IGNvbnRyb2xsZXIgWzEwMDI6NDM5ZF0gKHJldiA0
MCkKCVN1YnN5c3RlbTogTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLiBEZXZp
Y2UgWzE0NjI6NzY0MF0KCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNs
ZSsgTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlItIEZhc3RCMkIt
IERpc0lOVHgtCglTdGF0dXM6IENhcC0gNjZNSHorIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBE
RVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0g
SU5UeC0KCUxhdGVuY3k6IDAKCjAwOjE0LjQgUENJIGJyaWRnZSBbMDYwNF06IEFkdmFuY2Vk
IE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBTQngwMCBQQ0kgdG8gUENJIEJyaWRnZSBb
MTAwMjo0Mzg0XSAocmV2IDQwKSAocHJvZy1pZiAwMSBbU3VidHJhY3RpdmUgZGVjb2RlXSkK
CUNvbnRyb2w6IEkvTysgTWVtLSBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdB
U25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0
dXM6IENhcC0gNjZNSHorIFVERi0gRmFzdEIyQisgUGFyRXJyLSBERVZTRUw9bWVkaXVtID5U
QWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6
IDY0CglCdXM6IHByaW1hcnk9MDAsIHNlY29uZGFyeT0wMywgc3Vib3JkaW5hdGU9MDMsIHNl
Yy1sYXRlbmN5PTY0CglJL08gYmVoaW5kIGJyaWRnZTogMDAwMDcwMDAtMDAwMDdmZmYKCU1l
bW9yeSBiZWhpbmQgYnJpZGdlOiBmZmYwMDAwMC0wMDBmZmZmZgoJUHJlZmV0Y2hhYmxlIG1l
bW9yeSBiZWhpbmQgYnJpZGdlOiBmZmYwMDAwMC0wMDBmZmZmZgoJU2Vjb25kYXJ5IHN0YXR1
czogNjZNSHotIEZhc3RCMkIrIFBhckVyci0gREVWU0VMPW1lZGl1bSA+VEFib3J0LSA8VEFi
b3J0LSA8TUFib3J0KyA8U0VSUi0gPFBFUlItCglCcmlkZ2VDdGw6IFBhcml0eSsgU0VSUisg
Tm9JU0ErIFZHQS0gTUFib3J0LSA+UmVzZXQtIEZhc3RCMkItCgkJUHJpRGlzY1Rtci0gU2Vj
RGlzY1Rtci0gRGlzY1RtclN0YXQtIERpc2NUbXJTRVJSRW4tCgowMDoxNC41IFVTQiBjb250
cm9sbGVyIFswYzAzXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFNC
N3gwL1NCOHgwL1NCOXgwIFVTQiBPSENJMiBDb250cm9sbGVyIFsxMDAyOjQzOTldIChwcm9n
LWlmIDEwIFtPSENJXSkKCVN1YnN5c3RlbTogTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsIENv
LiwgTHRkLiBEZXZpY2UgWzE0NjI6NzY0MF0KCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0
ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVisgVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNF
UlIrIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcC0gNjZNSHorIFVERi0gRmFzdEIy
QisgUGFyRXJyLSBERVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5T
RVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDY0LCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5
dGVzCglJbnRlcnJ1cHQ6IHBpbiBDIHJvdXRlZCB0byBJUlEgMTgKCVJlZ2lvbiAwOiBNZW1v
cnkgYXQgZmRiZmQwMDAgKDMyLWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW3NpemU9NEtdCglL
ZXJuZWwgZHJpdmVyIGluIHVzZTogb2hjaS1wY2kKCjAwOjE1LjAgUENJIGJyaWRnZSBbMDYw
NF06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBTQjcwMC9TQjgwMC9T
QjkwMCBQQ0kgdG8gUENJIGJyaWRnZSAoUENJRSBwb3J0IDApIFsxMDAyOjQzYTBdIChwcm9n
LWlmIDAwIFtOb3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0ZXIr
IFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIr
IEZhc3RCMkItIERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0g
UGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0g
PFBFUlItIElOVHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglC
dXM6IHByaW1hcnk9MDAsIHNlY29uZGFyeT0wMiwgc3Vib3JkaW5hdGU9MDIsIHNlYy1sYXRl
bmN5PTAKCUkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwZjAwMC0wMDAwMGZmZgoJTWVtb3J5IGJl
aGluZCBicmlkZ2U6IGZmZjAwMDAwLTAwMGZmZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJl
aGluZCBicmlkZ2U6IDAwMDAwMDAwZmZmMDAwMDAtMDAwMDAwMDAwMDBmZmZmZgoJU2Vjb25k
YXJ5IHN0YXR1czogNjZNSHotIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9y
dC0gPFRBYm9ydC0gPE1BYm9ydC0gPFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkr
IFNFUlIrIE5vSVNBKyBWR0EtIE1BYm9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NU
bXItIFNlY0Rpc2NUbXItIERpc2NUbXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0
aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0g
RFNJLSBEMSsgRDIrIEF1eEN1cnJlbnQ9MG1BIFBNRShEMC0sRDEtLEQyLSxEM2hvdC0sRDNj
b2xkLSkKCQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNlbD0wIERTY2Fs
ZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzU4XSBFeHByZXNzICh2MikgUm9vdCBQb3J0IChT
bG90KyksIE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIFBoYW50RnVu
YyAwLCBMYXRlbmN5IEwwcyA8NjRucywgTDEgPDF1cwoJCQlFeHRUYWcrIFJCRSsgRkxSZXNl
dC0KCQlEZXZDdGw6CVJlcG9ydCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZh
dGFsLSBVbnN1cHBvcnRlZC0KCQkJUmx4ZE9yZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3
ci0gTm9Tbm9vcCsKCQkJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgMTI4IGJ5
dGVzCgkJRGV2U3RhOglDb3JyRXJyLSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEt
IEF1eFB3ci0gVHJhbnNQZW5kLQoJCUxua0NhcDoJUG9ydCAjMjQ3LCBTcGVlZCAyLjVHVC9z
LCBXaWR0aCB4MSwgQVNQTSBMMHMgTDEsIExhdGVuY3kgTDAgPDY0bnMsIEwxIDwxdXMKCQkJ
Q2xvY2tQTS0gU3VycHJpc2UtIExMQWN0UmVwKyBCd05vdCsKCQlMbmtDdGw6CUFTUE0gRGlz
YWJsZWQ7IFJDQiA2NCBieXRlcyBEaXNhYmxlZC0gUmV0cmFpbi0gQ29tbUNsay0KCQkJRXh0
U3luY2gtIENsb2NrUE0tIEF1dFdpZERpcy0gQldJbnQtIEF1dEJXSW50LQoJCUxua1N0YToJ
U3BlZWQgdW5rbm93biwgV2lkdGggeDE2LCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0
aXZlLSBCV01nbXQtIEFCV01nbXQtCgkJU2x0Q2FwOglBdHRuQnRuLSBQd3JDdHJsLSBNUkwt
IEF0dG5JbmQtIFB3ckluZC0gSG90UGx1Zy0gU3VycHJpc2UtCgkJCVNsb3QgIzMyLCBQb3dl
ckxpbWl0IDc1LjAwMFc7IEludGVybG9jay0gTm9Db21wbCsKCQlTbHRDdGw6CUVuYWJsZTog
QXR0bkJ0bi0gUHdyRmx0LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hn
LQoJCQlDb250cm9sOiBBdHRuSW5kIFVua25vd24sIFB3ckluZCBVbmtub3duLCBQb3dlci0g
SW50ZXJsb2NrLQoJCVNsdFN0YToJU3RhdHVzOiBBdHRuQnRuLSBQb3dlckZsdC0gTVJMLSBD
bWRDcGx0LSBQcmVzRGV0LSBJbnRlcmxvY2stCgkJCUNoYW5nZWQ6IE1STC0gUHJlc0RldC0g
TGlua1N0YXRlLQoJCVJvb3RDdGw6IEVyckNvcnJlY3RhYmxlLSBFcnJOb24tRmF0YWwtIEVy
ckZhdGFsLSBQTUVJbnRFbmEtIENSU1Zpc2libGUtCgkJUm9vdENhcDogQ1JTVmlzaWJsZS0K
CQlSb290U3RhOiBQTUUgUmVxSUQgMDAwMCwgUE1FU3RhdHVzLSBQTUVQZW5kaW5nLQoJCURl
dkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogUmFuZ2UgQUJDRCwgVGltZW91dERpcysgQVJJ
RndkLQoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNjVtcyB0byAyMTBtcywgVGlt
ZW91dERpcy0gQVJJRndkLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiAyLjVHVC9z
LCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNpczog
LTMuNWRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5vcm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVu
dGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlhbmNlU09TLQoJCQkgQ29tcGxpYW5jZSBE
ZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6
IC02ZEIsIEVxdWFsaXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkg
RXF1YWxpemF0aW9uUGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXph
dGlvblJlcXVlc3QtCglDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENvdW50PTEv
MSBNYXNrYWJsZS0gNjRiaXQrCgkJQWRkcmVzczogMDAwMDAwMDBmZWUzZjAwYyAgRGF0YTog
NDAwMAoJQ2FwYWJpbGl0aWVzOiBbYjBdIFN1YnN5c3RlbTogQWR2YW5jZWQgTWljcm8gRGV2
aWNlcyBbQU1EXSBuZWUgQVRJIERldmljZSBbMTAwMjowMDAwXQoJQ2FwYWJpbGl0aWVzOiBb
YjhdIEh5cGVyVHJhbnNwb3J0OiBNU0kgTWFwcGluZyBFbmFibGUrIEZpeGVkKwoJQ2FwYWJp
bGl0aWVzOiBbMTAwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5mb3JtYXRpb246IElEPTAwMDEg
UmV2PTEgTGVuPTAxMCA8Pz4KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBwY2llcG9ydAoKMDA6
MTYuMCBVU0IgY29udHJvbGxlciBbMGMwM106IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FN
RF0gbmVlIEFUSSBTQjd4MC9TQjh4MC9TQjl4MCBVU0IgT0hDSTAgQ29udHJvbGxlciBbMTAw
Mjo0Mzk3XSAocHJvZy1pZiAxMCBbT0hDSV0pCglTdWJzeXN0ZW06IE1pY3JvLVN0YXIgSW50
ZXJuYXRpb25hbCBDby4sIEx0ZC4gRGV2aWNlIFsxNDYyOjc2NDBdCglDb250cm9sOiBJL08r
IE1lbSsgQnVzTWFzdGVyKyBTcGVjQ3ljbGUtIE1lbVdJTlYrIFZHQVNub29wLSBQYXJFcnIt
IFN0ZXBwaW5nLSBTRVJSKyBGYXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXAtIDY2TUh6
KyBVREYtIEZhc3RCMkIrIFBhckVyci0gREVWU0VMPW1lZGl1bSA+VEFib3J0LSA8VEFib3J0
LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiA2NCwgQ2FjaGUgTGlu
ZSBTaXplOiA2NCBieXRlcwoJSW50ZXJydXB0OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDE4CglS
ZWdpb24gMDogTWVtb3J5IGF0IGZkYmZlMDAwICgzMi1iaXQsIG5vbi1wcmVmZXRjaGFibGUp
IFtzaXplPTRLXQoJS2VybmVsIGRyaXZlciBpbiB1c2U6IG9oY2ktcGNpCgowMDoxNi4yIFVT
QiBjb250cm9sbGVyIFswYzAzXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUg
QVRJIFNCN3gwL1NCOHgwL1NCOXgwIFVTQiBFSENJIENvbnRyb2xsZXIgWzEwMDI6NDM5Nl0g
KHByb2ctaWYgMjAgW0VIQ0ldKQoJU3Vic3lzdGVtOiBNaWNyby1TdGFyIEludGVybmF0aW9u
YWwgQ28uLCBMdGQuIERldmljZSBbMTQ2Mjo3NjQwXQoJQ29udHJvbDogSS9PLSBNZW0rIEJ1
c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WKyBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGlu
Zy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1IeisgVURGLSBG
YXN0QjJCKyBQYXJFcnItIERFVlNFTD1tZWRpdW0gPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9y
dC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJTGF0ZW5jeTogNjQsIENhY2hlIExpbmUgU2l6ZTog
NjQgYnl0ZXMKCUludGVycnVwdDogcGluIEIgcm91dGVkIHRvIElSUSAxNwoJUmVnaW9uIDA6
IE1lbW9yeSBhdCBmZGJmZmMwMCAoMzItYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0y
NTZdCglDYXBhYmlsaXRpZXM6IFtjMF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIKCQlG
bGFnczogUE1FQ2xrLSBEU0ktIEQxKyBEMisgQXV4Q3VycmVudD0wbUEgUE1FKEQwKyxEMSss
RDIrLEQzaG90KyxEM2NvbGQtKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxl
LSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJCUJyaWRnZTogUE0tIEIzKwoJQ2FwYWJpbGl0aWVz
OiBbZTRdIERlYnVnIHBvcnQ6IEJBUj0xIG9mZnNldD0wMGUwCglLZXJuZWwgZHJpdmVyIGlu
IHVzZTogZWhjaS1wY2kKCjAwOjE4LjAgSG9zdCBicmlkZ2UgWzA2MDBdOiBBZHZhbmNlZCBN
aWNybyBEZXZpY2VzIFtBTURdIEZhbWlseSAxMGggUHJvY2Vzc29yIEh5cGVyVHJhbnNwb3J0
IENvbmZpZ3VyYXRpb24gWzEwMjI6MTIwMF0KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0
ZXItIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNF
UlItIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIy
Qi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VS
Ui0gPFBFUlItIElOVHgtCglDYXBhYmlsaXRpZXM6IFs4MF0gSHlwZXJUcmFuc3BvcnQ6IEhv
c3Qgb3IgU2Vjb25kYXJ5IEludGVyZmFjZQoJCUNvbW1hbmQ6IFdhcm1Sc3QrIERibEVuZC0g
RGV2TnVtPTAgQ2hhaW5TaWRlLSBIb3N0SGlkZSsgU2xhdmUtIDxFT0NFcnItIERVTC0KCQlM
aW5rIENvbnRyb2w6IENGbEUtIENTVC0gQ0ZFLSA8TGtGYWlsLSBJbml0KyBFT0MtIFRYTy0g
PENSQ0Vycj0wIElzb2NFbi0gTFNFbisgRXh0Q1RMLSA2NGItCgkJTGluayBDb25maWc6IE1M
V0k9MTZiaXQgRHdGY0luLSBNTFdPPTE2Yml0IER3RmNPdXQtIExXST0xNmJpdCBEd0ZjSW5F
bi0gTFdPPTE2Yml0IER3RmNPdXRFbi0KCQlSZXZpc2lvbiBJRDogMy4wMAoJCUxpbmsgRnJl
cXVlbmN5OiBbYl0KCQlMaW5rIEVycm9yOiA8UHJvdC0gPE92ZmwtIDxFT0MtIENUTFRtLQoJ
CUxpbmsgRnJlcXVlbmN5IENhcGFiaWxpdHk6IDIwME1IeisgMzAwTUh6LSA0MDBNSHorIDUw
ME1Iei0gNjAwTUh6KyA4MDBNSHorIDEuMEdIeisgMS4yR0h6KyAxLjRHSHotIDEuNkdIei0g
VmVuZC0KCQlGZWF0dXJlIENhcGFiaWxpdHk6IElzb2NGQysgTERUU1RPUCsgQ1JDVE0tIEVD
VExULSA2NGJBKyBVSURSRC0gRXh0UlMtIFVDbmZFLQoKMDA6MTguMSBIb3N0IGJyaWRnZSBb
MDYwMF06IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gRmFtaWx5IDEwaCBQcm9jZXNz
b3IgQWRkcmVzcyBNYXAgWzEwMjI6MTIwMV0KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0
ZXItIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNF
UlItIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcC0gNjZNSHotIFVERi0gRmFzdEIy
Qi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VS
Ui0gPFBFUlItIElOVHgtCgowMDoxOC4yIEhvc3QgYnJpZGdlIFswNjAwXTogQWR2YW5jZWQg
TWljcm8gRGV2aWNlcyBbQU1EXSBGYW1pbHkgMTBoIFByb2Nlc3NvciBEUkFNIENvbnRyb2xs
ZXIgWzEwMjI6MTIwMl0KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0ZXItIFNwZWNDeWNs
ZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlItIEZhc3RCMkIt
IERpc0lOVHgtCglTdGF0dXM6IENhcC0gNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBE
RVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElO
VHgtCgowMDoxOC4zIEhvc3QgYnJpZGdlIFswNjAwXTogQWR2YW5jZWQgTWljcm8gRGV2aWNl
cyBbQU1EXSBGYW1pbHkgMTBoIFByb2Nlc3NvciBNaXNjZWxsYW5lb3VzIENvbnRyb2wgWzEw
MjI6MTIwM10KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0ZXItIFNwZWNDeWNsZS0gTWVt
V0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlItIEZhc3RCMkItIERpc0lO
VHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9
ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglD
YXBhYmlsaXRpZXM6IFtmMF0gU2VjdXJlIGRldmljZSA8Pz4KCUtlcm5lbCBkcml2ZXIgaW4g
dXNlOiBrMTB0ZW1wCgowMDoxOC40IEhvc3QgYnJpZGdlIFswNjAwXTogQWR2YW5jZWQgTWlj
cm8gRGV2aWNlcyBbQU1EXSBGYW1pbHkgMTBoIFByb2Nlc3NvciBMaW5rIENvbnRyb2wgWzEw
MjI6MTIwNF0KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNNYXN0ZXItIFNwZWNDeWNsZS0gTWVt
V0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlItIEZhc3RCMkItIERpc0lO
VHgtCglTdGF0dXM6IENhcC0gNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9
ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCgow
MzowNi4wIE11bHRpbWVkaWEgYXVkaW8gY29udHJvbGxlciBbMDQwMV06IEMtTWVkaWEgRWxl
Y3Ryb25pY3MgSW5jIENNSTg3MzgvQ01JODc2OCBQQ0kgQXVkaW8gWzEzZjY6MDExMV0gKHJl
diAxMCkKCVN1YnN5c3RlbTogQy1NZWRpYSBFbGVjdHJvbmljcyBJbmMgQ01JODczOC9DM0RY
IFBDSSBBdWRpbyBEZXZpY2UgWzEzZjY6MDExMV0KCUNvbnRyb2w6IEkvTy0gTWVtLSBCdXNN
YXN0ZXItIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmct
IFNFUlItIEZhc3RCMkItIERpc0lOVHgtCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFz
dEIyQi0gUGFyRXJyLSBERVZTRUw9bWVkaXVtID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQt
ID5TRVJSLSA8UEVSUi0gSU5UeC0KCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAy
MgoJUmVnaW9uIDA6IEkvTyBwb3J0cyBhdCA3ODAwIFtkaXNhYmxlZF0gW3NpemU9MjU2XQoJ
Q2FwYWJpbGl0aWVzOiBbYzBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAyCgkJRmxhZ3M6
IFBNRUNsay0gRFNJLSBEMSsgRDIrIEF1eEN1cnJlbnQ9MG1BIFBNRShEMC0sRDEtLEQyLSxE
M2hvdC0sRDNjb2xkLSkKCQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1FLUVuYWJsZS0gRFNl
bD0wIERTY2FsZT0wIFBNRS0KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBwY2liYWNrCgowNDow
MC4wIFVTQiBjb250cm9sbGVyIFswYzAzXTogTkVDIENvcnBvcmF0aW9uIHVQRDcyMDIwMCBV
U0IgMy4wIEhvc3QgQ29udHJvbGxlciBbMTAzMzowMTk0XSAocmV2IDAzKSAocHJvZy1pZiAz
MCBbWEhDSV0pCglTdWJzeXN0ZW06IE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCBDby4sIEx0
ZC4gRGV2aWNlIFsxNDYyOjQyNTddCglDb250cm9sOiBJL08tIE1lbS0gQnVzTWFzdGVyLSBT
cGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSLSBG
YXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkItIFBh
ckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQ
RVJSLSBJTlR4LQoJSW50ZXJydXB0OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDQwCglSZWdpb24g
MDogTWVtb3J5IGF0IGZkZGZlMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtkaXNh
YmxlZF0gW3NpemU9OEtdCglDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2
ZXJzaW9uIDMKCQlGbGFnczogUE1FQ2xrLSBEU0ktIEQxLSBEMi0gQXV4Q3VycmVudD0zNzVt
QSBQTUUoRDArLEQxLSxEMi0sRDNob3QrLEQzY29sZCspCgkJU3RhdHVzOiBEMCBOb1NvZnRS
c3QrIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs3
MF0gTVNJOiBFbmFibGUtIENvdW50PTEvOCBNYXNrYWJsZS0gNjRiaXQrCgkJQWRkcmVzczog
MDAwMDAwMDAwMDAwMDAwMCAgRGF0YTogMDAwMAoJQ2FwYWJpbGl0aWVzOiBbOTBdIE1TSS1Y
OiBFbmFibGUtIENvdW50PTggTWFza2VkLQoJCVZlY3RvciB0YWJsZTogQkFSPTAgb2Zmc2V0
PTAwMDAxMDAwCgkJUEJBOiBCQVI9MCBvZmZzZXQ9MDAwMDEwODAKCUNhcGFiaWxpdGllczog
W2EwXSBFeHByZXNzICh2MikgRW5kcG9pbnQsIE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9h
ZCAxMjggYnl0ZXMsIFBoYW50RnVuYyAwLCBMYXRlbmN5IEwwcyB1bmxpbWl0ZWQsIEwxIHVu
bGltaXRlZAoJCQlFeHRUYWctIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJl
c2V0LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0g
RmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkLSBFeHRUYWctIFBoYW50RnVuYy0gQXV4
UHdyLSBOb1Nub29wKwoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSA1MTIg
Ynl0ZXMKCQlEZXZTdGE6CUNvcnJFcnItIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJl
cS0gQXV4UHdyKyBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMwLCBTcGVlZCA1R1Qvcywg
V2lkdGggeDEsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDw0dXMsIEwxIHVubGltaXRlZAoJ
CQlDbG9ja1BNKyBTdXJwcmlzZS0gTExBY3RSZXAtIEJ3Tm90LQoJCUxua0N0bDoJQVNQTSBE
aXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVkLSBSZXRyYWluLSBDb21tQ2xrKwoJCQlF
eHRTeW5jaC0gQ2xvY2tQTSsgQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3Rh
OglTcGVlZCA1R1QvcywgV2lkdGggeDEsIFRyRXJyLSBUcmFpbi0gU2xvdENsaysgRExBY3Rp
dmUtIEJXTWdtdC0gQUJXTWdtdC0KCQlEZXZDYXAyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IE5v
dCBTdXBwb3J0ZWQsIFRpbWVvdXREaXMrCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBUaW1lb3V0
OiA1MHVzIHRvIDUwbXMsIFRpbWVvdXREaXMtCgkJTG5rQ3RsMjogVGFyZ2V0IExpbmsgU3Bl
ZWQ6IDVHVC9zLCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1l
bXBoYXNpczogLTZkQgoJCQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJh
bmdlLCBFbnRlck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBs
aWFuY2UgRGUtZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lz
IExldmVsOiAtMy41ZEIsIEVxdWFsaXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhh
c2UxLQoJCQkgRXF1YWxpemF0aW9uUGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlu
a0VxdWFsaXphdGlvblJlcXVlc3QtCglDYXBhYmlsaXRpZXM6IFsxMDAgdjFdIEFkdmFuY2Vk
IEVycm9yIFJlcG9ydGluZwoJCVVFU3RhOglETFAtIFNERVMtIFRMUC0gRkNQLSBDbXBsdFRP
LSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1cFJlcS0g
QUNTVmlvbC0KCQlVRU1zazoJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRB
YnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wt
CgkJVUVTdnJ0OglETFArIFNERVMrIFRMUC0gRkNQKyBDbXBsdFRPLSBDbXBsdEFicnQtIFVu
eENtcGx0LSBSeE9GKyBNYWxmVExQKyBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlDRVN0
YToJUnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFs
RXJyKwoJCUNFTXNrOglSeEVyci0gQmFkVExQLSBCYWRETExQLSBSb2xsb3Zlci0gVGltZW91
dC0gTm9uRmF0YWxFcnIrCgkJQUVSQ2FwOglGaXJzdCBFcnJvciBQb2ludGVyOiAwMCwgR2Vu
Q2FwLSBDR2VuRW4tIENoa0NhcC0gQ2hrRW4tCglDYXBhYmlsaXRpZXM6IFsxNDAgdjFdIERl
dmljZSBTZXJpYWwgTnVtYmVyIGZmLWZmLWZmLWZmLWZmLWZmLWZmLWZmCglDYXBhYmlsaXRp
ZXM6IFsxNTAgdjFdIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZwoJCU1heCBzbm9vcCBs
YXRlbmN5OiAwbnMKCQlNYXggbm8gc25vb3AgbGF0ZW5jeTogMG5zCglLZXJuZWwgZHJpdmVy
IGluIHVzZTogcGNpYmFjawoKMDU6MDAuMCBQQ0kgYnJpZGdlIFswNjA0XTogUExYIFRlY2hu
b2xvZ3ksIEluYy4gUEVYIDg2MTMgMTItbGFuZSwgMy1Qb3J0IFBDSSBFeHByZXNzIEdlbiAy
ICg1LjAgR1QvcykgU3dpdGNoIFsxMGI1Ojg2MTNdIChyZXYgYmEpIChwcm9nLWlmIDAwIFtO
b3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNs
ZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkIt
IERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBE
RVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElO
VHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglSZWdpb24gMDog
TWVtb3J5IGF0IGZkZWUwMDAwICgzMi1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTEy
OEtdCglCdXM6IHByaW1hcnk9MDUsIHNlY29uZGFyeT0wNiwgc3Vib3JkaW5hdGU9MDgsIHNl
Yy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwODAwMC0wMDAwOWZmZgoJTWVt
b3J5IGJlaGluZCBicmlkZ2U6IGZkZjAwMDAwLWZlMGZmZmZmCglQcmVmZXRjaGFibGUgbWVt
b3J5IGJlaGluZCBicmlkZ2U6IDAwMDAwMDAwZmZmMDAwMDAtMDAwMDAwMDAwMDBmZmZmZgoJ
U2Vjb25kYXJ5IHN0YXR1czogNjZNSHotIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3Qg
PlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQ
YXJpdHkrIFNFUlIrIE5vSVNBKyBWR0EtIE1BYm9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVBy
aURpc2NUbXItIFNlY0Rpc2NUbXItIERpc2NUbXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2Fw
YWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBN
RUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hv
dCssRDNjb2xkKykKCQlTdGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJsZS0gRFNlbD0w
IERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzQ4XSBNU0k6IEVuYWJsZSsgQ291bnQ9
MS80IE1hc2thYmxlKyA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTNmMDBjICBEYXRh
OiA0MDAwCgkJTWFza2luZzogMDAwMDAwMDEgIFBlbmRpbmc6IDAwMDAwMDAwCglDYXBhYmls
aXRpZXM6IFs2OF0gRXhwcmVzcyAodjIpIFVwc3RyZWFtIFBvcnQsIE1TSSAwMAoJCURldkNh
cDoJTWF4UGF5bG9hZCAyMDQ4IGJ5dGVzLCBQaGFudEZ1bmMgMCwgTGF0ZW5jeSBMMHMgPDY0
bnMsIEwxIDwxdXMKCQkJRXh0VGFnLSBBdHRuQnRuLSBBdHRuSW5kLSBQd3JJbmQtIFJCRSsg
RkxSZXNldC1TbG90UG93ZXJMaW1pdCAyNS4wMDBXCgkJRGV2Q3RsOglSZXBvcnQgZXJyb3Jz
OiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0gVW5zdXBwb3J0ZWQtCgkJCVJseGRP
cmQtIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3AtCgkJCU1heFBheWxvYWQg
MTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDEyOCBieXRlcwoJCURldlN0YToJQ29yckVycisgVW5j
b3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVxKyBBdXhQd3ItIFRyYW5zUGVuZC0KCQlMbmtD
YXA6CVBvcnQgIzAsIFNwZWVkIDVHVC9zLCBXaWR0aCB4NCwgQVNQTSBMMHMgTDEsIExhdGVu
Y3kgTDAgPDF1cywgTDEgPDJ1cwoJCQlDbG9ja1BNLSBTdXJwcmlzZS0gTExBY3RSZXAtIEJ3
Tm90LQoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1D
bGstCgkJCUV4dFN5bmNoLSBDbG9ja1BNLSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0K
CQlMbmtTdGE6CVNwZWVkIDVHVC9zLCBXaWR0aCB4NCwgVHJFcnItIFRyYWluLSBTbG90Q2xr
LSBETEFjdGl2ZS0gQldNZ210LSBBQldNZ210LQoJCURldkNhcDI6IENvbXBsZXRpb24gVGlt
ZW91dDogTm90IFN1cHBvcnRlZCwgVGltZW91dERpcy0KCQlEZXZDdGwyOiBDb21wbGV0aW9u
IFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywgVGltZW91dERpcy0KCQlMbmtDdGwyOiBUYXJnZXQg
TGluayBTcGVlZDogNUdUL3MsIEVudGVyQ29tcGxpYW5jZS0gU3BlZWREaXMtLCBTZWxlY3Rh
YmxlIERlLWVtcGhhc2lzOiAtNmRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5vcm1hbCBPcGVy
YXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlhbmNlU09TLQoJ
CQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1cnJlbnQgRGUt
ZW1waGFzaXMgTGV2ZWw6IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUtLCBFcXVhbGl6
YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6YXRpb25QaGFz
ZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczogW2E0XSBTdWJz
eXN0ZW06IFBMWCBUZWNobm9sb2d5LCBJbmMuIFBFWCA4NjEzIDEyLWxhbmUsIDMtUG9ydCBQ
Q0kgRXhwcmVzcyBHZW4gMiAoNS4wIEdUL3MpIFN3aXRjaCBbMTBiNTo4NjEzXQoJQ2FwYWJp
bGl0aWVzOiBbMTAwIHYxXSBEZXZpY2UgU2VyaWFsIE51bWJlciBiYS04Ni0wMS0xMC1iNS1k
Zi0wZS0wMAoJQ2FwYWJpbGl0aWVzOiBbZmI0IHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRp
bmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBV
bnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVN
c2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQt
IFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQ
KyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisg
TWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJ
UnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJy
KwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMWYsIEdlbkNhcCsgQ0dlbkVuLSBD
aGtDYXArIENoa0VuLQoJQ2FwYWJpbGl0aWVzOiBbMTM4IHYxXSBQb3dlciBCdWRnZXRpbmcg
PD8+CglDYXBhYmlsaXRpZXM6IFsxNDggdjFdIFZpcnR1YWwgQ2hhbm5lbAoJCUNhcHM6CUxQ
RVZDPTEgUmVmQ2xrPTEwMG5zIFBBVEVudHJ5Qml0cz00CgkJQXJiOglGaXhlZCsgV1JSMzIt
IFdSUjY0LSBXUlIxMjgtCgkJQ3RybDoJQXJiU2VsZWN0PUZpeGVkCgkJU3RhdHVzOglJblBy
b2dyZXNzLQoJCVZDMDoJQ2FwczoJUEFUT2Zmc2V0PTA2IE1heFRpbWVTbG90cz0xIFJlalNu
b29wVHJhbnMtCgkJCUFyYjoJRml4ZWQtIFdSUjMyKyBXUlI2NC0gV1JSMTI4LSBUV1JSMTI4
LSBXUlIyNTYtCgkJCUN0cmw6CUVuYWJsZSsgSUQ9MCBBcmJTZWxlY3Q9V1JSMzIgVEMvVkM9
ZmYKCQkJU3RhdHVzOglOZWdvUGVuZGluZy0gSW5Qcm9ncmVzcy0KCQkJUG9ydCBBcmJpdHJh
dGlvbiBUYWJsZSA8Pz4KCQlWQzE6CUNhcHM6CVBBVE9mZnNldD0wMCBNYXhUaW1lU2xvdHM9
MSBSZWpTbm9vcFRyYW5zLQoJCQlBcmI6CUZpeGVkKyBXUlIzMi0gV1JSNjQtIFdSUjEyOC0g
VFdSUjEyOC0gV1JSMjU2LQoJCQlDdHJsOglFbmFibGUtIElEPTEgQXJiU2VsZWN0PUZpeGVk
IFRDL1ZDPTAwCgkJCVN0YXR1czoJTmVnb1BlbmRpbmctIEluUHJvZ3Jlc3MtCglDYXBhYmls
aXRpZXM6IFs0NDggdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAwMCBS
ZXY9MCBMZW49MGNjIDw/PgoJQ2FwYWJpbGl0aWVzOiBbOTUwIHYxXSBWZW5kb3IgU3BlY2lm
aWMgSW5mb3JtYXRpb246IElEPTAwMDEgUmV2PTAgTGVuPTAxMCA8Pz4KCUtlcm5lbCBkcml2
ZXIgaW4gdXNlOiBwY2llcG9ydAoKMDY6MDEuMCBQQ0kgYnJpZGdlIFswNjA0XTogUExYIFRl
Y2hub2xvZ3ksIEluYy4gUEVYIDg2MTMgMTItbGFuZSwgMy1Qb3J0IFBDSSBFeHByZXNzIEdl
biAyICg1LjAgR1QvcykgU3dpdGNoIFsxMGI1Ojg2MTNdIChyZXYgYmEpIChwcm9nLWlmIDAw
IFtOb3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTy0gTWVtKyBCdXNNYXN0ZXIrIFNwZWND
eWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RC
MkItIERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJy
LSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlIt
IElOVHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglCdXM6IHBy
aW1hcnk9MDYsIHNlY29uZGFyeT0wOCwgc3Vib3JkaW5hdGU9MDgsIHNlYy1sYXRlbmN5PTAK
CUkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwZjAwMC0wMDAwMGZmZgoJTWVtb3J5IGJlaGluZCBi
cmlkZ2U6IGZlMDAwMDAwLWZlMGZmZmZmCglQcmVmZXRjaGFibGUgbWVtb3J5IGJlaGluZCBi
cmlkZ2U6IDAwMDAwMDAwZmZmMDAwMDAtMDAwMDAwMDAwMDBmZmZmZgoJU2Vjb25kYXJ5IHN0
YXR1czogNjZNSHotIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRB
Ym9ydC0gPE1BYm9ydC0gPFNFUlItIDxQRVJSLQoJQnJpZGdlQ3RsOiBQYXJpdHkrIFNFUlIr
IE5vSVNBKyBWR0EtIE1BYm9ydC0gPlJlc2V0LSBGYXN0QjJCLQoJCVByaURpc2NUbXItIFNl
Y0Rpc2NUbXItIERpc2NUbXJTdGF0LSBEaXNjVG1yU0VSUkVuLQoJQ2FwYWJpbGl0aWVzOiBb
NDBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBE
MS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxEM2hvdCssRDNjb2xkKykK
CQlTdGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBN
RS0KCUNhcGFiaWxpdGllczogWzQ4XSBNU0k6IEVuYWJsZSsgQ291bnQ9MS80IE1hc2thYmxl
KyA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTNmMDBjICBEYXRhOiA0MDAwCgkJTWFz
a2luZzogMDAwMDAwMDEgIFBlbmRpbmc6IDAwMDAwMDAwCglDYXBhYmlsaXRpZXM6IFs2OF0g
RXhwcmVzcyAodjIpIERvd25zdHJlYW0gUG9ydCAoU2xvdCspLCBNU0kgMDAKCQlEZXZDYXA6
CU1heFBheWxvYWQgMjA0OCBieXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw2NG5z
LCBMMSA8MXVzCgkJCUV4dFRhZy0gUkJFKyBGTFJlc2V0LQoJCURldkN0bDoJUmVwb3J0IGVy
cm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlS
bHhkT3JkLSBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29wLQoJCQlNYXhQYXls
b2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSAxMjggYnl0ZXMKCQlEZXZTdGE6CUNvcnJFcnIr
IFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcSsgQXV4UHdyLSBUcmFuc1BlbmQtCgkJ
TG5rQ2FwOglQb3J0ICMxLCBTcGVlZCA1R1QvcywgV2lkdGggeDQsIEFTUE0gTDBzIEwxLCBM
YXRlbmN5IEwwIDwxdXMsIEwxIDwydXMKCQkJQ2xvY2tQTS0gU3VycHJpc2UrIExMQWN0UmVw
KyBCd05vdCsKCQlMbmtDdGw6CUFTUE0gRGlzYWJsZWQ7IERpc2FibGVkLSBSZXRyYWluLSBD
b21tQ2xrLQoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBCV0ludC0gQXV0QldJ
bnQtCgkJTG5rU3RhOglTcGVlZCA1R1QvcywgV2lkdGggeDEsIFRyRXJyLSBUcmFpbi0gU2xv
dENsay0gRExBY3RpdmUrIEJXTWdtdCsgQUJXTWdtdCsKCQlTbHRDYXA6CUF0dG5CdG4tIFB3
ckN0cmwtIE1STC0gQXR0bkluZC0gUHdySW5kLSBIb3RQbHVnLSBTdXJwcmlzZS0KCQkJU2xv
dCAjMTEzLCBQb3dlckxpbWl0IDI1LjAwMFc7IEludGVybG9jay0gTm9Db21wbC0KCQlTbHRD
dGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdyRmx0LSBNUkwtIFByZXNEZXQtIENtZENwbHQtIEhQ
SXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBBdHRuSW5kIE9mZiwgUHdySW5kIE9mZiwgUG93
ZXItIEludGVybG9jay0KCQlTbHRTdGE6CVN0YXR1czogQXR0bkJ0bi0gUG93ZXJGbHQtIE1S
TC0gQ21kQ3BsdC0gUHJlc0RldCsgSW50ZXJsb2NrLQoJCQlDaGFuZ2VkOiBNUkwtIFByZXNE
ZXQrIExpbmtTdGF0ZSsKCQlEZXZDYXAyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IE5vdCBTdXBw
b3J0ZWQsIFRpbWVvdXREaXMtIEFSSUZ3ZCsKCQlEZXZDdGwyOiBDb21wbGV0aW9uIFRpbWVv
dXQ6IDUwdXMgdG8gNTBtcywgVGltZW91dERpcy0gQVJJRndkLQoJCUxua0N0bDI6IFRhcmdl
dCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJDb21wbGlhbmNlLSBTcGVlZERpcy0sIFNlbGVj
dGFibGUgRGUtZW1waGFzaXM6IC02ZEIKCQkJIFRyYW5zbWl0IE1hcmdpbjogTm9ybWFsIE9w
ZXJhdGluZyBSYW5nZSwgRW50ZXJNb2RpZmllZENvbXBsaWFuY2UtIENvbXBsaWFuY2VTT1Mt
CgkJCSBDb21wbGlhbmNlIERlLWVtcGhhc2lzOiAtNmRCCgkJTG5rU3RhMjogQ3VycmVudCBE
ZS1lbXBoYXNpcyBMZXZlbDogLTZkQiwgRXF1YWxpemF0aW9uQ29tcGxldGUtLCBFcXVhbGl6
YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBFcXVhbGl6YXRpb25QaGFz
ZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxpdGllczogW2E0XSBTdWJz
eXN0ZW06IFBMWCBUZWNobm9sb2d5LCBJbmMuIFBFWCA4NjEzIDEyLWxhbmUsIDMtUG9ydCBQ
Q0kgRXhwcmVzcyBHZW4gMiAoNS4wIEdUL3MpIFN3aXRjaCBbMTBiNTo4NjEzXQoJQ2FwYWJp
bGl0aWVzOiBbMTAwIHYxXSBEZXZpY2UgU2VyaWFsIE51bWJlciBiYS04Ni0wMS0xMC1iNS1k
Zi0wZS0wMAoJQ2FwYWJpbGl0aWVzOiBbZmI0IHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRp
bmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBV
bnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVN
c2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQt
IFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQ
KyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisg
TWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJ
UnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJy
KwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMWYsIEdlbkNhcCsgQ0dlbkVuLSBD
aGtDYXArIENoa0VuLQoJQ2FwYWJpbGl0aWVzOiBbMTQ4IHYxXSBWaXJ0dWFsIENoYW5uZWwK
CQlDYXBzOglMUEVWQz0xIFJlZkNsaz0xMDBucyBQQVRFbnRyeUJpdHM9MQoJCUFyYjoJRml4
ZWQrIFdSUjMyLSBXUlI2NC0gV1JSMTI4LQoJCUN0cmw6CUFyYlNlbGVjdD1GaXhlZAoJCVN0
YXR1czoJSW5Qcm9ncmVzcy0KCQlWQzA6CUNhcHM6CVBBVE9mZnNldD0wMCBNYXhUaW1lU2xv
dHM9MSBSZWpTbm9vcFRyYW5zLQoJCQlBcmI6CUZpeGVkKyBXUlIzMi0gV1JSNjQtIFdSUjEy
OC0gVFdSUjEyOC0gV1JSMjU2LQoJCQlDdHJsOglFbmFibGUrIElEPTAgQXJiU2VsZWN0PUZp
eGVkIFRDL1ZDPWZmCgkJCVN0YXR1czoJTmVnb1BlbmRpbmctIEluUHJvZ3Jlc3MtCgkJVkMx
OglDYXBzOglQQVRPZmZzZXQ9MDAgTWF4VGltZVNsb3RzPTEgUmVqU25vb3BUcmFucy0KCQkJ
QXJiOglGaXhlZCsgV1JSMzItIFdSUjY0LSBXUlIxMjgtIFRXUlIxMjgtIFdSUjI1Ni0KCQkJ
Q3RybDoJRW5hYmxlLSBJRD0xIEFyYlNlbGVjdD1GaXhlZCBUQy9WQz0wMAoJCQlTdGF0dXM6
CU5lZ29QZW5kaW5nLSBJblByb2dyZXNzLQoJQ2FwYWJpbGl0aWVzOiBbNTIwIHYxXSBBY2Nl
c3MgQ29udHJvbCBTZXJ2aWNlcwoJCUFDU0NhcDoJU3JjVmFsaWQrIFRyYW5zQmxrKyBSZXFS
ZWRpcisgQ21wbHRSZWRpcisgVXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwrIERpcmVjdFRyYW5z
KwoJCUFDU0N0bDoJU3JjVmFsaWQrIFRyYW5zQmxrLSBSZXFSZWRpcisgQ21wbHRSZWRpcisg
VXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRyYW5zLQoJQ2FwYWJpbGl0aWVzOiBb
OTUwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5mb3JtYXRpb246IElEPTAwMDEgUmV2PTAgTGVu
PTAxMCA8Pz4KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBwY2llcG9ydAoKMDY6MDIuMCBQQ0kg
YnJpZGdlIFswNjA0XTogUExYIFRlY2hub2xvZ3ksIEluYy4gUEVYIDg2MTMgMTItbGFuZSwg
My1Qb3J0IFBDSSBFeHByZXNzIEdlbiAyICg1LjAgR1QvcykgU3dpdGNoIFsxMGI1Ojg2MTNd
IChyZXYgYmEpIChwcm9nLWlmIDAwIFtOb3JtYWwgZGVjb2RlXSkKCUNvbnRyb2w6IEkvTysg
TWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0g
U3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHot
IFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8
TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNp
emU6IDY0IGJ5dGVzCglCdXM6IHByaW1hcnk9MDYsIHNlY29uZGFyeT0wNywgc3Vib3JkaW5h
dGU9MDcsIHNlYy1sYXRlbmN5PTAKCUkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwODAwMC0wMDAw
OWZmZgoJTWVtb3J5IGJlaGluZCBicmlkZ2U6IGZkZjAwMDAwLWZkZmZmZmZmCglQcmVmZXRj
aGFibGUgbWVtb3J5IGJlaGluZCBicmlkZ2U6IDAwMDAwMDAwZmZmMDAwMDAtMDAwMDAwMDAw
MDBmZmZmZgoJU2Vjb25kYXJ5IHN0YXR1czogNjZNSHotIEZhc3RCMkItIFBhckVyci0gREVW
U0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPFNFUlItIDxQRVJSLQoJQnJp
ZGdlQ3RsOiBQYXJpdHkrIFNFUlIrIE5vSVNBKyBWR0EtIE1BYm9ydC0gPlJlc2V0LSBGYXN0
QjJCLQoJCVByaURpc2NUbXItIFNlY0Rpc2NUbXItIERpc2NUbXJTdGF0LSBEaXNjVG1yU0VS
UkVuLQoJQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJ
RmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEt
LEQyLSxEM2hvdCssRDNjb2xkKykKCQlTdGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJs
ZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzQ4XSBNU0k6IEVuYWJs
ZSsgQ291bnQ9MS80IE1hc2thYmxlKyA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTNm
MDBjICBEYXRhOiA0MDAwCgkJTWFza2luZzogMDAwMDAwMDEgIFBlbmRpbmc6IDAwMDAwMDAw
CglDYXBhYmlsaXRpZXM6IFs2OF0gRXhwcmVzcyAodjIpIERvd25zdHJlYW0gUG9ydCAoU2xv
dCspLCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgMjA0OCBieXRlcywgUGhhbnRGdW5j
IDAsIExhdGVuY3kgTDBzIDw2NG5zLCBMMSA8MXVzCgkJCUV4dFRhZy0gUkJFKyBGTFJlc2V0
LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0
YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkLSBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdy
LSBOb1Nub29wLQoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSAxMjggYnl0
ZXMKCQlEZXZTdGE6CUNvcnJFcnIrIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcSsg
QXV4UHdyLSBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMyLCBTcGVlZCA1R1QvcywgV2lk
dGggeDQsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDwxdXMsIEwxIDwydXMKCQkJQ2xvY2tQ
TS0gU3VycHJpc2UrIExMQWN0UmVwKyBCd05vdCsKCQlMbmtDdGw6CUFTUE0gRGlzYWJsZWQ7
IERpc2FibGVkLSBSZXRyYWluLSBDb21tQ2xrLQoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0
V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCA1R1QvcywgV2lkdGgg
eDEsIFRyRXJyLSBUcmFpbi0gU2xvdENsay0gRExBY3RpdmUrIEJXTWdtdCsgQUJXTWdtdC0K
CQlTbHRDYXA6CUF0dG5CdG4tIFB3ckN0cmwtIE1STC0gQXR0bkluZC0gUHdySW5kLSBIb3RQ
bHVnLSBTdXJwcmlzZS0KCQkJU2xvdCAjMTE0LCBQb3dlckxpbWl0IDI1LjAwMFc7IEludGVy
bG9jay0gTm9Db21wbC0KCQlTbHRDdGw6CUVuYWJsZTogQXR0bkJ0bi0gUHdyRmx0LSBNUkwt
IFByZXNEZXQtIENtZENwbHQtIEhQSXJxLSBMaW5rQ2hnLQoJCQlDb250cm9sOiBBdHRuSW5k
IE9mZiwgUHdySW5kIE9mZiwgUG93ZXItIEludGVybG9jay0KCQlTbHRTdGE6CVN0YXR1czog
QXR0bkJ0bi0gUG93ZXJGbHQtIE1STC0gQ21kQ3BsdC0gUHJlc0RldCsgSW50ZXJsb2NrLQoJ
CQlDaGFuZ2VkOiBNUkwtIFByZXNEZXQrIExpbmtTdGF0ZSsKCQlEZXZDYXAyOiBDb21wbGV0
aW9uIFRpbWVvdXQ6IE5vdCBTdXBwb3J0ZWQsIFRpbWVvdXREaXMtIEFSSUZ3ZCsKCQlEZXZD
dGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywgVGltZW91dERpcy0gQVJJ
RndkLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50ZXJDb21wbGlh
bmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC02ZEIKCQkJIFRyYW5z
bWl0IE1hcmdpbjogTm9ybWFsIE9wZXJhdGluZyBSYW5nZSwgRW50ZXJNb2RpZmllZENvbXBs
aWFuY2UtIENvbXBsaWFuY2VTT1MtCgkJCSBDb21wbGlhbmNlIERlLWVtcGhhc2lzOiAtNmRC
CgkJTG5rU3RhMjogQ3VycmVudCBEZS1lbXBoYXNpcyBMZXZlbDogLTZkQiwgRXF1YWxpemF0
aW9uQ29tcGxldGUtLCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFz
ZTItLCBFcXVhbGl6YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNh
cGFiaWxpdGllczogW2E0XSBTdWJzeXN0ZW06IFBMWCBUZWNobm9sb2d5LCBJbmMuIFBFWCA4
NjEzIDEyLWxhbmUsIDMtUG9ydCBQQ0kgRXhwcmVzcyBHZW4gMiAoNS4wIEdUL3MpIFN3aXRj
aCBbMTBiNTo4NjEzXQoJQ2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBEZXZpY2UgU2VyaWFsIE51
bWJlciBiYS04Ni0wMS0xMC1iNS1kZi0wZS0wMAoJQ2FwYWJpbGl0aWVzOiBbZmI0IHYxXSBB
ZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0g
Q21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5z
dXBSZXEtIEFDU1Zpb2wtCgkJVUVNc2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8t
IENtcGx0QWJydC0gVW54Q21wbHQtIFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBB
Q1NWaW9sLQoJCVVFU3ZydDoJRExQKyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRB
YnJ0LSBVbnhDbXBsdC0gUnhPRisgTWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wt
CgkJQ0VTdGE6CVJ4RXJyLSBCYWRUTFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBO
b25GYXRhbEVycisKCQlDRU1zazoJUnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXIt
IFRpbWVvdXQtIE5vbkZhdGFsRXJyKwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjog
MWYsIEdlbkNhcCsgQ0dlbkVuLSBDaGtDYXArIENoa0VuLQoJQ2FwYWJpbGl0aWVzOiBbMTQ4
IHYxXSBWaXJ0dWFsIENoYW5uZWwKCQlDYXBzOglMUEVWQz0xIFJlZkNsaz0xMDBucyBQQVRF
bnRyeUJpdHM9MQoJCUFyYjoJRml4ZWQrIFdSUjMyLSBXUlI2NC0gV1JSMTI4LQoJCUN0cmw6
CUFyYlNlbGVjdD1GaXhlZAoJCVN0YXR1czoJSW5Qcm9ncmVzcy0KCQlWQzA6CUNhcHM6CVBB
VE9mZnNldD0wMCBNYXhUaW1lU2xvdHM9MSBSZWpTbm9vcFRyYW5zLQoJCQlBcmI6CUZpeGVk
KyBXUlIzMi0gV1JSNjQtIFdSUjEyOC0gVFdSUjEyOC0gV1JSMjU2LQoJCQlDdHJsOglFbmFi
bGUrIElEPTAgQXJiU2VsZWN0PUZpeGVkIFRDL1ZDPWZmCgkJCVN0YXR1czoJTmVnb1BlbmRp
bmctIEluUHJvZ3Jlc3MtCgkJVkMxOglDYXBzOglQQVRPZmZzZXQ9MDAgTWF4VGltZVNsb3Rz
PTEgUmVqU25vb3BUcmFucy0KCQkJQXJiOglGaXhlZCsgV1JSMzItIFdSUjY0LSBXUlIxMjgt
IFRXUlIxMjgtIFdSUjI1Ni0KCQkJQ3RybDoJRW5hYmxlLSBJRD0xIEFyYlNlbGVjdD1GaXhl
ZCBUQy9WQz0wMAoJCQlTdGF0dXM6CU5lZ29QZW5kaW5nLSBJblByb2dyZXNzLQoJQ2FwYWJp
bGl0aWVzOiBbNTIwIHYxXSBBY2Nlc3MgQ29udHJvbCBTZXJ2aWNlcwoJCUFDU0NhcDoJU3Jj
VmFsaWQrIFRyYW5zQmxrKyBSZXFSZWRpcisgQ21wbHRSZWRpcisgVXBzdHJlYW1Gd2QrIEVn
cmVzc0N0cmwrIERpcmVjdFRyYW5zKwoJCUFDU0N0bDoJU3JjVmFsaWQrIFRyYW5zQmxrLSBS
ZXFSZWRpcisgQ21wbHRSZWRpcisgVXBzdHJlYW1Gd2QrIEVncmVzc0N0cmwtIERpcmVjdFRy
YW5zLQoJQ2FwYWJpbGl0aWVzOiBbOTUwIHYxXSBWZW5kb3IgU3BlY2lmaWMgSW5mb3JtYXRp
b246IElEPTAwMDEgUmV2PTAgTGVuPTAxMCA8Pz4KCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiBw
Y2llcG9ydAoKMDc6MDAuMCBTQVRBIGNvbnRyb2xsZXIgWzAxMDZdOiBNYXJ2ZWxsIFRlY2hu
b2xvZ3kgR3JvdXAgTHRkLiA4OFNFOTEyMyBQQ0llIFNBVEEgNi4wIEdiL3MgY29udHJvbGxl
ciBbMWI0Yjo5MTIzXSAocmV2IDEwKSAocHJvZy1pZiAwMSBbQUhDSSAxLjBdKQoJU3Vic3lz
dGVtOiBBU1VTVGVLIENvbXB1dGVyIEluYy4gRGV2aWNlIFsxMDQzOjg0MDBdCglDb250cm9s
OiBJL08tIE1lbS0gQnVzTWFzdGVyLSBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQ
YXJFcnItIFN0ZXBwaW5nLSBTRVJSLSBGYXN0QjJCLSBEaXNJTlR4LQoJU3RhdHVzOiBDYXAr
IDY2TUh6LSBVREYtIEZhc3RCMkItIFBhckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRB
Ym9ydC0gPE1BYm9ydC0gPlNFUlItIDxQRVJSLSBJTlR4LQoJSW50ZXJydXB0OiBwaW4gQSBy
b3V0ZWQgdG8gSVJRIDM4CglSZWdpb24gMDogSS9PIHBvcnRzIGF0IDk4MDAgW2Rpc2FibGVk
XSBbc2l6ZT04XQoJUmVnaW9uIDE6IEkvTyBwb3J0cyBhdCA5NDAwIFtkaXNhYmxlZF0gW3Np
emU9NF0KCVJlZ2lvbiAyOiBJL08gcG9ydHMgYXQgOTAwMCBbZGlzYWJsZWRdIFtzaXplPThd
CglSZWdpb24gMzogSS9PIHBvcnRzIGF0IDg4MDAgW2Rpc2FibGVkXSBbc2l6ZT00XQoJUmVn
aW9uIDQ6IEkvTyBwb3J0cyBhdCA4NDAwIFtkaXNhYmxlZF0gW3NpemU9MTZdCglSZWdpb24g
NTogTWVtb3J5IGF0IGZkZmZmODAwICgzMi1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtkaXNh
YmxlZF0gW3NpemU9MktdCglFeHBhbnNpb24gUk9NIGF0IGZkZmUwMDAwIFtkaXNhYmxlZF0g
W3NpemU9NjRLXQoJQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lv
biAzCgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShE
MC0sRDEtLEQyLSxEM2hvdCssRDNjb2xkLSkKCQlTdGF0dXM6IEQwIE5vU29mdFJzdC0gUE1F
LUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzUwXSBNU0k6
IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdC0KCQlBZGRyZXNzOiAwMDAwMDAw
MCAgRGF0YTogMDAwMAoJQ2FwYWJpbGl0aWVzOiBbNzBdIEV4cHJlc3MgKHYyKSBMZWdhY3kg
RW5kcG9pbnQsIE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9hZCA1MTIgYnl0ZXMsIFBoYW50
RnVuYyAwLCBMYXRlbmN5IEwwcyA8MXVzLCBMMSA8OHVzCgkJCUV4dFRhZy0gQXR0bkJ0bi0g
QXR0bkluZC0gUHdySW5kLSBSQkUrIEZMUmVzZXQtCgkJRGV2Q3RsOglSZXBvcnQgZXJyb3Jz
OiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0gVW5zdXBwb3J0ZWQtCgkJCVJseGRP
cmQrIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3AtCgkJCU1heFBheWxvYWQg
MTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDUxMiBieXRlcwoJCURldlN0YToJQ29yckVycisgVW5j
b3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVxKyBBdXhQd3ItIFRyYW5zUGVuZC0KCQlMbmtD
YXA6CVBvcnQgIzAsIFNwZWVkIDVHVC9zLCBXaWR0aCB4MSwgQVNQTSBMMHMgTDEsIExhdGVu
Y3kgTDAgPDUxMm5zLCBMMSA8NjR1cwoJCQlDbG9ja1BNLSBTdXJwcmlzZS0gTExBY3RSZXAt
IEJ3Tm90LQoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVk
LSBSZXRyYWluLSBDb21tQ2xrLQoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBC
V0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCA1R1QvcywgV2lkdGggeDEsIFRyRXJy
LSBUcmFpbi0gU2xvdENsaysgRExBY3RpdmUtIEJXTWdtdC0gQUJXTWdtdC0KCQlEZXZDYXAy
OiBDb21wbGV0aW9uIFRpbWVvdXQ6IE5vdCBTdXBwb3J0ZWQsIFRpbWVvdXREaXMrCgkJRGV2
Q3RsMjogQ29tcGxldGlvbiBUaW1lb3V0OiA1MHVzIHRvIDUwbXMsIFRpbWVvdXREaXMtCgkJ
TG5rQ3RsMjogVGFyZ2V0IExpbmsgU3BlZWQ6IDVHVC9zLCBFbnRlckNvbXBsaWFuY2UtIFNw
ZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNpczogLTZkQgoJCQkgVHJhbnNtaXQgTWFy
Z2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlmaWVkQ29tcGxpYW5jZS0g
Q29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFzaXM6IC02ZEIKCQlMbmtT
dGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtNmRCLCBFcXVhbGl6YXRpb25Db21w
bGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJIEVxdWFsaXphdGlvblBoYXNlMi0sIEVx
dWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6YXRpb25SZXF1ZXN0LQoJQ2FwYWJpbGl0
aWVzOiBbMTAwIHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKCQlVRVN0YToJRExQLSBT
REVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFs
ZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVNc2s6CURMUC0gU0RFUy0gVExQ
LSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQtIFJ4T0YtIE1hbGZUTFAtIEVD
UkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQKyBTREVTKyBUTFAtIEZDUCsg
Q21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisgTWFsZlRMUCsgRUNSQy0gVW5z
dXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRUTFAtIEJhZERMTFAtIFJvbGxv
dmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJUnhFcnItIEJhZFRMUC0gQmFk
RExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJyKwoJCUFFUkNhcDoJRmlyc3Qg
RXJyb3IgUG9pbnRlcjogMDAsIEdlbkNhcC0gQ0dlbkVuLSBDaGtDYXAtIENoa0VuLQoJS2Vy
bmVsIGRyaXZlciBpbiB1c2U6IHBjaWJhY2sKCjA4OjAwLjAgVVNCIGNvbnRyb2xsZXIgWzBj
MDNdOiBORUMgQ29ycG9yYXRpb24gdVBENzIwMjAwIFVTQiAzLjAgSG9zdCBDb250cm9sbGVy
IFsxMDMzOjAxOTRdIChyZXYgMDMpIChwcm9nLWlmIDMwIFtYSENJXSkKCVN1YnN5c3RlbTog
QVNVU1RlSyBDb21wdXRlciBJbmMuIFA4UDY3IERlbHV4ZSBNb3RoZXJib2FyZCBbMTA0Mzo4
NDEzXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1XSU5W
LSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5UeC0K
CVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0
ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUludGVy
cnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAzNwoJUmVnaW9uIDA6IE1lbW9yeSBhdCBmZTBm
ZTAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbZGlzYWJsZWRdIFtzaXplPThLXQoJ
Q2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxhZ3M6
IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9MG1BIFBNRShEMCssRDEtLEQyLSxE
M2hvdCssRDNjb2xkLSkKCQlTdGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJsZS0gRFNl
bD0wIERTY2FsZT0wIFBNRS0KCUNhcGFiaWxpdGllczogWzcwXSBNU0k6IEVuYWJsZS0gQ291
bnQ9MS84IE1hc2thYmxlLSA2NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMDAwMDAwMDAwICBE
YXRhOiAwMDAwCglDYXBhYmlsaXRpZXM6IFs5MF0gTVNJLVg6IEVuYWJsZS0gQ291bnQ9OCBN
YXNrZWQtCgkJVmVjdG9yIHRhYmxlOiBCQVI9MCBvZmZzZXQ9MDAwMDEwMDAKCQlQQkE6IEJB
Uj0wIG9mZnNldD0wMDAwMTA4MAoJQ2FwYWJpbGl0aWVzOiBbYTBdIEV4cHJlc3MgKHYyKSBF
bmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEyOCBieXRlcywgUGhhbnRG
dW5jIDAsIExhdGVuY3kgTDBzIHVubGltaXRlZCwgTDEgdW5saW1pdGVkCgkJCUV4dFRhZy0g
QXR0bkJ0bi0gQXR0bkluZC0gUHdySW5kLSBSQkUrIEZMUmVzZXQtCgkJRGV2Q3RsOglSZXBv
cnQgZXJyb3JzOiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0gVW5zdXBwb3J0ZWQt
CgkJCVJseGRPcmQtIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3ArCgkJCU1h
eFBheWxvYWQgMTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDUxMiBieXRlcwoJCURldlN0YToJQ29y
ckVyci0gVW5jb3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVxLSBBdXhQd3ItIFRyYW5zUGVu
ZC0KCQlMbmtDYXA6CVBvcnQgIzAsIFNwZWVkIDVHVC9zLCBXaWR0aCB4MSwgQVNQTSBMMHMg
TDEsIExhdGVuY3kgTDAgPDR1cywgTDEgdW5saW1pdGVkCgkJCUNsb2NrUE0rIFN1cnByaXNl
LSBMTEFjdFJlcC0gQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQgYnl0
ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGstCgkJCUV4dFN5bmNoLSBDbG9ja1BNKyBB
dXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDVHVC9zLCBXaWR0
aCB4MSwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZS0gQldNZ210LSBBQldNZ210
LQoJCURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogTm90IFN1cHBvcnRlZCwgVGltZW91
dERpcysKCQlEZXZDdGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywgVGlt
ZW91dERpcy0KCQlMbmtDdGwyOiBUYXJnZXQgTGluayBTcGVlZDogNUdUL3MsIEVudGVyQ29t
cGxpYW5jZS0gU3BlZWREaXMtLCBTZWxlY3RhYmxlIERlLWVtcGhhc2lzOiAtNmRCCgkJCSBU
cmFuc21pdCBNYXJnaW46IE5vcm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRD
b21wbGlhbmNlLSBDb21wbGlhbmNlU09TLQoJCQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczog
LTZkQgoJCUxua1N0YTI6IEN1cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6IC02ZEIsIEVxdWFs
aXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9uUGhhc2UxLQoJCQkgRXF1YWxpemF0aW9u
UGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwgTGlua0VxdWFsaXphdGlvblJlcXVlc3Qt
CglDYXBhYmlsaXRpZXM6IFsxMDAgdjFdIEFkdmFuY2VkIEVycm9yIFJlcG9ydGluZwoJCVVF
U3RhOglETFAtIFNERVMtIFRMUC0gRkNQLSBDbXBsdFRPLSBDbXBsdEFicnQtIFVueENtcGx0
LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlVRU1zazoJRExQ
LSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRi0g
TWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVTdnJ0OglETFArIFNERVMr
IFRMUC0gRkNQKyBDbXBsdFRPLSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GKyBNYWxmVExQ
KyBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlDRVN0YToJUnhFcnItIEJhZFRMUC0gQmFk
RExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJyKwoJCUNFTXNrOglSeEVyci0g
QmFkVExQLSBCYWRETExQLSBSb2xsb3Zlci0gVGltZW91dC0gTm9uRmF0YWxFcnIrCgkJQUVS
Q2FwOglGaXJzdCBFcnJvciBQb2ludGVyOiAwMCwgR2VuQ2FwLSBDR2VuRW4tIENoa0NhcC0g
Q2hrRW4tCglDYXBhYmlsaXRpZXM6IFsxNDAgdjFdIERldmljZSBTZXJpYWwgTnVtYmVyIGZm
LWZmLWZmLWZmLWZmLWZmLWZmLWZmCglDYXBhYmlsaXRpZXM6IFsxNTAgdjFdIExhdGVuY3kg
VG9sZXJhbmNlIFJlcG9ydGluZwoJCU1heCBzbm9vcCBsYXRlbmN5OiAwbnMKCQlNYXggbm8g
c25vb3AgbGF0ZW5jeTogMG5zCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpYmFjawoKMDk6
MDAuMCBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVyIFswMzAwXTogQWR2YW5jZWQgTWljcm8g
RGV2aWNlcyBbQU1EXSBuZWUgQVRJIFR1cmtzIFtSYWRlb24gSEQgNjU3MF0gWzEwMDI6Njc1
OV0gKHByb2ctaWYgMDAgW1ZHQSBjb250cm9sbGVyXSkKCVN1YnN5c3RlbTogUEMgUGFydG5l
ciBMaW1pdGVkIERldmljZSBbMTc0YjplMTkzXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01h
c3Rlci0gU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0g
U0VSUi0gRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0
QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5T
RVJSLSA8UEVSUi0gSU5UeCsKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAzMgoJ
UmVnaW9uIDA6IE1lbW9yeSBhdCBhMDAwMDAwMCAoNjQtYml0LCBwcmVmZXRjaGFibGUpIFtk
aXNhYmxlZF0gW3NpemU9MjU2TV0KCVJlZ2lvbiAyOiBNZW1vcnkgYXQgZmUxYzAwMDAgKDY0
LWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW2Rpc2FibGVkXSBbc2l6ZT0xMjhLXQoJUmVnaW9u
IDQ6IEkvTyBwb3J0cyBhdCBhMDAwIFtkaXNhYmxlZF0gW3NpemU9MjU2XQoJRXhwYW5zaW9u
IFJPTSBhdCBmZTFhMDAwMCBbZGlzYWJsZWRdIFtzaXplPTEyOEtdCglDYXBhYmlsaXRpZXM6
IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKCQlGbGFnczogUE1FQ2xrLSBEU0kt
IEQxKyBEMisgQXV4Q3VycmVudD0wbUEgUE1FKEQwLSxEMS0sRDItLEQzaG90LSxEM2NvbGQt
KQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBEU2VsPTAgRFNjYWxlPTAg
UE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIEV4cHJlc3MgKHYyKSBMZWdhY3kgRW5kcG9pbnQs
IE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9hZCAyNTYgYnl0ZXMsIFBoYW50RnVuYyAwLCBM
YXRlbmN5IEwwcyA8NHVzLCBMMSB1bmxpbWl0ZWQKCQkJRXh0VGFnKyBBdHRuQnRuLSBBdHRu
SW5kLSBQd3JJbmQtIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6CVJlcG9ydCBlcnJvcnM6IENv
cnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0KCQkJUmx4ZE9yZCsg
RXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsKCQkJTWF4UGF5bG9hZCAxMjgg
Ynl0ZXMsIE1heFJlYWRSZXEgNTEyIGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJyKyBVbmNvcnJF
cnItIEZhdGFsRXJyLSBVbnN1cHBSZXErIEF1eFB3ci0gVHJhbnNQZW5kLQoJCUxua0NhcDoJ
UG9ydCAjMCwgU3BlZWQgNUdUL3MsIFdpZHRoIHgxNiwgQVNQTSBMMHMgTDEsIExhdGVuY3kg
TDAgPDY0bnMsIEwxIDwxdXMKCQkJQ2xvY2tQTS0gU3VycHJpc2UtIExMQWN0UmVwLSBCd05v
dC0KCQlMbmtDdGw6CUFTUE0gRGlzYWJsZWQ7IFJDQiA2NCBieXRlcyBEaXNhYmxlZC0gUmV0
cmFpbi0gQ29tbUNsaysKCQkJRXh0U3luY2gtIENsb2NrUE0tIEF1dFdpZERpcy0gQldJbnQt
IEF1dEJXSW50LQoJCUxua1N0YToJU3BlZWQgMi41R1QvcywgV2lkdGggeDgsIFRyRXJyLSBU
cmFpbi0gU2xvdENsaysgRExBY3RpdmUtIEJXTWdtdC0gQUJXTWdtdC0KCQlEZXZDYXAyOiBD
b21wbGV0aW9uIFRpbWVvdXQ6IE5vdCBTdXBwb3J0ZWQsIFRpbWVvdXREaXMtCgkJRGV2Q3Rs
MjogQ29tcGxldGlvbiBUaW1lb3V0OiA1MHVzIHRvIDUwbXMsIFRpbWVvdXREaXMtCgkJTG5r
Q3RsMjogVGFyZ2V0IExpbmsgU3BlZWQ6IDIuNUdUL3MsIEVudGVyQ29tcGxpYW5jZS0gU3Bl
ZWREaXMtLCBTZWxlY3RhYmxlIERlLWVtcGhhc2lzOiAtNmRCCgkJCSBUcmFuc21pdCBNYXJn
aW46IE5vcm1hbCBPcGVyYXRpbmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBD
b21wbGlhbmNlU09TLQoJCQkgQ29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0
YTI6IEN1cnJlbnQgRGUtZW1waGFzaXMgTGV2ZWw6IC0zLjVkQiwgRXF1YWxpemF0aW9uQ29t
cGxldGUtLCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBF
cXVhbGl6YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxp
dGllczogW2EwXSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKCQlB
ZGRyZXNzOiAwMDAwMDAwMGZlZTAyMDBjICBEYXRhOiA0MDAwCglDYXBhYmlsaXRpZXM6IFsx
MDAgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAwMSBSZXY9MSBMZW49
MDEwIDw/PgoJQ2FwYWJpbGl0aWVzOiBbMTUwIHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRp
bmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBV
bnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVN
c2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQt
IFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQ
KyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisg
TWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJ
UnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJy
KwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMDAsIEdlbkNhcCsgQ0dlbkVuLSBD
aGtDYXArIENoa0VuLQoJS2VybmVsIGRyaXZlciBpbiB1c2U6IHBjaWJhY2sKCjA5OjAwLjEg
QXVkaW8gZGV2aWNlIFswNDAzXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUg
QVRJIFR1cmtzL1doaXN0bGVyIEhETUkgQXVkaW8gW1JhZGVvbiBIRCA2MDAwIFNlcmllc10g
WzEwMDI6YWE5MF0KCVN1YnN5c3RlbTogUEMgUGFydG5lciBMaW1pdGVkIERldmljZSBbMTc0
YjphYTkwXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1X
SU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5U
eC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1m
YXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUlu
dGVycnVwdDogcGluIEIgcm91dGVkIHRvIElSUSAzMwoJUmVnaW9uIDA6IE1lbW9yeSBhdCBm
ZTFmYzAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbZGlzYWJsZWRdIFtzaXplPTE2
S10KCUNhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJCUZs
YWdzOiBQTUVDbGstIERTSS0gRDErIEQyKyBBdXhDdXJyZW50PTBtQSBQTUUoRDAtLEQxLSxE
Mi0sRDNob3QtLEQzY29sZC0pCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFibGUt
IERTZWw9MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAodjIp
IExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDI1NiBieXRl
cywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw0dXMsIEwxIHVubGltaXRlZAoJCQlFeHRU
YWcrIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJlc2V0LQoJCURldkN0bDoJ
UmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9y
dGVkLQoJCQlSbHhkT3JkKyBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29wKwoJ
CQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSA1MTIgYnl0ZXMKCQlEZXZTdGE6
CUNvcnJFcnIrIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcSsgQXV4UHdyLSBUcmFu
c1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMwLCBTcGVlZCA1R1QvcywgV2lkdGggeDE2LCBBU1BN
IEwwcyBMMSwgTGF0ZW5jeSBMMCA8NjRucywgTDEgPDF1cwoJCQlDbG9ja1BNLSBTdXJwcmlz
ZS0gTExBY3RSZXAtIEJ3Tm90LQoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5
dGVzIERpc2FibGVkLSBSZXRyYWluLSBDb21tQ2xrKwoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0g
QXV0V2lkRGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCAyLjVHVC9zLCBX
aWR0aCB4OCwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZS0gQldNZ210LSBBQldN
Z210LQoJCURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogTm90IFN1cHBvcnRlZCwgVGlt
ZW91dERpcy0KCQlEZXZDdGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywg
VGltZW91dERpcy0KCQlMbmtDdGwyOiBUYXJnZXQgTGluayBTcGVlZDogMi41R1QvcywgRW50
ZXJDb21wbGlhbmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC02ZEIK
CQkJIFRyYW5zbWl0IE1hcmdpbjogTm9ybWFsIE9wZXJhdGluZyBSYW5nZSwgRW50ZXJNb2Rp
ZmllZENvbXBsaWFuY2UtIENvbXBsaWFuY2VTT1MtCgkJCSBDb21wbGlhbmNlIERlLWVtcGhh
c2lzOiAtNmRCCgkJTG5rU3RhMjogQ3VycmVudCBEZS1lbXBoYXNpcyBMZXZlbDogLTMuNWRC
LCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJIEVxdWFs
aXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6YXRpb25S
ZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTogRW5hYmxlLSBDb3VudD0xLzEgTWFz
a2FibGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAwMDAwMDAwMDAgIERhdGE6IDAwMDAK
CUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJ
RD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CglDYXBhYmlsaXRpZXM6IFsxNTAgdjFdIEFkdmFu
Y2VkIEVycm9yIFJlcG9ydGluZwoJCVVFU3RhOglETFAtIFNERVMtIFRMUC0gRkNQLSBDbXBs
dFRPLSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1cFJl
cS0gQUNTVmlvbC0KCQlVRU1zazoJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21w
bHRBYnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zp
b2wtCgkJVUVTdnJ0OglETFArIFNERVMrIFRMUC0gRkNQKyBDbXBsdFRPLSBDbXBsdEFicnQt
IFVueENtcGx0LSBSeE9GKyBNYWxmVExQKyBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlD
RVN0YToJUnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZh
dGFsRXJyKwoJCUNFTXNrOglSeEVyci0gQmFkVExQLSBCYWRETExQLSBSb2xsb3Zlci0gVGlt
ZW91dC0gTm9uRmF0YWxFcnIrCgkJQUVSQ2FwOglGaXJzdCBFcnJvciBQb2ludGVyOiAwMCwg
R2VuQ2FwKyBDR2VuRW4tIENoa0NhcCsgQ2hrRW4tCglLZXJuZWwgZHJpdmVyIGluIHVzZTog
cGNpYmFjawoKMGE6MDAuMCBNdWx0aW1lZGlhIHZpZGVvIGNvbnRyb2xsZXIgWzA0MDBdOiBD
b25leGFudCBTeXN0ZW1zLCBJbmMuIERldmljZSBbMTRmMTo4MjEwXQoJQ29udHJvbDogSS9P
LSBNZW0tIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJy
LSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1I
ei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQt
IDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUludGVycnVwdDogcGluIEEgcm91dGVk
IHRvIElSUSA0NwoJUmVnaW9uIDA6IE1lbW9yeSBhdCBmZTIwMDAwMCAoNjQtYml0LCBub24t
cHJlZmV0Y2hhYmxlKSBbZGlzYWJsZWRdIFtzaXplPTJNXQoJQ2FwYWJpbGl0aWVzOiBbNDBd
IEV4cHJlc3MgKHYxKSBFbmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEy
OCBieXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw2NG5zLCBMMSA8MXVzCgkJCUV4
dFRhZy0gQXR0bkJ0bi0gQXR0bkluZC0gUHdySW5kLSBSQkUrIEZMUmVzZXQtCgkJRGV2Q3Rs
OglSZXBvcnQgZXJyb3JzOiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0gVW5zdXBw
b3J0ZWQtCgkJCVJseGRPcmQtIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3Ar
CgkJCU1heFBheWxvYWQgMTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDUxMiBieXRlcwoJCURldlN0
YToJQ29yckVyci0gVW5jb3JyRXJyLSBGYXRhbEVyci0gVW5zdXBwUmVxLSBBdXhQd3ItIFRy
YW5zUGVuZC0KCQlMbmtDYXA6CVBvcnQgIzAsIFNwZWVkIDIuNUdUL3MsIFdpZHRoIHgxLCBB
U1BNIEwwcyBMMSwgTGF0ZW5jeSBMMCA8MnVzLCBMMSA8NHVzCgkJCUNsb2NrUE0tIFN1cnBy
aXNlLSBMTEFjdFJlcC0gQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQg
Ynl0ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGstCgkJCUV4dFN5bmNoLSBDbG9ja1BN
LSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdUL3Ms
IFdpZHRoIHgxLCBUckVyci0gVHJhaW4tIFNsb3RDbGstIERMQWN0aXZlLSBCV01nbXQtIEFC
V01nbXQtCglDYXBhYmlsaXRpZXM6IFs4MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMK
CQlGbGFnczogUE1FQ2xrLSBEU0krIEQxKyBEMisgQXV4Q3VycmVudD0wbUEgUE1FKEQwKyxE
MSssRDIrLEQzaG90KyxEM2NvbGQtKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0KyBQTUUtRW5h
YmxlLSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbOTBdIFZpdGFsIFBy
b2R1Y3QgRGF0YQoJCVVua25vd24gc21hbGwgcmVzb3VyY2UgdHlwZSAwMCwgd2lsbCBub3Qg
ZGVjb2RlIG1vcmUuCglDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUtIENvdW50PTEv
MSBNYXNrYWJsZS0gNjRiaXQrCgkJQWRkcmVzczogMDAwMDAwMDAwMDAwMDAwMCAgRGF0YTog
MDAwMAoJQ2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcK
CQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhD
bXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVNc2s6
CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQtIFJ4
T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQKyBT
REVTLSBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisgTWFs
ZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRUTFAt
IEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJUnhF
cnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJyKwoJ
CUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMDAsIEdlbkNhcC0gQ0dlbkVuLSBDaGtD
YXAtIENoa0VuLQoJQ2FwYWJpbGl0aWVzOiBbMjAwIHYxXSBWaXJ0dWFsIENoYW5uZWwKCQlD
YXBzOglMUEVWQz0xIFJlZkNsaz0xMDBucyBQQVRFbnRyeUJpdHM9MQoJCUFyYjoJRml4ZWQr
IFdSUjMyKyBXUlI2NCsgV1JSMTI4LQoJCUN0cmw6CUFyYlNlbGVjdD1XUlI2NAoJCVN0YXR1
czoJSW5Qcm9ncmVzcy0KCQlQb3J0IEFyYml0cmF0aW9uIFRhYmxlIFsyNDBdIDw/PgoJCVZD
MDoJQ2FwczoJUEFUT2Zmc2V0PTAwIE1heFRpbWVTbG90cz0xIFJlalNub29wVHJhbnMtCgkJ
CUFyYjoJRml4ZWQtIFdSUjMyLSBXUlI2NC0gV1JSMTI4LSBUV1JSMTI4LSBXUlIyNTYtCgkJ
CUN0cmw6CUVuYWJsZSsgSUQ9MCBBcmJTZWxlY3Q9Rml4ZWQgVEMvVkM9ZmYKCQkJU3RhdHVz
OglOZWdvUGVuZGluZy0gSW5Qcm9ncmVzcy0KCQlWQzE6CUNhcHM6CVBBVE9mZnNldD0wMCBN
YXhUaW1lU2xvdHM9MSBSZWpTbm9vcFRyYW5zLQoJCQlBcmI6CUZpeGVkLSBXUlIzMi0gV1JS
NjQtIFdSUjEyOC0gVFdSUjEyOC0gV1JSMjU2LQoJCQlDdHJsOglFbmFibGUtIElEPTEgQXJi
U2VsZWN0PUZpeGVkIFRDL1ZDPTAwCgkJCVN0YXR1czoJTmVnb1BlbmRpbmctIEluUHJvZ3Jl
c3MtCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpYmFjawoKMGI6MDAuMCBVU0IgY29udHJv
bGxlciBbMGMwM106IE5FQyBDb3Jwb3JhdGlvbiB1UEQ3MjAyMDAgVVNCIDMuMCBIb3N0IENv
bnRyb2xsZXIgWzEwMzM6MDE5NF0gKHJldiAwMykgKHByb2ctaWYgMzAgW1hIQ0ldKQoJU3Vi
c3lzdGVtOiBNaWNyby1TdGFyIEludGVybmF0aW9uYWwgQ28uLCBMdGQuIERldmljZSBbMTQ2
Mjo3NjQwXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1X
SU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5U
eC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1m
YXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUlu
dGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSA0OAoJUmVnaW9uIDA6IE1lbW9yeSBhdCBm
ZTVmZTAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbZGlzYWJsZWRdIFtzaXplPThL
XQoJQ2FwYWJpbGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCgkJRmxh
Z3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9Mzc1bUEgUE1FKEQwKyxEMS0s
RDItLEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0KyBQTUUtRW5hYmxl
LSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNzBdIE1TSTogRW5hYmxl
LSBDb3VudD0xLzggTWFza2FibGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAwMDAwMDAw
MDAgIERhdGE6IDAwMDAKCUNhcGFiaWxpdGllczogWzkwXSBNU0ktWDogRW5hYmxlLSBDb3Vu
dD04IE1hc2tlZC0KCQlWZWN0b3IgdGFibGU6IEJBUj0wIG9mZnNldD0wMDAwMTAwMAoJCVBC
QTogQkFSPTAgb2Zmc2V0PTAwMDAxMDgwCglDYXBhYmlsaXRpZXM6IFthMF0gRXhwcmVzcyAo
djIpIEVuZHBvaW50LCBNU0kgMDAKCQlEZXZDYXA6CU1heFBheWxvYWQgMTI4IGJ5dGVzLCBQ
aGFudEZ1bmMgMCwgTGF0ZW5jeSBMMHMgdW5saW1pdGVkLCBMMSB1bmxpbWl0ZWQKCQkJRXh0
VGFnLSBBdHRuQnRuLSBBdHRuSW5kLSBQd3JJbmQtIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6
CVJlcG9ydCBlcnJvcnM6IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBv
cnRlZC0KCQkJUmx4ZE9yZC0gRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsK
CQkJTWF4UGF5bG9hZCAxMjggYnl0ZXMsIE1heFJlYWRSZXEgNTEyIGJ5dGVzCgkJRGV2U3Rh
OglDb3JyRXJyLSBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXEtIEF1eFB3cisgVHJh
bnNQZW5kLQoJCUxua0NhcDoJUG9ydCAjMCwgU3BlZWQgNUdUL3MsIFdpZHRoIHgxLCBBU1BN
IEwwcyBMMSwgTGF0ZW5jeSBMMCA8NHVzLCBMMSB1bmxpbWl0ZWQKCQkJQ2xvY2tQTSsgU3Vy
cHJpc2UtIExMQWN0UmVwLSBCd05vdC0KCQlMbmtDdGw6CUFTUE0gRGlzYWJsZWQ7IFJDQiA2
NCBieXRlcyBEaXNhYmxlZC0gUmV0cmFpbi0gQ29tbUNsaysKCQkJRXh0U3luY2gtIENsb2Nr
UE0rIEF1dFdpZERpcy0gQldJbnQtIEF1dEJXSW50LQoJCUxua1N0YToJU3BlZWQgNUdUL3Ms
IFdpZHRoIHgxLCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlLSBCV01nbXQtIEFC
V01nbXQtCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBOb3QgU3VwcG9ydGVkLCBU
aW1lb3V0RGlzKwoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNTB1cyB0byA1MG1z
LCBUaW1lb3V0RGlzLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiA1R1QvcywgRW50
ZXJDb21wbGlhbmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC02ZEIK
CQkJIFRyYW5zbWl0IE1hcmdpbjogTm9ybWFsIE9wZXJhdGluZyBSYW5nZSwgRW50ZXJNb2Rp
ZmllZENvbXBsaWFuY2UtIENvbXBsaWFuY2VTT1MtCgkJCSBDb21wbGlhbmNlIERlLWVtcGhh
c2lzOiAtNmRCCgkJTG5rU3RhMjogQ3VycmVudCBEZS1lbXBoYXNpcyBMZXZlbDogLTMuNWRC
LCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJIEVxdWFs
aXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6YXRpb25S
ZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbMTAwIHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRp
bmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBV
bnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVN
c2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQt
IFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQ
KyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisg
TWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJ
UnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJy
KwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMDAsIEdlbkNhcC0gQ0dlbkVuLSBD
aGtDYXAtIENoa0VuLQoJQ2FwYWJpbGl0aWVzOiBbMTQwIHYxXSBEZXZpY2UgU2VyaWFsIE51
bWJlciBmZi1mZi1mZi1mZi1mZi1mZi1mZi1mZgoJQ2FwYWJpbGl0aWVzOiBbMTUwIHYxXSBM
YXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcKCQlNYXggc25vb3AgbGF0ZW5jeTogMG5zCgkJ
TWF4IG5vIHNub29wIGxhdGVuY3k6IDBucwoJS2VybmVsIGRyaXZlciBpbiB1c2U6IHBjaWJh
Y2sKCjBjOjAwLjAgRXRoZXJuZXQgY29udHJvbGxlciBbMDIwMF06IFJlYWx0ZWsgU2VtaWNv
bmR1Y3RvciBDby4sIEx0ZC4gUlRMODExMS84MTY4QiBQQ0kgRXhwcmVzcyBHaWdhYml0IEV0
aGVybmV0IGNvbnRyb2xsZXIgWzEwZWM6ODE2OF0gKHJldiAwMykKCVN1YnN5c3RlbTogTWlj
cm8tU3RhciBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLiBEZXZpY2UgWzE0NjI6NzY0MF0KCUNv
bnRyb2w6IEkvTysgTWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25v
b3AtIFBhckVyci0gU3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgrCglTdGF0dXM6
IENhcCsgNjZNSHotIFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0
LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiAwLCBD
YWNoZSBMaW5lIFNpemU6IDY0IGJ5dGVzCglJbnRlcnJ1cHQ6IHBpbiBBIHJvdXRlZCB0byBJ
UlEgMTIzCglSZWdpb24gMDogSS9PIHBvcnRzIGF0IGI4MDAgW3NpemU9MjU2XQoJUmVnaW9u
IDI6IE1lbW9yeSBhdCBiZmVmZjAwMCAoNjQtYml0LCBwcmVmZXRjaGFibGUpIFtzaXplPTRL
XQoJUmVnaW9uIDQ6IE1lbW9yeSBhdCBiZmVmODAwMCAoNjQtYml0LCBwcmVmZXRjaGFibGUp
IFtzaXplPTE2S10KCUV4cGFuc2lvbiBST00gYXQgZmU2ZTAwMDAgW2Rpc2FibGVkXSBbc2l6
ZT0xMjhLXQoJQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAz
CgkJRmxhZ3M6IFBNRUNsay0gRFNJLSBEMSsgRDIrIEF1eEN1cnJlbnQ9Mzc1bUEgUE1FKEQw
KyxEMSssRDIrLEQzaG90KyxEM2NvbGQrKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0KyBQTUUt
RW5hYmxlLSBEU2VsPTAgRFNjYWxlPTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNTBdIE1TSTog
RW5hYmxlKyBDb3VudD0xLzEgTWFza2FibGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAw
ZmVlMDEwMGMgIERhdGE6IDQwMDAKCUNhcGFiaWxpdGllczogWzcwXSBFeHByZXNzICh2Mikg
RW5kcG9pbnQsIE1TSSAwMQoJCURldkNhcDoJTWF4UGF5bG9hZCAyNTYgYnl0ZXMsIFBoYW50
RnVuYyAwLCBMYXRlbmN5IEwwcyA8NTEybnMsIEwxIDw2NHVzCgkJCUV4dFRhZy0gQXR0bkJ0
bi0gQXR0bkluZC0gUHdySW5kLSBSQkUrIEZMUmVzZXQtCgkJRGV2Q3RsOglSZXBvcnQgZXJy
b3JzOiBDb3JyZWN0YWJsZS0gTm9uLUZhdGFsLSBGYXRhbC0gVW5zdXBwb3J0ZWQtCgkJCVJs
eGRPcmQtIEV4dFRhZy0gUGhhbnRGdW5jLSBBdXhQd3ItIE5vU25vb3AtCgkJCU1heFBheWxv
YWQgMTI4IGJ5dGVzLCBNYXhSZWFkUmVxIDQwOTYgYnl0ZXMKCQlEZXZTdGE6CUNvcnJFcnIr
IFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcSsgQXV4UHdyKyBUcmFuc1BlbmQtCgkJ
TG5rQ2FwOglQb3J0ICMwLCBTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MSwgQVNQTSBMMHMgTDEs
IExhdGVuY3kgTDAgPDUxMm5zLCBMMSA8NjR1cwoJCQlDbG9ja1BNKyBTdXJwcmlzZS0gTExB
Y3RSZXAtIEJ3Tm90LQoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERp
c2FibGVkLSBSZXRyYWluLSBDb21tQ2xrKwoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lk
RGlzLSBCV0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCAyLjVHVC9zLCBXaWR0aCB4
MSwgVHJFcnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZS0gQldNZ210LSBBQldNZ210LQoJ
CURldkNhcDI6IENvbXBsZXRpb24gVGltZW91dDogTm90IFN1cHBvcnRlZCwgVGltZW91dERp
cysKCQlEZXZDdGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywgVGltZW91
dERpcy0KCQlMbmtDdGwyOiBUYXJnZXQgTGluayBTcGVlZDogMi41R1QvcywgRW50ZXJDb21w
bGlhbmNlLSBTcGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC02ZEIKCQkJIFRy
YW5zbWl0IE1hcmdpbjogTm9ybWFsIE9wZXJhdGluZyBSYW5nZSwgRW50ZXJNb2RpZmllZENv
bXBsaWFuY2UtIENvbXBsaWFuY2VTT1MtCgkJCSBDb21wbGlhbmNlIERlLWVtcGhhc2lzOiAt
NmRCCgkJTG5rU3RhMjogQ3VycmVudCBEZS1lbXBoYXNpcyBMZXZlbDogLTZkQiwgRXF1YWxp
emF0aW9uQ29tcGxldGUtLCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25Q
aGFzZTItLCBFcXVhbGl6YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0K
CUNhcGFiaWxpdGllczogW2FjXSBNU0ktWDogRW5hYmxlLSBDb3VudD00IE1hc2tlZC0KCQlW
ZWN0b3IgdGFibGU6IEJBUj00IG9mZnNldD0wMDAwMDAwMAoJCVBCQTogQkFSPTQgb2Zmc2V0
PTAwMDAwODAwCglDYXBhYmlsaXRpZXM6IFtjY10gVml0YWwgUHJvZHVjdCBEYXRhCgkJVW5r
bm93biBzbWFsbCByZXNvdXJjZSB0eXBlIDAwLCB3aWxsIG5vdCBkZWNvZGUgbW9yZS4KCUNh
cGFiaWxpdGllczogWzEwMCB2MV0gQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5nCgkJVUVTdGE6
CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8rIENtcGx0QWJydC0gVW54Q21wbHQtIFJ4
T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFTXNrOglETFAtIFNE
RVMtIFRMUC0gRkNQLSBDbXBsdFRPLSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxm
VExQLSBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlVRVN2cnQ6CURMUCsgU0RFUysgVExQ
LSBGQ1ArIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQtIFJ4T0YrIE1hbGZUTFArIEVD
UkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCUNFU3RhOglSeEVyci0gQmFkVExQLSBCYWRETExQ
LSBSb2xsb3Zlci0gVGltZW91dC0gTm9uRmF0YWxFcnIrCgkJQ0VNc2s6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlBRVJDYXA6
CUZpcnN0IEVycm9yIFBvaW50ZXI6IDBlLCBHZW5DYXArIENHZW5Fbi0gQ2hrQ2FwKyBDaGtF
bi0KCUNhcGFiaWxpdGllczogWzE0MCB2MV0gVmlydHVhbCBDaGFubmVsCgkJQ2FwczoJTFBF
VkM9MCBSZWZDbGs9MTAwbnMgUEFURW50cnlCaXRzPTEKCQlBcmI6CUZpeGVkLSBXUlIzMi0g
V1JSNjQtIFdSUjEyOC0KCQlDdHJsOglBcmJTZWxlY3Q9Rml4ZWQKCQlTdGF0dXM6CUluUHJv
Z3Jlc3MtCgkJVkMwOglDYXBzOglQQVRPZmZzZXQ9MDAgTWF4VGltZVNsb3RzPTEgUmVqU25v
b3BUcmFucy0KCQkJQXJiOglGaXhlZC0gV1JSMzItIFdSUjY0LSBXUlIxMjgtIFRXUlIxMjgt
IFdSUjI1Ni0KCQkJQ3RybDoJRW5hYmxlKyBJRD0wIEFyYlNlbGVjdD1GaXhlZCBUQy9WQz1m
ZgoJCQlTdGF0dXM6CU5lZ29QZW5kaW5nLSBJblByb2dyZXNzLQoJQ2FwYWJpbGl0aWVzOiBb
MTYwIHYxXSBEZXZpY2UgU2VyaWFsIE51bWJlciAwMy0wMC0wMC0wMC02OC00Yy1lMC0wMAoJ
S2VybmVsIGRyaXZlciBpbiB1c2U6IHI4MTY5CgowZDowMC4wIEV0aGVybmV0IGNvbnRyb2xs
ZXIgWzAyMDBdOiBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ28uLCBMdGQuIFJUTDgxMTEvODE2
OEIgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyIFsxMGVjOjgxNjhd
IChyZXYgMDMpCglTdWJzeXN0ZW06IE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCBDby4sIEx0
ZC4gRGV2aWNlIFsxNDYyOjc2NDBdCglDb250cm9sOiBJL08rIE1lbSsgQnVzTWFzdGVyKyBT
cGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBG
YXN0QjJCLSBEaXNJTlR4KwoJU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkItIFBh
ckVyci0gREVWU0VMPWZhc3QgPlRBYm9ydC0gPFRBYm9ydC0gPE1BYm9ydC0gPlNFUlItIDxQ
RVJSLSBJTlR4LQoJTGF0ZW5jeTogMCwgQ2FjaGUgTGluZSBTaXplOiA2NCBieXRlcwoJSW50
ZXJydXB0OiBwaW4gQSByb3V0ZWQgdG8gSVJRIDEyMgoJUmVnaW9uIDA6IEkvTyBwb3J0cyBh
dCBjODAwIFtzaXplPTI1Nl0KCVJlZ2lvbiAyOiBNZW1vcnkgYXQgYmZmZmYwMDAgKDY0LWJp
dCwgcHJlZmV0Y2hhYmxlKSBbc2l6ZT00S10KCVJlZ2lvbiA0OiBNZW1vcnkgYXQgYmZmZjgw
MDAgKDY0LWJpdCwgcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xNktdCglFeHBhbnNpb24gUk9NIGF0
IGZlN2UwMDAwIFtkaXNhYmxlZF0gW3NpemU9MTI4S10KCUNhcGFiaWxpdGllczogWzQwXSBQ
b3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJCUZsYWdzOiBQTUVDbGstIERTSS0gRDErIEQy
KyBBdXhDdXJyZW50PTM3NW1BIFBNRShEMCssRDErLEQyKyxEM2hvdCssRDNjb2xkKykKCQlT
dGF0dXM6IEQwIE5vU29mdFJzdCsgUE1FLUVuYWJsZS0gRFNlbD0wIERTY2FsZT0wIFBNRS0K
CUNhcGFiaWxpdGllczogWzUwXSBNU0k6IEVuYWJsZSsgQ291bnQ9MS8xIE1hc2thYmxlLSA2
NGJpdCsKCQlBZGRyZXNzOiAwMDAwMDAwMGZlZTAxMDBjICBEYXRhOiA0MDAwCglDYXBhYmls
aXRpZXM6IFs3MF0gRXhwcmVzcyAodjIpIEVuZHBvaW50LCBNU0kgMDEKCQlEZXZDYXA6CU1h
eFBheWxvYWQgMjU2IGJ5dGVzLCBQaGFudEZ1bmMgMCwgTGF0ZW5jeSBMMHMgPDUxMm5zLCBM
MSA8NjR1cwoJCQlFeHRUYWctIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJl
c2V0LQoJCURldkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0g
RmF0YWwtIFVuc3VwcG9ydGVkLQoJCQlSbHhkT3JkLSBFeHRUYWctIFBoYW50RnVuYy0gQXV4
UHdyLSBOb1Nub29wLQoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSA0MDk2
IGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJyKyBVbmNvcnJFcnItIEZhdGFsRXJyLSBVbnN1cHBS
ZXErIEF1eFB3cisgVHJhbnNQZW5kLQoJCUxua0NhcDoJUG9ydCAjMCwgU3BlZWQgMi41R1Qv
cywgV2lkdGggeDEsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDw1MTJucywgTDEgPDY0dXMK
CQkJQ2xvY2tQTSsgU3VycHJpc2UtIExMQWN0UmVwLSBCd05vdC0KCQlMbmtDdGw6CUFTUE0g
RGlzYWJsZWQ7IFJDQiA2NCBieXRlcyBEaXNhYmxlZC0gUmV0cmFpbi0gQ29tbUNsaysKCQkJ
RXh0U3luY2gtIENsb2NrUE0tIEF1dFdpZERpcy0gQldJbnQtIEF1dEJXSW50LQoJCUxua1N0
YToJU3BlZWQgMi41R1QvcywgV2lkdGggeDEsIFRyRXJyLSBUcmFpbi0gU2xvdENsaysgRExB
Y3RpdmUtIEJXTWdtdC0gQUJXTWdtdC0KCQlEZXZDYXAyOiBDb21wbGV0aW9uIFRpbWVvdXQ6
IE5vdCBTdXBwb3J0ZWQsIFRpbWVvdXREaXMrCgkJRGV2Q3RsMjogQ29tcGxldGlvbiBUaW1l
b3V0OiA1MHVzIHRvIDUwbXMsIFRpbWVvdXREaXMtCgkJTG5rQ3RsMjogVGFyZ2V0IExpbmsg
U3BlZWQ6IDIuNUdUL3MsIEVudGVyQ29tcGxpYW5jZS0gU3BlZWREaXMtLCBTZWxlY3RhYmxl
IERlLWVtcGhhc2lzOiAtNmRCCgkJCSBUcmFuc21pdCBNYXJnaW46IE5vcm1hbCBPcGVyYXRp
bmcgUmFuZ2UsIEVudGVyTW9kaWZpZWRDb21wbGlhbmNlLSBDb21wbGlhbmNlU09TLQoJCQkg
Q29tcGxpYW5jZSBEZS1lbXBoYXNpczogLTZkQgoJCUxua1N0YTI6IEN1cnJlbnQgRGUtZW1w
aGFzaXMgTGV2ZWw6IC02ZEIsIEVxdWFsaXphdGlvbkNvbXBsZXRlLSwgRXF1YWxpemF0aW9u
UGhhc2UxLQoJCQkgRXF1YWxpemF0aW9uUGhhc2UyLSwgRXF1YWxpemF0aW9uUGhhc2UzLSwg
TGlua0VxdWFsaXphdGlvblJlcXVlc3QtCglDYXBhYmlsaXRpZXM6IFthY10gTVNJLVg6IEVu
YWJsZS0gQ291bnQ9NCBNYXNrZWQtCgkJVmVjdG9yIHRhYmxlOiBCQVI9NCBvZmZzZXQ9MDAw
MDAwMDAKCQlQQkE6IEJBUj00IG9mZnNldD0wMDAwMDgwMAoJQ2FwYWJpbGl0aWVzOiBbY2Nd
IFZpdGFsIFByb2R1Y3QgRGF0YQoJCVVua25vd24gc21hbGwgcmVzb3VyY2UgdHlwZSAwMCwg
d2lsbCBub3QgZGVjb2RlIG1vcmUuCglDYXBhYmlsaXRpZXM6IFsxMDAgdjFdIEFkdmFuY2Vk
IEVycm9yIFJlcG9ydGluZwoJCVVFU3RhOglETFAtIFNERVMtIFRMUC0gRkNQLSBDbXBsdFRP
KyBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1cFJlcS0g
QUNTVmlvbC0KCQlVRU1zazoJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRB
YnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wt
CgkJVUVTdnJ0OglETFArIFNERVMrIFRMUC0gRkNQKyBDbXBsdFRPLSBDbXBsdEFicnQtIFVu
eENtcGx0LSBSeE9GKyBNYWxmVExQKyBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlDRVN0
YToJUnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFs
RXJyKwoJCUNFTXNrOglSeEVyci0gQmFkVExQLSBCYWRETExQLSBSb2xsb3Zlci0gVGltZW91
dC0gTm9uRmF0YWxFcnIrCgkJQUVSQ2FwOglGaXJzdCBFcnJvciBQb2ludGVyOiAwZSwgR2Vu
Q2FwKyBDR2VuRW4tIENoa0NhcCsgQ2hrRW4tCglDYXBhYmlsaXRpZXM6IFsxNDAgdjFdIFZp
cnR1YWwgQ2hhbm5lbAoJCUNhcHM6CUxQRVZDPTAgUmVmQ2xrPTEwMG5zIFBBVEVudHJ5Qml0
cz0xCgkJQXJiOglGaXhlZC0gV1JSMzItIFdSUjY0LSBXUlIxMjgtCgkJQ3RybDoJQXJiU2Vs
ZWN0PUZpeGVkCgkJU3RhdHVzOglJblByb2dyZXNzLQoJCVZDMDoJQ2FwczoJUEFUT2Zmc2V0
PTAwIE1heFRpbWVTbG90cz0xIFJlalNub29wVHJhbnMtCgkJCUFyYjoJRml4ZWQtIFdSUjMy
LSBXUlI2NC0gV1JSMTI4LSBUV1JSMTI4LSBXUlIyNTYtCgkJCUN0cmw6CUVuYWJsZSsgSUQ9
MCBBcmJTZWxlY3Q9Rml4ZWQgVEMvVkM9ZmYKCQkJU3RhdHVzOglOZWdvUGVuZGluZy0gSW5Q
cm9ncmVzcy0KCUNhcGFiaWxpdGllczogWzE2MCB2MV0gRGV2aWNlIFNlcmlhbCBOdW1iZXIg
MDQtMDAtMDAtMDAtNjgtNGMtZTAtMDAKCUtlcm5lbCBkcml2ZXIgaW4gdXNlOiByODE2OQoK
MGU6MDAuMCBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVyIFswMzAwXTogQWR2YW5jZWQgTWlj
cm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFR1cmtzIFtSYWRlb24gSEQgNjU3MF0gWzEwMDI6
Njc1OV0gKHByb2ctaWYgMDAgW1ZHQSBjb250cm9sbGVyXSkKCVN1YnN5c3RlbTogUEMgUGFy
dG5lciBMaW1pdGVkIERldmljZSBbMTc0YjplMTkzXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1
c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGlu
Zy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBG
YXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQt
ID5TRVJSLSA8UEVSUi0gSU5UeC0KCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAy
OAoJUmVnaW9uIDA6IE1lbW9yeSBhdCBjMDAwMDAwMCAoNjQtYml0LCBwcmVmZXRjaGFibGUp
IFtkaXNhYmxlZF0gW3NpemU9MjU2TV0KCVJlZ2lvbiAyOiBNZW1vcnkgYXQgZmU4YzAwMDAg
KDY0LWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW2Rpc2FibGVkXSBbc2l6ZT0xMjhLXQoJUmVn
aW9uIDQ6IEkvTyBwb3J0cyBhdCBkMDAwIFtkaXNhYmxlZF0gW3NpemU9MjU2XQoJRXhwYW5z
aW9uIFJPTSBhdCBmZThhMDAwMCBbZGlzYWJsZWRdIFtzaXplPTEyOEtdCglDYXBhYmlsaXRp
ZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKCQlGbGFnczogUE1FQ2xrLSBE
U0ktIEQxKyBEMisgQXV4Q3VycmVudD0wbUEgUE1FKEQwLSxEMS0sRDItLEQzaG90LSxEM2Nv
bGQtKQoJCVN0YXR1czogRDAgTm9Tb2Z0UnN0LSBQTUUtRW5hYmxlLSBEU2VsPTAgRFNjYWxl
PTAgUE1FLQoJQ2FwYWJpbGl0aWVzOiBbNThdIEV4cHJlc3MgKHYyKSBMZWdhY3kgRW5kcG9p
bnQsIE1TSSAwMAoJCURldkNhcDoJTWF4UGF5bG9hZCAyNTYgYnl0ZXMsIFBoYW50RnVuYyAw
LCBMYXRlbmN5IEwwcyA8NHVzLCBMMSB1bmxpbWl0ZWQKCQkJRXh0VGFnKyBBdHRuQnRuLSBB
dHRuSW5kLSBQd3JJbmQtIFJCRSsgRkxSZXNldC0KCQlEZXZDdGw6CVJlcG9ydCBlcnJvcnM6
IENvcnJlY3RhYmxlLSBOb24tRmF0YWwtIEZhdGFsLSBVbnN1cHBvcnRlZC0KCQkJUmx4ZE9y
ZCsgRXh0VGFnLSBQaGFudEZ1bmMtIEF1eFB3ci0gTm9Tbm9vcCsKCQkJTWF4UGF5bG9hZCAx
MjggYnl0ZXMsIE1heFJlYWRSZXEgNTEyIGJ5dGVzCgkJRGV2U3RhOglDb3JyRXJyKyBVbmNv
cnJFcnItIEZhdGFsRXJyLSBVbnN1cHBSZXErIEF1eFB3ci0gVHJhbnNQZW5kLQoJCUxua0Nh
cDoJUG9ydCAjMSwgU3BlZWQgMi41R1QvcywgV2lkdGggeDE2LCBBU1BNIEwwcyBMMSwgTGF0
ZW5jeSBMMCA8NjRucywgTDEgPDF1cwoJCQlDbG9ja1BNLSBTdXJwcmlzZS0gTExBY3RSZXAt
IEJ3Tm90LQoJCUxua0N0bDoJQVNQTSBEaXNhYmxlZDsgUkNCIDY0IGJ5dGVzIERpc2FibGVk
LSBSZXRyYWluLSBDb21tQ2xrKwoJCQlFeHRTeW5jaC0gQ2xvY2tQTS0gQXV0V2lkRGlzLSBC
V0ludC0gQXV0QldJbnQtCgkJTG5rU3RhOglTcGVlZCAyLjVHVC9zLCBXaWR0aCB4OCwgVHJF
cnItIFRyYWluLSBTbG90Q2xrKyBETEFjdGl2ZS0gQldNZ210LSBBQldNZ210LQoJCURldkNh
cDI6IENvbXBsZXRpb24gVGltZW91dDogUmFuZ2UgQUJDRCwgVGltZW91dERpcysKCQlEZXZD
dGwyOiBDb21wbGV0aW9uIFRpbWVvdXQ6IDUwdXMgdG8gNTBtcywgVGltZW91dERpcy0KCQlM
bmtDdGwyOiBUYXJnZXQgTGluayBTcGVlZDogMi41R1QvcywgRW50ZXJDb21wbGlhbmNlLSBT
cGVlZERpcy0sIFNlbGVjdGFibGUgRGUtZW1waGFzaXM6IC02ZEIKCQkJIFRyYW5zbWl0IE1h
cmdpbjogTm9ybWFsIE9wZXJhdGluZyBSYW5nZSwgRW50ZXJNb2RpZmllZENvbXBsaWFuY2Ut
IENvbXBsaWFuY2VTT1MtCgkJCSBDb21wbGlhbmNlIERlLWVtcGhhc2lzOiAtNmRCCgkJTG5r
U3RhMjogQ3VycmVudCBEZS1lbXBoYXNpcyBMZXZlbDogLTZkQiwgRXF1YWxpemF0aW9uQ29t
cGxldGUtLCBFcXVhbGl6YXRpb25QaGFzZTEtCgkJCSBFcXVhbGl6YXRpb25QaGFzZTItLCBF
cXVhbGl6YXRpb25QaGFzZTMtLCBMaW5rRXF1YWxpemF0aW9uUmVxdWVzdC0KCUNhcGFiaWxp
dGllczogW2EwXSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKCQlB
ZGRyZXNzOiAwMDAwMDAwMDAwMDAwMDAwICBEYXRhOiAwMDAwCglDYXBhYmlsaXRpZXM6IFsx
MDAgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAwMSBSZXY9MSBMZW49
MDEwIDw/PgoJQ2FwYWJpbGl0aWVzOiBbMTUwIHYxXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRp
bmcKCQlVRVN0YToJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRBYnJ0LSBV
bnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJVUVN
c2s6CURMUC0gU0RFUy0gVExQLSBGQ1AtIENtcGx0VE8tIENtcGx0QWJydC0gVW54Q21wbHQt
IFJ4T0YtIE1hbGZUTFAtIEVDUkMtIFVuc3VwUmVxLSBBQ1NWaW9sLQoJCVVFU3ZydDoJRExQ
KyBTREVTKyBUTFAtIEZDUCsgQ21wbHRUTy0gQ21wbHRBYnJ0LSBVbnhDbXBsdC0gUnhPRisg
TWFsZlRMUCsgRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wtCgkJQ0VTdGE6CVJ4RXJyLSBCYWRU
TFAtIEJhZERMTFAtIFJvbGxvdmVyLSBUaW1lb3V0LSBOb25GYXRhbEVycisKCQlDRU1zazoJ
UnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFsRXJy
KwoJCUFFUkNhcDoJRmlyc3QgRXJyb3IgUG9pbnRlcjogMDAsIEdlbkNhcCsgQ0dlbkVuLSBD
aGtDYXArIENoa0VuLQoJS2VybmVsIGRyaXZlciBpbiB1c2U6IHBjaWJhY2sKCjBlOjAwLjEg
QXVkaW8gZGV2aWNlIFswNDAzXTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUg
QVRJIFR1cmtzL1doaXN0bGVyIEhETUkgQXVkaW8gW1JhZGVvbiBIRCA2MDAwIFNlcmllc10g
WzEwMDI6YWE5MF0KCVN1YnN5c3RlbTogUEMgUGFydG5lciBMaW1pdGVkIERldmljZSBbMTc0
YjphYTkwXQoJQ29udHJvbDogSS9PLSBNZW0tIEJ1c01hc3Rlci0gU3BlY0N5Y2xlLSBNZW1X
SU5WLSBWR0FTbm9vcC0gUGFyRXJyLSBTdGVwcGluZy0gU0VSUi0gRmFzdEIyQi0gRGlzSU5U
eC0KCVN0YXR1czogQ2FwKyA2Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1m
YXN0ID5UQWJvcnQtIDxUQWJvcnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUlu
dGVycnVwdDogcGluIEIgcm91dGVkIHRvIElSUSAyOQoJUmVnaW9uIDA6IE1lbW9yeSBhdCBm
ZThmYzAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbZGlzYWJsZWRdIFtzaXplPTE2
S10KCUNhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJCUZs
YWdzOiBQTUVDbGstIERTSS0gRDErIEQyKyBBdXhDdXJyZW50PTBtQSBQTUUoRDAtLEQxLSxE
Mi0sRDNob3QtLEQzY29sZC0pCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFibGUt
IERTZWw9MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAodjIp
IExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDI1NiBieXRl
cywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw0dXMsIEwxIHVubGltaXRlZAoJCQlFeHRU
YWcrIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJlc2V0LQoJCURldkN0bDoJ
UmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3VwcG9y
dGVkLQoJCQlSbHhkT3JkKyBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29wKwoJ
CQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSA1MTIgYnl0ZXMKCQlEZXZTdGE6
CUNvcnJFcnIrIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcSsgQXV4UHdyLSBUcmFu
c1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMxLCBTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MTYsIEFT
UE0gTDBzIEwxLCBMYXRlbmN5IEwwIDw2NG5zLCBMMSA8MXVzCgkJCUNsb2NrUE0tIFN1cnBy
aXNlLSBMTEFjdFJlcC0gQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0IgNjQg
Ynl0ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9ja1BN
LSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdUL3Ms
IFdpZHRoIHg4LCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlLSBCV01nbXQtIEFC
V01nbXQtCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBSYW5nZSBBQkNELCBUaW1l
b3V0RGlzKwoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNTB1cyB0byA1MG1zLCBU
aW1lb3V0RGlzLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiAyLjVHVC9zLCBFbnRl
ckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNpczogLTZkQgoJ
CQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRlck1vZGlm
aWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUtZW1waGFz
aXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAtNmRCLCBF
cXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJIEVxdWFsaXph
dGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6YXRpb25SZXF1
ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTogRW5hYmxlLSBDb3VudD0xLzEgTWFza2Fi
bGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAwMDAwMDAwMDAgIERhdGE6IDAwMDAKCUNh
cGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0w
MDAxIFJldj0xIExlbj0wMTAgPD8+CglDYXBhYmlsaXRpZXM6IFsxNTAgdjFdIEFkdmFuY2Vk
IEVycm9yIFJlcG9ydGluZwoJCVVFU3RhOglETFAtIFNERVMtIFRMUC0gRkNQLSBDbXBsdFRP
LSBDbXBsdEFicnQtIFVueENtcGx0LSBSeE9GLSBNYWxmVExQLSBFQ1JDLSBVbnN1cFJlcS0g
QUNTVmlvbC0KCQlVRU1zazoJRExQLSBTREVTLSBUTFAtIEZDUC0gQ21wbHRUTy0gQ21wbHRB
YnJ0LSBVbnhDbXBsdC0gUnhPRi0gTWFsZlRMUC0gRUNSQy0gVW5zdXBSZXEtIEFDU1Zpb2wt
CgkJVUVTdnJ0OglETFArIFNERVMrIFRMUC0gRkNQKyBDbXBsdFRPLSBDbXBsdEFicnQtIFVu
eENtcGx0LSBSeE9GKyBNYWxmVExQKyBFQ1JDLSBVbnN1cFJlcS0gQUNTVmlvbC0KCQlDRVN0
YToJUnhFcnItIEJhZFRMUC0gQmFkRExMUC0gUm9sbG92ZXItIFRpbWVvdXQtIE5vbkZhdGFs
RXJyKwoJCUNFTXNrOglSeEVyci0gQmFkVExQLSBCYWRETExQLSBSb2xsb3Zlci0gVGltZW91
dC0gTm9uRmF0YWxFcnIrCgkJQUVSQ2FwOglGaXJzdCBFcnJvciBQb2ludGVyOiAwMCwgR2Vu
Q2FwKyBDR2VuRW4tIENoa0NhcCsgQ2hrRW4tCglLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNp
YmFjawoKMGY6MDAuMCBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVyIFswMzAwXTogQWR2YW5j
ZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBuZWUgQVRJIFJWNjIwIExFIFtSYWRlb24gSEQgMzQ1
MF0gWzEwMDI6OTVjNV0gKHByb2ctaWYgMDAgW1ZHQSBjb250cm9sbGVyXSkKCVN1YnN5c3Rl
bTogQVNVU1RlSyBDb21wdXRlciBJbmMuIERldmljZSBbMTA0MzowMWQ0XQoJQ29udHJvbDog
SS9PKyBNZW0rIEJ1c01hc3RlcisgU3BlY0N5Y2xlLSBNZW1XSU5WLSBWR0FTbm9vcC0gUGFy
RXJyLSBTdGVwcGluZy0gU0VSUisgRmFzdEIyQi0gRGlzSU5UeC0KCVN0YXR1czogQ2FwKyA2
Nk1Iei0gVURGLSBGYXN0QjJCLSBQYXJFcnItIERFVlNFTD1mYXN0ID5UQWJvcnQtIDxUQWJv
cnQtIDxNQWJvcnQtID5TRVJSLSA8UEVSUi0gSU5UeC0KCUxhdGVuY3k6IDAsIENhY2hlIExp
bmUgU2l6ZTogNjQgYnl0ZXMKCUludGVycnVwdDogcGluIEEgcm91dGVkIHRvIElSUSAxMAoJ
UmVnaW9uIDA6IE1lbW9yeSBhdCBkMDAwMDAwMCAoNjQtYml0LCBwcmVmZXRjaGFibGUpIFtz
aXplPTI1Nk1dCglSZWdpb24gMjogTWVtb3J5IGF0IGZlOWUwMDAwICg2NC1iaXQsIG5vbi1w
cmVmZXRjaGFibGUpIFtzaXplPTY0S10KCVJlZ2lvbiA0OiBJL08gcG9ydHMgYXQgZTAwMCBb
c2l6ZT0yNTZdCglFeHBhbnNpb24gUk9NIGF0IGZlOWMwMDAwIFtkaXNhYmxlZF0gW3NpemU9
MTI4S10KCUNhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwoJ
CUZsYWdzOiBQTUVDbGstIERTSS0gRDErIEQyKyBBdXhDdXJyZW50PTBtQSBQTUUoRDAtLEQx
LSxEMi0sRDNob3QtLEQzY29sZC0pCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1FbmFi
bGUtIERTZWw9MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyAo
djIpIExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEyOCBi
eXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw0dXMsIEwxIHVubGltaXRlZAoJCQlF
eHRUYWcrIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJlc2V0LQoJCURldkN0
bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVuc3Vw
cG9ydGVkLQoJCQlSbHhkT3JkKyBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nub29w
KwoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSAxMjggYnl0ZXMKCQlEZXZT
dGE6CUNvcnJFcnItIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcS0gQXV4UHdyLSBU
cmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMwLCBTcGVlZCAyLjVHVC9zLCBXaWR0aCB4MTYs
IEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDw2NG5zLCBMMSA8MXVzCgkJCUNsb2NrUE0tIFN1
cnByaXNlLSBMTEFjdFJlcC0gQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBSQ0Ig
NjQgYnl0ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBDbG9j
a1BNLSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIuNUdU
L3MsIFdpZHRoIHg4LCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlLSBCV01nbXQt
IEFCV01nbXQtCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBOb3QgU3VwcG9ydGVk
LCBUaW1lb3V0RGlzLQoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNTB1cyB0byA1
MG1zLCBUaW1lb3V0RGlzLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiAyLjVHVC9z
LCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNpczog
LTZkQgoJCQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBFbnRl
ck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2UgRGUt
ZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVsOiAt
NmRCLCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJIEVx
dWFsaXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6YXRp
b25SZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTogRW5hYmxlLSBDb3VudD0xLzEg
TWFza2FibGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAwMDAwMDAwMDAgIERhdGE6IDAw
MDAKCUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9u
OiBJRD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CgowZjowMC4xIEF1ZGlvIGRldmljZSBbMDQw
M106IEFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gbmVlIEFUSSBSVjYyMCBIRE1JIEF1
ZGlvIFtSYWRlb24gSEQgMzQwMCBTZXJpZXNdIFsxMDAyOmFhMjhdCglTdWJzeXN0ZW06IEFT
VVNUZUsgQ29tcHV0ZXIgSW5jLiBEZXZpY2UgWzEwNDM6YWEyOF0KCUNvbnRyb2w6IEkvTysg
TWVtKyBCdXNNYXN0ZXIrIFNwZWNDeWNsZS0gTWVtV0lOVi0gVkdBU25vb3AtIFBhckVyci0g
U3RlcHBpbmctIFNFUlIrIEZhc3RCMkItIERpc0lOVHgrCglTdGF0dXM6IENhcCsgNjZNSHot
IFVERi0gRmFzdEIyQi0gUGFyRXJyLSBERVZTRUw9ZmFzdCA+VEFib3J0LSA8VEFib3J0LSA8
TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCglMYXRlbmN5OiAwLCBDYWNoZSBMaW5lIFNp
emU6IDY0IGJ5dGVzCglJbnRlcnJ1cHQ6IHBpbiBCIHJvdXRlZCB0byBJUlEgMTI0CglSZWdp
b24gMDogTWVtb3J5IGF0IGZlOWZjMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtz
aXplPTE2S10KCUNhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24g
MwoJCUZsYWdzOiBQTUVDbGstIERTSS0gRDErIEQyKyBBdXhDdXJyZW50PTBtQSBQTUUoRDAt
LEQxLSxEMi0sRDNob3QtLEQzY29sZC0pCgkJU3RhdHVzOiBEMCBOb1NvZnRSc3QtIFBNRS1F
bmFibGUtIERTZWw9MCBEU2NhbGU9MCBQTUUtCglDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVz
cyAodjIpIExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCgkJRGV2Q2FwOglNYXhQYXlsb2FkIDEy
OCBieXRlcywgUGhhbnRGdW5jIDAsIExhdGVuY3kgTDBzIDw0dXMsIEwxIHVubGltaXRlZAoJ
CQlFeHRUYWcrIEF0dG5CdG4tIEF0dG5JbmQtIFB3ckluZC0gUkJFKyBGTFJlc2V0LQoJCURl
dkN0bDoJUmVwb3J0IGVycm9yczogQ29ycmVjdGFibGUtIE5vbi1GYXRhbC0gRmF0YWwtIFVu
c3VwcG9ydGVkLQoJCQlSbHhkT3JkKyBFeHRUYWctIFBoYW50RnVuYy0gQXV4UHdyLSBOb1Nu
b29wKwoJCQlNYXhQYXlsb2FkIDEyOCBieXRlcywgTWF4UmVhZFJlcSAxMjggYnl0ZXMKCQlE
ZXZTdGE6CUNvcnJFcnItIFVuY29yckVyci0gRmF0YWxFcnItIFVuc3VwcFJlcS0gQXV4UHdy
LSBUcmFuc1BlbmQtCgkJTG5rQ2FwOglQb3J0ICMwLCBTcGVlZCAyLjVHVC9zLCBXaWR0aCB4
MTYsIEFTUE0gTDBzIEwxLCBMYXRlbmN5IEwwIDw2NG5zLCBMMSA8MXVzCgkJCUNsb2NrUE0t
IFN1cnByaXNlLSBMTEFjdFJlcC0gQndOb3QtCgkJTG5rQ3RsOglBU1BNIERpc2FibGVkOyBS
Q0IgNjQgYnl0ZXMgRGlzYWJsZWQtIFJldHJhaW4tIENvbW1DbGsrCgkJCUV4dFN5bmNoLSBD
bG9ja1BNLSBBdXRXaWREaXMtIEJXSW50LSBBdXRCV0ludC0KCQlMbmtTdGE6CVNwZWVkIDIu
NUdUL3MsIFdpZHRoIHg4LCBUckVyci0gVHJhaW4tIFNsb3RDbGsrIERMQWN0aXZlLSBCV01n
bXQtIEFCV01nbXQtCgkJRGV2Q2FwMjogQ29tcGxldGlvbiBUaW1lb3V0OiBOb3QgU3VwcG9y
dGVkLCBUaW1lb3V0RGlzLQoJCURldkN0bDI6IENvbXBsZXRpb24gVGltZW91dDogNTB1cyB0
byA1MG1zLCBUaW1lb3V0RGlzLQoJCUxua0N0bDI6IFRhcmdldCBMaW5rIFNwZWVkOiAyLjVH
VC9zLCBFbnRlckNvbXBsaWFuY2UtIFNwZWVkRGlzLSwgU2VsZWN0YWJsZSBEZS1lbXBoYXNp
czogLTZkQgoJCQkgVHJhbnNtaXQgTWFyZ2luOiBOb3JtYWwgT3BlcmF0aW5nIFJhbmdlLCBF
bnRlck1vZGlmaWVkQ29tcGxpYW5jZS0gQ29tcGxpYW5jZVNPUy0KCQkJIENvbXBsaWFuY2Ug
RGUtZW1waGFzaXM6IC02ZEIKCQlMbmtTdGEyOiBDdXJyZW50IERlLWVtcGhhc2lzIExldmVs
OiAtNmRCLCBFcXVhbGl6YXRpb25Db21wbGV0ZS0sIEVxdWFsaXphdGlvblBoYXNlMS0KCQkJ
IEVxdWFsaXphdGlvblBoYXNlMi0sIEVxdWFsaXphdGlvblBoYXNlMy0sIExpbmtFcXVhbGl6
YXRpb25SZXF1ZXN0LQoJQ2FwYWJpbGl0aWVzOiBbYTBdIE1TSTogRW5hYmxlKyBDb3VudD0x
LzEgTWFza2FibGUtIDY0Yml0KwoJCUFkZHJlc3M6IDAwMDAwMDAwZmVlMDEwMGMgIERhdGE6
IDQwMDAKCUNhcGFiaWxpdGllczogWzEwMCB2MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0
aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMTAgPD8+CglLZXJuZWwgZHJpdmVyIGluIHVzZTog
c25kX2hkYV9pbnRlbAoK
------------0F00510E42C86A23A
Content-Type: application/octet-stream;
 name="serial.log"
Content-transfer-encoding: base64
Content-Disposition: attachment;
 filename="serial.log"

IF9fICBfXyAgICAgICAgICAgIF8gIF8gICAgX19fXyAgICAgICAgICAgICAgICAgICAgIF8g
ICAgICAgIF8gICAgIF8gICAgICANCiBcIFwvIC9fX18gXyBfXyAgIHwgfHwgfCAgfCBfX198
ICAgIF8gICBfIF8gX18gIF9fX3wgfF8gX18gX3wgfF9fIHwgfCBfX18gDQogIFwgIC8vIF8g
XCAnXyBcICB8IHx8IHxfIHxfX18gXCBfX3wgfCB8IHwgJ18gXC8gX198IF9fLyBfYCB8ICdf
IFx8IHwvIF8gXA0KICAvICBcICBfXy8gfCB8IHwgfF9fICAgX3wgX19fKSB8X198IHxffCB8
IHwgfCBcX18gXCB8fCAoX3wgfCB8XykgfCB8ICBfXy8NCiAvXy9cX1xfX198X3wgfF98ICAg
IHxffChfKV9fX18vICAgIFxfXyxffF98IHxffF9fXy9cX19cX18sX3xfLl9fL3xffFxfX198
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KKFhFTikgWGVuIHZlcnNpb24gNC41LXVuc3RhYmxl
IChyb290QGR5bmRucy5vcmcpIChnY2MtNC43LnJlYWwgKERlYmlhbiA0LjcuMi01KSA0Ljcu
MikgZGVidWc9eSBUaHUgU2VwIDI1IDExOjE4OjEzIENFU1QgMjAxNA0KKFhFTikgTGF0ZXN0
IENoYW5nZVNldDogV2VkIFNlcCAyNCAxMToxOTo1NyAyMDE0ICswMjAwIGdpdDpiNjdhMjZm
LWRpcnR5DQooWEVOKSBDb25zb2xlIG91dHB1dCBpcyBzeW5jaHJvbm91cy4NCihYRU4pIEJv
b3Rsb2FkZXI6IEdSVUIgMS45OS0yNytkZWI3dTINCihYRU4pIENvbW1hbmQgbGluZTogZG9t
MF9tZW09MTUzNk0sbWF4OjE1MzZNIGxvZ2x2bD1hbGwgbG9nbHZsX2d1ZXN0PWFsbCBjb25z
b2xlX3RpbWVzdGFtcHM9ZGF0ZW1zIHZnYT1nZngtMTI4MHgxMDI0eDMyIGNwdWlkbGUgY3B1
ZnJlcT14ZW4gY29tMT0zODQwMCw4bjEgY29uc29sZT12Z2EsY29tMSBpdnJzX2lvYXBpY1s2
XT0wMDoxNC4wIGl2cnNfaHBldFswXT0wMDoxNC4wIGlvbW11PW9uLHZlcmJvc2Ugc3luY19j
b25zb2xlIGNvbnNvbGVfdG9fcmluZyBkZWJ1ZyBsYXBpYz1kZWJ1ZyBhcGljX3ZlcmJvc2l0
eT1kZWJ1ZyBhcGljPWRlYnVnDQooWEVOKSBWaWRlbyBpbmZvcm1hdGlvbjoNCihYRU4pICBW
R0EgaXMgZ3JhcGhpY3MgbW9kZSAxMjgweDEwMjQsIDMyIGJwcA0KKFhFTikgIFZCRS9EREMg
bWV0aG9kczogVjI7IEVESUQgdHJhbnNmZXIgdGltZTogMSBzZWNvbmRzDQooWEVOKSBEaXNj
IGluZm9ybWF0aW9uOg0KKFhFTikgIEZvdW5kIDIgTUJSIHNpZ25hdHVyZXMNCihYRU4pICBG
b3VuZCAyIEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzDQooWEVOKSBYZW4tZTgyMCBSQU0g
bWFwOg0KKFhFTikgIDAwMDAwMDAwMDAwMDAwMDAgLSAwMDAwMDAwMDAwMDk5NDAwICh1c2Fi
bGUpDQooWEVOKSAgMDAwMDAwMDAwMDA5OTQwMCAtIDAwMDAwMDAwMDAwYTAwMDAgKHJlc2Vy
dmVkKQ0KKFhFTikgIDAwMDAwMDAwMDAwZTQwMDAgLSAwMDAwMDAwMDAwMTAwMDAwIChyZXNl
cnZlZCkNCihYRU4pICAwMDAwMDAwMDAwMTAwMDAwIC0gMDAwMDAwMDA5ZmY5MDAwMCAodXNh
YmxlKQ0KKFhFTikgIDAwMDAwMDAwOWZmOTAwMDAgLSAwMDAwMDAwMDlmZjllMDAwIChBQ1BJ
IGRhdGEpDQooWEVOKSAgMDAwMDAwMDA5ZmY5ZTAwMCAtIDAwMDAwMDAwOWZmZTAwMDAgKEFD
UEkgTlZTKQ0KKFhFTikgIDAwMDAwMDAwOWZmZTAwMDAgLSAwMDAwMDAwMGEwMDAwMDAwIChy
ZXNlcnZlZCkNCihYRU4pICAwMDAwMDAwMGZmZTAwMDAwIC0gMDAwMDAwMDEwMDAwMDAwMCAo
cmVzZXJ2ZWQpDQooWEVOKSAgMDAwMDAwMDEwMDAwMDAwMCAtIDAwMDAwMDA1NjAwMDAwMDAg
KHVzYWJsZSkNCihYRU4pIEFDUEk6IFJTRFAgMDAwRkIxMDAsIDAwMTQgKHIwIEFDUElBTSkN
CihYRU4pIEFDUEk6IFJTRFQgOUZGOTAwMDAsIDAwNDggKHIxIE1TSSAgICBPRU1TTElDICAy
MDEwMDkxMyBNU0ZUICAgICAgIDk3KQ0KKFhFTikgQUNQSTogRkFDUCA5RkY5MDIwMCwgMDA4
NCAocjEgNzY0ME1TIEE3NjQwMTAwIDIwMTAwOTEzIE1TRlQgICAgICAgOTcpDQooWEVOKSBB
Q1BJOiBEU0RUIDlGRjkwNUUwLCA5NDI3IChyMSAgQTc2NDAgQTc2NDAxMDAgICAgICAxMDAg
SU5UTCAyMDA1MTExNykNCihYRU4pIEFDUEk6IEZBQ1MgOUZGOUUwMDAsIDAwNDANCihYRU4p
IEFDUEk6IEFQSUMgOUZGOTAzOTAsIDAwODggKHIxIDc2NDBNUyBBNzY0MDEwMCAyMDEwMDkx
MyBNU0ZUICAgICAgIDk3KQ0KKFhFTikgQUNQSTogTUNGRyA5RkY5MDQyMCwgMDAzQyAocjEg
NzY0ME1TIE9FTU1DRkcgIDIwMTAwOTEzIE1TRlQgICAgICAgOTcpDQooWEVOKSBBQ1BJOiBT
TElDIDlGRjkwNDYwLCAwMTc2IChyMSBNU0kgICAgT0VNU0xJQyAgMjAxMDA5MTMgTVNGVCAg
ICAgICA5NykNCihYRU4pIEFDUEk6IE9FTUIgOUZGOUUwNDAsIDAwNzIgKHIxIDc2NDBNUyBB
NzY0MDEwMCAyMDEwMDkxMyBNU0ZUICAgICAgIDk3KQ0KKFhFTikgQUNQSTogU1JBVCA5RkY5
QTVFMCwgMDEwOCAocjMgQU1EICAgIEZBTV9GXzEwICAgICAgICAyIEFNRCAgICAgICAgIDEp
DQooWEVOKSBBQ1BJOiBIUEVUIDlGRjlBNkYwLCAwMDM4IChyMSA3NjQwTVMgT0VNSFBFVCAg
MjAxMDA5MTMgTVNGVCAgICAgICA5NykNCihYRU4pIEFDUEk6IElWUlMgOUZGOUE3MzAsIDAx
MTAgKHIxICBBTUQgICAgIFJEODkwUyAgIDIwMjAzMSBBTUQgICAgICAgICAwKQ0KKFhFTikg
QUNQSTogU1NEVCA5RkY5QTg0MCwgMERBNCAocjEgQSBNIEkgIFBPV0VSTk9XICAgICAgICAx
IEFNRCAgICAgICAgIDEpDQooWEVOKSBTeXN0ZW0gUkFNOiAyMDQ3OU1CICgyMDk3MDY2MGtC
KQ0KKFhFTikgU1JBVDogUFhNIDAgLT4gQVBJQyAwIC0+IE5vZGUgMA0KKFhFTikgU1JBVDog
UFhNIDAgLT4gQVBJQyAxIC0+IE5vZGUgMA0KKFhFTikgU1JBVDogUFhNIDAgLT4gQVBJQyAy
IC0+IE5vZGUgMA0KKFhFTikgU1JBVDogUFhNIDAgLT4gQVBJQyAzIC0+IE5vZGUgMA0KKFhF
TikgU1JBVDogUFhNIDAgLT4gQVBJQyA0IC0+IE5vZGUgMA0KKFhFTikgU1JBVDogUFhNIDAg
LT4gQVBJQyA1IC0+IE5vZGUgMA0KKFhFTikgU1JBVDogTm9kZSAwIFBYTSAwIDAtYTAwMDAN
CihYRU4pIFNSQVQ6IE5vZGUgMCBQWE0gMCAxMDAwMDAtYTAwMDAwMDANCihYRU4pIFNSQVQ6
IE5vZGUgMCBQWE0gMCAxMDAwMDAwMDAtNTYwMDAwMDAwDQooWEVOKSBOVU1BOiBBbGxvY2F0
ZWQgbWVtbm9kZW1hcCBmcm9tIDU1ZDBiNTAwMCAtIDU1ZDBiYjAwMA0KKFhFTikgTlVNQTog
VXNpbmcgOCBmb3IgdGhlIGhhc2ggc2hpZnQuDQooWEVOKSBEb21haW4gaGVhcCBpbml0aWFs
aXNlZA0KKFhFTikgdmVzYWZiOiBmcmFtZWJ1ZmZlciBhdCAweGQwMDAwMDAwLCBtYXBwZWQg
dG8gMHhmZmZmODJjMDAwMjAxMDAwLCB1c2luZyA2MTQ0aywgdG90YWwgMTYzODRrDQooWEVO
KSB2ZXNhZmI6IG1vZGUgaXMgMTI4MHgxMDI0eDMyLCBsaW5lbGVuZ3RoPTUxMjAsIGZvbnQg
OHgxNg0KKFhFTikgdmVzYWZiOiBUcnVlY29sb3I6IHNpemU9MDo4Ojg6OCwgc2hpZnQ9MDox
Njo4OjANCihYRU4pIGZvdW5kIFNNUCBNUC10YWJsZSBhdCAwMDBmZjc4MA0KKFhFTikgRE1J
IHByZXNlbnQuDQooWEVOKSBBUElDIGJvb3Qgc3RhdGUgaXMgJ3hhcGljJw0KKFhFTikgVXNp
bmcgQVBJQyBkcml2ZXIgZGVmYXVsdA0KKFhFTikgQUNQSTogUE0tVGltZXIgSU8gUG9ydDog
MHg4MDgNCihYRU4pIEFDUEk6IFNMRUVQIElORk86IHBtMXhfY250WzE6ODA0LDE6MF0sIHBt
MXhfZXZ0WzE6ODAwLDE6MF0NCihYRU4pIEFDUEk6ICAgICAgICAgICAgIHdha2V1cF92ZWNb
OWZmOWUwMGNdLCB2ZWNfc2l6ZVsyMF0NCihYRU4pIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVz
cyAweGZlZTAwMDAwDQooWEVOKSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAxXSBsYXBpY19p
ZFsweDAwXSBlbmFibGVkKQ0KKFhFTikgUHJvY2Vzc29yICMwIDA6MTAgQVBJQyB2ZXJzaW9u
IDE2DQooWEVOKSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAyXSBsYXBpY19pZFsweDAxXSBl
bmFibGVkKQ0KKFhFTikgUHJvY2Vzc29yICMxIDA6MTAgQVBJQyB2ZXJzaW9uIDE2DQooWEVO
KSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAzXSBsYXBpY19pZFsweDAyXSBlbmFibGVkKQ0K
KFhFTikgUHJvY2Vzc29yICMyIDA6MTAgQVBJQyB2ZXJzaW9uIDE2DQooWEVOKSBBQ1BJOiBM
QVBJQyAoYWNwaV9pZFsweDA0XSBsYXBpY19pZFsweDAzXSBlbmFibGVkKQ0KKFhFTikgUHJv
Y2Vzc29yICMzIDA6MTAgQVBJQyB2ZXJzaW9uIDE2DQooWEVOKSBBQ1BJOiBMQVBJQyAoYWNw
aV9pZFsweDA1XSBsYXBpY19pZFsweDA0XSBlbmFibGVkKQ0KKFhFTikgUHJvY2Vzc29yICM0
IDA6MTAgQVBJQyB2ZXJzaW9uIDE2DQooWEVOKSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDA2
XSBsYXBpY19pZFsweDA1XSBlbmFibGVkKQ0KKFhFTikgUHJvY2Vzc29yICM1IDA6MTAgQVBJ
QyB2ZXJzaW9uIDE2DQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4MDZdIGFkZHJlc3NbMHhm
ZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pDQooWEVOKSBJT0FQSUNbMF06IGFwaWNfaWQgNiwgdmVy
c2lvbiAzMywgYWRkcmVzcyAweGZlYzAwMDAwLCBHU0kgMC0yMw0KKFhFTikgQUNQSTogSU9B
UElDIChpZFsweDA3XSBhZGRyZXNzWzB4ZmVjMjAwMDBdIGdzaV9iYXNlWzI0XSkNCihYRU4p
IElPQVBJQ1sxXTogYXBpY19pZCA3LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMjAwMDAs
IEdTSSAyNC01NQ0KKFhFTikgQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19pcnEgMCBn
bG9iYWxfaXJxIDIgZGZsIGRmbCkNCihYRU4pIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBi
dXNfaXJxIDkgZ2xvYmFsX2lycSA5IGxvdyBsZXZlbCkNCihYRU4pIEFDUEk6IElSUTAgdXNl
ZCBieSBvdmVycmlkZS4NCihYRU4pIEFDUEk6IElSUTIgdXNlZCBieSBvdmVycmlkZS4NCihY
RU4pIEFDUEk6IElSUTkgdXNlZCBieSBvdmVycmlkZS4NCihYRU4pIEVuYWJsaW5nIEFQSUMg
bW9kZTogIEZsYXQuICBVc2luZyAyIEkvTyBBUElDcw0KKFhFTikgQUNQSTogSFBFVCBpZDog
MHg4MzAwIGJhc2U6IDB4ZmVkMDAwMDANCihYRU4pIEVSU1QgdGFibGUgd2FzIG5vdCBmb3Vu
ZA0KKFhFTikgVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9y
bWF0aW9uDQooWEVOKSBTTVA6IEFsbG93aW5nIDYgQ1BVcyAoMCBob3RwbHVnIENQVXMpDQoo
WEVOKSBtYXBwZWQgQVBJQyB0byBmZmZmODJjZmZmZGZiMDAwIChmZWUwMDAwMCkNCihYRU4p
IG1hcHBlZCBJT0FQSUMgdG8gZmZmZjgyY2ZmZmRmYTAwMCAoZmVjMDAwMDApDQooWEVOKSBt
YXBwZWQgSU9BUElDIHRvIGZmZmY4MmNmZmZkZjkwMDAgKGZlYzIwMDAwKQ0KKFhFTikgSVJR
IGxpbWl0czogNTYgR1NJLCAxMTEyIE1TSS9NU0ktWA0KKFhFTikgVXNpbmcgc2NoZWR1bGVy
OiBTTVAgQ3JlZGl0IFNjaGVkdWxlciAoY3JlZGl0KQ0KKFhFTikgRGV0ZWN0ZWQgMzIwMC4x
NzMgTUh6IHByb2Nlc3Nvci4NCihYRU4pIEluaXRpbmcgbWVtb3J5IHNoYXJpbmcuDQooWEVO
KSBBTUQgRmFtMTBoIG1hY2hpbmUgY2hlY2sgcmVwb3J0aW5nIGVuYWJsZWQNCihYRU4pIGFs
dCB0YWJsZSBmZmZmODJkMDgwMmQ2OWYwIC0+IGZmZmY4MmQwODAyZDc5ZjgNCihYRU4pIFBD
STogTUNGRyBjb25maWd1cmF0aW9uIDA6IGJhc2UgZTAwMDAwMDAgc2VnbWVudCAwMDAwIGJ1
c2VzIDAwIC0gZmYNCihYRU4pIFBDSTogTm90IHVzaW5nIE1DRkcgZm9yIHNlZ21lbnQgMDAw
MCBidXMgMDAtZmYNCihYRU4pIEFNRC1WaTogRGlzYWJsZWQgSEFQIG1lbW9yeSBtYXAgc2hh
cmluZyB3aXRoIElPTU1VDQooWEVOKSBBTUQtVmk6IElPTU1VIDAgRW5hYmxlZC4NCihYRU4p
IEkvTyB2aXJ0dWFsaXNhdGlvbiBlbmFibGVkDQooWEVOKSAgLSBEb20wIG1vZGU6IFJlbGF4
ZWQNCihYRU4pIEludGVycnVwdCByZW1hcHBpbmcgZW5hYmxlZA0KKFhFTikgR2V0dGluZyBW
RVJTSU9OOiA4MDA1MDAxMA0KKFhFTikgR2V0dGluZyBWRVJTSU9OOiA4MDA1MDAxMA0KKFhF
TikgR2V0dGluZyBJRDogMA0KKFhFTikgR2V0dGluZyBMVlQwOiA3MDANCihYRU4pIEdldHRp
bmcgTFZUMTogNDAwDQooWEVOKSBlbmFibGVkIEV4dElOVCBvbiBDUFUjMA0KKFhFTikgRVNS
IHZhbHVlIGJlZm9yZSBlbmFibGluZyB2ZWN0b3I6IDB4NCAgYWZ0ZXI6IDANCihYRU4pIEVO
QUJMSU5HIElPLUFQSUMgSVJRcw0KKFhFTikgIC0+IFVzaW5nIG5ldyBBQ0sgbWV0aG9kDQoo
WEVOKSBpbml0IElPX0FQSUMgSVJRcw0KKFhFTikgIElPLUFQSUMgKGFwaWNpZC1waW4pIDYt
MCwgNi0xNiwgNi0xNywgNi0xOCwgNi0xOSwgNi0yMCwgNi0yMSwgNi0yMiwgNi0yMywgNy0w
LCA3LTEsIDctMiwgNy0zLCA3LTQsIDctNSwgNy02LCA3LTcsIDctOCwgNy05LCA3LTEwLCA3
LTExLCA3LTEyLCA3LTEzLCA3LTE0LCA3LTE1LCA3LTE2LCA3LTE3LCA3LTE4LCA3LTE5LCA3
LTIwLCA3LTIxLCA3LTIyLCA3LTIzLCA3LTI0LCA3LTI1LCA3LTI2LCA3LTI3LCA3LTI4LCA3
LTI5LCA3LTMwLCA3LTMxIG5vdCBjb25uZWN0ZWQuDQooWEVOKSAuLlRJTUVSOiB2ZWN0b3I9
MHhGMCBhcGljMT0wIHBpbjE9MiBhcGljMj0tMSBwaW4yPS0xDQooWEVOKSBudW1iZXIgb2Yg
TVAgSVJRIHNvdXJjZXM6IDE1Lg0KKFhFTikgbnVtYmVyIG9mIElPLUFQSUMgIzYgcmVnaXN0
ZXJzOiAyNC4NCihYRU4pIG51bWJlciBvZiBJTy1BUElDICM3IHJlZ2lzdGVyczogMzIuDQoo
WEVOKSB0ZXN0aW5nIHRoZSBJTyBBUElDLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCihYRU4p
IElPIEFQSUMgIzYuLi4uLi4NCihYRU4pIC4uLi4gcmVnaXN0ZXIgIzAwOiAwNjAwMDAwMA0K
KFhFTikgLi4uLi4uLiAgICA6IHBoeXNpY2FsIEFQSUMgaWQ6IDA2DQooWEVOKSAuLi4uLi4u
ICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgLi4uLi4uLiAgICA6IExUUyAgICAgICAg
ICA6IDANCihYRU4pIC4uLi4gcmVnaXN0ZXIgIzAxOiAwMDE3ODAyMQ0KKFhFTikgLi4uLi4u
LiAgICAgOiBtYXggcmVkaXJlY3Rpb24gZW50cmllczogMDAxNw0KKFhFTikgLi4uLi4uLiAg
ICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4pIC4uLi4uLi4gICAgIDogSU8gQVBJQyB2
ZXJzaW9uOiAwMDIxDQooWEVOKSAuLi4uIHJlZ2lzdGVyICMwMjogMDYwMDAwMDANCihYRU4p
IC4uLi4uLi4gICAgIDogYXJiaXRyYXRpb246IDA2DQooWEVOKSAuLi4uIHJlZ2lzdGVyICMw
MzogMDcwMDAwMDANCihYRU4pIC4uLi4uLi4gICAgIDogQm9vdCBEVCAgICA6IDANCihYRU4p
IC4uLi4gSVJRIHJlZGlyZWN0aW9uIHRhYmxlOg0KKFhFTikgIE5SIExvZyBQaHkgTWFzayBU
cmlnIElSUiBQb2wgU3RhdCBEZXN0IERlbGkgVmVjdDogICANCihYRU4pICAwMCAwMDAgMDAg
IDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMwDQooWEVOKSAgMDEgMDAxIDAx
ICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICAzMA0KKFhFTikgIDAyIDAwMSAw
MSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgRjANCihYRU4pICAwMyAwMDEg
MDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDM4DQooWEVOKSAgMDQgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICBGMQ0KKFhFTikgIDA1IDAw
MSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNDANCihYRU4pICAwNiAw
MDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDQ4DQooWEVOKSAgMDcg
MDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA1MA0KKFhFTikgIDA4
IDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNTgNCihYRU4pICAw
OSAwMDEgMDEgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSAg
MGEgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA2OA0KKFhFTikg
IDBiIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNzANCihYRU4p
ICAwYyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDc4DQooWEVO
KSAgMGQgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA4OA0KKFhF
TikgIDBlIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgOTANCihY
RU4pICAwZiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDk4DQoo
WEVOKSAgMTAgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0K
KFhFTikgIDExIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDEgICAgMzAN
CihYRU4pICAxMiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMw
DQooWEVOKSAgMTMgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAz
MA0KKFhFTikgIDE0IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDEgICAg
MzANCihYRU4pICAxNSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAg
IDMwDQooWEVOKSAgMTYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAg
ICAzMA0KKFhFTikgIDE3IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDEg
ICAgMzANCihYRU4pIElPIEFQSUMgIzcuLi4uLi4NCihYRU4pIC4uLi4gcmVnaXN0ZXIgIzAw
OiAwNzAwMDAwMA0KKFhFTikgLi4uLi4uLiAgICA6IHBoeXNpY2FsIEFQSUMgaWQ6IDA3DQoo
WEVOKSAuLi4uLi4uICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgLi4uLi4uLiAgICA6
IExUUyAgICAgICAgICA6IDANCihYRU4pIC4uLi4gcmVnaXN0ZXIgIzAxOiAwMDFGODAyMQ0K
KFhFTikgLi4uLi4uLiAgICAgOiBtYXggcmVkaXJlY3Rpb24gZW50cmllczogMDAxRg0KKFhF
TikgLi4uLi4uLiAgICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4pIC4uLi4uLi4gICAg
IDogSU8gQVBJQyB2ZXJzaW9uOiAwMDIxDQooWEVOKSAuLi4uIHJlZ2lzdGVyICMwMjogMDAw
MDAwMDANCihYRU4pIC4uLi4uLi4gICAgIDogYXJiaXRyYXRpb246IDAwDQooWEVOKSAuLi4u
IElSUSByZWRpcmVjdGlvbiB0YWJsZToNCihYRU4pICBOUiBMb2cgUGh5IE1hc2sgVHJpZyBJ
UlIgUG9sIFN0YXQgRGVzdCBEZWxpIFZlY3Q6ICAgDQooWEVOKSAgMDAgMDAwIDAwICAxICAg
IDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikgIDAxIDAwMCAwMCAgMSAg
ICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4pICAwMiAwMDAgMDAgIDEg
ICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSAgMDMgMDAwIDAwICAx
ICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikgIDA0IDAwMCAwMCAg
MSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4pICAwNSAwMDAgMDAg
IDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSAgMDYgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikgIDA3IDAwMCAw
MCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4pICAwOCAwMDAg
MDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSAgMDkgMDAw
IDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikgIDBhIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4pICAwYiAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSAgMGMg
MDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikgIDBk
IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4pICAw
ZSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSAg
MGYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhFTikg
IDEwIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihYRU4p
ICAxMSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVO
KSAgMTIgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KKFhF
TikgIDEzIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCihY
RU4pICAxNCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQoo
WEVOKSAgMTUgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0K
KFhFTikgIDE2IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDAN
CihYRU4pICAxNyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAw
DQooWEVOKSAgMTggMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAw
MA0KKFhFTikgIDE5IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAg
MDANCihYRU4pICAxYSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IDAwDQooWEVOKSAgMWIgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAg
ICAwMA0KKFhFTikgIDFjIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAg
ICAgMDANCihYRU4pICAxZCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAw
ICAgIDAwDQooWEVOKSAgMWUgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAg
MCAgICAwMA0KKFhFTikgIDFmIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAg
IDAgICAgMDANCihYRU4pIFVzaW5nIHZlY3Rvci1iYXNlZCBpbmRleGluZw0KKFhFTikgSVJR
IHRvIHBpbiBtYXBwaW5nczoNCihYRU4pIElSUTI0MCAtPiAwOjINCihYRU4pIElSUTQ4IC0+
IDA6MQ0KKFhFTikgSVJRNTYgLT4gMDozDQooWEVOKSBJUlEyNDEgLT4gMDo0DQooWEVOKSBJ
UlE2NCAtPiAwOjUNCihYRU4pIElSUTcyIC0+IDA6Ng0KKFhFTikgSVJRODAgLT4gMDo3DQoo
WEVOKSBJUlE4OCAtPiAwOjgNCihYRU4pIElSUTk2IC0+IDA6OQ0KKFhFTikgSVJRMTA0IC0+
IDA6MTANCihYRU4pIElSUTExMiAtPiAwOjExDQooWEVOKSBJUlExMjAgLT4gMDoxMg0KKFhF
TikgSVJRMTM2IC0+IDA6MTMNCihYRU4pIElSUTE0NCAtPiAwOjE0DQooWEVOKSBJUlExNTIg
LT4gMDoxNQ0KKFhFTikgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIGRv
bmUuDQooWEVOKSBVc2luZyBsb2NhbCBBUElDIHRpbWVyIGludGVycnVwdHMuDQooWEVOKSBj
YWxpYnJhdGluZyBBUElDIHRpbWVyIC4uLg0KKFhFTikgLi4uLi4gQ1BVIGNsb2NrIHNwZWVk
IGlzIDMyMDAuMTA2OSBNSHouDQooWEVOKSAuLi4uLiBob3N0IGJ1cyBjbG9jayBzcGVlZCBp
cyAyMDAuMDA2NiBNSHouDQooWEVOKSAuLi4uLiBidXNfc2NhbGUgPSAweGNjZDcNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjMxLjM0NV0gUGxhdGZvcm0gdGltZXIgaXMgMTQuMzE4TUh6
IEhQRVQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMxLjM2OF0gQWxsb2NhdGVkIGNvbnNv
bGUgcmluZyBvZiA2NCBLaUIuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS4zOTBdIEhW
TTogQVNJRHMgZW5hYmxlZC4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMxLjQwOV0gU1ZN
OiBTdXBwb3J0ZWQgYWR2YW5jZWQgZmVhdHVyZXM6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozMS40MzJdICAtIE5lc3RlZCBQYWdlIFRhYmxlcyAoTlBUKQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MDg6MzEuNDUzXSAgLSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgVmlydHVhbGlz
YXRpb24NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMxLjQ3OF0gIC0gTmV4dC1SSVAgU2F2
ZWQgb24gI1ZNRVhJVA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzEuNTAwXSAgLSBQYXVz
ZS1JbnRlcmNlcHQgRmlsdGVyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS41MjBdIEhW
TTogU1ZNIGVuYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMxLjUzOV0gSFZNOiBI
YXJkd2FyZSBBc3Npc3RlZCBQYWdpbmcgKEhBUCkgZGV0ZWN0ZWQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjA4OjMxLjU2NV0gSFZNOiBIQVAgcGFnZSBzaXplczogNGtCLCAyTUIsIDFHQg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzEuNTg4XSBIVk06IFBWSCBtb2RlIG5vdCBzdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzEuNjM0
XSBtYXNrZWQgRXh0SU5UIG9uIENQVSMxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS42
NzRdIG1hc2tlZCBFeHRJTlQgb24gQ1BVIzINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMx
LjcxNV0gbWFza2VkIEV4dElOVCBvbiBDUFUjMw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6
MzEuNzU1XSBtYXNrZWQgRXh0SU5UIG9uIENQVSM0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozMS43OTZdIG1hc2tlZCBFeHRJTlQgb24gQ1BVIzUNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjA4OjMxLjgxNl0gQnJvdWdodCB1cCA2IENQVXMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4
OjMxLjgzOV0gSFBFVDogMyB0aW1lcnMgdXNhYmxlIGZvciBicm9hZGNhc3QgKDMgdG90YWwp
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS44ODVdIEFDUEkgc2xlZXAgbW9kZXM6IFMz
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS45MDVdIE1DQTogVXNlIGh3IHRocmVzaG9s
ZGluZyB0byBhZGp1c3QgcG9sbGluZyBmcmVxdWVuY3kNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjA4OjMxLjkzM10gbWNoZWNrX3BvbGw6IE1hY2hpbmUgY2hlY2sgcG9sbGluZyB0aW1lciBz
dGFydGVkLg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzEuOTYxXSBYZW5vcHJvZmlsZTog
RmFpbGVkIHRvIHNldHVwIElCUyBMVlQgb2Zmc2V0LCBJQlNDVEwgPSAweGZmZmZmZmZmDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzowODozMS45OTJdICoqKiBMT0FESU5HIERPTUFJTiAwICoq
Kg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuMTc0XSBlbGZfcGFyc2VfYmluYXJ5OiBw
aGRyOiBwYWRkcj0weDEwMDAwMDAgbWVtc3o9MHgxMDYzMDAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzowODozMi4yMDRdIGVsZl9wYXJzZV9iaW5hcnk6IHBoZHI6IHBhZGRyPTB4MjIwMDAw
MCBtZW1zej0weDEwYjAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuMjMzXSBlbGZf
cGFyc2VfYmluYXJ5OiBwaGRyOiBwYWRkcj0weDIzMGIwMDAgbWVtc3o9MHgxNDIwMA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MDg6MzIuMjYyXSBlbGZfcGFyc2VfYmluYXJ5OiBwaGRyOiBw
YWRkcj0weDIzMjAwMDAgbWVtc3o9MHgxMzAzMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozMi4yOTFdIGVsZl9wYXJzZV9iaW5hcnk6IG1lbW9yeTogMHgxMDAwMDAwIC0+IDB4MzYy
MzAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuMzE5XSBlbGZfeGVuX3BhcnNlX25v
dGU6IEdVRVNUX09TID0gImxpbnV4Ig0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuMzQ0
XSBlbGZfeGVuX3BhcnNlX25vdGU6IEdVRVNUX1ZFUlNJT04gPSAiMi42Ig0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MDg6MzIuMzcwXSBlbGZfeGVuX3BhcnNlX25vdGU6IFhFTl9WRVJTSU9O
ID0gInhlbi0zLjAiDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMi4zOTddIGVsZl94ZW5f
cGFyc2Vfbm90ZTogVklSVF9CQVNFID0gMHhmZmZmZmZmZjgwMDAwMDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzowODozMi40MjVdIGVsZl94ZW5fcGFyc2Vfbm90ZTogRU5UUlkgPSAweGZm
ZmZmZmZmODIzMjAxZjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMyLjQ1M10gZWxmX3hl
bl9wYXJzZV9ub3RlOiBIWVBFUkNBTExfUEFHRSA9IDB4ZmZmZmZmZmY4MTAwMTAwMA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MDg6MzIuNDgzXSBlbGZfeGVuX3BhcnNlX25vdGU6IEZFQVRV
UkVTID0gIiF3cml0YWJsZV9wYWdlX3RhYmxlc3xwYWVfcGdkaXJfYWJvdmVfNGdifHdyaXRh
YmxlX2Rlc2NyaXB0b3JfdGFibGVzfGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwfHN1cGVydmlz
b3JfbW9kZV9rZXJuZWwiDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMi41NDRdIGVsZl94
ZW5fcGFyc2Vfbm90ZTogU1VQUE9SVEVEX0ZFQVRVUkVTID0gMHg5MGQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjA4OjMyLjU3Ml0gZWxmX3hlbl9wYXJzZV9ub3RlOiBQQUVfTU9ERSA9ICJ5
ZXMiDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMi41OThdIGVsZl94ZW5fcGFyc2Vfbm90
ZTogTE9BREVSID0gImdlbmVyaWMiDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMi42MjRd
IGVsZl94ZW5fcGFyc2Vfbm90ZTogdW5rbm93biB4ZW4gZWxmIG5vdGUgKDB4ZCkNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjMyLjY1Ml0gZWxmX3hlbl9wYXJzZV9ub3RlOiBTVVNQRU5E
X0NBTkNFTCA9IDB4MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuNjc4XSBlbGZfeGVu
X3BhcnNlX25vdGU6IEhWX1NUQVJUX0xPVyA9IDB4ZmZmZjgwMDAwMDAwMDAwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MDg6MzIuNzA5XSBlbGZfeGVuX3BhcnNlX25vdGU6IFBBRERSX09G
RlNFVCA9IDB4MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuNzM1XSBlbGZfeGVuX2Fk
ZHJfY2FsY19jaGVjazogYWRkcmVzc2VzOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIu
NzYxXSAgICAgdmlydF9iYXNlICAgICAgICA9IDB4ZmZmZmZmZmY4MDAwMDAwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MDg6MzIuNzg4XSAgICAgZWxmX3BhZGRyX29mZnNldCA9IDB4MA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuODEyXSAgICAgdmlydF9vZmZzZXQgICAgICA9
IDB4ZmZmZmZmZmY4MDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuODQwXSAg
ICAgdmlydF9rc3RhcnQgICAgICA9IDB4ZmZmZmZmZmY4MTAwMDAwMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MDg6MzIuODY4XSAgICAgdmlydF9rZW5kICAgICAgICA9IDB4ZmZmZmZmZmY4
MzYyMzAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuODk2XSAgICAgdmlydF9lbnRy
eSAgICAgICA9IDB4ZmZmZmZmZmY4MjMyMDFmMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6
MzIuOTI0XSAgICAgcDJtX2Jhc2UgICAgICAgICA9IDB4ZmZmZmZmZmZmZmZmZmZmZg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MDg6MzIuOTUyXSAgWGVuICBrZXJuZWw6IDY0LWJpdCwgbHNi
LCBjb21wYXQzMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzIuOTc5XSAgRG9tMCBrZXJu
ZWw6IDY0LWJpdCwgUEFFLCBsc2IsIHBhZGRyIDB4MTAwMDAwMCAtPiAweDM2MjMwMDANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMzLjAxMl0gUEhZU0lDQUwgTUVNT1JZIEFSUkFOR0VN
RU5UOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzMuMDM4XSAgRG9tMCBhbGxvYy46ICAg
MDAwMDAwMDU0ODAwMDAwMC0+MDAwMDAwMDU0YzAwMDAwMCAoMzcyOTM5IHBhZ2VzIHRvIGJl
IGFsbG9jYXRlZCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjMzLjA3N10gIEluaXQuIHJh
bWRpc2s6IDAwMDAwMDA1NWYwY2IwMDAtPjAwMDAwMDA1NWZmZmY4MDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjA4OjMzLjEwOF0gVklSVFVBTCBNRU1PUlkgQVJSQU5HRU1FTlQ6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzowODozMy4xMzNdICBMb2FkZWQga2VybmVsOiBmZmZmZmZmZjgx
MDAwMDAwLT5mZmZmZmZmZjgzNjIzMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy4x
NjVdICBJbml0LiByYW1kaXNrOiBmZmZmZmZmZjgzNjIzMDAwLT5mZmZmZmZmZjg0NTU3ODAw
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy4xOTZdICBQaHlzLU1hY2ggbWFwOiBmZmZm
ZmZmZjg0NTU4MDAwLT5mZmZmZmZmZjg0ODU4MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozMy4yMjhdICBTdGFydCBpbmZvOiAgICBmZmZmZmZmZjg0ODU4MDAwLT5mZmZmZmZmZjg0
ODU4NGI0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy4yNjBdICBQYWdlIHRhYmxlczog
ICBmZmZmZmZmZjg0ODU5MDAwLT5mZmZmZmZmZjg0ODgyMDAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzowODozMy4yOTJdICBCb290IHN0YWNrOiAgICBmZmZmZmZmZjg0ODgyMDAwLT5mZmZm
ZmZmZjg0ODgzMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy4zMjRdICBUT1RBTDog
ICAgICAgICBmZmZmZmZmZjgwMDAwMDAwLT5mZmZmZmZmZjg0YzAwMDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzowODozMy4zNTVdICBFTlRSWSBBRERSRVNTOiBmZmZmZmZmZjgyMzIwMWYw
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy4zODRdIERvbTAgaGFzIG1heGltdW0gNiBW
Q1BVcw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzMuNDA5XSBlbGZfbG9hZF9iaW5hcnk6
IHBoZHIgMCBhdCAweGZmZmZmZmZmODEwMDAwMDAgLT4gMHhmZmZmZmZmZjgyMDYzMDAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzowODozMy40NTJdIGVsZl9sb2FkX2JpbmFyeTogcGhkciAx
IGF0IDB4ZmZmZmZmZmY4MjIwMDAwMCAtPiAweGZmZmZmZmZmODIzMGIwMDANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjA4OjMzLjQ4OV0gZWxmX2xvYWRfYmluYXJ5OiBwaGRyIDIgYXQgMHhm
ZmZmZmZmZjgyMzBiMDAwIC0+IDB4ZmZmZmZmZmY4MjMxZjIwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MDg6MzMuNTI1XSBlbGZfbG9hZF9iaW5hcnk6IHBoZHIgMyBhdCAweGZmZmZmZmZm
ODIzMjAwMDAgLT4gMHhmZmZmZmZmZjgyNDI3MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozNC42ODddIFNjcnViYmluZyBGcmVlIFJBTSBvbiAxIG5vZGVzIHVzaW5nIDYgQ1BVcw0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MDg6MzQuODEwXSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLmRvbmUuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozNy45MDhdIEluaXRpYWwg
bG93IG1lbW9yeSB2aXJxIHRocmVzaG9sZCBzZXQgYXQgMHg0MDAwIHBhZ2VzLg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MDg6MzcuOTQxXSBTdGQuIExvZ2xldmVsOiBBbGwNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjA4OjM3Ljk2NV0gR3Vlc3QgTG9nbGV2ZWw6IEFsbA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MDg6MzcuOTg5XSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozOC4wMjFdICoqKioq
KiogV0FSTklORzogQ09OU09MRSBPVVRQVVQgSVMgU1lOQ0hST05PVVMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjA4OjM4LjA1Ml0gKioqKioqKiBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0
byBhaWQgZGVidWdnaW5nIG9mIFhlbiBieSBlbnN1cmluZw0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MDg6MzguMDg5XSAqKioqKioqIHRoYXQgYWxsIG91dHB1dCBpcyBzeW5jaHJvbm91c2x5
IGRlbGl2ZXJlZCBvbiB0aGUgc2VyaWFsIGxpbmUuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODozOC4xMjddICoqKioqKiogSG93ZXZlciBpdCBjYW4gaW50cm9kdWNlIFNJR05JRklDQU5U
IGxhdGVuY2llcyBhbmQgYWZmZWN0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozOC4xNjNd
ICoqKioqKiogdGltZWtlZXBpbmcuIEl0IGlzIE5PVCByZWNvbW1lbmRlZCBmb3IgcHJvZHVj
dGlvbiB1c2UhDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODozOC4xOTldICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjA4OjM4LjIzMV0gMy4uLiAyLi4uIDEuLi4gDQooWEVOKSBbMjAxNC0wOS0yNSAxMzow
ODo0MS4yNTJdIFhlbiBpcyByZWxpbnF1aXNoaW5nIFZHQSBjb25zb2xlLg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MDg6NDEuMzY0XSAqKiogU2VyaWFsIGlucHV0IC0+IERPTTAgKHR5cGUg
J0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNoIGlucHV0IHRvIFhlbikNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjA4OjQxLjM5M10gRnJlZWQgMzAwa0IgaW5pdCBtZW1vcnkuDQptYXBw
aW5nIGtlcm5lbCBpbnRvIHBoeXNpY2FsIG1lbW9yeQ0KYWJvdXQgdG8gZ2V0IHN0YXJ0ZWQu
Li4NClsgICAgMC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdXNldA0K
WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1DQpbICAgIDAu
MDAwMDAwXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHVhY2N0DQpbICAgIDAuMDAw
MDAwXSBMaW51eCB2ZXJzaW9uIDMuMTcuMC1yYzYtMjAxNDA5MjUtdmFuaWxsYSsgKHJvb3RA
c2VydmVlcnN0ZXJ0amUpIChnY2MgdmVyc2lvbiA0LjcuMiAoRGViaWFuIDQuNy4yLTUpICkg
IzEgU01QIFRodSBTZXAgMjUgMTQ6MzU6NTcgQ0VTVCAyMDE0DQpbICAgIDAuMDAwMDAwXSBD
b21tYW5kIGxpbmU6IHJvb3Q9L2Rldi9tYXBwZXIvc2VydmVlcnN0ZXJ0amUtcm9vdCBybyB2
ZXJib3NlIGVhcmx5cHJpbnRrPXhlbiBtZW09MTUzNk0gY29uc29sZT1odmMwIGNvbnNvbGU9
dHR5MCB2Z2E9Nzk0IHZpZGVvPXZlc2FmYiByODE2OS51c2VfZGFjPTEgYWNwaV9lbmZvcmNl
X3Jlc291cmNlcz1sYXggbWF4X2xvb3A9MzAgbG9vcF9tYXhfcGFydD0xMCBkZWJ1ZyBsb2ds
ZXZlbD0xMCBub21vZGVzZXQgeGVuLXBjaWJhY2suaGlkZT0oMDM6MDYuMCkoMDQ6MDAuKiko
MDc6MDAuKikoMDg6MDAuKikoMDk6MDAuKikoMGE6MDAuMCkoMGI6MDAuMCkoMGU6MDAuKikg
cjgxNjkudXNlX2RhYz0xDQpbICAgIDAuMDAwMDAwXSBGcmVlaW5nIDk5LTEwMCBwZm4gcmFu
Z2U6IDEwMyBwYWdlcyBmcmVlZA0KWyAgICAwLjAwMDAwMF0gUmVsZWFzZWQgMTAzIHBhZ2Vz
IG9mIHVudXNlZCBtZW1vcnkNClsgICAgMC4wMDAwMDBdIFNldCAxMjg5NzUwNjMgcGFnZShz
KSB0byAxLTEgbWFwcGluZw0KWyAgICAwLjAwMDAwMF0gUG9wdWxhdGluZyA2MDAwMC02MDA2
NyBwZm4gcmFuZ2U6IDEwMyBwYWdlcyBhZGRlZA0KWyAgICAwLjAwMDAwMF0gZTgyMDogQklP
Uy1wcm92aWRlZCBwaHlzaWNhbCBSQU0gbWFwOg0KWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVt
IDB4MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwMDAwOThmZmZdIHVzYWJsZQ0KWyAgICAw
LjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDAwMDA5OTQwMC0weDAwMDAwMDAwMDAwZmZm
ZmZdIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMDAwMTAw
MDAwLTB4MDAwMDAwMDA2MDA2NmZmZl0gdXNhYmxlDQpbICAgIDAuMDAwMDAwXSBYZW46IFtt
ZW0gMHgwMDAwMDAwMDYwMDY3MDAwLTB4MDAwMDAwMDA5ZmY4ZmZmZl0gdW51c2FibGUNClsg
ICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwOWZmOTAwMDAtMHgwMDAwMDAwMDlm
ZjlkZmZmXSBBQ1BJIGRhdGENClsgICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAw
OWZmOWUwMDAtMHgwMDAwMDAwMDlmZmRmZmZmXSBBQ1BJIE5WUw0KWyAgICAwLjAwMDAwMF0g
WGVuOiBbbWVtIDB4MDAwMDAwMDA5ZmZlMDAwMC0weDAwMDAwMDAwOWZmZmZmZmZdIHJlc2Vy
dmVkDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMGZlZTAwMDAwLTB4MDAw
MDAwMDBmZWVmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAw
MDAwMDAwZmZlMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZmXSByZXNlcnZlZA0KWyAgICAwLjAw
MDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDEwMDAwMDAwMC0weDAwMDAwMDA1NWZmZmZmZmZd
IHVudXNhYmxlDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDBmZDAwMDAwMDAw
LTB4MDAwMDAwZmZmZmZmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIGJvb3Rjb25z
b2xlIFt4ZW5ib290MF0gZW5hYmxlZA0KWyAgICAwLjAwMDAwMF0gTlggKEV4ZWN1dGUgRGlz
YWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlDQpbICAgIDAuMDAwMDAwXSBlODIwOiB1c2VyLWRl
ZmluZWQgcGh5c2ljYWwgUkFNIG1hcDoNClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0gMHgw
MDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDAwMDA5OGZmZl0gdXNhYmxlDQpbICAgIDAuMDAw
MDAwXSB1c2VyOiBbbWVtIDB4MDAwMDAwMDAwMDA5OTQwMC0weDAwMDAwMDAwMDAwZmZmZmZd
IHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSB1c2VyOiBbbWVtIDB4MDAwMDAwMDAwMDEwMDAw
MC0weDAwMDAwMDAwNWZmZmZmZmZdIHVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21l
bSAweDAwMDAwMDAwNjAwNjcwMDAtMHgwMDAwMDAwMDlmZjhmZmZmXSB1bnVzYWJsZQ0KWyAg
ICAwLjAwMDAwMF0gdXNlcjogW21lbSAweDAwMDAwMDAwOWZmOTAwMDAtMHgwMDAwMDAwMDlm
ZjlkZmZmXSBBQ1BJIGRhdGENClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0gMHgwMDAwMDAw
MDlmZjllMDAwLTB4MDAwMDAwMDA5ZmZkZmZmZl0gQUNQSSBOVlMNClsgICAgMC4wMDAwMDBd
IHVzZXI6IFttZW0gMHgwMDAwMDAwMDlmZmUwMDAwLTB4MDAwMDAwMDA5ZmZmZmZmZl0gcmVz
ZXJ2ZWQNClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0gMHgwMDAwMDAwMGZlZTAwMDAwLTB4
MDAwMDAwMDBmZWVmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0g
MHgwMDAwMDAwMGZmZTAwMDAwLTB4MDAwMDAwMDBmZmZmZmZmZl0gcmVzZXJ2ZWQNClsgICAg
MC4wMDAwMDBdIHVzZXI6IFttZW0gMHgwMDAwMDAwMTAwMDAwMDAwLTB4MDAwMDAwMDU1ZmZm
ZmZmZl0gdW51c2FibGUNClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0gMHgwMDAwMDBmZDAw
MDAwMDAwLTB4MDAwMDAwZmZmZmZmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIFNN
QklPUyAyLjUgcHJlc2VudC4NClsgICAgMC4wMDAwMDBdIERNSTogTVNJIE1TLTc2NDAvODkw
RlhBLUdENzAgKE1TLTc2NDApICAsIEJJT1MgVjEuOEIxIDA5LzEzLzIwMTANClsgICAgMC4w
MDAwMDBdIGU4MjA6IHVwZGF0ZSBbbWVtIDB4MDAwMDAwMDAtMHgwMDAwMGZmZl0gdXNhYmxl
ID09PiByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gZTgyMDogcmVtb3ZlIFttZW0gMHgwMDBh
MDAwMC0weDAwMGZmZmZmXSB1c2FibGUNClsgICAgMC4wMDAwMDBdIEFHUDogTm8gQUdQIGJy
aWRnZSBmb3VuZA0KWyAgICAwLjAwMDAwMF0gZTgyMDogbGFzdF9wZm4gPSAweDYwMDAwIG1h
eF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwDQpbICAgIDAuMDAwMDAwXSBTY2FubmluZyAxIGFy
ZWFzIGZvciBsb3cgbWVtb3J5IGNvcnJ1cHRpb24NClsgICAgMC4wMDAwMDBdIEJhc2UgbWVt
b3J5IHRyYW1wb2xpbmUgYXQgW2ZmZmY4ODAwMDAwOTMwMDBdIDkzMDAwIHNpemUgMjQ1NzYN
ClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHgwMDAwMDAwMC0w
eDAwMGZmZmZmXQ0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHgwMDAwMDAwMC0weDAwMGZmZmZm
XSBwYWdlIDRrDQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiBbbWVtIDB4
NWZlMDAwMDAtMHg1ZmZmZmZmZl0NClsgICAgMC4wMDAwMDBdICBbbWVtIDB4NWZlMDAwMDAt
MHg1ZmZmZmZmZl0gcGFnZSA0aw0KWyAgICAwLjAwMDAwMF0gQlJLIFsweDAzMjE2MDAwLCAw
eDAzMjE2ZmZmXSBQR1RBQkxFDQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDMyMTcwMDAsIDB4
MDMyMTdmZmZdIFBHVEFCTEUNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6
IFttZW0gMHg1YzAwMDAwMC0weDVmZGZmZmZmXQ0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHg1
YzAwMDAwMC0weDVmZGZmZmZmXSBwYWdlIDRrDQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDMy
MTgwMDAsIDB4MDMyMThmZmZdIFBHVEFCTEUNClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMzIx
OTAwMCwgMHgwMzIxOWZmZl0gUEdUQUJMRQ0KWyAgICAwLjAwMDAwMF0gQlJLIFsweDAzMjFh
MDAwLCAweDAzMjFhZmZmXSBQR1RBQkxFDQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDMyMWIw
MDAsIDB4MDMyMWJmZmZdIFBHVEFCTEUNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21h
cHBpbmc6IFttZW0gMHgwMDEwMDAwMC0weDViZmZmZmZmXQ0KWyAgICAwLjAwMDAwMF0gIFtt
ZW0gMHgwMDEwMDAwMC0weDViZmZmZmZmXSBwYWdlIDRrDQpbICAgIDAuMDAwMDAwXSBSQU1E
SVNLOiBbbWVtIDB4MDM2MjMwMDAtMHgwNDU1N2ZmZl0NClsgICAgMC4wMDAwMDBdIEFDUEk6
IEVhcmx5IHRhYmxlIGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBkaXNhYmxlZA0KWyAgICAwLjAw
MDAwMF0gQUNQSTogUlNEUCAweDAwMDAwMDAwMDAwRkIxMDAgMDAwMDE0ICh2MDAgQUNQSUFN
KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogUlNEVCAweDAwMDAwMDAwOUZGOTAwMDAgMDAwMDQ4
ICh2MDEgTVNJICAgIE9FTVNMSUMgIDIwMTAwOTEzIE1TRlQgMDAwMDAwOTcpDQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBGQUNQIDB4MDAwMDAwMDA5RkY5MDIwMCAwMDAwODQgKHYwMSA3NjQw
TVMgQTc2NDAxMDAgMjAxMDA5MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFD
UEk6IERTRFQgMHgwMDAwMDAwMDlGRjkwNUUwIDAwOTQyNyAodjAxIEE3NjQwICBBNzY0MDEw
MCAwMDAwMDEwMCBJTlRMIDIwMDUxMTE3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogRkFDUyAw
eDAwMDAwMDAwOUZGOUUwMDAgMDAwMDQwDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBBUElDIDB4
MDAwMDAwMDA5RkY5MDM5MCAwMDAwODggKHYwMSA3NjQwTVMgQTc2NDAxMDAgMjAxMDA5MTMg
TVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFDUEk6IE1DRkcgMHgwMDAwMDAwMDlG
RjkwNDIwIDAwMDAzQyAodjAxIDc2NDBNUyBPRU1NQ0ZHICAyMDEwMDkxMyBNU0ZUIDAwMDAw
MDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogU0xJQyAweDAwMDAwMDAwOUZGOTA0NjAgMDAw
MTc2ICh2MDEgTVNJICAgIE9FTVNMSUMgIDIwMTAwOTEzIE1TRlQgMDAwMDAwOTcpDQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBPRU1CIDB4MDAwMDAwMDA5RkY5RTA0MCAwMDAwNzIgKHYwMSA3
NjQwTVMgQTc2NDAxMDAgMjAxMDA5MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBd
IEFDUEk6IFNSQVQgMHgwMDAwMDAwMDlGRjlBNUUwIDAwMDEwOCAodjAzIEFNRCAgICBGQU1f
Rl8xMCAwMDAwMDAwMiBBTUQgIDAwMDAwMDAxKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSFBF
VCAweDAwMDAwMDAwOUZGOUE2RjAgMDAwMDM4ICh2MDEgNzY0ME1TIE9FTUhQRVQgIDIwMTAw
OTEzIE1TRlQgMDAwMDAwOTcpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJVlJTIDB4MDAwMDAw
MDA5RkY5QTczMCAwMDAxMTAgKHYwMSBBTUQgICAgUkQ4OTBTICAgMDAyMDIwMzEgQU1EICAw
MDAwMDAwMCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMDlGRjlBODQw
IDAwMERBNCAodjAxIEEgTSBJICBQT1dFUk5PVyAwMDAwMDAwMSBBTUQgIDAwMDAwMDAxKQ0K
WyAgICAwLjAwMDAwMF0gQUNQSTogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDANClsg
ICAgMC4wMDAwMDBdIE5VTUEgdHVybmVkIG9mZg0KWyAgICAwLjAwMDAwMF0gRmFraW5nIGEg
bm9kZSBhdCBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwNWZmZmZmZmZdDQpb
ICAgIDAuMDAwMDAwXSBJbml0bWVtIHNldHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAtMHg1
ZmZmZmZmZl0NClsgICAgMC4wMDAwMDBdICAgTk9ERV9EQVRBIFttZW0gMHg1ZmQyMDAwMC0w
eDVmZDJhZmZmXQ0KWyAgICAwLjAwMDAwMF0gWm9uZSByYW5nZXM6DQpbICAgIDAuMDAwMDAw
XSAgIERNQSAgICAgIFttZW0gMHgwMDAwMTAwMC0weDAwZmZmZmZmXQ0KWyAgICAwLjAwMDAw
MF0gICBETUEzMiAgICBbbWVtIDB4MDEwMDAwMDAtMHhmZmZmZmZmZl0NClsgICAgMC4wMDAw
MDBdICAgTm9ybWFsICAgZW1wdHkNClsgICAgMC4wMDAwMDBdIE1vdmFibGUgem9uZSBzdGFy
dCBmb3IgZWFjaCBub2RlDQpbICAgIDAuMDAwMDAwXSBFYXJseSBtZW1vcnkgbm9kZSByYW5n
ZXMNClsgICAgMC4wMDAwMDBdICAgbm9kZSAgIDA6IFttZW0gMHgwMDAwMTAwMC0weDAwMDk4
ZmZmXQ0KWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDogW21lbSAweDAwMTAwMDAwLTB4NWZm
ZmZmZmZdDQpbICAgIDAuMDAwMDAwXSBPbiBub2RlIDAgdG90YWxwYWdlczogMzkzMTEyDQpb
ICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiA2NCBwYWdlcyB1c2VkIGZvciBtZW1tYXANClsg
ICAgMC4wMDAwMDBdICAgRE1BIHpvbmU6IDIxIHBhZ2VzIHJlc2VydmVkDQpbICAgIDAuMDAw
MDAwXSAgIERNQSB6b25lOiAzOTkyIHBhZ2VzLCBMSUZPIGJhdGNoOjANClsgICAgMC4wMDAw
MDBdICAgRE1BMzIgem9uZTogNjA4MCBwYWdlcyB1c2VkIGZvciBtZW1tYXANClsgICAgMC4w
MDAwMDBdICAgRE1BMzIgem9uZTogMzg5MTIwIHBhZ2VzLCBMSUZPIGJhdGNoOjMxDQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAweDgwOA0KWyAgICAwLjAwMDAw
MF0gQUNQSTogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDANClsgICAgMC4wMDAwMDBd
IEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDFdIGxhcGljX2lkWzB4MDBdIGVuYWJsZWQpDQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAyXSBsYXBpY19pZFsweDAx
XSBlbmFibGVkKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwM10g
bGFwaWNfaWRbMHgwMl0gZW5hYmxlZCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChh
Y3BpX2lkWzB4MDRdIGxhcGljX2lkWzB4MDNdIGVuYWJsZWQpDQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBMQVBJQyAoYWNwaV9pZFsweDA1XSBsYXBpY19pZFsweDA0XSBlbmFibGVkKQ0KWyAg
ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwNl0gbGFwaWNfaWRbMHgwNV0g
ZW5hYmxlZCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IElPQVBJQyAoaWRbMHgwNl0gYWRkcmVz
c1sweGZlYzAwMDAwXSBnc2lfYmFzZVswXSkNClsgICAgMC4wMDAwMDBdIElPQVBJQ1swXTog
YXBpY19pZCA2LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzDQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBJT0FQSUMgKGlkWzB4MDddIGFkZHJlc3NbMHhmZWMyMDAw
MF0gZ3NpX2Jhc2VbMjRdKQ0KWyAgICAwLjAwMDAwMF0gSU9BUElDWzFdOiBhcGljX2lkIDcs
IHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmZWMyMDAwMCwgR1NJIDI0LTU1DQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAwIGdsb2JhbF9pcnEgMiBk
ZmwgZGZsKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19p
cnEgOSBnbG9iYWxfaXJxIDkgbG93IGxldmVsKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJR
MCB1c2VkIGJ5IG92ZXJyaWRlLg0KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJROSB1c2VkIGJ5
IG92ZXJyaWRlLg0KWyAgICAwLjAwMDAwMF0gVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBj
b25maWd1cmF0aW9uIGluZm9ybWF0aW9uDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVUIGlk
OiAweDgzMDAgYmFzZTogMHhmZWQwMDAwMA0KWyAgICAwLjAwMDAwMF0gc21wYm9vdDogQWxs
b3dpbmcgNiBDUFVzLCAwIGhvdHBsdWcgQ1BVcw0KWyAgICAwLjAwMDAwMF0gZTgyMDogW21l
bSAweGEwMDAwMDAwLTB4ZmVkZmZmZmZdIGF2YWlsYWJsZSBmb3IgUENJIGRldmljZXMNClsg
ICAgMC4wMDAwMDBdIEJvb3RpbmcgcGFyYXZpcnR1YWxpemVkIGtlcm5lbCBvbiBYZW4NClsg
ICAgMC4wMDAwMDBdIFhlbiB2ZXJzaW9uOiA0LjUtdW5zdGFibGUgKHByZXNlcnZlLUFEKQ0K
WyAgICAwLjAwMDAwMF0gc2V0dXBfcGVyY3B1OiBOUl9DUFVTOjggbnJfY3B1bWFza19iaXRz
OjggbnJfY3B1X2lkczo2IG5yX25vZGVfaWRzOjENClsgICAgMC4wMDAwMDBdIFBFUkNQVTog
RW1iZWRkZWQgMjggcGFnZXMvY3B1IEBmZmZmODgwMDVmNjAwMDAwIHM4MjQzMiByODE5MiBk
MjQwNjQgdTI2MjE0NA0KWyAgICAwLjAwMDAwMF0gcGNwdS1hbGxvYzogczgyNDMyIHI4MTky
IGQyNDA2NCB1MjYyMTQ0IGFsbG9jPTEqMjA5NzE1Mg0KWyAgICAwLjAwMDAwMF0gcGNwdS1h
bGxvYzogWzBdIDAgMSAyIDMgNCA1IC0gLSANClsgICAgMC4wMDAwMDBdIHhlbjogUFYgc3Bp
bmxvY2tzIGVuYWJsZWQNClsgICAgMC4wMDAwMDBdIEJ1aWx0IDEgem9uZWxpc3RzIGluIE5v
ZGUgb3JkZXIsIG1vYmlsaXR5IGdyb3VwaW5nIG9uLiAgVG90YWwgcGFnZXM6IDM4Njk0Nw0K
WyAgICAwLjAwMDAwMF0gUG9saWN5IHpvbmU6IERNQTMyDQpbICAgIDAuMDAwMDAwXSBLZXJu
ZWwgY29tbWFuZCBsaW5lOiByb290PS9kZXYvbWFwcGVyL3NlcnZlZXJzdGVydGplLXJvb3Qg
cm8gdmVyYm9zZSBlYXJseXByaW50az14ZW4gbWVtPTE1MzZNIGNvbnNvbGU9aHZjMCBjb25z
b2xlPXR0eTAgdmdhPTc5NCB2aWRlbz12ZXNhZmIgcjgxNjkudXNlX2RhYz0xIGFjcGlfZW5m
b3JjZV9yZXNvdXJjZXM9bGF4IG1heF9sb29wPTMwIGxvb3BfbWF4X3BhcnQ9MTAgZGVidWcg
bG9nbGV2ZWw9MTAgbm9tb2Rlc2V0IHhlbi1wY2liYWNrLmhpZGU9KDAzOjA2LjApKDA0OjAw
LiopKDA3OjAwLiopKDA4OjAwLiopKDA5OjAwLiopKDBhOjAwLjApKDBiOjAwLjApKDBlOjAw
LiopIHI4MTY5LnVzZV9kYWM9MQ0KWyAgICAwLjAwMDAwMF0gUElEIGhhc2ggdGFibGUgZW50
cmllczogNDA5NiAob3JkZXI6IDMsIDMyNzY4IGJ5dGVzKQ0KWyAgICAwLjAwMDAwMF0gc29m
dHdhcmUgSU8gVExCIFttZW0gMHg1OWMwMDAwMC0weDVkYzAwMDAwXSAoNjRNQikgbWFwcGVk
IGF0IFtmZmZmODgwMDU5YzAwMDAwLWZmZmY4ODAwNWRiZmZmZmZdDQpbICAgIDAuMDAwMDAw
XSBNZW1vcnk6IDE0MjQyMjBLLzE1NzI0NDhLIGF2YWlsYWJsZSAoMTE4MzFLIGtlcm5lbCBj
b2RlLCAxMDYySyByd2RhdGEsIDQ0OTJLIHJvZGF0YSwgMTEwMEsgaW5pdCwgMTQxNzJLIGJz
cywgMTQ4MjI4SyByZXNlcnZlZCkNClsgICAgMC4wMDAwMDBdIFNMVUI6IEhXYWxpZ249NjQs
IE9yZGVyPTAtMywgTWluT2JqZWN0cz0wLCBDUFVzPTYsIE5vZGVzPTENClsgICAgMC4wMDAw
MDBdIEhpZXJhcmNoaWNhbCBSQ1UgaW1wbGVtZW50YXRpb24uDQpbICAgIDAuMDAwMDAwXSAJ
UkNVIGR5bnRpY2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9uIGlzIGVuYWJsZWQu
DQpbICAgIDAuMDAwMDAwXSAJQWRkaXRpb25hbCBwZXItQ1BVIGluZm8gcHJpbnRlZCB3aXRo
IHN0YWxscy4NClsgICAgMC4wMDAwMDBdIAlSQ1UgcmVzdHJpY3RpbmcgQ1BVcyBmcm9tIE5S
X0NQVVM9OCB0byBucl9jcHVfaWRzPTYuDQpbICAgIDAuMDAwMDAwXSBSQ1U6IEFkanVzdGlu
ZyBnZW9tZXRyeSBmb3IgcmN1X2Zhbm91dF9sZWFmPTE2LCBucl9jcHVfaWRzPTYNClsgICAg
MC4wMDAwMDBdIE5SX0lSUVM6NDM1MiBucl9pcnFzOjEwMTYgMA0KWyAgICAwLjAwMDAwMF0g
eGVuOmV2ZW50czogVXNpbmcgRklGTy1iYXNlZCBBQkkNClsgICAgMC4wMDAwMDBdIHhlbjog
c2NpIG92ZXJyaWRlOiBnbG9iYWxfaXJxPTkgdHJpZ2dlcj0wIHBvbGFyaXR5PTENClsgICAg
MC4wMDAwMDBdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDkgdHJpZ2dlcmluZyAwIHBvbGFyaXR5
IDENClsgICAgMC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9OSAtPiBpcnE9OSAoZ3NpPTkpDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzowODo0NC4wNTFdIElPQVBJQ1swXTogU2V0IFBDSSByb3V0
aW5nIGVudHJ5ICg2LTkgLT4gMHg2MCAtPiBJUlEgOSBNb2RlOjEgQWN0aXZlOjEpDQpbICAg
IDAuMDAwMDAwXSB4ZW46IGFjcGkgc2NpIDkNClsgICAgMC4wMDAwMDBdIHhlbjogLS0+IHBp
cnE9MSAtPiBpcnE9MSAoZ3NpPTEpDQpbICAgIDAuMDAwMDAwXSB4ZW46IC0tPiBwaXJxPTIg
LT4gaXJxPTIgKGdzaT0yKQ0KWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT0zIC0+IGly
cT0zIChnc2k9MykNClsgICAgMC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9NCAtPiBpcnE9NCAo
Z3NpPTQpDQpbICAgIDAuMDAwMDAwXSB4ZW46IC0tPiBwaXJxPTUgLT4gaXJxPTUgKGdzaT01
KQ0KWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT02IC0+IGlycT02IChnc2k9NikNClsg
ICAgMC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9NyAtPiBpcnE9NyAoZ3NpPTcpDQpbICAgIDAu
MDAwMDAwXSB4ZW46IC0tPiBwaXJxPTggLT4gaXJxPTggKGdzaT04KQ0KWyAgICAwLjAwMDAw
MF0geGVuOiAtLT4gcGlycT0xMCAtPiBpcnE9MTAgKGdzaT0xMCkNClsgICAgMC4wMDAwMDBd
IHhlbjogLS0+IHBpcnE9MTEgLT4gaXJxPTExIChnc2k9MTEpDQpbICAgIDAuMDAwMDAwXSB4
ZW46IC0tPiBwaXJxPTEyIC0+IGlycT0xMiAoZ3NpPTEyKQ0KWyAgICAwLjAwMDAwMF0geGVu
OiAtLT4gcGlycT0xMyAtPiBpcnE9MTMgKGdzaT0xMykNClsgICAgMC4wMDAwMDBdIHhlbjog
LS0+IHBpcnE9MTQgLT4gaXJxPTE0IChnc2k9MTQpDQpbICAgIDAuMDAwMDAwXSB4ZW46IC0t
PiBwaXJxPTE1IC0+IGlycT0xNSAoZ3NpPTE1KQ0KWyAgICAwLjAwMDAwMF0gQ29uc29sZTog
Y29sb3VyIGR1bW15IGRldmljZSA4MHgyNQ0KWyAgICAwLjAwMDAwMF0gY29uc29sZSBbdHR5
MF0gZW5hYmxlZA0KWyAgICAwLjAwMDAwMF0gYm9vdGNvbnNvbGUgW3hlbmJvb3QwXSBkaXNh
YmxlZA0KWyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0
DQpbICAgIDAuMDAwMDAwXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHUNClsgICAg
MC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdWFjY3QNClsgICAgMC4w
MDAwMDBdIExpbnV4IHZlcnNpb24gMy4xNy4wLXJjNi0yMDE0MDkyNS12YW5pbGxhKyAocm9v
dEBzZXJ2ZWVyc3RlcnRqZSkgKGdjYyB2ZXJzaW9uIDQuNy4yIChEZWJpYW4gNC43LjItNSkg
KSAjMSBTTVAgVGh1IFNlcCAyNSAxNDozNTo1NyBDRVNUIDIwMTQNClsgICAgMC4wMDAwMDBd
IENvbW1hbmQgbGluZTogcm9vdD0vZGV2L21hcHBlci9zZXJ2ZWVyc3RlcnRqZS1yb290IHJv
IHZlcmJvc2UgZWFybHlwcmludGs9eGVuIG1lbT0xNTM2TSBjb25zb2xlPWh2YzAgY29uc29s
ZT10dHkwIHZnYT03OTQgdmlkZW89dmVzYWZiIHI4MTY5LnVzZV9kYWM9MSBhY3BpX2VuZm9y
Y2VfcmVzb3VyY2VzPWxheCBtYXhfbG9vcD0zMCBsb29wX21heF9wYXJ0PTEwIGRlYnVnIGxv
Z2xldmVsPTEwIG5vbW9kZXNldCB4ZW4tcGNpYmFjay5oaWRlPSgwMzowNi4wKSgwNDowMC4q
KSgwNzowMC4qKSgwODowMC4qKSgwOTowMC4qKSgwYTowMC4wKSgwYjowMC4wKSgwZTowMC4q
KSByODE2OS51c2VfZGFjPTENClsgICAgMC4wMDAwMDBdIHRzZWc6IDAwMDAwMDAwMDANClsg
ICAgMC4wMDAwMDBdIEZyZWVpbmcgOTktMTAwIHBmbiByYW5nZTogMTAzIHBhZ2VzIGZyZWVk
DQpbICAgIDAuMDAwMDAwXSBSZWxlYXNlZCAxMDMgcGFnZXMgb2YgdW51c2VkIG1lbW9yeQ0K
WyAgICAwLjAwMDAwMF0gU2V0IDEyODk3NTA2MyBwYWdlKHMpIHRvIDEtMSBtYXBwaW5nDQpb
ICAgIDAuMDAwMDAwXSBQb3B1bGF0aW5nIDYwMDAwLTYwMDY3IHBmbiByYW5nZTogMTAzIHBh
Z2VzIGFkZGVkDQpbICAgIDAuMDAwMDAwXSBlODIwOiBCSU9TLXByb3ZpZGVkIHBoeXNpY2Fs
IFJBTSBtYXA6DQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAw
LTB4MDAwMDAwMDAwMDA5OGZmZl0gdXNhYmxlDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0g
MHgwMDAwMDAwMDAwMDk5NDAwLTB4MDAwMDAwMDAwMDBmZmZmZl0gcmVzZXJ2ZWQNClsgICAg
MC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwMDAxMDAwMDAtMHgwMDAwMDAwMDYwMDY2
ZmZmXSB1c2FibGUNClsgICAgMC4wMDAwMDBdIFhlbjogW21lbSAweDAwMDAwMDAwNjAwNjcw
MDAtMHgwMDAwMDAwMDlmZjhmZmZmXSB1bnVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gWGVuOiBb
bWVtIDB4MDAwMDAwMDA5ZmY5MDAwMC0weDAwMDAwMDAwOWZmOWRmZmZdIEFDUEkgZGF0YQ0K
WyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDA5ZmY5ZTAwMC0weDAwMDAwMDAw
OWZmZGZmZmZdIEFDUEkgTlZTDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgwMDAwMDAw
MDlmZmUwMDAwLTB4MDAwMDAwMDA5ZmZmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBd
IFhlbjogW21lbSAweDAwMDAwMDAwZmVlMDAwMDAtMHgwMDAwMDAwMGZlZWZmZmZmXSByZXNl
cnZlZA0KWyAgICAwLjAwMDAwMF0gWGVuOiBbbWVtIDB4MDAwMDAwMDBmZmUwMDAwMC0weDAw
MDAwMDAwZmZmZmZmZmZdIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBYZW46IFttZW0gMHgw
MDAwMDAwMTAwMDAwMDAwLTB4MDAwMDAwMDU1ZmZmZmZmZl0gdW51c2FibGUNClsgICAgMC4w
MDAwMDBdIFhlbjogW21lbSAweDAwMDAwMGZkMDAwMDAwMDAtMHgwMDAwMDBmZmZmZmZmZmZm
XSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gYm9vdGNvbnNvbGUgW3hlbmJvb3QwXSBlbmFi
bGVkDQpbICAgIDAuMDAwMDAwXSBlODIwOiByZW1vdmUgW21lbSAweDYwMDAwMDAwLTB4ZmZm
ZmZmZmZmZmZmZmZmZV0gdXNhYmxlDQpbICAgIDAuMDAwMDAwXSBOWCAoRXhlY3V0ZSBEaXNh
YmxlKSBwcm90ZWN0aW9uOiBhY3RpdmUNClsgICAgMC4wMDAwMDBdIGU4MjA6IHVzZXItZGVm
aW5lZCBwaHlzaWNhbCBSQU0gbWFwOg0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21lbSAweDAw
MDAwMDAwMDAwMDAwMDAtMHgwMDAwMDAwMDAwMDk4ZmZmXSB1c2FibGUNClsgICAgMC4wMDAw
MDBdIHVzZXI6IFttZW0gMHgwMDAwMDAwMDAwMDk5NDAwLTB4MDAwMDAwMDAwMDBmZmZmZl0g
cmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIHVzZXI6IFttZW0gMHgwMDAwMDAwMDAwMTAwMDAw
LTB4MDAwMDAwMDA1ZmZmZmZmZl0gdXNhYmxlDQpbICAgIDAuMDAwMDAwXSB1c2VyOiBbbWVt
IDB4MDAwMDAwMDA2MDA2NzAwMC0weDAwMDAwMDAwOWZmOGZmZmZdIHVudXNhYmxlDQpbICAg
IDAuMDAwMDAwXSB1c2VyOiBbbWVtIDB4MDAwMDAwMDA5ZmY5MDAwMC0weDAwMDAwMDAwOWZm
OWRmZmZdIEFDUEkgZGF0YQ0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21lbSAweDAwMDAwMDAw
OWZmOWUwMDAtMHgwMDAwMDAwMDlmZmRmZmZmXSBBQ1BJIE5WUw0KWyAgICAwLjAwMDAwMF0g
dXNlcjogW21lbSAweDAwMDAwMDAwOWZmZTAwMDAtMHgwMDAwMDAwMDlmZmZmZmZmXSByZXNl
cnZlZA0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21lbSAweDAwMDAwMDAwZmVlMDAwMDAtMHgw
MDAwMDAwMGZlZWZmZmZmXSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21lbSAw
eDAwMDAwMDAwZmZlMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZmXSByZXNlcnZlZA0KWyAgICAw
LjAwMDAwMF0gdXNlcjogW21lbSAweDAwMDAwMDAxMDAwMDAwMDAtMHgwMDAwMDAwNTVmZmZm
ZmZmXSB1bnVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gdXNlcjogW21lbSAweDAwMDAwMGZkMDAw
MDAwMDAtMHgwMDAwMDBmZmZmZmZmZmZmXSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gU01C
SU9TIDIuNSBwcmVzZW50Lg0KWyAgICAwLjAwMDAwMF0gRE1JOiBNU0kgTVMtNzY0MC84OTBG
WEEtR0Q3MCAoTVMtNzY0MCkgICwgQklPUyBWMS44QjEgMDkvMTMvMjAxMA0KWyAgICAwLjAw
MDAwMF0gZTgyMDogdXBkYXRlIFttZW0gMHgwMDAwMDAwMC0weDAwMDAwZmZmXSB1c2FibGUg
PT0+IHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBlODIwOiByZW1vdmUgW21lbSAweDAwMGEw
MDAwLTB4MDAwZmZmZmZdIHVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gQUdQOiBObyBBR1AgYnJp
ZGdlIGZvdW5kDQpbICAgIDAuMDAwMDAwXSBlODIwOiBsYXN0X3BmbiA9IDB4NjAwMDAgbWF4
X2FyY2hfcGZuID0gMHg0MDAwMDAwMDANClsgICAgMC4wMDAwMDBdIFNjYW5uaW5nIDEgYXJl
YXMgZm9yIGxvdyBtZW1vcnkgY29ycnVwdGlvbg0KWyAgICAwLjAwMDAwMF0gQmFzZSBtZW1v
cnkgdHJhbXBvbGluZSBhdCBbZmZmZjg4MDAwMDA5MzAwMF0gOTMwMDAgc2l6ZSAyNDU3Ng0K
WyAgICAwLjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogW21lbSAweDAwMDAwMDAwLTB4
MDAwZmZmZmZdDQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDAwMDAwMDAwLTB4MDAwZmZmZmZd
IHBhZ2UgNGsNClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IFttZW0gMHg1
ZmUwMDAwMC0weDVmZmZmZmZmXQ0KWyAgICAwLjAwMDAwMF0gIFttZW0gMHg1ZmUwMDAwMC0w
eDVmZmZmZmZmXSBwYWdlIDRrDQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDMyMTYwMDAsIDB4
MDMyMTZmZmZdIFBHVEFCTEUNClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMzIxNzAwMCwgMHgw
MzIxN2ZmZl0gUEdUQUJMRQ0KWyAgICAwLjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzog
W21lbSAweDVjMDAwMDAwLTB4NWZkZmZmZmZdDQpbICAgIDAuMDAwMDAwXSAgW21lbSAweDVj
MDAwMDAwLTB4NWZkZmZmZmZdIHBhZ2UgNGsNClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMzIx
ODAwMCwgMHgwMzIxOGZmZl0gUEdUQUJMRQ0KWyAgICAwLjAwMDAwMF0gQlJLIFsweDAzMjE5
MDAwLCAweDAzMjE5ZmZmXSBQR1RBQkxFDQpbICAgIDAuMDAwMDAwXSBCUksgWzB4MDMyMWEw
MDAsIDB4MDMyMWFmZmZdIFBHVEFCTEUNClsgICAgMC4wMDAwMDBdIEJSSyBbMHgwMzIxYjAw
MCwgMHgwMzIxYmZmZl0gUEdUQUJMRQ0KWyAgICAwLjAwMDAwMF0gaW5pdF9tZW1vcnlfbWFw
cGluZzogW21lbSAweDAwMTAwMDAwLTB4NWJmZmZmZmZdDQpbICAgIDAuMDAwMDAwXSAgW21l
bSAweDAwMTAwMDAwLTB4NWJmZmZmZmZdIHBhZ2UgNGsNClsgICAgMC4wMDAwMDBdIFJBTURJ
U0s6IFttZW0gMHgwMzYyMzAwMC0weDA0NTU3ZmZmXQ0KWyAgICAwLjAwMDAwMF0gQUNQSTog
RWFybHkgdGFibGUgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGRpc2FibGVkDQpbICAgIDAuMDAw
MDAwXSBBQ1BJOiBSU0RQIDB4MDAwMDAwMDAwMDBGQjEwMCAwMDAwMTQgKHYwMCBBQ1BJQU0p
DQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBSU0RUIDB4MDAwMDAwMDA5RkY5MDAwMCAwMDAwNDgg
KHYwMSBNU0kgICAgT0VNU0xJQyAgMjAxMDA5MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4w
MDAwMDBdIEFDUEk6IEZBQ1AgMHgwMDAwMDAwMDlGRjkwMjAwIDAwMDA4NCAodjAxIDc2NDBN
UyBBNzY0MDEwMCAyMDEwMDkxMyBNU0ZUIDAwMDAwMDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQ
STogRFNEVCAweDAwMDAwMDAwOUZGOTA1RTAgMDA5NDI3ICh2MDEgQTc2NDAgIEE3NjQwMTAw
IDAwMDAwMTAwIElOVEwgMjAwNTExMTcpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBGQUNTIDB4
MDAwMDAwMDA5RkY5RTAwMCAwMDAwNDANClsgICAgMC4wMDAwMDBdIEFDUEk6IEFQSUMgMHgw
MDAwMDAwMDlGRjkwMzkwIDAwMDA4OCAodjAxIDc2NDBNUyBBNzY0MDEwMCAyMDEwMDkxMyBN
U0ZUIDAwMDAwMDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogTUNGRyAweDAwMDAwMDAwOUZG
OTA0MjAgMDAwMDNDICh2MDEgNzY0ME1TIE9FTU1DRkcgIDIwMTAwOTEzIE1TRlQgMDAwMDAw
OTcpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBTTElDIDB4MDAwMDAwMDA5RkY5MDQ2MCAwMDAx
NzYgKHYwMSBNU0kgICAgT0VNU0xJQyAgMjAxMDA5MTMgTVNGVCAwMDAwMDA5NykNClsgICAg
MC4wMDAwMDBdIEFDUEk6IE9FTUIgMHgwMDAwMDAwMDlGRjlFMDQwIDAwMDA3MiAodjAxIDc2
NDBNUyBBNzY0MDEwMCAyMDEwMDkxMyBNU0ZUIDAwMDAwMDk3KQ0KWyAgICAwLjAwMDAwMF0g
QUNQSTogU1JBVCAweDAwMDAwMDAwOUZGOUE1RTAgMDAwMTA4ICh2MDMgQU1EICAgIEZBTV9G
XzEwIDAwMDAwMDAyIEFNRCAgMDAwMDAwMDEpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVU
IDB4MDAwMDAwMDA5RkY5QTZGMCAwMDAwMzggKHYwMSA3NjQwTVMgT0VNSFBFVCAgMjAxMDA5
MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFDUEk6IElWUlMgMHgwMDAwMDAw
MDlGRjlBNzMwIDAwMDExMCAodjAxIEFNRCAgICBSRDg5MFMgICAwMDIwMjAzMSBBTUQgIDAw
MDAwMDAwKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogU1NEVCAweDAwMDAwMDAwOUZGOUE4NDAg
MDAwREE0ICh2MDEgQSBNIEkgIFBPV0VSTk9XIDAwMDAwMDAxIEFNRCAgMDAwMDAwMDEpDQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMA0KWyAg
ICAwLjAwMDAwMF0gTlVNQSB0dXJuZWQgb2ZmDQpbICAgIDAuMDAwMDAwXSBGYWtpbmcgYSBu
b2RlIGF0IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDA1ZmZmZmZmZl0NClsg
ICAgMC4wMDAwMDBdIEluaXRtZW0gc2V0dXAgbm9kZSAwIFttZW0gMHgwMDAwMDAwMC0weDVm
ZmZmZmZmXQ0KWyAgICAwLjAwMDAwMF0gICBOT0RFX0RBVEEgW21lbSAweDVmZDIwMDAwLTB4
NWZkMmFmZmZdDQpbICAgIDAuMDAwMDAwXSBab25lIHJhbmdlczoNClsgICAgMC4wMDAwMDBd
ICAgRE1BICAgICAgW21lbSAweDAwMDAxMDAwLTB4MDBmZmZmZmZdDQpbICAgIDAuMDAwMDAw
XSAgIERNQTMyICAgIFttZW0gMHgwMTAwMDAwMC0weGZmZmZmZmZmXQ0KWyAgICAwLjAwMDAw
MF0gICBOb3JtYWwgICBlbXB0eQ0KWyAgICAwLjAwMDAwMF0gTW92YWJsZSB6b25lIHN0YXJ0
IGZvciBlYWNoIG5vZGUNClsgICAgMC4wMDAwMDBdIEVhcmx5IG1lbW9yeSBub2RlIHJhbmdl
cw0KWyAgICAwLjAwMDAwMF0gICBub2RlICAgMDogW21lbSAweDAwMDAxMDAwLTB4MDAwOThm
ZmZdDQpbICAgIDAuMDAwMDAwXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAxMDAwMDAtMHg1ZmZm
ZmZmZl0NClsgICAgMC4wMDAwMDBdIE9uIG5vZGUgMCB0b3RhbHBhZ2VzOiAzOTMxMTINClsg
ICAgMC4wMDAwMDBdICAgRE1BIHpvbmU6IDY0IHBhZ2VzIHVzZWQgZm9yIG1lbW1hcA0KWyAg
ICAwLjAwMDAwMF0gICBETUEgem9uZTogMjEgcGFnZXMgcmVzZXJ2ZWQNClsgICAgMC4wMDAw
MDBdICAgRE1BIHpvbmU6IDM5OTIgcGFnZXMsIExJRk8gYmF0Y2g6MA0KWyAgICAwLjAwMDAw
MF0gICBETUEzMiB6b25lOiA2MDgwIHBhZ2VzIHVzZWQgZm9yIG1lbW1hcA0KWyAgICAwLjAw
MDAwMF0gICBETUEzMiB6b25lOiAzODkxMjAgcGFnZXMsIExJRk8gYmF0Y2g6MzENClsgICAg
MC4wMDAwMDBdIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4ODA4DQpbICAgIDAuMDAwMDAw
XSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMA0KWyAgICAwLjAwMDAwMF0g
QUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwMV0gbGFwaWNfaWRbMHgwMF0gZW5hYmxlZCkNClsg
ICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDJdIGxhcGljX2lkWzB4MDFd
IGVuYWJsZWQpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAzXSBs
YXBpY19pZFsweDAyXSBlbmFibGVkKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFj
cGlfaWRbMHgwNF0gbGFwaWNfaWRbMHgwM10gZW5hYmxlZCkNClsgICAgMC4wMDAwMDBdIEFD
UEk6IExBUElDIChhY3BpX2lkWzB4MDVdIGxhcGljX2lkWzB4MDRdIGVuYWJsZWQpDQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDA2XSBsYXBpY19pZFsweDA1XSBl
bmFibGVkKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSU9BUElDIChpZFsweDA2XSBhZGRyZXNz
WzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQ0KWyAgICAwLjAwMDAwMF0gSU9BUElDWzBdOiBh
cGljX2lkIDYsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAtMjMNClsg
ICAgMC4wMDAwMDBdIEFDUEk6IElPQVBJQyAoaWRbMHgwN10gYWRkcmVzc1sweGZlYzIwMDAw
XSBnc2lfYmFzZVsyNF0pDQpbICAgIDAuMDAwMDAwXSBJT0FQSUNbMV06IGFwaWNfaWQgNywg
dmVyc2lvbiAzMywgYWRkcmVzcyAweGZlYzIwMDAwLCBHU0kgMjQtNTUNClsgICAgMC4wMDAw
MDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDAgZ2xvYmFsX2lycSAyIGRm
bCBkZmwpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2ly
cSA5IGdsb2JhbF9pcnEgOSBsb3cgbGV2ZWwpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJUlEw
IHVzZWQgYnkgb3ZlcnJpZGUuDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJUlE5IHVzZWQgYnkg
b3ZlcnJpZGUuDQpbICAgIDAuMDAwMDAwXSBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNv
bmZpZ3VyYXRpb24gaW5mb3JtYXRpb24NClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQRVQgaWQ6
IDB4ODMwMCBiYXNlOiAweGZlZDAwMDAwDQpbICAgIDAuMDAwMDAwXSBzbXBib290OiBBbGxv
d2luZyA2IENQVXMsIDAgaG90cGx1ZyBDUFVzDQpbICAgIDAuMDAwMDAwXSBlODIwOiBbbWVt
IDB4YTAwMDAwMDAtMHhmZWRmZmZmZl0gYXZhaWxhYmxlIGZvciBQQ0kgZGV2aWNlcw0KWyAg
ICAwLjAwMDAwMF0gQm9vdGluZyBwYXJhdmlydHVhbGl6ZWQga2VybmVsIG9uIFhlbg0KWyAg
ICAwLjAwMDAwMF0gWGVuIHZlcnNpb246IDQuNS11bnN0YWJsZSAocHJlc2VydmUtQUQpDQpb
ICAgIDAuMDAwMDAwXSBzZXR1cF9wZXJjcHU6IE5SX0NQVVM6OCBucl9jcHVtYXNrX2JpdHM6
OCBucl9jcHVfaWRzOjYgbnJfbm9kZV9pZHM6MQ0KWyAgICAwLjAwMDAwMF0gUEVSQ1BVOiBF
bWJlZGRlZCAyOCBwYWdlcy9jcHUgQGZmZmY4ODAwNWY2MDAwMDAgczgyNDMyIHI4MTkyIGQy
NDA2NCB1MjYyMTQ0DQpbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBzODI0MzIgcjgxOTIg
ZDI0MDY0IHUyNjIxNDQgYWxsb2M9MSoyMDk3MTUyDQpbICAgIDAuMDAwMDAwXSBwY3B1LWFs
bG9jOiBbMF0gMCAxIDIgMyA0IDUgLSAtIA0KWyAgICAwLjAwMDAwMF0geGVuOiBQViBzcGlu
bG9ja3MgZW5hYmxlZA0KWyAgICAwLjAwMDAwMF0gQnVpbHQgMSB6b25lbGlzdHMgaW4gTm9k
ZSBvcmRlciwgbW9iaWxpdHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdlczogMzg2OTQ3DQpb
ICAgIDAuMDAwMDAwXSBQb2xpY3kgem9uZTogRE1BMzINClsgICAgMC4wMDAwMDBdIEtlcm5l
bCBjb21tYW5kIGxpbmU6IHJvb3Q9L2Rldi9tYXBwZXIvc2VydmVlcnN0ZXJ0amUtcm9vdCBy
byB2ZXJib3NlIGVhcmx5cHJpbnRrPXhlbiBtZW09MTUzNk0gY29uc29sZT1odmMwIGNvbnNv
bGU9dHR5MCB2Z2E9Nzk0IHZpZGVvPXZlc2FmYiByODE2OS51c2VfZGFjPTEgYWNwaV9lbmZv
cmNlX3Jlc291cmNlcz1sYXggbWF4X2xvb3A9MzAgbG9vcF9tYXhfcGFydD0xMCBkZWJ1ZyBs
b2dsZXZlbD0xMCBub21vZGVzZXQgeGVuLXBjaWJhY2suaGlkZT0oMDM6MDYuMCkoMDQ6MDAu
KikoMDc6MDAuKikoMDg6MDAuKikoMDk6MDAuKikoMGE6MDAuMCkoMGI6MDAuMCkoMGU6MDAu
KikgcjgxNjkudXNlX2RhYz0xDQpbICAgIDAuMDAwMDAwXSBQSUQgaGFzaCB0YWJsZSBlbnRy
aWVzOiA0MDk2IChvcmRlcjogMywgMzI3NjggYnl0ZXMpDQpbICAgIDAuMDAwMDAwXSBzb2Z0
d2FyZSBJTyBUTEIgW21lbSAweDU5YzAwMDAwLTB4NWRjMDAwMDBdICg2NE1CKSBtYXBwZWQg
YXQgW2ZmZmY4ODAwNTljMDAwMDAtZmZmZjg4MDA1ZGJmZmZmZl0NClsgICAgMC4wMDAwMDBd
IE1lbW9yeTogMTQyNDIyMEsvMTU3MjQ0OEsgYXZhaWxhYmxlICgxMTgzMUsga2VybmVsIGNv
ZGUsIDEwNjJLIHJ3ZGF0YSwgNDQ5Mksgcm9kYXRhLCAxMTAwSyBpbml0LCAxNDE3MksgYnNz
LCAxNDgyMjhLIHJlc2VydmVkKQ0KWyAgICAwLjAwMDAwMF0gU0xVQjogSFdhbGlnbj02NCwg
T3JkZXI9MC0zLCBNaW5PYmplY3RzPTAsIENQVXM9NiwgTm9kZXM9MQ0KWyAgICAwLjAwMDAw
MF0gSGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRhdGlvbi4NClsgICAgMC4wMDAwMDBdIAlS
Q1UgZHludGljay1pZGxlIGdyYWNlLXBlcmlvZCBhY2NlbGVyYXRpb24gaXMgZW5hYmxlZC4N
ClsgICAgMC4wMDAwMDBdIAlBZGRpdGlvbmFsIHBlci1DUFUgaW5mbyBwcmludGVkIHdpdGgg
c3RhbGxzLg0KWyAgICAwLjAwMDAwMF0gCVJDVSByZXN0cmljdGluZyBDUFVzIGZyb20gTlJf
Q1BVUz04IHRvIG5yX2NwdV9pZHM9Ni4NClsgICAgMC4wMDAwMDBdIFJDVTogQWRqdXN0aW5n
IGdlb21ldHJ5IGZvciByY3VfZmFub3V0X2xlYWY9MTYsIG5yX2NwdV9pZHM9Ng0KWyAgICAw
LjAwMDAwMF0gTlJfSVJRUzo0MzUyIG5yX2lycXM6MTAxNiAwDQpbICAgIDAuMDAwMDAwXSB4
ZW46ZXZlbnRzOiBVc2luZyBGSUZPLWJhc2VkIEFCSQ0KWyAgICAwLjAwMDAwMF0geGVuOiBz
Y2kgb3ZlcnJpZGU6IGdsb2JhbF9pcnE9OSB0cmlnZ2VyPTAgcG9sYXJpdHk9MQ0KWyAgICAw
LjAwMDAwMF0geGVuOiByZWdpc3RlcmluZyBnc2kgOSB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkg
MQ0KWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT05IC0+IGlycT05IChnc2k9OSkNClsg
ICAgMC4wMDAwMDBdIHhlbjogYWNwaSBzY2kgOQ0KWyAgICAwLjAwMDAwMF0geGVuOiAtLT4g
cGlycT0xIC0+IGlycT0xIChnc2k9MSkNClsgICAgMC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9
MiAtPiBpcnE9MiAoZ3NpPTIpDQpbICAgIDAuMDAwMDAwXSB4ZW46IC0tPiBwaXJxPTMgLT4g
aXJxPTMgKGdzaT0zKQ0KWyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT00IC0+IGlycT00
IChnc2k9NCkNClsgICAgMC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9NSAtPiBpcnE9NSAoZ3Np
PTUpDQpbICAgIDAuMDAwMDAwXSB4ZW46IC0tPiBwaXJxPTYgLT4gaXJxPTYgKGdzaT02KQ0K
WyAgICAwLjAwMDAwMF0geGVuOiAtLT4gcGlycT03IC0+IGlycT03IChnc2k9NykNClsgICAg
MC4wMDAwMDBdIHhlbjogLS0+IHBpcnE9OCAtPiBpcnE9OCAoZ3NpPTgpDQpbICAgIDAuMDAw
MDAwXSB4ZW46IC0tPiBwaXJxPTEwIC0+IGlycT0xMCAoZ3NpPTEwKQ0KWyAgICAwLjAwMDAw
MF0geGVuOiAtLT4gcGlycT0xMSAtPiBpcnE9MTEgKGdzaT0xMSkNClsgICAgMC4wMDAwMDBd
IHhlbjogLS0+IHBpcnE9MTIgLT4gaXJxPTEyIChnc2k9MTIpDQpbICAgIDAuMDAwMDAwXSB4
ZW46IC0tPiBwaXJxPTEzIC0+IGlycT0xMyAoZ3NpPTEzKQ0KWyAgICAwLjAwMDAwMF0geGVu
OiAtLT4gcGlycT0xNCAtPiBpcnE9MTQgKGdzaT0xNCkNClsgICAgMC4wMDAwMDBdIHhlbjog
LS0+IHBpcnE9MTUgLT4gaXJxPTE1IChnc2k9MTUpDQpbICAgIDAuMDAwMDAwXSBDb25zb2xl
OiBjb2xvdXIgZHVtbXkgZGV2aWNlIDgweDI1DQpbICAgIDAuMDAwMDAwXSBjb25zb2xlIFt0
dHkwXSBlbmFibGVkDQpbICAgIDAuMDAwMDAwXSBib290Y29uc29sZSBbeGVuYm9vdDBdIGRp
c2FibGVkDQpbICAgIDAuMDAwMDAwXSBjb25zb2xlIFtodmMwXSBlbmFibGVkDQpbICAgIDAu
MDAwMDAwXSBMb2NrIGRlcGVuZGVuY3kgdmFsaWRhdG9yOiBDb3B5cmlnaHQgKGMpIDIwMDYg
UmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXINClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9D
S0RFUF9TVUJDTEFTU0VTOiAgOA0KWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9MT0NLX0RFUFRI
OiAgICAgICAgICA0OA0KWyAgICAwLjAwMDAwMF0gLi4uIE1BWF9MT0NLREVQX0tFWVM6ICAg
ICAgICA4MTkxDQpbICAgIDAuMDAwMDAwXSAuLi4gQ0xBU1NIQVNIX1NJWkU6ICAgICAgICAg
IDQwOTYNClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS0RFUF9FTlRSSUVTOiAgICAgMzI3
NjgNClsgICAgMC4wMDAwMDBdIC4uLiBNQVhfTE9DS0RFUF9DSEFJTlM6ICAgICAgNjU1MzYN
ClsgICAgMC4wMDAwMDBdIC4uLiBDSEFJTkhBU0hfU0laRTogICAgICAgICAgMzI3NjgNClsg
ICAgMC4wMDAwMDBdICBtZW1vcnkgdXNlZCBieSBsb2NrIGRlcGVuZGVuY3kgaW5mbzogODE1
OSBrQg0KWyAgICAwLjAwMDAwMF0gIHBlciB0YXNrLXN0cnVjdCBtZW1vcnkgZm9vdHByaW50
OiAxOTIwIGJ5dGVzDQpbICAgIDAuMDAwMDAwXSBrbWVtbGVhazogS2VybmVsIG1lbW9yeSBs
ZWFrIGRldGVjdG9yIGRpc2FibGVkDQpbICAgIDAuMDAwMDAwXSBYZW46IHVzaW5nIHZjcHVv
cCB0aW1lciBpbnRlcmZhY2UNClsgICAgMC4wMDAwMDBdIGluc3RhbGxpbmcgWGVuIHRpbWVy
IGZvciBDUFUgMA0KWyAgICAwLjAwMDAwMF0gdHNjOiBEZXRlY3RlZCAzMjAwLjE3MiBNSHog
cHJvY2Vzc29yDQpbICAgMjAuOTE1NDcwXSBDYWxpYnJhdGluZyBkZWxheSBsb29wIChza2lw
cGVkKSwgdmFsdWUgY2FsY3VsYXRlZCB1c2luZyB0aW1lciBmcmVxdWVuY3kuLiA2NDAyLjAy
IEJvZ29NSVBTIChscGo9MTA2NjcyNDApDQpbICAgMjAuOTQ3NTI3XSBwaWRfbWF4OiBkZWZh
dWx0OiAzMjc2OCBtaW5pbXVtOiAzMDENClsgICAyMC45NjE1NzVdIEFDUEk6IENvcmUgcmV2
aXNpb24gMjAxNDA3MjQNClsgICAyMC45ODgyMThdIEFDUEk6IEFsbCBBQ1BJIFRhYmxlcyBz
dWNjZXNzZnVsbHkgYWNxdWlyZWQNClsgICAyMS4wMDY0ODddIERlbnRyeSBjYWNoZSBoYXNo
IHRhYmxlIGVudHJpZXM6IDI2MjE0NCAob3JkZXI6IDksIDIwOTcxNTIgYnl0ZXMpDQpbICAg
MjEuMDI4MzY2XSBJbm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDEzMTA3MiAob3Jk
ZXI6IDgsIDEwNDg1NzYgYnl0ZXMpDQpbICAgMjEuMDQ5NTQ5XSBNb3VudC1jYWNoZSBoYXNo
IHRhYmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAzLCAzMjc2OCBieXRlcykNClsgICAyMS4w
Njk1MjVdIE1vdW50cG9pbnQtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRl
cjogMywgMzI3NjggYnl0ZXMpDQpbICAgMjEuMDkxNjQ3XSBJbml0aWFsaXppbmcgY2dyb3Vw
IHN1YnN5cyBmcmVlemVyDQpbICAgMjEuMTA0NzA4XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1
YnN5cyBibGtpbw0KWyAgIDIxLjExNzczOF0gQ1BVOiBQaHlzaWNhbCBQcm9jZXNzb3IgSUQ6
IDANClsgICAyMS4xMjk5MDldIENQVTogUHJvY2Vzc29yIENvcmUgSUQ6IDANClsgICAyMS4x
NDEwODldIG1jZTogQ1BVIHN1cHBvcnRzIDIgTUNFIGJhbmtzDQpbICAgMjEuMTUzMzE3XSBM
YXN0IGxldmVsIGlUTEIgZW50cmllczogNEtCIDUxMiwgMk1CIDE2LCA0TUIgOA0KWyAgIDIx
LjE1MzMxN10gTGFzdCBsZXZlbCBkVExCIGVudHJpZXM6IDRLQiA1MTIsIDJNQiAxMjgsIDRN
QiA2NCwgMUdCIDANClsgICAyMS4xODk1ODhdIEZyZWVpbmcgU01QIGFsdGVybmF0aXZlcyBt
ZW1vcnk6IDM2SyAoZmZmZmZmZmY4MjQxZTAwMCAtIGZmZmZmZmZmODI0MjcwMDApDQpbICAg
MjEuMjE0MzA2XSBjcHUgMCBzcGlubG9jayBldmVudCBpcnEgNTcNClsgICAyMS4yMjY1NzVd
IFBlcmZvcm1hbmNlIEV2ZW50czogKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NDcuNjA3XSB0
cmFwcy5jOjI1Nzk6ZDB2MCBEb21haW4gYXR0ZW1wdGVkIFdSTVNSIDAwMDAwMDAwYzAwMTAw
MDQgZnJvbSAweDAwMDAwMDAwMDAwMDAwMDAgdG8gMHgwMDAwMDAwMDAwMDBmZmZmLg0KQnJv
a2VuIFBNVSBoYXJkd2FyZSBkZXRlY3RlZCwgdXNpbmcgc29mdHdhcmUgZXZlbnRzIG9ubHku
DQpbICAgMjEuMjg2NjY1XSBGYWlsZWQgdG8gYWNjZXNzIHBlcmZjdHIgbXNyIChNU1IgYzAw
MTAwMDQgaXMgMCkNClsgICAyMS4zMDQ0MzBdIE5NSSB3YXRjaGRvZzogZGlzYWJsZWQgKGNw
dTApOiBoYXJkd2FyZSBldmVudHMgbm90IGVuYWJsZWQNClsgICAyMS4zMjM5MzJdIGluc3Rh
bGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMQ0KWyAgIDIxLjMzNjIxOV0gY3B1IDEgc3Bpbmxv
Y2sgZXZlbnQgaXJxIDY0DQpbICAgMjEuMzQ4MzczXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBm
b3IgQ1BVIDINClsgICAyMS4zNjAzODldIGNwdSAyIHNwaW5sb2NrIGV2ZW50IGlycSA3MQ0K
WyAgIDIxLjM3MjQ2Ml0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAzDQpbICAgMjEu
Mzg0NTczXSBjcHUgMyBzcGlubG9jayBldmVudCBpcnEgNzgNClsgICAyMS4zOTY3MDJdIGlu
c3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgNA0KWyAgIDIxLjQwODc1MF0gY3B1IDQgc3Bp
bmxvY2sgZXZlbnQgaXJxIDg1DQpbICAgMjEuNDIwOTExXSBpbnN0YWxsaW5nIFhlbiB0aW1l
ciBmb3IgQ1BVIDUNClsgICAyMS40MzI5NTBdIGNwdSA1IHNwaW5sb2NrIGV2ZW50IGlycSA5
Mg0KWyAgIDIxLjQ0NDkzNl0geDg2OiBCb290ZWQgdXAgMSBub2RlLCA2IENQVXMNClsgICAy
MS40NTc3MzBdIGRldnRtcGZzOiBpbml0aWFsaXplZA0KWyAgIDIxLjQ2ODc0OV0geG9yOiBt
ZWFzdXJpbmcgc29mdHdhcmUgY2hlY2tzdW0gc3BlZWQNClsgICAyMS41MTYyMDJdICAgIHBy
ZWZldGNoNjQtc3NlOiAgNTkxOC40MDAgTUIvc2VjDQpbICAgMjEuNTYyODkzXSAgICBnZW5l
cmljX3NzZTogIDU4MzguMDAwIE1CL3NlYw0KWyAgIDIxLjU3NTQ0NV0geG9yOiB1c2luZyBm
dW5jdGlvbjogcHJlZmV0Y2g2NC1zc2UgKDU5MTguNDAwIE1CL3NlYykNClsgICAyMS41OTQx
MDRdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTYNClsgICAyMS42MDc0NjVd
IHhlbjpncmFudF90YWJsZTogR3JhbnQgdGFibGVzIHVzaW5nIHZlcnNpb24gMSBsYXlvdXQN
ClsgICAyMS42MjU2MzNdIEdyYW50IHRhYmxlIGluaXRpYWxpemVkDQpbICAgMjEuNjM3MTc3
XSBub2RlIDAgbGluayAwOiBpbyBwb3J0IFsxMDAwLCBmZmZmZmZdDQpbICAgMjEuNjUxMDEz
XSBUT006IDAwMDAwMDAwYTAwMDAwMDAgYWthIDI1NjBNDQpbICAgMjEuNjYzNzM3XSBGYW0g
MTBoIG1tY29uZiBbbWVtIDB4ZTAwMDAwMDAtMHhlZmZmZmZmZl0NClsgICAyMS42NzkzMzld
IG5vZGUgMCBsaW5rIDA6IG1taW8gW2UwMDAwMDAwLCBlZmZmZmZmZl0gPT0+IG5vbmUNClsg
ICAyMS42OTY3NTFdIG5vZGUgMCBsaW5rIDA6IG1taW8gW2YwMDAwMDAwLCBmZmZmZmZmZl0N
ClsgICAyMS43MTE4MzJdIG5vZGUgMCBsaW5rIDA6IG1taW8gW2EwMDAwLCBiZmZmZl0NClsg
ICAyMS43MjUzNTBdIG5vZGUgMCBsaW5rIDA6IG1taW8gW2EwMDAwMDAwLCBkZmZmZmZmZl0N
ClsgICAyMS43NDA0MjldIFRPTTI6IDAwMDAwMDA1NjAwMDAwMDAgYWthIDIyMDE2TQ0KWyAg
IDIxLjc1MzY5MV0gYnVzOiBbYnVzIDAwLTA3XSBvbiBub2RlIDAgbGluayAwDQpbICAgMjEu
NzY2OTUxXSBidXM6IDAwIFtpbyAgMHgwMDAwLTB4ZmZmZl0NClsgICAyMS43Nzg2NDhdIGJ1
czogMDAgW21lbSAweGYwMDAwMDAwLTB4ZmZmZmZmZmZdDQpbICAgMjEuNzkyNDI5XSBidXM6
IDAwIFttZW0gMHgwMDBhMDAwMC0weDAwMGJmZmZmXQ0KWyAgIDIxLjgwNjIwOF0gYnVzOiAw
MCBbbWVtIDB4YTAwMDAwMDAtMHhkZmZmZmZmZl0NClsgICAyMS44MTk5ODddIGJ1czogMDAg
W21lbSAweDU2MDAwMDAwMC0weGZjZmZmZmZmZmZdDQpbICAgMjEuODM0OTE0XSBBQ1BJOiBi
dXMgdHlwZSBQQ0kgcmVnaXN0ZXJlZA0KWyAgIDIxLjg0Njc2N10gYWNwaXBocDogQUNQSSBI
b3QgUGx1ZyBQQ0kgQ29udHJvbGxlciBEcml2ZXIgdmVyc2lvbjogMC41DQpbICAgMjEuODY2
NzA5XSBQQ0k6IE1NQ09ORklHIGZvciBkb21haW4gMDAwMCBbYnVzIDAwLWZmXSBhdCBbbWVt
IDB4ZTAwMDAwMDAtMHhlZmZmZmZmZl0gKGJhc2UgMHhlMDAwMDAwMCkNClsgICAyMS44OTQz
NDZdIFBDSTogbm90IHVzaW5nIE1NQ09ORklHDQpbICAgMjEuOTA1MDAyXSBQQ0k6IFVzaW5n
IGNvbmZpZ3VyYXRpb24gdHlwZSAxIGZvciBiYXNlIGFjY2Vzcw0KWyAgIDIxLjkyMTkwM10g
UENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5cGUgMSBmb3IgZXh0ZW5kZWQgYWNjZXNzDQpb
ICAgMjIuMDIzNDUxXSByYWlkNjogc3NlMngxICAgIDM5MTIgTUIvcw0KWyAgIDIyLjA5MTE3
Ml0gcmFpZDY6IHNzZTJ4MiAgICA1OTEyIE1CL3MNClsgICAyMi4xNTg4NjNdIHJhaWQ2OiBz
c2UyeDQgICAgNjI1OCBNQi9zDQpbICAgMjIuMTY5ODUxXSByYWlkNjogdXNpbmcgYWxnb3Jp
dGhtIHNzZTJ4NCAoNjI1OCBNQi9zKQ0KWyAgIDIyLjE4NTE5MF0gcmFpZDY6IHVzaW5nIGlu
dHgxIHJlY292ZXJ5IGFsZ29yaXRobQ0KWyAgIDIyLjE5OTYxOF0gQUNQSTogQWRkZWQgX09T
SShNb2R1bGUgRGV2aWNlKQ0KWyAgIDIyLjIxMjIzN10gQUNQSTogQWRkZWQgX09TSShQcm9j
ZXNzb3IgRGV2aWNlKQ0KWyAgIDIyLjIyNTc1MF0gQUNQSTogQWRkZWQgX09TSSgzLjAgX1ND
UCBFeHRlbnNpb25zKQ0KWyAgIDIyLjI0MDA0N10gQUNQSTogQWRkZWQgX09TSShQcm9jZXNz
b3IgQWdncmVnYXRvciBEZXZpY2UpDQpbICAgMjIuMjU5NDc5XSBBQ1BJOiBTQ0kgKEFDUEkg
R1NJIDkpIG5vdCByZWdpc3RlcmVkDQpbICAgMjIuMjc2NDkzXSBBQ1BJOiBFeGVjdXRlZCAz
IGJsb2NrcyBvZiBtb2R1bGUtbGV2ZWwgZXhlY3V0YWJsZSBBTUwgY29kZQ0KWyAgIDIyLjMx
MjcyNV0gQUNQSTogSW50ZXJwcmV0ZXIgZW5hYmxlZA0KWyAgIDIyLjMyMzQzNV0gQUNQSTog
KHN1cHBvcnRzIFMwIFM1KQ0KWyAgIDIyLjMzMzgyNF0gQUNQSTogVXNpbmcgSU9BUElDIGZv
ciBpbnRlcnJ1cHQgcm91dGluZw0KWyAgIDIyLjM0ODk0M10gUENJOiBNTUNPTkZJRyBmb3Ig
ZG9tYWluIDAwMDAgW2J1cyAwMC1mZl0gYXQgW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmZd
IChiYXNlIDB4ZTAwMDAwMDApDQpbICAgMjIuMzc4NTI2XSBQQ0k6IE1NQ09ORklHIGF0IFtt
ZW0gMHhlMDAwMDAwMC0weGVmZmZmZmZmXSByZXNlcnZlZCBpbiBBQ1BJIG1vdGhlcmJvYXJk
IHJlc291cmNlcw0KWyAgIDIyLjQyODMxNl0gUENJOiBVc2luZyBob3N0IGJyaWRnZSB3aW5k
b3dzIGZyb20gQUNQSTsgaWYgbmVjZXNzYXJ5LCB1c2UgInBjaT1ub2NycyIgYW5kIHJlcG9y
dCBhIGJ1Zw0KWyAgIDIyLjQ2NjE0Ml0gQUNQSTogUENJIFJvb3QgQnJpZGdlIFtQQ0kwXSAo
ZG9tYWluIDAwMDAgW2J1cyAwMC1mZl0pDQpbICAgMjIuNDg0MzkzXSBhY3BpIFBOUDBBMDM6
MDA6IF9PU0M6IE9TIHN1cHBvcnRzIFtFeHRlbmRlZENvbmZpZyBBU1BNIENsb2NrUE0gU2Vn
bWVudHMgTVNJXQ0KWyAgIDIyLjUwOTQ5NF0gYWNwaSBQTlAwQTAzOjAwOiBfT1NDOiBPUyBu
b3cgY29udHJvbHMgW1BDSWVIb3RwbHVnIFBNRSBBRVIgUENJZUNhcGFiaWxpdHldDQpbICAg
MjIuNTM0MDc1XSBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVzIDAwMDA6MDANClsgICAyMi41NDYw
NzhdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2J1cyAwMC1mZl0NClsg
ICAyMi41NjI3MTZdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAw
eDAwMDAtMHgwY2Y3XQ0KWyAgIDIyLjU4MTQzM10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1
cyByZXNvdXJjZSBbaW8gIDB4MGQwMC0weGZmZmZdDQpbICAgMjIuNjAwMTUyXSBwY2lfYnVz
IDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHgwMDBhMDAwMC0weDAwMGJmZmZm
XQ0KWyAgIDIyLjYyMDk1Ml0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBb
bWVtIDB4MDAwZDAwMDAtMHgwMDBkZmZmZl0NClsgICAyMi42NDE3NTBdIHBjaV9idXMgMDAw
MDowMDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAweGEwMDAwMDAwLTB4ZGZmZmZmZmZdDQpb
ICAgMjIuNjYyNTQ5XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0g
MHhmMDAwMDAwMC0weGZlYmZmZmZmXQ0KWyAgIDIyLjY4MzM1NV0gcGNpX2J1cyAwMDAwOjAw
OiBzY2FubmluZyBidXMNClsgICAyMi42OTU1OTNdIHBjaSAwMDAwOjAwOjAwLjA6IFsxMDAy
OjVhMTFdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANClsgICAyMi43MTM3NzFdIHBjaSAwMDAw
OjAwOjAwLjA6IGNhbGxpbmcgcXVpcmtfbW1pb19hbHdheXNfb24rMHgwLzB4MTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjQ5LjEwNF0gUENJIGFkZCBkZXZpY2UgMDAwMDowMDowMC4w
DQpbICAgMjIuNzQ4NjY0XSBwY2kgMDAwMDowMDowMC4yOiBbMTAwMjo1YTIzXSB0eXBlIDAw
IGNsYXNzIDB4MDgwNjAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo0OS4xMzldIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6MDA6MDAuMg0KWyAgIDIyLjc4MjcxNF0gcGNpIDAwMDA6MDA6MDIu
MDogWzEwMDI6NWExNl0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0KWyAgIDIyLjgwMDk1OV0g
cGNpIDAwMDA6MDA6MDIuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQN
ClsgICAyMi44MTkzNTVdIHBjaSAwMDAwOjAwOjAyLjA6IFBNRSMgZGlzYWJsZWQNClsgICAy
Mi44MzIxNzVdIHBjaSAwMDAwOjAwOjAyLjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkg
QUNQSQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NDkuMjIxXSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjAyLjANClsgICAyMi44NjUxMTRdIHBjaSAwMDAwOjAwOjAzLjA6IFsxMDAyOjVh
MTddIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANClsgICAyMi44ODMzNzBdIHBjaSAwMDAwOjAw
OjAzLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQpbICAgMjIuOTAx
NzQwXSBwY2kgMDAwMDowMDowMy4wOiBQTUUjIGRpc2FibGVkDQpbICAgMjIuOTE0NTc2XSBw
Y2kgMDAwMDowMDowMy4wOiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFDUEkNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjQ5LjMwM10gUENJIGFkZCBkZXZpY2UgMDAwMDowMDowMy4w
DQpbICAgMjIuOTQ3NTI5XSBwY2kgMDAwMDowMDowNS4wOiBbMTAwMjo1YTE5XSB0eXBlIDAx
IGNsYXNzIDB4MDYwNDAwDQpbICAgMjIuOTY1Nzg1XSBwY2kgMDAwMDowMDowNS4wOiBQTUUj
IHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0KWyAgIDIyLjk4NDE1NF0gcGNpIDAw
MDA6MDA6MDUuMDogUE1FIyBkaXNhYmxlZA0KWyAgIDIyLjk5Njk5Ml0gcGNpIDAwMDA6MDA6
MDUuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxlZCBieSBBQ1BJDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzowODo0OS4zODZdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MDUuMA0KWyAgIDIzLjAy
OTk0Ml0gcGNpIDAwMDA6MDA6MDYuMDogWzEwMDI6NWExYV0gdHlwZSAwMSBjbGFzcyAweDA2
MDQwMA0KWyAgIDIzLjA0ODIwMV0gcGNpIDAwMDA6MDA6MDYuMDogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQNClsgICAyMy4wNjY1NzBdIHBjaSAwMDAwOjAwOjA2LjA6
IFBNRSMgZGlzYWJsZWQNClsgICAyMy4wNzk0MDldIHBjaSAwMDAwOjAwOjA2LjA6IFN5c3Rl
bSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQSQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NDku
NDY4XSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjA2LjANClsgICAyMy4xMTIzNzZdIHBjaSAw
MDAwOjAwOjA5LjA6IFsxMDAyOjVhMWNdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANClsgICAy
My4xMzA2MTVdIHBjaSAwMDAwOjAwOjA5LjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNo
b3QgRDNjb2xkDQpbICAgMjMuMTQ4OTg2XSBwY2kgMDAwMDowMDowOS4wOiBQTUUjIGRpc2Fi
bGVkDQpbICAgMjMuMTYxODI0XSBwY2kgMDAwMDowMDowOS4wOiBTeXN0ZW0gd2FrZXVwIGRp
c2FibGVkIGJ5IEFDUEkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjQ5LjU1MV0gUENJIGFk
ZCBkZXZpY2UgMDAwMDowMDowOS4wDQpbICAgMjMuMTk0Nzc1XSBwY2kgMDAwMDowMDowYS4w
OiBbMTAwMjo1YTFkXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQpbICAgMjMuMjEzMDMwXSBw
Y2kgMDAwMDowMDowYS4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0K
WyAgIDIzLjIzMTQwMl0gcGNpIDAwMDA6MDA6MGEuMDogUE1FIyBkaXNhYmxlZA0KWyAgIDIz
LjI0NDI0MF0gcGNpIDAwMDA6MDA6MGEuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxlZCBieSBB
Q1BJDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo0OS42MzNdIFBDSSBhZGQgZGV2aWNlIDAw
MDA6MDA6MGEuMA0KWyAgIDIzLjI3NzE4OF0gcGNpIDAwMDA6MDA6MGIuMDogWzEwMDI6NWEx
Zl0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0KWyAgIDIzLjI5NTQ0N10gcGNpIDAwMDA6MDA6
MGIuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNClsgICAyMy4zMTM4
MTZdIHBjaSAwMDAwOjAwOjBiLjA6IFBNRSMgZGlzYWJsZWQNClsgICAyMy4zMjY2NTVdIHBj
aSAwMDAwOjAwOjBiLjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQSQ0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MDg6NDkuNzE1XSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjBiLjAN
ClsgICAyMy4zNTk2MTBdIHBjaSAwMDAwOjAwOjBjLjA6IFsxMDAyOjVhMjBdIHR5cGUgMDEg
Y2xhc3MgMHgwNjA0MDANClsgICAyMy4zNzc4NjNdIHBjaSAwMDAwOjAwOjBjLjA6IFBNRSMg
c3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQpbICAgMjMuMzk2MjMzXSBwY2kgMDAw
MDowMDowYy4wOiBQTUUjIGRpc2FibGVkDQpbICAgMjMuNDA5MDgwXSBwY2kgMDAwMDowMDow
Yy4wOiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFDUEkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjA4OjQ5Ljc5OF0gUENJIGFkZCBkZXZpY2UgMDAwMDowMDowYy4wDQpbICAgMjMuNDQy
MDQzXSBwY2kgMDAwMDowMDowZC4wOiBbMTAwMjo1YTFlXSB0eXBlIDAxIGNsYXNzIDB4MDYw
NDAwDQpbICAgMjMuNDYwMzAyXSBwY2kgMDAwMDowMDowZC4wOiBQTUUjIHN1cHBvcnRlZCBm
cm9tIEQwIEQzaG90IEQzY29sZA0KWyAgIDIzLjQ3ODY3M10gcGNpIDAwMDA6MDA6MGQuMDog
UE1FIyBkaXNhYmxlZA0KWyAgIDIzLjQ5MTUyM10gcGNpIDAwMDA6MDA6MGQuMDogU3lzdGVt
IHdha2V1cCBkaXNhYmxlZCBieSBBQ1BJDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo0OS44
ODBdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MGQuMA0KWyAgIDIzLjUyNDQ3NF0gcGNpIDAw
MDA6MDA6MTEuMDogWzEwMDI6NDM5MV0gdHlwZSAwMCBjbGFzcyAweDAxMDYwMQ0KWyAgIDIz
LjU0MjY1M10gcGNpIDAwMDA6MDA6MTEuMDogcmVnIDB4MTA6IFtpbyAgMHgzMDAwLTB4MzAw
N10NClsgICAyMy41NTk1MzZdIHBjaSAwMDAwOjAwOjExLjA6IHJlZyAweDE0OiBbaW8gIDB4
MjAwMC0weDIwMDNdDQpbICAgMjMuNTc2NDM0XSBwY2kgMDAwMDowMDoxMS4wOiByZWcgMHgx
ODogW2lvICAweDEwMDAtMHgxMDA3XQ0KWyAgIDIzLjU5MzMzM10gcGNpIDAwMDA6MDA6MTEu
MDogcmVnIDB4MWM6IFtpbyAgMHg0ODAwLTB4NDgwM10NClsgICAyMy42MTAyMzNdIHBjaSAw
MDAwOjAwOjExLjA6IHJlZyAweDIwOiBbaW8gIDB4MzgwMC0weDM4MGZdDQpbICAgMjMuNjI3
MTMzXSBwY2kgMDAwMDowMDoxMS4wOiByZWcgMHgyNDogW21lbSAweGZkYmZmMDAwLTB4ZmRi
ZmYzZmZdDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MC4wMThdIFBDSSBhZGQgZGV2aWNl
IDAwMDA6MDA6MTEuMA0KWyAgIDIzLjY2MTk5MF0gcGNpIDAwMDA6MDA6MTIuMDogWzEwMDI6
NDM5N10gdHlwZSAwMCBjbGFzcyAweDBjMDMxMA0KWyAgIDIzLjY4MDE3NV0gcGNpIDAwMDA6
MDA6MTIuMDogcmVnIDB4MTA6IFttZW0gMHhmZGJmNzAwMC0weGZkYmY3ZmZmXQ0KWyAgIDIz
LjY5OTMwNF0gcGNpIDAwMDA6MDA6MTIuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxlZCBieSBB
Q1BJDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MC4wODhdIFBDSSBhZGQgZGV2aWNlIDAw
MDA6MDA6MTIuMA0KWyAgIDIzLjczMjE5Nl0gcGNpIDAwMDA6MDA6MTIuMjogWzEwMDI6NDM5
Nl0gdHlwZSAwMCBjbGFzcyAweDBjMDMyMA0KWyAgIDIzLjc1MDM3OF0gcGNpIDAwMDA6MDA6
MTIuMjogcmVnIDB4MTA6IFttZW0gMHhmZGJmZjQwMC0weGZkYmZmNGZmXQ0KWyAgIDIzLjc2
OTQ1MF0gcGNpIDAwMDA6MDA6MTIuMjogc3VwcG9ydHMgRDEgRDINClsgICAyMy43ODIzMzNd
IHBjaSAwMDAwOjAwOjEyLjI6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNob3QN
ClsgICAyMy44MDA1MzRdIHBjaSAwMDAwOjAwOjEyLjI6IFBNRSMgZGlzYWJsZWQNClsgICAy
My44MTMzNjldIHBjaSAwMDAwOjAwOjEyLjI6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkg
QUNQSQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTAuMjAyXSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjEyLjINClsgICAyMy44NDYzMjZdIHBjaSAwMDAwOjAwOjEzLjA6IFsxMDAyOjQz
OTddIHR5cGUgMDAgY2xhc3MgMHgwYzAzMTANClsgICAyMy44NjQ1MDVdIHBjaSAwMDAwOjAw
OjEzLjA6IHJlZyAweDEwOiBbbWVtIDB4ZmRiZmMwMDAtMHhmZGJmY2ZmZl0NClsgICAyMy44
ODM2MzRdIHBjaSAwMDAwOjAwOjEzLjA6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQ
SQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTAuMjcyXSBQQ0kgYWRkIGRldmljZSAwMDAw
OjAwOjEzLjANClsgICAyMy45MTY1MjNdIHBjaSAwMDAwOjAwOjEzLjI6IFsxMDAyOjQzOTZd
IHR5cGUgMDAgY2xhc3MgMHgwYzAzMjANClsgICAyMy45MzQ3MDhdIHBjaSAwMDAwOjAwOjEz
LjI6IHJlZyAweDEwOiBbbWVtIDB4ZmRiZmY4MDAtMHhmZGJmZjhmZl0NClsgICAyMy45NTM3
NzldIHBjaSAwMDAwOjAwOjEzLjI6IHN1cHBvcnRzIEQxIEQyDQpbICAgMjMuOTY2NjU5XSBw
Y2kgMDAwMDowMDoxMy4yOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQxIEQyIEQzaG90DQpb
ICAgMjMuOTg0ODY1XSBwY2kgMDAwMDowMDoxMy4yOiBQTUUjIGRpc2FibGVkDQpbICAgMjMu
OTk3Njk2XSBwY2kgMDAwMDowMDoxMy4yOiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFD
UEkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUwLjM4Nl0gUENJIGFkZCBkZXZpY2UgMDAw
MDowMDoxMy4yDQpbICAgMjQuMDMwNjYwXSBwY2kgMDAwMDowMDoxNC4wOiBbMTAwMjo0Mzg1
XSB0eXBlIDAwIGNsYXNzIDB4MGMwNTAwDQpbICAgMjQuMDQ4ODI0XSBwY2kgMDAwMDowMDox
NC4wOiBjYWxsaW5nIHNiNjAwX2Rpc2FibGVfaHBldF9iYXIrMHgwLzB4NTANClsgICAyNC4w
Njg0MDNdIHBjaSAwMDAwOjAwOjE0LjA6IGNhbGxpbmcgZm9yY2VfZGlzYWJsZV9ocGV0X21z
aSsweDAvMHgxMA0KWyAgIDI0LjA4NzgxN10gcGNpIDAwMDA6MDA6MTQuMDogY2FsbGluZyBz
YjYwMF9ocGV0X3F1aXJrKzB4MC8weDUwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MC40
NzddIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MTQuMA0KWyAgIDI0LjEyMTY1M10gcGNpIDAw
MDA6MDA6MTQuMjogWzEwMDI6NDM4M10gdHlwZSAwMCBjbGFzcyAweDA0MDMwMA0KWyAgIDI0
LjEzOTg0M10gcGNpIDAwMDA6MDA6MTQuMjogcmVnIDB4MTA6IFttZW0gMHhmZGJmODAwMC0w
eGZkYmZiZmZmIDY0Yml0XQ0KWyAgIDI0LjE2MDQ0Nl0gcGNpIDAwMDA6MDA6MTQuMjogUE1F
IyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNClsgICAyNC4xNzg4MTRdIHBjaSAw
MDAwOjAwOjE0LjI6IFBNRSMgZGlzYWJsZWQNClsgICAyNC4xOTE2NDZdIHBjaSAwMDAwOjAw
OjE0LjI6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQgYnkgQUNQSQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MDg6NTAuNTgwXSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjE0LjINClsgICAyNC4y
MjQ2MDFdIHBjaSAwMDAwOjAwOjE0LjM6IFsxMDAyOjQzOWRdIHR5cGUgMDAgY2xhc3MgMHgw
NjAxMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUwLjYxNF0gUENJIGFkZCBkZXZpY2Ug
MDAwMDowMDoxNC4zDQpbICAgMjQuMjU4NjU3XSBwY2kgMDAwMDowMDoxNC40OiBbMTAwMjo0
Mzg0XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAxDQpbICAgMjQuMjc2OTYxXSBwY2kgMDAwMDow
MDoxNC40OiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFDUEkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjA4OjUwLjY2Nl0gUENJIGFkZCBkZXZpY2UgMDAwMDowMDoxNC40DQpbICAgMjQu
MzA5ODc2XSBwY2kgMDAwMDowMDoxNC41OiBbMTAwMjo0Mzk5XSB0eXBlIDAwIGNsYXNzIDB4
MGMwMzEwDQpbICAgMjQuMzI4MDY4XSBwY2kgMDAwMDowMDoxNC41OiByZWcgMHgxMDogW21l
bSAweGZkYmZkMDAwLTB4ZmRiZmRmZmZdDQpbICAgMjQuMzQ3MTg5XSBwY2kgMDAwMDowMDox
NC41OiBTeXN0ZW0gd2FrZXVwIGRpc2FibGVkIGJ5IEFDUEkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjA4OjUwLjczNl0gUENJIGFkZCBkZXZpY2UgMDAwMDowMDoxNC41DQpbICAgMjQuMzgw
MDgxXSBwY2kgMDAwMDowMDoxNS4wOiBbMTAwMjo0M2EwXSB0eXBlIDAxIGNsYXNzIDB4MDYw
NDAwDQpbICAgMjQuMzk4MzQ4XSBwY2kgMDAwMDowMDoxNS4wOiBzdXBwb3J0cyBEMSBEMg0K
WyAgIDI0LjQxMTM0M10gcGNpIDAwMDA6MDA6MTUuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxl
ZCBieSBBQ1BJDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MC44MDBdIFBDSSBhZGQgZGV2
aWNlIDAwMDA6MDA6MTUuMA0KWyAgIDI0LjQ0NDMyMV0gcGNpIDAwMDA6MDA6MTYuMDogWzEw
MDI6NDM5N10gdHlwZSAwMCBjbGFzcyAweDBjMDMxMA0KWyAgIDI0LjQ2MjQ5OF0gcGNpIDAw
MDA6MDA6MTYuMDogcmVnIDB4MTA6IFttZW0gMHhmZGJmZTAwMC0weGZkYmZlZmZmXQ0KWyAg
IDI0LjQ4MTYyNF0gcGNpIDAwMDA6MDA6MTYuMDogU3lzdGVtIHdha2V1cCBkaXNhYmxlZCBi
eSBBQ1BJDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MC44NzBdIFBDSSBhZGQgZGV2aWNl
IDAwMDA6MDA6MTYuMA0KWyAgIDI0LjUxNDUxNF0gcGNpIDAwMDA6MDA6MTYuMjogWzEwMDI6
NDM5Nl0gdHlwZSAwMCBjbGFzcyAweDBjMDMyMA0KWyAgIDI0LjUzMjcwM10gcGNpIDAwMDA6
MDA6MTYuMjogcmVnIDB4MTA6IFttZW0gMHhmZGJmZmMwMC0weGZkYmZmY2ZmXQ0KWyAgIDI0
LjU1MTc3MV0gcGNpIDAwMDA6MDA6MTYuMjogc3VwcG9ydHMgRDEgRDINClsgICAyNC41NjQ2
NTRdIHBjaSAwMDAwOjAwOjE2LjI6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNo
b3QNClsgICAyNC41ODI4NThdIHBjaSAwMDAwOjAwOjE2LjI6IFBNRSMgZGlzYWJsZWQNClsg
ICAyNC41OTU2ODldIHBjaSAwMDAwOjAwOjE2LjI6IFN5c3RlbSB3YWtldXAgZGlzYWJsZWQg
YnkgQUNQSQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTAuOTg0XSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjAwOjE2LjINClsgICAyNC42Mjg2NTRdIHBjaSAwMDAwOjAwOjE4LjA6IFsxMDIy
OjEyMDBdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANClsgICAyNC42NDY4MTJdIHBjaSAwMDAw
OjAwOjE4LjA6IGNhbGxpbmcgcXVpcmtfbW1pb19hbHdheXNfb24rMHgwLzB4MTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjUxLjAzOF0gUENJIGFkZCBkZXZpY2UgMDAwMDowMDoxOC4w
DQpbICAgMjQuNjgxNjc0XSBwY2kgMDAwMDowMDoxOC4xOiBbMTAyMjoxMjAxXSB0eXBlIDAw
IGNsYXNzIDB4MDYwMDAwDQpbICAgMjQuNjk5ODUwXSBwY2kgMDAwMDowMDoxOC4xOiBjYWxs
aW5nIHF1aXJrX21taW9fYWx3YXlzX29uKzB4MC8weDEwDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzowODo1MS4wOTFdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MTguMQ0KWyAgIDI0LjczNDcx
MV0gcGNpIDAwMDA6MDA6MTguMjogWzEwMjI6MTIwMl0gdHlwZSAwMCBjbGFzcyAweDA2MDAw
MA0KWyAgIDI0Ljc1Mjg4Nl0gcGNpIDAwMDA6MDA6MTguMjogY2FsbGluZyBxdWlya19tbWlv
X2Fsd2F5c19vbisweDAvMHgxMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTEuMTQ0XSBQ
Q0kgYWRkIGRldmljZSAwMDAwOjAwOjE4LjINClsgICAyNC43ODc3NTJdIHBjaSAwMDAwOjAw
OjE4LjM6IFsxMDIyOjEyMDNdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANClsgICAyNC44MDU5
MjRdIHBjaSAwMDAwOjAwOjE4LjM6IGNhbGxpbmcgcXVpcmtfbW1pb19hbHdheXNfb24rMHgw
LzB4MTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUxLjE5N10gUENJIGFkZCBkZXZpY2Ug
MDAwMDowMDoxOC4zDQpbICAgMjQuODQwNzg3XSBwY2kgMDAwMDowMDoxOC40OiBbMTAyMjox
MjA0XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQpbICAgMjQuODU4OTYwXSBwY2kgMDAwMDow
MDoxOC40OiBjYWxsaW5nIHF1aXJrX21taW9fYWx3YXlzX29uKzB4MC8weDEwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzowODo1MS4yNTBdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MTguNA0K
WyAgIDI0Ljg5MzgzNl0gcGNpX2J1cyAwMDAwOjAwOiBmaXh1cHMgZm9yIGJ1cw0KWyAgIDI0
LjkwNjU1MF0gcGNpIDAwMDA6MDA6MDIuMDogc2Nhbm5pbmcgW2J1cyAwZi0wZl0gYmVoaW5k
IGJyaWRnZSwgcGFzcyAwDQpbICAgMjQuOTI2OTA0XSBwY2lfYnVzIDAwMDA6MGY6IHNjYW5u
aW5nIGJ1cw0KWyAgIDI0LjkzOTA1MV0gcGNpIDAwMDA6MGY6MDAuMDogWzEwMDI6OTVjNV0g
dHlwZSAwMCBjbGFzcyAweDAzMDAwMA0KWyAgIDI0Ljk1NzI1OF0gcGNpIDAwMDA6MGY6MDAu
MDogcmVnIDB4MTA6IFttZW0gMHhkMDAwMDAwMC0weGRmZmZmZmZmIDY0Yml0IHByZWZdDQpb
ICAgMjQuOTc5MDkzXSBwY2kgMDAwMDowZjowMC4wOiByZWcgMHgxODogW21lbSAweGZlOWUw
MDAwLTB4ZmU5ZWZmZmYgNjRiaXRdDQpbICAgMjQuOTk5NjIyXSBwY2kgMDAwMDowZjowMC4w
OiByZWcgMHgyMDogW2lvICAweGUwMDAtMHhlMGZmXQ0KWyAgIDI1LjAxNjUzMV0gcGNpIDAw
MDA6MGY6MDAuMDogcmVnIDB4MzA6IFttZW0gMHhmZTljMDAwMC0weGZlOWRmZmZmIHByZWZd
DQpbICAgMjUuMDM2ODQ4XSBwY2kgMDAwMDowZjowMC4wOiBzdXBwb3J0cyBEMSBEMg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MDg6NTEuNDIyXSBQQ0kgYWRkIGRldmljZSAwMDAwOjBmOjAw
LjANClsgICAyNS4wNjU2ODVdIHBjaSAwMDAwOjBmOjAwLjE6IFsxMDAyOmFhMjhdIHR5cGUg
MDAgY2xhc3MgMHgwNDAzMDANClsgICAyNS4wODM4NzFdIHBjaSAwMDAwOjBmOjAwLjE6IHJl
ZyAweDEwOiBbbWVtIDB4ZmU5ZmMwMDAtMHhmZTlmZmZmZiA2NGJpdF0NClsgICAyNS4xMDQ0
OTZdIHBjaSAwMDAwOjBmOjAwLjE6IHN1cHBvcnRzIEQxIEQyDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzowODo1MS40ODldIFBDSSBhZGQgZGV2aWNlIDAwMDA6MGY6MDAuMQ0KWyAgIDI1LjE0
MDE2Ml0gcGNpX2J1cyAwMDAwOjBmOiBmaXh1cHMgZm9yIGJ1cw0KWyAgIDI1LjE1MjQyN10g
cGNpIDAwMDA6MDA6MDIuMDogUENJIGJyaWRnZSB0byBbYnVzIDBmXQ0KWyAgIDI1LjE2NzUw
NV0gcGNpIDAwMDA6MDA6MDIuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHhlMDAwLTB4ZWZm
Zl0NClsgICAyNS4xODU5NThdIHBjaSAwMDAwOjAwOjAyLjA6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4ZmU5MDAwMDAtMHhmZTlmZmZmZl0NClsgICAyNS4yMDY0OThdIHBjaSAwMDAwOjAw
OjAyLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZDAwMDAwMDAtMHhkZmZmZmZmZiA2NGJp
dCBwcmVmXQ0KWyAgIDI1LjIyOTg5Ml0gcGNpX2J1cyAwMDAwOjBmOiBidXMgc2NhbiByZXR1
cm5pbmcgd2l0aCBtYXg9MGYNClsgICAyNS4yNDY3OTVdIHBjaSAwMDAwOjAwOjAzLjA6IHNj
YW5uaW5nIFtidXMgMGUtMGVdIGJlaGluZCBicmlkZ2UsIHBhc3MgMA0KWyAgIDI1LjI2NzE3
M10gcGNpX2J1cyAwMDAwOjBlOiBzY2FubmluZyBidXMNClsgICAyNS4yNzkzMTFdIHBjaSAw
MDAwOjBlOjAwLjA6IFsxMDAyOjY3NTldIHR5cGUgMDAgY2xhc3MgMHgwMzAwMDANClsgICAy
NS4yOTc1MTRdIHBjaSAwMDAwOjBlOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4YzAwMDAwMDAt
MHhjZmZmZmZmZiA2NGJpdCBwcmVmXQ0KWyAgIDI1LjMxOTM0NF0gcGNpIDAwMDA6MGU6MDAu
MDogcmVnIDB4MTg6IFttZW0gMHhmZThjMDAwMC0weGZlOGRmZmZmIDY0Yml0XQ0KWyAgIDI1
LjMzOTg3OF0gcGNpIDAwMDA6MGU6MDAuMDogcmVnIDB4MjA6IFtpbyAgMHhkMDAwLTB4ZDBm
Zl0NClsgICAyNS4zNTY3ODRdIHBjaSAwMDAwOjBlOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4
ZmU4YTAwMDAtMHhmZThiZmZmZiBwcmVmXQ0KWyAgIDI1LjM3NzExMl0gcGNpIDAwMDA6MGU6
MDAuMDogc3VwcG9ydHMgRDEgRDINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUxLjc2Ml0g
UENJIGFkZCBkZXZpY2UgMDAwMDowZTowMC4wDQpbICAgMjUuNDA1OTQ1XSBwY2kgMDAwMDow
ZTowMC4xOiBbMTAwMjphYTkwXSB0eXBlIDAwIGNsYXNzIDB4MDQwMzAwDQpbICAgMjUuNDI0
MjE0XSBwY2kgMDAwMDowZTowMC4xOiByZWcgMHgxMDogW21lbSAweGZlOGZjMDAwLTB4ZmU4
ZmZmZmYgNjRiaXRdDQpbICAgMjUuNDQ0Nzg3XSBwY2kgMDAwMDowZTowMC4xOiBzdXBwb3J0
cyBEMSBEMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTEuODI5XSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjBlOjAwLjENClsgICAyNS40ODA0MzBdIHBjaV9idXMgMDAwMDowZTogZml4dXBz
IGZvciBidXMNClsgICAyNS40OTI3MTRdIHBjaSAwMDAwOjAwOjAzLjA6IFBDSSBicmlkZ2Ug
dG8gW2J1cyAwZV0NClsgICAyNS41MDc3OTZdIHBjaSAwMDAwOjAwOjAzLjA6ICAgYnJpZGdl
IHdpbmRvdyBbaW8gIDB4ZDAwMC0weGRmZmZdDQpbICAgMjUuNTI2MjUzXSBwY2kgMDAwMDow
MDowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZlODAwMDAwLTB4ZmU4ZmZmZmZdDQpb
ICAgMjUuNTQ2NzkyXSBwY2kgMDAwMDowMDowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAw
eGMwMDAwMDAwLTB4Y2ZmZmZmZmYgNjRiaXQgcHJlZl0NClsgICAyNS41NzAxODddIHBjaV9i
dXMgMDAwMDowZTogYnVzIHNjYW4gcmV0dXJuaW5nIHdpdGggbWF4PTBlDQpbICAgMjUuNTg3
MDg5XSBwY2kgMDAwMDowMDowNS4wOiBzY2FubmluZyBbYnVzIDBkLTBkXSBiZWhpbmQgYnJp
ZGdlLCBwYXNzIDANClsgICAyNS42MDc0NjBdIHBjaV9idXMgMDAwMDowZDogc2Nhbm5pbmcg
YnVzDQpbICAgMjUuNjE5NjA4XSBwY2kgMDAwMDowZDowMC4wOiBbMTBlYzo4MTY4XSB0eXBl
IDAwIGNsYXNzIDB4MDIwMDAwDQpbICAgMjUuNjM3ODA3XSBwY2kgMDAwMDowZDowMC4wOiBy
ZWcgMHgxMDogW2lvICAweGM4MDAtMHhjOGZmXQ0KWyAgIDI1LjY1NDcxNV0gcGNpIDAwMDA6
MGQ6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhiZmZmZjAwMC0weGJmZmZmZmZmIDY0Yml0IHBy
ZWZdDQpbICAgMjUuNjc2NTQyXSBwY2kgMDAwMDowZDowMC4wOiByZWcgMHgyMDogW21lbSAw
eGJmZmY4MDAwLTB4YmZmZmJmZmYgNjRiaXQgcHJlZl0NClsgICAyNS42OTgzNzFdIHBjaSAw
MDAwOjBkOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4ZmU3ZTAwMDAtMHhmZTdmZmZmZiBwcmVm
XQ0KWyAgIDI1LjcxODczMl0gcGNpIDAwMDA6MGQ6MDAuMDogc3VwcG9ydHMgRDEgRDINClsg
ICAyNS43MzE2MzddIHBjaSAwMDAwOjBkOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAg
RDEgRDIgRDNob3QgRDNjb2xkDQpbICAgMjUuNzUxNjYxXSBwY2kgMDAwMDowZDowMC4wOiBQ
TUUjIGRpc2FibGVkDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1Mi4xMzZdIFBDSSBhZGQg
ZGV2aWNlIDAwMDA6MGQ6MDAuMA0KWyAgIDI1Ljc4NzE2NV0gcGNpX2J1cyAwMDAwOjBkOiBm
aXh1cHMgZm9yIGJ1cw0KWyAgIDI1Ljc5OTQ2OF0gcGNpIDAwMDA6MDA6MDUuMDogUENJIGJy
aWRnZSB0byBbYnVzIDBkXQ0KWyAgIDI1LjgxNDU0NF0gcGNpIDAwMDA6MDA6MDUuMDogICBi
cmlkZ2Ugd2luZG93IFtpbyAgMHhjMDAwLTB4Y2ZmZl0NClsgICAyNS44MzI5OTddIHBjaSAw
MDAwOjAwOjA1LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmU3MDAwMDAtMHhmZTdmZmZm
Zl0NClsgICAyNS44NTM1MzhdIHBjaSAwMDAwOjAwOjA1LjA6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4YmZmMDAwMDAtMHhiZmZmZmZmZiA2NGJpdCBwcmVmXQ0KWyAgIDI1Ljg3NjkzMF0g
cGNpX2J1cyAwMDAwOjBkOiBidXMgc2NhbiByZXR1cm5pbmcgd2l0aCBtYXg9MGQNClsgICAy
NS44OTM4MzNdIHBjaSAwMDAwOjAwOjA2LjA6IHNjYW5uaW5nIFtidXMgMGMtMGNdIGJlaGlu
ZCBicmlkZ2UsIHBhc3MgMA0KWyAgIDI1LjkxNDIwN10gcGNpX2J1cyAwMDAwOjBjOiBzY2Fu
bmluZyBidXMNClsgICAyNS45MjYzNTRdIHBjaSAwMDAwOjBjOjAwLjA6IFsxMGVjOjgxNjhd
IHR5cGUgMDAgY2xhc3MgMHgwMjAwMDANClsgICAyNS45NDQ1NTBdIHBjaSAwMDAwOjBjOjAw
LjA6IHJlZyAweDEwOiBbaW8gIDB4YjgwMC0weGI4ZmZdDQpbICAgMjUuOTYxNDYwXSBwY2kg
MDAwMDowYzowMC4wOiByZWcgMHgxODogW21lbSAweGJmZWZmMDAwLTB4YmZlZmZmZmYgNjRi
aXQgcHJlZl0NClsgICAyNS45ODMyODddIHBjaSAwMDAwOjBjOjAwLjA6IHJlZyAweDIwOiBb
bWVtIDB4YmZlZjgwMDAtMHhiZmVmYmZmZiA2NGJpdCBwcmVmXQ0KWyAgIDI2LjAwNTExN10g
cGNpIDAwMDA6MGM6MDAuMDogcmVnIDB4MzA6IFttZW0gMHhmZTZlMDAwMC0weGZlNmZmZmZm
IHByZWZdDQpbICAgMjYuMDI1NDc0XSBwY2kgMDAwMDowYzowMC4wOiBzdXBwb3J0cyBEMSBE
Mg0KWyAgIDI2LjAzODM4M10gcGNpIDAwMDA6MGM6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJv
bSBEMCBEMSBEMiBEM2hvdCBEM2NvbGQNClsgICAyNi4wNTg0MDddIHBjaSAwMDAwOjBjOjAw
LjA6IFBNRSMgZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUyLjQ0M10gUENJ
IGFkZCBkZXZpY2UgMDAwMDowYzowMC4wDQpbICAgMjYuMDkzOTE5XSBwY2lfYnVzIDAwMDA6
MGM6IGZpeHVwcyBmb3IgYnVzDQpbICAgMjYuMTA2MTk1XSBwY2kgMDAwMDowMDowNi4wOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMGNdDQpbICAgMjYuMTIxMjc5XSBwY2kgMDAwMDowMDowNi4w
OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGIwMDAtMHhiZmZmXQ0KWyAgIDI2LjEzOTczMF0g
cGNpIDAwMDA6MDA6MDYuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmZTYwMDAwMC0weGZl
NmZmZmZmXQ0KWyAgIDI2LjE2MDI3MF0gcGNpIDAwMDA6MDA6MDYuMDogICBicmlkZ2Ugd2lu
ZG93IFttZW0gMHhiZmUwMDAwMC0weGJmZWZmZmZmIDY0Yml0IHByZWZdDQpbICAgMjYuMTgz
NjY0XSBwY2lfYnVzIDAwMDA6MGM6IGJ1cyBzY2FuIHJldHVybmluZyB3aXRoIG1heD0wYw0K
WyAgIDI2LjIwMDU2Nl0gcGNpIDAwMDA6MDA6MDkuMDogc2Nhbm5pbmcgW2J1cyAwYi0wYl0g
YmVoaW5kIGJyaWRnZSwgcGFzcyAwDQpbICAgMjYuMjIwOTM2XSBwY2lfYnVzIDAwMDA6MGI6
IHNjYW5uaW5nIGJ1cw0KWyAgIDI2LjIzMzA5MV0gcGNpIDAwMDA6MGI6MDAuMDogWzEwMzM6
MDE5NF0gdHlwZSAwMCBjbGFzcyAweDBjMDMzMA0KWyAgIDI2LjI1MTI4Nl0gcGNpIDAwMDA6
MGI6MDAuMDogcmVnIDB4MTA6IFttZW0gMHhmZTVmZTAwMC0weGZlNWZmZmZmIDY0Yml0XQ0K
WyAgIDI2LjI3MTkzNF0gcGNpIDAwMDA6MGI6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBE
MCBEM2hvdCBEM2NvbGQNClsgICAyNi4yOTAyNjRdIHBjaSAwMDAwOjBiOjAwLjA6IFBNRSMg
ZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUyLjY3NV0gUENJIGFkZCBkZXZp
Y2UgMDAwMDowYjowMC4wDQpbICAgMjYuMzI1NzYzXSBwY2lfYnVzIDAwMDA6MGI6IGZpeHVw
cyBmb3IgYnVzDQpbICAgMjYuMzM4MDI2XSBwY2kgMDAwMDowMDowOS4wOiBQQ0kgYnJpZGdl
IHRvIFtidXMgMGJdDQpbICAgMjYuMzUzMTEwXSBwY2kgMDAwMDowMDowOS4wOiAgIGJyaWRn
ZSB3aW5kb3cgW21lbSAweGZlNTAwMDAwLTB4ZmU1ZmZmZmZdDQpbICAgMjYuMzczNjQxXSBw
Y2lfYnVzIDAwMDA6MGI6IGJ1cyBzY2FuIHJldHVybmluZyB3aXRoIG1heD0wYg0KWyAgIDI2
LjM5MDUzOV0gcGNpIDAwMDA6MDA6MGEuMDogc2Nhbm5pbmcgW2J1cyAwYS0wYV0gYmVoaW5k
IGJyaWRnZSwgcGFzcyAwDQpbICAgMjYuNDEwOTA1XSBwY2lfYnVzIDAwMDA6MGE6IHNjYW5u
aW5nIGJ1cw0KWyAgIDI2LjQyMzA1M10gcGNpIDAwMDA6MGE6MDAuMDogWzE0ZjE6ODIxMF0g
dHlwZSAwMCBjbGFzcyAweDA0MDAwMA0KWyAgIDI2LjQ0MTI5MF0gcGNpIDAwMDA6MGE6MDAu
MDogcmVnIDB4MTA6IFttZW0gMHhmZTIwMDAwMC0weGZlM2ZmZmZmIDY0Yml0XQ0KWyAgIDI2
LjQ2MTk3N10gcGNpIDAwMDA6MGE6MDAuMDogc3VwcG9ydHMgRDEgRDINClsgICAyNi40NzQ3
OTRdIHBjaSAwMDAwOjBhOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNo
b3QNClsgICAyNi40OTI5OTddIHBjaSAwMDAwOjBhOjAwLjA6IFBNRSMgZGlzYWJsZWQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUyLjg3N10gUENJIGFkZCBkZXZpY2UgMDAwMDowYTow
MC4wDQpbICAgMjYuNTI4NDkyXSBwY2lfYnVzIDAwMDA6MGE6IGZpeHVwcyBmb3IgYnVzDQpb
ICAgMjYuNTQwNzYwXSBwY2kgMDAwMDowMDowYS4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGFd
DQpbICAgMjYuNTU1ODQ1XSBwY2kgMDAwMDowMDowYS4wOiAgIGJyaWRnZSB3aW5kb3cgW21l
bSAweGZlMjAwMDAwLTB4ZmUzZmZmZmZdDQpbICAgMjYuNTc2Mzc1XSBwY2lfYnVzIDAwMDA6
MGE6IGJ1cyBzY2FuIHJldHVybmluZyB3aXRoIG1heD0wYQ0KWyAgIDI2LjU5MzI3NV0gcGNp
IDAwMDA6MDA6MGIuMDogc2Nhbm5pbmcgW2J1cyAwOS0wOV0gYmVoaW5kIGJyaWRnZSwgcGFz
cyAwDQpbICAgMjYuNjEzNjQ0XSBwY2lfYnVzIDAwMDA6MDk6IHNjYW5uaW5nIGJ1cw0KWyAg
IDI2LjYyNTc4N10gcGNpIDAwMDA6MDk6MDAuMDogWzEwMDI6Njc1OV0gdHlwZSAwMCBjbGFz
cyAweDAzMDAwMA0KWyAgIDI2LjY0Mzk4OV0gcGNpIDAwMDA6MDk6MDAuMDogcmVnIDB4MTA6
IFttZW0gMHhhMDAwMDAwMC0weGFmZmZmZmZmIDY0Yml0IHByZWZdDQpbICAgMjYuNjY1ODE5
XSBwY2kgMDAwMDowOTowMC4wOiByZWcgMHgxODogW21lbSAweGZlMWMwMDAwLTB4ZmUxZGZm
ZmYgNjRiaXRdDQpbICAgMjYuNjg2MzUxXSBwY2kgMDAwMDowOTowMC4wOiByZWcgMHgyMDog
W2lvICAweGEwMDAtMHhhMGZmXQ0KWyAgIDI2LjcwMzI2MF0gcGNpIDAwMDA6MDk6MDAuMDog
cmVnIDB4MzA6IFttZW0gMHhmZTFhMDAwMC0weGZlMWJmZmZmIHByZWZdDQpbICAgMjYuNzIz
NTg3XSBwY2kgMDAwMDowOTowMC4wOiBzdXBwb3J0cyBEMSBEMg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MDg6NTMuMTA4XSBQQ0kgYWRkIGRldmljZSAwMDAwOjA5OjAwLjANClsgICAyNi43
NTI0MjBdIHBjaSAwMDAwOjA5OjAwLjE6IFsxMDAyOmFhOTBdIHR5cGUgMDAgY2xhc3MgMHgw
NDAzMDANClsgICAyNi43NzA2MDVdIHBjaSAwMDAwOjA5OjAwLjE6IHJlZyAweDEwOiBbbWVt
IDB4ZmUxZmMwMDAtMHhmZTFmZmZmZiA2NGJpdF0NClsgICAyNi43OTEyMzldIHBjaSAwMDAw
OjA5OjAwLjE6IHN1cHBvcnRzIEQxIEQyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1My4x
NzZdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDk6MDAuMQ0KWyAgIDI2LjgyNjc4M10gcGNpX2J1
cyAwMDAwOjA5OiBmaXh1cHMgZm9yIGJ1cw0KWyAgIDI2LjgzOTA1OF0gcGNpIDAwMDA6MDA6
MGIuMDogUENJIGJyaWRnZSB0byBbYnVzIDA5XQ0KWyAgIDI2Ljg1NDEzN10gcGNpIDAwMDA6
MDA6MGIuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHhhMDAwLTB4YWZmZl0NClsgICAyNi44
NzI1ODldIHBjaSAwMDAwOjAwOjBiLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmUxMDAw
MDAtMHhmZTFmZmZmZl0NClsgICAyNi44OTMxMjhdIHBjaSAwMDAwOjAwOjBiLjA6ICAgYnJp
ZGdlIHdpbmRvdyBbbWVtIDB4YTAwMDAwMDAtMHhhZmZmZmZmZiA2NGJpdCBwcmVmXQ0KWyAg
IDI2LjkxNjUyMl0gcGNpX2J1cyAwMDAwOjA5OiBidXMgc2NhbiByZXR1cm5pbmcgd2l0aCBt
YXg9MDkNClsgICAyNi45MzM0MjZdIHBjaSAwMDAwOjAwOjBjLjA6IHNjYW5uaW5nIFtidXMg
MDUtMDhdIGJlaGluZCBicmlkZ2UsIHBhc3MgMA0KWyAgIDI2Ljk1Mzc5NV0gcGNpX2J1cyAw
MDAwOjA1OiBzY2FubmluZyBidXMNClsgICAyNi45NjU5NDJdIHBjaSAwMDAwOjA1OjAwLjA6
IFsxMGI1Ojg2MTNdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANClsgICAyNi45ODQxMzZdIHBj
aSAwMDAwOjA1OjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4ZmRlZTAwMDAtMHhmZGVmZmZmZl0N
ClsgICAyNy4wMDMyMTFdIHBjaSAwMDAwOjA1OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20g
RDAgRDNob3QgRDNjb2xkDQpbICAgMjcuMDIxNTYyXSBwY2kgMDAwMDowNTowMC4wOiBQTUUj
IGRpc2FibGVkDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1My40MDZdIFBDSSBhZGQgZGV2
aWNlIDAwMDA6MDU6MDAuMA0KWyAgIDI3LjA1NzA2MV0gcGNpX2J1cyAwMDAwOjA1OiBmaXh1
cHMgZm9yIGJ1cw0KWyAgIDI3LjA2OTMyOV0gcGNpIDAwMDA6MDA6MGMuMDogUENJIGJyaWRn
ZSB0byBbYnVzIDA1LTA4XQ0KWyAgIDI3LjA4NTE4OF0gcGNpIDAwMDA6MDA6MGMuMDogICBi
cmlkZ2Ugd2luZG93IFtpbyAgMHg4MDAwLTB4OWZmZl0NClsgICAyNy4xMDM2MzhdIHBjaSAw
MDAwOjAwOjBjLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmRlMDAwMDAtMHhmZTBmZmZm
Zl0NClsgICAyNy4xMjQxODBdIHBjaSAwMDAwOjA1OjAwLjA6IHNjYW5uaW5nIFtidXMgMDYt
MDhdIGJlaGluZCBicmlkZ2UsIHBhc3MgMA0KWyAgIDI3LjE0NDU1Ml0gcGNpX2J1cyAwMDAw
OjA2OiBzY2FubmluZyBidXMNClsgICAyNy4xNTY2OTZdIHBjaSAwMDAwOjA2OjAxLjA6IFsx
MGI1Ojg2MTNdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANClsgICAyNy4xNzUwMDBdIHBjaSAw
MDAwOjA2OjAxLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQpbICAg
MjcuMTkzMzM0XSBwY2kgMDAwMDowNjowMS4wOiBQTUUjIGRpc2FibGVkDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzowODo1My41NzhdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDY6MDEuMA0KWyAg
IDI3LjIyMTk3MV0gcGNpIDAwMDA6MDY6MDIuMDogWzEwYjU6ODYxM10gdHlwZSAwMSBjbGFz
cyAweDA2MDQwMA0KWyAgIDI3LjI0MDI1Nl0gcGNpIDAwMDA6MDY6MDIuMDogUE1FIyBzdXBw
b3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNClsgICAyNy4yNTg1ODldIHBjaSAwMDAwOjA2
OjAyLjA6IFBNRSMgZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjUzLjY0M10g
UENJIGFkZCBkZXZpY2UgMDAwMDowNjowMi4wDQpbICAgMjcuMjg3MjU1XSBwY2lfYnVzIDAw
MDA6MDY6IGZpeHVwcyBmb3IgYnVzDQpbICAgMjcuMjk5OTI2XSBwY2kgMDAwMDowNTowMC4w
OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDYtMDhdDQpbICAgMjcuMzE1NzkwXSBwY2kgMDAwMDow
NTowMC4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAtMHg5ZmZmXQ0KWyAgIDI3LjMz
NDI0N10gcGNpIDAwMDA6MDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmZGYwMDAw
MC0weGZlMGZmZmZmXQ0KWyAgIDI3LjM1NDc4OF0gcGNpIDAwMDA6MDY6MDEuMDogc2Nhbm5p
bmcgW2J1cyAwOC0wOF0gYmVoaW5kIGJyaWRnZSwgcGFzcyAwDQpbICAgMjcuMzc1MTQ2XSBw
Y2lfYnVzIDAwMDA6MDg6IHNjYW5uaW5nIGJ1cw0KWyAgIDI3LjM4NzMxOV0gcGNpIDAwMDA6
MDg6MDAuMDogWzEwMzM6MDE5NF0gdHlwZSAwMCBjbGFzcyAweDBjMDMzMA0KWyAgIDI3LjQw
NTUxMF0gcGNpIDAwMDA6MDg6MDAuMDogcmVnIDB4MTA6IFttZW0gMHhmZTBmZTAwMC0weGZl
MGZmZmZmIDY0Yml0XQ0KWyAgIDI3LjQyNjE3Nl0gcGNpIDAwMDA6MDg6MDAuMDogUE1FIyBz
dXBwb3J0ZWQgZnJvbSBEMCBEM2hvdA0KWyAgIDI3LjQ0MjY4M10gcGNpIDAwMDA6MDg6MDAu
MDogUE1FIyBkaXNhYmxlZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTMuODI3XSBQQ0kg
YWRkIGRldmljZSAwMDAwOjA4OjAwLjANClsgICAyNy40NzgxODRdIHBjaV9idXMgMDAwMDow
ODogZml4dXBzIGZvciBidXMNClsgICAyNy40OTA0OTFdIHBjaSAwMDAwOjA2OjAxLjA6IFBD
SSBicmlkZ2UgdG8gW2J1cyAwOF0NClsgICAyNy41MDU1NzNdIHBjaSAwMDAwOjA2OjAxLjA6
ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmUwMDAwMDAtMHhmZTBmZmZmZl0NClsgICAyNy41
MjYxMDRdIHBjaV9idXMgMDAwMDowODogYnVzIHNjYW4gcmV0dXJuaW5nIHdpdGggbWF4PTA4
DQpbICAgMjcuNTQzMDAwXSBwY2kgMDAwMDowNjowMi4wOiBzY2FubmluZyBbYnVzIDA3LTA3
XSBiZWhpbmQgYnJpZGdlLCBwYXNzIDANClsgICAyNy41NjMzNzJdIHBjaV9idXMgMDAwMDow
Nzogc2Nhbm5pbmcgYnVzDQpbICAgMjcuNTc1NTE3XSBwY2kgMDAwMDowNzowMC4wOiBbMWI0
Yjo5MTIzXSB0eXBlIDAwIGNsYXNzIDB4MDEwNjAxDQpbICAgMjcuNTkzNzE0XSBwY2kgMDAw
MDowNzowMC4wOiByZWcgMHgxMDogW2lvICAweDk4MDAtMHg5ODA3XQ0KWyAgIDI3LjYxMDYw
NV0gcGNpIDAwMDA6MDc6MDAuMDogcmVnIDB4MTQ6IFtpbyAgMHg5NDAwLTB4OTQwM10NClsg
ICAyNy42Mjc1MDNdIHBjaSAwMDAwOjA3OjAwLjA6IHJlZyAweDE4OiBbaW8gIDB4OTAwMC0w
eDkwMDddDQpbICAgMjcuNjQ0NDAyXSBwY2kgMDAwMDowNzowMC4wOiByZWcgMHgxYzogW2lv
ICAweDg4MDAtMHg4ODAzXQ0KWyAgIDI3LjY2MTMwMV0gcGNpIDAwMDA6MDc6MDAuMDogcmVn
IDB4MjA6IFtpbyAgMHg4NDAwLTB4ODQwZl0NClsgICAyNy42NzgyMDFdIHBjaSAwMDAwOjA3
OjAwLjA6IHJlZyAweDI0OiBbbWVtIDB4ZmRmZmY4MDAtMHhmZGZmZmZmZl0NClsgICAyNy42
OTcxODBdIHBjaSAwMDAwOjA3OjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4ZmRmZTAwMDAtMHhm
ZGZlZmZmZiBwcmVmXQ0KWyAgIDI3LjcxNzQ1Ml0gcGNpIDAwMDA6MDc6MDAuMDogY2FsbGlu
ZyBxdWlya19kbWFfZnVuYzFfYWxpYXMrMHgwLzB4MzANClsgICAyNy43MzY3NDldIHBjaSAw
MDAwOjA3OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDNob3QNClsgICAyNy43NTI1NTBd
IHBjaSAwMDAwOjA3OjAwLjA6IFBNRSMgZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjA4OjU0LjEzN10gUENJIGFkZCBkZXZpY2UgMDAwMDowNzowMC4wDQpbICAgMjcuNzgxMTkx
XSBwY2lfYnVzIDAwMDA6MDc6IGZpeHVwcyBmb3IgYnVzDQpbICAgMjcuNzkzODkyXSBwY2kg
MDAwMDowNjowMi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDddDQpbICAgMjcuODA4OTY4XSBw
Y2kgMDAwMDowNjowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAtMHg5ZmZmXQ0K
WyAgIDI3LjgyNzQyNV0gcGNpIDAwMDA6MDY6MDIuMDogICBicmlkZ2Ugd2luZG93IFttZW0g
MHhmZGYwMDAwMC0weGZkZmZmZmZmXQ0KWyAgIDI3Ljg0Nzk2Nl0gcGNpX2J1cyAwMDAwOjA3
OiBidXMgc2NhbiByZXR1cm5pbmcgd2l0aCBtYXg9MDcNClsgICAyNy44NjQ4NjNdIHBjaSAw
MDAwOjA2OjAxLjA6IHNjYW5uaW5nIFtidXMgMDgtMDhdIGJlaGluZCBicmlkZ2UsIHBhc3Mg
MQ0KWyAgIDI3Ljg4NTE0NF0gcGNpIDAwMDA6MDY6MDIuMDogc2Nhbm5pbmcgW2J1cyAwNy0w
N10gYmVoaW5kIGJyaWRnZSwgcGFzcyAxDQpbICAgMjcuOTA1NDIxXSBwY2lfYnVzIDAwMDA6
MDY6IGJ1cyBzY2FuIHJldHVybmluZyB3aXRoIG1heD0wOA0KWyAgIDI3LjkyMjMyMF0gcGNp
IDAwMDA6MDU6MDAuMDogc2Nhbm5pbmcgW2J1cyAwNi0wOF0gYmVoaW5kIGJyaWRnZSwgcGFz
cyAxDQpbICAgMjcuOTQyNTk4XSBwY2lfYnVzIDAwMDA6MDU6IGJ1cyBzY2FuIHJldHVybmlu
ZyB3aXRoIG1heD0wOA0KWyAgIDI3Ljk1OTQ5NV0gcGNpIDAwMDA6MDA6MGQuMDogc2Nhbm5p
bmcgW2J1cyAwNC0wNF0gYmVoaW5kIGJyaWRnZSwgcGFzcyAwDQpbICAgMjcuOTc5ODYwXSBw
Y2lfYnVzIDAwMDA6MDQ6IHNjYW5uaW5nIGJ1cw0KWyAgIDI3Ljk5MjAxNl0gcGNpIDAwMDA6
MDQ6MDAuMDogWzEwMzM6MDE5NF0gdHlwZSAwMCBjbGFzcyAweDBjMDMzMA0KWyAgIDI4LjAx
MDIxNl0gcGNpIDAwMDA6MDQ6MDAuMDogcmVnIDB4MTA6IFttZW0gMHhmZGRmZTAwMC0weGZk
ZGZmZmZmIDY0Yml0XQ0KWyAgIDI4LjAzMDg2MV0gcGNpIDAwMDA6MDQ6MDAuMDogUE1FIyBz
dXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNClsgICAyOC4wNDkxOTNdIHBjaSAwMDAw
OjA0OjAwLjA6IFBNRSMgZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjU0LjQz
NF0gUENJIGFkZCBkZXZpY2UgMDAwMDowNDowMC4wDQpbICAgMjguMDg0NjkzXSBwY2lfYnVz
IDAwMDA6MDQ6IGZpeHVwcyBmb3IgYnVzDQpbICAgMjguMDk2OTk5XSBwY2kgMDAwMDowMDow
ZC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDRdDQpbICAgMjguMTEyMDgwXSBwY2kgMDAwMDow
MDowZC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZkZDAwMDAwLTB4ZmRkZmZmZmZdDQpb
ICAgMjguMTMyNjEwXSBwY2lfYnVzIDAwMDA6MDQ6IGJ1cyBzY2FuIHJldHVybmluZyB3aXRo
IG1heD0wNA0KWyAgIDI4LjE0OTUxMF0gcGNpIDAwMDA6MDA6MTQuNDogc2Nhbm5pbmcgW2J1
cyAwMy0wM10gYmVoaW5kIGJyaWRnZSwgcGFzcyAwDQpbICAgMjguMTY5ODQxXSBwY2lfYnVz
IDAwMDA6MDM6IHNjYW5uaW5nIGJ1cw0KWyAgIDI4LjE4MjAzM10gcGNpIDAwMDA6MDM6MDYu
MDogWzEzZjY6MDExMV0gdHlwZSAwMCBjbGFzcyAweDA0MDEwMA0KWyAgIDI4LjIwMDIyOV0g
cGNpIDAwMDA6MDM6MDYuMDogcmVnIDB4MTA6IFtpbyAgMHg3ODAwLTB4NzhmZl0NClsgICAy
OC4yMTcyMzJdIHBjaSAwMDAwOjAzOjA2LjA6IHN1cHBvcnRzIEQxIEQyDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzowODo1NC42MDJdIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDM6MDYuMA0KWyAg
IDI4LjI0NjAzMV0gcGNpX2J1cyAwMDAwOjAzOiBmaXh1cHMgZm9yIGJ1cw0KWyAgIDI4LjI1
ODcwMF0gcGNpIDAwMDA6MDA6MTQuNDogUENJIGJyaWRnZSB0byBbYnVzIDAzXSAoc3VidHJh
Y3RpdmUgZGVjb2RlKQ0KWyAgIDI4LjI3OTI0MF0gcGNpIDAwMDA6MDA6MTQuNDogICBicmlk
Z2Ugd2luZG93IFtpbyAgMHg3MDAwLTB4N2ZmZl0NClsgICAyOC4yOTc3MDRdIHBjaSAwMDAw
OjAwOjE0LjQ6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4MDAwMC0weDBjZjddIChzdWJ0cmFj
dGl2ZSBkZWNvZGUpDQpbICAgMjguMzIxNjE1XSBwY2kgMDAwMDowMDoxNC40OiAgIGJyaWRn
ZSB3aW5kb3cgW2lvICAweDBkMDAtMHhmZmZmXSAoc3VidHJhY3RpdmUgZGVjb2RlKQ0KWyAg
IDI4LjM0NTUzM10gcGNpIDAwMDA6MDA6MTQuNDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgw
MDBhMDAwMC0weDAwMGJmZmZmXSAoc3VidHJhY3RpdmUgZGVjb2RlKQ0KWyAgIDI4LjM3MTUz
MF0gcGNpIDAwMDA6MDA6MTQuNDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgwMDBkMDAwMC0w
eDAwMGRmZmZmXSAoc3VidHJhY3RpdmUgZGVjb2RlKQ0KWyAgIDI4LjM5NzUzM10gcGNpIDAw
MDA6MDA6MTQuNDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhhMDAwMDAwMC0weGRmZmZmZmZm
XSAoc3VidHJhY3RpdmUgZGVjb2RlKQ0KWyAgIDI4LjQyMzU0MF0gcGNpIDAwMDA6MDA6MTQu
NDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmMDAwMDAwMC0weGZlYmZmZmZmXSAoc3VidHJh
Y3RpdmUgZGVjb2RlKQ0KWyAgIDI4LjQ0OTU1M10gcGNpX2J1cyAwMDAwOjAzOiBidXMgc2Nh
biByZXR1cm5pbmcgd2l0aCBtYXg9MDMNClsgICAyOC40NjY0NTRdIHBjaSAwMDAwOjAwOjE1
LjA6IHNjYW5uaW5nIFtidXMgMDItMDJdIGJlaGluZCBicmlkZ2UsIHBhc3MgMA0KWyAgIDI4
LjQ4NjgzN10gcGNpX2J1cyAwMDAwOjAyOiBzY2FubmluZyBidXMNClsgICAyOC40OTg5NTNd
IHBjaV9idXMgMDAwMDowMjogZml4dXBzIGZvciBidXMNClsgICAyOC41MTE2ODldIHBjaSAw
MDAwOjAwOjE1LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMl0NClsgICAyOC41MjY3ODJdIHBj
aV9idXMgMDAwMDowMjogYnVzIHNjYW4gcmV0dXJuaW5nIHdpdGggbWF4PTAyDQpbICAgMjgu
NTQzNjczXSBwY2kgMDAwMDowMDowMi4wOiBzY2FubmluZyBbYnVzIDBmLTBmXSBiZWhpbmQg
YnJpZGdlLCBwYXNzIDENClsgICAyOC41NjM5NTJdIHBjaSAwMDAwOjAwOjAzLjA6IHNjYW5u
aW5nIFtidXMgMGUtMGVdIGJlaGluZCBicmlkZ2UsIHBhc3MgMQ0KWyAgIDI4LjU4NDIzMV0g
cGNpIDAwMDA6MDA6MDUuMDogc2Nhbm5pbmcgW2J1cyAwZC0wZF0gYmVoaW5kIGJyaWRnZSwg
cGFzcyAxDQpbICAgMjguNjA0NTEwXSBwY2kgMDAwMDowMDowNi4wOiBzY2FubmluZyBbYnVz
IDBjLTBjXSBiZWhpbmQgYnJpZGdlLCBwYXNzIDENClsgICAyOC42MjQ3ODddIHBjaSAwMDAw
OjAwOjA5LjA6IHNjYW5uaW5nIFtidXMgMGItMGJdIGJlaGluZCBicmlkZ2UsIHBhc3MgMQ0K
WyAgIDI4LjY0NTA2N10gcGNpIDAwMDA6MDA6MGEuMDogc2Nhbm5pbmcgW2J1cyAwYS0wYV0g
YmVoaW5kIGJyaWRnZSwgcGFzcyAxDQpbICAgMjguNjY1MzQ1XSBwY2kgMDAwMDowMDowYi4w
OiBzY2FubmluZyBbYnVzIDA5LTA5XSBiZWhpbmQgYnJpZGdlLCBwYXNzIDENClsgICAyOC42
ODU2MjRdIHBjaSAwMDAwOjAwOjBjLjA6IHNjYW5uaW5nIFtidXMgMDUtMDhdIGJlaGluZCBi
cmlkZ2UsIHBhc3MgMQ0KWyAgIDI4LjcwNTkwM10gcGNpIDAwMDA6MDA6MGQuMDogc2Nhbm5p
bmcgW2J1cyAwNC0wNF0gYmVoaW5kIGJyaWRnZSwgcGFzcyAxDQpbICAgMjguNzI2MTg1XSBw
Y2kgMDAwMDowMDoxNC40OiBzY2FubmluZyBbYnVzIDAzLTAzXSBiZWhpbmQgYnJpZGdlLCBw
YXNzIDENClsgICAyOC43NDY0NjNdIHBjaSAwMDAwOjAwOjE1LjA6IHNjYW5uaW5nIFtidXMg
MDItMDJdIGJlaGluZCBicmlkZ2UsIHBhc3MgMQ0KWyAgIDI4Ljc2NjczOV0gcGNpX2J1cyAw
MDAwOjAwOiBidXMgc2NhbiByZXR1cm5pbmcgd2l0aCBtYXg9MGYNClsgICAyOC43ODM2OTBd
IHBjaV9idXMgMDAwMDowMDogb24gTlVNQSBub2RlIDANClsgICAyOC43OTY2ODVdIHhlbjog
cmVnaXN0ZXJpbmcgZ3NpIDEzIHRyaWdnZXJpbmcgMSBwb2xhcml0eSAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzowODo1NS4xODVdIElPQVBJQ1swXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5
ICg2LTEzIC0+IDB4ODggLT4gSVJRIDEzIE1vZGU6MCBBY3RpdmU6MCkNClsgICAyOC44NDE1
MjhdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQV0gKElSUXMgNCA3ICoxMCAxMSAx
NCAxNSkNClsgICAyOC44NjAxNjJdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQl0g
KElSUXMgNCA3IDEwICoxMSAxNCAxNSkNClsgICAyOC44NzkxNDRdIEFDUEk6IFBDSSBJbnRl
cnJ1cHQgTGluayBbTE5LQ10gKElSUXMgNCA3ICoxMCAxMSAxNCAxNSkNClsgICAyOC44OTgx
MjFdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LRF0gKElSUXMgNCA3ICoxMCAxMSAx
NCAxNSkNClsgICAyOC45MTcwODFdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LRV0g
KElSUXMgNCA3IDEwICoxMSAxNCAxNSkNClsgICAyOC45MzYwNDRdIEFDUEk6IFBDSSBJbnRl
cnJ1cHQgTGluayBbTE5LRl0gKElSUXMgNCAqNyAxMCAxMSAxNCAxNSkNClsgICAyOC45NTUw
MjldIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LR10gKElSUXMgNCA3ICoxMCAxMSAx
NCAxNSkNClsgICAyOC45NzQwMDNdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LSF0g
KElSUXMgNCA3ICoxMCAxMSAxNCAxNSkNClsgICAyOC45OTMxODRdIHhlbjpiYWxsb29uOiBJ
bml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXINClsgICAyOS4wMDgzMjFdIHhlbl9iYWxsb29u
OiBJbml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXINClsgICAyOS4wMjM1ODVdIHZnYWFyYjog
c2V0dGluZyBhcyBib290IGRldmljZTogUENJOjAwMDA6MGY6MDAuMA0KWyAgIDI5LjA0MDI2
NV0gdmdhYXJiOiBkZXZpY2UgYWRkZWQ6IFBDSTowMDAwOjBmOjAwLjAsZGVjb2Rlcz1pbytt
ZW0sb3ducz1pbyttZW0sbG9ja3M9bm9uZQ0KWyAgIDI5LjA2NDcyNF0gdmdhYXJiOiBkZXZp
Y2UgYWRkZWQ6IFBDSTowMDAwOjBlOjAwLjAsZGVjb2Rlcz1pbyttZW0sb3ducz1ub25lLGxv
Y2tzPW5vbmUNClsgICAyOS4wODg2MzldIHZnYWFyYjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAw
MDowOTowMC4wLGRlY29kZXM9aW8rbWVtLG93bnM9bm9uZSxsb2Nrcz1ub25lDQpbICAgMjku
MTEyNTY3XSB2Z2FhcmI6IGxvYWRlZA0KWyAgIDI5LjEyMDg2OF0gdmdhYXJiOiBicmlkZ2Ug
Y29udHJvbCBwb3NzaWJsZSAwMDAwOjA5OjAwLjANClsgICAyOS4xMzY5ODNdIHZnYWFyYjog
YnJpZGdlIGNvbnRyb2wgcG9zc2libGUgMDAwMDowZTowMC4wDQpbICAgMjkuMTUzMTA0XSB2
Z2FhcmI6IGJyaWRnZSBjb250cm9sIHBvc3NpYmxlIDAwMDA6MGY6MDAuMA0KWyAgIDI5LjE2
OTM4M10gU0NTSSBzdWJzeXN0ZW0gaW5pdGlhbGl6ZWQNClsgICAyOS4xODA3MDldIGxpYmF0
YSB2ZXJzaW9uIDMuMDAgbG9hZGVkLg0KWyAgIDI5LjE5MjQ0OV0gQUNQSTogYnVzIHR5cGUg
VVNCIHJlZ2lzdGVyZWQNClsgICAyOS4yMDQ2NTJdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3
IGludGVyZmFjZSBkcml2ZXIgdXNiZnMNClsgICAyOS4yMjEyNDldIHVzYmNvcmU6IHJlZ2lz
dGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgaHViDQpbICAgMjkuMjM3NTI2XSB1c2Jjb3Jl
OiByZWdpc3RlcmVkIG5ldyBkZXZpY2UgZHJpdmVyIHVzYg0KWyAgIDI5LjI1Mjc1MV0gTGlu
dXggdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2U6IHYyLjAwDQpbICAgMjkuMjY2NzcwXSBwcHNf
Y29yZTogTGludXhQUFMgQVBJIHZlci4gMSByZWdpc3RlcmVkDQpbICAgMjkuMjgxNzk4XSBw
cHNfY29yZTogU29mdHdhcmUgdmVyLiA1LjMuNiAtIENvcHlyaWdodCAyMDA1LTIwMDcgUm9k
b2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+DQpbICAgMjkuMzA5MzczXSBQVFAg
Y2xvY2sgc3VwcG9ydCByZWdpc3RlcmVkDQpbICAgMjkuMzIxNDU4XSBBZHZhbmNlZCBMaW51
eCBTb3VuZCBBcmNoaXRlY3R1cmUgRHJpdmVyIEluaXRpYWxpemVkLg0KWyAgIDI5LjMzOTc3
OV0gUENJOiBVc2luZyBBQ1BJIGZvciBJUlEgcm91dGluZw0KWyAgIDI5LjM2MzAzMl0gUENJ
OiBwY2lfY2FjaGVfbGluZV9zaXplIHNldCB0byA2NCBieXRlcw0KWyAgIDI5LjM3NzY0Nl0g
cGNpIDAwMDA6MGY6MDAuMDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZDAwMDAwMDAtMHhk
ZmZmZmZmZiBmbGFncyAweDE0MjIwY10gKGQ9MCwgcD0wKQ0KWyAgIDI5LjQwNTE5MV0gcGNp
IDAwMDA6MGY6MDAuMDogQkFSIDI6IHJlc2VydmluZyBbbWVtIDB4ZmU5ZTAwMDAtMHhmZTll
ZmZmZiBmbGFncyAweDE0MDIwNF0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjQzMjc2OF0gcGNpIDAw
MDA6MGY6MDAuMDogQkFSIDQ6IHJlc2VydmluZyBbaW8gIDB4ZTAwMC0weGUwZmYgZmxhZ3Mg
MHg0MDEwMV0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjQ1Nzk5Ml0gcGNpIDAwMDA6MGY6MDAuMTog
QkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmU5ZmMwMDAtMHhmZTlmZmZmZiBmbGFncyAweDE0
MDIwNF0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjQ4NTU0OF0gcGNpIDAwMDA6MGU6MDAuMTogQkFS
IDA6IHJlc2VydmluZyBbbWVtIDB4ZmU4ZmMwMDAtMHhmZThmZmZmZiBmbGFncyAweDE0MDIw
NF0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjUxMzEwMl0gcGNpIDAwMDA6MGQ6MDAuMDogQkFSIDA6
IHJlc2VydmluZyBbaW8gIDB4YzgwMC0weGM4ZmYgZmxhZ3MgMHg0MDEwMV0gKGQ9MCwgcD0w
KQ0KWyAgIDI5LjUzODMyNF0gcGNpIDAwMDA6MGQ6MDAuMDogQkFSIDI6IHJlc2VydmluZyBb
bWVtIDB4YmZmZmYwMDAtMHhiZmZmZmZmZiBmbGFncyAweDE0MjIwY10gKGQ9MCwgcD0wKQ0K
WyAgIDI5LjU2NTg4MV0gcGNpIDAwMDA6MGQ6MDAuMDogQkFSIDQ6IHJlc2VydmluZyBbbWVt
IDB4YmZmZjgwMDAtMHhiZmZmYmZmZiBmbGFncyAweDE0MjIwY10gKGQ9MCwgcD0wKQ0KWyAg
IDI5LjU5MzQ0Nl0gcGNpIDAwMDA6MGM6MDAuMDogQkFSIDA6IHJlc2VydmluZyBbaW8gIDB4
YjgwMC0weGI4ZmYgZmxhZ3MgMHg0MDEwMV0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjYxODY2MV0g
cGNpIDAwMDA6MGM6MDAuMDogQkFSIDI6IHJlc2VydmluZyBbbWVtIDB4YmZlZmYwMDAtMHhi
ZmVmZmZmZiBmbGFncyAweDE0MjIwY10gKGQ9MCwgcD0wKQ0KWyAgIDI5LjY0NjIxOF0gcGNp
IDAwMDA6MGM6MDAuMDogQkFSIDQ6IHJlc2VydmluZyBbbWVtIDB4YmZlZjgwMDAtMHhiZmVm
YmZmZiBmbGFncyAweDE0MjIwY10gKGQ9MCwgcD0wKQ0KWyAgIDI5LjY3Mzc4Ml0gcGNpIDAw
MDA6MGI6MDAuMDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmU1ZmUwMDAtMHhmZTVmZmZm
ZiBmbGFncyAweDE0MDIwNF0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjcwMTM0MF0gcGNpIDAwMDA6
MGE6MDAuMDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmUyMDAwMDAtMHhmZTNmZmZmZiBm
bGFncyAweDE0MDIwNF0gKGQ9MCwgcD0wKQ0KWyAgIDI5LjcyODg5NV0gcGNpIDAwMDA6MDk6
MDAuMTogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmUxZmMwMDAtMHhmZTFmZmZmZiBmbGFn
cyAweDE0MDIwNF0gKGQ9MCwgcD0wKQ0KWyAgIDI5Ljc1NjQ1N10gcGNpIDAwMDA6MDU6MDAu
MDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmRlZTAwMDAtMHhmZGVmZmZmZiBmbGFncyAw
eDQwMjAwXSAoZD0wLCBwPTApDQpbICAgMjkuNzgzNzU2XSBwY2kgMDAwMDowODowMC4wOiBC
QVIgMDogcmVzZXJ2aW5nIFttZW0gMHhmZTBmZTAwMC0weGZlMGZmZmZmIGZsYWdzIDB4MTQw
MjA0XSAoZD0wLCBwPTApDQpbICAgMjkuODExMzA4XSBwY2kgMDAwMDowNzowMC4wOiBCQVIg
MDogcmVzZXJ2aW5nIFtpbyAgMHg5ODAwLTB4OTgwNyBmbGFncyAweDQwMTAxXSAoZD0wLCBw
PTApDQpbICAgMjkuODM2NTI4XSBwY2kgMDAwMDowNzowMC4wOiBCQVIgMTogcmVzZXJ2aW5n
IFtpbyAgMHg5NDAwLTB4OTQwMyBmbGFncyAweDQwMTAxXSAoZD0wLCBwPTApDQpbICAgMjku
ODYxNzQxXSBwY2kgMDAwMDowNzowMC4wOiBCQVIgMjogcmVzZXJ2aW5nIFtpbyAgMHg5MDAw
LTB4OTAwNyBmbGFncyAweDQwMTAxXSAoZD0wLCBwPTApDQpbICAgMjkuODg2OTU5XSBwY2kg
MDAwMDowNzowMC4wOiBCQVIgMzogcmVzZXJ2aW5nIFtpbyAgMHg4ODAwLTB4ODgwMyBmbGFn
cyAweDQwMTAxXSAoZD0wLCBwPTApDQpbICAgMjkuOTEyMTc3XSBwY2kgMDAwMDowNzowMC4w
OiBCQVIgNDogcmVzZXJ2aW5nIFtpbyAgMHg4NDAwLTB4ODQwZiBmbGFncyAweDQwMTAxXSAo
ZD0wLCBwPTApDQpbICAgMjkuOTM3NDAxXSBwY2kgMDAwMDowNzowMC4wOiBCQVIgNTogcmVz
ZXJ2aW5nIFttZW0gMHhmZGZmZjgwMC0weGZkZmZmZmZmIGZsYWdzIDB4NDAyMDBdIChkPTAs
IHA9MCkNClsgICAyOS45NjQ3MDZdIHBjaSAwMDAwOjA0OjAwLjA6IEJBUiAwOiByZXNlcnZp
bmcgW21lbSAweGZkZGZlMDAwLTB4ZmRkZmZmZmYgZmxhZ3MgMHgxNDAyMDRdIChkPTAsIHA9
MCkNClsgICAyOS45OTIyNTVdIHBjaSAwMDAwOjAwOjExLjA6IEJBUiAwOiByZXNlcnZpbmcg
W2lvICAweDMwMDAtMHgzMDA3IGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9MCkNClsgICAzMC4w
MTc0NzldIHBjaSAwMDAwOjAwOjExLjA6IEJBUiAxOiByZXNlcnZpbmcgW2lvICAweDIwMDAt
MHgyMDAzIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9MCkNClsgICAzMC4wNDI2OTddIHBjaSAw
MDAwOjAwOjExLjA6IEJBUiAyOiByZXNlcnZpbmcgW2lvICAweDEwMDAtMHgxMDA3IGZsYWdz
IDB4NDAxMDFdIChkPTAsIHA9MCkNClsgICAzMC4wNjc5MTVdIHBjaSAwMDAwOjAwOjExLjA6
IEJBUiAzOiByZXNlcnZpbmcgW2lvICAweDQ4MDAtMHg0ODAzIGZsYWdzIDB4NDAxMDFdIChk
PTAsIHA9MCkNClsgICAzMC4wOTMxMzRdIHBjaSAwMDAwOjAwOjExLjA6IEJBUiA0OiByZXNl
cnZpbmcgW2lvICAweDM4MDAtMHgzODBmIGZsYWdzIDB4NDAxMDFdIChkPTAsIHA9MCkNClsg
ICAzMC4xMTgzNTJdIHBjaSAwMDAwOjAwOjExLjA6IEJBUiA1OiByZXNlcnZpbmcgW21lbSAw
eGZkYmZmMDAwLTB4ZmRiZmYzZmYgZmxhZ3MgMHg0MDIwMF0gKGQ9MCwgcD0wKQ0KWyAgIDMw
LjE0NTY1Nl0gcGNpIDAwMDA6MDA6MTIuMDogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmRi
ZjcwMDAtMHhmZGJmN2ZmZiBmbGFncyAweDQwMjAwXSAoZD0wLCBwPTApDQpbICAgMzAuMTcy
OTU1XSBwY2kgMDAwMDowMDoxMi4yOiBCQVIgMDogcmVzZXJ2aW5nIFttZW0gMHhmZGJmZjQw
MC0weGZkYmZmNGZmIGZsYWdzIDB4NDAyMDBdIChkPTAsIHA9MCkNClsgICAzMC4yMDAyNTBd
IHBjaSAwMDAwOjAwOjEzLjA6IEJBUiAwOiByZXNlcnZpbmcgW21lbSAweGZkYmZjMDAwLTB4
ZmRiZmNmZmYgZmxhZ3MgMHg0MDIwMF0gKGQ9MCwgcD0wKQ0KWyAgIDMwLjIyNzU1Ml0gcGNp
IDAwMDA6MDA6MTMuMjogQkFSIDA6IHJlc2VydmluZyBbbWVtIDB4ZmRiZmY4MDAtMHhmZGJm
ZjhmZiBmbGFncyAweDQwMjAwXSAoZD0wLCBwPTApDQpbICAgMzAuMjU0ODQ2XSBwY2kgMDAw
MDowMDoxNC4yOiBCQVIgMDogcmVzZXJ2aW5nIFttZW0gMHhmZGJmODAwMC0weGZkYmZiZmZm
IGZsYWdzIDB4MTQwMjA0XSAoZD0wLCBwPTApDQpbICAgMzAuMjgyNDA3XSBwY2kgMDAwMDow
MzowNi4wOiBCQVIgMDogcmVzZXJ2aW5nIFtpbyAgMHg3ODAwLTB4NzhmZiBmbGFncyAweDQw
MTAxXSAoZD0wLCBwPTApDQpbICAgMzAuMzA3NjI0XSBwY2kgMDAwMDowMDoxNC41OiBCQVIg
MDogcmVzZXJ2aW5nIFttZW0gMHhmZGJmZDAwMC0weGZkYmZkZmZmIGZsYWdzIDB4NDAyMDBd
IChkPTAsIHA9MCkNClsgICAzMC4zMzQ5MjRdIHBjaSAwMDAwOjAwOjE2LjA6IEJBUiAwOiBy
ZXNlcnZpbmcgW21lbSAweGZkYmZlMDAwLTB4ZmRiZmVmZmYgZmxhZ3MgMHg0MDIwMF0gKGQ9
MCwgcD0wKQ0KWyAgIDMwLjM2MjIxNl0gcGNpIDAwMDA6MDA6MTYuMjogQkFSIDA6IHJlc2Vy
dmluZyBbbWVtIDB4ZmRiZmZjMDAtMHhmZGJmZmNmZiBmbGFncyAweDQwMjAwXSAoZD0wLCBw
PTApDQpbICAgMzAuMzg5NTI3XSBwY2kgMDAwMDowZTowMC4wOiBCQVIgMDogcmVzZXJ2aW5n
IFttZW0gMHhjMDAwMDAwMC0weGNmZmZmZmZmIGZsYWdzIDB4MTQyMjBjXSAoZD0xLCBwPTEp
DQpbICAgMzAuNDE3MDc3XSBwY2kgMDAwMDowZTowMC4wOiBCQVIgMjogcmVzZXJ2aW5nIFtt
ZW0gMHhmZThjMDAwMC0weGZlOGRmZmZmIGZsYWdzIDB4MTQwMjA0XSAoZD0xLCBwPTEpDQpb
ICAgMzAuNDQ0NjYwXSBwY2kgMDAwMDowZTowMC4wOiBCQVIgNDogcmVzZXJ2aW5nIFtpbyAg
MHhkMDAwLTB4ZDBmZiBmbGFncyAweDQwMTAxXSAoZD0xLCBwPTEpDQpbICAgMzAuNDY5ODkx
XSBwY2kgMDAwMDowOTowMC4wOiBCQVIgMDogcmVzZXJ2aW5nIFttZW0gMHhhMDAwMDAwMC0w
eGFmZmZmZmZmIGZsYWdzIDB4MTQyMjBjXSAoZD0xLCBwPTEpDQpbICAgMzAuNDk3NDM2XSBw
Y2kgMDAwMDowOTowMC4wOiBCQVIgMjogcmVzZXJ2aW5nIFttZW0gMHhmZTFjMDAwMC0weGZl
MWRmZmZmIGZsYWdzIDB4MTQwMjA0XSAoZD0xLCBwPTEpDQpbICAgMzAuNTI0OTk0XSBwY2kg
MDAwMDowOTowMC4wOiBCQVIgNDogcmVzZXJ2aW5nIFtpbyAgMHhhMDAwLTB4YTBmZiBmbGFn
cyAweDQwMTAxXSAoZD0xLCBwPTEpDQpbICAgMzAuNTQxNDI4XSByYW5kb206IG5vbmJsb2Nr
aW5nIHBvb2wgaXMgaW5pdGlhbGl6ZWQNClsgICAzMC41NjUwNzhdIGU4MjA6IHJlc2VydmUg
UkFNIGJ1ZmZlciBbbWVtIDB4MDAwOTkwMDAtMHgwMDA5ZmZmZl0NClsgICAzMC41ODM3MDZd
IEJsdWV0b290aDogQ29yZSB2ZXIgMi4xOQ0KWyAgIDMwLjU5NDE3OV0gTkVUOiBSZWdpc3Rl
cmVkIHByb3RvY29sIGZhbWlseSAzMQ0KWyAgIDMwLjYwNzY2OV0gQmx1ZXRvb3RoOiBIQ0kg
ZGV2aWNlIGFuZCBjb25uZWN0aW9uIG1hbmFnZXIgaW5pdGlhbGl6ZWQNClsgICAzMC42MjY5
MjddIEJsdWV0b290aDogSENJIHNvY2tldCBsYXllciBpbml0aWFsaXplZA0KWyAgIDMwLjY0
MTczMV0gQmx1ZXRvb3RoOiBMMkNBUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQNClsgICAz
MC42NTcwODFdIEJsdWV0b290aDogU0NPIHNvY2tldCBsYXllciBpbml0aWFsaXplZA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MDg6NTcuMDQ0XSBQQ0k6IFVzaW5nIE1DRkcgZm9yIHNlZ21l
bnQgMDAwMCBidXMgMDAtZmYNClsgICAzMC42OTIxMDJdIFN3aXRjaGVkIHRvIGNsb2Nrc291
cmNlIHhlbg0KWyAgIDMwLjcwMzU4NF0gRlMtQ2FjaGU6IExvYWRlZA0KWyAgIDMwLjcxMjIz
NV0gcG5wOiBQblAgQUNQSSBpbml0DQpbICAgMzAuNzIxNzg0XSBzeXN0ZW0gMDA6MDA6IFtt
ZW0gMHhmZWMyMDAwMC0weGZlYzIwMGZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQNClsgICAz
MC43NDI2NDddIHN5c3RlbSAwMDowMDogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURz
IFBOUDBjMDIgKGFjdGl2ZSkNClsgICAzMC43NjMyOTBdIHN5c3RlbSAwMDowMTogW21lbSAw
eGY2MDAwMDAwLTB4ZjYwMDNmZmZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgMzAuNzgzMTY0
XSBzeXN0ZW0gMDA6MDE6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAy
IChhY3RpdmUpDQpbICAgMzAuODAzODE3XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSA4IHRyaWdn
ZXJpbmcgMSBwb2xhcml0eSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1MS4wMDVdIElP
QVBJQ1swXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg2LTggLT4gMHg1OCAtPiBJUlEgOCBN
b2RlOjAgQWN0aXZlOjApDQpbICAgMzAuODQ3NjgzXSBwbnAgMDA6MDI6IFBsdWcgYW5kIFBs
YXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYjAwIChhY3RpdmUpDQpbICAgMzAuODY3NzI1XSB4
ZW46IHJlZ2lzdGVyaW5nIGdzaSA0IHRyaWdnZXJpbmcgMSBwb2xhcml0eSAwDQpbICAgMzAu
ODg0MDM2XSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjQNClsgICAzMC44OTQ5NThdIHBucCAw
MDowMzogW2RtYSAwIGRpc2FibGVkXQ0KWyAgIDMwLjkwNjcxN10gcG5wIDAwOjAzOiBQbHVn
IGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMDUwMSAoYWN0aXZlKQ0KWyAgIDMwLjky
NjU4OV0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MDYwMC0weDA2ZGZdIGhhcyBiZWVuIHJlc2Vy
dmVkDQpbICAgMzAuOTQ0MzUyXSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgwYWUwLTB4MGFlZl0g
aGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMC45NjIyOTRdIHN5c3RlbSAwMDowNDogUGx1ZyBh
bmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkNClsgICAzMC45ODI5
OTldIHN5c3RlbSAwMDowNTogW21lbSAweGZlYzAwMDAwLTB4ZmVjMDBmZmZdIGNvdWxkIG5v
dCBiZSByZXNlcnZlZA0KWyAgIDMxLjAwMzg4OF0gc3lzdGVtIDAwOjA1OiBbbWVtIDB4ZmVl
MDAwMDAtMHhmZWUwMGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4wMjM5MTRdIHN5
c3RlbSAwMDowNTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDIgKGFj
dGl2ZSkNClsgICAzMS4wNDQ3MjhdIHN5c3RlbSAwMDowNjogW2lvICAweDA0ZDAtMHgwNGQx
XSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjA2MjM4OF0gc3lzdGVtIDAwOjA2OiBbaW8g
IDB4MDQwYl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4wNzg1MDNdIHN5c3RlbSAwMDow
NjogW2lvICAweDA0ZDZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgMzEuMDk0NjI3XSBzeXN0
ZW0gMDA6MDY6IFtpbyAgMHgwYzAwLTB4MGMwMV0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAz
MS4xMTI1NjNdIHN5c3RlbSAwMDowNjogW2lvICAweDBjMTRdIGhhcyBiZWVuIHJlc2VydmVk
DQpbICAgMzEuMTI4NjgyXSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwYzUwLTB4MGM1MV0gaGFz
IGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4xNDY2MTVdIHN5c3RlbSAwMDowNjogW2lvICAweDBj
NTJdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgMzEuMTYyNzQzXSBzeXN0ZW0gMDA6MDY6IFtp
byAgMHgwYzZjXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjE3ODg2MV0gc3lzdGVtIDAw
OjA2OiBbaW8gIDB4MGM2Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4xOTQ5OTFdIHN5
c3RlbSAwMDowNjogW2lvICAweDBjZDAtMHgwY2QxXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAg
IDMxLjIxMjkyNl0gc3lzdGVtIDAwOjA2OiBbaW8gIDB4MGNkMi0weDBjZDNdIGhhcyBiZWVu
IHJlc2VydmVkDQpbICAgMzEuMjMwODU5XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwY2Q0LTB4
MGNkNV0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4yNDg3OTFdIHN5c3RlbSAwMDowNjog
W2lvICAweDBjZDYtMHgwY2Q3XSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjI2NjczNl0g
c3lzdGVtIDAwOjA2OiBbaW8gIDB4MGNkOC0weDBjZGZdIGhhcyBiZWVuIHJlc2VydmVkDQpb
ICAgMzEuMjg0Njc1XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwODAwLTB4MDg5Zl0gY291bGQg
bm90IGJlIHJlc2VydmVkDQpbICAgMzEuMzAzNjQ2XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgw
YjAwLTB4MGIxZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4zMjE1ODVdIHN5c3RlbSAw
MDowNjogW2lvICAweDBiMjAtMHgwYjNmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjMz
OTUyNV0gc3lzdGVtIDAwOjA2OiBbaW8gIDB4MDkwMC0weDA5MGZdIGhhcyBiZWVuIHJlc2Vy
dmVkDQpbICAgMzEuMzU3NDcyXSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwOTEwLTB4MDkxZl0g
aGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS4zNzU0MDhdIHN5c3RlbSAwMDowNjogW2lvICAw
eGZlMDAtMHhmZWZlXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjM5MzM0NF0gc3lzdGVt
IDAwOjA2OiBbbWVtIDB4ZmZiODAwMDAtMHhmZmJmZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQN
ClsgICAzMS40MTMzNjNdIHN5c3RlbSAwMDowNjogW21lbSAweGZlYzEwMDAwLTB4ZmVjMTAw
MWZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgMzEuNDMzMzgxXSBzeXN0ZW0gMDA6MDY6IFtt
ZW0gMHhmZWQ4MDAwMC0weGZlZDgwZmZmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgIDMxLjQ1
MzQyNl0gc3lzdGVtIDAwOjA2OiBQbHVnIGFuZCBQbGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5Q
MGMwMiAoYWN0aXZlKQ0KWyAgIDMxLjQ3NDA5MV0gc3lzdGVtIDAwOjA3OiBbbWVtIDB4ZTAw
MDAwMDAtMHhlZmZmZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAzMS40OTM5OTRdIHN5
c3RlbSAwMDowNzogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDIgKGFj
dGl2ZSkNClsgICAzMS41MTQ3MTldIHN5c3RlbSAwMDowODogW21lbSAweDAwMDAwMDAwLTB4
MDAwOWZmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZA0KWyAgIDMxLjUzNTU4OF0gc3lzdGVt
IDAwOjA4OiBbbWVtIDB4MDAwYzAwMDAtMHgwMDBjZmZmZl0gY291bGQgbm90IGJlIHJlc2Vy
dmVkDQpbICAgMzEuNTU2NjQ1XSBzeXN0ZW0gMDA6MDg6IFttZW0gMHgwMDBlMDAwMC0weDAw
MGZmZmZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQNClsgICAzMS41Nzc3MDZdIHN5c3RlbSAw
MDowODogW21lbSAweDAwMTAwMDAwLTB4OWZmZmZmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZl
ZA0KWyAgIDMxLjU5ODc2M10gc3lzdGVtIDAwOjA4OiBbbWVtIDB4ZmVjMDAwMDAtMHhmZmZm
ZmZmZl0gY291bGQgbm90IGJlIHJlc2VydmVkDQpbICAgMzEuNjE5ODE3XSBzeXN0ZW0gMDA6
MDg6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAxIChhY3RpdmUpDQpb
ICAgMzEuNjQwNDk1XSBwbnA6IFBuUCBBQ1BJOiBmb3VuZCA5IGRldmljZXMNClsgICAzMS42
NTMxNjldIHBjaWJhY2sgMDAwMDowZTowMC4wOiBzZWl6aW5nIGRldmljZQ0KWyAgIDMxLjY2
Njg5Nl0gcGNpYmFjayAwMDAwOjBlOjAwLjE6IHNlaXppbmcgZGV2aWNlDQpbICAgMzEuNjgw
OTQ1XSBwY2liYWNrIDAwMDA6MGI6MDAuMDogc2VpemluZyBkZXZpY2UNClsgICAzMS42OTQ5
NjRdIHBjaWJhY2sgMDAwMDowYTowMC4wOiBzZWl6aW5nIGRldmljZQ0KWyAgIDMxLjcwOTAw
MV0gcGNpYmFjayAwMDAwOjA5OjAwLjA6IHNlaXppbmcgZGV2aWNlDQpbICAgMzEuNzIzMDQy
XSBwY2liYWNrIDAwMDA6MDk6MDAuMTogc2VpemluZyBkZXZpY2UNClsgICAzMS43MzcxMDhd
IHBjaWJhY2sgMDAwMDowODowMC4wOiBzZWl6aW5nIGRldmljZQ0KWyAgIDMxLjc1MTEyMV0g
cGNpYmFjayAwMDAwOjA3OjAwLjA6IHNlaXppbmcgZGV2aWNlDQpbICAgMzEuNzY1MTU3XSBw
Y2liYWNrIDAwMDA6MDQ6MDAuMDogc2VpemluZyBkZXZpY2UNClsgICAzMS43NzkxOThdIHBj
aWJhY2sgMDAwMDowMzowNi4wOiBzZWl6aW5nIGRldmljZQ0KWyAgIDMxLjgwMTMxOF0gUE0t
VGltZXIgZmFpbGVkIGNvbnNpc3RlbmN5IGNoZWNrICAoMHhmZmZmZmYpIC0gYWJvcnRpbmcu
DQpbICAgMzEuODIwNDc2XSBwY2kgMDAwMDowMDowMi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMg
MGZdDQpbICAgMzEuODM1NDIzXSBwY2kgMDAwMDowMDowMi4wOiAgIGJyaWRnZSB3aW5kb3cg
W2lvICAweGUwMDAtMHhlZmZmXQ0KWyAgIDMxLjg1Mzg5Ml0gcGNpIDAwMDA6MDA6MDIuMDog
ICBicmlkZ2Ugd2luZG93IFttZW0gMHhmZTkwMDAwMC0weGZlOWZmZmZmXQ0KWyAgIDMxLjg3
NDQyOV0gcGNpIDAwMDA6MDA6MDIuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhkMDAwMDAw
MC0weGRmZmZmZmZmIDY0Yml0IHByZWZdDQpbICAgMzEuODk3ODMxXSBwY2kgMDAwMDowMDow
My4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGVdDQpbICAgMzEuOTEyOTA0XSBwY2kgMDAwMDow
MDowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGQwMDAtMHhkZmZmXQ0KWyAgIDMxLjkz
MTM2Nl0gcGNpIDAwMDA6MDA6MDMuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmZTgwMDAw
MC0weGZlOGZmZmZmXQ0KWyAgIDMxLjk1MTkxMV0gcGNpIDAwMDA6MDA6MDMuMDogICBicmlk
Z2Ugd2luZG93IFttZW0gMHhjMDAwMDAwMC0weGNmZmZmZmZmIDY0Yml0IHByZWZdDQpbICAg
MzEuOTc1MzAzXSBwY2kgMDAwMDowMDowNS4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGRdDQpb
ICAgMzEuOTkwMzgyXSBwY2kgMDAwMDowMDowNS4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAw
eGMwMDAtMHhjZmZmXQ0KWyAgIDMyLjAwODgzNV0gcGNpIDAwMDA6MDA6MDUuMDogICBicmlk
Z2Ugd2luZG93IFttZW0gMHhmZTcwMDAwMC0weGZlN2ZmZmZmXQ0KWyAgIDMyLjAyOTM3N10g
cGNpIDAwMDA6MDA6MDUuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhiZmYwMDAwMC0weGJm
ZmZmZmZmIDY0Yml0IHByZWZdDQpbICAgMzIuMDUyNzgzXSBwY2kgMDAwMDowMDowNi4wOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMGNdDQpbICAgMzIuMDY3ODU2XSBwY2kgMDAwMDowMDowNi4w
OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGIwMDAtMHhiZmZmXQ0KWyAgIDMyLjA4NjMxN10g
cGNpIDAwMDA6MDA6MDYuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmZTYwMDAwMC0weGZl
NmZmZmZmXQ0KWyAgIDMyLjEwNjg1OF0gcGNpIDAwMDA6MDA6MDYuMDogICBicmlkZ2Ugd2lu
ZG93IFttZW0gMHhiZmUwMDAwMC0weGJmZWZmZmZmIDY0Yml0IHByZWZdDQpbICAgMzIuMTMw
MjU3XSBwY2kgMDAwMDowMDowOS4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGJdDQpbICAgMzIu
MTQ1MzMzXSBwY2kgMDAwMDowMDowOS4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZlNTAw
MDAwLTB4ZmU1ZmZmZmZdDQpbICAgMzIuMTY1ODc3XSBwY2kgMDAwMDowMDowYS4wOiBQQ0kg
YnJpZGdlIHRvIFtidXMgMGFdDQpbICAgMzIuMTgwOTUxXSBwY2kgMDAwMDowMDowYS4wOiAg
IGJyaWRnZSB3aW5kb3cgW21lbSAweGZlMjAwMDAwLTB4ZmUzZmZmZmZdDQpbICAgMzIuMjAx
NDk1XSBwY2kgMDAwMDowMDowYi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDldDQpbICAgMzIu
MjE2NTY5XSBwY2kgMDAwMDowMDowYi4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGEwMDAt
MHhhZmZmXQ0KWyAgIDMyLjIzNTAzMV0gcGNpIDAwMDA6MDA6MGIuMDogICBicmlkZ2Ugd2lu
ZG93IFttZW0gMHhmZTEwMDAwMC0weGZlMWZmZmZmXQ0KWyAgIDMyLjI1NTU2MF0gcGNpIDAw
MDA6MDA6MGIuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhhMDAwMDAwMC0weGFmZmZmZmZm
IDY0Yml0IHByZWZdDQpbICAgMzIuMjc4OTY5XSBwY2kgMDAwMDowNjowMS4wOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgMDhdDQpbICAgMzIuMjk0MDUwXSBwY2kgMDAwMDowNjowMS4wOiAgIGJy
aWRnZSB3aW5kb3cgW21lbSAweGZlMDAwMDAwLTB4ZmUwZmZmZmZdDQpbICAgMzIuMzE0NTkw
XSBwY2kgMDAwMDowNjowMi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDddDQpbICAgMzIuMzI5
NjYwXSBwY2kgMDAwMDowNjowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAtMHg5
ZmZmXQ0KWyAgIDMyLjM0ODEyNl0gcGNpIDAwMDA6MDY6MDIuMDogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhmZGYwMDAwMC0weGZkZmZmZmZmXQ0KWyAgIDMyLjM2ODY2OV0gcGNpIDAwMDA6
MDU6MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDA2LTA4XQ0KWyAgIDMyLjM4NDUyMV0gcGNp
IDAwMDA6MDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg4MDAwLTB4OWZmZl0NClsg
ICAzMi40MDI5ODVdIHBjaSAwMDAwOjA1OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4
ZmRmMDAwMDAtMHhmZTBmZmZmZl0NClsgICAzMi40MjM1MjZdIHBjaSAwMDAwOjAwOjBjLjA6
IFBDSSBicmlkZ2UgdG8gW2J1cyAwNS0wOF0NClsgICAzMi40MzkzOThdIHBjaSAwMDAwOjAw
OjBjLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4ODAwMC0weDlmZmZdDQpbICAgMzIuNDU3
ODY0XSBwY2kgMDAwMDowMDowYy4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZkZTAwMDAw
LTB4ZmUwZmZmZmZdDQpbICAgMzIuNDc4NDAzXSBwY2kgMDAwMDowMDowZC4wOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgMDRdDQpbICAgMzIuNDkzNDgzXSBwY2kgMDAwMDowMDowZC4wOiAgIGJy
aWRnZSB3aW5kb3cgW21lbSAweGZkZDAwMDAwLTB4ZmRkZmZmZmZdDQpbICAgMzIuNTE0MDE1
XSBwY2kgMDAwMDowMDoxNC40OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDNdDQpbICAgMzIuNTI5
MDk2XSBwY2kgMDAwMDowMDoxNC40OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDcwMDAtMHg3
ZmZmXQ0KWyAgIDMyLjU0NzU2OF0gcGNpIDAwMDA6MDA6MTUuMDogUENJIGJyaWRnZSB0byBb
YnVzIDAyXQ0KWyAgIDMyLjU2MjY0M10gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA0IFtp
byAgMHgwMDAwLTB4MGNmN10NClsgICAzMi41Nzk1MzNdIHBjaV9idXMgMDAwMDowMDogcmVz
b3VyY2UgNSBbaW8gIDB4MGQwMC0weGZmZmZdDQpbICAgMzIuNTk2NDI2XSBwY2lfYnVzIDAw
MDA6MDA6IHJlc291cmNlIDYgW21lbSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdDQpbICAgMzIu
NjE1NDA0XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDcgW21lbSAweDAwMGQwMDAwLTB4
MDAwZGZmZmZdDQpbICAgMzIuNjM0MzgzXSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDgg
W21lbSAweGEwMDAwMDAwLTB4ZGZmZmZmZmZdDQpbICAgMzIuNjUzMzY4XSBwY2lfYnVzIDAw
MDA6MDA6IHJlc291cmNlIDkgW21lbSAweGYwMDAwMDAwLTB4ZmViZmZmZmZdDQpbICAgMzIu
NjcyMzQ1XSBwY2lfYnVzIDAwMDA6MGY6IHJlc291cmNlIDAgW2lvICAweGUwMDAtMHhlZmZm
XQ0KWyAgIDMyLjY4OTI0NF0gcGNpX2J1cyAwMDAwOjBmOiByZXNvdXJjZSAxIFttZW0gMHhm
ZTkwMDAwMC0weGZlOWZmZmZmXQ0KWyAgIDMyLjcwODIyMl0gcGNpX2J1cyAwMDAwOjBmOiBy
ZXNvdXJjZSAyIFttZW0gMHhkMDAwMDAwMC0weGRmZmZmZmZmIDY0Yml0IHByZWZdDQpbICAg
MzIuNzMwMDYyXSBwY2lfYnVzIDAwMDA6MGU6IHJlc291cmNlIDAgW2lvICAweGQwMDAtMHhk
ZmZmXQ0KWyAgIDMyLjc0Njk2MF0gcGNpX2J1cyAwMDAwOjBlOiByZXNvdXJjZSAxIFttZW0g
MHhmZTgwMDAwMC0weGZlOGZmZmZmXQ0KWyAgIDMyLjc2NTk0Ml0gcGNpX2J1cyAwMDAwOjBl
OiByZXNvdXJjZSAyIFttZW0gMHhjMDAwMDAwMC0weGNmZmZmZmZmIDY0Yml0IHByZWZdDQpb
ICAgMzIuNzg3Nzc3XSBwY2lfYnVzIDAwMDA6MGQ6IHJlc291cmNlIDAgW2lvICAweGMwMDAt
MHhjZmZmXQ0KWyAgIDMyLjgwNDY3OV0gcGNpX2J1cyAwMDAwOjBkOiByZXNvdXJjZSAxIFtt
ZW0gMHhmZTcwMDAwMC0weGZlN2ZmZmZmXQ0KWyAgIDMyLjgyMzY1N10gcGNpX2J1cyAwMDAw
OjBkOiByZXNvdXJjZSAyIFttZW0gMHhiZmYwMDAwMC0weGJmZmZmZmZmIDY0Yml0IHByZWZd
DQpbICAgMzIuODQ1NDk3XSBwY2lfYnVzIDAwMDA6MGM6IHJlc291cmNlIDAgW2lvICAweGIw
MDAtMHhiZmZmXQ0KWyAgIDMyLjg2MjM5M10gcGNpX2J1cyAwMDAwOjBjOiByZXNvdXJjZSAx
IFttZW0gMHhmZTYwMDAwMC0weGZlNmZmZmZmXQ0KWyAgIDMyLjg4MTM3NV0gcGNpX2J1cyAw
MDAwOjBjOiByZXNvdXJjZSAyIFttZW0gMHhiZmUwMDAwMC0weGJmZWZmZmZmIDY0Yml0IHBy
ZWZdDQpbICAgMzIuOTAzMjEyXSBwY2lfYnVzIDAwMDA6MGI6IHJlc291cmNlIDEgW21lbSAw
eGZlNTAwMDAwLTB4ZmU1ZmZmZmZdDQpbICAgMzIuOTIyMTg2XSBwY2lfYnVzIDAwMDA6MGE6
IHJlc291cmNlIDEgW21lbSAweGZlMjAwMDAwLTB4ZmUzZmZmZmZdDQpbICAgMzIuOTQxMTcw
XSBwY2lfYnVzIDAwMDA6MDk6IHJlc291cmNlIDAgW2lvICAweGEwMDAtMHhhZmZmXQ0KWyAg
IDMyLjk1ODA2M10gcGNpX2J1cyAwMDAwOjA5OiByZXNvdXJjZSAxIFttZW0gMHhmZTEwMDAw
MC0weGZlMWZmZmZmXQ0KWyAgIDMyLjk3NzA0N10gcGNpX2J1cyAwMDAwOjA5OiByZXNvdXJj
ZSAyIFttZW0gMHhhMDAwMDAwMC0weGFmZmZmZmZmIDY0Yml0IHByZWZdDQpbICAgMzIuOTk4
ODg4XSBwY2lfYnVzIDAwMDA6MDU6IHJlc291cmNlIDAgW2lvICAweDgwMDAtMHg5ZmZmXQ0K
WyAgIDMzLjAxNTc4OV0gcGNpX2J1cyAwMDAwOjA1OiByZXNvdXJjZSAxIFttZW0gMHhmZGUw
MDAwMC0weGZlMGZmZmZmXQ0KWyAgIDMzLjAzNDc2M10gcGNpX2J1cyAwMDAwOjA2OiByZXNv
dXJjZSAwIFtpbyAgMHg4MDAwLTB4OWZmZl0NClsgICAzMy4wNTE2NjNdIHBjaV9idXMgMDAw
MDowNjogcmVzb3VyY2UgMSBbbWVtIDB4ZmRmMDAwMDAtMHhmZTBmZmZmZl0NClsgICAzMy4w
NzA2NDRdIHBjaV9idXMgMDAwMDowODogcmVzb3VyY2UgMSBbbWVtIDB4ZmUwMDAwMDAtMHhm
ZTBmZmZmZl0NClsgICAzMy4wODk2MTldIHBjaV9idXMgMDAwMDowNzogcmVzb3VyY2UgMCBb
aW8gIDB4ODAwMC0weDlmZmZdDQpbICAgMzMuMTA2NTI1XSBwY2lfYnVzIDAwMDA6MDc6IHJl
c291cmNlIDEgW21lbSAweGZkZjAwMDAwLTB4ZmRmZmZmZmZdDQpbICAgMzMuMTI1NDk5XSBw
Y2lfYnVzIDAwMDA6MDQ6IHJlc291cmNlIDEgW21lbSAweGZkZDAwMDAwLTB4ZmRkZmZmZmZd
DQpbICAgMzMuMTQ0NDgxXSBwY2lfYnVzIDAwMDA6MDM6IHJlc291cmNlIDAgW2lvICAweDcw
MDAtMHg3ZmZmXQ0KWyAgIDMzLjE2MTM3Nl0gcGNpX2J1cyAwMDAwOjAzOiByZXNvdXJjZSA0
IFtpbyAgMHgwMDAwLTB4MGNmN10NClsgICAzMy4xNzgyODBdIHBjaV9idXMgMDAwMDowMzog
cmVzb3VyY2UgNSBbaW8gIDB4MGQwMC0weGZmZmZdDQpbICAgMzMuMTk1MTc3XSBwY2lfYnVz
IDAwMDA6MDM6IHJlc291cmNlIDYgW21lbSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdDQpbICAg
MzMuMjE0MTU5XSBwY2lfYnVzIDAwMDA6MDM6IHJlc291cmNlIDcgW21lbSAweDAwMGQwMDAw
LTB4MDAwZGZmZmZdDQpbICAgMzMuMjMzMTMyXSBwY2lfYnVzIDAwMDA6MDM6IHJlc291cmNl
IDggW21lbSAweGEwMDAwMDAwLTB4ZGZmZmZmZmZdDQpbICAgMzMuMjUyMTE0XSBwY2lfYnVz
IDAwMDA6MDM6IHJlc291cmNlIDkgW21lbSAweGYwMDAwMDAwLTB4ZmViZmZmZmZdDQpbICAg
MzMuMjcxMTM3XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDINClsgICAzMy4y
ODQ2ODFdIFRDUCBlc3RhYmxpc2hlZCBoYXNoIHRhYmxlIGVudHJpZXM6IDE2Mzg0IChvcmRl
cjogNSwgMTMxMDcyIGJ5dGVzKQ0KWyAgIDMzLjMwNjYyM10gVENQIGJpbmQgaGFzaCB0YWJs
ZSBlbnRyaWVzOiAxNjM4NCAob3JkZXI6IDgsIDEwNDg1NzYgYnl0ZXMpDQpbICAgMzMuMzI3
MjYyXSBUQ1A6IEhhc2ggdGFibGVzIGNvbmZpZ3VyZWQgKGVzdGFibGlzaGVkIDE2Mzg0IGJp
bmQgMTYzODQpDQpbICAgMzMuMzQ2NjE4XSBUQ1A6IHJlbm8gcmVnaXN0ZXJlZA0KWyAgIDMz
LjM1NjQ3N10gVURQIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDUsIDE2Mzg0
MCBieXRlcykNClsgICAzMy4zNzUwMTldIFVEUC1MaXRlIGhhc2ggdGFibGUgZW50cmllczog
MTAyNCAob3JkZXI6IDUsIDE2Mzg0MCBieXRlcykNClsgICAzMy4zOTQ5MDddIE5FVDogUmVn
aXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMQ0KWyAgIDMzLjQwNzk0Nl0gcGNpIDAwMDA6MDA6
MTEuMDogY2FsbGluZyBxdWlya19tc2lfaW50eF9kaXNhYmxlX2F0aV9idWcrMHgwLzB4NTAN
ClsgICAzMy40Mjk0ODJdIHBjaSAwMDAwOjAwOjEyLjA6IGNhbGxpbmcgcXVpcmtfdXNiX2Vh
cmx5X2hhbmRvZmYrMHgwLzB4NmYwDQpbICAgMzMuNDQ5NjU5XSB4ZW46IHJlZ2lzdGVyaW5n
IGdzaSAxOCB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQ0KWyAgIDMzLjQ2NjQzOV0geGVuOiAt
LT4gcGlycT0xOCAtPiBpcnE9MTggKGdzaT0xOCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4
OjUzLjY2NV0gSU9BUElDWzBdOiBTZXQgUENJIHJvdXRpbmcgZW50cnkgKDYtMTggLT4gMHhi
OCAtPiBJUlEgMTggTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDMzLjU4MjM1N10gcGNpIDAwMDA6
MDA6MTIuMjogY2FsbGluZyBxdWlya191c2JfZWFybHlfaGFuZG9mZisweDAvMHg2ZjANClsg
ICAzMy42MDIwMThdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE3IHRyaWdnZXJpbmcgMCBwb2xh
cml0eSAxDQpbICAgMzMuNjE4ODA0XSB4ZW46IC0tPiBwaXJxPTE3IC0+IGlycT0xNyAoZ3Np
PTE3KQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTMuODE3XSBJT0FQSUNbMF06IFNldCBQ
Q0kgcm91dGluZyBlbnRyeSAoNi0xNyAtPiAweGMwIC0+IElSUSAxNyBNb2RlOjEgQWN0aXZl
OjEpDQpbICAgMzMuNjYwNTQ0XSBwY2kgMDAwMDowMDoxMy4wOiBjYWxsaW5nIHF1aXJrX3Vz
Yl9lYXJseV9oYW5kb2ZmKzB4MC8weDZmMA0KWyAgIDMzLjY4MDUyN10geGVuOiByZWdpc3Rl
cmluZyBnc2kgMTggdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICAzMy42OTczMTBdIEFs
cmVhZHkgc2V0dXAgdGhlIEdTSSA6MTgNClsgICAzMy43ODU3MDVdIHBjaSAwMDAwOjAwOjEz
LjI6IGNhbGxpbmcgcXVpcmtfdXNiX2Vhcmx5X2hhbmRvZmYrMHgwLzB4NmYwDQpbICAgMzMu
ODA1MzY2XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNyB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkg
MQ0KWyAgIDMzLjgyMjE0MV0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNw0KWyAgIDMzLjgz
MzQ3Nl0gcGNpIDAwMDA6MDA6MTQuNTogY2FsbGluZyBxdWlya191c2JfZWFybHlfaGFuZG9m
ZisweDAvMHg2ZjANClsgICAzMy44NTM0NjFdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE4IHRy
aWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgMzMuODcwMjM5XSBBbHJlYWR5IHNldHVwIHRo
ZSBHU0kgOjE4DQpbICAgMzMuOTU1NzA3XSBwY2kgMDAwMDowMDoxNi4wOiBjYWxsaW5nIHF1
aXJrX3VzYl9lYXJseV9oYW5kb2ZmKzB4MC8weDZmMA0KWyAgIDMzLjk3NTM3MV0geGVuOiBy
ZWdpc3RlcmluZyBnc2kgMTggdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICAzMy45OTIx
NDZdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTgNClsgICAzNC4wNzkwMzldIHBjaSAwMDAw
OjAwOjE2LjI6IGNhbGxpbmcgcXVpcmtfdXNiX2Vhcmx5X2hhbmRvZmYrMHgwLzB4NmYwDQpb
ICAgMzQuMDk4Njk2XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNyB0cmlnZ2VyaW5nIDAgcG9s
YXJpdHkgMQ0KWyAgIDM0LjExNTQ3Ml0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNw0KWyAg
IDM0LjEyNjc5N10gcGNpIDAwMDA6MDA6MTguMDogY2FsbGluZyBxdWlya19hbWRfbmJfbm9k
ZSsweDAvMHg4MA0KWyAgIDM0LjE0NDg1NV0gcGNpIDAwMDA6MDA6MTguMTogY2FsbGluZyBx
dWlya19hbWRfbmJfbm9kZSsweDAvMHg4MA0KWyAgIDM0LjE2MzA1Ml0gcGNpIDAwMDA6MDA6
MTguMjogY2FsbGluZyBxdWlya19hbWRfbmJfbm9kZSsweDAvMHg4MA0KWyAgIDM0LjE4MTI1
Ml0gcGNpIDAwMDA6MDA6MTguMzogY2FsbGluZyBxdWlya19hbWRfbmJfbm9kZSsweDAvMHg4
MA0KWyAgIDM0LjE5OTQ1MF0gcGNpIDAwMDA6MDA6MTguNDogY2FsbGluZyBxdWlya19hbWRf
bmJfbm9kZSsweDAvMHg4MA0KWyAgIDM0LjIxNzY1Ml0gcGNpIDAwMDA6MGY6MDAuMDogY2Fs
bGluZyBwY2lfZml4dXBfdmlkZW8rMHgwLzB4ZTANClsgICAzNC4yMzUzMjZdIHBjaSAwMDAw
OjBmOjAwLjA6IFZpZGVvIGRldmljZSB3aXRoIHNoYWRvd2VkIFJPTQ0KWyAgIDM0LjI1MjQ5
MF0gcGNpYmFjayAwMDAwOjBlOjAwLjA6IGNhbGxpbmcgcGNpX2ZpeHVwX3ZpZGVvKzB4MC8w
eGUwDQpbICAgMzQuMjcxMjE1XSBwY2liYWNrIDAwMDA6MGI6MDAuMDogY2FsbGluZyBxdWly
a191c2JfZWFybHlfaGFuZG9mZisweDAvMHg2ZjANClsgICAzNC4yOTIzODVdIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDUzIHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgMzQuMzA5MTY5
XSB4ZW46IC0tPiBwaXJxPTUzIC0+IGlycT01MyAoZ3NpPTUzKQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MDg6NTQuNTA3XSBJT0FQSUNbMV06IFNldCBQQ0kgcm91dGluZyBlbnRyeSAoNy0y
OSAtPiAweGM4IC0+IElSUSA1MyBNb2RlOjEgQWN0aXZlOjEpDQpbICAgMzQuMzUwODAxXSB4
ZW46IHJlZ2lzdGVyaW5nIGdzaSA0OCB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQ0KWyAgIDM0
LjM2NzY2MV0geGVuOiAtLT4gcGlycT00OCAtPiBpcnE9NDggKGdzaT00OCkNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjA4OjU0LjU2Nl0gSU9BUElDWzFdOiBTZXQgUENJIHJvdXRpbmcgZW50
cnkgKDctMjQgLT4gMHhkMCAtPiBJUlEgNDggTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDM0LjQw
OTMxOV0gcGNpYmFjayAwMDAwOjA5OjAwLjA6IGNhbGxpbmcgcGNpX2ZpeHVwX3ZpZGVvKzB4
MC8weGUwDQpbICAgMzQuNDI3OTkwXSBwY2liYWNrIDAwMDA6MDg6MDAuMDogY2FsbGluZyBx
dWlya191c2JfZWFybHlfaGFuZG9mZisweDAvMHg2ZjANClsgICAzNC40NDkxNzRdIHhlbjog
cmVnaXN0ZXJpbmcgZ3NpIDU0IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgMzQuNDY1
OTYwXSB4ZW46IC0tPiBwaXJxPTU0IC0+IGlycT01NCAoZ3NpPTU0KQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MDg6NTQuNjY0XSBJT0FQSUNbMV06IFNldCBQQ0kgcm91dGluZyBlbnRyeSAo
Ny0zMCAtPiAweGQ4IC0+IElSUSA1NCBNb2RlOjEgQWN0aXZlOjEpDQpbICAgMzQuNTA3NTkz
XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAzNiB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQ0KWyAg
IDM0LjUyNDQ1NV0geGVuOiAtLT4gcGlycT0zNiAtPiBpcnE9MzYgKGdzaT0zNikNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjA4OjU0LjcyM10gSU9BUElDWzFdOiBTZXQgUENJIHJvdXRpbmcg
ZW50cnkgKDctMTIgLT4gMHgyMSAtPiBJUlEgMzYgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDM0
LjU2NjA5MV0geGVuOiByZWdpc3RlcmluZyBnc2kgMzcgdHJpZ2dlcmluZyAwIHBvbGFyaXR5
IDENClsgICAzNC41ODI5NTVdIHhlbjogLS0+IHBpcnE9MzcgLT4gaXJxPTM3IChnc2k9Mzcp
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1NC43ODFdIElPQVBJQ1sxXTogU2V0IFBDSSBy
b3V0aW5nIGVudHJ5ICg3LTEzIC0+IDB4MjkgLT4gSVJRIDM3IE1vZGU6MSBBY3RpdmU6MSkN
ClsgICAzNC42MjQ1ODVdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDM3IHRyaWdnZXJpbmcgMCBw
b2xhcml0eSAxDQpbICAgMzQuNjQxNDQ3XSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjM3DQpb
ICAgMzQuNjUyNjg3XSBwY2liYWNrIDAwMDA6MDQ6MDAuMDogY2FsbGluZyBxdWlya191c2Jf
ZWFybHlfaGFuZG9mZisweDAvMHg2ZjANClsgICAzNC42NzM4MDNdIHhlbjogcmVnaXN0ZXJp
bmcgZ3NpIDU0IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgMzQuNjkwNTgzXSBBbHJl
YWR5IHNldHVwIHRoZSBHU0kgOjU0DQpbICAgMzQuNzAxNzk5XSB4ZW46IHJlZ2lzdGVyaW5n
IGdzaSA0MCB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQ0KWyAgIDM0LjcxODY2Nl0geGVuOiAt
LT4gcGlycT00MCAtPiBpcnE9NDAgKGdzaT00MCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4
OjU0LjkxN10gSU9BUElDWzFdOiBTZXQgUENJIHJvdXRpbmcgZW50cnkgKDctMTYgLT4gMHgz
MSAtPiBJUlEgNDAgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDM0Ljc2MDMyMl0gUENJOiBDTFMg
NjQgYnl0ZXMsIGRlZmF1bHQgNjQNClsgICAzNC43NzI2MjBdIFRyeWluZyB0byB1bnBhY2sg
cm9vdGZzIGltYWdlIGFzIGluaXRyYW1mcy4uLg0KWyAgIDM0LjgxOTkzNF0gRnJlZWluZyBp
bml0cmQgbWVtb3J5OiAxNTU3MksgKGZmZmY4ODAwMDM2MjMwMDAgLSBmZmZmODgwMDA0NTU4
MDAwKQ0KWyAgIDM0Ljg0NDQxN10gU2Nhbm5pbmcgZm9yIGxvdyBtZW1vcnkgY29ycnVwdGlv
biBldmVyeSA2MCBzZWNvbmRzDQpbICAgMzQuODY0NDgxXSBzaGExX3Nzc2UzOiBOZWl0aGVy
IEFWWCBub3IgQVZYMiBub3IgU1NTRTMgaXMgYXZhaWxhYmxlL3VzYWJsZS4NClsgICAzNC44
ODUwNzFdIHNoYTI1Nl9zc3NlMzogTmVpdGhlciBBVlggbm9yIFNTU0UzIGlzIGF2YWlsYWJs
ZS91c2FibGUuDQpbICAgMzQuOTA0Mjk5XSBzaGE1MTJfc3NzZTM6IE5laXRoZXIgQVZYIG5v
ciBTU1NFMyBpcyBhdmFpbGFibGUvdXNhYmxlLg0KWyAgIDM0LjkyMzUzM10gQVZYIG9yIEFF
Uy1OSSBpbnN0cnVjdGlvbnMgYXJlIG5vdCBkZXRlY3RlZC4NClsgICAzNC45Mzk2NThdIEFW
WCBpbnN0cnVjdGlvbnMgYXJlIG5vdCBkZXRlY3RlZC4NClsgICAzNC45NTMxNzZdIEFWWCBp
bnN0cnVjdGlvbnMgYXJlIG5vdCBkZXRlY3RlZC4NClsgICAzNC45NjY2OTJdIEFWWDIgb3Ig
QUVTLU5JIGluc3RydWN0aW9ucyBhcmUgbm90IGRldGVjdGVkLg0KWyAgIDM0Ljk4MzA3M10g
QVZYMiBpbnN0cnVjdGlvbnMgYXJlIG5vdCBkZXRlY3RlZC4NClsgICAzNC45OTczNzldIGZ1
dGV4IGhhc2ggdGFibGUgZW50cmllczogMjA0OCAob3JkZXI6IDYsIDI2MjE0NCBieXRlcykN
ClsgICAzNS4wMTYwOTFdIGF1ZGl0OiBpbml0aWFsaXppbmcgbmV0bGluayBzdWJzeXMgKGRp
c2FibGVkKQ0KWyAgIDM1LjAzMjMzMl0gYXVkaXQ6IHR5cGU9MjAwMCBhdWRpdCgxNDExNjUw
NTM1LjIxNToxKTogaW5pdGlhbGl6ZWQNClsgICAzNS4wNTEyMTVdIEh1Z2VUTEIgcmVnaXN0
ZXJlZCAyIE1CIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9jYXRlZCAwIHBhZ2VzDQpbICAgMzUuMDc1
NzE0XSBWRlM6IERpc2sgcXVvdGFzIGRxdW90XzYuNS4yDQpbICAgMzUuMDg3Mjk3XSBEcXVv
dC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3JkZXIgMCwgNDA5NiBieXRlcykN
ClsgICAzNS4xMDg3NjhdIG50ZnM6IGRyaXZlciAyLjEuMzAgW0ZsYWdzOiBSL1ddLg0KWyAg
IDM1LjEyMTk3NF0gZnVzZSBpbml0IChBUEkgdmVyc2lvbiA3LjIzKQ0KWyAgIDM1LjEzNDk1
OF0gZ2ZzMjogR0ZTMiBpbnN0YWxsZWQNClsgICAzNS4xNDQ0NzJdIGNlcGg6IGxvYWRlZCAo
bWRzIHByb3RvIDMyKQ0KWyAgIDM1LjE1NjA3OF0gbXNnbW5pIGhhcyBiZWVuIHNldCB0byAy
ODEyDQpbICAgMzUuMTY5ODUzXSBib3VuY2U6IHBvb2wgc2l6ZTogNjQgcGFnZXMNClsgICAz
NS4xODExNzZdIEJsb2NrIGxheWVyIFNDU0kgZ2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lv
biAwLjQgbG9hZGVkIChtYWpvciAyNTApDQpbICAgMzUuMjAzNDU5XSBpbyBzY2hlZHVsZXIg
bm9vcCByZWdpc3RlcmVkDQpbICAgMzUuMjE1Mzk2XSBpbyBzY2hlZHVsZXIgZGVhZGxpbmUg
cmVnaXN0ZXJlZA0KWyAgIDM1LjIyODUyNF0gaW8gc2NoZWR1bGVyIGNmcSByZWdpc3RlcmVk
IChkZWZhdWx0KQ0KWyAgIDM1LjI0MjkzM10gY3JjMzI6IENSQ19MRV9CSVRTID0gNjQsIENS
Q19CRSBCSVRTID0gNjQNClsgICAzNS4yNTgwMzFdIGNyYzMyOiBzZWxmIHRlc3RzIHBhc3Nl
ZCwgcHJvY2Vzc2VkIDIyNTk0NCBieXRlcyBpbiAxMDkzMTMgbnNlYw0KWyAgIDM1LjI3OTIw
Nl0gY3JjMzJjOiBDUkNfTEVfQklUUyA9IDY0DQpbICAgMzUuMjkwMDEyXSBjcmMzMmM6IHNl
bGYgdGVzdHMgcGFzc2VkLCBwcm9jZXNzZWQgMjI1OTQ0IGJ5dGVzIGluIDU0NjQzIG5zZWMN
ClsgICAzNS4zMjAyMjRdIGNyYzMyX2NvbWJpbmU6IDgzNzMgc2VsZiB0ZXN0cyBwYXNzZWQN
ClsgICAzNS4zNDMxODRdIGNyYzMyY19jb21iaW5lOiA4MzczIHNlbGYgdGVzdHMgcGFzc2Vk
DQpbICAgMzUuMzU3NzI4XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSA1MiB0cmlnZ2VyaW5nIDAg
cG9sYXJpdHkgMQ0KWyAgIDM1LjM3NDIyMV0geGVuOiAtLT4gcGlycT01MiAtPiBpcnE9NTIg
KGdzaT01MikNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjU1LjU3Ml0gSU9BUElDWzFdOiBT
ZXQgUENJIHJvdXRpbmcgZW50cnkgKDctMjggLT4gMHgzOSAtPiBJUlEgNTIgTW9kZToxIEFj
dGl2ZToxKQ0KWyAgIDM1LjQxNjE0MF0geGVuOiByZWdpc3RlcmluZyBnc2kgNTIgdHJpZ2dl
cmluZyAwIHBvbGFyaXR5IDENClsgICAzNS40MzI2OTJdIEFscmVhZHkgc2V0dXAgdGhlIEdT
SSA6NTINClsgICAzNS40NDQxNDZdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDUyIHRyaWdnZXJp
bmcgMCBwb2xhcml0eSAxDQpbICAgMzUuNDYwNzk1XSBBbHJlYWR5IHNldHVwIHRoZSBHU0kg
OjUyDQpbICAgMzUuNDcyMjYxXSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSA1MyB0cmlnZ2VyaW5n
IDAgcG9sYXJpdHkgMQ0KWyAgIDM1LjQ4ODg2OV0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDo1
Mw0KWyAgIDM1LjUwMDQzN10geGVuOiByZWdpc3RlcmluZyBnc2kgNTQgdHJpZ2dlcmluZyAw
IHBvbGFyaXR5IDENClsgICAzNS41MTY5NTJdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6NTQN
ClsgICAzNS41Mjg0MTRdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDU0IHRyaWdnZXJpbmcgMCBw
b2xhcml0eSAxDQpbICAgMzUuNTQ1MDMyXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjU0DQpb
ICAgMzUuNTU2NzI4XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNiB0cmlnZ2VyaW5nIDAgcG9s
YXJpdHkgMQ0KWyAgIDM1LjU3MzE1N10geGVuOiAtLT4gcGlycT0xNiAtPiBpcnE9MTYgKGdz
aT0xNikNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjA4OjU1Ljc3MV0gSU9BUElDWzBdOiBTZXQg
UENJIHJvdXRpbmcgZW50cnkgKDYtMTYgLT4gMHg4OSAtPiBJUlEgMTYgTW9kZToxIEFjdGl2
ZToxKQ0KWyAgIDM1LjYxNTMxNF0geGVuOiByZWdpc3RlcmluZyBnc2kgMzggdHJpZ2dlcmlu
ZyAwIHBvbGFyaXR5IDENClsgICAzNS42MzE3NDRdIHhlbjogLS0+IHBpcnE9MzggLT4gaXJx
PTM4IChnc2k9MzgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1NS44MzBdIElPQVBJQ1sx
XTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg3LTE0IC0+IDB4YTkgLT4gSVJRIDM4IE1vZGU6
MSBBY3RpdmU6MSkNClsgICAzNS42NzM4MjVdIHBjaV9ob3RwbHVnOiBQQ0kgSG90IFBsdWcg
UENJIENvcmUgdmVyc2lvbjogMC41DQpbICAgMzUuNjkwMzc5XSBwY2llaHA6IFBDSSBFeHBy
ZXNzIEhvdCBQbHVnIENvbnRyb2xsZXIgRHJpdmVyIHZlcnNpb246IDAuNA0KWyAgIDM1Ljcx
MDI2MF0gY3BjaWhwX2dlbmVyaWM6IEdlbmVyaWMgcG9ydCBJL08gQ29tcGFjdFBDSSBIb3Qg
UGx1ZyBEcml2ZXIgdmVyc2lvbjogMC4xDQpbICAgMzUuNzMzNjYzXSBjcGNpaHBfZ2VuZXJp
Yzogbm90IGNvbmZpZ3VyZWQsIGRpc2FibGluZy4NClsgICAzNS43NDkzMTJdIHNocGNocDog
U3RhbmRhcmQgSG90IFBsdWcgUENJIENvbnRyb2xsZXIgRHJpdmVyIHZlcnNpb246IDAuNA0K
WyAgIDM1Ljc3MDg5Nl0gYWNwaXBocF9pYm06IGlibV9hY3BpcGhwX2luaXQ6IGFjcGlfd2Fs
a19uYW1lc3BhY2UgZmFpbGVkDQpbICAgMzUuNzkwMTcwXSB1c2Jjb3JlOiByZWdpc3RlcmVk
IG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVkbGZiDQpbICAgMzUuODA2NTg1XSB2ZXNhZmI6IG1v
ZGUgaXMgMTI4MHgxMDI0eDMyLCBsaW5lbGVuZ3RoPTUxMjAsIHBhZ2VzPTANClsgICAzNS44
MjUyODRdIHZlc2FmYjogc2Nyb2xsaW5nOiByZWRyYXcNClsgICAzNS44MzY0NjFdIHZlc2Fm
YjogVHJ1ZWNvbG9yOiBzaXplPTA6ODo4OjgsIHNoaWZ0PTA6MTY6ODowDQpbICAgMzUuODU0
MzkwXSB2ZXNhZmI6IGZyYW1lYnVmZmVyIGF0IDB4ZDAwMDAwMDAsIG1hcHBlZCB0byAweGZm
ZmZjOTAwMTA1ODAwMDAsIHVzaW5nIDEwMjQwaywgdG90YWwgMTYzODRrDQpbICAgMzUuOTA0
MDI0XSBDb25zb2xlOiBzd2l0Y2hpbmcgdG8gY29sb3VyIGZyYW1lIGJ1ZmZlciBkZXZpY2Ug
MTYweDY0DQpbICAgMzUuOTQyODgxXSBmYjA6IFZFU0EgVkdBIGZyYW1lIGJ1ZmZlciBkZXZp
Y2UNClsgICAzNS45NTYzNzJdIGlucHV0OiBQb3dlciBCdXR0b24gYXMgL2RldmljZXMvTE5Y
U1lTVE06MDAvTE5YU1lCVVM6MDAvUE5QMEMwQzowMC9pbnB1dC9pbnB1dDANClsgICAzNS45
ODEzNzhdIEFDUEk6IFBvd2VyIEJ1dHRvbiBbUFdSQl0NClsgICAzNS45OTI2MDhdIGlucHV0
OiBQb3dlciBCdXR0b24gYXMgL2RldmljZXMvTE5YU1lTVE06MDAvTE5YUFdSQk46MDAvaW5w
dXQvaW5wdXQxDQpbICAgMzYuMDE0ODkzXSBBQ1BJOiBQb3dlciBCdXR0b24gW1BXUkZdDQpb
ICAgMzYuMDI2ODQ5XSBXYXJuaW5nOiBQcm9jZXNzb3IgUGxhdGZvcm0gTGltaXQgbm90IHN1
cHBvcnRlZC4NClsgICAzNi4wNDQxODFdIHhlbjp4ZW5fZXZ0Y2huOiBFdmVudC1jaGFubmVs
IGRldmljZSBpbnN0YWxsZWQNClsgICAzNi4wNjA4NjRdIHhlbjogcmVnaXN0ZXJpbmcgZ3Np
IDIyIHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgMzYuMDc3NDI1XSB4ZW46IC0tPiBw
aXJxPTIyIC0+IGlycT0yMiAoZ3NpPTIyKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDg6NTYu
Mjc2XSBJT0FQSUNbMF06IFNldCBQQ0kgcm91dGluZyBlbnRyeSAoNi0yMiAtPiAweGI5IC0+
IElSUSAyMiBNb2RlOjEgQWN0aXZlOjEpDQpbICAgMzYuMTQ1Njk5XSB4ZW46IHJlZ2lzdGVy
aW5nIGdzaSA0MCB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQ0KWyAgIDM2LjE2MjI1M10gQWxy
ZWFkeSBzZXR1cCB0aGUgR1NJIDo0MA0KWyAgIDM3LjE4MjIyN10gcGNpYmFjayAwMDAwOjA0
OjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3BhY2UgYXQgb2Zmc2V0IDB4M2MgKHdhcyAweDEw
MCwgd3JpdGluZyAweDEwYSkNClsgICAzNy4yMDkwNTddIHBjaWJhY2sgMDAwMDowNDowMC4w
OiByZXN0b3JpbmcgY29uZmlnIHNwYWNlIGF0IG9mZnNldCAweDEwICh3YXMgMHg0LCB3cml0
aW5nIDB4ZmRkZmUwMDQpDQpbICAgMzcuMjM2ODYwXSBwY2liYWNrIDAwMDA6MDQ6MDAuMDog
cmVzdG9yaW5nIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQgMHhjICh3YXMgMHgwLCB3cml0aW5n
IDB4MTApDQpbICAgMzcuMjYyODU3XSBwY2liYWNrIDAwMDA6MDQ6MDAuMDogcmVzdG9yaW5n
IGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQgMHg0ICh3YXMgMHgxMDAwMDAsIHdyaXRpbmcgMHgx
MDAxMDIpDQpbICAgMzcuMjkxMzE2XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAzOCB0cmlnZ2Vy
aW5nIDAgcG9sYXJpdHkgMQ0KWyAgIDM3LjMwODA5M10gQWxyZWFkeSBzZXR1cCB0aGUgR1NJ
IDozOA0KWyAgIDM3LjM0NTcxMl0geGVuOiByZWdpc3RlcmluZyBnc2kgMzcgdHJpZ2dlcmlu
ZyAwIHBvbGFyaXR5IDENClsgICAzNy4zNjIyNzVdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6
MzcNClsgICAzOC4zODIyMzFdIHBjaWJhY2sgMDAwMDowODowMC4wOiByZXN0b3JpbmcgY29u
ZmlnIHNwYWNlIGF0IG9mZnNldCAweDNjICh3YXMgMHgxMDAsIHdyaXRpbmcgMHgxMDcpDQpb
ICAgMzguNDA5MDI1XSBwY2liYWNrIDAwMDA6MDg6MDAuMDogcmVzdG9yaW5nIGNvbmZpZyBz
cGFjZSBhdCBvZmZzZXQgMHgxMCAod2FzIDB4NCwgd3JpdGluZyAweGZlMGZlMDA0KQ0KWyAg
IDM4LjQzNjgyMl0gcGNpYmFjayAwMDAwOjA4OjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3Bh
Y2UgYXQgb2Zmc2V0IDB4YyAod2FzIDB4MCwgd3JpdGluZyAweDEwKQ0KWyAgIDM4LjQ2Mjg1
MV0gcGNpYmFjayAwMDAwOjA4OjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3BhY2UgYXQgb2Zm
c2V0IDB4NCAod2FzIDB4MTAwMDAwLCB3cml0aW5nIDB4MTAwMTAyKQ0KWyAgIDM4LjQ5MTMy
Nl0geGVuOiByZWdpc3RlcmluZyBnc2kgMzMgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsg
ICAzOC41MDgwOTNdIHhlbjogLS0+IHBpcnE9MzMgLT4gaXJxPTMzIChnc2k9MzMpDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzowODo1OC43MDZdIElPQVBJQ1sxXTogU2V0IFBDSSByb3V0aW5n
IGVudHJ5ICg3LTkgLT4gMHhjMSAtPiBJUlEgMzMgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDM4
LjU3NTY2MV0gcGNpYmFjayAwMDAwOjA5OjAwLjA6IGVuYWJsaW5nIGRldmljZSAoMDAwMCAt
PiAwMDAzKQ0KWyAgIDM4LjU5MzU4NF0geGVuOiByZWdpc3RlcmluZyBnc2kgMzIgdHJpZ2dl
cmluZyAwIHBvbGFyaXR5IDENClsgICAzOC42MTA0NjFdIHhlbjogLS0+IHBpcnE9MzIgLT4g
aXJxPTMyIChnc2k9MzIpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1OC44MDldIElPQVBJ
Q1sxXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg3LTggLT4gMHhjOSAtPiBJUlEgMzIgTW9k
ZToxIEFjdGl2ZToxKQ0KWyAgIDM4LjY3NTY5OF0geGVuOiByZWdpc3RlcmluZyBnc2kgNDcg
dHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICAzOC42OTIyOTldIHhlbjogLS0+IHBpcnE9
NDcgLT4gaXJxPTQ3IChnc2k9NDcpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowODo1OC44OTBd
IElPQVBJQ1sxXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg3LTIzIC0+IDB4ZDEgLT4gSVJR
IDQ3IE1vZGU6MSBBY3RpdmU6MSkNClsgICAzOS43NDIyOThdIHBjaWJhY2sgMDAwMDowYTow
MC4wOiByZXN0b3JpbmcgY29uZmlnIHNwYWNlIGF0IG9mZnNldCAweDNjICh3YXMgMHgxMDAs
IHdyaXRpbmcgMHgxMGEpDQpbICAgMzkuNzY5MTE2XSBwY2liYWNrIDAwMDA6MGE6MDAuMDog
cmVzdG9yaW5nIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQgMHgxMCAod2FzIDB4NCwgd3JpdGlu
ZyAweGZlMjAwMDA0KQ0KWyAgIDM5Ljc5NjkwMF0gcGNpYmFjayAwMDAwOjBhOjAwLjA6IHJl
c3RvcmluZyBjb25maWcgc3BhY2UgYXQgb2Zmc2V0IDB4YyAod2FzIDB4MCwgd3JpdGluZyAw
eDEwKQ0KWyAgIDM5LjgyMjkwMV0gcGNpYmFjayAwMDAwOjBhOjAwLjA6IHJlc3RvcmluZyBj
b25maWcgc3BhY2UgYXQgb2Zmc2V0IDB4NCAod2FzIDB4MTAwMDAwLCB3cml0aW5nIDB4MTAw
MTA2KQ0KWyAgIDM5Ljg1NzYzOV0geGVuOiByZWdpc3RlcmluZyBnc2kgNDggdHJpZ2dlcmlu
ZyAwIHBvbGFyaXR5IDENClsgICAzOS44ODA3NjddIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6
NDgNClsgICA0MC45MDU1NjBdIHBjaWJhY2sgMDAwMDowYjowMC4wOiByZXN0b3JpbmcgY29u
ZmlnIHNwYWNlIGF0IG9mZnNldCAweDNjICh3YXMgMHgxMDAsIHdyaXRpbmcgMHgxMGEpDQpb
ICAgNDAuOTM4OTc4XSBwY2liYWNrIDAwMDA6MGI6MDAuMDogcmVzdG9yaW5nIGNvbmZpZyBz
cGFjZSBhdCBvZmZzZXQgMHgxMCAod2FzIDB4NCwgd3JpdGluZyAweGZlNWZlMDA0KQ0KWyAg
IDQwLjk3MzEzN10gcGNpYmFjayAwMDAwOjBiOjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3Bh
Y2UgYXQgb2Zmc2V0IDB4YyAod2FzIDB4MCwgd3JpdGluZyAweDEwKQ0KWyAgIDQxLjAwNTQy
OF0gcGNpYmFjayAwMDAwOjBiOjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3BhY2UgYXQgb2Zm
c2V0IDB4NCAod2FzIDB4MTAwMDAwLCB3cml0aW5nIDB4MTAwMTAyKQ0KWyAgIDQxLjA0MDE3
OV0geGVuOiByZWdpc3RlcmluZyBnc2kgMjkgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsg
ICA0MS4wNjMzMzBdIHhlbjogLS0+IHBpcnE9MjkgLT4gaXJxPTI5IChnc2k9MjkpDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzowOTowMS4yNjhdIElPQVBJQ1sxXTogU2V0IFBDSSByb3V0aW5n
IGVudHJ5ICg3LTUgLT4gMHhkOSAtPiBJUlEgMjkgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDQx
LjEzNTY2Ml0gcGNpYmFjayAwMDAwOjBlOjAwLjA6IGVuYWJsaW5nIGRldmljZSAoMDAwMCAt
PiAwMDAzKQ0KWyAgIDQxLjE2MDE5OF0geGVuOiByZWdpc3RlcmluZyBnc2kgMjggdHJpZ2dl
cmluZyAwIHBvbGFyaXR5IDENClsgICA0MS4xODM0MDZdIHhlbjogLS0+IHBpcnE9MjggLT4g
aXJxPTI4IChnc2k9MjgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzowOTowMS4zODhdIElPQVBJ
Q1sxXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg3LTQgLT4gMHgyMiAtPiBJUlEgMjggTW9k
ZToxIEFjdGl2ZToxKQ0KWyAgIDQxLjI1NTg5OF0geGVuX3BjaWJhY2s6IGJhY2tlbmQgaXMg
dnBjaQ0KWyAgIDQxLjI3NDY1MF0geGVuX2FjcGlfcHJvY2Vzc29yOiBVcGxvYWRpbmcgWGVu
IHByb2Nlc3NvciBQTSBpbmZvDQpbICAgNDEuMzAwMjgwXSBTZXJpYWw6IDgyNTAvMTY1NTAg
ZHJpdmVyLCA0IHBvcnRzLCBJUlEgc2hhcmluZyBlbmFibGVkDQpbICAgNDEuMzI2NzUyXSBo
cGV0X2FjcGlfYWRkOiBubyBhZGRyZXNzIG9yIGlycXMgaW4gX0NSUw0KWyAgIDQxLjM0ODY1
M10gTGludXggYWdwZ2FydCBpbnRlcmZhY2UgdjAuMTAzDQpbICAgNDEuMzY3ODg5XSBIYW5n
Y2hlY2s6IHN0YXJ0aW5nIGhhbmdjaGVjayB0aW1lciAwLjkuMSAodGljayBpcyAxODAgc2Vj
b25kcywgbWFyZ2luIGlzIDYwIHNlY29uZHMpLg0KWyAgIDQxLjQwMTMwNl0gW2RybV0gSW5p
dGlhbGl6ZWQgZHJtIDEuMS4wIDIwMDYwODEwDQpbICAgNDEuNDIxNjYyXSBbZHJtXSBWR0FD
T04gZGlzYWJsZSByYWRlb24ga2VybmVsIG1vZGVzZXR0aW5nLg0KWyAgIDQxLjQ0NDgyNl0g
W2RybTpyYWRlb25faW5pdF0gKkVSUk9SKiBObyBVTVMgc3VwcG9ydCBpbiByYWRlb24gbW9k
dWxlIQ0KWyAgIDQxLjQ3NDc3MF0gYnJkOiBtb2R1bGUgbG9hZGVkDQpbICAgNDEuNDk5MDE4
XSBsb29wOiBtb2R1bGUgbG9hZGVkDQpbICAgNDEuNTE1MTg5XSBhaGNpIDAwMDA6MDA6MTEu
MDogdmVyc2lvbiAzLjANClsgICA0MS41MzM5MzddIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE5
IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgNDEuNTU2OTI0XSB4ZW46IC0tPiBwaXJx
PTE5IC0+IGlycT0xOSAoZ3NpPTE5KQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MDk6MDEuNzYx
XSBJT0FQSUNbMF06IFNldCBQQ0kgcm91dGluZyBlbnRyeSAoNi0xOSAtPiAweDJhIC0+IElS
USAxOSBNb2RlOjEgQWN0aXZlOjEpDQpbICAgNDEuNjA0NzU0XSBhaGNpIDAwMDA6MDA6MTEu
MDogQUhDSSAwMDAxLjAyMDAgMzIgc2xvdHMgNiBwb3J0cyA2IEdicHMgMHgzZiBpbXBsIFNB
VEEgbW9kZQ0KWyAgIDQxLjYzNTU4Ml0gYWhjaSAwMDAwOjAwOjExLjA6IGZsYWdzOiA2NGJp
dCBuY3Egc250ZiBpbGNrIHBtIGxlZCBjbG8gcG1wIHBpbyBzbHVtIHBhcnQgDQpbICAgNDEu
NjY4Mjc2XSBzY3NpIGhvc3QwOiBhaGNpDQpbICAgNDEuNjgzNTM2XSBzY3NpIGhvc3QxOiBh
aGNpDQpbICAgNDEuNjk4NjEyXSBzY3NpIGhvc3QyOiBhaGNpDQpbICAgNDEuNzEzNTk5XSBz
Y3NpIGhvc3QzOiBhaGNpDQpbICAgNDEuNzI4NDQ5XSBzY3NpIGhvc3Q0OiBhaGNpDQpbICAg
NDEuNzQzMjE1XSBzY3NpIGhvc3Q1OiBhaGNpDQpbICAgNDEuNzU3NjIyXSBhdGExOiBTQVRB
IG1heCBVRE1BLzEzMyBhYmFyIG0xMDI0QDB4ZmRiZmYwMDAgcG9ydCAweGZkYmZmMTAwIGly
cSAxMTQNClsgICA0MS43ODU4NjBdIGF0YTI6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTEw
MjRAMHhmZGJmZjAwMCBwb3J0IDB4ZmRiZmYxODAgaXJxIDExNQ0KWyAgIDQxLjgxMzk5OF0g
YXRhMzogU0FUQSBtYXggVURNQS8xMzMgYWJhciBtMTAyNEAweGZkYmZmMDAwIHBvcnQgMHhm
ZGJmZjIwMCBpcnEgMTE2DQpbICAgNDEuODQxOTk3XSBhdGE0OiBTQVRBIG1heCBVRE1BLzEz
MyBhYmFyIG0xMDI0QDB4ZmRiZmYwMDAgcG9ydCAweGZkYmZmMjgwIGlycSAxMTcNClsgICA0
MS44Njk5NzJdIGF0YTU6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTEwMjRAMHhmZGJmZjAw
MCBwb3J0IDB4ZmRiZmYzMDAgaXJxIDExOA0KWyAgIDQxLjg5Nzg0MV0gYXRhNjogU0FUQSBt
YXggVURNQS8xMzMgYWJhciBtMTAyNEAweGZkYmZmMDAwIHBvcnQgMHhmZGJmZjM4MCBpcnEg
MTE5DQpbICAgNDEuOTI1OTE3XSB0dW46IFVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2
ZXIsIDEuNg0KWyAgIDQxLjk0NjQwNl0gdHVuOiAoQykgMTk5OS0yMDA0IE1heCBLcmFzbnlh
bnNreSA8bWF4a0BxdWFsY29tbS5jb20+DQpbICAgNDEuOTcwNDIxXSBlMTAwMDogSW50ZWwo
UikgUFJPLzEwMDAgTmV0d29yayBEcml2ZXIgLSB2ZXJzaW9uIDcuMy4yMS1rOC1OQVBJDQpb
ICAgNDEuOTk3MDAxXSBlMTAwMDogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYgSW50ZWwgQ29y
cG9yYXRpb24uDQpbICAgNDIuMDE5NzEyXSBlMTAwMGU6IEludGVsKFIpIFBSTy8xMDAwIE5l
dHdvcmsgRHJpdmVyIC0gMi4zLjItaw0KWyAgIDQyLjA0MjU2M10gZTEwMDBlOiBDb3B5cmln
aHQoYykgMTk5OSAtIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24uDQpbICAgNDIuMDY1NzQ1XSBp
Z2I6IEludGVsKFIpIEdpZ2FiaXQgRXRoZXJuZXQgTmV0d29yayBEcml2ZXIgLSB2ZXJzaW9u
IDUuMi4xMy1rDQpbICAgNDIuMDkyMzY4XSBpZ2I6IENvcHlyaWdodCAoYykgMjAwNy0yMDE0
IEludGVsIENvcnBvcmF0aW9uLg0KWyAgIDQyLjExNDYzMl0gaWdidmY6IEludGVsKFIpIEdp
Z2FiaXQgVmlydHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlciAtIHZlcnNpb24gMi4wLjIt
aw0KWyAgIDQyLjE0MzYxOV0gaWdidmY6IENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uDQpbICAgNDIuMTY2OTgyXSByODE2OSBHaWdhYml0IEV0aGVybmV0
IGRyaXZlciAyLjNMSy1OQVBJIGxvYWRlZA0KWyAgIDQyLjE4OTI5N10geGVuOiByZWdpc3Rl
cmluZyBnc2kgNDYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICA0Mi4yMTE1NDBdIHhl
bjogLS0+IHBpcnE9NDYgLT4gaXJxPTQ2IChnc2k9NDYpDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzowOTowMi40MTVdIElPQVBJQ1sxXTogU2V0IFBDSSByb3V0aW5nIGVudHJ5ICg3LTIyIC0+
IDB4NzIgLT4gSVJRIDQ2IE1vZGU6MSBBY3RpdmU6MSkNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjA5OjAyLjQ0M10gSU9BUElDWzFdOiBTZXQgUENJIHJvdXRpbmcgZW50cnkgKDctMjcgLT4g
MHg4YSAtPiBJUlEgNTEgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDQyLjIzODg1M10gYXRhNjog
U0FUQSBsaW5rIGRvd24gKFNTdGF0dXMgMCBTQ29udHJvbCAzMDApDQpbICAgNDIuMjU4NDY2
XSByODE2OSAwMDAwOjBkOjAwLjA6IGVuYWJsaW5nIE1lbS1Xci1JbnZhbA0KWyAgIDQyLjI1
OTAzNV0gcjgxNjkgMDAwMDowZDowMC4wIGV0aDA6IFJUTDgxNjhkLzgxMTFkIGF0IDB4ZmZm
ZmM5MDAwMDM2MjAwMCwgNDA6NjE6ODY6ZjQ6Njc6ZDksIFhJRCAwODEwMDBjMCBJUlEgMTIy
DQpbICAgNDIuMjU5MDM3XSByODE2OSAwMDAwOjBkOjAwLjAgZXRoMDoganVtYm8gZmVhdHVy
ZXMgW2ZyYW1lczogOTIwMCBieXRlcywgdHggY2hlY2tzdW1taW5nOiBrb10NClsgICA0Mi4y
NTkxMDZdIHI4MTY5IEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIDIuM0xLLU5BUEkgbG9hZGVk
DQpbICAgNDIuMjU5MTcyXSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSA1MSB0cmlnZ2VyaW5nIDAg
cG9sYXJpdHkgMQ0KWyAgIDQyLjI1OTE4Ml0geGVuOiAtLT4gcGlycT01MSAtPiBpcnE9NTEg
KGdzaT01MSkNClsgICA0Mi4yODY1MzddIHI4MTY5IDAwMDA6MGM6MDAuMDogZW5hYmxpbmcg
TWVtLVdyLUludmFsDQpbICAgNDIuMjg2OTUxXSByODE2OSAwMDAwOjBjOjAwLjAgZXRoMTog
UlRMODE2OGQvODExMWQgYXQgMHhmZmZmYzkwMDAwMzY0MDAwLCA0MDo2MTo4NjpmNDo2Nzpk
OCwgWElEIDA4MTAwMGMwIElSUSAxMjMNClsgICA0Mi4yODY5NTJdIHI4MTY5IDAwMDA6MGM6
MDAuMCBldGgxOiBqdW1ibyBmZWF0dXJlcyBbZnJhbWVzOiA5MjAwIGJ5dGVzLCB0eCBjaGVj
a3N1bW1pbmc6IGtvXQ0KWyAgIDQyLjI4Njk4OF0geGVuX25ldGZyb250OiBJbml0aWFsaXNp
bmcgWGVuIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVyDQpbICAgNDIuMjg3MjM5XSBlaGNpX2hj
ZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhvc3QgQ29udHJvbGxlciAoRUhDSSkgRHJpdmVyDQpb
ICAgNDIuMjg3MjQxXSBlaGNpLXBjaTogRUhDSSBQQ0kgcGxhdGZvcm0gZHJpdmVyDQpbICAg
NDIuMjg3NDI1XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNyB0cmlnZ2VyaW5nIDAgcG9sYXJp
dHkgMQ0KWyAgIDQyLjI4NzQyN10gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNw0KWyAgIDQy
LjI4NzQ3N10gUVVJUks6IEVuYWJsZSBBTUQgUExMIGZpeA0KWyAgIDQyLjI4NzQ5Ml0gZWhj
aS1wY2kgMDAwMDowMDoxMi4yOiBlbmFibGluZyBidXMgbWFzdGVyaW5nDQpbICAgNDIuMjg3
NTQzXSBlaGNpLXBjaSAwMDAwOjAwOjEyLjI6IEVIQ0kgSG9zdCBDb250cm9sbGVyDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzowOTowMi45MDBdIElPQVBJQ1sxXTogU2V0IFBDSSByb3V0aW5n
IGVudHJ5ICg3LTEgLT4gMHg5YSAtPiBJUlEgMjUgTW9kZToxIEFjdGl2ZToxKQ0KWyAgIDQy
LjI4ODAwMF0gZWhjaS1wY2kgMDAwMDowMDoxMi4yOiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVk
LCBhc3NpZ25lZCBidXMgbnVtYmVyIDENClsgICA0Mi4yODgwMzNdIGVoY2ktcGNpIDAwMDA6
MDA6MTIuMjogYXBwbHlpbmcgQU1EIFNCNzAwL1NCODAwL0h1ZHNvbi0yLzMgRUhDSSBkdW1t
eSBxaCB3b3JrYXJvdW5kDQpbICAgNDIuMjg4MDYxXSBlaGNpLXBjaSAwMDAwOjAwOjEyLjI6
IGRlYnVnIHBvcnQgMQ0KWyAgIDQyLjI4ODE5MV0gZWhjaS1wY2kgMDAwMDowMDoxMi4yOiBl
bmFibGluZyBNZW0tV3ItSW52YWwNClsgICA0Mi4yODgyNTddIGVoY2ktcGNpIDAwMDA6MDA6
MTIuMjogaXJxIDE3LCBpbyBtZW0gMHhmZGJmZjQwMA0KWyAgIDQyLjI5NTQ0Ml0gZWhjaS1w
Y2kgMDAwMDowMDoxMi4yOiBVU0IgMi4wIHN0YXJ0ZWQsIEVIQ0kgMS4wMA0KWyAgIDQyLjI5
NTYxN10gdXNiIHVzYjE6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBp
ZFByb2R1Y3Q9MDAwMg0KWyAgIDQyLjI5NTYxOV0gdXNiIHVzYjE6IE5ldyBVU0IgZGV2aWNl
IHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xDQpbICAgNDIuMjk1
NjIwXSB1c2IgdXNiMTogUHJvZHVjdDogRUhDSSBIb3N0IENvbnRyb2xsZXINClsgICA0Mi4y
OTU2MjFdIHVzYiB1c2IxOiBNYW51ZmFjdHVyZXI6IExpbnV4IDMuMTcuMC1yYzYtMjAxNDA5
MjUtdmFuaWxsYSsgZWhjaV9oY2QNClsgICA0Mi4yOTU2MjJdIHVzYiB1c2IxOiBTZXJpYWxO
dW1iZXI6IDAwMDA6MDA6MTIuMg0KWyAgIDQyLjI5NjE4OF0gaHViIDEtMDoxLjA6IFVTQiBo
dWIgZm91bmQNClsgICA0Mi4yOTYyMTRdIGh1YiAxLTA6MS4wOiA1IHBvcnRzIGRldGVjdGVk
DQpbICAgNDIuMjk2ODY1XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNyB0cmlnZ2VyaW5nIDAg
cG9sYXJpdHkgMQ0KWyAgIDQyLjI5Njg2N10gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxNw0K
WyAgIDQyLjI5Njg4OF0gZWhjaS1wY2kgMDAwMDowMDoxMy4yOiBlbmFibGluZyBidXMgbWFz
dGVyaW5nDQpbICAgNDIuMjk2OTEzXSBlaGNpLXBjaSAwMDAwOjAwOjEzLjI6IEVIQ0kgSG9z
dCBDb250cm9sbGVyDQpbICAgNDIuMjk3MDY1XSBlaGNpLXBjaSAwMDAwOjAwOjEzLjI6IG5l
dyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMg0KWyAgIDQyLjI5
NzA3MF0gZWhjaS1wY2kgMDAwMDowMDoxMy4yOiBhcHBseWluZyBBTUQgU0I3MDAvU0I4MDAv
SHVkc29uLTIvMyBFSENJIGR1bW15IHFoIHdvcmthcm91bmQNClsgICA0Mi4yOTcwODhdIGVo
Y2ktcGNpIDAwMDA6MDA6MTMuMjogZGVidWcgcG9ydCAxDQpbICAgNDIuMzAxODMxXSBlaGNp
LXBjaSAwMDAwOjAwOjEzLjI6IGVuYWJsaW5nIE1lbS1Xci1JbnZhbA0KWyAgIDQyLjMwMTg0
Ml0gZWhjaS1wY2kgMDAwMDowMDoxMy4yOiBpcnEgMTcsIGlvIG1lbSAweGZkYmZmODAwDQpb
ICAgNDIuMzA4ODE2XSBlaGNpLXBjaSAwMDAwOjAwOjEzLjI6IFVTQiAyLjAgc3RhcnRlZCwg
RUhDSSAxLjAwDQpbICAgNDIuMzA4ODc1XSB1c2IgdXNiMjogTmV3IFVTQiBkZXZpY2UgZm91
bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAyDQpbICAgNDIuMzA4ODc2XSB1c2Ig
dXNiMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFs
TnVtYmVyPTENClsgICA0Mi4zMDg4NzhdIHVzYiB1c2IyOiBQcm9kdWN0OiBFSENJIEhvc3Qg
Q29udHJvbGxlcg0KWyAgIDQyLjMwODg3OV0gdXNiIHVzYjI6IE1hbnVmYWN0dXJlcjogTGlu
dXggMy4xNy4wLXJjNi0yMDE0MDkyNS12YW5pbGxhKyBlaGNpX2hjZA0KWyAgIDQyLjMwODg3
OV0gdXNiIHVzYjI6IFNlcmlhbE51bWJlcjogMDAwMDowMDoxMy4yDQpbICAgNDIuMzA5MTY0
XSBodWIgMi0wOjEuMDogVVNCIGh1YiBmb3VuZA0KWyAgIDQyLjMwOTE3NV0gaHViIDItMDox
LjA6IDUgcG9ydHMgZGV0ZWN0ZWQNClsgICA0Mi4zMDk1OTddIHhlbjogcmVnaXN0ZXJpbmcg
Z3NpIDE3IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgNDIuMzA5NTk5XSBBbHJlYWR5
IHNldHVwIHRoZSBHU0kgOjE3DQpbICAgNDIuMzA5NjIyXSBlaGNpLXBjaSAwMDAwOjAwOjE2
LjI6IGVuYWJsaW5nIGJ1cyBtYXN0ZXJpbmcNClsgICA0Mi4zMDk2NDldIGVoY2ktcGNpIDAw
MDA6MDA6MTYuMjogRUhDSSBIb3N0IENvbnRyb2xsZXINClsgICA0Mi4zMDk4ODhdIGVoY2kt
cGNpIDAwMDA6MDA6MTYuMjogbmV3IFVTQiBidXMgcmVnaXN0ZXJlZCwgYXNzaWduZWQgYnVz
IG51bWJlciAzDQpbICAgNDIuMzA5ODkyXSBlaGNpLXBjaSAwMDAwOjAwOjE2LjI6IGFwcGx5
aW5nIEFNRCBTQjcwMC9TQjgwMC9IdWRzb24tMi8zIEVIQ0kgZHVtbXkgcWggd29ya2Fyb3Vu
ZA0KWyAgIDQyLjMwOTkxMV0gZWhjaS1wY2kgMDAwMDowMDoxNi4yOiBkZWJ1ZyBwb3J0IDEN
ClsgICA0Mi4zMDk5ODRdIGVoY2ktcGNpIDAwMDA6MDA6MTYuMjogZW5hYmxpbmcgTWVtLVdy
LUludmFsDQpbICAgNDIuMzA5OTk0XSBlaGNpLXBjaSAwMDAwOjAwOjE2LjI6IGlycSAxNywg
aW8gbWVtIDB4ZmRiZmZjMDANClsgICA0Mi4zMTg3NzNdIGVoY2ktcGNpIDAwMDA6MDA6MTYu
MjogVVNCIDIuMCBzdGFydGVkLCBFSENJIDEuMDANClsgICA0Mi4zMTg4NDVdIHVzYiB1c2Iz
OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIN
ClsgICA0Mi4zMTg4NDZdIHVzYiB1c2IzOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9
MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQ0KWyAgIDQyLjMxODg0N10gdXNiIHVzYjM6
IFByb2R1Y3Q6IEVIQ0kgSG9zdCBDb250cm9sbGVyDQpbICAgNDIuMzE4ODQ4XSB1c2IgdXNi
MzogTWFudWZhY3R1cmVyOiBMaW51eCAzLjE3LjAtcmM2LTIwMTQwOTI1LXZhbmlsbGErIGVo
Y2lfaGNkDQpbICAgNDIuMzE4ODQ5XSB1c2IgdXNiMzogU2VyaWFsTnVtYmVyOiAwMDAwOjAw
OjE2LjINClsgICA0Mi4zMTkzMDBdIGh1YiAzLTA6MS4wOiBVU0IgaHViIGZvdW5kDQpbICAg
NDIuMzE5MzEyXSBodWIgMy0wOjEuMDogNCBwb3J0cyBkZXRlY3RlZA0KWyAgIDQyLjMxOTU3
MV0gb2hjaV9oY2Q6IFVTQiAxLjEgJ09wZW4nIEhvc3QgQ29udHJvbGxlciAoT0hDSSkgRHJp
dmVyDQpbICAgNDIuMzE5NTgxXSBvaGNpLXBjaTogT0hDSSBQQ0kgcGxhdGZvcm0gZHJpdmVy
DQpbICAgNDIuMzE5NzYwXSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxOCB0cmlnZ2VyaW5nIDAg
cG9sYXJpdHkgMQ0KWyAgIDQyLjMxOTc2Ml0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxOA0K
WyAgIDQyLjMxOTc4NF0gb2hjaS1wY2kgMDAwMDowMDoxMi4wOiBlbmFibGluZyBidXMgbWFz
dGVyaW5nDQpbICAgNDIuMzE5Nzk5XSBvaGNpLXBjaSAwMDAwOjAwOjEyLjA6IE9IQ0kgUENJ
IGhvc3QgY29udHJvbGxlcg0KWyAgIDQyLjMyMDAzMF0gb2hjaS1wY2kgMDAwMDowMDoxMi4w
OiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDQNClsgICA0
Mi4zMjM2NThdIG9oY2ktcGNpIDAwMDA6MDA6MTIuMDogaXJxIDE4LCBpbyBtZW0gMHhmZGJm
NzAwMA0KWyAgIDQyLjM3NjI1MV0gdXNiIHVzYjQ6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBp
ZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMQ0KWyAgIDQyLjM3NjI1Ml0gdXNiIHVzYjQ6
IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJl
cj0xDQpbICAgNDIuMzc2MjUzXSB1c2IgdXNiNDogUHJvZHVjdDogT0hDSSBQQ0kgaG9zdCBj
b250cm9sbGVyDQpbICAgNDIuMzc2MjU0XSB1c2IgdXNiNDogTWFudWZhY3R1cmVyOiBMaW51
eCAzLjE3LjAtcmM2LTIwMTQwOTI1LXZhbmlsbGErIG9oY2lfaGNkDQpbICAgNDIuMzc2MjU1
XSB1c2IgdXNiNDogU2VyaWFsTnVtYmVyOiAwMDAwOjAwOjEyLjANClsgICA0Mi4zNzY1NTRd
IGh1YiA0LTA6MS4wOiBVU0IgaHViIGZvdW5kDQpbICAgNDIuMzc2NTY4XSBodWIgNC0wOjEu
MDogNSBwb3J0cyBkZXRlY3RlZA0KWyAgIDQyLjM3Njk5Nl0geGVuOiByZWdpc3RlcmluZyBn
c2kgMTggdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICA0Mi4zNzY5OThdIEFscmVhZHkg
c2V0dXAgdGhlIEdTSSA6MTgNClsgICA0Mi4zNzcwMjBdIG9oY2ktcGNpIDAwMDA6MDA6MTMu
MDogZW5hYmxpbmcgYnVzIG1hc3RlcmluZw0KWyAgIDQyLjM3NzAyNl0gb2hjaS1wY2kgMDAw
MDowMDoxMy4wOiBPSENJIFBDSSBob3N0IGNvbnRyb2xsZXINClsgICA0Mi4zNzcyNTBdIG9o
Y2ktcGNpIDAwMDA6MDA6MTMuMDogbmV3IFVTQiBidXMgcmVnaXN0ZXJlZCwgYXNzaWduZWQg
YnVzIG51bWJlciA1DQpbICAgNDIuMzgxMDM0XSBvaGNpLXBjaSAwMDAwOjAwOjEzLjA6IGly
cSAxOCwgaW8gbWVtIDB4ZmRiZmMwMDANClsgICA0Mi40MzYyNDVdIHVzYiB1c2I1OiBOZXcg
VVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDENClsgICA0
Mi40MzYyNDddIHVzYiB1c2I1OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJv
ZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQ0KWyAgIDQyLjQzNjI0OF0gdXNiIHVzYjU6IFByb2R1
Y3Q6IE9IQ0kgUENJIGhvc3QgY29udHJvbGxlcg0KWyAgIDQyLjQzNjI0OV0gdXNiIHVzYjU6
IE1hbnVmYWN0dXJlcjogTGludXggMy4xNy4wLXJjNi0yMDE0MDkyNS12YW5pbGxhKyBvaGNp
X2hjZA0KWyAgIDQyLjQzNjI0OV0gdXNiIHVzYjU6IFNlcmlhbE51bWJlcjogMDAwMDowMDox
My4wDQpbICAgNDIuNDM2NTM1XSBodWIgNS0wOjEuMDogVVNCIGh1YiBmb3VuZA0KWyAgIDQy
LjQzNjU0OV0gaHViIDUtMDoxLjA6IDUgcG9ydHMgZGV0ZWN0ZWQNClsgICA0Mi40MzY5OTBd
IHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE4IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAg
NDIuNDM2OTkyXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE4DQpbICAgNDIuNDM3MDEzXSBv
aGNpLXBjaSAwMDAwOjAwOjE0LjU6IGVuYWJsaW5nIGJ1cyBtYXN0ZXJpbmcNClsgICA0Mi40
MzcwMTldIG9oY2ktcGNpIDAwMDA6MDA6MTQuNTogT0hDSSBQQ0kgaG9zdCBjb250cm9sbGVy
DQpbICAgNDIuNDM3MjU5XSBvaGNpLXBjaSAwMDAwOjAwOjE0LjU6IG5ldyBVU0IgYnVzIHJl
Z2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgNg0KWyAgIDQyLjQzOTMzM10gb2hjaS1w
Y2kgMDAwMDowMDoxNC41OiBpcnEgMTgsIGlvIG1lbSAweGZkYmZkMDAwDQpbICAgNDIuNDk2
MjQ1XSB1c2IgdXNiNjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlk
UHJvZHVjdD0wMDAxDQpbICAgNDIuNDk2MjQ2XSB1c2IgdXNiNjogTmV3IFVTQiBkZXZpY2Ug
c3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTENClsgICA0Mi40OTYy
NDddIHVzYiB1c2I2OiBQcm9kdWN0OiBPSENJIFBDSSBob3N0IGNvbnRyb2xsZXINClsgICA0
Mi40OTYyNDldIHVzYiB1c2I2OiBNYW51ZmFjdHVyZXI6IExpbnV4IDMuMTcuMC1yYzYtMjAx
NDA5MjUtdmFuaWxsYSsgb2hjaV9oY2QNClsgICA0Mi40OTYyNTBdIHVzYiB1c2I2OiBTZXJp
YWxOdW1iZXI6IDAwMDA6MDA6MTQuNQ0KWyAgIDQyLjQ5NjU0Nl0gaHViIDYtMDoxLjA6IFVT
QiBodWIgZm91bmQNClsgICA0Mi40OTY1NjBdIGh1YiA2LTA6MS4wOiAyIHBvcnRzIGRldGVj
dGVkDQpbICAgNDIuNDk2OTEzXSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxOCB0cmlnZ2VyaW5n
IDAgcG9sYXJpdHkgMQ0KWyAgIDQyLjQ5NjkxNV0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDox
OA0KWyAgIDQyLjQ5Njk0MF0gb2hjaS1wY2kgMDAwMDowMDoxNi4wOiBlbmFibGluZyBidXMg
bWFzdGVyaW5nDQpbICAgNDIuNDk2OTQ1XSBvaGNpLXBjaSAwMDAwOjAwOjE2LjA6IE9IQ0kg
UENJIGhvc3QgY29udHJvbGxlcg0KWyAgIDQyLjQ5NzE2Ml0gb2hjaS1wY2kgMDAwMDowMDox
Ni4wOiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDcNClsg
ICA0Mi40OTc1OTVdIG9oY2ktcGNpIDAwMDA6MDA6MTYuMDogaXJxIDE4LCBpbyBtZW0gMHhm
ZGJmZTAwMA0KWyAgIDQyLjU1Mjg5OV0gdXNiIHVzYjc6IE5ldyBVU0IgZGV2aWNlIGZvdW5k
LCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMQ0KWyAgIDQyLjU1MjkwMF0gdXNiIHVz
Yjc6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51
bWJlcj0xDQpbICAgNDIuNTUyOTAxXSB1c2IgdXNiNzogUHJvZHVjdDogT0hDSSBQQ0kgaG9z
dCBjb250cm9sbGVyDQpbICAgNDIuNTUyOTAyXSB1c2IgdXNiNzogTWFudWZhY3R1cmVyOiBM
aW51eCAzLjE3LjAtcmM2LTIwMTQwOTI1LXZhbmlsbGErIG9oY2lfaGNkDQpbICAgNDIuNTUy
OTAzXSB1c2IgdXNiNzogU2VyaWFsTnVtYmVyOiAwMDAwOjAwOjE2LjANClsgICA0Mi41NTMy
MjhdIGh1YiA3LTA6MS4wOiBVU0IgaHViIGZvdW5kDQpbICAgNDIuNTUzMjQyXSBodWIgNy0w
OjEuMDogNCBwb3J0cyBkZXRlY3RlZA0KWyAgIDQyLjU1MzUxM10gdWhjaV9oY2Q6IFVTQiBV
bml2ZXJzYWwgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBkcml2ZXINClsgICA0Mi41NTM2
NjRdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNibHANClsg
ICA0Mi41NTM3MTZdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIg
dXNiLXN0b3JhZ2UNClsgICA0Mi41NTM3ODldIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGlu
dGVyZmFjZSBkcml2ZXIgdXNic2VyaWFsDQpbICAgNDIuNTUzODEzXSB1c2Jjb3JlOiByZWdp
c3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGNwMjEweA0KWyAgIDQyLjU1MzkxNV0gdXNi
c2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgY3AyMTB4DQpbICAg
NDIuNTUzOTUyXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGN5
cHJlc3NfbTgNClsgICA0Mi41NTM5NzNdIHVzYnNlcmlhbDogVVNCIFNlcmlhbCBzdXBwb3J0
IHJlZ2lzdGVyZWQgZm9yIERlTG9ybWUgRWFydGhtYXRlIFVTQg0KWyAgIDQyLjU1Mzk5NF0g
dXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1cHBvcnQgcmVnaXN0ZXJlZCBmb3IgSElELT5DT00g
UlMyMzIgQWRhcHRlcg0KWyAgIDQyLjU1NDAxOF0gdXNic2VyaWFsOiBVU0IgU2VyaWFsIHN1
cHBvcnQgcmVnaXN0ZXJlZCBmb3IgTm9raWEgQ0EtNDIgVjIgQWRhcHRlcg0KWyAgIDQyLjU1
NDA0N10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBtb3M3NzIw
DQpbICAgNDIuNTU0MDY3XSB1c2JzZXJpYWw6IFVTQiBTZXJpYWwgc3VwcG9ydCByZWdpc3Rl
cmVkIGZvciBNb3NjaGlwIDIgcG9ydCBhZGFwdGVyDQpbICAgNDIuNTU0MDk2XSB1c2Jjb3Jl
OiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIG1vczc4NDANClsgICA0Mi41NTQx
MTZdIHVzYnNlcmlhbDogVVNCIFNlcmlhbCBzdXBwb3J0IHJlZ2lzdGVyZWQgZm9yIE1vc2No
aXAgNzg0MC83ODIwIFVTQiBTZXJpYWwgRHJpdmVyDQpbICAgNDIuNTU0MTk4XSBpODA0Mjog
UE5QOiBObyBQUy8yIGNvbnRyb2xsZXIgZm91bmQuIFByb2JpbmcgcG9ydHMgZGlyZWN0bHku
DQpbICAgNDIuNTcyNDUzXSBzZXJpbzogaTgwNDIgS0JEIHBvcnQgYXQgMHg2MCwweDY0IGly
cSAxDQpbICAgNDIuNTcyNDg2XSBzZXJpbzogaTgwNDIgQVVYIHBvcnQgYXQgMHg2MCwweDY0
IGlycSAxMg0KWyAgIDQyLjU3Mjk1NV0gbW91c2VkZXY6IFBTLzIgbW91c2UgZGV2aWNlIGNv
bW1vbiBmb3IgYWxsIG1pY2UNClsgICA0Mi41NzM2NzJdIHJ0Y19jbW9zIDAwOjAyOiBSVEMg
Y2FuIHdha2UgZnJvbSBTNA0KWyAgIDQyLjU3NDEzMF0gcnRjX2Ntb3MgMDA6MDI6IHJ0YyBj
b3JlOiByZWdpc3RlcmVkIHJ0Y19jbW9zIGFzIHJ0YzANClsgICA0Mi41NzQxODNdIHJ0Y19j
bW9zIDAwOjAyOiBhbGFybXMgdXAgdG8gb25lIG1vbnRoLCB5M2ssIDExNCBieXRlcyBudnJh
bQ0KWyAgIDQyLjU3NDQ1M10gQUNQSSBXYXJuaW5nOiBTeXN0ZW1JTyByYW5nZSAweDAwMDAw
MDAwMDAwMDBiMDAtMHgwMDAwMDAwMDAwMDAwYjA3IGNvbmZsaWN0cyB3aXRoIE9wUmVnaW9u
IDB4MDAwMDAwMDAwMDAwMGIwMC0weDAwMDAwMDAwMDAwMDBiMGYgKFxTT1IxKSAoMjAxNDA3
MjQvdXRhZGRyZXNzLTI1OCkNClsgICA0Mi41NzQ0NTVdIEFDUEk6IFRoaXMgY29uZmxpY3Qg
bWF5IGNhdXNlIHJhbmRvbSBwcm9ibGVtcyBhbmQgc3lzdGVtIGluc3RhYmlsaXR5DQpbICAg
NDIuNTc0NDU1XSBBQ1BJOiBJZiBhbiBBQ1BJIGRyaXZlciBpcyBhdmFpbGFibGUgZm9yIHRo
aXMgZGV2aWNlLCB5b3Ugc2hvdWxkIHVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgZHJp
dmVyDQpbICAgNDIuNTc0NDYxXSBwaWl4NF9zbWJ1cyAwMDAwOjAwOjE0LjA6IFNNQnVzIEhv
c3QgQ29udHJvbGxlciBhdCAweGIwMCwgcmV2aXNpb24gMA0KWyAgIDQyLjU3NDU2Nl0gQUNQ
SSBXYXJuaW5nOiBTeXN0ZW1JTyByYW5nZSAweDAwMDAwMDAwMDAwMDBiMjAtMHgwMDAwMDAw
MDAwMDAwYjI3IGNvbmZsaWN0cyB3aXRoIE9wUmVnaW9uIDB4MDAwMDAwMDAwMDAwMGIyMC0w
eDAwMDAwMDAwMDAwMDBiMmYgKFxTT1IyKSAoMjAxNDA3MjQvdXRhZGRyZXNzLTI1OCkNClsg
ICA0Mi41NzQ1NjddIEFDUEk6IFRoaXMgY29uZmxpY3QgbWF5IGNhdXNlIHJhbmRvbSBwcm9i
bGVtcyBhbmQgc3lzdGVtIGluc3RhYmlsaXR5DQpbICAgNDIuNTc0NTY4XSBBQ1BJOiBJZiBh
biBBQ1BJIGRyaXZlciBpcyBhdmFpbGFibGUgZm9yIHRoaXMgZGV2aWNlLCB5b3Ugc2hvdWxk
IHVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgZHJpdmVyDQpbICAgNDIuNTc0NTcwXSBw
aWl4NF9zbWJ1cyAwMDAwOjAwOjE0LjA6IEF1eGlsaWFyeSBTTUJ1cyBIb3N0IENvbnRyb2xs
ZXIgYXQgMHhiMjANClsgICA0Mi41NzQ5NDBdIGxpcmNfZGV2OiBJUiBSZW1vdGUgQ29udHJv
bCBkcml2ZXIgcmVnaXN0ZXJlZCwgbWFqb3IgMjQ4IA0KWyAgIDQyLjU3NDk1OF0gSVIgTkVD
IHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQNClsgICA0Mi41NzQ5NjFdIElSIFJDNSh4
L3N6KSBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVkDQpbICAgNDIuNTc0OTYzXSBJUiBS
QzYgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZA0KWyAgIDQyLjU3NDk2Nl0gSVIgSlZD
IHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQNClsgICA0Mi41NzQ5NjhdIElSIFNvbnkg
cHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZA0KWyAgIDQyLjU3NDk3MV0gSVIgU0FOWU8g
cHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZA0KWyAgIDQyLjU3NDk3M10gSVIgU2hhcnAg
cHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZA0KWyAgIDQyLjU3NDk3NV0gSVIgTUNFIEtl
eWJvYXJkL21vdXNlIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6ZWQNClsgICA0Mi41NzQ5
NzhdIElSIExJUkMgYnJpZGdlIGhhbmRsZXIgaW5pdGlhbGl6ZWQNClsgICA0Mi41NzQ5ODBd
IElSIFhNUCBwcm90b2NvbCBoYW5kbGVyIGluaXRpYWxpemVkDQpbICAgNDIuNTc0OTgyXSBj
eDI1ODIxOiBkcml2ZXIgdmVyc2lvbiAwLjAuMTA2IGxvYWRlZA0KWyAgIDQyLjU3NTIwMF0g
dXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBwdnJ1c2IyDQpbICAg
NDIuNTc1MjAxXSBwdnJ1c2IyOiBWNEwgaW4tdHJlZSB2ZXJzaW9uOkhhdXBwYXVnZSBXaW5U
Vi1QVlItVVNCMiBNUEVHMiBFbmNvZGVyL1R1bmVyDQpbICAgNDIuNTc1MjAxXSBwdnJ1c2Iy
OiBEZWJ1ZyBtYXNrIGlzIDMxICgweDFmKQ0KWyAgIDQyLjU3NTI4OV0gZjcxODA1ZjogVW5z
dXBwb3J0ZWQgRmludGVrIGRldmljZSwgc2tpcHBpbmcNClsgICA0Mi41NzUzOTZdIGY3MTg4
MmZnOiBGb3VuZCBmNzE4ODllZCBjaGlwIGF0IDB4NjAwLCByZXZpc2lvbiAxNg0KWyAgIDQy
LjU3NTQ0MF0gQUNQSSBXYXJuaW5nOiBTeXN0ZW1JTyByYW5nZSAweDAwMDAwMDAwMDAwMDA2
MDAtMHgwMDAwMDAwMDAwMDAwNjA3IGNvbmZsaWN0cyB3aXRoIE9wUmVnaW9uIDB4MDAwMDAw
MDAwMDAwMDYwNS0weDAwMDAwMDAwMDAwMDA2MDYgKFxITU9SKSAoMjAxNDA3MjQvdXRhZGRy
ZXNzLTI1OCkNClsgICA0Mi41NzU0NDFdIEFDUEk6IFRoaXMgY29uZmxpY3QgbWF5IGNhdXNl
IHJhbmRvbSBwcm9ibGVtcyBhbmQgc3lzdGVtIGluc3RhYmlsaXR5DQpbICAgNDIuNTc1NDQy
XSBBQ1BJOiBJZiBhbiBBQ1BJIGRyaXZlciBpcyBhdmFpbGFibGUgZm9yIHRoaXMgZGV2aWNl
LCB5b3Ugc2hvdWxkIHVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgZHJpdmVyDQpbICAg
NDIuNTc1NTk0XSBmNzE4ODJmZyBmNzE4ODJmZy4xNTM2OiBGYW46IDEgaXMgaW4gZHV0eS1j
eWNsZSBtb2RlDQpbICAgNDIuNTc1NjQzXSBmNzE4ODJmZyBmNzE4ODJmZy4xNTM2OiBGYW46
IDIgaXMgaW4gZHV0eS1jeWNsZSBtb2RlDQpbICAgNDIuNTc1Njg5XSBmNzE4ODJmZyBmNzE4
ODJmZy4xNTM2OiBGYW46IDMgaXMgaW4gZHV0eS1jeWNsZSBtb2RlDQpbICAgNDIuNzA4OTM3
XSBzcDUxMDBfdGNvOiBTUDUxMDAvU0I4MDAgVENPIFdhdGNoRG9nIFRpbWVyIERyaXZlciB2
MC4wNQ0KWyAgIDQyLjcwOTAwNF0gc3A1MTAwX3RjbzogUENJIFJldmlzaW9uIElEOiAweDQx
DQpbICAgNDIuNzA5MDcwXSBzcDUxMDBfdGNvOiBVc2luZyAweGZlZDgwYjAwIGZvciB3YXRj
aGRvZyBNTUlPIGFkZHJlc3MNClsgICA0Mi43MDkxMTNdIHNwNTEwMF90Y286IExhc3QgcmVi
b290IHdhcyBub3QgdHJpZ2dlcmVkIGJ5IHdhdGNoZG9nLg0KWyAgIDQyLjcwOTI2M10gc3A1
MTAwX3RjbzogaW5pdGlhbGl6ZWQgKDB4ZmZmZmM5MDAwMDM3NGIwMCkuIGhlYXJ0YmVhdD02
MCBzZWMgKG5vd2F5b3V0PTApDQpbICAgNDIuNzA5MjY5XSB4ZW5fd2R0OiBYZW4gV2F0Y2hE
b2cgVGltZXIgRHJpdmVyIHYwLjAxDQpbICAgNDIuNzA5MzI3XSB4ZW5fd2R0OiBjYW5ub3Qg
cmVnaXN0ZXIgbWlzY2RldiBvbiBtaW5vcj0xMzAgKC0xNikNClsgICA0Mi43MDkzMzhdIHdk
dDogcHJvYmUgb2Ygd2R0IGZhaWxlZCB3aXRoIGVycm9yIC0xNg0KWyAgIDQyLjcwOTkxN10g
ZGV2aWNlLW1hcHBlcjogaW9jdGw6IDQuMjcuMC1pb2N0bCAoMjAxMy0xMC0zMCkgaW5pdGlh
bGlzZWQ6IGRtLWRldmVsQHJlZGhhdC5jb20NClsgICA0Mi43MTAyMzJdIGRldmljZS1tYXBw
ZXI6IGNhY2hlLXBvbGljeS1tcTogdmVyc2lvbiAxLjIuMCBsb2FkZWQNClsgICA0Mi43MTAy
MzVdIGRldmljZS1tYXBwZXI6IGNhY2hlIGNsZWFuZXI6IHZlcnNpb24gMS4wLjAgbG9hZGVk
DQpbICAgNDIuNzEwMjM4XSBCbHVldG9vdGg6IFZpcnR1YWwgSENJIGRyaXZlciB2ZXIgMS41
DQpbICAgNDIuNzEwMzUwXSBCbHVldG9vdGg6IEhDSSBVQVJUIGRyaXZlciB2ZXIgMi4yDQpb
ICAgNDIuNzEwMzUyXSBCbHVldG9vdGg6IEhDSSBINCBwcm90b2NvbCBpbml0aWFsaXplZA0K
WyAgIDQyLjcxMDM1M10gQmx1ZXRvb3RoOiBIQ0kgQkNTUCBwcm90b2NvbCBpbml0aWFsaXpl
ZA0KWyAgIDQyLjcxMDM1M10gQmx1ZXRvb3RoOiBIQ0lMTCBwcm90b2NvbCBpbml0aWFsaXpl
ZA0KWyAgIDQyLjcxMDM1NF0gQmx1ZXRvb3RoOiBIQ0lBVEgzSyBwcm90b2NvbCBpbml0aWFs
aXplZA0KWyAgIDQyLjcxMDM1NV0gQmx1ZXRvb3RoOiBIQ0kgVGhyZWUtd2lyZSBVQVJUIChI
NSkgcHJvdG9jb2wgaW5pdGlhbGl6ZWQNClsgICA0Mi43MTAzOTNdIHVzYmNvcmU6IHJlZ2lz
dGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgYmNtMjAzeA0KWyAgIDQyLjcxMDQyOV0gdXNi
Y29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBicGExMHgNClsgICA0Mi43
MTA0NjFdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgYmZ1c2IN
ClsgICA0Mi43MTA0OTddIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2
ZXIgYnR1c2INClsgICA0Mi43MTA1MzNdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVy
ZmFjZSBkcml2ZXIgYXRoM2sNClsgICA0Mi43MTEyNjZdIGhpZHJhdzogcmF3IEhJRCBldmVu
dHMgZHJpdmVyIChDKSBKaXJpIEtvc2luYQ0KWyAgIDQyLjcxMTU1MV0gdXNiY29yZTogcmVn
aXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JoaWQNClsgICA0Mi43MTE1NTJdIHVz
YmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcg0KWyAgIDQyLjcxMzIzMF0geGVuOiByZWdpc3Rl
cmluZyBnc2kgMTYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDENClsgICA0Mi43MTMyMzNdIEFs
cmVhZHkgc2V0dXAgdGhlIEdTSSA6MTYNClsgICA0Mi43MTM1NDRdIHhlbjogcmVnaXN0ZXJp
bmcgZ3NpIDI1IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxDQpbICAgNDIuNzEzNTU3XSB4ZW46
IC0tPiBwaXJxPTI1IC0+IGlycT0yNSAoZ3NpPTI1KQ0KWyAgIDQyLjc0NDMyM10gdXNiY29y
ZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBzbmQtdXNiLWF1ZGlvDQpbICAg
NDIuNzQ0MzU5XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHNu
ZC11YTEwMQ0KWyAgIDQyLjc0NDM5N10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJm
YWNlIGRyaXZlciBzbmQtdXNiLXVzeDJ5DQpbICAgNDIuNzQ0NDM5XSB1c2Jjb3JlOiByZWdp
c3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHNuZC11c2ItY2FpYXENClsgICA0Mi43NDQ0
NzZdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgc25kLXVzYi02
ZmlyZQ0KWyAgIDQyLjc0NDUyNF0gTmV0ZmlsdGVyIG1lc3NhZ2VzIHZpYSBORVRMSU5LIHYw
LjMwLg0KWyAgIDQyLjc0NDUzMV0gbmZubF9hY2N0OiByZWdpc3RlcmluZyB3aXRoIG5mbmV0
bGluay4NClsgICA0Mi43NDQ1OTFdIG5mX2Nvbm50cmFjayB2ZXJzaW9uIDAuNS4wICgxNjM4
NCBidWNrZXRzLCA2NTUzNiBtYXgpDQpbICAgNDIuNzQ0ODk1XSBjdG5ldGxpbmsgdjAuOTM6
IHJlZ2lzdGVyaW5nIHdpdGggbmZuZXRsaW5rLg0KWyAgIDQyLjc0NTMyMl0geHRfdGltZTog
a2VybmVsIHRpbWV6b25lIGlzIC0wMDAwDQpbICAgNDIuNzQ1MzQzXSBpcF9zZXQ6IHByb3Rv
Y29sIDYNClsgICA0Mi43NDUzNzhdIElQVlM6IFJlZ2lzdGVyZWQgcHJvdG9jb2xzICgpDQpb
ICAgNDIuNzQ1NTA1XSBJUFZTOiBDb25uZWN0aW9uIGhhc2ggdGFibGUgY29uZmlndXJlZCAo
c2l6ZT00MDk2LCBtZW1vcnk9NjRLYnl0ZXMpDQpbICAgNDIuNzQ1NTc3XSBJUFZTOiBDcmVh
dGluZyBuZXRucyBzaXplPTE4MzIgaWQ9MA0KWyAgIDQzLjAxNTQ1NF0gdXNiIDQtNTogbmV3
IGZ1bGwtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyBvaGNpLXBjaQ0KWyAgIDQz
LjQyODY4OF0gSVBWUzogaXB2cyBsb2FkZWQuDQpbICAgNDMuNjM2NTc4XSBpcF90YWJsZXM6
IChDKSAyMDAwLTIwMDYgTmV0ZmlsdGVyIENvcmUgVGVhbQ0KWyAgIDQzLjYzNjY2NV0gVENQ
OiBjdWJpYyByZWdpc3RlcmVkDQpbICAgNDMuNjM3MTM4XSBORVQ6IFJlZ2lzdGVyZWQgcHJv
dG9jb2wgZmFtaWx5IDEwDQpbICAgNDMuNjM3OTE1XSBpcDZfdGFibGVzOiAoQykgMjAwMC0y
MDA2IE5ldGZpbHRlciBDb3JlIFRlYW0NClsgICA0My43NjA4MjNdIHVzYiA0LTU6IE5ldyBV
U0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0wYTEyLCBpZFByb2R1Y3Q9MDAwMQ0KWyAgIDQz
Ljc2MDgzOF0gdXNiIDQtNTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTAsIFByb2R1
Y3Q9MiwgU2VyaWFsTnVtYmVyPTANClsgICA0My43NjA4NDBdIHVzYiA0LTU6IFByb2R1Y3Q6
IEVEUkNsYXNzb25lDQpbICAgNDMuNzk3MzkzXSBzaXQ6IElQdjYgb3ZlciBJUHY0IHR1bm5l
bGluZyBkcml2ZXINClsgICA0My43OTc4ODhdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBm
YW1pbHkgMTcNClsgICA0NC4xMDk1NTNdIEJyaWRnZSBmaXJld2FsbGluZyByZWdpc3RlcmVk
DQpbICAgNDQuMTA5NTgzXSBFYnRhYmxlcyB2Mi4wIHJlZ2lzdGVyZWQNClsgICA0NC4xMDk3
OTFdIEJsdWV0b290aDogUkZDT01NIFRUWSBsYXllciBpbml0aWFsaXplZA0KWyAgIDQ0LjEw
OTc5OF0gQmx1ZXRvb3RoOiBSRkNPTU0gc29ja2V0IGxheWVyIGluaXRpYWxpemVkDQpbICAg
NDQuMTA5ODA4XSBCbHVldG9vdGg6IFJGQ09NTSB2ZXIgMS4xMQ0KWyAgIDQ0LjEwOTgxNl0g
Qmx1ZXRvb3RoOiBCTkVQIChFdGhlcm5ldCBFbXVsYXRpb24pIHZlciAxLjMNClsgICA0NC4x
MDk4MTddIEJsdWV0b290aDogQk5FUCBmaWx0ZXJzOiBwcm90b2NvbCBtdWx0aWNhc3QNClsg
ICA0NC4xMDk4MjBdIEJsdWV0b290aDogQk5FUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQN
ClsgICA0NC4xMDk4MjNdIEJsdWV0b290aDogSElEUCAoSHVtYW4gSW50ZXJmYWNlIEVtdWxh
dGlvbikgdmVyIDEuMg0KWyAgIDQ0LjEwOTgyNV0gQmx1ZXRvb3RoOiBISURQIHNvY2tldCBs
YXllciBpbml0aWFsaXplZA0KWyAgIDQ0LjEwOTkwMF0gS2V5IHR5cGUgY2VwaCByZWdpc3Rl
cmVkDQpbICAgNDQuMTEwMDQ3XSBsaWJjZXBoOiBsb2FkZWQgKG1vbi9vc2QgcHJvdG8gMTUv
MjQpDQpbICAgNDQuMTEwOTE5XSByZWdpc3RlcmVkIHRhc2tzdGF0cyB2ZXJzaW9uIDENClsg
ICA0NC4xMTIzMzBdIEJ0cmZzIGxvYWRlZA0KWyAgIDQ0LjE2NTUyN10gc291bmQgaGRhdWRp
b0MwRDI6IGF1dG9jb25maWc6IGxpbmVfb3V0cz00ICgweDE0LzB4MTUvMHgxNi8weDE3LzB4
MCkgdHlwZTpsaW5lDQpbICAgNDQuMTY1NTI5XSBzb3VuZCBoZGF1ZGlvQzBEMjogICAgc3Bl
YWtlcl9vdXRzPTAgKDB4MC8weDAvMHgwLzB4MC8weDApDQpbICAgNDQuMTY1NTMyXSBzb3Vu
ZCBoZGF1ZGlvQzBEMjogICAgaHBfb3V0cz0xICgweDFiLzB4MC8weDAvMHgwLzB4MCkNClsg
ICA0NC4xNjU1MzNdIHNvdW5kIGhkYXVkaW9DMEQyOiAgICBtb25vOiBtb25vX291dD0weDAN
ClsgICA0NC4xNjU1MzRdIHNvdW5kIGhkYXVkaW9DMEQyOiAgICBkaWctb3V0PTB4MTEvMHgx
ZQ0KWyAgIDQ0LjE2NTUzNV0gc291bmQgaGRhdWRpb0MwRDI6ICAgIGlucHV0czoNClsgICA0
NC4xNjU1MzddIHNvdW5kIGhkYXVkaW9DMEQyOiAgICAgIEZyb250IE1pYz0weDE5DQpbICAg
NDQuMTY1NTM4XSBzb3VuZCBoZGF1ZGlvQzBEMjogICAgICBSZWFyIE1pYz0weDE4DQpbICAg
NDQuMTY1NTM5XSBzb3VuZCBoZGF1ZGlvQzBEMjogICAgICBMaW5lPTB4MWENClsgICA0OC4w
NTMyMzNdIGF0YTI6IFNBVEEgbGluayBkb3duIChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQ0K
WyAgIDQ4LjA1MzMyOF0gY29uc29sZSBbbmV0Y29uMF0gZW5hYmxlZA0KWyAgIDQ4LjA1MzMy
OV0gbmV0Y29uc29sZTogbmV0d29yayBsb2dnaW5nIHN0YXJ0ZWQNClsgICA0OC4wNzM4MDld
IHJ0Y19jbW9zIDAwOjAyOiBzZXR0aW5nIHN5c3RlbSBjbG9jayB0byAyMDE0LTA5LTI1IDEz
OjA5OjE0IFVUQyAoMTQxMTY1MDU1NCkNClsgICA0OC4xMDc0NzVdIEFMU0EgZGV2aWNlIGxp
c3Q6DQpbICAgNDguMTA3NDc2XSAgICMwOiBIREEgQVRJIFNCIGF0IDB4ZmRiZjgwMDAgaXJx
IDE2DQpbICAgNDguMTA3NDc2XSAgICMxOiBIREEgQVRJIEhETUkgYXQgMHhmZTlmYzAwMCBp
cnEgMTI0DQpbICAgNDguMTg4MDQ4XSBhdGE1OiBTQVRBIGxpbmsgZG93biAoU1N0YXR1cyAw
IFNDb250cm9sIDMwMCkNClsgICA0OC4xODgxNjldIGF0YTQ6IFNBVEEgbGluayBkb3duIChT
U3RhdHVzIDAgU0NvbnRyb2wgMzAwKQ0KWyAgIDQ4LjM0NTYwN10gYXRhMzogU0FUQSBsaW5r
IHVwIDMuMCBHYnBzIChTU3RhdHVzIDEyMyBTQ29udHJvbCAzMDApDQpbICAgNDguMzcwMDk2
XSBhdGExOiBTQVRBIGxpbmsgdXAgNi4wIEdicHMgKFNTdGF0dXMgMTMzIFNDb250cm9sIDMw
MCkNClsgICA0OC4zOTUyMjRdIGF0YTMuMDA6IEFUQS04OiBIaXRhY2hpIEhEUzcyMjAyMEFM
QTMzMCwgSktBT0EyME4sIG1heCBVRE1BLzEzMw0KWyAgIDQ4LjQyMjAzNV0gYXRhMy4wMDog
MzkwNzAyOTE2OCBzZWN0b3JzLCBtdWx0aSAwOiBMQkE0OCBOQ1EgKGRlcHRoIDMxLzMyKSwg
QUENClsgICA0OC40NDg1NzNdIGF0YTEuMDA6IEFUQS04OiBIR1NUIEhETjcyNDA0MEFMRTY0
MCwgTUpBT0E1RTAsIG1heCBVRE1BLzEzMw0KWyAgIDQ4LjQ3MzQ3Nl0gYXRhMS4wMDogNzgx
NDAzNzE2OCBzZWN0b3JzLCBtdWx0aSAwOiBMQkE0OCBOQ1EgKGRlcHRoIDMxLzMyKSwgQUEN
ClsgICA0OC41MDAyOTFdIGF0YTMuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTMzDQpbICAg
NDguNTE4MjA0XSBhdGExLjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEzMw0KWyAgIDQ4LjUz
NjM0NV0gc2NzaSAwOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBIR1NUIEhE
TjcyNDA0MEFMIEE1RTAgUFE6IDAgQU5TSTogNQ0KWyAgIDQ4LjU2NjI3Nl0gc2QgMDowOjA6
MDogW3NkYV0gNzgxNDAzNzE2OCA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDQuMDAgVEIv
My42MyBUaUIpDQpbICAgNDguNTY2NTMwXSBzZCAwOjA6MDowOiBBdHRhY2hlZCBzY3NpIGdl
bmVyaWMgc2cwIHR5cGUgMA0KWyAgIDQ4LjU2NzEzMF0gc2NzaSAyOjA6MDowOiBEaXJlY3Qt
QWNjZXNzICAgICBBVEEgICAgICBIaXRhY2hpIEhEUzcyMjAyIEEyME4gUFE6IDAgQU5TSTog
NQ0KWyAgIDQ4LjU2NzYyN10gc2QgMjowOjA6MDogW3NkYl0gMzkwNzAyOTE2OCA1MTItYnl0
ZSBsb2dpY2FsIGJsb2NrczogKDIuMDAgVEIvMS44MSBUaUIpDQpbICAgNDguNTY3NjkxXSBz
ZCAyOjA6MDowOiBbc2RiXSBXcml0ZSBQcm90ZWN0IGlzIG9mZg0KWyAgIDQ4LjU2NzY5M10g
c2QgMjowOjA6MDogW3NkYl0gTW9kZSBTZW5zZTogMDAgM2EgMDAgMDANClsgICA0OC41Njc3
MTJdIHNkIDI6MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzEgdHlwZSAwDQpbICAg
NDguNTY3NzE5XSBzZCAyOjA6MDowOiBbc2RiXSBXcml0ZSBjYWNoZTogZW5hYmxlZCwgcmVh
ZCBjYWNoZTogZW5hYmxlZCwgZG9lc24ndCBzdXBwb3J0IERQTyBvciBGVUENClsgICA0OC41
NzcwMjJdICBzZGI6IHNkYjENClsgICA0OC41Nzc5MTFdIHNkIDI6MDowOjA6IFtzZGJdIEF0
dGFjaGVkIFNDU0kgZGlzaw0KWyAgIDQ4Ljc5NTQxOF0gc2QgMDowOjA6MDogW3NkYV0gNDA5
Ni1ieXRlIHBoeXNpY2FsIGJsb2Nrcw0KWyAgIDQ4LjgxNjA0NV0gc2QgMDowOjA6MDogW3Nk
YV0gV3JpdGUgUHJvdGVjdCBpcyBvZmYNClsgICA0OC44MzUyOThdIHNkIDA6MDowOjA6IFtz
ZGFdIE1vZGUgU2Vuc2U6IDAwIDNhIDAwIDAwDQpbICAgNDguODU1MjcyXSBzZCAwOjA6MDow
OiBbc2RhXSBXcml0ZSBjYWNoZTogZW5hYmxlZCwgcmVhZCBjYWNoZTogZW5hYmxlZCwgZG9l
c24ndCBzdXBwb3J0IERQTyBvciBGVUENClsgICA0OC45NTMyMDRdICBzZGE6IHNkYTEgc2Rh
MiBzZGEzIHNkYTQNClsgICA0OC45NzMzNDFdIHNkIDA6MDowOjA6IFtzZGFdIEF0dGFjaGVk
IFNDU0kgZGlzaw0KWyAgIDQ4Ljk5NDM3NV0gRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9y
eTogMTEwMEsgKGZmZmZmZmZmODIzMGIwMDAgLSBmZmZmZmZmZjgyNDFlMDAwKQ0KWyAgIDQ5
LjAyMjk0M10gV3JpdGUgcHJvdGVjdGluZyB0aGUga2VybmVsIHJlYWQtb25seSBkYXRhOiAx
ODQzMmsNClsgICA0OS4wNTUwNzldIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6IDQ0
NEsgKGZmZmY4ODAwMDFiOTEwMDAgLSBmZmZmODgwMDAxYzAwMDAwKQ0KWyAgIDQ5LjA4NDgx
OV0gRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9yeTogMTY1MksgKGZmZmY4ODAwMDIwNjMw
MDAgLSBmZmZmODgwMDAyMjAwMDAwKQ0KWyAgIDQ5LjE2MTE2MV0gdWRldmRbMTU5MV06IHN0
YXJ0aW5nIHZlcnNpb24gMTc1DQpbICAgNTAuMDI5OTUxXSBFWFQ0LWZzIChkbS0wKTogbW91
bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9wdHM6IChudWxsKQ0K
WyAgIDUyLjc2NTgwOV0gdWRldmRbMTk3MF06IHN0YXJ0aW5nIHZlcnNpb24gMTc1DQpbICAg
NTUuNzU2MDQwXSBFWFQ0LWZzIChkbS0wKTogcmUtbW91bnRlZC4gT3B0czogKG51bGwpDQpb
ICAgNjguMTkwNzAzXSBFWFQ0LWZzIChkbS0wKTogcmUtbW91bnRlZC4gT3B0czogYmFycmll
cj0xLGVycm9ycz1yZW1vdW50LXJvDQpbICAgNzIuNDgwMjU3XSBBZGRpbmcgMjA5NzE0OGsg
c3dhcCBvbiAvZGV2L21hcHBlci9zZXJ2ZWVyc3RlcnRqZS1zd2FwLiAgUHJpb3JpdHk6LTEg
ZXh0ZW50czoxIGFjcm9zczoyMDk3MTQ4ayANClsgICA3OC4wMzk4NTddIEVYVDQtZnMgKHNk
YTEpOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gT3B0czog
YmFycmllcj0xLGVycm9ycz1yZW1vdW50LXJvDQpbICAgODAuMDgzNTUyXSByODE2OSAwMDAw
OjBkOjAwLjAgZXRoMDogbGluayBkb3duDQpbICAgODAuMDgzNjUxXSByODE2OSAwMDAwOjBk
OjAwLjAgZXRoMDogbGluayBkb3duDQpbICAgODAuMTI0MjMyXSBJUHY2OiBBRERSQ09ORihO
RVRERVZfVVApOiBldGgwOiBsaW5rIGlzIG5vdCByZWFkeQ0KWyAgIDgwLjc0MzUwM10gcjgx
NjkgMDAwMDowYzowMC4wIGV0aDE6IGxpbmsgZG93bg0KWyAgIDgwLjc0MzU2OF0gcjgxNjkg
MDAwMDowYzowMC4wIGV0aDE6IGxpbmsgZG93bg0KWyAgIDgwLjc4MzQyMF0gSVB2NjogQURE
UkNPTkYoTkVUREVWX1VQKTogZXRoMTogbGluayBpcyBub3QgcmVhZHkNClsgICA4MS44NTA1
MThdIHI4MTY5IDAwMDA6MGQ6MDAuMCBldGgwOiBsaW5rIHVwDQpbICAgODEuODcxNjk3XSBJ
UHY2OiBBRERSQ09ORihORVRERVZfQ0hBTkdFKTogZXRoMDogbGluayBiZWNvbWVzIHJlYWR5
DQpbICAgODIuOTEzMDc5XSByODE2OSAwMDAwOjBjOjAwLjAgZXRoMTogbGluayB1cA0KWyAg
IDgyLjkzNDIzN10gSVB2NjogQUREUkNPTkYoTkVUREVWX0NIQU5HRSk6IGV0aDE6IGxpbmsg
YmVjb21lcyByZWFkeQ0KWyAgMTIzLjM5MDQ5NF0gRVhUNC1mcyAoZG0tMik6IG1vdW50ZWQg
ZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBPcHRzOiBiYXJyaWVyPTEsZXJy
b3JzPXJlbW91bnQtcm8NClsgIDEzMy44NjU4ODBdIEVYVDQtZnMgKGRtLTQ4KTogbW91bnRl
ZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9wdHM6IGJhcnJpZXI9MSxl
cnJvcnM9cmVtb3VudC1ybw0KWyAgMTQzLjM1MzgxNl0gRVhUNC1mcyAoZG0tNDcpOiBtb3Vu
dGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gT3B0czogYmFycmllcj0x
LGVycm9ycz1yZW1vdW50LXJvDQpbICAxNTMuMTIzNTA4XSBFWFQ0LWZzIChkbS00Nik6IG1v
dW50ZWQgZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBPcHRzOiBiYXJyaWVy
PTEsZXJyb3JzPXJlbW91bnQtcm8NClsgIDE4My45MDcxMDRdIEVYVDQtZnMgKGRtLTQzKTog
bW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9wdHM6IGJhcnJp
ZXI9MSxlcnJvcnM9cmVtb3VudC1ybw0KWyAgMTk2LjkyNDc2MV0gRVhUNC1mcyAoZG0tNDUp
OiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gT3B0czogYmFy
cmllcj0xLGVycm9ycz1yZW1vdW50LXJvDQpbICAyMTYuMzcxNDM2XSBFWFQ0LWZzIChkbS00
NCk6IG1vdW50ZWQgZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBPcHRzOiBi
YXJyaWVyPTEsZXJyb3JzPXJlbW91bnQtcm8NClsgIDMwOS45MDEwNTBdIEVYVDQtZnMgKHNk
YjEpOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gT3B0czog
YmFycmllcj0xLGVycm9ycz1yZW1vdW50LXJvDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTow
My42MjVdIElSUSBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjAzLjYz
OF0gICAgSVJROiAgIDAgYWZmaW5pdHk6MDEgdmVjOmYwIHR5cGU9SU8tQVBJQy1lZGdlICAg
IHN0YXR1cz0wMDAwMDAwMCB0aW1lcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mjk6MDMuNjY5XSAgICBJUlE6ICAgMSBhZmZpbml0eTowMSB2ZWM6MzAgdHlwZT1JTy1B
UElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDM0IGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6
ICAxKC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowMy43MDRdICAgIElSUTogICAz
IGFmZmluaXR5OjAxIHZlYzozOCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAw
MDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowMy43MzVdICAg
IElSUTogICA0IGFmZmluaXR5OjAxIHZlYzpmMSB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0
dXM9MDAwMDAwMDAgbnMxNjU1MF9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mjk6MDMuNzY2XSAgICBJUlE6ICAgNSBhZmZpbml0eTowMSB2ZWM6NDAgdHlwZT1JTy1BUElD
LWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mjk6MDMuNzk3XSAgICBJUlE6ICAgNiBhZmZpbml0eTowMSB2ZWM6NDggdHlw
ZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDMuODI3XSAgICBJUlE6ICAgNyBhZmZpbml0eTowMSB2
ZWM6NTAgdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5i
b3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDMuODU4XSAgICBJUlE6ICAgOCBhZmZp
bml0eTowMSB2ZWM6NTggdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDMwIGlu
LWZsaWdodD0wIGRvbWFpbi1saXN0PTA6ICA4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTowMy44OTNdICAgIElSUTogICA5IGFmZmluaXR5OjNmIHZlYzo2MCB0eXBlPUlPLUFQ
SUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTowMy45MjRdICAgIElSUTogIDEwIGFmZmluaXR5OjAxIHZlYzo2OCB0
eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowMy45NTRdICAgIElSUTogIDExIGFmZmluaXR5OjAx
IHZlYzo3MCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowMy45ODRdICAgIElSUTogIDEyIGFm
ZmluaXR5OjAxIHZlYzo3OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMzAg
aW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogMTIoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA0LjAyMF0gICAgSVJROiAgMTMgYWZmaW5pdHk6M2YgdmVjOjg4IHR5cGU9SU8t
QVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjA0LjA1MV0gICAgSVJROiAgMTQgYWZmaW5pdHk6MDEgdmVjOjkw
IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjA4MV0gICAgSVJROiAgMTUgYWZmaW5pdHk6
MDEgdmVjOjk4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjExMV0gICAgSVJROiAgMTYg
YWZmaW5pdHk6MDEgdmVjOjg5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAz
MCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOiAxNigtLS0pLA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDQuMTQ3XSAgICBJUlE6ICAxNyBhZmZpbml0eTowMSB2ZWM6YzAgdHlwZT1J
Ty1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0
PTA6IDE3KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC4xODNdICAgIElSUTog
IDE4IGFmZmluaXR5OjAxIHZlYzpiOCB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAw
MDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogMTgoLS0tKSwNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA0LjIxOF0gICAgSVJROiAgMTkgYWZmaW5pdHk6M2YgdmVjOjJhIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjI0OV0gICAgSVJROiAgMjIgYWZmaW5pdHk6M2Yg
dmVjOmI5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjI3OV0gICAgSVJROiAgMjUgYWZm
aW5pdHk6M2YgdmVjOjlhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjMwOV0gICAgSVJR
OiAgMjggYWZmaW5pdHk6M2YgdmVjOjIyIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjM0
MF0gICAgSVJROiAgMjkgYWZmaW5pdHk6M2YgdmVjOmQ5IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjA0LjM3MF0gICAgSVJROiAgMzIgYWZmaW5pdHk6M2YgdmVjOmM5IHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA0LjQwMV0gICAgSVJROiAgMzMgYWZmaW5pdHk6M2YgdmVjOmMxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjQzMV0gICAgSVJROiAgMzYgYWZmaW5pdHk6M2Yg
dmVjOjIxIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjQ2Ml0gICAgSVJROiAgMzcgYWZm
aW5pdHk6M2YgdmVjOjI5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjQ5Ml0gICAgSVJR
OiAgMzggYWZmaW5pdHk6M2YgdmVjOmE5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjUy
Ml0gICAgSVJROiAgNDAgYWZmaW5pdHk6M2YgdmVjOjMxIHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjA0LjU1M10gICAgSVJROiAgNDYgYWZmaW5pdHk6M2YgdmVjOjcyIHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA0LjU4M10gICAgSVJROiAgNDcgYWZmaW5pdHk6M2YgdmVjOmQxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjYxNF0gICAgSVJROiAgNDggYWZmaW5pdHk6M2Yg
dmVjOmQwIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjY0NF0gICAgSVJROiAgNTEgYWZm
aW5pdHk6M2YgdmVjOjhhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0LjY3NV0gICAgSVJR
OiAgNTIgYWZmaW5pdHk6M2YgdmVjOjM5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA0Ljcw
NV0gICAgSVJROiAgNTMgYWZmaW5pdHk6M2YgdmVjOmM4IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjA0LjczNV0gICAgSVJROiAgNTQgYWZmaW5pdHk6M2YgdmVjOmQ4IHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA0Ljc2Nl0gICAgSVJROiAgNTYgYWZmaW5pdHk6MDEgdmVjOjI4IHR5
cGU9QU1ELUlPTU1VLU1TSSAgIHN0YXR1cz0wMDAwMDAwMCBpb21tdV9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC43OTldICAgIElSUTogIDU3IGFm
ZmluaXR5OjEwIHZlYzphMCB0eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAg
aHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC44
MzJdICAgIElSUTogIDU4IGFmZmluaXR5OjAyIHZlYzphOCB0eXBlPUhQRVQtTVNJICAgICAg
ICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTowNC44NjRdICAgIElSUTogIDU5IGFmZmluaXR5OjA0IHZlYzpiMCB0
eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC44OTddICAgIElSUTogIDYwIGFm
ZmluaXR5OjNmIHZlYzo0MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC45MjddICAgIElS
UTogIDYxIGFmZmluaXR5OjNmIHZlYzo0OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNC45
NThdICAgIElSUTogIDYyIGFmZmluaXR5OjNmIHZlYzo1MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTowNC45ODhdICAgIElSUTogIDYzIGFmZmluaXR5OjNmIHZlYzo1OSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTowNS4wMTldICAgIElSUTogIDY0IGFmZmluaXR5OjNmIHZlYzo2MSB0
eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4wNDldICAgIElSUTogIDY1IGFmZmluaXR5OjNm
IHZlYzo2OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4wODBdICAgIElSUTogIDY2IGFm
ZmluaXR5OjNmIHZlYzo3MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4xMTBdICAgIElS
UTogIDY3IGFmZmluaXR5OjNmIHZlYzo3OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4x
NDBdICAgIElSUTogIDY4IGFmZmluaXR5OjNmIHZlYzo4MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTowNS4xNzFdICAgIElSUTogIDY5IGFmZmluaXR5OjNmIHZlYzo5MSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTowNS4yMDFdICAgIElSUTogIDcwIGFmZmluaXR5OjNmIHZlYzo5OSB0
eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4yMzJdICAgIElSUTogIDcxIGFmZmluaXR5OjNm
IHZlYzphMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4yNjJdICAgIElSUTogIDcyIGFm
ZmluaXR5OjNmIHZlYzpiMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS4yOTNdICAgIElS
UTogIDczIGFmZmluaXR5OjAxIHZlYzozMiB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMTAgaW4tZmxpZ2h0PTEgZG9tYWluLWxpc3Q9MDoyOTEoUC1NKSwNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjA1LjMyOF0gICAgSVJROiAgNzQgYWZmaW5pdHk6MDEgdmVjOjNh
IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21h
aW4tbGlzdD0wOjI5MigtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuMzY0XSAg
ICBJUlE6ICA3NSBhZmZpbml0eTowMSB2ZWM6NDIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3Rh
dHVzPTAwMDAwMDEwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6MjkzKC0tLSksDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzoyOTowNS4zOTldICAgIElSUTogIDc2IGFmZmluaXR5OjAxIHZl
Yzo0YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAg
ZG9tYWluLWxpc3Q9MDoyOTQoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA1LjQz
NV0gICAgSVJROiAgNzcgYWZmaW5pdHk6MDEgdmVjOjUyIHR5cGU9UENJLU1TSSAgICAgICAg
IHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5NSgtLS0pLA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuNDcxXSAgICBJUlE6ICA3OCBhZmZpbml0eTow
MSB2ZWM6NWEgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdo
dD0wIGRvbWFpbi1saXN0PTA6Mjk2KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTow
NS41MDZdICAgIElSUTogIDc5IGFmZmluaXR5OjNmIHZlYzo2MiB0eXBlPVBDSS1NU0kgICAg
ICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzoyOTowNS41MzddICAgIElSUTogIDgwIGFmZmluaXR5OjNmIHZlYzo2YSB0eXBlPVBD
SS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTowNS41NjddICAgIElSUTogIDgxIGFmZmluaXR5OjAxIHZlYzo3
YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9t
YWluLWxpc3Q9MDoyOTAoUC0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA1LjYwM10g
ICAgSVJROiAgODIgYWZmaW5pdHk6MDEgdmVjOjkyIHR5cGU9UENJLU1TSSAgICAgICAgIHN0
YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI4OShQLS0pLA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuNjM4XSAgICBJUlE6ICA4MyBhZmZpbml0eTowMSB2
ZWM6YTIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0w
IGRvbWFpbi1saXN0PTA6Mjg4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS42
NzRdIERpcmVjdCB2ZWN0b3IgaW5mb3JtYXRpb246DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTowNS42OTBdICAgIDB4MjAgLT4gaXJxX21vdmVfY2xlYW51cF9pbnRlcnJ1cHQoKQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuNzA5XSAgICAweGY5IC0+IHBtdV9hcGljX2ludGVy
cnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNS43MjVdICAgIDB4ZmEgLT4gYXBp
Y190aW1lcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuNzQzXSAg
ICAweGZiIC0+IGNhbGxfZnVuY3Rpb25faW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA1Ljc2MV0gICAgMHhmYyAtPiBldmVudF9jaGVja19pbnRlcnJ1cHQoKQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuNzc5XSAgICAweGZkIC0+IGludmFsaWRhdGVfaW50
ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA1Ljc5Nl0gICAgMHhmZSAtPiBl
cnJvcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuODEyXSAgICAw
eGZmIC0+IHNwdXJpb3VzX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTow
NS44MjldIElPLUFQSUMgaW50ZXJydXB0IGluZm9ybWF0aW9uOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDUuODQ2XSAgICAgSVJRICAwIFZlYzI0MDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA1Ljg1OV0gICAgICAgQXBpYyAweDAwLCBQaW4gIDI6IHZlYz1mMCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuODk1XSAgICAgSVJRICAx
IFZlYyA0ODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA1LjkwOF0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDE6IHZlYz0zMCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDUuOTQ0XSAgICAgSVJRICAzIFZlYyA1NjoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA1Ljk1OF0gICAgICAgQXBpYyAweDAwLCBQaW4gIDM6IHZlYz0zOCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDUuOTkzXSAgICAgSVJRICA0
IFZlYzI0MToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2LjAwN10gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDQ6IHZlYz1mMSBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuMDQyXSAgICAgSVJRICA1IFZlYyA2NDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA2LjA1Nl0gICAgICAgQXBpYyAweDAwLCBQaW4gIDU6IHZlYz00MCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuMDkxXSAgICAgSVJRICA2
IFZlYyA3MjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2LjEwNV0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDY6IHZlYz00OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuMTQxXSAgICAgSVJRICA3IFZlYyA4MDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA2LjE1NF0gICAgICAgQXBpYyAweDAwLCBQaW4gIDc6IHZlYz01MCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuMTkwXSAgICAgSVJRICA4
IFZlYyA4ODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2LjIwM10gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDg6IHZlYz01OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuMjM5XSAgICAgSVJRICA5IFZlYyA5NjoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjA2LjI1Ml0gICAgICAgQXBpYyAweDAwLCBQaW4gIDk6IHZlYz0wMCBkZWxpdmVy
eT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0x
IGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2LjI4OF0gICAgIElSUSAx
MCBWZWMxMDQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi4zMDJdICAgICAgIEFwaWMg
MHgwMCwgUGluIDEwOiB2ZWM9NjggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjA2LjMzN10gICAgIElSUSAxMSBWZWMxMTI6DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzoyOTowNi4zNTFdICAgICAgIEFwaWMgMHgwMCwgUGluIDExOiB2ZWM9NzAgZGVsaXZl
cnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9
MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2LjM4N10gICAgIElSUSAx
MiBWZWMxMjA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi40MDBdICAgICAgIEFwaWMg
MHgwMCwgUGluIDEyOiB2ZWM9NzggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjA2LjQzNl0gICAgIElSUSAxMyBWZWMxMzY6DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzoyOTowNi40NDldICAgICAgIEFwaWMgMHgwMCwgUGluIDEzOiB2ZWM9ODggZGVsaXZl
cnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9
MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi40ODVdICAgICBJUlEg
MTQgVmVjMTQ0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuNDk5XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxNDogdmVjPTkwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTowNi41MzRdICAgICBJUlEgMTUgVmVjMTUyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuNTQ4XSAgICAgICBBcGljIDB4MDAsIFBpbiAxNTogdmVjPTk4IGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi41ODNdICAgICBJUlEg
MTYgVmVjMTM3Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuNTk3XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxNjogdmVjPTg5IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTowNi42MzNdICAgICBJUlEgMTcgVmVjMTkyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuNjQ2XSAgICAgICBBcGljIDB4MDAsIFBpbiAxNzogdmVjPWMwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi42ODJdICAgICBJUlEg
MTggVmVjMTg0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuNjk1XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxODogdmVjPWI4IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTowNi43MzFdICAgICBJUlEgMTkgVmVjIDQyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MDYuNzQ0XSAgICAgICBBcGljIDB4MDAsIFBpbiAxOTogdmVjPTAwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuNzgwXSAgICAgSVJR
IDIyIFZlYzE4NToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2Ljc5NF0gICAgICAgQXBp
YyAweDAwLCBQaW4gMjI6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAg
cG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA2LjgzMF0gICAgIElSUSAyNSBWZWMxNTQ6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTowNi44NDNdICAgICAgIEFwaWMgMHgwMSwgUGluICAxOiB2ZWM9MDAgZGVs
aXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1h
c2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi44NzldICAgICBJ
UlEgMjggVmVjIDM0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDYuODkzXSAgICAgICBB
cGljIDB4MDEsIFBpbiAgNDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9
MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mjk6MDYuOTI4XSAgICAgSVJRIDI5IFZlYzIxNzoNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjA2Ljk0Ml0gICAgICAgQXBpYyAweDAxLCBQaW4gIDU6IHZlYz0wMCBk
ZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwg
bWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA2Ljk3OF0gICAg
IElSUSAzMiBWZWMyMDE6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNi45OTFdICAgICAg
IEFwaWMgMHgwMSwgUGluICA4OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1
cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTowNy4wMjddICAgICBJUlEgMzMgVmVjMTkzOg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mjk6MDcuMDQxXSAgICAgICBBcGljIDB4MDEsIFBpbiAgOTogdmVjPTAw
IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9
TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDcuMDc3XSAg
ICAgSVJRIDM2IFZlYyAzMzoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA3LjA5MF0gICAg
ICAgQXBpYyAweDAxLCBQaW4gMTI6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3Rh
dHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjA3LjEyNl0gICAgIElSUSAzNyBWZWMgNDE6DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTowNy4xNDBdICAgICAgIEFwaWMgMHgwMSwgUGluIDEzOiB2ZWM9
MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJp
Zz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNy4xNzVd
ICAgICBJUlEgMzggVmVjMTY5Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDcuMTg5XSAg
ICAgICBBcGljIDB4MDEsIFBpbiAxNDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDcuMjI1XSAgICAgSVJRIDQwIFZlYyA0OToNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjA3LjIzOF0gICAgICAgQXBpYyAweDAxLCBQaW4gMTY6IHZl
Yz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0
cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA3LjI3
NF0gICAgIElSUSA0NiBWZWMxMTQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNy4yODhd
ICAgICAgIEFwaWMgMHgwMSwgUGluIDIyOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1M
IHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNy4zMjRdICAgICBJUlEgNDcgVmVjMjA5Og0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MDcuMzM3XSAgICAgICBBcGljIDB4MDEsIFBpbiAyMzog
dmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0w
IHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDcu
MzczXSAgICAgSVJRIDQ4IFZlYzIwODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA3LjM4
N10gICAgICAgQXBpYyAweDAxLCBQaW4gMjQ6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0
PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA3LjQyMl0gICAgIElSUSA1MSBWZWMxMzg6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowNy40MzZdICAgICAgIEFwaWMgMHgwMSwgUGluIDI3
OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJy
PTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTow
Ny40NzJdICAgICBJUlEgNTIgVmVjIDU3Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDcu
NDg1XSAgICAgICBBcGljIDB4MDEsIFBpbiAyODogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRl
c3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2
Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MDcuNTIxXSAgICAgSVJRIDUzIFZlYzIwMDoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjA3LjUzNV0gICAgICAgQXBpYyAweDAxLCBQaW4g
Mjk6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBp
cnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5
OjA3LjU3MV0gICAgIElSUSA1NCBWZWMyMTY6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTow
Ny41ODRdICAgICAgIEFwaWMgMHgwMSwgUGluIDMwOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQg
ZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lk
OjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTowOS44NTddICdJJyBwcmVzc2VkIC0+IGR1
bXBpbmcgSFZNIGlycSBpbmZvDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOC45MjBdID09
PT0gUENJIGRldmljZXMgPT09PQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTguOTM1XSA9
PT09IHNlZ21lbnQgMDAwMCA9PT09DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOC45NDld
IDAwMDA6MGY6MDAuMSAtIGRvbSAwICAgLSBNU0lzIDwgODMgPg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MTguOTY3XSAwMDAwOjBmOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE4Ljk4NV0gMDAwMDowZTowMC4xIC0gZG9tIDAgICAt
IE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS4wMDJdIDAwMDA6MGU6MDAu
MCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuMDIw
XSAwMDAwOjBkOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8IDgxID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjE5LjAzOF0gMDAwMDowYzowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA4MiA+
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS4wNTZdIDAwMDA6MGI6MDAuMCAtIGRvbSAw
ICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuMDc0XSAwMDAwOjBh
OjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5
LjA5MV0gMDAwMDowOTowMC4xIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOToxOS4xMDhdIDAwMDA6MDk6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuMTI2XSAwMDAwOjA4OjAwLjAgLSBkb20gMCAg
IC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjE0M10gMDAwMDowNzow
MC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS4x
NjFdIDAwMDA6MDY6MDIuMCAtIGRvbSAwICAgLSBNU0lzIDwgNzIgPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mjk6MTkuMTc5XSAwMDAwOjA2OjAxLjAgLSBkb20gMCAgIC0gTVNJcyA8IDcx
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjE5N10gMDAwMDowNTowMC4wIC0gZG9t
IDAgICAtIE1TSXMgPCA3MCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS4yMTVdIDAw
MDA6MDQ6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mjk6MTkuMjMzXSAwMDAwOjAzOjA2LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjE5LjI1MF0gMDAwMDowMDoxOC40IC0gZG9tIDAgICAtIE1TSXMg
PCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS4yNjddIDAwMDA6MDA6MTguMyAtIGRv
bSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuMjg1XSAwMDAw
OjAwOjE4LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5
OjE5LjMwMl0gMDAwMDowMDoxOC4xIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOToxOS4zMjBdIDAwMDA6MDA6MTguMCAtIGRvbSAwICAgLSBNU0lzIDwg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuMzM3XSAwMDAwOjAwOjE2LjIgLSBkb20g
MCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjM1NV0gMDAwMDow
MDoxNi4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTox
OS4zNzJdIDAwMDA6MDA6MTUuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjkgPg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mjk6MTkuMzkwXSAwMDAwOjAwOjE0LjUgLSBkb20gMCAgIC0gTVNJcyA8
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjQwOF0gMDAwMDowMDoxNC40IC0gZG9t
IDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS40MjVdIDAwMDA6
MDA6MTQuMyAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6
MTkuNDQyXSAwMDAwOjAwOjE0LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjE5LjQ2MF0gMDAwMDowMDoxNC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS40NzddIDAwMDA6MDA6MTMuMiAtIGRvbSAw
ICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuNDk1XSAwMDAwOjAw
OjEzLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5
LjUxMl0gMDAwMDowMDoxMi4yIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOToxOS41MzBdIDAwMDA6MDA6MTIuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MTkuNTQ3XSAwMDAwOjAwOjExLjAgLSBkb20gMCAg
IC0gTVNJcyA8IDczID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjU2NV0gMDAwMDow
MDowZC4wIC0gZG9tIDAgICAtIE1TSXMgPCA2OCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OToxOS41ODNdIDAwMDA6MDA6MGMuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjcgPg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mjk6MTkuNjAyXSAwMDAwOjAwOjBiLjAgLSBkb20gMCAgIC0gTVNJ
cyA8IDY2ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjYyMF0gMDAwMDowMDowYS4w
IC0gZG9tIDAgICAtIE1TSXMgPCA2NSA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS42
MzhdIDAwMDA6MDA6MDkuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjQgPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mjk6MTkuNjU2XSAwMDAwOjAwOjA2LjAgLSBkb20gMCAgIC0gTVNJcyA8IDYz
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjY3NF0gMDAwMDowMDowNS4wIC0gZG9t
IDAgICAtIE1TSXMgPCA2MiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS42OTNdIDAw
MDA6MDA6MDMuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjEgPg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mjk6MTkuNzExXSAwMDAwOjAwOjAyLjAgLSBkb20gMCAgIC0gTVNJcyA8IDYwID4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjE5LjcyOV0gMDAwMDowMDowMC4wIC0gZG9tIDAgICAt
IE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToxOS43NDZdIDAwMDA6MDA6MDAu
MiAtIGRvbSAzMjc1NCAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToyNC41
MjJdIE1TSSBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0LjUzNV0g
IE1TSSAgICAgNTYgdmVjPTI4IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBk
ZXN0PTAwMDAwMDAxIG1hc2s9MC8wLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0LjU2
NF0gIEhQRVQgICAgNTcgdmVjPWEwIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2Vz
dCBkZXN0PTAwMDAwMDEwIG1hc2s9MS8wLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0
LjU5M10gIEhQRVQgICAgNTggdmVjPWE4IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxv
d2VzdCBkZXN0PTAwMDAwMDAyIG1hc2s9MS8wLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5
OjI0LjYyMl0gIEhQRVQgICAgNTkgdmVjPWIwIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9n
IGxvd2VzdCBkZXN0PTAwMDAwMDA0IG1hc2s9MS8wLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjI0LjY1MV0gIE1TSSAgICAgNjAgdmVjPTQxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAg
bG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjI0LjY4MF0gIE1TSSAgICAgNjEgdmVjPTQ5IGxvd2VzdCAgZWRnZSAgIGFzc2Vy
dCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjI0LjcwOV0gIE1TSSAgICAgNjIgdmVjPTUxIGxvd2VzdCAgZWRnZSAgIGFz
c2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjI0LjczN10gIE1TSSAgICAgNjMgdmVjPTU5IGxvd2VzdCAgZWRnZSAg
IGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjI0Ljc2Nl0gIE1TSSAgICAgNjQgdmVjPTYxIGxvd2VzdCAgZWRn
ZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjI0Ljc5NV0gIE1TSSAgICAgNjUgdmVjPTY5IGxvd2VzdCAg
ZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0LjgyNF0gIE1TSSAgICAgNjYgdmVjPTcxIGxvd2Vz
dCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0Ljg1M10gIE1TSSAgICAgNjcgdmVjPTc5IGxv
d2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8x
Lz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0Ljg4Ml0gIE1TSSAgICAgNjggdmVjPTgx
IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9
MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0LjkxMV0gIE1TSSAgICAgNjkgdmVj
PTkxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1h
c2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0LjkzOV0gIE1TSSAgICAgNzAg
dmVjPTk5IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNm
IG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0Ljk2OF0gIE1TSSAgICAg
NzEgdmVjPWExIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAw
MDNmIG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI0Ljk5N10gIE1TSSAg
ICAgNzIgdmVjPWIxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAw
MDAwMDNmIG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI1LjAyNl0gIE1T
SSAgICAgNzMgdmVjPTMyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0
PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI1LjA1NV0g
IE1TSSAgICAgNzQgdmVjPTNhIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBk
ZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI1LjA4
NF0gIE1TSSAgICAgNzUgdmVjPTQyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2Vz
dCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjI1
LjExM10gIE1TSSAgICAgNzYgdmVjPTRhIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxv
d2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5
OjI1LjE0MV0gIE1TSSAgICAgNzcgdmVjPTUyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9n
IGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjI1LjE3MF0gIE1TSSAgICAgNzggdmVjPTVhIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAg
bG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjI1LjE5OV0gIE1TSSAgICAgNzkgdmVjPTYyIGxvd2VzdCAgZWRnZSAgIGFzc2Vy
dCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjI1LjIyOF0gIE1TSSAgICAgODAgdmVjPTZhIGxvd2VzdCAgZWRnZSAgIGFz
c2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjI1LjI1N10gIE1TSSAgICAgODEgdmVjPTdhIGxvd2VzdCAgZWRnZSAg
IGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjI1LjI4Nl0gIE1TSSAgICAgODIgdmVjPTkyIGxvd2VzdCAgZWRn
ZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjI1LjMxNV0gIE1TSSAgICAgODMgdmVjPWEyIGxvd2VzdCAg
ZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjU1MF0gbnVtYmVyIG9mIE1QIElSUSBzb3VyY2Vz
OiAxNS4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjU2Nl0gbnVtYmVyIG9mIElPLUFQ
SUMgIzYgcmVnaXN0ZXJzOiAyNC4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjU4NF0g
bnVtYmVyIG9mIElPLUFQSUMgIzcgcmVnaXN0ZXJzOiAzMi4NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjMyLjYwMl0gdGVzdGluZyB0aGUgSU8gQVBJQy4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi42MjJdIElPIEFQSUMgIzYuLi4uLi4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjYzNV0gLi4uLiByZWdpc3RlciAjMDA6IDA2
MDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi42NTFdIC4uLi4uLi4gICAgOiBw
aHlzaWNhbCBBUElDIGlkOiAwNg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzIuNjY4XSAu
Li4uLi4uICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6
MzIuNjg1XSAuLi4uLi4uICAgIDogTFRTICAgICAgICAgIDogMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MzIuNzAxXSAuLi4uIHJlZ2lzdGVyICMwMTogMDAxNzgwMjENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjMyLjcxN10gLi4uLi4uLiAgICAgOiBtYXggcmVkaXJlY3Rpb24g
ZW50cmllczogMDAxNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzIuNzM3XSAuLi4uLi4u
ICAgICA6IFBSUSBpbXBsZW1lbnRlZDogMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzIu
NzU0XSAuLi4uLi4uICAgICA6IElPIEFQSUMgdmVyc2lvbjogMDAyMQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mjk6MzIuNzcyXSAuLi4uIHJlZ2lzdGVyICMwMjogMDYwMDAwMDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjMyLjc4OF0gLi4uLi4uLiAgICAgOiBhcmJpdHJhdGlvbjog
MDYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjgwNF0gLi4uLiByZWdpc3RlciAjMDM6
IDNGMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi44MjBdIC4uLi4uLi4gICAg
IDogQm9vdCBEVCAgICA6IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMyLjgzNl0gLi4u
LiBJUlEgcmVkaXJlY3Rpb24gdGFibGU6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi44
NTJdICBOUiBMb2cgUGh5IE1hc2sgVHJpZyBJUlIgUG9sIFN0YXQgRGVzdCBEZWxpIFZlY3Q6
ICAgDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi44NzVdICAwMCAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMi44OTZdICAwMSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi45MTddICAwMiAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIEYwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMi45MzhdICAwMyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDM4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMi45NTldICAwNCAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIEYxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMi45ODBdICAwNSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDQwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4wMDFdICAwNiAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDQ4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4wMjJdICAwNyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDUwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4wNDNdICAwOCAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDU4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4wNjRdICAwOSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4wODVdICAwYSAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDY4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4xMDZdICAwYiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDcwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4xMjddICAwYyAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDc4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4xNDhdICAwZCAwM0YgMEYgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDg4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4xNjldICAwZSAwMDEgMDEgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDkwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4xOTFdICAwZiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg
IDk4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4yMTJdICAxMCAwMDEgMDEgIDAgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDg5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4yMzNdICAxMSAwMDEgMDEgIDAgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IEMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4yNTRdICAxMiAwMDEgMDEgIDAgICAg
MSAgICAxICAgMSAgIDAgICAgMSAgICAwICAgIEI4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4yNzVdICAxMyAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4yOTZdICAxNCAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4zMTddICAxNSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAg
IDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4zMzhdICAxNiAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozMy4zNTldICAxNyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAg
IDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy4zODBdIElPIEFQSUMgIzcuLi4uLi4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMzLjM5M10gLi4uLiByZWdpc3RlciAjMDA6IDA3
MDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy40MDldIC4uLi4uLi4gICAgOiBw
aHlzaWNhbCBBUElDIGlkOiAwNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzMuNDI2XSAu
Li4uLi4uICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6
MzMuNDQzXSAuLi4uLi4uICAgIDogTFRTICAgICAgICAgIDogMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MzMuNDU5XSAuLi4uIHJlZ2lzdGVyICMwMTogMDAxRjgwMjENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjMzLjQ3NV0gLi4uLi4uLiAgICAgOiBtYXggcmVkaXJlY3Rpb24g
ZW50cmllczogMDAxRg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzMuNDk1XSAuLi4uLi4u
ICAgICA6IFBSUSBpbXBsZW1lbnRlZDogMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzMu
NTEyXSAuLi4uLi4uICAgICA6IElPIEFQSUMgdmVyc2lvbjogMDAyMQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mjk6MzMuNTMwXSAuLi4uIHJlZ2lzdGVyICMwMjogMDAwMDAwMDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjMzLjU0Nl0gLi4uLi4uLiAgICAgOiBhcmJpdHJhdGlvbjog
MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjMzLjU2Ml0gLi4uLiBJUlEgcmVkaXJlY3Rp
b24gdGFibGU6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy41NzhdICBOUiBMb2cgUGh5
IE1hc2sgVHJpZyBJUlIgUG9sIFN0YXQgRGVzdCBEZWxpIFZlY3Q6ICAgDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy42MDFdICAwMCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy42MjJdICAwMSAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy42NDNdICAwMiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy42NjRdICAwMyAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy42ODVdICAwNCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy43MDZdICAwNSAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy43MjddICAwNiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy43NDhdICAwNyAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy43NjldICAwOCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy43OTBdICAwOSAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy44MTFdICAwYSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy44MzJdICAwYiAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy44NTRdICAwYyAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy44NzVdICAwZCAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy44OTZdICAwZSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy45MTddICAwZiAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy45MzhdICAxMCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozMy45NTldICAxMSAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozMy45ODBdICAxMiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4wMDFdICAxMyAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4wMjJdICAxNCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4wNDNdICAxNSAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4wNjRdICAxNiAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4wODVdICAxNyAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4xMDZdICAxOCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4xMjddICAxOSAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4xNDhdICAxYSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAg
ICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4xNjldICAxYiAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4xOTBdICAxYyAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4yMTJdICAxZCAw
M0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4yMzNdICAxZSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAg
ICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4yNTRdICAxZiAw
MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4yNzVdIFVzaW5nIHZlY3Rvci1iYXNlZCBpbmRleGluZw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuMjkxXSBJUlEgdG8gcGluIG1hcHBpbmdzOg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuMzA1XSBJUlEyNDAgLT4gMDoyDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzoyOTozNC4zMTddIElSUTQ4IC0+IDA6MQ0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mjk6MzQuMzI5XSBJUlE1NiAtPiAwOjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0
LjM0MV0gSVJRMjQxIC0+IDA6NA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuMzUzXSBJ
UlE2NCAtPiAwOjUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjM2NV0gSVJRNzIgLT4g
MDo2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC4zNzddIElSUTgwIC0+IDA6Nw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuMzg5XSBJUlE4OCAtPiAwOjgNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjM0LjQwMV0gSVJROTYgLT4gMDo5DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTozNC40MTNdIElSUTEwNCAtPiAwOjEwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToz
NC40MjVdIElSUTExMiAtPiAwOjExDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC40Mzhd
IElSUTEyMCAtPiAwOjEyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC40NTBdIElSUTEz
NiAtPiAwOjEzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC40NjNdIElSUTE0NCAtPiAw
OjE0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC40NzVdIElSUTE1MiAtPiAwOjE1DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC40ODhdIElSUTEzNyAtPiAwOjE2DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTozNC41MDBdIElSUTE5MiAtPiAwOjE3DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTozNC41MTNdIElSUTE4NCAtPiAwOjE4DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTozNC41MjVdIElSUTQyIC0+IDA6MTkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0
LjUzN10gSVJRMTg1IC0+IDA6MjINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjU1MF0g
SVJRMTU0IC0+IDE6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuNTYyXSBJUlEzNCAt
PiAxOjQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjU3NF0gSVJRMjE3IC0+IDE6NQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuNTg2XSBJUlEyMDEgLT4gMTo4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTozNC41OThdIElSUTE5MyAtPiAxOjkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjI5OjM0LjYxMV0gSVJRMzMgLT4gMToxMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mjk6MzQuNjIzXSBJUlE0MSAtPiAxOjEzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC42
MzVdIElSUTE2OSAtPiAxOjE0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozNC42NDhdIElS
UTQ5IC0+IDE6MTYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjY2MF0gSVJRMTE0IC0+
IDE6MjINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjY3Ml0gSVJRMjA5IC0+IDE6MjMN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM0LjY4NV0gSVJRMjA4IC0+IDE6MjQNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjM0LjY5N10gSVJRMTM4IC0+IDE6MjcNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjM0LjcxMF0gSVJRNTcgLT4gMToyOA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mjk6MzQuNzIyXSBJUlEyMDAgLT4gMToyOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6
MzQuNzM0XSBJUlEyMTYgLT4gMTozMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzQuNzQ3
XSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gZG9uZS4NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjM4LjE0NV0gJ2UnIHByZXNzZWQgLT4gZHVtcGluZyBldmVudC1j
aGFubmVsIGluZm8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjE2NV0gRXZlbnQgY2hh
bm5lbCBpbmZvcm1hdGlvbiBmb3IgZG9tYWluIDA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoy
OTozOC4xODRdIFBvbGxpbmcgdkNQVXM6IHt9DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToz
OC4xOTddICAgICBwb3J0IFtwL20vc10NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjIx
MF0gICAgICAgIDEgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjM4LjIyOV0gICAgICAgIDIgWzEvMS8gIC0gICBdOiBzPTYgbj0wIHg9
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguMjQ2XSAgICAgICAgMyBbMC8wLyAgLSAg
IF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC4yNjRdICAgICAg
ICA0IFswLzAvICAtICAgXTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5
OjM4LjI4Ml0gICAgICAgIDUgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjM4LjMwMV0gICAgICAgIDYgWzAvMC8gIC0gICBdOiBzPTYg
bj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguMzE4XSAgICAgICAgNyBbMC8w
LyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC4zMzZd
ICAgICAgICA4IFswLzAvICAtICAgXTogcz01IG49MSB4PTAgdj0wDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTozOC4zNTVdICAgICAgICA5IFsxLzEvICAtICAgXTogcz02IG49MSB4PTAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjM3Ml0gICAgICAgMTAgWzAvMC8gIC0gICBd
OiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguMzkwXSAgICAgICAx
MSBbMC8wLyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOToz
OC40MDhdICAgICAgIDEyIFswLzAvICAtICAgXTogcz01IG49MSB4PTAgdj0xDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTozOC40MjZdICAgICAgIDEzIFswLzAvICAtICAgXTogcz02IG49
MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjQ0NF0gICAgICAgMTQgWzAvMC8g
IC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguNDYyXSAg
ICAgICAxNSBbMC8wLyAgLSAgIF06IHM9NSBuPTIgeD0wIHY9MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MzguNDgwXSAgICAgICAxNiBbMC8xLyAgLSAgIF06IHM9NiBuPTIgeD0wDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC40OThdICAgICAgIDE3IFswLzAvICAtICAgXTog
cz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjUxNl0gICAgICAgMTgg
WzAvMC8gIC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6Mzgu
NTMzXSAgICAgICAxOSBbMC8wLyAgLSAgIF06IHM9NSBuPTIgeD0wIHY9MQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mjk6MzguNTUyXSAgICAgICAyMCBbMC8wLyAgLSAgIF06IHM9NiBuPTIg
eD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC41NzBdICAgICAgIDIxIFswLzAvICAt
ICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjU4OF0gICAg
ICAgMjIgWzEvMC8gIDAgICBdOiBzPTUgbj0zIHg9MCB2PTANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjI5OjM4LjYwNl0gICAgICAgMjMgWzEvMS8gIC0gICBdOiBzPTYgbj0zIHg9MA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mjk6MzguNjI0XSAgICAgICAyNCBbMC8wLyAgLSAgIF06IHM9
NiBuPTMgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC42NDJdICAgICAgIDI1IFsw
LzAvICAtICAgXTogcz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjY1
OV0gICAgICAgMjYgWzAvMC8gIC0gICBdOiBzPTUgbj0zIHg9MCB2PTENCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjM4LjY3OF0gICAgICAgMjcgWzAvMC8gIC0gICBdOiBzPTYgbj0zIHg9
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguNjk2XSAgICAgICAyOCBbMC8wLyAgLSAg
IF06IHM9NiBuPTMgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC43MTNdICAgICAg
IDI5IFswLzAvICAtICAgXTogcz01IG49NCB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTozOC43MzJdICAgICAgIDMwIFsxLzEvICAtICAgXTogcz02IG49NCB4PTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjI5OjM4Ljc1MF0gICAgICAgMzEgWzAvMC8gIC0gICBdOiBzPTYg
bj00IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguNzY3XSAgICAgICAzMiBbMC8w
LyAgLSAgIF06IHM9NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC43ODVd
ICAgICAgIDMzIFswLzAvICAtICAgXTogcz01IG49NCB4PTAgdj0xDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzoyOTozOC44MDRdICAgICAgIDM0IFswLzAvICAtICAgXTogcz02IG49NCB4PTAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4LjgyMl0gICAgICAgMzUgWzAvMC8gIC0gICBd
OiBzPTYgbj00IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguODM5XSAgICAgICAz
NiBbMC8wLyAgLSAgIF06IHM9NSBuPTUgeD0wIHY9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mjk6MzguODU4XSAgICAgICAzNyBbMC8xLyAgLSAgIF06IHM9NiBuPTUgeD0wDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzoyOTozOC44NzZdICAgICAgIDM4IFswLzAvICAtICAgXTogcz02IG49
NSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4Ljg5M10gICAgICAgMzkgWzAvMC8g
IC0gICBdOiBzPTYgbj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzguOTExXSAg
ICAgICA0MCBbMC8wLyAgLSAgIF06IHM9NSBuPTUgeD0wIHY9MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MzguOTMwXSAgICAgICA0MSBbMC8wLyAgLSAgIF06IHM9NiBuPTUgeD0wDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOC45NDddICAgICAgIDQyIFswLzAvICAtICAgXTog
cz02IG49NSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM4Ljk2NV0gICAgICAgNDMg
WzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTAgcD02MQ0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mjk6MzguOTg1XSAgICAgICA0NCBbMC8wLyAgLSAgIF06IHM9NSBuPTAgeD0wIHY9OQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMDA0XSAgICAgICA0NSBbMC8xLyAgLSAgIF06
IHM9NSBuPTAgeD0wIHY9Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMDIzXSAgICAg
ICA0NiBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjkxIGk9NzMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjI5OjM5LjA0M10gICAgICAgNDcgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9
MCBwPTI5MiBpPTc0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOS4wNjRdICAgICAgIDQ4
IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTMgaT03NQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mjk6MzkuMDg0XSAgICAgICA0OSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9
Mjk0IGk9NzYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM5LjEwNV0gICAgICAgNTAgWzAv
MC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5NSBpPTc3DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzoyOTozOS4xMjVdICAgICAgIDUxIFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTYg
aT03OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMTQ2XSAgICAgICA1MiBbMC8wLyAg
LSAgIF06IHM9NCBuPTAgeD0wIHA9MTcgaT0xNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6
MzkuMTY2XSAgICAgICA1MyBbMS8wLyAgMCAgIF06IHM9NCBuPTAgeD0wIHA9MTggaT0xOA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMTg2XSAgICAgICA1NCBbMC8wLyAgLSAgIF06
IHM9NCBuPTAgeD0wIHA9MTIgaT0xMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMjA3
XSAgICAgICA1NSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MSBpPTENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjM5LjIyNl0gICAgICAgNTYgWzAvMC8gIC0gICBdOiBzPTQgbj0w
IHg9MCBwPTggaT04DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOS4yNDZdICAgICAgIDU3
IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xNiBpPTE2DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzoyOTozOS4yNjZdICAgICAgIDU4IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0y
ODggaT04Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6MzkuMjg3XSAgICAgICA1OSBbMC8w
LyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjkwIGk9ODENCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjI5OjM5LjMwN10gICAgICAgNjAgWzEvMC8gIDUzICBdOiBzPTQgbj0wIHg9MCBwPTI4OSBp
PTgyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoyOTozOS4zMjhdICAgICAgIDYxIFswLzAvICAt
ICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NDMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjI5OjM5
LjM0OF0gICAgICAgNjIgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTMNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjI5OjQ1LjMxN10gKioqKioqKioqKiogVk1DQiBBcmVhcyAqKioqKioq
KioqKioqKg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mjk6NDUuMzM1XSAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0KWyAxMzI1LjQxMDM3OV0gZGV2aWNlIHZpZjEu
MCBlbnRlcmVkIHByb21pc2N1b3VzIG1vZGUNClsgMTMyNS40NDI5MzZdIElQdjY6IEFERFJD
T05GKE5FVERFVl9VUCk6IHZpZjEuMDogbGluayBpcyBub3QgcmVhZHkNClsgMTMyNi4wMTAx
NzldIGRldmljZSB2aWYxLjAtZW11IGVudGVyZWQgcHJvbWlzY3VvdXMgbW9kZQ0KWyAxMzI2
LjA0MjYwN10geGVuX2JyaWRnZTogcG9ydCAyKHZpZjEuMC1lbXUpIGVudGVyZWQgZm9yd2Fy
ZGluZyBzdGF0ZQ0KWyAxMzI2LjA3MTMyNV0geGVuX2JyaWRnZTogcG9ydCAyKHZpZjEuMC1l
bXUpIGVudGVyZWQgZm9yd2FyZGluZyBzdGF0ZQ0KWyAxMzI2LjM1MDQ5MV0gcGNpYmFjayAw
MDAwOjA5OjAwLjA6IHJlc3RvcmluZyBjb25maWcgc3BhY2UgYXQgb2Zmc2V0IDB4NCAod2Fz
IDB4MTAwNDAwLCB3cml0aW5nIDB4MTAwMDAwKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzA6
MzIuODMxXSBpby5jOjI4MDogZDE6IGJpbmQ6IG1fZ3NpPTMyIGdfZ3NpPTM2IGRldj0wMC4w
MC41IGludHg9MA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozMy4yNTddIEhWTSBMb2FkZXIN
CihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzMuMjY4XSBEZXRlY3RlZCBYZW4gdjQuNS11bnN0
YWJsZQ0KWyAxMzI2LjgzMTQyMV0geChkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzMuMjg3XSBY
ZW5idXMgcmluZ3MgQDB4ZmVmZmMwMDAsIGV2ZW50IGNoYW5uZWwgMQ0KZW5fcGNpYmFjazog
dnBjaTogMDAwMDowOTowMC4wOiAoZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjMzLjMxNV0gU3lz
dGVtIHJlcXVlc3RlZCBTZWFCSU9TDQphc3NpZ24gdG8gdmlydHVhKGQxKSBbMjAxNC0wOS0y
NSAxMzozMDozMy4zMzRdIENQVSBzcGVlZCBpcyAzMjAwIE1Ieg0KbCBzbG90IDANCihkMSkg
WzIwMTQtMDktMjUgMTM6MzA6MzMuMzUxXSBSZWxvY2F0aW5nIGd1ZXN0IG1lbW9yeSBmb3Ig
bG93bWVtIE1NSU8gc3BhY2UgZGlzYWJsZWQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMwOjMz
LjM3NF0gaXJxLmM6MjcwOiBEb20xIFBDSSBsaW5rIDAgY2hhbmdlZCAwIC0+IDUNCihkMSkg
WzIwMTQtMDktMjUgMTM6MzA6MzMuMzkzXSBQQ0ktSVNBIGxpbmsgMCByb3V0ZWQgdG8gSVJR
NQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzA6MzMuNDA5XSBpcnEuYzoyNzA6IERvbTEgUENJ
IGxpbmsgMSBjaGFuZ2VkIDAgLT4gMTANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzMuNDI5
XSBQQ0ktSVNBIGxpbmsgMSByb3V0ZWQgdG8gSVJRMTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjMwOjMzLjQ0Nl0gaXJxLmM6MjcwOiBEb20xIFBDSSBsaW5rIDIgY2hhbmdlZCAwIC0+IDEx
DQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjMzLjQ2NV0gUENJLUlTQSBsaW5rIDIgcm91dGVk
IHRvIElSUTExDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMDozMy40ODJdIGlycS5jOjI3MDog
RG9tMSBQQ0kgbGluayAzIGNoYW5nZWQgMCAtPiA1DQooZDEpIFsyMDE0LTA5LTI1IDEzOjMw
OjMzLjUwMV0gUENJLUlTQSBsaW5rIDMgcm91dGVkIHRvIElSUTUNCihkMSkgWzIwMTQtMDkt
MjUgMTM6MzA6MzMuNTM3XSBwY2kgZGV2IDAxOjIgSU5URC0+SVJRNQ0KKGQxKSBbMjAxNC0w
OS0yNSAxMzozMDozMy41NTldIHBjaSBkZXYgMDE6MyBJTlRBLT5JUlExMA0KKGQxKSBbMjAx
NC0wOS0yNSAxMzozMDozMy41ODBdIHBjaSBkZXYgMDI6MCBJTlRBLT5JUlExMQ0KKGQxKSBb
MjAxNC0wOS0yNSAxMzozMDozMy42MTBdIHBjaSBkZXYgMDQ6MCBJTlRBLT5JUlE1DQooZDEp
IFsyMDE0LTA5LTI1IDEzOjMwOjMzLjYzMl0gcGNpIGRldiAwNTowIElOVEEtPklSUTEwDQoo
ZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjMzLjcwMF0gTm8gUkFNIGluIGhpZ2ggbWVtb3J5OyBz
ZXR0aW5nIGhpZ2hfbWVtIHJlc291cmNlIGJhc2UgdG8gMTAwMDAwMDAwDQooZDEpIFsyMDE0
LTA5LTI1IDEzOjMwOjMzLjcyNl0gcGNpIGRldiAwNTowIGJhciAxMCBzaXplIDAxMDAwMDAw
MDogMGUwMDAwMDBjDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMDozMy43NDddIG1lbW9yeV9t
YXA6YWRkOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihkMSkgWzIwMTQt
MDktMjUgMTM6MzA6MzMuOTM0XSBwY2kgZGV2IDAzOjAgYmFyIDEwIHNpemUgMDAyMDAwMDAw
OiAwZjAwMDAwMDgNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzMuOTU1XSBwY2kgZGV2IDAy
OjAgYmFyIDE0IHNpemUgMDAxMDAwMDAwOiAwZjIwMDAwMDgNCihkMSkgWzIwMTQtMDktMjUg
MTM6MzA6MzMuOTc3XSBwY2kgZGV2IDA0OjAgYmFyIDMwIHNpemUgMDAwMDQwMDAwOiAwZjMw
MDAwMDANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzMuOTk4XSBwY2kgZGV2IDA0OjAgYmFy
IDEwIHNpemUgMDAwMDIwMDAwOiAwZjMwNDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMw
OjM0LjAxOV0gbWVtb3J5X21hcDphZGQ6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0y
MA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC4wNDNdIHBjaSBkZXYgMDU6MCBiYXIgMTgg
c2l6ZSAwMDAwMjAwMDA6IDBmMzA2MDAwNA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC4w
NjNdIHBjaSBkZXYgMDU6MCBiYXIgMzAgc2l6ZSAwMDAwMjAwMDA6IDBmMzA4MDAwMA0KKGQx
KSBbMjAxNC0wOS0yNSAxMzozMDozNC4wODRdIHBjaSBkZXYgMDM6MCBiYXIgMzAgc2l6ZSAw
MDAwMTAwMDA6IDBmMzBhMDAwMA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC4xMDVdIHBj
aSBkZXYgMDM6MCBiYXIgMTQgc2l6ZSAwMDAwMDEwMDA6IDBmMzBiMDAwMA0KKGQxKSBbMjAx
NC0wOS0yNSAxMzozMDozNC4xMjZdIHBjaSBkZXYgMDI6MCBiYXIgMTAgc2l6ZSAwMDAwMDAx
MDA6IDAwMDAwYzAwMQ0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC4xNDddIHBjaSBkZXYg
MDU6MCBiYXIgMjAgc2l6ZSAwMDAwMDAxMDA6IDAwMDAwYzEwMQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzA6MzQuMTY4XSBpb3BvcnRfbWFwOmFkZDogZG9tMSBncG9ydD1jMTAwIG1wb3J0
PWEwMDAgbnI9MTAwDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjE5M10gcGNpIGRldiAw
NDowIGJhciAxNCBzaXplIDAwMDAwMDA0MDogMDAwMDBjMjAxDQooZDEpIFsyMDE0LTA5LTI1
IDEzOjMwOjM0LjIxNV0gcGNpIGRldiAwMToyIGJhciAyMCBzaXplIDAwMDAwMDAyMDogMDAw
MDBjMjQxDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjIzN10gcGNpIGRldiAwMToxIGJh
ciAyMCBzaXplIDAwMDAwMDAxMDogMDAwMDBjMjYxDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMw
OjM0LjI1OV0gTXVsdGlwcm9jZXNzb3IgaW5pdGlhbGlzYXRpb246DQooZDEpIFsyMDE0LTA5
LTI1IDEzOjMwOjM0LjI5OV0gIC0gQ1BVMCAuLi4gNDgtYml0IHBoeXMgLi4uIGZpeGVkIE1U
UlJzIC4uLiB2YXIgTVRSUnMgWzEvOF0gLi4uIGRvbmUuDQooZDEpIFsyMDE0LTA5LTI1IDEz
OjMwOjM0LjM1MV0gIC0gQ1BVMSAuLi4gNDgtYml0IHBoeXMgLi4uIGZpeGVkIE1UUlJzIC4u
LiB2YXIgTVRSUnMgWzEvOF0gLi4uIGRvbmUuDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0
LjQwM10gIC0gQ1BVMiAuLi4gNDgtYml0IHBoeXMgLi4uIGZpeGVkIE1UUlJzIC4uLiB2YXIg
TVRSUnMgWzEvOF0gLi4uIGRvbmUuDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjQzMF0g
VGVzdGluZyBIVk0gZW52aXJvbm1lbnQ6DQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjQ1
Ml0gIC0gUkVQIElOU0IgYWNyb3NzIHBhZ2UgYm91bmRhcmllcyAuLi4gcGFzc2VkDQooZDEp
IFsyMDE0LTA5LTI1IDEzOjMwOjM0LjQ3NV0gIC0gR1MgYmFzZSBNU1JzIGFuZCBTV0FQR1Mg
Li4uIHBhc3NlZA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC40OTRdIFBhc3NlZCAyIG9m
IDIgdGVzdHMNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuNTA3XSBXcml0aW5nIFNNQklP
UyB0YWJsZXMgLi4uDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjUyMl0gTG9hZGluZyBT
ZWFCSU9TIC4uLg0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC41MzZdIENyZWF0aW5nIE1Q
IHRhYmxlcyAuLi4NCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuNTUwXSBMb2FkaW5nIEFD
UEkgLi4uDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjU2NF0gdm04NiBUU1MgYXQgZmMw
MGEyMDANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuNTc3XSBCSU9TIG1hcDoNCihkMSkg
WzIwMTQtMDktMjUgMTM6MzA6MzQuNTg4XSAgMTAwMDAtMTAwZDM6IFNjcmF0Y2ggc3BhY2UN
CihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuNjA0XSAgYzAwMDAtZmZmZmY6IE1haW4gQklP
Uw0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC42MTldIEU4MjAgdGFibGU6DQooZDEpIFsy
MDE0LTA5LTI1IDEzOjMwOjM0LjYzMF0gIFswMF06IDAwMDAwMDAwOjAwMDAwMDAwIC0gMDAw
MDAwMDA6MDAwYTAwMDA6IFJBTQ0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNC42NTFdICBI
T0xFOiAwMDAwMDAwMDowMDBhMDAwMCAtIDAwMDAwMDAwOjAwMGMwMDAwDQooZDEpIFsyMDE0
LTA5LTI1IDEzOjMwOjM0LjY3MV0gIFswMV06IDAwMDAwMDAwOjAwMGMwMDAwIC0gMDAwMDAw
MDA6MDAxMDAwMDA6IFJFU0VSVkVEDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjY5NF0g
IFswMl06IDAwMDAwMDAwOjAwMTAwMDAwIC0gMDAwMDAwMDA6M2Y4MDAwMDA6IFJBTQ0KKGQx
KSBbMjAxNC0wOS0yNSAxMzozMDozNC43MTVdICBIT0xFOiAwMDAwMDAwMDozZjgwMDAwMCAt
IDAwMDAwMDAwOmZjMDAwMDAwDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjczNV0gIFsw
M106IDAwMDAwMDAwOmZjMDAwMDAwIC0gMDAwMDAwMDE6MDAwMDAwMDA6IFJFU0VSVkVEDQoo
ZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0Ljc1OF0gSW52b2tpbmcgU2VhQklPUyAuLi4NCihk
MSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuNzc0XSBTZWFCSU9TICh2ZXJzaW9uIHJlbC0xLjcu
NS0wLWdlNTE0ODhjLTIwMTQwOTI1XzExMTAxMC1zZXJ2ZWVyc3RlcnRqZSkNCihkMSkgWzIw
MTQtMDktMjUgMTM6MzA6MzQuODAxXSANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuODA5
XSBGb3VuZCBYZW4gaHlwZXJ2aXNvciBzaWduYXR1cmUgYXQgNDAwMDAwMDANCihkMSkgWzIw
MTQtMDktMjUgMTM6MzA6MzQuODI5XSBSdW5uaW5nIG9uIFFFTVUgKGk0NDBmeCkNCihkMSkg
WzIwMTQtMDktMjUgMTM6MzA6MzQuODQzXSB4ZW46IGNvcHkgZTgyMC4uLg0KKGQxKSBbMjAx
NC0wOS0yNSAxMzozMDozNC44NTZdIFJlbG9jYXRpbmcgaW5pdCBmcm9tIDB4MDAwZGY2Mjkg
dG8gMHgzZjdhZTYwMCAoc2l6ZSA3MTk5NSkNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQu
ODgyXSBDUFUgTWh6PTMyMDENCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuODk5XSBGb3Vu
ZCA5IFBDSSBkZXZpY2VzIChtYXggUENJIGJ1cyBpcyAwMCkNCihkMSkgWzIwMTQtMDktMjUg
MTM6MzA6MzQuOTE4XSBBbGxvY2F0ZWQgWGVuIGh5cGVyY2FsbCBwYWdlIGF0IDNmN2ZmMDAw
DQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM0LjkzN10gRGV0ZWN0ZWQgWGVuIHY0LjUtdW5z
dGFibGUNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuOTUyXSB4ZW46IGNvcHkgQklPUyB0
YWJsZXMuLi4NCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzQuOTY3XSBDb3B5aW5nIFNNQklP
UyBlbnRyeSBwb2ludCBmcm9tIDB4MDAwMTAwMTAgdG8gMHgwMDBmMGY1MA0KKGQxKSBbMjAx
NC0wOS0yNSAxMzozMDozNC45OTBdIENvcHlpbmcgTVBUQUJMRSBmcm9tIDB4ZmMwMDExOTAv
ZmMwMDExYTAgdG8gMHgwMDBmMGU0MA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNS4wMTNd
IENvcHlpbmcgUElSIGZyb20gMHgwMDAxMDAzMCB0byAweDAwMGYwZGMwDQooZDEpIFsyMDE0
LTA5LTI1IDEzOjMwOjM1LjAzMl0gQ29weWluZyBBQ1BJIFJTRFAgZnJvbSAweDAwMDEwMGIw
IHRvIDB4MDAwZjBkOTANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuMDUzXSBVc2luZyBw
bXRpbWVyLCBpb3BvcnQgMHhiMDA4DQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM1LjA2OV0g
U2NhbiBmb3IgVkdBIG9wdGlvbiByb20NCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuMDk3
XSBSdW5uaW5nIG9wdGlvbiByb20gYXQgYzAwMDowMDAzDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozMDozNS4xMjJdIHN0ZHZnYS5jOjE0NzpkMXYwIGVudGVyaW5nIHN0ZHZnYSBhbmQgY2Fj
aGluZyBtb2Rlcw0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNS4xNjhdIHBtbSBjYWxsIGFy
ZzE9MA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNS4xODFdIFR1cm5pbmcgb24gdmdhIHRl
eHQgbW9kZSBjb25zb2xlDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM1LjMwOF0gU2VhQklP
UyAodmVyc2lvbiByZWwtMS43LjUtMC1nZTUxNDg4Yy0yMDE0MDkyNV8xMTEwMTAtc2VydmVl
cnN0ZXJ0amUpDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM1LjM0N10gTWFjaGluZSBVVUlE
IDI2YzBhMDU1LThlOGUtNGRhMy1iNTY5LTZlOWU1NDE4YjZhYQ0KKGQxKSBbMjAxNC0wOS0y
NSAxMzozMDozNS4zNjhdIFVIQ0kgaW5pdCBvbiBkZXYgMDA6MDEuMiAoaW89YzI0MCkNCihk
MSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuMzg3XSBGb3VuZCAwIGxwdCBwb3J0cw0KKGQxKSBb
MjAxNC0wOS0yNSAxMzozMDozNS40MDBdIEZvdW5kIDEgc2VyaWFsIHBvcnRzDQooZDEpIFsy
MDE0LTA5LTI1IDEzOjMwOjM1LjQxNF0gQVRBIGNvbnRyb2xsZXIgMSBhdCAxZjAvM2Y0LzAg
KGlycSAxNCBkZXYgOSkNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNDM0XSBBVEEgY29u
dHJvbGxlciAyIGF0IDE3MC8zNzQvMCAoaXJxIDE1IGRldiA5KQ0KKGQxKSBbMjAxNC0wOS0y
NSAxMzozMDozNS40NTZdIGF0YTAtMDogUUVNVSBIQVJERElTSyBBVEEtNyBIYXJkLURpc2sg
KDIwNDgwIE1pQnl0ZXMpDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM1LjQ3OF0gU2VhcmNo
aW5nIGJvb3RvcmRlciBmb3I6IC9wY2lAaTBjZjgvKkAxLDEvZHJpdmVAMC9kaXNrQDANCihk
MSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNTM3XSBQUzIga2V5Ym9hcmQgaW5pdGlhbGl6ZWQN
CihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNTUyXSBBbGwgdGhyZWFkcyBjb21wbGV0ZS4N
CihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNTY2XSBTY2FuIGZvciBvcHRpb24gcm9tcw0K
KGQxKSBbMjAxNC0wOS0yNSAxMzozMDozNS41OTldIFJ1bm5pbmcgb3B0aW9uIHJvbSBhdCBj
OTgwOjAwMDMNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNjIyXSBwbW0gY2FsbCBhcmcx
PTENCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNjM0XSBwbW0gY2FsbCBhcmcxPTANCihk
MSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNjQ3XSBwbW0gY2FsbCBhcmcxPTENCihkMSkgWzIw
MTQtMDktMjUgMTM6MzA6MzUuNjYwXSBwbW0gY2FsbCBhcmcxPTANCihkMSkgWzIwMTQtMDkt
MjUgMTM6MzA6MzUuNjg4XSBTZWFyY2hpbmcgYm9vdG9yZGVyIGZvcjogL3BjaUBpMGNmOC8q
QDQNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzUuNzA3XSANCihkMSkgWzIwMTQtMDktMjUg
MTM6MzA6MzUuNzIxXSBQcmVzcyBGMTIgZm9yIGJvb3QgbWVudS4NCihkMSkgWzIwMTQtMDkt
MjUgMTM6MzA6MzUuNzM2XSANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguMzE2XSBTZWFy
Y2hpbmcgYm9vdG9yZGVyIGZvcjogSEFMVA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozOC4z
MzNdIGRyaXZlIDB4MDAwZjBkNDA6IFBDSFM9MTYzODMvMTYvNjMgdHJhbnNsYXRpb249bGJh
IExDSFM9MTAyNC8yNTUvNjMgcz00MTk0MzA0MA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDoz
OC4zNjJdIFNwYWNlIGF2YWlsYWJsZSBmb3IgVU1COiBjYTgwMC1lZjAwMCwgZjAwMDAtZjBk
NDANCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguMzgzXSBSZXR1cm5lZCAyNTgwNDggYnl0
ZXMgb2YgWm9uZUhpZ2gNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguNDAwXSBlODIwIG1h
cCBoYXMgNiBpdGVtczoNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguNDE0XSAgIDA6IDAw
MDAwMDAwMDAwMDAwMDAgLSAwMDAwMDAwMDAwMDlmYzAwID0gMSBSQU0NCihkMSkgWzIwMTQt
MDktMjUgMTM6MzA6MzguNDM1XSAgIDE6IDAwMDAwMDAwMDAwOWZjMDAgLSAwMDAwMDAwMDAw
MGEwMDAwID0gMiBSRVNFUlZFRA0KKGQxKSBbMjAxNC0wOS0yNSAxMzozMDozOC40NThdICAg
MjogMDAwMDAwMDAwMDBmMDAwMCAtIDAwMDAwMDAwMDAxMDAwMDAgPSAyIFJFU0VSVkVEDQoo
ZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM4LjQ4MF0gICAzOiAwMDAwMDAwMDAwMTAwMDAwIC0g
MDAwMDAwMDAzZjdmZjAwMCA9IDEgUkFNDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM4LjUw
MV0gICA0OiAwMDAwMDAwMDNmN2ZmMDAwIC0gMDAwMDAwMDAzZjgwMDAwMCA9IDIgUkVTRVJW
RUQNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguNTIzXSAgIDU6IDAwMDAwMDAwZmMwMDAw
MDAgLSAwMDAwMDAwMTAwMDAwMDAwID0gMiBSRVNFUlZFRA0KKGQxKSBbMjAxNC0wOS0yNSAx
MzozMDozOC41NDZdIGVudGVyIGhhbmRsZV8xOToNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6
MzguNTU5XSAgIE5VTEwNCihkMSkgWzIwMTQtMDktMjUgMTM6MzA6MzguNTc1XSBCb290aW5n
IGZyb20gSGFyZCBEaXNrLi4uDQooZDEpIFsyMDE0LTA5LTI1IDEzOjMwOjM4LjU5MV0gQm9v
dGluZyBmcm9tIDAwMDA6N2MwMA0KWyAxMzQxLjA4MDI3N10geGVuX2JyaWRnZTogcG9ydCAy
KHZpZjEuMC1lbXUpIGVudGVyZWQgZm9yd2FyZGluZyBzdGF0ZQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzE6MDEuMjcwXSBpcnEuYzozODA6IERvbTEgY2FsbGJhY2sgdmlhIGNoYW5nZWQg
dG8gRGlyZWN0IFZlY3RvciAweGYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowNy4yMjRd
IG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA3LjQ5NF0gbWVtb3J5X21hcDpyZW1vdmU6IGRv
bTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6
MDcuNTE3XSBpb3BvcnRfbWFwOnJlbW92ZTogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAg
bnI9MTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowNy41NDZdIG1lbW9yeV9tYXA6YWRk
OiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjMxOjA3LjczNF0gbWVtb3J5X21hcDphZGQ6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFj
MCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDcuNzU3XSBpb3BvcnRfbWFwOmFk
ZDogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozMTowNy43ODFdIG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20xIGdmbj1lMDAwMCBtZm49
YTAwMDAgbnI9MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA4LjA0M10gbWVtb3J5
X21hcDpyZW1vdmU6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzE6MDguMDY3XSBpb3BvcnRfbWFwOnJlbW92ZTogZG9tMSBncG9ydD1j
MTAwIG1wb3J0PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOC4wOTNd
IG1lbW9yeV9tYXA6YWRkOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA4LjI4MV0gbWVtb3J5X21hcDphZGQ6IGRvbTEgZ2Zu
PWYzMDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDguMzAz
XSBpb3BvcnRfbWFwOmFkZDogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOC4zMjhdIG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20x
IGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMx
OjA4LjU3OF0gbWVtb3J5X21hcDpyZW1vdmU6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBu
cj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDguNjAxXSBpb3BvcnRfbWFwOnJlbW92
ZTogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozMTowOC42MjddIG1lbW9yeV9tYXA6YWRkOiBkb20xIGdmbj1lMDAwMCBtZm49YTAw
MDAgbnI9MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA4LjgxNF0gbWVtb3J5X21h
cDphZGQ6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzE6MDguODM3XSBpb3BvcnRfbWFwOmFkZDogZG9tMSBncG9ydD1jMTAwIG1wb3J0
PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOC44NjJdIG1lbW9yeV9t
YXA6cmVtb3ZlOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjMxOjA5LjEwOV0gbWVtb3J5X21hcDpyZW1vdmU6IGRvbTEgZ2ZuPWYz
MDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDkuMTMyXSBp
b3BvcnRfbWFwOnJlbW92ZTogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOS4xNThdIG1lbW9yeV9tYXA6YWRkOiBkb20xIGdm
bj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA5
LjM0NF0gbWVtb3J5X21hcDphZGQ6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0yMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDkuMzY3XSBpb3BvcnRfbWFwOmFkZDogZG9tMSBn
cG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTow
OS4zOTFdIG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9
MTAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjA5LjY0N10gbWVtb3J5X21hcDpyZW1v
dmU6IGRvbTEgZ2ZuPWYzMDYwIG1mbj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzE6MDkuNjcwXSBpb3BvcnRfbWFwOnJlbW92ZTogZG9tMSBncG9ydD1jMTAwIG1wb3J0
PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOS42OTZdIG1lbW9yeV9t
YXA6YWRkOiBkb20xIGdmbj1lMDAwMCBtZm49YTAwMDAgbnI9MTAwMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjMxOjA5Ljg4M10gbWVtb3J5X21hcDphZGQ6IGRvbTEgZ2ZuPWYzMDYwIG1m
bj1mZTFjMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzE6MDkuOTA2XSBpb3BvcnRf
bWFwOmFkZDogZG9tMSBncG9ydD1jMTAwIG1wb3J0PWEwMDAgbnI9MTAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozMTowOS45NjBdIGlycS5jOjI3MDogRG9tMSBQQ0kgbGluayAwIGNoYW5n
ZWQgNSAtPiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozMTowOS45OTldIGlycS5jOjI3MDog
RG9tMSBQQ0kgbGluayAxIGNoYW5nZWQgMTAgLT4gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzE6MTAuMDM4XSBpcnEuYzoyNzA6IERvbTEgUENJIGxpbmsgMiBjaGFuZ2VkIDExIC0+IDAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjEwLjA3N10gaXJxLmM6MjcwOiBEb20xIFBDSSBs
aW5rIDMgY2hhbmdlZCA1IC0+IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjMxOjEyLjA5Ml0g
bWVtb3J5X21hcDphZGQ6IGRvbTEgZ2ZuPWYzMDgwIG1mbj1mZTFhMCBucj0yMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzE6MTIuMjM3XSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tMSBnZm49
ZjMwODAgbWZuPWZlMWEwIG5yPTIwDQpbIDEzNjcuNjUwMzA1XSB4ZW4tYmxrYmFjazpyaW5n
LXJlZiA4LCBldmVudC1jaGFubmVsIDI2LCBwcm90b2NvbCAxICh4ODZfNjQtYWJpKSBwZXJz
aXN0ZW50IGdyYW50cw0KWyAxMzY5LjY5ODc5Nl0gSVB2NjogQUREUkNPTkYoTkVUREVWX0NI
QU5HRSk6IHZpZjEuMDogbGluayBiZWNvbWVzIHJlYWR5DQpbIDEzNjkuNzI3NzQ5XSB4ZW5f
YnJpZGdlOiBwb3J0IDEodmlmMS4wKSBlbnRlcmVkIGZvcndhcmRpbmcgc3RhdGUNClsgMTM2
OS43NTUxNDldIHhlbl9icmlkZ2U6IHBvcnQgMSh2aWYxLjApIGVudGVyZWQgZm9yd2FyZGlu
ZyBzdGF0ZQ0KWyAxMzg0Ljc2MDM5M10geGVuX2JyaWRnZTogcG9ydCAxKHZpZjEuMCkgZW50
ZXJlZCBmb3J3YXJkaW5nIHN0YXRlDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMC40NDNd
IElSUSBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEwLjQ1Nl0gICAg
SVJROiAgIDAgYWZmaW5pdHk6MDEgdmVjOmYwIHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1
cz0wMDAwMDAwMCB0aW1lcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTAuNDg3XSAgICBJUlE6ICAgMSBhZmZpbml0eTowMSB2ZWM6MzAgdHlwZT1JTy1BUElDLWVk
Z2UgICAgc3RhdHVzPTAwMDAwMDM0IGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6ICAxKC0t
LSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMC41MjNdICAgIElSUTogICAzIGFmZmlu
aXR5OjAxIHZlYzozOCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFw
cGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMC41NTNdICAgIElSUTog
ICA0IGFmZmluaXR5OjAxIHZlYzpmMSB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAw
MDAwMDAgbnMxNjU1MF9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTAu
NTg1XSAgICBJUlE6ICAgNSBhZmZpbml0eTowMSB2ZWM6NDAgdHlwZT1JTy1BUElDLWVkZ2Ug
ICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6MTAuNjE1XSAgICBJUlE6ICAgNiBhZmZpbml0eTowMSB2ZWM6NDggdHlwZT1JTy1B
UElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6MTAuNjQ2XSAgICBJUlE6ICAgNyBhZmZpbml0eTowMSB2ZWM6NTAg
dHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTAuNjc2XSAgICBJUlE6ICAgOCBhZmZpbml0eTow
MSB2ZWM6NTggdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdo
dD0wIGRvbWFpbi1saXN0PTA6ICA4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTox
MC43MTJdICAgIElSUTogICA5IGFmZmluaXR5OjNmIHZlYzo2MCB0eXBlPUlPLUFQSUMtbGV2
ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNToxMC43NDJdICAgIElSUTogIDEwIGFmZmluaXR5OjAxIHZlYzo2OCB0eXBlPUlP
LUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNToxMC43NzNdICAgIElSUTogIDExIGFmZmluaXR5OjAxIHZlYzo3
MCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5k
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMC44MDNdICAgIElSUTogIDEyIGFmZmluaXR5
OjAxIHZlYzo3OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxp
Z2h0PTAgZG9tYWluLWxpc3Q9MDogMTIoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjEwLjgzOV0gICAgSVJROiAgMTMgYWZmaW5pdHk6M2YgdmVjOjg4IHR5cGU9SU8tQVBJQy1l
ZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjEwLjg2OV0gICAgSVJROiAgMTQgYWZmaW5pdHk6MDEgdmVjOjkwIHR5cGU9
SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjEwLjg5OV0gICAgSVJROiAgMTUgYWZmaW5pdHk6MDEgdmVj
Ojk4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91
bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEwLjkzMF0gICAgSVJROiAgMTYgYWZmaW5p
dHk6MDEgdmVjOjg5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAzMCBpbi1m
bGlnaHQ9MCBkb21haW4tbGlzdD0wOiAxNigtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6MTAuOTY1XSAgICBJUlE6ICAxNyBhZmZpbml0eTowMSB2ZWM6YzAgdHlwZT1JTy1BUElD
LWxldmVsICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6IDE3
KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMS4wMDFdICAgIElSUTogIDE4IGFm
ZmluaXR5OjAxIHZlYzpiOCB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMzAg
aW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogMTgoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjExLjAzN10gICAgSVJROiAgMTkgYWZmaW5pdHk6M2YgdmVjOjJhIHR5cGU9SU8t
QVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM1OjExLjA2N10gICAgSVJROiAgMjIgYWZmaW5pdHk6M2YgdmVjOmI5
IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjA5OF0gICAgSVJROiAgMjUgYWZmaW5pdHk6
M2YgdmVjOjlhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjEyOF0gICAgSVJROiAgMjgg
YWZmaW5pdHk6M2YgdmVjOjIyIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAw
MiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjE1OF0gICAg
SVJROiAgMjkgYWZmaW5pdHk6M2YgdmVjOmQ5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1
cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEx
LjE4OV0gICAgSVJROiAgMzIgYWZmaW5pdHk6MDIgdmVjOmM5IHR5cGU9SU8tQVBJQy1sZXZl
bCAgIHN0YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0xOiAzMigtTS0p
LA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuMjI0XSAgICBJUlE6ICAzMyBhZmZpbml0
eTozZiB2ZWM6YzEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBl
ZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuMjU1XSAgICBJUlE6ICAz
NiBhZmZpbml0eTozZiB2ZWM6MjEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAw
MDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuMjg1XSAg
ICBJUlE6ICAzNyBhZmZpbml0eTozZiB2ZWM6MjkgdHlwZT1JTy1BUElDLWxldmVsICAgc3Rh
dHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTEuMzE2XSAgICBJUlE6ICAzOCBhZmZpbml0eTozZiB2ZWM6YTkgdHlwZT1JTy1BUElDLWxl
dmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MTEuMzQ2XSAgICBJUlE6ICA0MCBhZmZpbml0eTozZiB2ZWM6MzEgdHlwZT1J
Ty1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6MTEuMzc3XSAgICBJUlE6ICA0NiBhZmZpbml0eTozZiB2ZWM6
NzIgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3Vu
ZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuNDA3XSAgICBJUlE6ICA0NyBhZmZpbml0
eTozZiB2ZWM6ZDEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBl
ZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuNDM3XSAgICBJUlE6ICA0
OCBhZmZpbml0eTozZiB2ZWM6ZDAgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAw
MDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuNDY4XSAg
ICBJUlE6ICA1MSBhZmZpbml0eTozZiB2ZWM6OGEgdHlwZT1JTy1BUElDLWxldmVsICAgc3Rh
dHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTEuNDk4XSAgICBJUlE6ICA1MiBhZmZpbml0eTozZiB2ZWM6MzkgdHlwZT1JTy1BUElDLWxl
dmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MTEuNTI5XSAgICBJUlE6ICA1MyBhZmZpbml0eTozZiB2ZWM6YzggdHlwZT1J
Ty1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6MTEuNTU5XSAgICBJUlE6ICA1NCBhZmZpbml0eTozZiB2ZWM6
ZDggdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3Vu
ZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTEuNTg5XSAgICBJUlE6ICA1NiBhZmZpbml0
eTowMSB2ZWM6MjggdHlwZT1BTUQtSU9NTVUtTVNJICAgc3RhdHVzPTAwMDAwMDAwIGlvbW11
X2ludGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjYyMl0g
ICAgSVJROiAgNTcgYWZmaW5pdHk6MTAgdmVjOmEwIHR5cGU9SFBFVC1NU0kgICAgICAgIHN0
YXR1cz0wMDAwMDAwMCBocGV0X2ludGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjExLjY1NV0gICAgSVJROiAgNTggYWZmaW5pdHk6MDIgdmVjOmE4IHR5cGU9
SFBFVC1NU0kgICAgICAgIHN0YXR1cz0wMDAwMDAwMCBocGV0X2ludGVycnVwdF9oYW5kbGVy
KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjY4OF0gICAgSVJROiAgNTkgYWZmaW5p
dHk6MDQgdmVjOmIwIHR5cGU9SFBFVC1NU0kgICAgICAgIHN0YXR1cz0wMDAwMDAwMCBocGV0
X2ludGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjcyMV0g
ICAgSVJROiAgNjAgYWZmaW5pdHk6M2YgdmVjOjQxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0
YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjExLjc1MV0gICAgSVJROiAgNjEgYWZmaW5pdHk6M2YgdmVjOjQ5IHR5cGU9UENJLU1TSSAg
ICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjExLjc4Ml0gICAgSVJROiAgNjIgYWZmaW5pdHk6M2YgdmVjOjUxIHR5cGU9
UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjExLjgxMl0gICAgSVJROiAgNjMgYWZmaW5pdHk6M2YgdmVj
OjU5IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91
bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjg0Ml0gICAgSVJROiAgNjQgYWZmaW5p
dHk6M2YgdmVjOjYxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBw
ZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjg3M10gICAgSVJROiAg
NjUgYWZmaW5pdHk6M2YgdmVjOjY5IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAw
MDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjExLjkwM10g
ICAgSVJROiAgNjYgYWZmaW5pdHk6M2YgdmVjOjcxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0
YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjExLjkzNF0gICAgSVJROiAgNjcgYWZmaW5pdHk6M2YgdmVjOjc5IHR5cGU9UENJLU1TSSAg
ICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjExLjk2NF0gICAgSVJROiAgNjggYWZmaW5pdHk6M2YgdmVjOjgxIHR5cGU9
UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjExLjk5NV0gICAgSVJROiAgNjkgYWZmaW5pdHk6M2YgdmVj
OjkxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91
bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjAyNV0gICAgSVJROiAgNzAgYWZmaW5p
dHk6M2YgdmVjOjk5IHR5cGU9UENJLU1TSS8tWCAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBw
ZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjA1NV0gICAgSVJROiAg
NzEgYWZmaW5pdHk6M2YgdmVjOmExIHR5cGU9UENJLU1TSS8tWCAgICAgIHN0YXR1cz0wMDAw
MDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjA4Nl0g
ICAgSVJROiAgNzIgYWZmaW5pdHk6M2YgdmVjOmIxIHR5cGU9UENJLU1TSS8tWCAgICAgIHN0
YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjEyLjExNl0gICAgSVJROiAgNzMgYWZmaW5pdHk6MDEgdmVjOjMyIHR5cGU9UENJLU1TSSAg
ICAgICAgIHN0YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5MSgt
LS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTIuMTUyXSAgICBJUlE6ICA3NCBhZmZp
bml0eTowMSB2ZWM6M2EgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGlu
LWZsaWdodD0wIGRvbWFpbi1saXN0PTA6MjkyKC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNToxMi4xODddICAgIElSUTogIDc1IGFmZmluaXR5OjAxIHZlYzo0MiB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoy
OTMoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjIyM10gICAgSVJROiAgNzYg
YWZmaW5pdHk6MDEgdmVjOjRhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAz
MCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5NCgtLS0pLA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MTIuMjU5XSAgICBJUlE6ICA3NyBhZmZpbml0eTowMSB2ZWM6NTIgdHlwZT1Q
Q0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0
PTA6Mjk1KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi4yOTRdICAgIElSUTog
IDc4IGFmZmluaXR5OjAxIHZlYzo1YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAw
MDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyOTYoLS0tKSwNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjEyLjMzMF0gICAgSVJROiAgNzkgYWZmaW5pdHk6M2YgdmVjOjYyIHR5
cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjM2MF0gICAgSVJROiAgODAgYWZmaW5pdHk6M2Yg
dmVjOjZhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjM5MV0gICAgSVJROiAgODEgYWZm
aW5pdHk6MDEgdmVjOjdhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAxMCBp
bi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5MCgtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6MTIuNDI2XSAgICBJUlE6ICA4MiBhZmZpbml0eTowMSB2ZWM6OTIgdHlwZT1QQ0kt
TVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDEwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6
Mjg5KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi40NjJdICAgIElSUTogIDgz
IGFmZmluaXR5OjAxIHZlYzphMiB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAw
MzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyODgoLS0tKSwNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjEyLjQ5OF0gICAgSVJROiAgODQgYWZmaW5pdHk6MDQgdmVjOmFhIHR5cGU9
UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlz
dD0xOiA4NygtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTIuNTMzXSBEaXJlY3Qg
dmVjdG9yIGluZm9ybWF0aW9uOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTIuNTQ5XSAg
ICAweDIwIC0+IGlycV9tb3ZlX2NsZWFudXBfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjEyLjU2OF0gICAgMHhmOSAtPiBwbXVfYXBpY19pbnRlcnJ1cHQoKQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6MTIuNTg1XSAgICAweGZhIC0+IGFwaWNfdGltZXJfaW50
ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjYwMl0gICAgMHhmYiAtPiBj
YWxsX2Z1bmN0aW9uX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi42
MjBdICAgIDB4ZmMgLT4gZXZlbnRfY2hlY2tfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjEyLjYzOF0gICAgMHhmZCAtPiBpbnZhbGlkYXRlX2ludGVycnVwdCgpDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi42NTVdICAgIDB4ZmUgLT4gZXJyb3JfaW50ZXJy
dXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjY3Ml0gICAgMHhmZiAtPiBzcHVy
aW91c19pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTIuNjg4XSBJTy1B
UElDIGludGVycnVwdCBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEy
LjcwNV0gICAgIElSUSAgMCBWZWMyNDA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi43
MTldICAgICAgIEFwaWMgMHgwMCwgUGluICAyOiB2ZWM9ZjAgZGVsaXZlcnk9TG9QcmkgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjEN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjc1NF0gICAgIElSUSAgMSBWZWMgNDg6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi43NjhdICAgICAgIEFwaWMgMHgwMCwgUGluICAx
OiB2ZWM9MzAgZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJy
PTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEy
LjgwM10gICAgIElSUSAgMyBWZWMgNTY6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi44
MTddICAgICAgIEFwaWMgMHgwMCwgUGluICAzOiB2ZWM9MzggZGVsaXZlcnk9TG9QcmkgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjEN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjg1Ml0gICAgIElSUSAgNCBWZWMyNDE6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi44NjZdICAgICAgIEFwaWMgMHgwMCwgUGluICA0
OiB2ZWM9ZjEgZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJy
PTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEy
LjkwMl0gICAgIElSUSAgNSBWZWMgNjQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi45
MTVdICAgICAgIEFwaWMgMHgwMCwgUGluICA1OiB2ZWM9NDAgZGVsaXZlcnk9TG9QcmkgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjEN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEyLjk1MV0gICAgIElSUSAgNiBWZWMgNzI6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMi45NjRdICAgICAgIEFwaWMgMHgwMCwgUGluICA2
OiB2ZWM9NDggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJy
PTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEz
LjAwMF0gICAgIElSUSAgNyBWZWMgODA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy4w
MTNdICAgICAgIEFwaWMgMHgwMCwgUGluICA3OiB2ZWM9NTAgZGVsaXZlcnk9TG9QcmkgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjEN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjA0OV0gICAgIElSUSAgOCBWZWMgODg6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy4wNjNdICAgICAgIEFwaWMgMHgwMCwgUGluICA4
OiB2ZWM9NTggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJy
PTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEz
LjA5OF0gICAgIElSUSAgOSBWZWMgOTY6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy4x
MTJdICAgICAgIEFwaWMgMHgwMCwgUGluICA5OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYz
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy4xNDhdICAgICBJUlEgMTAgVmVjMTA0Og0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuMTYxXSAgICAgICBBcGljIDB4MDAsIFBpbiAx
MDogdmVjPTY4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGly
cj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTox
My4xOTddICAgICBJUlEgMTEgVmVjMTEyOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMu
MjEwXSAgICAgICBBcGljIDB4MDAsIFBpbiAxMTogdmVjPTcwIGRlbGl2ZXJ5PUxvUHJpIGRl
c3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDox
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy4yNDZdICAgICBJUlEgMTIgVmVjMTIwOg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuMjU5XSAgICAgICBBcGljIDB4MDAsIFBpbiAx
MjogdmVjPTc4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGly
cj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTox
My4yOTVdICAgICBJUlEgMTMgVmVjMTM2Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMu
MzA4XSAgICAgICBBcGljIDB4MDAsIFBpbiAxMzogdmVjPTg4IGRlbGl2ZXJ5PUxvUHJpIGRl
c3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTEgZGVzdF9pZDo2
Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuMzQ0XSAgICAgSVJRIDE0IFZlYzE0NDoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjM1OF0gICAgICAgQXBpYyAweDAwLCBQaW4g
MTQ6IHZlYz05MCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBp
cnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTMuMzkzXSAgICAgSVJRIDE1IFZlYzE1MjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEz
LjQwN10gICAgICAgQXBpYyAweDAwLCBQaW4gMTU6IHZlYz05OCBkZWxpdmVyeT1Mb1ByaSBk
ZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6
MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuNDQzXSAgICAgSVJRIDE2IFZlYzEzNzoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjQ1Nl0gICAgICAgQXBpYyAweDAwLCBQaW4g
MTY6IHZlYz04OSBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBp
cnI9MCB0cmlnPUwgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTMuNDkyXSAgICAgSVJRIDE3IFZlYzE5MjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEz
LjUwNV0gICAgICAgQXBpYyAweDAwLCBQaW4gMTc6IHZlYz1jMCBkZWxpdmVyeT1GaXhlZCBk
ZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0wIGRlc3RfaWQ6
MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuNTQxXSAgICAgSVJRIDE4IFZlYzE4NDoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjU1NF0gICAgICAgQXBpYyAweDAwLCBQaW4g
MTg6IHZlYz1iOCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBp
cnI9MCB0cmlnPUwgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTMuNTkwXSAgICAgSVJRIDE5IFZlYyA0MjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEz
LjYwNF0gICAgICAgQXBpYyAweDAwLCBQaW4gMTk6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBk
ZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6
NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjYzOV0gICAgIElSUSAyMiBWZWMxODU6
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy42NTNdICAgICAgIEFwaWMgMHgwMCwgUGlu
IDIyOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEg
aXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NToxMy42ODldICAgICBJUlEgMjUgVmVjMTU0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MTMuNzAyXSAgICAgICBBcGljIDB4MDEsIFBpbiAgMTogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVk
IGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9p
ZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuNzM4XSAgICAgSVJRIDI4IFZlYyAz
NDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjc1Ml0gICAgICAgQXBpYyAweDAxLCBQ
aW4gIDQ6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9
MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM1OjEzLjc4OF0gICAgIElSUSAyOSBWZWMyMTc6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NToxMy44MDFdICAgICAgIEFwaWMgMHgwMSwgUGluICA1OiB2ZWM9MDAgZGVsaXZlcnk9Rml4
ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0
X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxMy44MzddICAgICBJUlEgMzIgVmVj
MjAxOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuODUxXSAgICAgICBBcGljIDB4MDEs
IFBpbiAgODogdmVjPWM5IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0
eT0xIGlycj0wIHRyaWc9TCBtYXNrPTAgZGVzdF9pZDoyDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNToxMy44ODZdICAgICBJUlEgMzMgVmVjMTkzOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6MTMuOTAwXSAgICAgICBBcGljIDB4MDEsIFBpbiAgOTogdmVjPTAwIGRlbGl2ZXJ5PUZp
eGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVz
dF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTMuOTM2XSAgICAgSVJRIDM2IFZl
YyAzMzoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjEzLjk0OV0gICAgICAgQXBpYyAweDAx
LCBQaW4gMTI6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJp
dHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjEzLjk4NV0gICAgIElSUSAzNyBWZWMgNDE6DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNToxMy45OTldICAgICAgIEFwaWMgMHgwMSwgUGluIDEzOiB2ZWM9MDAgZGVsaXZlcnk9
Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBk
ZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxNC4wMzRdICAgICBJUlEgMzgg
VmVjMTY5Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTQuMDQ4XSAgICAgICBBcGljIDB4
MDEsIFBpbiAxNDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xh
cml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MTQuMDg0XSAgICAgSVJRIDQwIFZlYyA0OToNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjE0LjA5N10gICAgICAgQXBpYyAweDAxLCBQaW4gMTY6IHZlYz0wMCBkZWxpdmVy
eT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0x
IGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjE0LjEzM10gICAgIElSUSA0
NiBWZWMxMTQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxNC4xNDddICAgICAgIEFwaWMg
MHgwMSwgUGluIDIyOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNToxNC4xODNdICAgICBJUlEgNDcgVmVjMjA5Og0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MTQuMTk2XSAgICAgICBBcGljIDB4MDEsIFBpbiAyMzogdmVjPTAwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTQuMjMyXSAgICAgSVJR
IDQ4IFZlYzIwODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjE0LjI0Nl0gICAgICAgQXBp
YyAweDAxLCBQaW4gMjQ6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAg
cG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjE0LjI4MV0gICAgIElSUSA1MSBWZWMxMzg6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNToxNC4yOTVdICAgICAgIEFwaWMgMHgwMSwgUGluIDI3OiB2ZWM9MDAgZGVs
aXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1h
c2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxNC4zMzFdICAgICBJ
UlEgNTIgVmVjIDU3Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MTQuMzQ0XSAgICAgICBB
cGljIDB4MDEsIFBpbiAyODogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9
MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6MTQuMzgwXSAgICAgSVJRIDUzIFZlYzIwMDoNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjE0LjM5NF0gICAgICAgQXBpYyAweDAxLCBQaW4gMjk6IHZlYz0wMCBk
ZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwg
bWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjE0LjQzMF0gICAg
IElSUSA1NCBWZWMyMTY6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToxNC40NDNdICAgICAg
IEFwaWMgMHgwMSwgUGluIDMwOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1
cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNToyMS4yMjJdICdJJyBwcmVzc2VkIC0+IGR1bXBpbmcgSFZNIGly
cSBpbmZvDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyMS4yNDBdIERvbWFpbiAxOg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6MjEuMjUxXSBQQ0kgMHgwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMCBJU0EgMHgwMDAwMDEwMCBST1VURSAwIDAgMCAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNToyMS4yNzddIEdTSSBbMCAtIDddIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyMS4yOTVdIEdTSSBbOCAtIGZdIDAxIDAw
IDAwIDAwIDAwIDAwIDAwIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyMS4zMTNdIEdT
SSBbMTAgLSAxN10gMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjIxLjMzMV0gR1NJIFsxOCAtIDFmXSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjEuMzUwXSBHU0kgWzIwIC0gMjddIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyMS4zNjhdIEdTSSBb
MjggLSAyZl0gMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM1OjIxLjM4N10gTGluayAwMCAwMCAwMCAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MjEuNDAwXSBDYWxsYmFjayB2aWEgMzoweGYzLCBub3QgYXNzZXJ0ZWQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjI3Ljk3Nl0gPT09PSBQQ0kgZGV2aWNlcyA9PT09DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNToyNy45OTBdID09PT0gc2VnbWVudCAwMDAwID09PT0NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM1OjI4LjAwNV0gMDAwMDowZjowMC4xIC0gZG9tIDAgICAtIE1TSXMg
PCA4MyA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC4wMjNdIDAwMDA6MGY6MDAuMCAt
IGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguMDQwXSAw
MDAwOjBlOjAwLjEgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM1OjI4LjA1OF0gMDAwMDowZTowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNToyOC4wNzVdIDAwMDA6MGQ6MDAuMCAtIGRvbSAwICAgLSBNU0lz
IDwgODEgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguMDkzXSAwMDAwOjBjOjAwLjAg
LSBkb20gMCAgIC0gTVNJcyA8IDgyID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjEx
MV0gMDAwMDowYjowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNToyOC4xMjldIDAwMDA6MGE6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6MjguMTQ2XSAwMDAwOjA5OjAwLjEgLSBkb20gMCAgIC0g
TVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjE2NF0gMDAwMDowOTowMC4w
IC0gZG9tIDEgICAtIE1TSXMgPCA4NCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC4x
ODJdIDAwMDA6MDg6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MjguMTk5XSAwMDAwOjA3OjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjIxN10gMDAwMDowNjowMi4wIC0gZG9tIDAgICAt
IE1TSXMgPCA3MiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC4yMzVdIDAwMDA6MDY6
MDEuMCAtIGRvbSAwICAgLSBNU0lzIDwgNzEgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MjguMjUzXSAwMDAwOjA1OjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8IDcwID4NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM1OjI4LjI3MV0gMDAwMDowNDowMC4wIC0gZG9tIDAgICAtIE1TSXMg
PCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC4yODldIDAwMDA6MDM6MDYuMCAtIGRv
bSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguMzA2XSAwMDAw
OjAwOjE4LjQgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjI4LjMyNF0gMDAwMDowMDoxOC4zIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNToyOC4zNDFdIDAwMDA6MDA6MTguMiAtIGRvbSAwICAgLSBNU0lzIDwg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguMzU4XSAwMDAwOjAwOjE4LjEgLSBkb20g
MCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjM3Nl0gMDAwMDow
MDoxOC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToy
OC4zOTNdIDAwMDA6MDA6MTYuMiAtIGRvbSAwICAgLSBNU0lzIDwgWyAxNjIxLjkzMzg1Nl0g
bj4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjQxNV0gMDAwMDowMDoxNi4wIC0gZG9t
IDAgICAtIE1TSXMgPCA+DQpmX2Nvbm50cmFjazogYXV0KFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6MjguNDM2XSAwMDAwOjAwOjE1LjAgLSBkb20gMCAgIC0gTVNJcyA8IDY5ID4NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjI4LjQ1NV0gMDAwMDowMDoxNC41IC0gZG9tIDAgICAtIE1T
SXMgPCA+DQpvbWF0aWMgaGVscGVyIGFzKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguNDc2
XSAwMDAwOjAwOjE0LjQgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjI4LjQ5NF0gMDAwMDowMDoxNC4zIC0gZG9tIDAgICAtIE1TSXMgPCBzaWdubWVu
dCBpcyBkZXByPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguNTE1XSAwMDAwOjAwOjE0
LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCmVjYXRlZCBhbmQgaXQgd2koWEVOKSBbMjAxNC0w
OS0yNSAxMzozNToyOC41MzddIDAwMDA6MDA6MTQuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6MjguNTU0XSAwMDAwOjAwOjEzLjIgLSBkb20gMCAg
IC0gTVNJcyA8IGxsIGJlIHJlbW92ZWQgc28+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToy
OC41NzZdIDAwMDA6MDA6MTMuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzU6MjguNTkzXSAwMDAwOjAwOjEyLjIgLSBkb20gMCAgIC0gTVNJcyA8ID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjYxMV0gMDAwMDowMDoxMi4wIC0gZG9tIDAg
ICAtIE1TSXMgPCBvbi4gVXNlIHRoZSBpcHRhPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MjguNjMyXSAwMDAwOjAwOjExLjAgLSBkb20gMCAgIC0gTVNJcyA8IGJsZXMgQ1QgdGFyZ2V0
IHQ3MyA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC42NTRdIDAwMDA6MDA6MGQuMCAt
IGRvbSAwICAgLSBNU0lzIDwgbyBhdHRhY2ggaGVscGVyczY4ID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjI4LjY3N10gMDAwMDowMDowYy4wIC0gZG9tIDAgICAtIE1TSXMgPCAgaW5z
dGVhZC4NCjY3ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjY5OF0gMDAwMDowMDow
Yi4wIC0gZG9tIDAgICAtIE1TSXMgPCA2NiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToy
OC43MTZdIDAwMDA6MDA6MGEuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjUgPg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6MjguNzM1XSAwMDAwOjAwOjA5LjAgLSBkb20gMCAgIC0gTVNJcyA8
IDY0ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4Ljc1M10gMDAwMDowMDowNi4wIC0g
ZG9tIDAgICAtIE1TSXMgPCA2MyA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC43NzFd
IDAwMDA6MDA6MDUuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjIgPg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6MjguNzg5XSAwMDAwOjAwOjAzLjAgLSBkb20gMCAgIC0gTVNJcyA8IDYxID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjI4LjgwN10gMDAwMDowMDowMi4wIC0gZG9tIDAg
ICAtIE1TSXMgPCA2MCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToyOC44MjZdIDAwMDA6
MDA6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
MjguODQzXSAwMDAwOjAwOjAwLjIgLSBkb20gMzI3NTQgLSBNU0lzIDwgPg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6MzYuMTkyXSBNU0kgaW5mb3JtYXRpb246DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNTozNi4yMDVdICBNU0kgICAgIDU2IHZlYz0yOCBsb3dlc3QgIGVkZ2UgICBh
c3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMC8/DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNTozNi4yMzRdICBIUEVUICAgIDU3IHZlYz1hMCBsb3dlc3QgIGVkZ2Ug
ICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAxMCBtYXNrPTEvMC8/DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNTozNi4yNjNdICBIUEVUICAgIDU4IHZlYz1hOCBsb3dlc3QgIGVk
Z2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMiBtYXNrPTEvMC8/DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTozNi4yOTJdICBIUEVUICAgIDU5IHZlYz1iMCBsb3dlc3Qg
IGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwNCBtYXNrPTEvMC8/DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi4zMjBdICBNU0kgICAgIDYwIHZlYz00MSBsb3dl
c3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi4zNDldICBNU0kgICAgIDYxIHZlYz00OSBs
b3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAv
MS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi4zNzhdICBNU0kgICAgIDYyIHZlYz01
MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNr
PTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi40MDddICBNU0kgICAgIDYzIHZl
Yz01OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBt
YXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi40MzZdICBNU0kgICAgIDY0
IHZlYz02MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAz
ZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi40NjVdICBNU0kgICAg
IDY1IHZlYz02OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAw
MDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi40OTRdICBNU0kg
ICAgIDY2IHZlYz03MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0w
MDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi41MjNdICBN
U0kgICAgIDY3IHZlYz03OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVz
dD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi41NTFd
ICBNU0kgICAgIDY4IHZlYz04MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3Qg
ZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi41
ODBdICBNU0kgICAgIDY5IHZlYz05MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dl
c3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNToz
Ni42MDldICBNU0kgICAgIDcwIHZlYz05OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBs
b3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NTozNi42MzhdICBNU0kgICAgIDcxIHZlYz1hMSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxv
ZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTozNi42NjddICBNU0kgICAgIDcyIHZlYz1iMSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQg
IGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNTozNi42OTZdICBNU0kgICAgIDczIHZlYz0zMiBsb3dlc3QgIGVkZ2UgICBhc3Nl
cnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNTozNi43MjVdICBNU0kgICAgIDc0IHZlYz0zYSBsb3dlc3QgIGVkZ2UgICBh
c3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNTozNi43NTNdICBNU0kgICAgIDc1IHZlYz00MiBsb3dlc3QgIGVkZ2Ug
ICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNTozNi43ODJdICBNU0kgICAgIDc2IHZlYz00YSBsb3dlc3QgIGVk
Z2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTozNi44MTFdICBNU0kgICAgIDc3IHZlYz01MiBsb3dlc3Qg
IGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi44NDBdICBNU0kgICAgIDc4IHZlYz01YSBsb3dl
c3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi44NjldICBNU0kgICAgIDc5IHZlYz02MiBs
b3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAv
MS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi44OThdICBNU0kgICAgIDgwIHZlYz02
YSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNr
PTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi45MjddICBNU0kgICAgIDgxIHZl
Yz03YSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBt
YXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi45NTVdICBNU0kgICAgIDgy
IHZlYz05MiBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAw
MSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNi45ODRdICBNU0kgICAg
IDgzIHZlYz1hMiBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAw
MDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTozNy4wMTNdICBNU0kg
ICAgIDg0IHZlYz1hYSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0w
MDAwMDAwNCBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My43MTRdIG51
bWJlciBvZiBNUCBJUlEgc291cmNlczogMTUuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0
My43MzFdIG51bWJlciBvZiBJTy1BUElDICM2IHJlZ2lzdGVyczogMjQuDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNTo0My43NDldIG51bWJlciBvZiBJTy1BUElDICM3IHJlZ2lzdGVyczog
MzIuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My43NjddIHRlc3RpbmcgdGhlIElPIEFQ
SUMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDMu
Nzg2XSBJTyBBUElDICM2Li4uLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My43OTld
IC4uLi4gcmVnaXN0ZXIgIzAwOiAwNjAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
NDMuODE1XSAuLi4uLi4uICAgIDogcGh5c2ljYWwgQVBJQyBpZDogMDYNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjQzLjgzM10gLi4uLi4uLiAgICA6IERlbGl2ZXJ5IFR5cGU6IDANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQzLjg0OV0gLi4uLi4uLiAgICA6IExUUyAgICAgICAg
ICA6IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQzLjg2NV0gLi4uLiByZWdpc3RlciAj
MDE6IDAwMTc4MDIxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My44ODFdIC4uLi4uLi4g
ICAgIDogbWF4IHJlZGlyZWN0aW9uIGVudHJpZXM6IDAwMTcNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjQzLjkwMV0gLi4uLi4uLiAgICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjQzLjkxOV0gLi4uLi4uLiAgICAgOiBJTyBBUElDIHZlcnNp
b246IDAwMjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQzLjkzNl0gLi4uLiByZWdpc3Rl
ciAjMDI6IDA2MDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My45NTJdIC4uLi4u
Li4gICAgIDogYXJiaXRyYXRpb246IDA2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0My45
NjldIC4uLi4gcmVnaXN0ZXIgIzAzOiAzRjAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6NDMuOTg1XSAuLi4uLi4uICAgICA6IEJvb3QgRFQgICAgOiAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNTo0NC4wMDFdIC4uLi4gSVJRIHJlZGlyZWN0aW9uIHRhYmxlOg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6NDQuMDE3XSAgTlIgTG9nIFBoeSBNYXNrIFRyaWcgSVJSIFBv
bCBTdGF0IERlc3QgRGVsaSBWZWN0OiAgIA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MDM5XSAgMDAgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMDYwXSAgMDEgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MDgxXSAgMDIgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICBGMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMTAyXSAgMDMgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICAzOA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MTIzXSAgMDQgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICBGMQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMTQ0XSAgMDUgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICA0MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MTY2XSAgMDYgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA0OA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMTg3XSAgMDcgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICA1MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MjA4XSAgMDggMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA1OA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMjI5XSAgMDkgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MjUwXSAgMGEgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA2OA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMjcxXSAgMGIgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICA3MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MjkyXSAgMGMgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA3OA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMzEzXSAgMGQgMDNGIDBGICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICA4OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
MzM0XSAgMGUgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA5MA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMzU1XSAgMGYgMDAxIDAxICAwICAgIDAgICAg
MCAgIDAgICAwICAgIDEgICAgMSAgICA5OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
Mzc2XSAgMTAgMDAxIDAxICAwICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICA4OQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuMzk3XSAgMTEgMDAxIDAxICAwICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICBDMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
NDE4XSAgMTIgMDAxIDAxICAwICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICBCOA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuNDM5XSAgMTMgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
NDYwXSAgMTQgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuNDgxXSAgMTUgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
NTAyXSAgMTYgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuNTI0XSAgMTcgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQu
NTQ1XSBJTyBBUElDICM3Li4uLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NC41NThd
IC4uLi4gcmVnaXN0ZXIgIzAwOiAwNzAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
NDQuNTczXSAuLi4uLi4uICAgIDogcGh5c2ljYWwgQVBJQyBpZDogMDcNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjQ0LjU5MV0gLi4uLi4uLiAgICA6IERlbGl2ZXJ5IFR5cGU6IDANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ0LjYwN10gLi4uLi4uLiAgICA6IExUUyAgICAgICAg
ICA6IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ0LjYyNF0gLi4uLiByZWdpc3RlciAj
MDE6IDAwMUY4MDIxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NC42MzldIC4uLi4uLi4g
ICAgIDogbWF4IHJlZGlyZWN0aW9uIGVudHJpZXM6IDAwMUYNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjQ0LjY2MF0gLi4uLi4uLiAgICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjQ0LjY3N10gLi4uLi4uLiAgICAgOiBJTyBBUElDIHZlcnNp
b246IDAwMjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ0LjY5NV0gLi4uLiByZWdpc3Rl
ciAjMDI6IDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NC43MTBdIC4uLi4u
Li4gICAgIDogYXJiaXRyYXRpb246IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NC43
MjddIC4uLi4gSVJRIHJlZGlyZWN0aW9uIHRhYmxlOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6NDQuNzQzXSAgTlIgTG9nIFBoeSBNYXNrIFRyaWcgSVJSIFBvbCBTdGF0IERlc3QgRGVs
aSBWZWN0OiAgIA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuNzY1XSAgMDAgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuNzg2XSAgMDEgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuODA3XSAgMDIgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuODI4XSAgMDMgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuODUwXSAgMDQgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuODcxXSAgMDUgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuODkyXSAgMDYgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuOTEzXSAgMDcgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuOTM0XSAgMDggMDAyIDAy
ICAwICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuOTU1XSAgMDkgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDQuOTc2XSAgMGEgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDQuOTk3XSAgMGIgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMDE4XSAgMGMgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMDM5XSAgMGQgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMDYwXSAgMGUgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMDgxXSAgMGYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMTAyXSAgMTAgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMTIzXSAgMTEgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMTQ0XSAgMTIgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMTY1XSAgMTMgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMTg2XSAgMTQgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMjA4XSAgMTUgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMjI5XSAgMTYgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMjUwXSAgMTcgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMjcxXSAgMTggMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMjkyXSAgMTkgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMzEzXSAgMWEgMDAwIDAw
ICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMzM0XSAgMWIgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMzU1XSAgMWMgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuMzc2XSAgMWQgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEg
ICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuMzk3XSAgMWUgMDNGIDBG
ICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuNDE4XSAgMWYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAg
ICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNDM5XSBVc2luZyB2ZWN0
b3ItYmFzZWQgaW5kZXhpbmcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1LjQ1NV0gSVJR
IHRvIHBpbiBtYXBwaW5nczoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1LjQ2OV0gSVJR
MjQwIC0+IDA6Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNDgxXSBJUlE0OCAtPiAw
OjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1LjQ5M10gSVJRNTYgLT4gMDozDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTo0NS41MDVdIElSUTI0MSAtPiAwOjQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjQ1LjUxN10gSVJRNjQgLT4gMDo1DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTo0NS41MjldIElSUTcyIC0+IDA6Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUu
NTQxXSBJUlE4MCAtPiAwOjcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1LjU1M10gSVJR
ODggLT4gMDo4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NS41NjVdIElSUTk2IC0+IDA6
OQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNTc3XSBJUlExMDQgLT4gMDoxMA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNTkwXSBJUlExMTIgLT4gMDoxMQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6NDUuNjAyXSBJUlExMjAgLT4gMDoxMg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NDUuNjE1XSBJUlExMzYgLT4gMDoxMw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6NDUuNjI3XSBJUlExNDQgLT4gMDoxNA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUu
NjQwXSBJUlExNTIgLT4gMDoxNQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNjUyXSBJ
UlExMzcgLT4gMDoxNg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNjY1XSBJUlExOTIg
LT4gMDoxNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNjc3XSBJUlExODQgLT4gMDox
OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNjkwXSBJUlE0MiAtPiAwOjE5DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTo0NS43MDJdIElSUTE4NSAtPiAwOjIyDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNTo0NS43MTRdIElSUTE1NCAtPiAxOjENCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjQ1LjcyN10gSVJRMzQgLT4gMTo0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0
NS43MzhdIElSUTIxNyAtPiAxOjUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1Ljc1MV0g
SVJRMjAxIC0+IDE6OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NDUuNzYzXSBJUlExOTMg
LT4gMTo5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NS43NzVdIElSUTMzIC0+IDE6MTIN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1Ljc4N10gSVJRNDEgLT4gMToxMw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6NDUuODAwXSBJUlExNjkgLT4gMToxNA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzU6NDUuODEyXSBJUlE0OSAtPiAxOjE2DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTo0NS44MjRdIElSUTExNCAtPiAxOjIyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0
NS44MzddIElSUTIwOSAtPiAxOjIzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NS44NDld
IElSUTIwOCAtPiAxOjI0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NS44NjJdIElSUTEz
OCAtPiAxOjI3DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo0NS44NzRdIElSUTU3IC0+IDE6
MjgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1Ljg4Nl0gSVJRMjAwIC0+IDE6MjkNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjQ1Ljg5OV0gSVJRMjE2IC0+IDE6MzANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM1OjQ1LjkxMV0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uIGRvbmUuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni41MjJdICdlJyBwcmVz
c2VkIC0+IGR1bXBpbmcgZXZlbnQtY2hhbm5lbCBpbmZvDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTo1Ni41NDJdIEV2ZW50IGNoYW5uZWwgaW5mb3JtYXRpb24gZm9yIGRvbWFpbiAwOg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTYuNTYxXSBQb2xsaW5nIHZDUFVzOiB7fQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6NTYuNTc0XSAgICAgcG9ydCBbcC9tL3NdDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNTo1Ni41ODddICAgICAgICAxIFswLzAvICAtICAgXTogcz01IG49
MCB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni42MDZdICAgICAgICAyIFsx
LzEvICAtICAgXTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU2LjYy
M10gICAgICAgIDMgWzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NTYuNjQxXSAgICAgICAgNCBbMC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni42NTldICAgICAgICA1IFswLzAvICAtICAgXTog
cz01IG49MCB4PTAgdj0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni42NzddICAgICAg
ICA2IFswLzAvICAtICAgXTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjU2LjY5NV0gICAgICAgIDcgWzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6NTYuNzEzXSAgICAgICAgOCBbMS8wLyAgMCAgIF06IHM9NSBuPTEg
eD0wIHY9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTYuNzMxXSAgICAgICAgOSBbMS8x
LyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni43NDld
ICAgICAgIDEwIFswLzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjU2Ljc2N10gICAgICAgMTEgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzU6NTYuNzg1XSAgICAgICAxMiBbMC8wLyAgLSAgIF06IHM9
NSBuPTEgeD0wIHY9MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTYuODAzXSAgICAgICAx
MyBbMC8wLyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1
Ni44MjFdICAgICAgIDE0IFswLzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjU2LjgzOV0gICAgICAgMTUgWzAvMC8gIC0gICBdOiBzPTUgbj0yIHg9
MCB2PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU2Ljg1N10gICAgICAgMTYgWzEvMS8g
IC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTYuODc1XSAg
ICAgICAxNyBbMC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTo1Ni44OTNdICAgICAgIDE4IFswLzAvICAtICAgXTogcz02IG49MiB4PTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM1OjU2LjkxMF0gICAgICAgMTkgWzAvMC8gIC0gICBdOiBzPTUg
bj0yIHg9MCB2PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU2LjkyOV0gICAgICAgMjAg
WzAvMC8gIC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTYu
OTQ3XSAgICAgICAyMSBbMC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNTo1Ni45NjRdICAgICAgIDIyIFswLzAvICAtICAgXTogcz01IG49MyB4PTAg
dj0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ni45ODNdICAgICAgIDIzIFsxLzEvICAt
ICAgXTogcz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjAwMV0gICAg
ICAgMjQgWzAvMC8gIC0gICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6NTcuMDE5XSAgICAgICAyNSBbMC8wLyAgLSAgIF06IHM9NiBuPTMgeD0wDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNTo1Ny4wMzZdICAgICAgIDI2IFswLzAvICAtICAgXTogcz01IG49
MyB4PTAgdj0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny4wNTVdICAgICAgIDI3IFsw
LzAvICAtICAgXTogcz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjA3
M10gICAgICAgMjggWzAvMC8gIC0gICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzU6NTcuMDkwXSAgICAgICAyOSBbMC8wLyAgLSAgIF06IHM9NSBuPTQgeD0wIHY9
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuMTA5XSAgICAgICAzMCBbMS8xLyAgLSAg
IF06IHM9NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny4xMjddICAgICAg
IDMxIFswLzAvICAtICAgXTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjU3LjE0NF0gICAgICAgMzIgWzAvMC8gIC0gICBdOiBzPTYgbj00IHg9MA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6NTcuMTYyXSAgICAgICAzMyBbMC8wLyAgLSAgIF06IHM9NSBuPTQg
eD0wIHY9MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuMTgxXSAgICAgICAzNCBbMC8w
LyAgLSAgIF06IHM9NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny4xOThd
ICAgICAgIDM1IFswLzAvICAtICAgXTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjU3LjIxNl0gICAgICAgMzYgWzAvMC8gIC0gICBdOiBzPTUgbj01IHg9MCB2PTAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjIzNV0gICAgICAgMzcgWzAvMS8gIC0gICBd
OiBzPTYgbj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuMjUzXSAgICAgICAz
OCBbMC8wLyAgLSAgIF06IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1
Ny4yNzBdICAgICAgIDM5IFswLzAvICAtICAgXTogcz02IG49NSB4PTANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM1OjU3LjI4OF0gICAgICAgNDAgWzAvMC8gIC0gICBdOiBzPTUgbj01IHg9
MCB2PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjMwN10gICAgICAgNDEgWzAvMC8g
IC0gICBdOiBzPTYgbj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuMzI0XSAg
ICAgICA0MiBbMC8wLyAgLSAgIF06IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozNTo1Ny4zNDJdICAgICAgIDQzIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9
NjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjM2Ml0gICAgICAgNDQgWzAvMC8gIC0g
ICBdOiBzPTUgbj0wIHg9MCB2PTkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjM4MV0g
ICAgICAgNDUgWzAvMS8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTINCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjU3LjM5OV0gICAgICAgNDYgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBw
PTI5MSBpPTczDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny40MjBdICAgICAgIDQ3IFsw
LzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTIgaT03NA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6NTcuNDQwXSAgICAgICA0OCBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9Mjkz
IGk9NzUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjQ2MV0gICAgICAgNDkgWzAvMC8g
IC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5NCBpPTc2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NTo1Ny40ODJdICAgICAgIDUwIFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTUgaT03
Nw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuNTAyXSAgICAgICA1MSBbMC8wLyAgLSAg
IF06IHM9NCBuPTAgeD0wIHA9Mjk2IGk9NzgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3
LjUyM10gICAgICAgNTIgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTE3IGk9MTcNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjU0M10gICAgICAgNTMgWzAvMC8gIC0gICBdOiBz
PTQgbj0wIHg9MCBwPTE4IGk9MTgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3LjU2M10g
ICAgICAgNTQgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTEyIGk9MTINCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM1OjU3LjU4M10gICAgICAgNTUgWzAvMC8gIC0gICBdOiBzPTQgbj0w
IHg9MCBwPTEgaT0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny42MDNdICAgICAgIDU2
IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD04IGk9OA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6NTcuNjIzXSAgICAgICA1NyBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MTYg
aT0xNg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcuNjQzXSAgICAgICA1OCBbMC8wLyAg
LSAgIF06IHM9NCBuPTAgeD0wIHA9Mjg4IGk9ODMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1
OjU3LjY2NF0gICAgICAgNTkgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5MCBpPTgx
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny42ODRdICAgICAgIDYwIFswLzAvICAtICAg
XTogcz00IG49MCB4PTAgcD0yODkgaT04Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTcu
NzA1XSAgICAgICA2MSBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTQzDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTo1Ny43MjVdICAgICAgIDYyIFswLzAvICAtICAgXTogcz01
IG49MCB4PTAgdj0zDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny43NDRdICAgICAgIDYz
IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0xIHA9MQ0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6NTcuNzYzXSAgICAgICA2NCBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MSBw
PTINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3Ljc4M10gICAgICAgNjUgWzAvMC8gIC0g
ICBdOiBzPTMgbj0wIHg9MCBkPTEgcD0zDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny44
MDNdICAgICAgIDY2IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0xIHA9NQ0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6NTcuODIzXSAgICAgICA2NyBbMC8wLyAgLSAgIF06IHM9MyBu
PTAgeD0wIGQ9MSBwPTYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3Ljg0Ml0gICAgICAg
NjggWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTEgcD00DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNTo1Ny44NjJdICAgICAgIDY5IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0x
IHA9MjYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3Ljg4Ml0gICAgICAgNzAgWzAvMC8g
IC0gICBdOiBzPTMgbj0wIHg9MCBkPTEgcD0yNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6
NTcuOTAyXSAgICAgICA3MSBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MSBwPTI4DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny45MjJdICAgICAgIDcyIFswLzAvICAtICAgXTog
cz0zIG49MCB4PTAgZD0xIHA9MjkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU3Ljk0Ml0g
ICAgICAgNzMgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTEgcD0zMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzU6NTcuOTYyXSAgICAgICA3NCBbMC8wLyAgLSAgIF06IHM9MyBuPTAg
eD0wIGQ9MSBwPTMxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1Ny45ODJdICAgICAgIDc1
IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0xIHA9MzINCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM1OjU4LjAwMl0gRXZlbnQgY2hhbm5lbCBpbmZvcm1hdGlvbiBmb3IgZG9tYWluIDE6
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC4wMjFdIFBvbGxpbmcgdkNQVXM6IHt9DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC4wMzVdICAgICBwb3J0IFtwL20vc10NClsgMTY1
MS41NzQzNThdIFsoWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC4wNTJdICAgICAgICAxIFsw
LzAvICAtICAgc2NoZWRfZGVsYXllZF0gc106IHM9MyBuPTAgeD0wY2hlZDogUlQgdGhyb3R0
bCBkPTAgcD02M2luZyBhY3RpdmF0ZWQNCg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTgu
MDg0XSAgICAgICAgMiBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTY0DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTo1OC4xMDRdICAgICAgICAzIFswLzEvICAtICAgXTogcz0z
IG49MCB4PTEgZD0wIHA9NjUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjEyNF0gICAg
ICAgIDQgWzAvMS8gIC0gICBdOiBzPTMgbj0wIHg9MSBkPTAgcD02OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzU6NTguMTQ0XSAgICAgICAgNSBbMC8xLyAgLSAgIF06IHM9MyBuPTEgeD0x
IGQ9MCBwPTY2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC4xNjRdICAgICAgICA2IFsw
LzEvICAtICAgXTogcz0zIG49MiB4PTEgZD0wIHA9NjcNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM1OjU4LjE4NF0gICAgICAgIDcgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjIwM10gICAgICAgIDggWzAvMC8gIC0gICBdOiBz
PTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTguMjIxXSAgICAgICAgOSBb
MC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC4y
MzhdICAgICAgIDEwIFswLzAvICAtICAgXTogcz01IG49MCB4PTAgdj0xDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNTo1OC4yNTddICAgICAgIDExIFswLzAvICAtICAgXTogcz02IG49MCB4
PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjI3NV0gICAgICAgMTIgWzAvMS8gIC0g
ICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTguMjkyXSAgICAg
ICAxMyBbMC8wLyAgLSAgIF06IHM9NSBuPTEgeD0wIHY9MA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzU6NTguMzExXSAgICAgICAxNCBbMC8wLyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozNTo1OC4zMjldICAgICAgIDE1IFswLzAvICAtICAgXTogcz02
IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjM0N10gICAgICAgMTYgWzAv
MC8gIC0gICBdOiBzPTUgbj0xIHg9MCB2PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4
LjM2NV0gICAgICAgMTcgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzU6NTguMzgzXSAgICAgICAxOCBbMC8xLyAgLSAgIF06IHM9NiBuPTEgeD0w
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC40MDFdICAgICAgIDE5IFswLzAvICAtICAg
XTogcz01IG49MiB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC40MTldICAg
ICAgIDIwIFswLzAvICAtICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM1OjU4LjQzN10gICAgICAgMjEgWzAvMC8gIC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6NTguNDU1XSAgICAgICAyMiBbMC8wLyAgLSAgIF06IHM9NSBu
PTIgeD0wIHY9MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTguNDczXSAgICAgICAyMyBb
MC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC40
OTFdICAgICAgIDI0IFsxLzEvICAtICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjU4LjUwOV0gICAgICAgMjUgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBw
PTg3IGk9ODQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjUyOV0gICAgICAgMjYgWzAv
MC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTAgcD02OQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzU6NTguNTQ5XSAgICAgICAyNyBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTcw
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC41NjldICAgICAgIDI4IFswLzAvICAtICAg
XTogcz0zIG49MCB4PTAgZD0wIHA9NzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjU4
OV0gICAgICAgMjkgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTAgcD03Mg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzU6NTguNjA5XSAgICAgICAzMCBbMC8wLyAgLSAgIF06IHM9MyBu
PTAgeD0wIGQ9MCBwPTczDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC42MjldICAgICAg
IDMxIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NzQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM1OjU4LjY0OV0gICAgICAgMzIgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBk
PTAgcD03NQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTguNjY5XSAgICAgICAzMyBbMC8w
LyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjEgaT0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NTo1OC42ODldICAgICAgIDM0IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xNyBpPTAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM1OjU4LjcwOV0gICAgICAgMzUgWzAvMC8gIC0gICBd
OiBzPTQgbj0wIHg9MCBwPTE4IGk9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzU6NTguNzI5
XSAgICAgICAzNiBbMC8wLyAgLSAgIF06IHM9MiBuPTAgeD0wIGQ9MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzU6NTguNzQ4XSAgICAgICAzNyBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0w
IHA9MTYgaT0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNTo1OC43NjhdICAgICAgIDM4IFsw
LzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yMCBpPTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM2OjEzLjU0OV0gKioqKioqKioqKiogVk1DQiBBcmVhcyAqKioqKioqKioqKioqKg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzY6MTMuNTY3XSANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2
OjEzLjU3Nl0gPj4+IERvbWFpbiAxIDw8PA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTMu
NTg5XSAJVkNQVSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxMy42MDBdIER1bXBpbmcg
Z3Vlc3QncyBjdXJyZW50IHN0YXRlIGF0IGtleV9oYW5kbGVyLi4uDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNjoxMy42MjFdIFNpemUgb2YgVk1DQiA9IDQwOTYsIHBhZGRyID0gMHg1NDZh
YjUwMDAsIHZhZGRyID0gZmZmZjgzMDU0NmFiNTAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzY6MTMuNjQ3XSBjcl9pbnRlcmNlcHRzID0gMHhmZWYzZmVmMyBkcl9pbnRlcmNlcHRzID0g
MHhmZmZmZmZmZiBleGNlcHRpb25faW50ZXJjZXB0cyA9IDB4NDAwNDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM2OjEzLjY3OF0gZ2VuZXJhbDFfaW50ZXJjZXB0cyA9IDB4YmRjNDAwMGYg
Z2VuZXJhbDJfaW50ZXJjZXB0cyA9IDB4MmU3Zg0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6
MTMuNzAyXSBpb3BtX2Jhc2VfcGEgPSAweDlmY2U5MDAwIG1zcnBtX2Jhc2VfcGEgPSAweDU0
NmFiMjAwMCB0c2Nfb2Zmc2V0ID0gMHhmZmZmZmMwYmNmMmU2NDFhDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNjoxMy43MzNdIHRsYl9jb250cm9sID0gMCB2aW50ciA9IDB4MTFmMDAwMCBp
bnRlcnJ1cHRfc2hhZG93ID0gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTMuNzU2XSBl
eGl0Y29kZSA9IDB4NzggZXhpdGludGluZm8gPSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
NjoxMy43NzNdIGV4aXRpbmZvMSA9IDAgZXhpdGluZm8yID0gMCANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM2OjEzLjc4OV0gbnBfZW5hYmxlID0gMSBndWVzdF9hc2lkID0gMHgzNw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzY6MTMuODA2XSBjcGwgPSAwIGVmZXIgPSAweDFkMDEgc3Rh
ciA9IDB4MjMwMDEwMDAwMDAwMDAgbHN0YXIgPSAweGZmZmZmZmZmODE5ZWNmYjANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM2OjEzLjgzNF0gQ1IwID0gMHgwMDAwMDAwMDgwMDUwMDNiIENS
MiA9IDB4MDAwMDAwMDAwMTJiNzZjMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTMuODU1
XSBDUjMgPSAweDAwMDAwMDAwM2JjYmMwMDAgQ1I0ID0gMHgwMDAwMDAwMDAwMDAwNmYwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxMy44NzddIFJTUCA9IDB4ZmZmZmZmZmY4MWUwM2Vj
OCAgUklQID0gMHhmZmZmZmZmZjgxMDRiNjA1DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjox
My44OTldIFJBWCA9IDB4ZmZmZmZmZmY4MWUxYzU4MCAgUkZMQUdTPTB4MDAwMDAwMDAwMDAw
MDI4Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTMuOTIxXSBEUjYgPSAweDAwMDAwMDAw
ZmZmZjBmZjAsIERSNyA9IDB4MDAwMDAwMDAwMDAwMDQwMA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzY6MTMuOTQzXSBDU1RBUiA9IDB4ZmZmZmZmZmY4MTllZjFiMCBTRk1hc2sgPSAweDAw
MDAwMDAwMDAwNDM3MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjEzLjk2Nl0gS2VybkdT
QmFzZSA9IDB4MDAwMDAwMDAwMDAwMDAwMCBQQVQgPSAweDAwMDcwMTA2MDAwNzAxMDYgDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxMy45ODldIEhfQ1IzID0gMHgwMDAwMDAwNTQ0OTg0
MDAwIENsZWFuQml0cyA9IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0LjAwOF0gQ1M6
IHNlbD0weDAwMTAsIGF0dHI9MHgwMjliLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAw
MDAwMDAwMDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuMDM1XSBEUzogc2Vs
PTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAw
MDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC4wNjJdIFNTOiBzZWw9MHgw
MDE4LCBhdHRyPTB4MGM5MywgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weDAwMDAwMDAwMDAw
MDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0LjA5MF0gRVM6IHNlbD0weDAwMDAs
IGF0dHI9MHgwMDAwLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuMTE3XSBGUzogc2VsPTB4MDAwMCwgYXR0
cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwN2YzNTQyYWFhOTgwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC4xNDRdIEdTOiBzZWw9MHgwMDAwLCBhdHRyPTB4
MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weGZmZmY4ODAwM2Y0MDAwMDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM2OjE0LjE3MV0gR0RUUjogc2VsPTB4MDAwMCwgYXR0cj0weDAw
MDAsIGxpbWl0PTB4MDAwMDAwN2YsIGJhc2U9MHhmZmZmODgwMDNmNDBhMDAwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNjoxNC4xOThdIExEVFI6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAw
LCBsaW1pdD0weDAwMDAwMDAwLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAwMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzY6MTQuMjI2XSBJRFRSOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwg
bGltaXQ9MHgwMDAwMGZmZiwgYmFzZT0weGZmZmZmZmZmZmY1N2IwMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM2OjE0LjI1M10gVFI6IHNlbD0weDAwNDAsIGF0dHI9MHgwMDg5LCBsaW1p
dD0weDAwMDAyMDg3LCBiYXNlPTB4ZmZmZjg4MDAzZjQxMGEwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzY6MTQuMjgwXSAJVkNQVSAxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC4y
OTFdIER1bXBpbmcgZ3Vlc3QncyBjdXJyZW50IHN0YXRlIGF0IGtleV9oYW5kbGVyLi4uDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC4zMTJdIFNpemUgb2YgVk1DQiA9IDQwOTYsIHBh
ZGRyID0gMHg1NDZhYWMwMDAsIHZhZGRyID0gZmZmZjgzMDU0NmFhYzAwMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzY6MTQuMzM4XSBjcl9pbnRlcmNlcHRzID0gMHhmZWYzZmVmMyBkcl9p
bnRlcmNlcHRzID0gMHhmZmZmZmZmZiBleGNlcHRpb25faW50ZXJjZXB0cyA9IDB4NDAwNDAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0LjM2OV0gZ2VuZXJhbDFfaW50ZXJjZXB0cyA9
IDB4YmRjNDAwMGYgZ2VuZXJhbDJfaW50ZXJjZXB0cyA9IDB4MmU3Zg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzY6MTQuMzkzXSBpb3BtX2Jhc2VfcGEgPSAweDlmY2U5MDAwIG1zcnBtX2Jh
c2VfcGEgPSAweDU0NmFhYTAwMCB0c2Nfb2Zmc2V0ID0gMHhmZmZmZmMwYmNmMmU2NDFhDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC40MjRdIHRsYl9jb250cm9sID0gMCB2aW50ciA9
IDB4MTFmMDAwMCBpbnRlcnJ1cHRfc2hhZG93ID0gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
MzY6MTQuNDQ3XSBleGl0Y29kZSA9IDB4NzggZXhpdGludGluZm8gPSAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozNjoxNC40NjRdIGV4aXRpbmZvMSA9IDAgZXhpdGluZm8yID0gMCANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0LjQ4MF0gbnBfZW5hYmxlID0gMSBndWVzdF9hc2lk
ID0gMHgzYQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuNDk3XSBjcGwgPSAwIGVmZXIg
PSAweDFkMDEgc3RhciA9IDB4MjMwMDEwMDAwMDAwMDAgbHN0YXIgPSAweGZmZmZmZmZmODE5
ZWNmYjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0LjUyNV0gQ1IwID0gMHgwMDAwMDAw
MDgwMDUwMDNiIENSMiA9IDB4MDAwMDdmMzU0MGM3MTI3OA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6MzY6MTQuNTQ2XSBDUjMgPSAweDAwMDAwMDAwM2JjYmMwMDAgQ1I0ID0gMHgwMDAwMDAw
MDAwMDAwNmUwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC41NjhdIFJTUCA9IDB4ZmZm
Zjg4MDAzZGJhZmU5OCAgUklQID0gMHhmZmZmZmZmZjgxMDRiNjA1DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozNjoxNC41OTBdIFJBWCA9IDB4MDAwMDAwMDAwMDAwYzI0MCAgUkZMQUdTPTB4
MDAwMDAwMDAwMDAwMDA0Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuNjEyXSBEUjYg
PSAweDAwMDAwMDAwZmZmZjBmZjAsIERSNyA9IDB4MDAwMDAwMDAwMDAwMDQwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6MzY6MTQuNjM0XSBDU1RBUiA9IDB4ZmZmZmZmZmY4MTllZjFiMCBT
Rk1hc2sgPSAweDAwMDAwMDAwMDAwNDM3MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0
LjY1N10gS2VybkdTQmFzZSA9IDB4MDAwMDAwMDAwMDAwMDAwMCBQQVQgPSAweDAwMDcwMTA2
MDAwNzAxMDYgDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC42ODBdIEhfQ1IzID0gMHgw
MDAwMDAwNTQ0OTg0MDAwIENsZWFuQml0cyA9IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2
OjE0LjY5OV0gQ1M6IHNlbD0weDAwMTAsIGF0dHI9MHgwMjliLCBsaW1pdD0weGZmZmZmZmZm
LCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQu
NzI2XSBEUzogc2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJh
c2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC43NTRd
IFNTOiBzZWw9MHgwMDE4LCBhdHRyPTB4MGM5MywgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0w
eDAwMDAwMDAwMDAwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0Ljc4MV0gRVM6
IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAw
MDAwMDAwMDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuODA4XSBGUzogc2Vs
PTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwN2Yz
NTFkODU0NzAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC44MzVdIEdTOiBzZWw9MHgw
MDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weGZmZmY4ODAwM2Y0
NDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0Ljg2Ml0gR0RUUjogc2VsPTB4MDAw
MCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4MDAwMDAwN2YsIGJhc2U9MHhmZmZmODgwMDNmNDRh
MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNC44ODldIExEVFI6IHNlbD0weDAwMDAs
IGF0dHI9MHgwMDAwLCBsaW1pdD0weDAwMDBmZmZmLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTQuOTE3XSBJRFRSOiBzZWw9MHgwMDAwLCBh
dHRyPTB4MDAwMCwgbGltaXQ9MHgwMDAwMGZmZiwgYmFzZT0weGZmZmZmZmZmZmY1N2IwMDAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE0Ljk0NF0gVFI6IHNlbD0weDAwNDAsIGF0dHI9
MHgwMDg5LCBsaW1pdD0weDAwMDAyMDg3LCBiYXNlPTB4ZmZmZjg4MDAzZjQ1MGEwMA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6MzY6MTQuOTcxXSAJVkNQVSAyDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNjoxNC45ODJdIER1bXBpbmcgZ3Vlc3QncyBjdXJyZW50IHN0YXRlIGF0IGtleV9o
YW5kbGVyLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS4wMDNdIFNpemUgb2YgVk1D
QiA9IDQwOTYsIHBhZGRyID0gMHg1NDZhYTUwMDAsIHZhZGRyID0gZmZmZjgzMDU0NmFhNTAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTUuMDI5XSBjcl9pbnRlcmNlcHRzID0gMHhm
ZWYzZmVmMyBkcl9pbnRlcmNlcHRzID0gMHhmZmZmZmZmZiBleGNlcHRpb25faW50ZXJjZXB0
cyA9IDB4NDAwNDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjA2MF0gZ2VuZXJhbDFf
aW50ZXJjZXB0cyA9IDB4YmRjNDAwMGYgZ2VuZXJhbDJfaW50ZXJjZXB0cyA9IDB4MmU3Zg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTUuMDg0XSBpb3BtX2Jhc2VfcGEgPSAweDlmY2U5
MDAwIG1zcnBtX2Jhc2VfcGEgPSAweDU0NmFhMjAwMCB0c2Nfb2Zmc2V0ID0gMHhmZmZmZmMw
YmNmMmU2NDFhDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS4xMTVdIHRsYl9jb250cm9s
ID0gMCB2aW50ciA9IDB4MTFmMDAwMCBpbnRlcnJ1cHRfc2hhZG93ID0gMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6MzY6MTUuMTM4XSBleGl0Y29kZSA9IDB4NzggZXhpdGludGluZm8gPSAw
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS4xNTVdIGV4aXRpbmZvMSA9IDAgZXhpdGlu
Zm8yID0gMCANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjE3MV0gbnBfZW5hYmxlID0g
MSBndWVzdF9hc2lkID0gMHgyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS4xODhdIGNw
bCA9IDAgZWZlciA9IDB4MWQwMSBzdGFyID0gMHgyMzAwMTAwMDAwMDAwMCBsc3RhciA9IDB4
ZmZmZmZmZmY4MTllY2ZiMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTUuMjE2XSBDUjAg
PSAweDAwMDAwMDAwODAwNTAwM2IgQ1IyID0gMHgwMDAwMDAwMDAxMzY5YzMwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozNjoxNS4yMzddIENSMyA9IDB4MDAwMDAwMDAzYmNiYzAwMCBDUjQg
PSAweDAwMDAwMDAwMDAwMDA2ZTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjI1OV0g
UlNQID0gMHhmZmZmODgwMDNkYmI3ZTk4ICBSSVAgPSAweGZmZmZmZmZmODEwNGI2MDUNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjI4MV0gUkFYID0gMHhmZmZmODgwMDNkYjliOGQw
ICBSRkxBR1M9MHgwMDAwMDAwMDAwMDAwMjg2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjox
NS4zMDNdIERSNiA9IDB4MDAwMDAwMDBmZmZmMGZmMCwgRFI3ID0gMHgwMDAwMDAwMDAwMDAw
NDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS4zMjRdIENTVEFSID0gMHhmZmZmZmZm
ZjgxOWVmMWIwIFNGTWFzayA9IDB4MDAwMDAwMDAwMDA0MzcwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6MzY6MTUuMzQ3XSBLZXJuR1NCYXNlID0gMHgwMDAwMDAwMDAwMDAwMDAwIFBBVCA9
IDB4MDAwNzAxMDYwMDA3MDEwNiANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjM3MV0g
SF9DUjMgPSAweDAwMDAwMDA1NDQ5ODQwMDAgQ2xlYW5CaXRzID0gMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6MzY6MTUuMzkwXSBDUzogc2VsPTB4MDAxMCwgYXR0cj0weDAyOWIsIGxpbWl0
PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozNjoxNS40MTddIERTOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhm
ZmZmZmZmZiwgYmFzZT0weDAwMDAwMDAwMDAwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM2OjE1LjQ0NF0gU1M6IHNlbD0weDAwMTgsIGF0dHI9MHgwYzkzLCBsaW1pdD0weGZmZmZm
ZmZmLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6
MTUuNDcxXSBFUzogc2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYs
IGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS40
OThdIEZTOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFz
ZT0weDAwMDA3ZjM1MjliMWU3MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjUyNV0g
R1M6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4
ZmZmZjg4MDAzZjQ4MDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTUuNTUyXSBHRFRS
OiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHgwMDAwMDA3ZiwgYmFzZT0weGZm
ZmY4ODAwM2Y0OGEwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM2OjE1LjU4MF0gTERUUjog
c2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4MDAwMGZmZmYsIGJhc2U9MHgwMDAw
MDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS42MDhdIElEVFI6IHNl
bD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1pdD0weDAwMDAwZmZmLCBiYXNlPTB4ZmZmZmZm
ZmZmZjU3YjAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6MzY6MTUuNjM1XSBUUjogc2VsPTB4
MDA0MCwgYXR0cj0weDAwODksIGxpbWl0PTB4MDAwMDIwODcsIGJhc2U9MHhmZmZmODgwMDNm
NDkwYTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozNjoxNS42NjJdICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqDQpbIDE3NDYuNDcxOTE5XSB4ZW5fYnJpZGdlOiBw
b3J0IDEodmlmMS4wKSBlbnRlcmVkIGRpc2FibGVkIHN0YXRlDQpbIDE3NDYuNTEyNDM3XSB4
ZW5fYnJpZGdlOiBwb3J0IDIodmlmMS4wLWVtdSkgZW50ZXJlZCBkaXNhYmxlZCBzdGF0ZQ0K
WyAxNzQ2LjU0MDIwMl0gZGV2aWNlIHZpZjEuMC1lbXUgbGVmdCBwcm9taXNjdW91cyBtb2Rl
DQpbIDE3NDYuNTYzODI1XSB4ZW5fYnJpZGdlOiBwb3J0IDIodmlmMS4wLWVtdSkgZW50ZXJl
ZCBkaXNhYmxlZCBzdGF0ZQ0KWyAxNzQ2LjY0MDY1MV0geGVuX2JyaWRnZTogcG9ydCAxKHZp
ZjEuMCkgZW50ZXJlZCBkaXNhYmxlZCBzdGF0ZQ0KWyAxNzQ2LjY2ODQ4OV0gZGV2aWNlIHZp
ZjEuMCBsZWZ0IHByb21pc2N1b3VzIG1vZGUNClsgMTc0Ni42OTEwNjBdIHhlbl9icmlkZ2U6
IHBvcnQgMSh2aWYxLjApIGVudGVyZWQgZGlzYWJsZWQgc3RhdGUNClsgMTc0Ni43NzEzNzBd
IHBjaWJhY2sgMDAwMDowOTowMC4wOiByZXN0b3JpbmcgY29uZmlnIHNwYWNlIGF0IG9mZnNl
dCAweDQgKHdhcyAweDEwMDQwMCwgd3JpdGluZyAweDEwMDAwNykNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjI3LjQ4N10gSVJRIGluZm9ybWF0aW9uOg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MjcuNTAwXSAgICBJUlE6ICAgMCBhZmZpbml0eTowMSB2ZWM6ZjAgdHlwZT1JTy1B
UElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAwIHRpbWVyX2ludGVycnVwdCgpDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozODoyNy41MzFdICAgIElSUTogICAxIGFmZmluaXR5OjAxIHZlYzoz
MCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMzQgaW4tZmxpZ2h0PTAgZG9t
YWluLWxpc3Q9MDogIDEoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI3LjU2N10g
ICAgSVJROiAgIDMgYWZmaW5pdHk6MDEgdmVjOjM4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0
YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjI3LjU5N10gICAgSVJROiAgIDQgYWZmaW5pdHk6MDEgdmVjOmYxIHR5cGU9SU8tQVBJQy1l
ZGdlICAgIHN0YXR1cz0wMDAwMDAwMCBuczE2NTUwX2ludGVycnVwdCgpDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozODoyNy42MjldICAgIElSUTogICA1IGFmZmluaXR5OjAxIHZlYzo0MCB0
eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODoyNy42NTldICAgIElSUTogICA2IGFmZmluaXR5OjAx
IHZlYzo0OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyNy42OTBdICAgIElSUTogICA3IGFm
ZmluaXR5OjAxIHZlYzo1MCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyNy43MjBdICAgIElS
UTogICA4IGFmZmluaXR5OjAxIHZlYzo1OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9
MDAwMDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogIDgoLS0tKSwNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjI3Ljc1Nl0gICAgSVJROiAgIDkgYWZmaW5pdHk6M2YgdmVjOjYw
IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI3Ljc4Nl0gICAgSVJROiAgMTAgYWZmaW5pdHk6
MDEgdmVjOjY4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI3LjgxNl0gICAgSVJROiAgMTEg
YWZmaW5pdHk6MDEgdmVjOjcwIHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAw
MiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI3Ljg0N10gICAg
SVJROiAgMTIgYWZmaW5pdHk6MDEgdmVjOjc4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1
cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOiAxMigtLS0pLA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MjcuODgyXSAgICBJUlE6ICAxMyBhZmZpbml0eTozZiB2ZWM6
ODggdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3Vu
ZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjcuOTEzXSAgICBJUlE6ICAxNCBhZmZpbml0
eTowMSB2ZWM6OTAgdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBl
ZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjcuOTQzXSAgICBJUlE6ICAx
NSBhZmZpbml0eTowMSB2ZWM6OTggdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAw
MDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjcuOTc0XSAg
ICBJUlE6ICAxNiBhZmZpbml0eTowMSB2ZWM6ODkgdHlwZT1JTy1BUElDLWxldmVsICAgc3Rh
dHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6IDE2KC0tLSksDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODoyOC4wMDldICAgIElSUTogIDE3IGFmZmluaXR5OjAxIHZl
YzpjMCB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAg
ZG9tYWluLWxpc3Q9MDogMTcoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4LjA0
NV0gICAgSVJROiAgMTggYWZmaW5pdHk6MDEgdmVjOmI4IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOiAxOCgtLS0pLA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMDgxXSAgICBJUlE6ICAxOSBhZmZpbml0eToz
ZiB2ZWM6MmEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwg
dW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMTExXSAgICBJUlE6ICAyMiBh
ZmZpbml0eTozZiB2ZWM6YjkgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAy
IG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMTQxXSAgICBJ
UlE6ICAyNSBhZmZpbml0eTozZiB2ZWM6OWEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVz
PTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6Mjgu
MTcyXSAgICBJUlE6ICAyOCBhZmZpbml0eTozZiB2ZWM6MjIgdHlwZT1JTy1BUElDLWxldmVs
ICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MjguMjAyXSAgICBJUlE6ICAyOSBhZmZpbml0eTozZiB2ZWM6ZDkgdHlwZT1JTy1B
UElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6MjguMjMzXSAgICBJUlE6ICAzMiBhZmZpbml0eTowMiB2ZWM6Yzkg
dHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMjYzXSAgICBJUlE6ICAzMyBhZmZpbml0eToz
ZiB2ZWM6YzEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwg
dW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMjk0XSAgICBJUlE6ICAzNiBh
ZmZpbml0eTozZiB2ZWM6MjEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAy
IG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguMzI0XSAgICBJ
UlE6ICAzNyBhZmZpbml0eTozZiB2ZWM6MjkgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVz
PTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6Mjgu
MzU0XSAgICBJUlE6ICAzOCBhZmZpbml0eTozZiB2ZWM6YTkgdHlwZT1JTy1BUElDLWxldmVs
ICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MjguMzg1XSAgICBJUlE6ICA0MCBhZmZpbml0eTozZiB2ZWM6MzEgdHlwZT1JTy1B
UElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6MjguNDE1XSAgICBJUlE6ICA0NiBhZmZpbml0eTozZiB2ZWM6NzIg
dHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguNDQ2XSAgICBJUlE6ICA0NyBhZmZpbml0eToz
ZiB2ZWM6ZDEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwg
dW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguNDc2XSAgICBJUlE6ICA0OCBh
ZmZpbml0eTozZiB2ZWM6ZDAgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAy
IG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguNTA2XSAgICBJ
UlE6ICA1MSBhZmZpbml0eTozZiB2ZWM6OGEgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVz
PTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6Mjgu
NTM3XSAgICBJUlE6ICA1MiBhZmZpbml0eTozZiB2ZWM6MzkgdHlwZT1JTy1BUElDLWxldmVs
ICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MjguNTY3XSAgICBJUlE6ICA1MyBhZmZpbml0eTozZiB2ZWM6YzggdHlwZT1JTy1B
UElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6MjguNTk4XSAgICBJUlE6ICA1NCBhZmZpbml0eTozZiB2ZWM6ZDgg
dHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjguNjI4XSAgICBJUlE6ICA1NiBhZmZpbml0eTow
MSB2ZWM6MjggdHlwZT1BTUQtSU9NTVUtTVNJICAgc3RhdHVzPTAwMDAwMDAwIGlvbW11X2lu
dGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4LjY2MV0gICAg
SVJROiAgNTcgYWZmaW5pdHk6MTAgdmVjOmEwIHR5cGU9SFBFVC1NU0kgICAgICAgIHN0YXR1
cz0wMDAwMDAwMCBocGV0X2ludGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjI4LjY5NF0gICAgSVJROiAgNTggYWZmaW5pdHk6MDIgdmVjOmE4IHR5cGU9SFBF
VC1NU0kgICAgICAgIHN0YXR1cz0wMDAwMDAwMCBocGV0X2ludGVycnVwdF9oYW5kbGVyKCkN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4LjcyN10gICAgSVJROiAgNTkgYWZmaW5pdHk6
MDQgdmVjOmIwIHR5cGU9SFBFVC1NU0kgICAgICAgIHN0YXR1cz0wMDAwMDAwMCBocGV0X2lu
dGVycnVwdF9oYW5kbGVyKCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4Ljc1OV0gICAg
SVJROiAgNjAgYWZmaW5pdHk6M2YgdmVjOjQxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1
cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4
Ljc5MF0gICAgSVJROiAgNjEgYWZmaW5pdHk6M2YgdmVjOjQ5IHR5cGU9UENJLU1TSSAgICAg
ICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjI4LjgyMF0gICAgSVJROiAgNjIgYWZmaW5pdHk6M2YgdmVjOjUxIHR5cGU9UENJ
LU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjI4Ljg1MV0gICAgSVJROiAgNjMgYWZmaW5pdHk6M2YgdmVjOjU5
IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4Ljg4MV0gICAgSVJROiAgNjQgYWZmaW5pdHk6
M2YgdmVjOjYxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4LjkxMl0gICAgSVJROiAgNjUg
YWZmaW5pdHk6M2YgdmVjOjY5IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAw
MiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4Ljk0Ml0gICAg
SVJROiAgNjYgYWZmaW5pdHk6M2YgdmVjOjcxIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1
cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI4
Ljk3Ml0gICAgSVJROiAgNjcgYWZmaW5pdHk6M2YgdmVjOjc5IHR5cGU9UENJLU1TSSAgICAg
ICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjI5LjAwM10gICAgSVJROiAgNjggYWZmaW5pdHk6M2YgdmVjOjgxIHR5cGU9UENJ
LU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjI5LjAzM10gICAgSVJROiAgNjkgYWZmaW5pdHk6M2YgdmVjOjkx
IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjA2NF0gICAgSVJROiAgNzAgYWZmaW5pdHk6
M2YgdmVjOjk5IHR5cGU9UENJLU1TSS8tWCAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjA5NF0gICAgSVJROiAgNzEg
YWZmaW5pdHk6M2YgdmVjOmExIHR5cGU9UENJLU1TSS8tWCAgICAgIHN0YXR1cz0wMDAwMDAw
MiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjEyNF0gICAg
SVJROiAgNzIgYWZmaW5pdHk6M2YgdmVjOmIxIHR5cGU9UENJLU1TSS8tWCAgICAgIHN0YXR1
cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5
LjE1NV0gICAgSVJROiAgNzMgYWZmaW5pdHk6MDEgdmVjOjMyIHR5cGU9UENJLU1TSSAgICAg
ICAgIHN0YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5MSgtLS0p
LA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjkuMTkwXSAgICBJUlE6ICA3NCBhZmZpbml0
eTowMSB2ZWM6M2EgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZs
aWdodD0wIGRvbWFpbi1saXN0PTA6MjkyKC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODoyOS4yMjZdICAgIElSUTogIDc1IGFmZmluaXR5OjAxIHZlYzo0MiB0eXBlPVBDSS1NU0kg
ICAgICAgICBzdGF0dXM9MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyOTMo
LS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjI2Ml0gICAgSVJROiAgNzYgYWZm
aW5pdHk6MDEgdmVjOjRhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAzMCBp
bi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5NCgtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MjkuMjk3XSAgICBJUlE6ICA3NyBhZmZpbml0eTowMSB2ZWM6NTIgdHlwZT1QQ0kt
TVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6
Mjk1KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS4zMzNdICAgIElSUTogIDc4
IGFmZmluaXR5OjAxIHZlYzo1YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAw
MzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyOTYoLS0tKSwNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjI5LjM2OV0gICAgSVJROiAgNzkgYWZmaW5pdHk6M2YgdmVjOjYyIHR5cGU9
UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjI5LjM5OV0gICAgSVJROiAgODAgYWZmaW5pdHk6M2YgdmVj
OjZhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91
bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjQyOV0gICAgSVJROiAgODEgYWZmaW5p
dHk6MDEgdmVjOjdhIHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAxMCBpbi1m
bGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5MCgtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6MjkuNDY1XSAgICBJUlE6ICA4MiBhZmZpbml0eTowMSB2ZWM6OTIgdHlwZT1QQ0ktTVNJ
ICAgICAgICAgc3RhdHVzPTAwMDAwMDEwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6Mjg5
KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS41MDFdICAgIElSUTogIDgzIGFm
ZmluaXR5OjAxIHZlYzphMiB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMzAg
aW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyODgoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjI5LjUzNl0gRGlyZWN0IHZlY3RvciBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM4OjI5LjU1Ml0gICAgMHgyMCAtPiBpcnFfbW92ZV9jbGVhbnVwX2ludGVy
cnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS41NzFdICAgIDB4ZjkgLT4gcG11
X2FwaWNfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjI5LjU4OF0gICAg
MHhmYSAtPiBhcGljX3RpbWVyX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODoyOS42MDVdICAgIDB4ZmIgLT4gY2FsbF9mdW5jdGlvbl9pbnRlcnJ1cHQoKQ0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MjkuNjIzXSAgICAweGZjIC0+IGV2ZW50X2NoZWNrX2ludGVy
cnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS42NDFdICAgIDB4ZmQgLT4gaW52
YWxpZGF0ZV9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjkuNjU4XSAg
ICAweGZlIC0+IGVycm9yX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoy
OS42NzVdICAgIDB4ZmYgLT4gc3B1cmlvdXNfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjI5LjY5Ml0gSU8tQVBJQyBpbnRlcnJ1cHQgaW5mb3JtYXRpb246DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODoyOS43MDhdICAgICBJUlEgIDAgVmVjMjQwOg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MjkuNzIyXSAgICAgICBBcGljIDB4MDAsIFBpbiAgMjogdmVj
PWYwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRy
aWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS43NTdd
ICAgICBJUlEgIDEgVmVjIDQ4Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjkuNzcxXSAg
ICAgICBBcGljIDB4MDAsIFBpbiAgMTogdmVjPTMwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODoyOS44MDZdICAgICBJUlEgIDMgVmVjIDU2Og0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MjkuODIwXSAgICAgICBBcGljIDB4MDAsIFBpbiAgMzogdmVj
PTM4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRy
aWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS44NTZd
ICAgICBJUlEgIDQgVmVjMjQxOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjkuODY5XSAg
ICAgICBBcGljIDB4MDAsIFBpbiAgNDogdmVjPWYxIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODoyOS45MDVdICAgICBJUlEgIDUgVmVjIDY0Og0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MjkuOTE4XSAgICAgICBBcGljIDB4MDAsIFBpbiAgNTogdmVj
PTQwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRy
aWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoyOS45NTRd
ICAgICBJUlEgIDYgVmVjIDcyOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MjkuOTY3XSAg
ICAgICBBcGljIDB4MDAsIFBpbiAgNjogdmVjPTQ4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozMC4wMDNdICAgICBJUlEgIDcgVmVjIDgwOg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MzAuMDE2XSAgICAgICBBcGljIDB4MDAsIFBpbiAgNzogdmVj
PTUwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRy
aWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC4wNTJd
ICAgICBJUlEgIDggVmVjIDg4Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuMDY2XSAg
ICAgICBBcGljIDB4MDAsIFBpbiAgODogdmVjPTU4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozMC4xMDFdICAgICBJUlEgIDkgVmVjIDk2Og0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6MzAuMTE1XSAgICAgICBBcGljIDB4MDAsIFBpbiAgOTogdmVj
PTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRy
aWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuMTUx
XSAgICAgSVJRIDEwIFZlYzEwNDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjE2NF0g
ICAgICAgQXBpYyAweDAwLCBQaW4gMTA6IHZlYz02OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwg
c3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuMjAwXSAgICAgSVJRIDExIFZlYzExMjoNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjMwLjIxM10gICAgICAgQXBpYyAweDAwLCBQaW4gMTE6IHZl
Yz03MCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0
cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuMjQ5
XSAgICAgSVJRIDEyIFZlYzEyMDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjI2Ml0g
ICAgICAgQXBpYyAweDAwLCBQaW4gMTI6IHZlYz03OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwg
c3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuMjk4XSAgICAgSVJRIDEzIFZlYzEzNjoNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjMwLjMxMl0gICAgICAgQXBpYyAweDAwLCBQaW4gMTM6IHZl
Yz04OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0
cmlnPUUgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjM0
N10gICAgIElSUSAxNCBWZWMxNDQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC4zNjFd
ICAgICAgIEFwaWMgMHgwMCwgUGluIDE0OiB2ZWM9OTAgZGVsaXZlcnk9TG9QcmkgZGVzdD1M
IHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjM5N10gICAgIElSUSAxNSBWZWMxNTI6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozMC40MTBdICAgICAgIEFwaWMgMHgwMCwgUGluIDE1OiB2
ZWM9OTggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAg
dHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjQ0
Nl0gICAgIElSUSAxNiBWZWMxMzc6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC40NTld
ICAgICAgIEFwaWMgMHgwMCwgUGluIDE2OiB2ZWM9ODkgZGVsaXZlcnk9Rml4ZWQgZGVzdD1M
IHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MCBkZXN0X2lkOjENCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjQ5NV0gICAgIElSUSAxNyBWZWMxOTI6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozMC41MDhdICAgICAgIEFwaWMgMHgwMCwgUGluIDE3OiB2
ZWM9YzAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAg
dHJpZz1MIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjU0
NF0gICAgIElSUSAxOCBWZWMxODQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC41NThd
ICAgICAgIEFwaWMgMHgwMCwgUGluIDE4OiB2ZWM9YjggZGVsaXZlcnk9Rml4ZWQgZGVzdD1M
IHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MCBkZXN0X2lkOjENCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjU5M10gICAgIElSUSAxOSBWZWMgNDI6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozMC42MDddICAgICAgIEFwaWMgMHgwMCwgUGluIDE5OiB2
ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAg
dHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC42
NDNdICAgICBJUlEgMjIgVmVjMTg1Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuNjU2
XSAgICAgICBBcGljIDB4MDAsIFBpbiAyMjogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9
TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuNjkyXSAgICAgSVJRIDI1IFZlYzE1NDoNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjcwNV0gICAgICAgQXBpYyAweDAxLCBQaW4gIDE6
IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9
MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMw
Ljc0MV0gICAgIElSUSAyOCBWZWMgMzQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC43
NTVdICAgICAgIEFwaWMgMHgwMSwgUGluICA0OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYz
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC43OTFdICAgICBJUlEgMjkgVmVjMjE3Og0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuODA0XSAgICAgICBBcGljIDB4MDEsIFBpbiAg
NTogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGly
cj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6
MzAuODQwXSAgICAgSVJRIDMyIFZlYzIwMToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMw
Ljg1NF0gICAgICAgQXBpYyAweDAxLCBQaW4gIDg6IHZlYz1jOSBkZWxpdmVyeT1GaXhlZCBk
ZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6
Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzAuODg5XSAgICAgSVJRIDMzIFZlYzE5MzoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMwLjkwM10gICAgICAgQXBpYyAweDAxLCBQaW4g
IDk6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBp
cnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjMwLjkzOV0gICAgIElSUSAzNiBWZWMgMzM6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODoz
MC45NTJdICAgICAgIEFwaWMgMHgwMSwgUGluIDEyOiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQg
ZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lk
OjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMC45ODhdICAgICBJUlEgMzcgVmVjIDQx
Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzEuMDAyXSAgICAgICBBcGljIDB4MDEsIFBp
biAxMzogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0x
IGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6MzEuMDM3XSAgICAgSVJRIDM4IFZlYzE2OToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjMxLjA1MV0gICAgICAgQXBpYyAweDAxLCBQaW4gMTQ6IHZlYz0wMCBkZWxpdmVyeT1GaXhl
ZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3Rf
aWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMxLjA4N10gICAgIElSUSA0MCBWZWMg
NDk6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMS4xMDBdICAgICAgIEFwaWMgMHgwMSwg
UGluIDE2OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5
PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODozMS4xMzZdICAgICBJUlEgNDYgVmVjMTE0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6MzEuMTUwXSAgICAgICBBcGljIDB4MDEsIFBpbiAyMjogdmVjPTAwIGRlbGl2ZXJ5PUZp
eGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVz
dF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzEuMTg2XSAgICAgSVJRIDQ3IFZl
YzIwOToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMxLjE5OV0gICAgICAgQXBpYyAweDAx
LCBQaW4gMjM6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJp
dHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjMxLjIzNV0gICAgIElSUSA0OCBWZWMyMDg6DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODozMS4yNDldICAgICAgIEFwaWMgMHgwMSwgUGluIDI0OiB2ZWM9MDAgZGVsaXZlcnk9
Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBk
ZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMS4yODRdICAgICBJUlEgNTEg
VmVjMTM4Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzEuMjk4XSAgICAgICBBcGljIDB4
MDEsIFBpbiAyNzogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xh
cml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6MzEuMzM0XSAgICAgSVJRIDUyIFZlYyA1NzoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjMxLjM0N10gICAgICAgQXBpYyAweDAxLCBQaW4gMjg6IHZlYz0wMCBkZWxpdmVy
eT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0x
IGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjMxLjM4M10gICAgIElSUSA1
MyBWZWMyMDA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozMS4zOTddICAgICAgIEFwaWMg
MHgwMSwgUGluIDI5OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozODozMS40MzNdICAgICBJUlEgNTQgVmVjMjE2Og0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6MzEuNDQ2XSAgICAgICBBcGljIDB4MDEsIFBpbiAzMDogdmVjPTAwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzQuNDg5XSAnSScgcHJl
c3NlZCAtPiBkdW1waW5nIEhWTSBpcnEgaW5mbw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6
MzkuMDY4XSA9PT09IFBDSSBkZXZpY2VzID09PT0NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjM5LjA4Ml0gPT09PSBzZWdtZW50IDAwMDAgPT09PQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6MzkuMDk2XSAwMDAwOjBmOjAwLjEgLSBkb20gMCAgIC0gTVNJcyA8IDgzID4NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjM5LjExNV0gMDAwMDowZjowMC4wIC0gZG9tIDAgICAtIE1T
SXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS4xMzJdIDAwMDA6MGU6MDAuMSAt
IGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuMTQ5XSAw
MDAwOjBlOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM4OjM5LjE2N10gMDAwMDowZDowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA4MSA+DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODozOS4xODVdIDAwMDA6MGM6MDAuMCAtIGRvbSAwICAgLSBN
U0lzIDwgODIgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuMjAzXSAwMDAwOjBiOjAw
LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjIy
MV0gMDAwMDowYTowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODozOS4yMzhdIDAwMDA6MDk6MDAuMSAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuMjU1XSAwMDAwOjA5OjAwLjAgLSBkb20gMCAgIC0g
TVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjI3M10gMDAwMDowODowMC4w
IC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS4yOTBd
IDAwMDA6MDc6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MzkuMzA4XSAwMDAwOjA2OjAyLjAgLSBkb20gMCAgIC0gTVNJcyA8IDcyID4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjMyNl0gMDAwMDowNjowMS4wIC0gZG9tIDAgICAt
IE1TSXMgPCA3MSA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS4zNDRdIDAwMDA6MDU6
MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgNzAgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6
MzkuMzYyXSAwMDAwOjA0OjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM4OjM5LjM4MF0gMDAwMDowMzowNi4wIC0gZG9tIDAgICAtIE1TSXMgPCA+
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS4zOTddIDAwMDA6MDA6MTguNCAtIGRvbSAw
ICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuNDE1XSAwMDAwOjAw
OjE4LjMgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5
LjQzMl0gMDAwMDowMDoxOC4yIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozODozOS40NDldIDAwMDA6MDA6MTguMSAtIGRvbSAwICAgLSBNU0lzIDwgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuNDY3XSAwMDAwOjAwOjE4LjAgLSBkb20gMCAg
IC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjQ4NF0gMDAwMDowMDox
Ni4yIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS41
MDJdIDAwMDA6MDA6MTYuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6MzkuNTE5XSAwMDAwOjAwOjE1LjAgLSBkb20gMCAgIC0gTVNJcyA8IDY5ID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjUzN10gMDAwMDowMDoxNC41IC0gZG9tIDAg
ICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS41NTVdIDAwMDA6MDA6
MTQuNCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6Mzku
NTcyXSAwMDAwOjAwOjE0LjMgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjM5LjU5MF0gMDAwMDowMDoxNC4yIC0gZG9tIDAgICAtIE1TSXMgPCA+DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS42MDddIDAwMDA6MDA6MTQuMCAtIGRvbSAwICAg
LSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuNjI0XSAwMDAwOjAwOjEz
LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjY0
Ml0gMDAwMDowMDoxMy4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODozOS42NTldIDAwMDA6MDA6MTIuMiAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuNjc3XSAwMDAwOjAwOjEyLjAgLSBkb20gMCAgIC0g
TVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjY5NF0gMDAwMDowMDoxMS4w
IC0gZG9tIDAgICAtIE1TSXMgPCA3MyA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS43
MTJdIDAwMDA6MDA6MGQuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjggPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6MzkuNzMwXSAwMDAwOjAwOjBjLjAgLSBkb20gMCAgIC0gTVNJcyA8IDY3
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5Ljc0OV0gMDAwMDowMDowYi4wIC0gZG9t
IDAgICAtIE1TSXMgPCA2NiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS43NjddIDAw
MDA6MDA6MGEuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjUgPg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6MzkuNzg1XSAwMDAwOjAwOjA5LjAgLSBkb20gMCAgIC0gTVNJcyA8IDY0ID4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjM5LjgwM10gMDAwMDowMDowNi4wIC0gZG9tIDAgICAt
IE1TSXMgPCA2MyA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS44MjFdIDAwMDA6MDA6
MDUuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjIgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6
MzkuODQwXSAwMDAwOjAwOjAzLjAgLSBkb20gMCAgIC0gTVNJcyA8IDYxID4NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjM5Ljg1OF0gMDAwMDowMDowMi4wIC0gZG9tIDAgICAtIE1TSXMg
PCA2MCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODozOS44NzZdIDAwMDA6MDA6MDAuMCAt
IGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6MzkuODkzXSAw
MDAwOjAwOjAwLjIgLSBkb20gMzI3NTQgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6NDMuNTkxXSBNU0kgaW5mb3JtYXRpb246DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODo0My42MDRdICBNU0kgICAgIDU2IHZlYz0yOCBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxv
ZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMC8/DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODo0My42MzNdICBIUEVUICAgIDU3IHZlYz1hMCBsb3dlc3QgIGVkZ2UgICBhc3NlcnQg
IGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAxMCBtYXNrPTEvMC8/DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODo0My42NjJdICBIUEVUICAgIDU4IHZlYz1hOCBsb3dlc3QgIGVkZ2UgICBhc3Nl
cnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMiBtYXNrPTEvMC8/DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozODo0My42OTFdICBIUEVUICAgIDU5IHZlYz1iMCBsb3dlc3QgIGVkZ2UgICBh
c3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwNCBtYXNrPTEvMC8/DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozODo0My43MTldICBNU0kgICAgIDYwIHZlYz00MSBsb3dlc3QgIGVkZ2Ug
ICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozODo0My43NDhdICBNU0kgICAgIDYxIHZlYz00OSBsb3dlc3QgIGVk
Z2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODo0My43NzddICBNU0kgICAgIDYyIHZlYz01MSBsb3dlc3Qg
IGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My44MDZdICBNU0kgICAgIDYzIHZlYz01OSBsb3dl
c3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My44MzVdICBNU0kgICAgIDY0IHZlYz02MSBs
b3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAv
MS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My44NjRdICBNU0kgICAgIDY1IHZlYz02
OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNr
PTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My44OTNdICBNU0kgICAgIDY2IHZl
Yz03MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBt
YXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My45MjFdICBNU0kgICAgIDY3
IHZlYz03OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAz
ZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My45NTBdICBNU0kgICAg
IDY4IHZlYz04MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAw
MDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0My45NzldICBNU0kg
ICAgIDY5IHZlYz05MSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0w
MDAwMDAzZiBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4wMDhdICBN
U0kgICAgIDcwIHZlYz05OSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVz
dD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4wMzdd
ICBNU0kgICAgIDcxIHZlYz1hMSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3Qg
ZGVzdD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4w
NjZdICBNU0kgICAgIDcyIHZlYz1iMSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dl
c3QgZGVzdD0wMDAwMDAzZiBtYXNrPTEvMS8xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0
NC4wOTVdICBNU0kgICAgIDczIHZlYz0zMiBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBs
b3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODo0NC4xMjNdICBNU0kgICAgIDc0IHZlYz0zYSBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxv
ZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODo0NC4xNTJdICBNU0kgICAgIDc1IHZlYz00MiBsb3dlc3QgIGVkZ2UgICBhc3NlcnQg
IGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODo0NC4xODFdICBNU0kgICAgIDc2IHZlYz00YSBsb3dlc3QgIGVkZ2UgICBhc3Nl
cnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozODo0NC4yMTBdICBNU0kgICAgIDc3IHZlYz01MiBsb3dlc3QgIGVkZ2UgICBh
c3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozODo0NC4yMzldICBNU0kgICAgIDc4IHZlYz01YSBsb3dlc3QgIGVkZ2Ug
ICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozODo0NC4yNjhdICBNU0kgICAgIDc5IHZlYz02MiBsb3dlc3QgIGVk
Z2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODo0NC4yOTddICBNU0kgICAgIDgwIHZlYz02YSBsb3dlc3Qg
IGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAzZiBtYXNrPTAvMS8/DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4zMjVdICBNU0kgICAgIDgxIHZlYz03YSBsb3dl
c3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAvMS8/
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4zNTRdICBNU0kgICAgIDgyIHZlYz05MiBs
b3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNrPTAv
MS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0NC4zODNdICBNU0kgICAgIDgzIHZlYz1h
MiBsb3dlc3QgIGVkZ2UgICBhc3NlcnQgIGxvZyBsb3dlc3QgZGVzdD0wMDAwMDAwMSBtYXNr
PTAvMS8/DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4wMzZdIG51bWJlciBvZiBNUCBJ
UlEgc291cmNlczogMTUuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4wNTJdIG51bWJl
ciBvZiBJTy1BUElDICM2IHJlZ2lzdGVyczogMjQuDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODo0OC4wNzBdIG51bWJlciBvZiBJTy1BUElDICM3IHJlZ2lzdGVyczogMzIuDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozODo0OC4wODhdIHRlc3RpbmcgdGhlIElPIEFQSUMuLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguMTA4XSBJTyBBUElD
ICM2Li4uLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4xMjFdIC4uLi4gcmVnaXN0
ZXIgIzAwOiAwNjAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguMTM3XSAuLi4u
Li4uICAgIDogcGh5c2ljYWwgQVBJQyBpZDogMDYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjQ4LjE1NF0gLi4uLi4uLiAgICA6IERlbGl2ZXJ5IFR5cGU6IDANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjQ4LjE3MF0gLi4uLi4uLiAgICA6IExUUyAgICAgICAgICA6IDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjQ4LjE4N10gLi4uLiByZWdpc3RlciAjMDE6IDAwMTc4MDIx
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4yMDNdIC4uLi4uLi4gICAgIDogbWF4IHJl
ZGlyZWN0aW9uIGVudHJpZXM6IDAwMTcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ4LjIy
M10gLi4uLi4uLiAgICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjQ4LjI0MF0gLi4uLi4uLiAgICAgOiBJTyBBUElDIHZlcnNpb246IDAwMjENCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ4LjI1OF0gLi4uLiByZWdpc3RlciAjMDI6IDA2MDAw
MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4yNzRdIC4uLi4uLi4gICAgIDogYXJi
aXRyYXRpb246IDA2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC4yOTBdIC4uLi4gcmVn
aXN0ZXIgIzAzOiAzRjAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguMzA2XSAu
Li4uLi4uICAgICA6IEJvb3QgRFQgICAgOiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0
OC4zMjJdIC4uLi4gSVJRIHJlZGlyZWN0aW9uIHRhYmxlOg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6NDguMzM4XSAgTlIgTG9nIFBoeSBNYXNrIFRyaWcgSVJSIFBvbCBTdGF0IERlc3Qg
RGVsaSBWZWN0OiAgIA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguMzYwXSAgMDAgMDAw
IDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguMzgxXSAgMDEgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNDAzXSAgMDIgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICBGMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNDI0XSAgMDMgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICAzOA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNDQ1XSAgMDQgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICBGMQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNDY2XSAgMDUgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICA0MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNDg3XSAgMDYgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA0OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNTA4XSAgMDcgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICA1MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNTI5XSAgMDggMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA1OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNTUwXSAgMDkgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAg
IDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNTcxXSAgMGEgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA2OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNTkyXSAgMGIgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICA3MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNjEzXSAgMGMgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA3OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNjM0XSAgMGQgMDNGIDBGICAxICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICA4OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNjU1XSAgMGUgMDAx
IDAxICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA5MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNjc2XSAgMGYgMDAxIDAxICAwICAgIDAgICAgMCAgIDAgICAwICAg
IDEgICAgMSAgICA5OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNjk3XSAgMTAgMDAx
IDAxICAwICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICA4OQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNzE4XSAgMTEgMDAxIDAxICAwICAgIDEgICAgMCAgIDEgICAwICAg
IDEgICAgMCAgICBDMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNzM5XSAgMTIgMDAx
IDAxICAwICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICBCOA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguNzYxXSAgMTMgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAg
IDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguNzgyXSAgMTQgMDAw
IDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguODAzXSAgMTUgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAg
IDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguODI0XSAgMTYgMDNG
IDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NDguODQ1XSAgMTcgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAg
IDAgICAgMSAgICAzMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguODY2XSBJTyBBUElD
ICM3Li4uLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC44NzldIC4uLi4gcmVnaXN0
ZXIgIzAwOiAwNzAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDguODk1XSAuLi4u
Li4uICAgIDogcGh5c2ljYWwgQVBJQyBpZDogMDcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjQ4LjkxMl0gLi4uLi4uLiAgICA6IERlbGl2ZXJ5IFR5cGU6IDANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjQ4LjkyOF0gLi4uLi4uLiAgICA6IExUUyAgICAgICAgICA6IDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjQ4Ljk0NV0gLi4uLiByZWdpc3RlciAjMDE6IDAwMUY4MDIx
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OC45NjFdIC4uLi4uLi4gICAgIDogbWF4IHJl
ZGlyZWN0aW9uIGVudHJpZXM6IDAwMUYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ4Ljk4
MV0gLi4uLi4uLiAgICAgOiBQUlEgaW1wbGVtZW50ZWQ6IDENCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjQ4Ljk5OF0gLi4uLi4uLiAgICAgOiBJTyBBUElDIHZlcnNpb246IDAwMjENCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ5LjAxNl0gLi4uLiByZWdpc3RlciAjMDI6IDAwMDAw
MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OS4wMzJdIC4uLi4uLi4gICAgIDogYXJi
aXRyYXRpb246IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OS4wNDhdIC4uLi4gSVJR
IHJlZGlyZWN0aW9uIHRhYmxlOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMDY0XSAg
TlIgTG9nIFBoeSBNYXNrIFRyaWcgSVJSIFBvbCBTdGF0IERlc3QgRGVsaSBWZWN0OiAgIA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMDg3XSAgMDAgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MTA4XSAgMDEgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMTI5XSAgMDIgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MTUwXSAgMDMgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMTcxXSAgMDQgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MTkyXSAgMDUgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMjEzXSAgMDYgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MjM0XSAgMDcgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMjU1XSAgMDggMDAyIDAyICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
Mjc2XSAgMDkgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMjk3XSAgMGEgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MzE4XSAgMGIgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMzM5XSAgMGMgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
MzYwXSAgMGQgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuMzgxXSAgMGUgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NDAyXSAgMGYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNDIzXSAgMTAgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NDQ1XSAgMTEgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNDY2XSAgMTIgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NDg3XSAgMTMgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNTA4XSAgMTQgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NTI5XSAgMTUgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNTUwXSAgMTYgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NTcxXSAgMTcgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNTkyXSAgMTggMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NjEzXSAgMTkgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNjM0XSAgMWEgMDAwIDAwICAxICAgIDAgICAg
MCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NjU1XSAgMWIgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNjc2XSAgMWMgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
Njk3XSAgMWQgMDNGIDBGICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNzE4XSAgMWUgMDNGIDBGICAxICAgIDEgICAg
MCAgIDEgICAwICAgIDEgICAgMCAgICAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
NzM5XSAgMWYgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICBDOQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuNzYwXSBVc2luZyB2ZWN0b3ItYmFzZWQgaW5k
ZXhpbmcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ5Ljc3Nl0gSVJRIHRvIHBpbiBtYXBw
aW5nczoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ5Ljc5MF0gSVJRMjQwIC0+IDA6Mg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuODAzXSBJUlE0OCAtPiAwOjENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjQ5LjgxNV0gSVJRNTYgLT4gMDozDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODo0OS44MjZdIElSUTI0MSAtPiAwOjQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjQ5LjgzOV0gSVJRNjQgLT4gMDo1DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OS44NTFd
IElSUTcyIC0+IDA6Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuODYzXSBJUlE4MCAt
PiAwOjcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjQ5Ljg3NV0gSVJRODggLT4gMDo4DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo0OS44ODddIElSUTk2IC0+IDA6OQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6NDkuODk5XSBJUlExMDQgLT4gMDoxMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6NDkuOTExXSBJUlExMTIgLT4gMDoxMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6NDkuOTIzXSBJUlExMjAgLT4gMDoxMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDku
OTM2XSBJUlExMzYgLT4gMDoxMw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuOTQ4XSBJ
UlExNDQgLT4gMDoxNA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuOTYxXSBJUlExNTIg
LT4gMDoxNQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuOTczXSBJUlExMzcgLT4gMDox
Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuOTg2XSBJUlExOTIgLT4gMDoxNw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6NDkuOTk4XSBJUlExODQgLT4gMDoxOA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6NTAuMDExXSBJUlE0MiAtPiAwOjE5DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODo1MC4wMjNdIElSUTE4NSAtPiAwOjIyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
ODo1MC4wMzZdIElSUTE1NCAtPiAxOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUwLjA0
OF0gSVJRMzQgLT4gMTo0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4wNjBdIElSUTIx
NyAtPiAxOjUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUwLjA3Ml0gSVJRMjAxIC0+IDE6
OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTAuMDg0XSBJUlExOTMgLT4gMTo5DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzozODo1MC4wOTZdIElSUTMzIC0+IDE6MTINCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM4OjUwLjEwOV0gSVJRNDEgLT4gMToxMw0KKFhFTikgWzIwMTQtMDktMjUg
MTM6Mzg6NTAuMTIxXSBJUlExNjkgLT4gMToxNA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6
NTAuMTMzXSBJUlE0OSAtPiAxOjE2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4xNDZd
IElSUTExNCAtPiAxOjIyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4xNThdIElSUTIw
OSAtPiAxOjIzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4xNzBdIElSUTIwOCAtPiAx
OjI0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4xODNdIElSUTEzOCAtPiAxOjI3DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MC4xOTVdIElSUTU3IC0+IDE6MjgNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjUwLjIwOF0gSVJRMjAwIC0+IDE6MjkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjUwLjIyMF0gSVJRMjE2IC0+IDE6MzANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM4OjUwLjIzM10gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIGRvbmUu
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MS44OTddICdlJyBwcmVzc2VkIC0+IGR1bXBp
bmcgZXZlbnQtY2hhbm5lbCBpbmZvDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MS45MTdd
IEV2ZW50IGNoYW5uZWwgaW5mb3JtYXRpb24gZm9yIGRvbWFpbiAwOg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6Mzg6NTEuOTM2XSBQb2xsaW5nIHZDUFVzOiB7fQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6NTEuOTQ5XSAgICAgcG9ydCBbcC9tL3NdDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODo1MS45NjJdICAgICAgICAxIFswLzAvICAtICAgXTogcz01IG49MCB4PTAgdj0wDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo1MS45ODBdICAgICAgICAyIFsxLzEvICAtICAgXTog
cz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUxLjk5OF0gICAgICAgIDMg
WzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIu
MDE2XSAgICAgICAgNCBbMC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozODo1Mi4wMzRdICAgICAgICA1IFswLzAvICAtICAgXTogcz01IG49MCB4PTAg
dj0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi4wNTJdICAgICAgICA2IFswLzAvICAt
ICAgXTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjA3MF0gICAg
ICAgIDcgWzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6NTIuMDg4XSAgICAgICAgOCBbMC8wLyAgLSAgIF06IHM9NSBuPTEgeD0wIHY9MA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuMTA2XSAgICAgICAgOSBbMS8xLyAgLSAgIF06IHM9
NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi4xMjRdICAgICAgIDEwIFsw
LzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjE0
Ml0gICAgICAgMTEgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzg6NTIuMTU5XSAgICAgICAxMiBbMC8wLyAgLSAgIF06IHM9NSBuPTEgeD0wIHY9
MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuMTc4XSAgICAgICAxMyBbMC8wLyAgLSAg
IF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi4xOTZdICAgICAg
IDE0IFswLzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjUyLjIxM10gICAgICAgMTUgWzAvMC8gIC0gICBdOiBzPTUgbj0yIHg9MCB2PTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjUyLjIzMl0gICAgICAgMTYgWzEvMS8gIC0gICBdOiBzPTYg
bj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuMjUwXSAgICAgICAxNyBbMC8w
LyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi4yNjhd
ICAgICAgIDE4IFswLzAvICAtICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjM4OjUyLjI4NV0gICAgICAgMTkgWzAvMC8gIC0gICBdOiBzPTUgbj0yIHg9MCB2PTEN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjMwNF0gICAgICAgMjAgWzAvMC8gIC0gICBd
OiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuMzIyXSAgICAgICAy
MSBbMC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1
Mi4zMzldICAgICAgIDIyIFswLzAvICAtICAgXTogcz01IG49MyB4PTAgdj0wDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozODo1Mi4zNThdICAgICAgIDIzIFsxLzEvICAtICAgXTogcz02IG49
MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjM3Nl0gICAgICAgMjQgWzAvMC8g
IC0gICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuMzkzXSAg
ICAgICAyNSBbMC8wLyAgLSAgIF06IHM9NiBuPTMgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAx
MzozODo1Mi40MTFdICAgICAgIDI2IFswLzAvICAtICAgXTogcz01IG49MyB4PTAgdj0xDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi40MzBdICAgICAgIDI3IFswLzAvICAtICAgXTog
cz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjQ0N10gICAgICAgMjgg
WzAvMC8gIC0gICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIu
NDY1XSAgICAgICAyOSBbMC8wLyAgLSAgIF06IHM9NSBuPTQgeD0wIHY9MA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6NTIuNDg0XSAgICAgICAzMCBbMS8xLyAgLSAgIF06IHM9NiBuPTQg
eD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi41MDJdICAgICAgIDMxIFswLzAvICAt
ICAgXTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjUxOV0gICAg
ICAgMzIgWzAvMC8gIC0gICBdOiBzPTYgbj00IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzg6NTIuNTM3XSAgICAgICAzMyBbMC8wLyAgLSAgIF06IHM9NSBuPTQgeD0wIHY9MQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuNTU2XSAgICAgICAzNCBbMC8wLyAgLSAgIF06IHM9
NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi41NzNdICAgICAgIDM1IFsw
LzAvICAtICAgXTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjU5
MV0gICAgICAgMzYgWzAvMC8gIC0gICBdOiBzPTUgbj01IHg9MCB2PTANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM4OjUyLjYxMF0gICAgICAgMzcgWzAvMS8gIC0gICBdOiBzPTYgbj01IHg9
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuNjI3XSAgICAgICAzOCBbMS8wLyAgMCAg
IF06IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi42NDVdICAgICAg
IDM5IFswLzAvICAtICAgXTogcz02IG49NSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4
OjUyLjY2M10gICAgICAgNDAgWzAvMC8gIC0gICBdOiBzPTUgbj01IHg9MCB2PTENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjUyLjY4MV0gICAgICAgNDEgWzAvMC8gIC0gICBdOiBzPTYg
bj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuNjk5XSAgICAgICA0MiBbMC8w
LyAgLSAgIF06IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi43MTdd
ICAgICAgIDQzIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NjENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM4OjUyLjczN10gICAgICAgNDQgWzAvMC8gIC0gICBdOiBzPTUgbj0w
IHg9MCB2PTkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjc1Nl0gICAgICAgNDUgWzAv
MS8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUy
Ljc3NF0gICAgICAgNDYgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5MSBpPTczDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi43OTVdICAgICAgIDQ3IFswLzAvICAtICAgXTog
cz00IG49MCB4PTAgcD0yOTIgaT03NA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuODE1
XSAgICAgICA0OCBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjkzIGk9NzUNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM4OjUyLjgzNl0gICAgICAgNDkgWzAvMC8gIC0gICBdOiBzPTQg
bj0wIHg9MCBwPTI5NCBpPTc2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi44NTZdICAg
ICAgIDUwIFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTUgaT03Nw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzg6NTIuODc3XSAgICAgICA1MSBbMC8wLyAgLSAgIF06IHM9NCBuPTAg
eD0wIHA9Mjk2IGk9NzgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjg5N10gICAgICAg
NTIgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTE3IGk9MTcNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM4OjUyLjkxOF0gICAgICAgNTMgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBw
PTE4IGk9MTgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUyLjkzOF0gICAgICAgNTQgWzAv
MC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTEyIGk9MTINCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM4OjUyLjk1OF0gICAgICAgNTUgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTEgaT0x
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Mi45NzhdICAgICAgIDU2IFswLzAvICAtICAg
XTogcz00IG49MCB4PTAgcD04IGk9OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTIuOTk4
XSAgICAgICA1NyBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MTYgaT0xNg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzg6NTMuMDE4XSAgICAgICA1OCBbMC8wLyAgLSAgIF06IHM9NCBu
PTAgeD0wIHA9Mjg4IGk9ODMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjUzLjAzOV0gICAg
ICAgNTkgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5MCBpPTgxDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozODo1My4wNTldICAgICAgIDYwIFswLzAvICAtICAgXTogcz00IG49MCB4
PTAgcD0yODkgaT04Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzg6NTMuMDgwXSAgICAgICA2
MSBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTQzDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozODo1My4xMDBdICAgICAgIDYyIFswLzAvICAtICAgXTogcz01IG49MCB4PTAgdj0z
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozODo1Ny41ODZdICoqKioqKioqKioqIFZNQ0IgQXJl
YXMgKioqKioqKioqKioqKioNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM4OjU3LjYwNF0gKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNClsgMTg0MC4zNTgzMzVdIGRl
dmljZSB2aWYyLjAgZW50ZXJlZCBwcm9taXNjdW91cyBtb2RlDQpbIDE4NDAuMzg2NTAyXSBJ
UHY2OiBBRERSQ09ORihORVRERVZfVVApOiB2aWYyLjA6IGxpbmsgaXMgbm90IHJlYWR5DQpb
IDE4NDEuMTE4NDUwXSBkZXZpY2UgdmlmMi4wLWVtdSBlbnRlcmVkIHByb21pc2N1b3VzIG1v
ZGUNClsgMTg0MS4xNDczNjldIHhlbl9icmlkZ2U6IHBvcnQgMih2aWYyLjAtZW11KSBlbnRl
cmVkIGZvcndhcmRpbmcgc3RhdGUNClsgMTg0MS4xNzQ1NDJdIHhlbl9icmlkZ2U6IHBvcnQg
Mih2aWYyLjAtZW11KSBlbnRlcmVkIGZvcndhcmRpbmcgc3RhdGUNClsgMTg0MS40ODUxNDJd
IHBjaWJhY2sgMDAwMDowOTowMC4wOiByZXN0b3JpbmcgY29uZmlnIHNwYWNlIGF0IG9mZnNl
dCAweDQgKHdhcyAweDEwMDQwMCwgd3JpdGluZyAweDEwMDAwMCkNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM5OjA3Ljk2M10gaW8uYzoyODA6IGQyOiBiaW5kOiBtX2dzaT0zMiBnX2dzaT0z
NiBkZXY9MDAuMDAuNSBpbnR4PTANCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDguNDM1XSBI
Vk0gTG9hZGVyDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA4LjQ0Nl0gRGV0ZWN0ZWQgWGVu
IHY0LjUtdW5zdGFibGUNClsgMTg0Mi4wMDk5ODBdIHgoZDIpIFsyMDE0LTA5LTI1IDEzOjM5
OjA4LjQ2Nl0gWGVuYnVzIHJpbmdzIEAweGZlZmZjMDAwLCBldmVudCBjaGFubmVsIDENCmVu
X3BjaWJhY2s6IHZwY2k6IDAwMDA6MDk6MDAuMDogKGQyKSBbMjAxNC0wOS0yNSAxMzozOTow
OC40OTNdIFN5c3RlbSByZXF1ZXN0ZWQgU2VhQklPUw0KYXNzaWduIHRvIHZpcnR1YShkMikg
WzIwMTQtMDktMjUgMTM6Mzk6MDguNTEyXSBDUFUgc3BlZWQgaXMgMzIwMCBNSHoNCmwgc2xv
dCAwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA4LjUyOV0gUmVsb2NhdGluZyBndWVzdCBt
ZW1vcnkgZm9yIGxvd21lbSBNTUlPIHNwYWNlIGRpc2FibGVkDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozOTowOC41NTJdIGlycS5jOjI3MDogRG9tMiBQQ0kgbGluayAwIGNoYW5nZWQgMCAt
PiA1DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA4LjU3MV0gUENJLUlTQSBsaW5rIDAgcm91
dGVkIHRvIElSUTUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjA4LjU4OF0gaXJxLmM6Mjcw
OiBEb20yIFBDSSBsaW5rIDEgY2hhbmdlZCAwIC0+IDEwDQooZDIpIFsyMDE0LTA5LTI1IDEz
OjM5OjA4LjYwN10gUENJLUlTQSBsaW5rIDEgcm91dGVkIHRvIElSUTEwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzozOTowOC42MjRdIGlycS5jOjI3MDogRG9tMiBQQ0kgbGluayAyIGNoYW5n
ZWQgMCAtPiAxMQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOC42NDNdIFBDSS1JU0EgbGlu
ayAyIHJvdXRlZCB0byBJUlExMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6MDguNjYwXSBp
cnEuYzoyNzA6IERvbTIgUENJIGxpbmsgMyBjaGFuZ2VkIDAgLT4gNQ0KKGQyKSBbMjAxNC0w
OS0yNSAxMzozOTowOC42NzldIFBDSS1JU0EgbGluayAzIHJvdXRlZCB0byBJUlE1DQooZDIp
IFsyMDE0LTA5LTI1IDEzOjM5OjA4LjcwOV0gcGNpIGRldiAwMToyIElOVEQtPklSUTUNCihk
MikgWzIwMTQtMDktMjUgMTM6Mzk6MDguNzI5XSBwY2kgZGV2IDAxOjMgSU5UQS0+SVJRMTAN
CihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDguNzQ4XSBwY2kgZGV2IDAyOjAgSU5UQS0+SVJR
MTENCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDguNzczXSBwY2kgZGV2IDA0OjAgSU5UQS0+
SVJRNQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOC43OTNdIHBjaSBkZXYgMDU6MCBJTlRB
LT5JUlExMA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOC44NTRdIE5vIFJBTSBpbiBoaWdo
IG1lbW9yeTsgc2V0dGluZyBoaWdoX21lbSByZXNvdXJjZSBiYXNlIHRvIDEwMDAwMDAwMA0K
KGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOC44ODBdIHBjaSBkZXYgMDU6MCBiYXIgMTAgc2l6
ZSAwMTAwMDAwMDA6IDBlMDAwMDAwYw0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6MDguOTAx
XSBtZW1vcnlfbWFwOmFkZDogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQoo
ZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjA4OF0gcGNpIGRldiAwMzowIGJhciAxMCBzaXpl
IDAwMjAwMDAwMDogMGYwMDAwMDA4DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjExMF0g
cGNpIGRldiAwMjowIGJhciAxNCBzaXplIDAwMTAwMDAwMDogMGYyMDAwMDA4DQooZDIpIFsy
MDE0LTA5LTI1IDEzOjM5OjA5LjEzMV0gcGNpIGRldiAwNDowIGJhciAzMCBzaXplIDAwMDA0
MDAwMDogMGYzMDAwMDAwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjE1M10gcGNpIGRl
diAwNDowIGJhciAxMCBzaXplIDAwMDAyMDAwMDogMGYzMDQwMDAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozOTowOS4xNzRdIG1lbW9yeV9tYXA6YWRkOiBkb20yIGdmbj1mMzA2MCBtZm49
ZmUxYzAgbnI9MjANCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuMTk4XSBwY2kgZGV2IDA1
OjAgYmFyIDE4IHNpemUgMDAwMDIwMDAwOiAwZjMwNjAwMDQNCihkMikgWzIwMTQtMDktMjUg
MTM6Mzk6MDkuMjE4XSBwY2kgZGV2IDA1OjAgYmFyIDMwIHNpemUgMDAwMDIwMDAwOiAwZjMw
ODAwMDANCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuMjM4XSBwY2kgZGV2IDAzOjAgYmFy
IDMwIHNpemUgMDAwMDEwMDAwOiAwZjMwYTAwMDANCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6
MDkuMjYwXSBwY2kgZGV2IDAzOjAgYmFyIDE0IHNpemUgMDAwMDAxMDAwOiAwZjMwYjAwMDAN
CihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuMjgwXSBwY2kgZGV2IDAyOjAgYmFyIDEwIHNp
emUgMDAwMDAwMTAwOiAwMDAwMGMwMDENCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuMzAy
XSBwY2kgZGV2IDA1OjAgYmFyIDIwIHNpemUgMDAwMDAwMTAwOiAwMDAwMGMxMDENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM5OjA5LjMyM10gaW9wb3J0X21hcDphZGQ6IGRvbTIgZ3BvcnQ9
YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS4zNDdd
IHBjaSBkZXYgMDQ6MCBiYXIgMTQgc2l6ZSAwMDAwMDAwNDA6IDAwMDAwYzIwMQ0KKGQyKSBb
MjAxNC0wOS0yNSAxMzozOTowOS4zNjldIHBjaSBkZXYgMDE6MiBiYXIgMjAgc2l6ZSAwMDAw
MDAwMjA6IDAwMDAwYzI0MQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS4zOTFdIHBjaSBk
ZXYgMDE6MSBiYXIgMjAgc2l6ZSAwMDAwMDAwMTA6IDAwMDAwYzI2MQ0KKGQyKSBbMjAxNC0w
OS0yNSAxMzozOTowOS40MTNdIE11bHRpcHJvY2Vzc29yIGluaXRpYWxpc2F0aW9uOg0KKGQy
KSBbMjAxNC0wOS0yNSAxMzozOTowOS40NTNdICAtIENQVTAgLi4uIDQ4LWJpdCBwaHlzIC4u
LiBmaXhlZCBNVFJScyAuLi4gdmFyIE1UUlJzIFsxLzhdIC4uLiBkb25lLg0KKGQyKSBbMjAx
NC0wOS0yNSAxMzozOTowOS41MDRdICAtIENQVTEgLi4uIDQ4LWJpdCBwaHlzIC4uLiBmaXhl
ZCBNVFJScyAuLi4gdmFyIE1UUlJzIFsxLzhdIC4uLiBkb25lLg0KKGQyKSBbMjAxNC0wOS0y
NSAxMzozOTowOS41NTZdICAtIENQVTIgLi4uIDQ4LWJpdCBwaHlzIC4uLiBmaXhlZCBNVFJS
cyAuLi4gdmFyIE1UUlJzIFsxLzhdIC4uLiBkb25lLg0KKGQyKSBbMjAxNC0wOS0yNSAxMzoz
OTowOS41ODJdIFRlc3RpbmcgSFZNIGVudmlyb25tZW50Og0KKGQyKSBbMjAxNC0wOS0yNSAx
MzozOTowOS42MDVdICAtIFJFUCBJTlNCIGFjcm9zcyBwYWdlIGJvdW5kYXJpZXMgLi4uIHBh
c3NlZA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS42MjhdICAtIEdTIGJhc2UgTVNScyBh
bmQgU1dBUEdTIC4uLiBwYXNzZWQNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuNjQ2XSBQ
YXNzZWQgMiBvZiAyIHRlc3RzDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjY2MF0gV3Jp
dGluZyBTTUJJT1MgdGFibGVzIC4uLg0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS42NzVd
IExvYWRpbmcgU2VhQklPUyAuLi4NCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuNjg4XSBD
cmVhdGluZyBNUCB0YWJsZXMgLi4uDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjcwM10g
TG9hZGluZyBBQ1BJIC4uLg0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS43MTZdIHZtODYg
VFNTIGF0IGZjMDBhMjAwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjczMF0gQklPUyBt
YXA6DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5Ljc0MV0gIDEwMDAwLTEwMGQzOiBTY3Jh
dGNoIHNwYWNlDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5Ljc1N10gIGMwMDAwLWZmZmZm
OiBNYWluIEJJT1MNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuNzcxXSBFODIwIHRhYmxl
Og0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS43ODNdICBbMDBdOiAwMDAwMDAwMDowMDAw
MDAwMCAtIDAwMDAwMDAwOjAwMGEwMDAwOiBSQU0NCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6
MDkuODA0XSAgSE9MRTogMDAwMDAwMDA6MDAwYTAwMDAgLSAwMDAwMDAwMDowMDBjMDAwMA0K
KGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS44MjRdICBbMDFdOiAwMDAwMDAwMDowMDBjMDAw
MCAtIDAwMDAwMDAwOjAwMTAwMDAwOiBSRVNFUlZFRA0KKGQyKSBbMjAxNC0wOS0yNSAxMzoz
OTowOS44NDddICBbMDJdOiAwMDAwMDAwMDowMDEwMDAwMCAtIDAwMDAwMDAwOjNmODAwMDAw
OiBSQU0NCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MDkuODY4XSAgSE9MRTogMDAwMDAwMDA6
M2Y4MDAwMDAgLSAwMDAwMDAwMDpmYzAwMDAwMA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTow
OS44ODhdICBbMDNdOiAwMDAwMDAwMDpmYzAwMDAwMCAtIDAwMDAwMDAxOjAwMDAwMDAwOiBS
RVNFUlZFRA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTowOS45MTFdIEludm9raW5nIFNlYUJJ
T1MgLi4uDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5LjkyN10gU2VhQklPUyAodmVyc2lv
biByZWwtMS43LjUtMC1nZTUxNDg4Yy0yMDE0MDkyNV8xMTEwMTAtc2VydmVlcnN0ZXJ0amUp
DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5Ljk1M10gDQooZDIpIFsyMDE0LTA5LTI1IDEz
OjM5OjA5Ljk2Ml0gRm91bmQgWGVuIGh5cGVydmlzb3Igc2lnbmF0dXJlIGF0IDQwMDAwMDAw
DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5Ljk4MV0gUnVubmluZyBvbiBRRU1VIChpNDQw
ZngpDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjA5Ljk5Nl0geGVuOiBjb3B5IGU4MjAuLi4N
CihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuMDA5XSBSZWxvY2F0aW5nIGluaXQgZnJvbSAw
eDAwMGRmNjI5IHRvIDB4M2Y3YWU2MDAgKHNpemUgNzE5OTUpDQooZDIpIFsyMDE0LTA5LTI1
IDEzOjM5OjEwLjAzNF0gQ1BVIE1oej0zMjAxDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEw
LjA1Ml0gRm91bmQgOSBQQ0kgZGV2aWNlcyAobWF4IFBDSSBidXMgaXMgMDApDQooZDIpIFsy
MDE0LTA5LTI1IDEzOjM5OjEwLjA3MF0gQWxsb2NhdGVkIFhlbiBoeXBlcmNhbGwgcGFnZSBh
dCAzZjdmZjAwMA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC4wODldIERldGVjdGVkIFhl
biB2NC41LXVuc3RhYmxlDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjEwNV0geGVuOiBj
b3B5IEJJT1MgdGFibGVzLi4uDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjExOV0gQ29w
eWluZyBTTUJJT1MgZW50cnkgcG9pbnQgZnJvbSAweDAwMDEwMDEwIHRvIDB4MDAwZjBmNTAN
CihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuMTQzXSBDb3B5aW5nIE1QVEFCTEUgZnJvbSAw
eGZjMDAxMTkwL2ZjMDAxMWEwIHRvIDB4MDAwZjBlNDANCihkMikgWzIwMTQtMDktMjUgMTM6
Mzk6MTAuMTY1XSBDb3B5aW5nIFBJUiBmcm9tIDB4MDAwMTAwMzAgdG8gMHgwMDBmMGRjMA0K
KGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC4xODRdIENvcHlpbmcgQUNQSSBSU0RQIGZyb20g
MHgwMDAxMDBiMCB0byAweDAwMGYwZDkwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjIw
NV0gVXNpbmcgcG10aW1lciwgaW9wb3J0IDB4YjAwOA0KKGQyKSBbMjAxNC0wOS0yNSAxMzoz
OToxMC4yMjFdIFNjYW4gZm9yIFZHQSBvcHRpb24gcm9tDQooZDIpIFsyMDE0LTA5LTI1IDEz
OjM5OjEwLjI0OV0gUnVubmluZyBvcHRpb24gcm9tIGF0IGMwMDA6MDAwMw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6Mzk6MTAuMjc1XSBzdGR2Z2EuYzoxNDc6ZDJ2MCBlbnRlcmluZyBzdGR2
Z2EgYW5kIGNhY2hpbmcgbW9kZXMNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuMzIzXSBw
bW0gY2FsbCBhcmcxPTANCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuMzM2XSBUdXJuaW5n
IG9uIHZnYSB0ZXh0IG1vZGUgY29uc29sZQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC40
NjRdIFNlYUJJT1MgKHZlcnNpb24gcmVsLTEuNy41LTAtZ2U1MTQ4OGMtMjAxNDA5MjVfMTEx
MDEwLXNlcnZlZXJzdGVydGplKQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC41MDNdIE1h
Y2hpbmUgVVVJRCBmMjZjMWJhNi1mYzYxLTRlM2YtYTlkOS0wMjJjMjBjZjY0YmMNCihkMikg
WzIwMTQtMDktMjUgMTM6Mzk6MTAuNTI0XSBVSENJIGluaXQgb24gZGV2IDAwOjAxLjIgKGlv
PWMyNDApDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjU0M10gRm91bmQgMCBscHQgcG9y
dHMNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuNTU2XSBGb3VuZCAxIHNlcmlhbCBwb3J0
cw0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC41NzBdIEFUQSBjb250cm9sbGVyIDEgYXQg
MWYwLzNmNC8wIChpcnEgMTQgZGV2IDkpDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjU5
MV0gQVRBIGNvbnRyb2xsZXIgMiBhdCAxNzAvMzc0LzAgKGlycSAxNSBkZXYgOSkNCihkMikg
WzIwMTQtMDktMjUgMTM6Mzk6MTAuNjEyXSBhdGEwLTA6IFFFTVUgSEFSRERJU0sgQVRBLTcg
SGFyZC1EaXNrICgyMDQ4MCBNaUJ5dGVzKQ0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMC42
MzVdIFNlYXJjaGluZyBib290b3JkZXIgZm9yOiAvcGNpQGkwY2Y4LypAMSwxL2RyaXZlQDAv
ZGlza0AwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjY5M10gUFMyIGtleWJvYXJkIGlu
aXRpYWxpemVkDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjcwOF0gQWxsIHRocmVhZHMg
Y29tcGxldGUuDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjcyMl0gU2NhbiBmb3Igb3B0
aW9uIHJvbXMNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6MTAuNzU1XSBSdW5uaW5nIG9wdGlv
biByb20gYXQgYzk4MDowMDAzDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjc3OF0gcG1t
IGNhbGwgYXJnMT0xDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjc5MF0gcG1tIGNhbGwg
YXJnMT0wDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjgwNF0gcG1tIGNhbGwgYXJnMT0x
DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjgxNl0gcG1tIGNhbGwgYXJnMT0wDQooZDIp
IFsyMDE0LTA5LTI1IDEzOjM5OjEwLjg0NF0gU2VhcmNoaW5nIGJvb3RvcmRlciBmb3I6IC9w
Y2lAaTBjZjgvKkA0DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEwLjg2M10gDQooZDIpIFsy
MDE0LTA5LTI1IDEzOjM5OjEwLjg3OF0gUHJlc3MgRjEyIGZvciBib290IG1lbnUuDQooZDIp
IFsyMDE0LTA5LTI1IDEzOjM5OjEwLjg5M10gDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEz
LjQ2MV0gU2VhcmNoaW5nIGJvb3RvcmRlciBmb3I6IEhBTFQNCihkMikgWzIwMTQtMDktMjUg
MTM6Mzk6MTMuNDc3XSBkcml2ZSAweDAwMGYwZDQwOiBQQ0hTPTE2MzgzLzE2LzYzIHRyYW5z
bGF0aW9uPWxiYSBMQ0hTPTEwMjQvMjU1LzYzIHM9NDE5NDMwNDANCihkMikgWzIwMTQtMDkt
MjUgMTM6Mzk6MTMuNTA2XSBTcGFjZSBhdmFpbGFibGUgZm9yIFVNQjogY2E4MDAtZWYwMDAs
IGYwMDAwLWYwZDQwDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjUyOF0gUmV0dXJuZWQg
MjU4MDQ4IGJ5dGVzIG9mIFpvbmVIaWdoDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjU0
NV0gZTgyMCBtYXAgaGFzIDYgaXRlbXM6DQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjU1
OV0gICAwOiAwMDAwMDAwMDAwMDAwMDAwIC0gMDAwMDAwMDAwMDA5ZmMwMCA9IDEgUkFNDQoo
ZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjU4MF0gICAxOiAwMDAwMDAwMDAwMDlmYzAwIC0g
MDAwMDAwMDAwMDBhMDAwMCA9IDIgUkVTRVJWRUQNCihkMikgWzIwMTQtMDktMjUgMTM6Mzk6
MTMuNjAyXSAgIDI6IDAwMDAwMDAwMDAwZjAwMDAgLSAwMDAwMDAwMDAwMTAwMDAwID0gMiBS
RVNFUlZFRA0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOToxMy42MjVdICAgMzogMDAwMDAwMDAw
MDEwMDAwMCAtIDAwMDAwMDAwM2Y3ZmYwMDAgPSAxIFJBTQ0KKGQyKSBbMjAxNC0wOS0yNSAx
MzozOToxMy42NDZdICAgNDogMDAwMDAwMDAzZjdmZjAwMCAtIDAwMDAwMDAwM2Y4MDAwMDAg
PSAyIFJFU0VSVkVEDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjY2OF0gICA1OiAwMDAw
MDAwMGZjMDAwMDAwIC0gMDAwMDAwMDEwMDAwMDAwMCA9IDIgUkVTRVJWRUQNCihkMikgWzIw
MTQtMDktMjUgMTM6Mzk6MTMuNjkxXSBlbnRlciBoYW5kbGVfMTk6DQooZDIpIFsyMDE0LTA5
LTI1IDEzOjM5OjEzLjcwNF0gICBOVUxMDQooZDIpIFsyMDE0LTA5LTI1IDEzOjM5OjEzLjcy
MF0gQm9vdGluZyBmcm9tIEhhcmQgRGlzay4uLg0KKGQyKSBbMjAxNC0wOS0yNSAxMzozOTox
My43MzddIEJvb3RpbmcgZnJvbSAwMDAwOjdjMDANClsgMTg1Ni4xNzUwNTNdIHhlbl9icmlk
Z2U6IHBvcnQgMih2aWYyLjAtZW11KSBlbnRlcmVkIGZvcndhcmRpbmcgc3RhdGUNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM5OjM2LjM4N10gaXJxLmM6MzgwOiBEb20yIGNhbGxiYWNrIHZp
YSBjaGFuZ2VkIHRvIERpcmVjdCBWZWN0b3IgMHhmMw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzk6NDIuMjU1XSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAw
IG5yPTEwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0Mi41MjJdIG1lbW9yeV9tYXA6
cmVtb3ZlOiBkb20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjM5OjQyLjU0Nl0gaW9wb3J0X21hcDpyZW1vdmU6IGRvbTIgZ3BvcnQ9YzEwMCBt
cG9ydD1hMDAwIG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDIuNTczXSBtZW1v
cnlfbWFwOmFkZDogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzozOTo0Mi43ODFdIG1lbW9yeV9tYXA6YWRkOiBkb20yIGdmbj1mMzA2
MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQyLjgwNF0gaW9w
b3J0X21hcDphZGQ6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzk6NDIuODI5XSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tMiBnZm49
ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0My4x
MDFdIG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQzLjEyNV0gaW9wb3J0X21hcDpyZW1vdmU6IGRv
bTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzk6NDMuMTUxXSBtZW1vcnlfbWFwOmFkZDogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5y
PTEwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0My4zNTldIG1lbW9yeV9tYXA6YWRk
OiBkb20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjM5OjQzLjM4Ml0gaW9wb3J0X21hcDphZGQ6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAw
IG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDMuNDA3XSBtZW1vcnlfbWFwOnJl
bW92ZTogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzozOTo0My42NjFdIG1lbW9yeV9tYXA6cmVtb3ZlOiBkb20yIGdmbj1mMzA2MCBt
Zm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQzLjY4NF0gaW9wb3J0
X21hcDpyZW1vdmU6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6Mzk6NDMuNzExXSBtZW1vcnlfbWFwOmFkZDogZG9tMiBnZm49ZTAw
MDAgbWZuPWEwMDAwIG5yPTEwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0My45MTVd
IG1lbW9yeV9tYXA6YWRkOiBkb20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjM5OjQzLjkzOF0gaW9wb3J0X21hcDphZGQ6IGRvbTIgZ3BvcnQ9
YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDMuOTYz
XSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAw
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0NC4yMjhdIG1lbW9yeV9tYXA6cmVtb3ZlOiBk
b20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5
OjQ0LjI1Ml0gaW9wb3J0X21hcDpyZW1vdmU6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAw
IG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDQuMjc4XSBtZW1vcnlfbWFwOmFk
ZDogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzozOTo0NC40ODBdIG1lbW9yeV9tYXA6YWRkOiBkb20yIGdmbj1mMzA2MCBtZm49ZmUx
YzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQ0LjUwM10gaW9wb3J0X21hcDph
ZGQ6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6Mzk6NDQuNTI4XSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tMiBnZm49ZTAwMDAgbWZu
PWEwMDAwIG5yPTEwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0NC43NjNdIG1lbW9y
eV9tYXA6cmVtb3ZlOiBkb20yIGdmbj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjM5OjQ0Ljc4Nl0gaW9wb3J0X21hcDpyZW1vdmU6IGRvbTIgZ3BvcnQ9
YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDQuODEy
XSBtZW1vcnlfbWFwOmFkZDogZG9tMiBnZm49ZTAwMDAgbWZuPWEwMDAwIG5yPTEwMDAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0NS4wMjNdIG1lbW9yeV9tYXA6YWRkOiBkb20yIGdm
bj1mMzA2MCBtZm49ZmUxYzAgbnI9MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQ1LjA0
NV0gaW9wb3J0X21hcDphZGQ6IGRvbTIgZ3BvcnQ9YzEwMCBtcG9ydD1hMDAwIG5yPTEwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDUuMDk5XSBpcnEuYzoyNzA6IERvbTIgUENJIGxp
bmsgMCBjaGFuZ2VkIDUgLT4gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6Mzk6NDUuMTM4XSBp
cnEuYzoyNzA6IERvbTIgUENJIGxpbmsgMSBjaGFuZ2VkIDEwIC0+IDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjM5OjQ1LjE3N10gaXJxLmM6MjcwOiBEb20yIFBDSSBsaW5rIDIgY2hhbmdl
ZCAxMSAtPiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzozOTo0NS4yMTZdIGlycS5jOjI3MDog
RG9tMiBQQ0kgbGluayAzIGNoYW5nZWQgNSAtPiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzoz
OTo0Ny4yMzFdIG1lbW9yeV9tYXA6YWRkOiBkb20yIGdmbj1mMzA4MCBtZm49ZmUxYTAgbnI9
MjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjM5OjQ3LjQyOV0gbWVtb3J5X21hcDpyZW1vdmU6
IGRvbTIgZ2ZuPWYzMDgwIG1mbj1mZTFhMCBucj0yMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
Mzk6NDguMTQ5XSBkMzI3Njd2MjogVW5zdXBwb3J0ZWQgTVNJIGRlbGl2ZXJ5IG1vZGUgMyBm
b3IgRG9tMg0KWyAxODgyLjY5MjM2NF0geGVuLWJsa2JhY2s6cmluZy1yZWYgOCwgZXZlbnQt
Y2hhbm5lbCAyNiwgcHJvdG9jb2wgMSAoeDg2XzY0LWFiaSkgcGVyc2lzdGVudCBncmFudHMN
ClsgMTg4NC4xMjQ2MTNdIElQdjY6IEFERFJDT05GKE5FVERFVl9DSEFOR0UpOiB2aWYyLjA6
IGxpbmsgYmVjb21lcyByZWFkeQ0KWyAxODg0LjE1MTk1Nl0geGVuX2JyaWRnZTogcG9ydCAx
KHZpZjIuMCkgZW50ZXJlZCBmb3J3YXJkaW5nIHN0YXRlDQpbIDE4ODQuMTc3NzY5XSB4ZW5f
YnJpZGdlOiBwb3J0IDEodmlmMi4wKSBlbnRlcmVkIGZvcndhcmRpbmcgc3RhdGUNClsgMTg5
OS4yMTUxMzldIHhlbl9icmlkZ2U6IHBvcnQgMSh2aWYyLjApIGVudGVyZWQgZm9yd2FyZGlu
ZyBzdGF0ZQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDQuMzQ0XSBJUlEgaW5mb3JtYXRp
b246DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NC4zNTddICAgIElSUTogICAwIGFmZmlu
aXR5OjAxIHZlYzpmMCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDAgdGlt
ZXJfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ0LjM4OF0gICAgSVJR
OiAgIDEgYWZmaW5pdHk6MDEgdmVjOjMwIHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0w
MDAwMDAzNCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOiAgMSgtLS0pLA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDA6NDQuNDI0XSAgICBJUlE6ICAgMyBhZmZpbml0eTowMSB2ZWM6Mzgg
dHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDQuNDU0XSAgICBJUlE6ICAgNCBhZmZpbml0eTow
MSB2ZWM6ZjEgdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAxIG5zMTY1NTBf
aW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ0LjQ4Nl0gICAgSVJROiAg
IDUgYWZmaW5pdHk6MDEgdmVjOjQwIHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAw
MDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ0LjUxNl0g
ICAgSVJROiAgIDYgYWZmaW5pdHk6MDEgdmVjOjQ4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0
YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQw
OjQ0LjU0Nl0gICAgSVJROiAgIDcgYWZmaW5pdHk6MDEgdmVjOjUwIHR5cGU9SU8tQVBJQy1l
ZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQwOjQ0LjU3N10gICAgSVJROiAgIDggYWZmaW5pdHk6MDEgdmVjOjU4IHR5cGU9
SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlz
dD0wOiAgOCgtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDQuNjEyXSAgICBJUlE6
ICAgOSBhZmZpbml0eTozZiB2ZWM6NjAgdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAw
MDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDQuNjQz
XSAgICBJUlE6ICAxMCBhZmZpbml0eTowMSB2ZWM6NjggdHlwZT1JTy1BUElDLWVkZ2UgICAg
c3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDA6NDQuNjczXSAgICBJUlE6ICAxMSBhZmZpbml0eTowMSB2ZWM6NzAgdHlwZT1JTy1BUElD
LWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDA6NDQuNzA0XSAgICBJUlE6ICAxMiBhZmZpbml0eTowMSB2ZWM6NzggdHlw
ZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1s
aXN0PTA6IDEyKC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NC43MzldICAgIElS
UTogIDEzIGFmZmluaXR5OjNmIHZlYzo4OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NC43
NzBdICAgIElSUTogIDE0IGFmZmluaXR5OjAxIHZlYzo5MCB0eXBlPUlPLUFQSUMtZWRnZSAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MDo0NC44MDBdICAgIElSUTogIDE1IGFmZmluaXR5OjAxIHZlYzo5OCB0eXBlPUlPLUFQ
SUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0NC44MzFdICAgIElSUTogIDE2IGFmZmluaXR5OjAxIHZlYzo4OSB0
eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWlu
LWxpc3Q9MDogMTYoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ0Ljg2Nl0gICAg
SVJROiAgMTcgYWZmaW5pdHk6MDEgdmVjOmMwIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1
cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOiAxNygtLS0pLA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDA6NDQuOTAyXSAgICBJUlE6ICAxOCBhZmZpbml0eTowMSB2ZWM6
YjggdHlwZT1JTy1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRv
bWFpbi1saXN0PTA6IDE4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NC45Mzdd
ICAgIElSUTogIDE5IGFmZmluaXR5OjNmIHZlYzoyYSB0eXBlPUlPLUFQSUMtbGV2ZWwgICBz
dGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MDo0NC45NjhdICAgIElSUTogIDIyIGFmZmluaXR5OjNmIHZlYzpiOSB0eXBlPUlPLUFQSUMt
bGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0NC45OThdICAgIElSUTogIDI1IGFmZmluaXR5OjNmIHZlYzo5YSB0eXBl
PUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MDo0NS4wMjldICAgIElSUTogIDI4IGFmZmluaXR5OjNmIHZl
YzoyMiB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJv
dW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS4wNTldICAgIElSUTogIDI5IGFmZmlu
aXR5OjNmIHZlYzpkOSB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFw
cGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS4wODldICAgIElSUTog
IDMyIGFmZmluaXR5OjAyIHZlYzpjOSB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAw
MDAwMTAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MjogMzIoLU0tKSwNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ1LjEyNV0gICAgSVJROiAgMzMgYWZmaW5pdHk6M2YgdmVjOmMxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjE1Nl0gICAgSVJROiAgMzYgYWZmaW5pdHk6M2Yg
dmVjOjIxIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjE4Nl0gICAgSVJROiAgMzcgYWZm
aW5pdHk6M2YgdmVjOjI5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjIxNl0gICAgSVJR
OiAgMzggYWZmaW5pdHk6M2YgdmVjOmE5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjI0
N10gICAgSVJROiAgNDAgYWZmaW5pdHk6M2YgdmVjOjMxIHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQwOjQ1LjI3N10gICAgSVJROiAgNDYgYWZmaW5pdHk6M2YgdmVjOjcyIHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ1LjMwOF0gICAgSVJROiAgNDcgYWZmaW5pdHk6M2YgdmVjOmQxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjMzOF0gICAgSVJROiAgNDggYWZmaW5pdHk6M2Yg
dmVjOmQwIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjM2OF0gICAgSVJROiAgNTEgYWZm
aW5pdHk6M2YgdmVjOjhhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjM5OV0gICAgSVJR
OiAgNTIgYWZmaW5pdHk6M2YgdmVjOjM5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ1LjQy
OV0gICAgSVJROiAgNTMgYWZmaW5pdHk6M2YgdmVjOmM4IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQwOjQ1LjQ2MF0gICAgSVJROiAgNTQgYWZmaW5pdHk6M2YgdmVjOmQ4IHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ1LjQ5MF0gICAgSVJROiAgNTYgYWZmaW5pdHk6MDEgdmVjOjI4IHR5
cGU9QU1ELUlPTU1VLU1TSSAgIHN0YXR1cz0wMDAwMDAwMCBpb21tdV9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS41MjNdICAgIElSUTogIDU3IGFm
ZmluaXR5OjEwIHZlYzphMCB0eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAg
aHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS41
NTZdICAgIElSUTogIDU4IGFmZmluaXR5OjAyIHZlYzphOCB0eXBlPUhQRVQtTVNJICAgICAg
ICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0NS41ODldICAgIElSUTogIDU5IGFmZmluaXR5OjA0IHZlYzpiMCB0
eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS42MjFdICAgIElSUTogIDYwIGFm
ZmluaXR5OjNmIHZlYzo0MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS42NTJdICAgIElS
UTogIDYxIGFmZmluaXR5OjNmIHZlYzo0OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS42
ODJdICAgIElSUTogIDYyIGFmZmluaXR5OjNmIHZlYzo1MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MDo0NS43MTNdICAgIElSUTogIDYzIGFmZmluaXR5OjNmIHZlYzo1OSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0NS43NDNdICAgIElSUTogIDY0IGFmZmluaXR5OjNmIHZlYzo2MSB0
eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS43NzRdICAgIElSUTogIDY1IGFmZmluaXR5OjNm
IHZlYzo2OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS44MDRdICAgIElSUTogIDY2IGFm
ZmluaXR5OjNmIHZlYzo3MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS44MzRdICAgIElS
UTogIDY3IGFmZmluaXR5OjNmIHZlYzo3OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS44
NjVdICAgIElSUTogIDY4IGFmZmluaXR5OjNmIHZlYzo4MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MDo0NS44OTVdICAgIElSUTogIDY5IGFmZmluaXR5OjNmIHZlYzo5MSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0NS45MjZdICAgIElSUTogIDcwIGFmZmluaXR5OjNmIHZlYzo5OSB0
eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS45NTZdICAgIElSUTogIDcxIGFmZmluaXR5OjNm
IHZlYzphMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0NS45ODZdICAgIElSUTogIDcyIGFm
ZmluaXR5OjNmIHZlYzpiMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni4wMTddICAgIElS
UTogIDczIGFmZmluaXR5OjAxIHZlYzozMiB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyOTEoLS0tKSwNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQwOjQ2LjA1Ml0gICAgSVJROiAgNzQgYWZmaW5pdHk6MDEgdmVjOjNh
IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21h
aW4tbGlzdD0wOjI5MigtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuMDg4XSAg
ICBJUlE6ICA3NSBhZmZpbml0eTowMSB2ZWM6NDIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3Rh
dHVzPTAwMDAwMDEwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6MjkzKC0tLSksDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni4xMjRdICAgIElSUTogIDc2IGFmZmluaXR5OjAxIHZl
Yzo0YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAg
ZG9tYWluLWxpc3Q9MDoyOTQoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ2LjE1
OV0gICAgSVJROiAgNzcgYWZmaW5pdHk6MDEgdmVjOjUyIHR5cGU9UENJLU1TSSAgICAgICAg
IHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5NSgtLS0pLA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuMTk1XSAgICBJUlE6ICA3OCBhZmZpbml0eTow
MSB2ZWM6NWEgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdo
dD0wIGRvbWFpbi1saXN0PTA6Mjk2KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0
Ni4yMzFdICAgIElSUTogIDc5IGFmZmluaXR5OjNmIHZlYzo2MiB0eXBlPVBDSS1NU0kgICAg
ICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MDo0Ni4yNjFdICAgIElSUTogIDgwIGFmZmluaXR5OjNmIHZlYzo2YSB0eXBlPVBD
SS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MDo0Ni4yOTFdICAgIElSUTogIDgxIGFmZmluaXR5OjAxIHZlYzo3
YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9t
YWluLWxpc3Q9MDoyOTAoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ2LjMyN10g
ICAgSVJROiAgODIgYWZmaW5pdHk6MDEgdmVjOjkyIHR5cGU9UENJLU1TSSAgICAgICAgIHN0
YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI4OSgtLS0pLA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDA6NDYuMzYzXSAgICBJUlE6ICA4MyBhZmZpbml0eTowMSB2
ZWM6YTIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0w
IGRvbWFpbi1saXN0PTA6Mjg4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni4z
OThdICAgIElSUTogIDg0IGFmZmluaXR5OjAyIHZlYzpiMiB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MjogODcoLS0tKSwN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ2LjQzNF0gRGlyZWN0IHZlY3RvciBpbmZvcm1h
dGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ2LjQ1MF0gICAgMHgyMCAtPiBpcnFf
bW92ZV9jbGVhbnVwX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni40
NjhdICAgIDB4ZjkgLT4gcG11X2FwaWNfaW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQwOjQ2LjQ4NV0gICAgMHhmYSAtPiBhcGljX3RpbWVyX2ludGVycnVwdCgpDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni41MDNdICAgIDB4ZmIgLT4gY2FsbF9mdW5jdGlvbl9p
bnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuNTIxXSAgICAweGZjIC0+
IGV2ZW50X2NoZWNrX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni41
MzldICAgIDB4ZmQgLT4gaW52YWxpZGF0ZV9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDA6NDYuNTU2XSAgICAweGZlIC0+IGVycm9yX2ludGVycnVwdCgpDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MDo0Ni41NzJdICAgIDB4ZmYgLT4gc3B1cmlvdXNfaW50ZXJydXB0
KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ2LjU4OV0gSU8tQVBJQyBpbnRlcnJ1cHQg
aW5mb3JtYXRpb246DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni42MDZdICAgICBJUlEg
IDAgVmVjMjQwOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuNjE5XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAgMjogdmVjPWYwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ni42NTVdICAgICBJUlEgIDEgVmVjIDQ4Og0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDA6NDYuNjY4XSAgICAgICBBcGljIDB4MDAsIFBpbiAgMTogdmVjPTMwIGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni43MDRdICAgICBJUlEg
IDMgVmVjIDU2Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuNzE4XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAgMzogdmVjPTM4IGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ni43NTNdICAgICBJUlEgIDQgVmVjMjQxOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDA6NDYuNzY3XSAgICAgICBBcGljIDB4MDAsIFBpbiAgNDogdmVjPWYxIGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni44MDJdICAgICBJUlEg
IDUgVmVjIDY0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuODE2XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAgNTogdmVjPTQwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ni44NTFdICAgICBJUlEgIDYgVmVjIDcyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDA6NDYuODY1XSAgICAgICBBcGljIDB4MDAsIFBpbiAgNjogdmVjPTQ4IGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni45MDFdICAgICBJUlEg
IDcgVmVjIDgwOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDYuOTE0XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAgNzogdmVjPTUwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ni45NTBdICAgICBJUlEgIDggVmVjIDg4Og0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDA6NDYuOTYzXSAgICAgICBBcGljIDB4MDAsIFBpbiAgODogdmVjPTU4IGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ni45OTldICAgICBJUlEg
IDkgVmVjIDk2Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuMDEyXSAgICAgICBBcGlj
IDB4MDAsIFBpbiAgOTogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDA6NDcuMDQ4XSAgICAgSVJRIDEwIFZlYzEwNDoNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQwOjQ3LjA2Ml0gICAgICAgQXBpYyAweDAwLCBQaW4gMTA6IHZlYz02OCBkZWxp
dmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFz
az0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuMDk3XSAgICAgSVJR
IDExIFZlYzExMjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjExMV0gICAgICAgQXBp
YyAweDAwLCBQaW4gMTE6IHZlYz03MCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAg
cG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDA6NDcuMTQ3XSAgICAgSVJRIDEyIFZlYzEyMDoNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQwOjQ3LjE2MF0gICAgICAgQXBpYyAweDAwLCBQaW4gMTI6IHZlYz03OCBkZWxp
dmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFz
az0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuMTk2XSAgICAgSVJR
IDEzIFZlYzEzNjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjIwOV0gICAgICAgQXBp
YyAweDAwLCBQaW4gMTM6IHZlYz04OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAg
cG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ3LjI0NV0gICAgIElSUSAxNCBWZWMxNDQ6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ny4yNTldICAgICAgIEFwaWMgMHgwMCwgUGluIDE0OiB2ZWM9OTAgZGVs
aXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1h
c2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjI5NF0gICAgIElS
USAxNSBWZWMxNTI6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny4zMDhdICAgICAgIEFw
aWMgMHgwMCwgUGluIDE1OiB2ZWM9OTggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0w
IHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ3LjM0M10gICAgIElSUSAxNiBWZWMxMzc6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ny4zNTddICAgICAgIEFwaWMgMHgwMCwgUGluIDE2OiB2ZWM9ODkgZGVs
aXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1h
c2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjM5Ml0gICAgIElS
USAxNyBWZWMxOTI6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny40MDZdICAgICAgIEFw
aWMgMHgwMCwgUGluIDE3OiB2ZWM9YzAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0w
IHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjQ3LjQ0Ml0gICAgIElSUSAxOCBWZWMxODQ6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo0Ny40NTVdICAgICAgIEFwaWMgMHgwMCwgUGluIDE4OiB2ZWM9YjggZGVs
aXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1h
c2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjQ5MV0gICAgIElS
USAxOSBWZWMgNDI6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny41MDRdICAgICAgIEFw
aWMgMHgwMCwgUGluIDE5OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0w
IHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0Ny41NDBdICAgICBJUlEgMjIgVmVjMTg1Og0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDA6NDcuNTU0XSAgICAgICBBcGljIDB4MDAsIFBpbiAyMjogdmVjPTAwIGRl
bGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBt
YXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuNTkwXSAgICAg
SVJRIDI1IFZlYzE1NDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjYwM10gICAgICAg
QXBpYyAweDAxLCBQaW4gIDE6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVz
PTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQwOjQ3LjYzOV0gICAgIElSUSAyOCBWZWMgMzQ6DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo0Ny42NTJdICAgICAgIEFwaWMgMHgwMSwgUGluICA0OiB2ZWM9MDAg
ZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1M
IG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny42ODhdICAg
ICBJUlEgMjkgVmVjMjE3Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuNzAyXSAgICAg
ICBBcGljIDB4MDEsIFBpbiAgNTogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0
dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDA6NDcuNzM4XSAgICAgSVJRIDMyIFZlYzIwMToNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQwOjQ3Ljc1MV0gICAgICAgQXBpYyAweDAxLCBQaW4gIDg6IHZlYz1j
OSBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmln
PUwgbWFzaz0wIGRlc3RfaWQ6Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuNzg3XSAg
ICAgSVJRIDMzIFZlYzE5MzoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjgwMF0gICAg
ICAgQXBpYyAweDAxLCBQaW4gIDk6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3Rh
dHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQwOjQ3LjgzNl0gICAgIElSUSAzNiBWZWMgMzM6DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MDo0Ny44NTBdICAgICAgIEFwaWMgMHgwMSwgUGluIDEyOiB2ZWM9
MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJp
Zz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny44ODZd
ICAgICBJUlEgMzcgVmVjIDQxOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDcuODk5XSAg
ICAgICBBcGljIDB4MDEsIFBpbiAxMzogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBz
dGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDA6NDcuOTM1XSAgICAgSVJRIDM4IFZlYzE2OToNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQwOjQ3Ljk0OV0gICAgICAgQXBpYyAweDAxLCBQaW4gMTQ6IHZl
Yz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0
cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ3Ljk4
NF0gICAgIElSUSA0MCBWZWMgNDk6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0Ny45OThd
ICAgICAgIEFwaWMgMHgwMSwgUGluIDE2OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1M
IHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0OC4wMzRdICAgICBJUlEgNDYgVmVjMTE0Og0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDA6NDguMDQ3XSAgICAgICBBcGljIDB4MDEsIFBpbiAyMjog
dmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0w
IHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDgu
MDgzXSAgICAgSVJRIDQ3IFZlYzIwOToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ4LjA5
N10gICAgICAgQXBpYyAweDAxLCBQaW4gMjM6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0
PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ4LjEzM10gICAgIElSUSA0OCBWZWMyMDg6DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0OC4xNDZdICAgICAgIEFwaWMgMHgwMSwgUGluIDI0
OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJy
PTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0
OC4xODJdICAgICBJUlEgNTEgVmVjMTM4Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDgu
MTk2XSAgICAgICBBcGljIDB4MDEsIFBpbiAyNzogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRl
c3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2
Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDguMjMxXSAgICAgSVJRIDUyIFZlYyA1NzoN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjQ4LjI0NV0gICAgICAgQXBpYyAweDAxLCBQaW4g
Mjg6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBp
cnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQw
OjQ4LjI4MV0gICAgIElSUSA1MyBWZWMyMDA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0
OC4yOTRdICAgICAgIEFwaWMgMHgwMSwgUGluIDI5OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQg
ZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lk
OjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo0OC4zMzBdICAgICBJUlEgNTQgVmVjMjE2
Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NDguMzQ0XSAgICAgICBBcGljIDB4MDEsIFBp
biAzMDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0x
IGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDA6NTMuOTkyXSAnSScgcHJlc3NlZCAtPiBkdW1waW5nIEhWTSBpcnEgaW5mbw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDA6NTQuMDEwXSBEb21haW4gMjoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQwOjU0LjAyMl0gUENJIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAg
SVNBIDB4MDAwMDAxMDAgUk9VVEUgMCAwIDAgMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6
NTQuMDQ4XSBHU0kgWzAgLSA3XSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDA6NTQuMDY2XSBHU0kgWzggLSBmXSAwMSAwMCAwMCAwMCAwMCAwMCAw
MCAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTQuMDg0XSBHU0kgWzEwIC0gMTddIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1NC4xMDJd
IEdTSSBbMTggLSAxZl0gMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQwOjU0LjEyMV0gR1NJIFsyMCAtIDI3XSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTQuMTM5XSBHU0kgWzI4IC0gMmZdIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1NC4xNThdIExp
bmsgMDAgMDAgMDAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU0LjE3MV0gQ2FsbGJh
Y2sgdmlhIDM6MHhmMywgbm90IGFzc2VydGVkDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1
Ny4zNzldID09PT0gUENJIGRldmljZXMgPT09PQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6
NTcuMzkzXSA9PT09IHNlZ21lbnQgMDAwMCA9PT09DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MDo1Ny40MDddIDAwMDA6MGY6MDAuMSAtIGRvbSAwICAgLSBNU0lzIDwgODMgPg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDA6NTcuNDI2XSAwMDAwOjBmOjAwLjAgLSBkb20gMCAgIC0gTVNJ
cyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3LjQ0M10gMDAwMDowZTowMC4xIC0g
ZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny40NjFdIDAw
MDA6MGU6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDA6NTcuNDc4XSAwMDAwOjBkOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8IDgxID4NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQwOjU3LjQ5Nl0gMDAwMDowYzowMC4wIC0gZG9tIDAgICAtIE1T
SXMgPCA4MiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny41MTRdIDAwMDA6MGI6MDAu
MCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcuNTMy
XSAwMDAwOjBhOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQwOjU3LjU0OV0gMDAwMDowOTowMC4xIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny41NjddIDAwMDA6MDk6MDAuMCAtIGRvbSAyICAgLSBN
U0lzIDwgODQgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcuNTg1XSAwMDAwOjA4OjAw
LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3LjYw
Ml0gMDAwMDowNzowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MDo1Ny42MjBdIDAwMDA6MDY6MDIuMCAtIGRvbSAwICAgLSBNU0lzIDwgNzIgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcuNjM4XSAwMDAwOjA2OjAxLjAgLSBkb20gMCAg
IC0gTVNJcyA8IDcxID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3LjY1Nl0gMDAwMDow
NTowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA3MCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MDo1Ny42NzRdIDAwMDA6MDQ6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDA6NTcuNjkyXSAwMDAwOjAzOjA2LjAgLSBkb20gMCAgIC0gTVNJcyA8
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3LjcwOV0gMDAwMDowMDoxOC40IC0gZG9t
IDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny43MjZdIDAwMDA6
MDA6MTguMyAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6
NTcuNzQ0XSAwMDAwOjAwOjE4LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQwOjU3Ljc2MV0gMDAwMDowMDoxOC4xIC0gZG9tIDAgICAtIE1TSXMgPCA+
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny43NzldIDAwMDA6MDA6MTguMCAtIGRvbSAw
ICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcuNzk2XSAwMDAwOjAw
OjE2LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3
LjgxNF0gMDAwMDowMDoxNi4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MDo1Ny44MzFdIDAwMDA6MDA6MTUuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjkg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcuODQ5XSAwMDAwOjAwOjE0LjUgLSBkb20g
MCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3Ljg2N10gMDAwMDow
MDoxNC40IC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1
Ny44ODRdIDAwMDA6MDA6MTQuMyAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDA6NTcuOTAxXSAwMDAwOjAwOjE0LjIgLSBkb20gMCAgIC0gTVNJcyA8ID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU3LjkxOV0gMDAwMDowMDoxNC4wIC0gZG9tIDAg
ICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny45MzZdIDAwMDA6MDA6
MTMuMiAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTcu
OTU0XSAwMDAwOjAwOjEzLjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQwOjU3Ljk3MV0gMDAwMDowMDoxMi4yIC0gZG9tIDAgICAtIE1TSXMgPCA+DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1Ny45ODldIDAwMDA6MDA6MTIuMCAtIGRvbSAwICAg
LSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTguMDA2XSAwMDAwOjAwOjEx
LjAgLSBkb20gMCAgIC0gTVNJcyA8IDczID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU4
LjAyNF0gMDAwMDowMDowZC4wIC0gZG9tIDAgICAtIE1TSXMgPCA2OCA+DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MDo1OC4wNDJdIDAwMDA6MDA6MGMuMCAtIGRvbSAwICAgLSBNU0lzIDwg
NjcgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTguMDYxXSAwMDAwOjAwOjBiLjAgLSBk
b20gMCAgIC0gTVNJcyA8IDY2ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU4LjA3OV0g
MDAwMDowMDowYS4wIC0gZG9tIDAgICAtIE1TSXMgPCA2NSA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MDo1OC4wOTddIDAwMDA6MDA6MDkuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjQgPg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDA6NTguMTE1XSAwMDAwOjAwOjA2LjAgLSBkb20gMCAg
IC0gTVNJcyA8IDYzID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU4LjEzM10gMDAwMDow
MDowNS4wIC0gZG9tIDAgICAtIE1TSXMgPCA2MiA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MDo1OC4xNTJdIDAwMDA6MDA6MDMuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjEgPg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDA6NTguMTcwXSAwMDAwOjAwOjAyLjAgLSBkb20gMCAgIC0gTVNJ
cyA8IDYwID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQwOjU4LjE4OF0gMDAwMDowMDowMC4w
IC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MDo1OC4yMDVd
IDAwMDA6MDA6MDAuMiAtIGRvbSAzMjc1NCAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MTowMC4yMzBdIE1TSSBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjAwLjI0M10gIE1TSSAgICAgNTYgdmVjPTI4IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAg
bG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8wLz8NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjAwLjI3Ml0gIEhQRVQgICAgNTcgdmVjPWEwIGxvd2VzdCAgZWRnZSAgIGFzc2Vy
dCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDEwIG1hc2s9MS8wLz8NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjAwLjMwMF0gIEhQRVQgICAgNTggdmVjPWE4IGxvd2VzdCAgZWRnZSAgIGFz
c2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAyIG1hc2s9MS8wLz8NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjAwLjMyOV0gIEhQRVQgICAgNTkgdmVjPWIwIGxvd2VzdCAgZWRnZSAg
IGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDA0IG1hc2s9MS8wLz8NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQxOjAwLjM1OF0gIE1TSSAgICAgNjAgdmVjPTQxIGxvd2VzdCAgZWRn
ZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjAwLjM4N10gIE1TSSAgICAgNjEgdmVjPTQ5IGxvd2VzdCAg
ZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjQxNl0gIE1TSSAgICAgNjIgdmVjPTUxIGxvd2Vz
dCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjQ0NV0gIE1TSSAgICAgNjMgdmVjPTU5IGxv
d2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8x
Lz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjQ3NF0gIE1TSSAgICAgNjQgdmVjPTYx
IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9
MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjUwMl0gIE1TSSAgICAgNjUgdmVj
PTY5IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1h
c2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjUzMV0gIE1TSSAgICAgNjYg
dmVjPTcxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNm
IG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjU2MF0gIE1TSSAgICAg
NjcgdmVjPTc5IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAw
MDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjU4OV0gIE1TSSAg
ICAgNjggdmVjPTgxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAw
MDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjYxOF0gIE1T
SSAgICAgNjkgdmVjPTkxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0
PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjY0N10g
IE1TSSAgICAgNzAgdmVjPTk5IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBk
ZXN0PTAwMDAwMDNmIG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjY3
Nl0gIE1TSSAgICAgNzEgdmVjPWExIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2Vz
dCBkZXN0PTAwMDAwMDNmIG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAw
LjcwNF0gIE1TSSAgICAgNzIgdmVjPWIxIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxv
d2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MS8xLzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQx
OjAwLjczM10gIE1TSSAgICAgNzMgdmVjPTMyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9n
IGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjAwLjc2Ml0gIE1TSSAgICAgNzQgdmVjPTNhIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAg
bG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjAwLjc5MV0gIE1TSSAgICAgNzUgdmVjPTQyIGxvd2VzdCAgZWRnZSAgIGFzc2Vy
dCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjAwLjgyMF0gIE1TSSAgICAgNzYgdmVjPTRhIGxvd2VzdCAgZWRnZSAgIGFz
c2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjAwLjg0OV0gIE1TSSAgICAgNzcgdmVjPTUyIGxvd2VzdCAgZWRnZSAg
IGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQxOjAwLjg3OF0gIE1TSSAgICAgNzggdmVjPTVhIGxvd2VzdCAgZWRn
ZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8xLz8NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjAwLjkwNl0gIE1TSSAgICAgNzkgdmVjPTYyIGxvd2VzdCAg
ZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjkzNV0gIE1TSSAgICAgODAgdmVjPTZhIGxvd2Vz
dCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDNmIG1hc2s9MC8xLz8N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjk2NF0gIE1TSSAgICAgODEgdmVjPTdhIGxv
d2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9MC8x
Lz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAwLjk5M10gIE1TSSAgICAgODIgdmVjPTky
IGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1hc2s9
MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAxLjAyMl0gIE1TSSAgICAgODMgdmVj
PWEyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAxIG1h
c2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjAxLjA1MV0gIE1TSSAgICAgODQg
dmVjPWIyIGxvd2VzdCAgZWRnZSAgIGFzc2VydCAgbG9nIGxvd2VzdCBkZXN0PTAwMDAwMDAy
IG1hc2s9MC8xLz8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjAzMl0gbnVtYmVyIG9m
IE1QIElSUSBzb3VyY2VzOiAxNS4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjA0OF0g
bnVtYmVyIG9mIElPLUFQSUMgIzYgcmVnaXN0ZXJzOiAyNC4NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjA0LjA2Nl0gbnVtYmVyIG9mIElPLUFQSUMgIzcgcmVnaXN0ZXJzOiAzMi4NCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjA4NF0gdGVzdGluZyB0aGUgSU8gQVBJQy4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC4xMDRdIElP
IEFQSUMgIzYuLi4uLi4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjExN10gLi4uLiBy
ZWdpc3RlciAjMDA6IDA2MDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC4xMzNd
IC4uLi4uLi4gICAgOiBwaHlzaWNhbCBBUElDIGlkOiAwNg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDQuMTUwXSAuLi4uLi4uICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MDQuMTY2XSAuLi4uLi4uICAgIDogTFRTICAgICAgICAgIDogMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDQuMTgzXSAuLi4uIHJlZ2lzdGVyICMwMTogMDAx
NzgwMjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjE5OV0gLi4uLi4uLiAgICAgOiBt
YXggcmVkaXJlY3Rpb24gZW50cmllczogMDAxNw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDQuMjE5XSAuLi4uLi4uICAgICA6IFBSUSBpbXBsZW1lbnRlZDogMQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDE6MDQuMjM2XSAuLi4uLi4uICAgICA6IElPIEFQSUMgdmVyc2lvbjogMDAy
MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDQuMjU0XSAuLi4uIHJlZ2lzdGVyICMwMjog
MDYwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjI3MF0gLi4uLi4uLiAgICAg
OiBhcmJpdHJhdGlvbjogMDYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0LjI4Nl0gLi4u
LiByZWdpc3RlciAjMDM6IDNGMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC4z
MDJdIC4uLi4uLi4gICAgIDogQm9vdCBEVCAgICA6IDANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjA0LjMxOF0gLi4uLiBJUlEgcmVkaXJlY3Rpb24gdGFibGU6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MTowNC4zMzRdICBOUiBMb2cgUGh5IE1hc2sgVHJpZyBJUlIgUG9sIFN0YXQg
RGVzdCBEZWxpIFZlY3Q6ICAgDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC4zNTZdICAw
MCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC4zNzhdICAwMSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC4zOTldICAw
MiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIEYwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC40MjBdICAwMyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDM4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC40NDFdICAw
NCAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIEYxDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC40NjJdICAwNSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDQwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC40ODNdICAw
NiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDQ4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC41MDRdICAwNyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDUwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC41MjVdICAw
OCAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDU4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC41NDZdICAwOSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAg
IDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC41NjddICAw
YSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDY4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC41ODhdICAwYiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDcwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC42MDldICAw
YyAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDc4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC42MzBdICAwZCAwM0YgMEYgIDEgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDg4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC42NTFdICAw
ZSAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDkwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC42NzJdICAwZiAwMDEgMDEgIDAgICAgMCAgICAwICAgMCAg
IDAgICAgMSAgICAxICAgIDk4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC42OTNdICAx
MCAwMDEgMDEgIDAgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDg5DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC43MTVdICAxMSAwMDEgMDEgIDAgICAgMSAgICAwICAgMSAg
IDAgICAgMSAgICAwICAgIEMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC43MzZdICAx
MiAwMDEgMDEgIDAgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIEI4DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC43NTddICAxMyAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAg
IDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC43NzhdICAx
NCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC43OTldICAxNSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAg
IDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC44MjBdICAx
NiAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNC44NDFdICAxNyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAg
IDAgICAgMCAgICAxICAgIDMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC44NjJdIElP
IEFQSUMgIzcuLi4uLi4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0Ljg3NV0gLi4uLiBy
ZWdpc3RlciAjMDA6IDA3MDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNC44OTFd
IC4uLi4uLi4gICAgOiBwaHlzaWNhbCBBUElDIGlkOiAwNw0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDQuOTA4XSAuLi4uLi4uICAgIDogRGVsaXZlcnkgVHlwZTogMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MDQuOTI1XSAuLi4uLi4uICAgIDogTFRTICAgICAgICAgIDogMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDQuOTQxXSAuLi4uIHJlZ2lzdGVyICMwMTogMDAx
RjgwMjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA0Ljk1N10gLi4uLi4uLiAgICAgOiBt
YXggcmVkaXJlY3Rpb24gZW50cmllczogMDAxRg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDQuOTc3XSAuLi4uLi4uICAgICA6IFBSUSBpbXBsZW1lbnRlZDogMQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDE6MDQuOTk0XSAuLi4uLi4uICAgICA6IElPIEFQSUMgdmVyc2lvbjogMDAy
MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDUuMDEyXSAuLi4uIHJlZ2lzdGVyICMwMjog
MDAwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA1LjAyOF0gLi4uLi4uLiAgICAg
OiBhcmJpdHJhdGlvbjogMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA1LjA0NF0gLi4u
LiBJUlEgcmVkaXJlY3Rpb24gdGFibGU6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4w
NjBdICBOUiBMb2cgUGh5IE1hc2sgVHJpZyBJUlIgUG9sIFN0YXQgRGVzdCBEZWxpIFZlY3Q6
ICAgDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4wODNdICAwMCAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4xMDRdICAwMSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4xMjVdICAwMiAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4xNDZdICAwMyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4xNjddICAwNCAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4xODhdICAwNSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4yMDldICAwNiAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4yMzBdICAwNyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4yNTFdICAwOCAwMDIgMDIgIDAgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4yNzJdICAwOSAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4yOTNdICAwYSAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4zMTRdICAwYiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4zMzVdICAwYyAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4zNTZdICAwZCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS4zNzddICAwZSAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS4zOTldICAwZiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS40MjBdICAxMCAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS40NDFdICAxMSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS40NjJdICAxMiAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS40ODNdICAxMyAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS41MDRdICAxNCAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS41MjVdICAxNSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS41NDZdICAxNiAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS41NjddICAxNyAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS41ODhdICAxOCAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS42MDldICAxOSAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS42MzBdICAxYSAwMDAgMDAgIDEgICAg
MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS42NTFdICAxYiAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS42NzJdICAxYyAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS42OTNdICAxZCAwM0YgMEYgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAwICAg
IDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS43MTRdICAxZSAwM0YgMEYgIDEgICAg
MSAgICAwICAgMSAgIDAgICAgMSAgICAwICAgIDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS43MzVdICAxZiAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAg
IEM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS43NTddIFVzaW5nIHZlY3Rvci1iYXNl
ZCBpbmRleGluZw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDUuNzcyXSBJUlEgdG8gcGlu
IG1hcHBpbmdzOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDUuNzg2XSBJUlEyNDAgLT4g
MDoyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS43OTldIElSUTQ4IC0+IDA6MQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MDUuODExXSBJUlE1NiAtPiAwOjMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjA1LjgyM10gSVJRMjQxIC0+IDA6NA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDUuODM1XSBJUlE2NCAtPiAwOjUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA1
Ljg0N10gSVJRNzIgLT4gMDo2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS44NTldIElS
UTgwIC0+IDA6Nw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDUuODcxXSBJUlE4OCAtPiAw
OjgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA1Ljg4M10gSVJROTYgLT4gMDo5DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowNS44OTVdIElSUTEwNCAtPiAwOjEwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MTowNS45MDddIElSUTExMiAtPiAwOjExDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MTowNS45MjBdIElSUTEyMCAtPiAwOjEyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowNS45MzJdIElSUTEzNiAtPiAwOjEzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS45
NDVdIElSUTE0NCAtPiAwOjE0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS45NTddIElS
UTE1MiAtPiAwOjE1DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS45NzBdIElSUTEzNyAt
PiAwOjE2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS45ODJdIElSUTE5MiAtPiAwOjE3
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNS45OTRdIElSUTE4NCAtPiAwOjE4DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowNi4wMDddIElSUTQyIC0+IDA6MTkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjA2LjAxOV0gSVJRMTg1IC0+IDA6MjINCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjA2LjAzMl0gSVJRMTU0IC0+IDE6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDYuMDQ0XSBJUlEzNCAtPiAxOjQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjA1Nl0g
SVJRMjE3IC0+IDE6NQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDYuMDY4XSBJUlEyMDEg
LT4gMTo4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowNi4wODBdIElSUTE5MyAtPiAxOjkN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjA5Ml0gSVJRMzMgLT4gMToxMg0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDE6MDYuMTA1XSBJUlE0MSAtPiAxOjEzDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MTowNi4xMTddIElSUTE2OSAtPiAxOjE0DQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MTowNi4xMjldIElSUTQ5IC0+IDE6MTYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2
LjE0Ml0gSVJRMTE0IC0+IDE6MjINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjE1NF0g
SVJRMjA5IC0+IDE6MjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjE2N10gSVJRMjA4
IC0+IDE6MjQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjE3OV0gSVJRMTM4IC0+IDE6
MjcNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA2LjE5Ml0gSVJRNTcgLT4gMToyOA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MDYuMjA0XSBJUlEyMDAgLT4gMToyOQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MDYuMjE2XSBJUlEyMTYgLT4gMTozMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDE6MDYuMjI5XSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4g
ZG9uZS4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA3LjkwMV0gJ2UnIHByZXNzZWQgLT4g
ZHVtcGluZyBldmVudC1jaGFubmVsIGluZm8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA3
LjkyMV0gRXZlbnQgY2hhbm5lbCBpbmZvcm1hdGlvbiBmb3IgZG9tYWluIDA6DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MTowNy45NDBdIFBvbGxpbmcgdkNQVXM6IHt9DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MTowNy45NTNdICAgICBwb3J0IFtwL20vc10NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjA3Ljk2Nl0gICAgICAgIDEgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2
PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA3Ljk4NV0gICAgICAgIDIgWzEvMS8gIC0g
ICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguMDAyXSAgICAg
ICAgMyBbMC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowOC4wMjBdICAgICAgICA0IFswLzAvICAtICAgXTogcz02IG49MCB4PTANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQxOjA4LjAzOF0gICAgICAgIDUgWzAvMC8gIC0gICBdOiBzPTUgbj0w
IHg9MCB2PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjA1N10gICAgICAgIDYgWzAv
MC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguMDc0
XSAgICAgICAgNyBbMC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MTowOC4wOTJdICAgICAgICA4IFswLzAvICAtICAgXTogcz01IG49MSB4PTAgdj0w
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC4xMTFdICAgICAgICA5IFsxLzEvICAtICAg
XTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjEyOF0gICAgICAg
MTAgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDguMTQ2XSAgICAgICAxMSBbMC8wLyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MTowOC4xNjRdICAgICAgIDEyIFswLzAvICAtICAgXTogcz01IG49MSB4
PTAgdj0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC4xODJdICAgICAgIDEzIFswLzAv
ICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjIwMF0g
ICAgICAgMTQgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDguMjE4XSAgICAgICAxNSBbMC8wLyAgLSAgIF06IHM9NSBuPTIgeD0wIHY9MA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguMjM2XSAgICAgICAxNiBbMS8xLyAgLSAgIF06
IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC4yNTRdICAgICAgIDE3
IFswLzAvICAtICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4
LjI3Ml0gICAgICAgMTggWzAvMC8gIC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDE6MDguMjg5XSAgICAgICAxOSBbMC8wLyAgLSAgIF06IHM9NSBuPTIgeD0w
IHY9MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguMzA4XSAgICAgICAyMCBbMC8wLyAg
LSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC4zMjZdICAg
ICAgIDIxIFswLzAvICAtICAgXTogcz02IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjA4LjM0NF0gICAgICAgMjIgWzAvMC8gIC0gICBdOiBzPTUgbj0zIHg9MCB2PTANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjM2Ml0gICAgICAgMjMgWzEvMS8gIC0gICBdOiBz
PTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguMzgwXSAgICAgICAyNCBb
MC8wLyAgLSAgIF06IHM9NiBuPTMgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC4z
OThdICAgICAgIDI1IFswLzAvICAtICAgXTogcz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjA4LjQxNV0gICAgICAgMjYgWzAvMC8gIC0gICBdOiBzPTUgbj0zIHg9MCB2
PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjQzNF0gICAgICAgMjcgWzAvMC8gIC0g
ICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguNDUyXSAgICAg
ICAyOCBbMC8wLyAgLSAgIF06IHM9NiBuPTMgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowOC40NjldICAgICAgIDI5IFswLzAvICAtICAgXTogcz01IG49NCB4PTAgdj0wDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowOC40ODhdICAgICAgIDMwIFsxLzEvICAtICAgXTogcz02
IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjUwNl0gICAgICAgMzEgWzAv
MC8gIC0gICBdOiBzPTYgbj00IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguNTIz
XSAgICAgICAzMiBbMC8wLyAgLSAgIF06IHM9NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MTowOC41NDFdICAgICAgIDMzIFswLzAvICAtICAgXTogcz01IG49NCB4PTAgdj0x
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC41NjBdICAgICAgIDM0IFswLzAvICAtICAg
XTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjU3OF0gICAgICAg
MzUgWzAvMC8gIC0gICBdOiBzPTYgbj00IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDguNTk1XSAgICAgICAzNiBbMC8wLyAgLSAgIF06IHM9NSBuPTUgeD0wIHY9MA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDE6MDguNjE0XSAgICAgICAzNyBbMC8xLyAgLSAgIF06IHM9NiBu
PTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC42MzJdICAgICAgIDM4IFswLzAv
ICAtICAgXTogcz02IG49NSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4LjY0OV0g
ICAgICAgMzkgWzAvMC8gIC0gICBdOiBzPTYgbj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDguNjY3XSAgICAgICA0MCBbMC8wLyAgLSAgIF06IHM9NSBuPTUgeD0wIHY9MQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguNjg2XSAgICAgICA0MSBbMC8wLyAgLSAgIF06
IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOC43MDNdICAgICAgIDQy
IFswLzAvICAtICAgXTogcz02IG49NSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4
LjcyMV0gICAgICAgNDMgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTAgcD02MQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MDguNzQxXSAgICAgICA0NCBbMC8wLyAgLSAgIF06IHM9
NSBuPTAgeD0wIHY9OQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguNzYwXSAgICAgICA0
NSBbMC8xLyAgLSAgIF06IHM9NSBuPTAgeD0wIHY9Mg0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDE6MDguNzc5XSAgICAgICA0NiBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjkxIGk9
NzMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4Ljc5OV0gICAgICAgNDcgWzAvMC8gIC0g
ICBdOiBzPTQgbj0wIHg9MCBwPTI5MiBpPTc0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTow
OC44MjBdICAgICAgIDQ4IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTMgaT03NQ0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguODQwXSAgICAgICA0OSBbMC8wLyAgLSAgIF06
IHM9NCBuPTAgeD0wIHA9Mjk0IGk9NzYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4Ljg2
MV0gICAgICAgNTAgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5NSBpPTc3DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowOC44ODFdICAgICAgIDUxIFswLzAvICAtICAgXTogcz00
IG49MCB4PTAgcD0yOTYgaT03OA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguOTAyXSAg
ICAgICA1MiBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MTcgaT0xNw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MDguOTIyXSAgICAgICA1MyBbMS8wLyAgMCAgIF06IHM9NCBuPTAg
eD0wIHA9MTggaT0xOA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDguOTQyXSAgICAgICA1
NCBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MTIgaT0xMg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDE6MDguOTYzXSAgICAgICA1NSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9
MSBpPTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA4Ljk4Ml0gICAgICAgNTYgWzAvMC8g
IC0gICBdOiBzPTQgbj0wIHg9MCBwPTggaT04DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTow
OS4wMDJdICAgICAgIDU3IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xNiBpPTE2DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS4wMjJdICAgICAgIDU4IFswLzAvICAtICAgXTog
cz00IG49MCB4PTAgcD0yODggaT04Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuMDQz
XSAgICAgICA1OSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9MjkwIGk9ODENCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjA5LjA2M10gICAgICAgNjAgWzAvMC8gIC0gICBdOiBzPTQg
bj0wIHg9MCBwPTI4OSBpPTgyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS4wODRdICAg
ICAgIDYxIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NDMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjA5LjEwNF0gICAgICAgNjIgWzAvMC8gIC0gICBdOiBzPTUgbj0wIHg9
MCB2PTMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5LjEyM10gICAgICAgNjMgWzAvMC8g
IC0gICBdOiBzPTMgbj0wIHg9MCBkPTIgcD0xDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTow
OS4xNDJdICAgICAgIDY0IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0yIHA9Mg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MDkuMTYyXSAgICAgICA2NSBbMS8wLyAgNTMgIF06IHM9
MyBuPTAgeD0wIGQ9MiBwPTMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5LjE4Ml0gICAg
ICAgNjYgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTIgcD01DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MTowOS4yMDJdICAgICAgIDY3IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAg
ZD0yIHA9Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuMjIyXSAgICAgICA2OCBbMC8w
LyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MiBwPTQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQx
OjA5LjI0MV0gICAgICAgNjkgWzAvMC8gIC0gICBdOiBzPTMgbj0wIHg9MCBkPTIgcD0yNg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuMjYxXSAgICAgICA3MCBbMC8wLyAgLSAgIF06
IHM9MyBuPTAgeD0wIGQ9MiBwPTI3DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS4yODFd
ICAgICAgIDcxIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0yIHA9MjgNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQxOjA5LjMwMV0gICAgICAgNzIgWzAvMC8gIC0gICBdOiBzPTMgbj0w
IHg9MCBkPTIgcD0yOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuMzIxXSAgICAgICA3
MyBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MiBwPTMwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MTowOS4zNDFdICAgICAgIDc0IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0y
IHA9MzENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5LjM2MV0gICAgICAgNzUgWzAvMC8g
IC0gICBdOiBzPTMgbj0wIHg9MCBkPTIgcD0zMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6
MDkuMzgxXSBFdmVudCBjaGFubmVsIGluZm9ybWF0aW9uIGZvciBkb21haW4gMjoNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjA5LjQwMF0gUG9sbGluZyB2Q1BVczoge30NCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQxOjA5LjQxNF0gICAgIHBvcnQgW3AvbS9zXQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDE6MDkuNDI3XSAgICAgICAgMSBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0w
IGQ9MCBwPTYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS40NDddICAgICAgICAyIFsw
LzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NjQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjA5LjQ2N10gICAgICAgIDMgWzAvMS8gIC0gICBdOiBzPTMgbj0wIHg9MSBkPTAgcD02
NQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuNDg3XSAgICAgICAgNCBbMC8xLyAgLSAg
IF06IHM9MyBuPTAgeD0xIGQ9MCBwPTY4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS41
MDddICAgICAgICA1IFswLzEvICAtICAgXTogcz0zIG49MSB4PTEgZD0wIHA9NjYNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjA5LjUyN10gICAgICAgIDYgWzAvMS8gIC0gICBdOiBzPTMg
bj0yIHg9MSBkPTAgcD02Nw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuNTQ3XSAgICAg
ICAgNyBbMS8wLyAgMCAgIF06IHM9NSBuPTAgeD0wIHY9MA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MDkuNTY1XSAgICAgICAgOCBbMC8wLyAgLSAgIF06IHM9NiBuPTAgeD0wDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowOS41ODNdICAgICAgICA5IFswLzAvICAtICAgXTogcz02
IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5LjYwMV0gICAgICAgMTAgWzAv
MC8gIC0gICBdOiBzPTUgbj0wIHg9MCB2PTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5
LjYyMF0gICAgICAgMTEgWzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDE6MDkuNjM3XSAgICAgICAxMiBbMC8xLyAgLSAgIF06IHM9NiBuPTAgeD0w
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS42NTVdICAgICAgIDEzIFswLzAvICAtICAg
XTogcz01IG49MSB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS42NzRdICAg
ICAgIDE0IFswLzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQxOjA5LjY5MV0gICAgICAgMTUgWzAvMC8gIC0gICBdOiBzPTYgbj0xIHg9MA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDE6MDkuNzA5XSAgICAgICAxNiBbMC8wLyAgLSAgIF06IHM9NSBu
PTEgeD0wIHY9MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuNzI4XSAgICAgICAxNyBb
MC8wLyAgLSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS43
NDVdICAgICAgIDE4IFswLzEvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjA5Ljc2M10gICAgICAgMTkgWzAvMC8gIC0gICBdOiBzPTUgbj0yIHg9MCB2
PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5Ljc4Ml0gICAgICAgMjAgWzAvMC8gIC0g
ICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuNzk5XSAgICAg
ICAyMSBbMC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowOS44MTddICAgICAgIDIyIFswLzAvICAtICAgXTogcz01IG49MiB4PTAgdj0xDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0MTowOS44MzZdICAgICAgIDIzIFswLzAvICAtICAgXTogcz02
IG49MiB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5Ljg1NF0gICAgICAgMjQgWzAv
MS8gIC0gICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuODcx
XSAgICAgICAyNSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9ODcgaT04NA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDE6MDkuODkyXSAgICAgICAyNiBbMC8wLyAgLSAgIF06IHM9MyBu
PTAgeD0wIGQ9MCBwPTY5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTowOS45MTJdICAgICAg
IDI3IFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NzANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjA5LjkzMl0gICAgICAgMjggWzEvMC8gIDAgICBdOiBzPTMgbj0wIHg9MCBk
PTAgcD03MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MDkuOTUyXSAgICAgICAyOSBbMC8w
LyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTcyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MTowOS45NzJdICAgICAgIDMwIFswLzAvICAtICAgXTogcz0zIG49MCB4PTAgZD0wIHA9NzMN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjA5Ljk5Ml0gICAgICAgMzEgWzAvMC8gIC0gICBd
OiBzPTMgbj0wIHg9MCBkPTAgcD03NA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTAuMDEy
XSAgICAgICAzMiBbMC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTc1DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MToxMC4wMzJdICAgICAgIDMzIFswLzAvICAtICAgXTogcz00IG49
MCB4PTAgcD0yMSBpPTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjEwLjA1Ml0gICAgICAg
MzQgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTE3IGk9MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDE6MTAuMDcyXSAgICAgICAzNSBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9
MTggaT0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxMC4wOTJdICAgICAgIDM2IFswLzAv
ICAtICAgXTogcz0yIG49MCB4PTAgZD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxMC4x
MTBdICAgICAgIDM3IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xNiBpPTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjEwLjEzMF0gICAgICAgMzggWzAvMC8gIC0gICBdOiBzPTQg
bj0wIHg9MCBwPTIwIGk9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTUuNzYxXSAqKioq
KioqKioqKiBWTUNCIEFyZWFzICoqKioqKioqKioqKioqDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MToxNS43NzldIA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTUuNzg4XSA+Pj4gRG9t
YWluIDIgPDw8DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNS44MDFdIAlWQ1BVIDANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE1LjgxMl0gRHVtcGluZyBndWVzdCdzIGN1cnJlbnQg
c3RhdGUgYXQga2V5X2hhbmRsZXIuLi4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE1Ljgz
M10gU2l6ZSBvZiBWTUNCID0gNDA5NiwgcGFkZHIgPSAweDRiNTFiNTAwMCwgdmFkZHIgPSBm
ZmZmODMwNGI1MWI1MDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNS44NTldIGNyX2lu
dGVyY2VwdHMgPSAweGZlZjNmZWYzIGRyX2ludGVyY2VwdHMgPSAweGZmZmZmZmZmIGV4Y2Vw
dGlvbl9pbnRlcmNlcHRzID0gMHg0MDA0MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTUu
ODg5XSBnZW5lcmFsMV9pbnRlcmNlcHRzID0gMHhiZGM0MDAwZiBnZW5lcmFsMl9pbnRlcmNl
cHRzID0gMHgyZTdmDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNS45MTRdIGlvcG1fYmFz
ZV9wYSA9IDB4OWZjZTkwMDAgbXNycG1fYmFzZV9wYSA9IDB4NGI1MWIyMDAwIHRzY19vZmZz
ZXQgPSAweGZmZmZmYThiZmRiNTk5MDUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE1Ljk0
NV0gdGxiX2NvbnRyb2wgPSAwIHZpbnRyID0gMHgxMWYwMDAwIGludGVycnVwdF9zaGFkb3cg
PSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNS45NjhdIGV4aXRjb2RlID0gMHg3OCBl
eGl0aW50aW5mbyA9IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE1Ljk4NV0gZXhpdGlu
Zm8xID0gMCBleGl0aW5mbzIgPSAwIA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuMDAx
XSBucF9lbmFibGUgPSAxIGd1ZXN0X2FzaWQgPSAweDMzDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MToxNi4wMThdIGNwbCA9IDAgZWZlciA9IDB4MWQwMSBzdGFyID0gMHgyMzAwMTAwMDAw
MDAwMCBsc3RhciA9IDB4ZmZmZmZmZmY4MTllY2ZiMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDE6MTYuMDQ1XSBDUjAgPSAweDAwMDAwMDAwODAwNTAwM2IgQ1IyID0gMHgwMDAwN2Y4NTI5
NWIwMjc4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi4wNjddIENSMyA9IDB4MDAwMDAw
MDAzYmExMzAwMCBDUjQgPSAweDAwMDAwMDAwMDAwMDA2ZjANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE2LjA4OV0gUlNQID0gMHhmZmZmZmZmZjgxZTAzZWM4ICBSSVAgPSAweGZmZmZm
ZmZmODEwNGI2MDUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE2LjExMF0gUkFYID0gMHhm
ZmZmZmZmZjgxZTFjNTgwICBSRkxBR1M9MHgwMDAwMDAwMDAwMDAwMjg2DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MToxNi4xMzNdIERSNiA9IDB4MDAwMDAwMDBmZmZmMGZmMCwgRFI3ID0g
MHgwMDAwMDAwMDAwMDAwNDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi4xNTRdIENT
VEFSID0gMHhmZmZmZmZmZjgxOWVmMWIwIFNGTWFzayA9IDB4MDAwMDAwMDAwMDA0MzcwMA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuMTc3XSBLZXJuR1NCYXNlID0gMHgwMDAwMDAw
MDAwMDAwMDAwIFBBVCA9IDB4MDAwNzAxMDYwMDA3MDEwNiANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE2LjIwMV0gSF9DUjMgPSAweDAwMDAwMDA1NDQ5ODUwMDAgQ2xlYW5CaXRzID0g
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuMjIwXSBDUzogc2VsPTB4MDAxMCwgYXR0
cj0weDAyOWIsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi4yNDddIERTOiBzZWw9MHgwMDAwLCBhdHRyPTB4
MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weDAwMDAwMDAwMDAwMDAwMDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE2LjI3NF0gU1M6IHNlbD0weDAwMTgsIGF0dHI9MHgwYzkz
LCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAwMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MTYuMzAxXSBFUzogc2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxp
bWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MToxNi4zMjhdIEZTOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9
MHhmZmZmZmZmZiwgYmFzZT0weDAwMDA3Zjg1MDYwZWE3MDANCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE2LjM1NV0gR1M6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1pdD0weGZm
ZmZmZmZmLCBiYXNlPTB4ZmZmZjg4MDAzZjQwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDE6MTYuMzgyXSBHRFRSOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHgwMDAw
MDA3ZiwgYmFzZT0weGZmZmY4ODAwM2Y0MGEwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQx
OjE2LjQxMF0gTERUUjogc2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4MDAwMDAw
MDAsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTox
Ni40MzhdIElEVFI6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1pdD0weDAwMDAwZmZm
LCBiYXNlPTB4ZmZmZmZmZmZmZjU3YjAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYu
NDY1XSBUUjogc2VsPTB4MDA0MCwgYXR0cj0weDAwODksIGxpbWl0PTB4MDAwMDIwODcsIGJh
c2U9MHhmZmZmODgwMDNmNDEwYTAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi40OTJd
IAlWQ1BVIDENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE2LjUwM10gRHVtcGluZyBndWVz
dCdzIGN1cnJlbnQgc3RhdGUgYXQga2V5X2hhbmRsZXIuLi4NCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE2LjUyNF0gU2l6ZSBvZiBWTUNCID0gNDA5NiwgcGFkZHIgPSAweDRiNTFhYjAw
MCwgdmFkZHIgPSBmZmZmODMwNGI1MWFiMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTox
Ni41NTBdIGNyX2ludGVyY2VwdHMgPSAweGZlZjNmZWYzIGRyX2ludGVyY2VwdHMgPSAweGZm
ZmZmZmZmIGV4Y2VwdGlvbl9pbnRlcmNlcHRzID0gMHg0MDA0MA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDE6MTYuNTgxXSBnZW5lcmFsMV9pbnRlcmNlcHRzID0gMHhiZGM0MDAwZiBnZW5l
cmFsMl9pbnRlcmNlcHRzID0gMHgyZTdmDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi42
MDVdIGlvcG1fYmFzZV9wYSA9IDB4OWZjZTkwMDAgbXNycG1fYmFzZV9wYSA9IDB4NGI1MWE4
MDAwIHRzY19vZmZzZXQgPSAweGZmZmZmYThiZmRiNTk5MDUNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE2LjYzNl0gdGxiX2NvbnRyb2wgPSAwIHZpbnRyID0gMHgxMWYwMDAwIGludGVy
cnVwdF9zaGFkb3cgPSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi42NTldIGV4aXRj
b2RlID0gMHg3OCBleGl0aW50aW5mbyA9IDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE2
LjY3Nl0gZXhpdGluZm8xID0gMCBleGl0aW5mbzIgPSAwIA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDE6MTYuNjkyXSBucF9lbmFibGUgPSAxIGd1ZXN0X2FzaWQgPSAweDEwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MToxNi43MDldIGNwbCA9IDAgZWZlciA9IDB4MWQwMSBzdGFyID0g
MHgyMzAwMTAwMDAwMDAwMCBsc3RhciA9IDB4ZmZmZmZmZmY4MTllY2ZiMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MTYuNzM3XSBDUjAgPSAweDAwMDAwMDAwODAwNTAwM2IgQ1IyID0g
MHgwMDAwMDAwMDAxMjM0NDkwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi43NThdIENS
MyA9IDB4MDAwMDAwMDAzYmExMzAwMCBDUjQgPSAweDAwMDAwMDAwMDAwMDA2ZTANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE2Ljc4MF0gUlNQID0gMHhmZmZmODgwMDNkYmFmZTk4ICBS
SVAgPSAweGZmZmZmZmZmODEwNGI2MDUNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE2Ljgw
Ml0gUkFYID0gMHhmZmZmODgwMDNkYjlhNWUwICBSRkxBR1M9MHgwMDAwMDAwMDAwMDAwMjg2
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi44MjRdIERSNiA9IDB4MDAwMDAwMDBmZmZm
MGZmMCwgRFI3ID0gMHgwMDAwMDAwMDAwMDAwNDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MToxNi44NDVdIENTVEFSID0gMHhmZmZmZmZmZjgxOWVmMWIwIFNGTWFzayA9IDB4MDAwMDAw
MDAwMDA0MzcwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuODY4XSBLZXJuR1NCYXNl
ID0gMHgwMDAwMDAwMDAwMDAwMDAwIFBBVCA9IDB4MDAwNzAxMDYwMDA3MDEwNiANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE2Ljg5Ml0gSF9DUjMgPSAweDAwMDAwMDA1NDQ5ODUwMDAg
Q2xlYW5CaXRzID0gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuOTExXSBDUzogc2Vs
PTB4MDAxMCwgYXR0cj0weDAyOWIsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAw
MDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNi45MzhdIERTOiBzZWw9MHgw
MDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weDAwMDAwMDAwMDAw
MDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE2Ljk2NV0gU1M6IHNlbD0weDAwMTgs
IGF0dHI9MHgwYzkzLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAwMDAwMDAwMDAwMDAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTYuOTkyXSBFUzogc2VsPTB4MDAwMCwgYXR0
cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy4wMTldIEZTOiBzZWw9MHgwMDAwLCBhdHRyPTB4
MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weDAwMDA3Zjg1MTI1NTg3MDANCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE3LjA0Nl0gR1M6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAw
LCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4ZmZmZjg4MDAzZjQ0MDAwMA0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDE6MTcuMDczXSBHRFRSOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwg
bGltaXQ9MHgwMDAwMDA3ZiwgYmFzZT0weGZmZmY4ODAwM2Y0NGEwMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQxOjE3LjEwMV0gTERUUjogc2VsPTB4MDAwMCwgYXR0cj0weDAwMDAsIGxp
bWl0PTB4MDAwMGZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MToxNy4xMjldIElEVFI6IHNlbD0weDAwMDAsIGF0dHI9MHgwMDAwLCBsaW1p
dD0weDAwMDAwZmZmLCBiYXNlPTB4ZmZmZmZmZmZmZjU3YjAwMA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDE6MTcuMTU2XSBUUjogc2VsPTB4MDA0MCwgYXR0cj0weDAwODksIGxpbWl0PTB4
MDAwMDIwODcsIGJhc2U9MHhmZmZmODgwMDNmNDUwYTAwDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0MToxNy4xODNdIAlWQ1BVIDINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3LjE5NF0g
RHVtcGluZyBndWVzdCdzIGN1cnJlbnQgc3RhdGUgYXQga2V5X2hhbmRsZXIuLi4NCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE3LjIxNV0gU2l6ZSBvZiBWTUNCID0gNDA5NiwgcGFkZHIg
PSAweDRiNTFhNDAwMCwgdmFkZHIgPSBmZmZmODMwNGI1MWE0MDAwDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0MToxNy4yNDFdIGNyX2ludGVyY2VwdHMgPSAweGZlZjNmZWYzIGRyX2ludGVy
Y2VwdHMgPSAweGZmZmZmZmZmIGV4Y2VwdGlvbl9pbnRlcmNlcHRzID0gMHg0MDA0MA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MTcuMjcyXSBnZW5lcmFsMV9pbnRlcmNlcHRzID0gMHhi
ZGM0MDAwZiBnZW5lcmFsMl9pbnRlcmNlcHRzID0gMHgyZTdmDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0MToxNy4yOTZdIGlvcG1fYmFzZV9wYSA9IDB4OWZjZTkwMDAgbXNycG1fYmFzZV9w
YSA9IDB4NGI1MWEyMDAwIHRzY19vZmZzZXQgPSAweGZmZmZmYThiZmRiNTk5MDUNCihYRU4p
IFsyMDE0LTA5LTI1IDEzOjQxOjE3LjMyN10gdGxiX2NvbnRyb2wgPSAwIHZpbnRyID0gMHgx
MWYwMDAwIGludGVycnVwdF9zaGFkb3cgPSAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MTox
Ny4zNTBdIGV4aXRjb2RlID0gMHg3OCBleGl0aW50aW5mbyA9IDANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQxOjE3LjM2N10gZXhpdGluZm8xID0gMCBleGl0aW5mbzIgPSAwIA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDE6MTcuMzgzXSBucF9lbmFibGUgPSAxIGd1ZXN0X2FzaWQgPSAw
eDM5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy40MDBdIGNwbCA9IDAgZWZlciA9IDB4
MWQwMSBzdGFyID0gMHgyMzAwMTAwMDAwMDAwMCBsc3RhciA9IDB4ZmZmZmZmZmY4MTllY2Zi
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTcuNDI4XSBDUjAgPSAweDAwMDAwMDAwODAw
NTAwM2IgQ1IyID0gMHgwMDAwMDAwMDAxMWY0N2IwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
MToxNy40NDldIENSMyA9IDB4MDAwMDAwMDAzYzg1MDAwMCBDUjQgPSAweDAwMDAwMDAwMDAw
MDA2ZTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3LjQ3MV0gUlNQID0gMHhmZmZmODgw
MDNkYmI3ZTk4ICBSSVAgPSAweGZmZmZmZmZmODEwNGI2MDUNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQxOjE3LjQ5M10gUkFYID0gMHhmZmZmODgwMDNkYjliOGQwICBSRkxBR1M9MHgwMDAw
MDAwMDAwMDAwMjg2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy41MTVdIERSNiA9IDB4
MDAwMDAwMDBmZmZmMGZmMCwgRFI3ID0gMHgwMDAwMDAwMDAwMDAwNDAwDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0MToxNy41MzddIENTVEFSID0gMHhmZmZmZmZmZjgxOWVmMWIwIFNGTWFz
ayA9IDB4MDAwMDAwMDAwMDA0MzcwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTcuNTU5
XSBLZXJuR1NCYXNlID0gMHgwMDAwMDAwMDAwMDAwMDAwIFBBVCA9IDB4MDAwNzAxMDYwMDA3
MDEwNiANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3LjU4M10gSF9DUjMgPSAweDAwMDAw
MDA1NDQ5ODUwMDAgQ2xlYW5CaXRzID0gMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTcu
NjAyXSBDUzogc2VsPTB4MDAxMCwgYXR0cj0weDAyOWIsIGxpbWl0PTB4ZmZmZmZmZmYsIGJh
c2U9MHgwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy42Mjld
IERTOiBzZWw9MHgwMDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0w
eDAwMDAwMDAwMDAwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3LjY1Nl0gU1M6
IHNlbD0weDAwMTgsIGF0dHI9MHgwYzkzLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4MDAw
MDAwMDAwMDAwMDAwMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTcuNjgzXSBFUzogc2Vs
PTB4MDAwMCwgYXR0cj0weDAwMDAsIGxpbWl0PTB4ZmZmZmZmZmYsIGJhc2U9MHgwMDAwMDAw
MDAwMDAwMDAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy43MTBdIEZTOiBzZWw9MHgw
MDAwLCBhdHRyPTB4MDAwMCwgbGltaXQ9MHhmZmZmZmZmZiwgYmFzZT0weDAwMDA3ZjViMWRm
NTQ3MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3LjczN10gR1M6IHNlbD0weDAwMDAs
IGF0dHI9MHgwMDAwLCBsaW1pdD0weGZmZmZmZmZmLCBiYXNlPTB4ZmZmZjg4MDAzZjQ4MDAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDE6MTcuNzY1XSBHRFRSOiBzZWw9MHgwMDAwLCBh
dHRyPTB4MDAwMCwgbGltaXQ9MHgwMDAwMDA3ZiwgYmFzZT0weGZmZmY4ODAwM2Y0OGEwMDAN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQxOjE3Ljc5Ml0gTERUUjogc2VsPTB4MDAwMCwgYXR0
cj0weDAwMDAsIGxpbWl0PTB4MDAwMGZmZmYsIGJhc2U9MHgwMDAwMDAwMDAwMDAwMDAwDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0MToxNy44MjBdIElEVFI6IHNlbD0weDAwMDAsIGF0dHI9
MHgwMDAwLCBsaW1pdD0weDAwMDAwZmZmLCBiYXNlPTB4ZmZmZmZmZmZmZjU3YjAwMA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDE6MTcuODQ3XSBUUjogc2VsPTB4MDA0MCwgYXR0cj0weDAw
ODksIGxpbWl0PTB4MDAwMDIwODcsIGJhc2U9MHhmZmZmODgwMDNmNDkwYTAwDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0MToxNy44NzRdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqDQpbIDE5OTcuMTM0Njg0XSB4ZW5fYnJpZGdlOiBwb3J0IDEodmlmMi4wKSBl
bnRlcmVkIGRpc2FibGVkIHN0YXRlDQpbIDE5OTcuMTc2NTY2XSB4ZW5fYnJpZGdlOiBwb3J0
IDIodmlmMi4wLWVtdSkgZW50ZXJlZCBkaXNhYmxlZCBzdGF0ZQ0KWyAxOTk3LjIwMjI0Ml0g
ZGV2aWNlIHZpZjIuMC1lbXUgbGVmdCBwcm9taXNjdW91cyBtb2RlDQpbIDE5OTcuMjIzNjU5
XSB4ZW5fYnJpZGdlOiBwb3J0IDIodmlmMi4wLWVtdSkgZW50ZXJlZCBkaXNhYmxlZCBzdGF0
ZQ0KWyAxOTk3LjM3NDQ5MF0geGVuX2JyaWRnZTogcG9ydCAxKHZpZjIuMCkgZW50ZXJlZCBk
aXNhYmxlZCBzdGF0ZQ0KWyAxOTk3LjQwMDQwN10gZGV2aWNlIHZpZjIuMCBsZWZ0IHByb21p
c2N1b3VzIG1vZGUNClsgMTk5Ny40MjA0OTldIHhlbl9icmlkZ2U6IHBvcnQgMSh2aWYyLjAp
IGVudGVyZWQgZGlzYWJsZWQgc3RhdGUNClsgMTk5Ny41MDIwNzFdIHBjaWJhY2sgMDAwMDow
OTowMC4wOiByZXN0b3JpbmcgY29uZmlnIHNwYWNlIGF0IG9mZnNldCAweDQgKHdhcyAweDEw
MDQwMCwgd3JpdGluZyAweDEwMDAwNykNClsgMjI2NS4zOTU5NzFdIGlycSAxNjogbm9ib2R5
IGNhcmVkICh0cnkgYm9vdGluZyB3aXRoIHRoZSAiaXJxcG9sbCIgb3B0aW9uKQ0KWyAyMjY1
LjQyMjk0OF0gQ1BVOiAwIFBJRDogMCBDb21tOiBzd2FwcGVyLzAgTm90IHRhaW50ZWQgMy4x
Ny4wLXJjNi0yMDE0MDkyNS12YW5pbGxhKyAjMQ0KWyAyMjY1LjQ1MzMxNF0gSGFyZHdhcmUg
bmFtZTogTVNJIE1TLTc2NDAvODkwRlhBLUdENzAgKE1TLTc2NDApICAsIEJJT1MgVjEuOEIx
IDA5LzEzLzIwMTANClsgMjI2NS40ODQwNDZdICBmZmZmODgwMDU3YTFhMjkwIGZmZmY4ODAw
NWY2MDNkODggZmZmZmZmZmY4MWI3ZDkwZSAwMDAwMDAwMDAwMDAwMDAxDQpbIDIyNjUuNTEz
MDUzXSAgZmZmZjg4MDA1N2ExYTIwMCBmZmZmODgwMDVmNjAzZGI4IGZmZmZmZmZmODExMGQ2
YzggZmZmZjg4MDA1ZjYwM2RiOA0KWyAyMjY1LjU0MjEyMV0gIGZmZmY4ODAwNTdhMWEyMDAg
MDAwMDAwMDAwMDAwMDAxMCAwMDAwMDAwMDAwMDAwMDAwIGZmZmY4ODAwNWY2MDNlMDgNClsg
MjI2NS41NzExMzVdIENhbGwgVHJhY2U6DQpbIDIyNjUuNTg1NTA3XSAgPElSUT4gIFs8ZmZm
ZmZmZmY4MWI3ZDkwZT5dIGR1bXBfc3RhY2srMHg0Ni8weDU4DQpbIDIyNjUuNjA5Njk0XSAg
WzxmZmZmZmZmZjgxMTBkNmM4Pl0gX19yZXBvcnRfYmFkX2lycSsweDM4LzB4ZDANClsgMjI2
NS42MzM2MjVdICBbPGZmZmZmZmZmODExMGRjMWE+XSBub3RlX2ludGVycnVwdCsweDIzYS8w
eDI5MA0KWyAyMjY1LjY1NzU3Ml0gIFs8ZmZmZmZmZmY4MTU1ZjBmNT5dID8gYWRkX2ludGVy
cnVwdF9yYW5kb21uZXNzKzB4NDUvMHgyMTANClsgMjI2NS42ODQ0MDVdICBbPGZmZmZmZmZm
ODExMGI0NWQ+XSBoYW5kbGVfaXJxX2V2ZW50X3BlcmNwdSsweDlkLzB4MTUwDQpbIDIyNjUu
NzEwMzc5XSAgWzxmZmZmZmZmZjgxMTBiNTUzPl0gaGFuZGxlX2lycV9ldmVudCsweDQzLzB4
NzANClsgMjI2NS43MzQyMTNdICBbPGZmZmZmZmZmODExMGUyOWE+XSA/IGhhbmRsZV9mYXN0
ZW9pX2lycSsweDJhLzB4MTUwDQpbIDIyNjUuNzU5NDYzXSAgWzxmZmZmZmZmZjgxMTBlMmY3
Pl0gaGFuZGxlX2Zhc3Rlb2lfaXJxKzB4ODcvMHgxNTANClsgMjI2NS43ODQxMjJdICBbPGZm
ZmZmZmZmODExMGFjYmQ+XSBnZW5lcmljX2hhbmRsZV9pcnErMHgxZC8weDQwDQpbIDIyNjUu
ODA4MzM4XSAgWzxmZmZmZmZmZjgxNTIwMzdhPl0gZXZ0Y2huX2ZpZm9faGFuZGxlX2V2ZW50
cysweDE2YS8weDE3MA0KWyAyMjY1LjgzNDg5OF0gIFs8ZmZmZmZmZmY4MTUxZDRjOD5dIF9f
eGVuX2V2dGNobl9kb191cGNhbGwrMHg0OC8weDkwDQpbIDIyNjUuODYwMjQxXSAgWzxmZmZm
ZmZmZjgxNTFmMGQyPl0geGVuX2V2dGNobl9kb191cGNhbGwrMHgzMi8weDUwDQpbIDIyNjUu
ODg1MDMxXSAgWzxmZmZmZmZmZjgxYjhhNzZlPl0geGVuX2RvX2h5cGVydmlzb3JfY2FsbGJh
Y2srMHgxZS8weDMwDQpbIDIyNjUuOTExMjc5XSAgPEVPST4gIFs8ZmZmZmZmZmY4MTAwMTNh
YT5dID8geGVuX2h5cGVyY2FsbF9zY2hlZF9vcCsweGEvMHgyMA0KWyAyMjY1LjkzODUwOV0g
IFs8ZmZmZmZmZmY4MTAwMTNhYT5dID8geGVuX2h5cGVyY2FsbF9zY2hlZF9vcCsweGEvMHgy
MA0KWyAyMjY1Ljk2Mzk4MV0gIFs8ZmZmZmZmZmY4MTAwOGQ4MD5dID8geGVuX3NhZmVfaGFs
dCsweDEwLzB4MjANClsgMjI2NS45ODcxOThdICBbPGZmZmZmZmZmODEwMThiZDg+XSA/IGRl
ZmF1bHRfaWRsZSsweDE4LzB4MjANClsgMjI2Ni4wMTAwMzJdICBbPGZmZmZmZmZmODEwMTk0
OWE+XSA/IGFyY2hfY3B1X2lkbGUrMHhhLzB4MTANClsgMjI2Ni4wMzI4MjddICBbPGZmZmZm
ZmZmODEwZjg0ZjE+XSA/IGNwdV9zdGFydHVwX2VudHJ5KzB4MjgxLzB4MmYwDQpbIDIyNjYu
MDU3NDgxXSAgWzxmZmZmZmZmZjgxYjc0MWU0Pl0gPyByZXN0X2luaXQrMHhiNC8weGMwDQpb
IDIyNjYuMDc5NjcyXSAgWzxmZmZmZmZmZjgxYjc0MTMwPl0gPyBjc3VtX3BhcnRpYWxfY29w
eV9nZW5lcmljKzB4MTcwLzB4MTcwDQpbIDIyNjYuMTA2NDAxXSAgWzxmZmZmZmZmZjgyMzIx
MDc5Pl0gPyBzdGFydF9rZXJuZWwrMHg0M2YvMHg0NGMNClsgMjI2Ni4xMjk0NzldICBbPGZm
ZmZmZmZmODIzMjBhMjc+XSA/IHNldF9pbml0X2FyZysweDU4LzB4NTgNClsgMjI2Ni4xNTE5
NzFdICBbPGZmZmZmZmZmODIzMjA2MDg+XSA/IHg4Nl82NF9zdGFydF9yZXNlcnZhdGlvbnMr
MHgyYS8weDJjDQpbIDIyNjYuMTc3ODc5XSAgWzxmZmZmZmZmZjgyMzI0MGFmPl0gPyB4ZW5f
c3RhcnRfa2VybmVsKzB4NTliLzB4NTlkDQpbIDIyNjYuMjAxOTk0XSBoYW5kbGVyczoNClsg
MjI2Ni4yMTQ3ODNdIFs8ZmZmZmZmZmY4MTk0NTU4MD5dIGF6eF9pbnRlcnJ1cHQNClsgMjI2
Ni4yMzQwMzFdIERpc2FibGluZyBJUlEgIzE2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1
NC4zNThdIElSUSBpbmZvcm1hdGlvbjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU0LjM3
MV0gICAgSVJROiAgIDAgYWZmaW5pdHk6MDEgdmVjOmYwIHR5cGU9SU8tQVBJQy1lZGdlICAg
IHN0YXR1cz0wMDAwMDAwMCB0aW1lcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDY6NTQuNDAyXSAgICBJUlE6ICAgMSBhZmZpbml0eTowMSB2ZWM6MzAgdHlwZT1JTy1B
UElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDM0IGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6
ICAxKC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NC40MzhdICAgIElSUTogICAz
IGFmZmluaXR5OjAxIHZlYzozOCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAw
MDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NC40NjhdICAg
IElSUTogICA0IGFmZmluaXR5OjAxIHZlYzpmMSB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0
dXM9MDAwMDAwMDAgbnMxNjU1MF9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDY6NTQuNDk5XSAgICBJUlE6ICAgNSBhZmZpbml0eTowMSB2ZWM6NDAgdHlwZT1JTy1BUElD
LWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDY6NTQuNTMwXSAgICBJUlE6ICAgNiBhZmZpbml0eTowMSB2ZWM6NDggdHlw
ZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5ib3VuZA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDY6NTQuNTYwXSAgICBJUlE6ICAgNyBhZmZpbml0eTowMSB2
ZWM6NTAgdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDAyIG1hcHBlZCwgdW5i
b3VuZA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTQuNTkxXSAgICBJUlE6ICAgOCBhZmZp
bml0eTowMSB2ZWM6NTggdHlwZT1JTy1BUElDLWVkZ2UgICAgc3RhdHVzPTAwMDAwMDMwIGlu
LWZsaWdodD0wIGRvbWFpbi1saXN0PTA6ICA4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0Njo1NC42MjZdICAgIElSUTogICA5IGFmZmluaXR5OjNmIHZlYzo2MCB0eXBlPUlPLUFQ
SUMtbGV2ZWwgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0Njo1NC42NTddICAgIElSUTogIDEwIGFmZmluaXR5OjAxIHZlYzo2OCB0
eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NC42ODddICAgIElSUTogIDExIGFmZmluaXR5OjAx
IHZlYzo3MCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NC43MThdICAgIElSUTogIDEyIGFm
ZmluaXR5OjAxIHZlYzo3OCB0eXBlPUlPLUFQSUMtZWRnZSAgICBzdGF0dXM9MDAwMDAwMzAg
aW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogMTIoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU0Ljc1M10gICAgSVJROiAgMTMgYWZmaW5pdHk6M2YgdmVjOjg4IHR5cGU9SU8t
QVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ2OjU0Ljc4NF0gICAgSVJROiAgMTQgYWZmaW5pdHk6MDEgdmVjOjkw
IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQN
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU0LjgxNF0gICAgSVJROiAgMTUgYWZmaW5pdHk6
MDEgdmVjOjk4IHR5cGU9SU8tQVBJQy1lZGdlICAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQs
IHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU0Ljg0NF0gICAgSVJROiAgMTYg
YWZmaW5pdHk6MDEgdmVjOjg5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAz
MCBpbi1mbGlnaHQ9MSBkb21haW4tbGlzdD0wOiAxNihQTU0pLA0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTQuODgwXSAgICBJUlE6ICAxNyBhZmZpbml0eTowMSB2ZWM6YzAgdHlwZT1J
Ty1BUElDLWxldmVsICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0
PTA6IDE3KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NC45MTZdICAgIElSUTog
IDE4IGFmZmluaXR5OjAxIHZlYzpiOCB0eXBlPUlPLUFQSUMtbGV2ZWwgICBzdGF0dXM9MDAw
MDAwMzAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDogMTgoLS0tKSwNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU0Ljk1MV0gICAgSVJROiAgMTkgYWZmaW5pdHk6M2YgdmVjOjJhIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU0Ljk4Ml0gICAgSVJROiAgMjIgYWZmaW5pdHk6M2Yg
dmVjOmI5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjAxMl0gICAgSVJROiAgMjUgYWZm
aW5pdHk6M2YgdmVjOjlhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjA0M10gICAgSVJR
OiAgMjggYWZmaW5pdHk6M2YgdmVjOjIyIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjA3
M10gICAgSVJROiAgMjkgYWZmaW5pdHk6M2YgdmVjOmQ5IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ2OjU1LjEwM10gICAgSVJROiAgMzIgYWZmaW5pdHk6MDIgdmVjOmM5IHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU1LjEzNF0gICAgSVJROiAgMzMgYWZmaW5pdHk6M2YgdmVjOmMxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjE2NF0gICAgSVJROiAgMzYgYWZmaW5pdHk6M2Yg
dmVjOjIxIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjE5NV0gICAgSVJROiAgMzcgYWZm
aW5pdHk6M2YgdmVjOjI5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjIyNV0gICAgSVJR
OiAgMzggYWZmaW5pdHk6M2YgdmVjOmE5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjI1
NV0gICAgSVJROiAgNDAgYWZmaW5pdHk6M2YgdmVjOjMxIHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ2OjU1LjI4Nl0gICAgSVJROiAgNDYgYWZmaW5pdHk6M2YgdmVjOjcyIHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU1LjMxNl0gICAgSVJROiAgNDcgYWZmaW5pdHk6M2YgdmVjOmQxIHR5
cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjM0N10gICAgSVJROiAgNDggYWZmaW5pdHk6M2Yg
dmVjOmQwIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVu
Ym91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjM3N10gICAgSVJROiAgNTEgYWZm
aW5pdHk6M2YgdmVjOjhhIHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBt
YXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjQwOF0gICAgSVJR
OiAgNTIgYWZmaW5pdHk6M2YgdmVjOjM5IHR5cGU9SU8tQVBJQy1sZXZlbCAgIHN0YXR1cz0w
MDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU1LjQz
OF0gICAgSVJROiAgNTMgYWZmaW5pdHk6M2YgdmVjOmM4IHR5cGU9SU8tQVBJQy1sZXZlbCAg
IHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ2OjU1LjQ2OF0gICAgSVJROiAgNTQgYWZmaW5pdHk6M2YgdmVjOmQ4IHR5cGU9SU8tQVBJ
Qy1sZXZlbCAgIHN0YXR1cz0wMDAwMDAwMiBtYXBwZWQsIHVuYm91bmQNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU1LjQ5OV0gICAgSVJROiAgNTYgYWZmaW5pdHk6MDEgdmVjOjI4IHR5
cGU9QU1ELUlPTU1VLU1TSSAgIHN0YXR1cz0wMDAwMDAwMCBpb21tdV9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS41MzJdICAgIElSUTogIDU3IGFm
ZmluaXR5OjEwIHZlYzphMCB0eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAg
aHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS41
NjVdICAgIElSUTogIDU4IGFmZmluaXR5OjAyIHZlYzphOCB0eXBlPUhQRVQtTVNJICAgICAg
ICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFuZGxlcigpDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0Njo1NS41OTddICAgIElSUTogIDU5IGFmZmluaXR5OjA0IHZlYzpiMCB0
eXBlPUhQRVQtTVNJICAgICAgICBzdGF0dXM9MDAwMDAwMDAgaHBldF9pbnRlcnJ1cHRfaGFu
ZGxlcigpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS42MzBdICAgIElSUTogIDYwIGFm
ZmluaXR5OjNmIHZlYzo0MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS42NjFdICAgIElS
UTogIDYxIGFmZmluaXR5OjNmIHZlYzo0OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS42
OTFdICAgIElSUTogIDYyIGFmZmluaXR5OjNmIHZlYzo1MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0Njo1NS43MjFdICAgIElSUTogIDYzIGFmZmluaXR5OjNmIHZlYzo1OSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0Njo1NS43NTJdICAgIElSUTogIDY0IGFmZmluaXR5OjNmIHZlYzo2MSB0
eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS43ODJdICAgIElSUTogIDY1IGFmZmluaXR5OjNm
IHZlYzo2OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS44MTNdICAgIElSUTogIDY2IGFm
ZmluaXR5OjNmIHZlYzo3MSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS44NDNdICAgIElS
UTogIDY3IGFmZmluaXR5OjNmIHZlYzo3OSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS44
NzNdICAgIElSUTogIDY4IGFmZmluaXR5OjNmIHZlYzo4MSB0eXBlPVBDSS1NU0kgICAgICAg
ICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0Njo1NS45MDRdICAgIElSUTogIDY5IGFmZmluaXR5OjNmIHZlYzo5MSB0eXBlPVBDSS1N
U0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0Njo1NS45MzRdICAgIElSUTogIDcwIGFmZmluaXR5OjNmIHZlYzo5OSB0
eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS45NjVdICAgIElSUTogIDcxIGFmZmluaXR5OjNm
IHZlYzphMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1
bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1NS45OTVdICAgIElSUTogIDcyIGFm
ZmluaXR5OjNmIHZlYzpiMSB0eXBlPVBDSS1NU0kvLVggICAgICBzdGF0dXM9MDAwMDAwMDIg
bWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ni4wMjZdICAgIElS
UTogIDczIGFmZmluaXR5OjAxIHZlYzozMiB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9
MDAwMDAwMTAgaW4tZmxpZ2h0PTAgZG9tYWluLWxpc3Q9MDoyOTEoLS0tKSwNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ2OjU2LjA2MV0gICAgSVJROiAgNzQgYWZmaW5pdHk6MDEgdmVjOjNh
IHR5cGU9UENJLU1TSSAgICAgICAgIHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21h
aW4tbGlzdD0wOjI5MigtLS0pLA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuMDk3XSAg
ICBJUlE6ICA3NSBhZmZpbml0eTowMSB2ZWM6NDIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3Rh
dHVzPTAwMDAwMDEwIGluLWZsaWdodD0wIGRvbWFpbi1saXN0PTA6MjkzKC0tLSksDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0Njo1Ni4xMzJdICAgIElSUTogIDc2IGFmZmluaXR5OjAxIHZl
Yzo0YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMzAgaW4tZmxpZ2h0PTAg
ZG9tYWluLWxpc3Q9MDoyOTQoLS0tKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjE2
OF0gICAgSVJROiAgNzcgYWZmaW5pdHk6MDEgdmVjOjUyIHR5cGU9UENJLU1TSSAgICAgICAg
IHN0YXR1cz0wMDAwMDAzMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI5NSgtLS0pLA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuMjA0XSAgICBJUlE6ICA3OCBhZmZpbml0eTow
MSB2ZWM6NWEgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdo
dD0wIGRvbWFpbi1saXN0PTA6Mjk2KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1
Ni4yMzldICAgIElSUTogIDc5IGFmZmluaXR5OjNmIHZlYzo2MiB0eXBlPVBDSS1NU0kgICAg
ICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0Njo1Ni4yNzBdICAgIElSUTogIDgwIGFmZmluaXR5OjNmIHZlYzo2YSB0eXBlPVBD
SS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMDIgbWFwcGVkLCB1bmJvdW5kDQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0Njo1Ni4zMDBdICAgIElSUTogIDgxIGFmZmluaXR5OjAxIHZlYzo3
YSB0eXBlPVBDSS1NU0kgICAgICAgICBzdGF0dXM9MDAwMDAwMTAgaW4tZmxpZ2h0PTEgZG9t
YWluLWxpc3Q9MDoyOTAoUC1NKSwNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjMzNl0g
ICAgSVJROiAgODIgYWZmaW5pdHk6MDEgdmVjOjkyIHR5cGU9UENJLU1TSSAgICAgICAgIHN0
YXR1cz0wMDAwMDAxMCBpbi1mbGlnaHQ9MCBkb21haW4tbGlzdD0wOjI4OShQLS0pLA0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDY6NTYuMzcxXSAgICBJUlE6ICA4MyBhZmZpbml0eTowMSB2
ZWM6YTIgdHlwZT1QQ0ktTVNJICAgICAgICAgc3RhdHVzPTAwMDAwMDMwIGluLWZsaWdodD0w
IGRvbWFpbi1saXN0PTA6Mjg4KC0tLSksDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ni40
MDddIERpcmVjdCB2ZWN0b3IgaW5mb3JtYXRpb246DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
Njo1Ni40MjNdICAgIDB4MjAgLT4gaXJxX21vdmVfY2xlYW51cF9pbnRlcnJ1cHQoKQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNDQyXSAgICAweGY5IC0+IHBtdV9hcGljX2ludGVy
cnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ni40NThdICAgIDB4ZmEgLT4gYXBp
Y190aW1lcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNDc2XSAg
ICAweGZiIC0+IGNhbGxfZnVuY3Rpb25faW50ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2LjQ5NF0gICAgMHhmYyAtPiBldmVudF9jaGVja19pbnRlcnJ1cHQoKQ0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNTEyXSAgICAweGZkIC0+IGludmFsaWRhdGVfaW50
ZXJydXB0KCkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjUyOV0gICAgMHhmZSAtPiBl
cnJvcl9pbnRlcnJ1cHQoKQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNTQ1XSAgICAw
eGZmIC0+IHNwdXJpb3VzX2ludGVycnVwdCgpDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1
Ni41NjJdIElPLUFQSUMgaW50ZXJydXB0IGluZm9ybWF0aW9uOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTYuNTc5XSAgICAgSVJRICAwIFZlYzI0MDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2LjU5Ml0gICAgICAgQXBpYyAweDAwLCBQaW4gIDI6IHZlYz1mMCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNjI4XSAgICAgSVJRICAx
IFZlYyA0ODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjY0Ml0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDE6IHZlYz0zMCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTYuNjc3XSAgICAgSVJRICAzIFZlYyA1NjoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2LjY5MV0gICAgICAgQXBpYyAweDAwLCBQaW4gIDM6IHZlYz0zOCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuNzI2XSAgICAgSVJRICA0
IFZlYzI0MToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2Ljc0MF0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDQ6IHZlYz1mMSBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTYuNzc1XSAgICAgSVJRICA1IFZlYyA2NDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2Ljc4OV0gICAgICAgQXBpYyAweDAwLCBQaW4gIDU6IHZlYz00MCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuODI1XSAgICAgSVJRICA2
IFZlYyA3MjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjgzOF0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDY6IHZlYz00OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTYuODc0XSAgICAgSVJRICA3IFZlYyA4MDoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2Ljg4N10gICAgICAgQXBpYyAweDAwLCBQaW4gIDc6IHZlYz01MCBkZWxpdmVy
eT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0w
IGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTYuOTIzXSAgICAgSVJRICA4
IFZlYyA4ODoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU2LjkzNl0gICAgICAgQXBpYyAw
eDAwLCBQaW4gIDg6IHZlYz01OCBkZWxpdmVyeT1Mb1ByaSBkZXN0PUwgc3RhdHVzPTAgcG9s
YXJpdHk9MCBpcnI9MCB0cmlnPUUgbWFzaz0wIGRlc3RfaWQ6MQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTYuOTcyXSAgICAgSVJRICA5IFZlYyA5NjoNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ2OjU2Ljk4NV0gICAgICAgQXBpYyAweDAwLCBQaW4gIDk6IHZlYz0wMCBkZWxpdmVy
eT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0x
IGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU3LjAyMV0gICAgIElSUSAx
MCBWZWMxMDQ6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny4wMzVdICAgICAgIEFwaWMg
MHgwMCwgUGluIDEwOiB2ZWM9NjggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ2OjU3LjA3MF0gICAgIElSUSAxMSBWZWMxMTI6DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0Njo1Ny4wODRdICAgICAgIEFwaWMgMHgwMCwgUGluIDExOiB2ZWM9NzAgZGVsaXZl
cnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9
MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU3LjEyMF0gICAgIElSUSAx
MiBWZWMxMjA6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny4xMzNdICAgICAgIEFwaWMg
MHgwMCwgUGluIDEyOiB2ZWM9NzggZGVsaXZlcnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBv
bGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9MCBkZXN0X2lkOjENCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ2OjU3LjE2OV0gICAgIElSUSAxMyBWZWMxMzY6DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0Njo1Ny4xODJdICAgICAgIEFwaWMgMHgwMCwgUGluIDEzOiB2ZWM9ODggZGVsaXZl
cnk9TG9QcmkgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTAgaXJyPTAgdHJpZz1FIG1hc2s9
MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny4yMThdICAgICBJUlEg
MTQgVmVjMTQ0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuMjMyXSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxNDogdmVjPTkwIGRlbGl2ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0Njo1Ny4yNjddICAgICBJUlEgMTUgVmVjMTUyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTcuMjgxXSAgICAgICBBcGljIDB4MDAsIFBpbiAxNTogdmVjPTk4IGRlbGl2
ZXJ5PUxvUHJpIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0wIGlycj0wIHRyaWc9RSBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny4zMTZdICAgICBJUlEg
MTYgVmVjMTM3Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuMzMwXSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxNjogdmVjPTg5IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0xIGlycj0xIHRyaWc9TCBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0Njo1Ny4zNjZdICAgICBJUlEgMTcgVmVjMTkyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTcuMzc5XSAgICAgICBBcGljIDB4MDAsIFBpbiAxNzogdmVjPWMwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny40MTVdICAgICBJUlEg
MTggVmVjMTg0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuNDI4XSAgICAgICBBcGlj
IDB4MDAsIFBpbiAxODogdmVjPWI4IGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBw
b2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTAgZGVzdF9pZDoxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0Njo1Ny40NjRdICAgICBJUlEgMTkgVmVjIDQyOg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDY6NTcuNDc3XSAgICAgICBBcGljIDB4MDAsIFBpbiAxOTogdmVjPTAwIGRlbGl2
ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNr
PTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuNTEzXSAgICAgSVJR
IDIyIFZlYzE4NToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU3LjUyN10gICAgICAgQXBp
YyAweDAwLCBQaW4gMjI6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAg
cG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU3LjU2M10gICAgIElSUSAyNSBWZWMxNTQ6DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0Njo1Ny41NzZdICAgICAgIEFwaWMgMHgwMSwgUGluICAxOiB2ZWM9MDAgZGVs
aXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1h
c2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny42MTJdICAgICBJ
UlEgMjggVmVjIDM0Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuNjI2XSAgICAgICBB
cGljIDB4MDEsIFBpbiAgNDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9
MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDY6NTcuNjYxXSAgICAgSVJRIDI5IFZlYzIxNzoNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ2OjU3LjY3NV0gICAgICAgQXBpYyAweDAxLCBQaW4gIDU6IHZlYz0wMCBk
ZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwg
bWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU3LjcxMV0gICAg
IElSUSAzMiBWZWMyMDE6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny43MjRdICAgICAg
IEFwaWMgMHgwMSwgUGluICA4OiB2ZWM9YzkgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1
cz0xIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjINCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ2OjU3Ljc2MF0gICAgIElSUSAzMyBWZWMxOTM6DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0Njo1Ny43NzRdICAgICAgIEFwaWMgMHgwMSwgUGluICA5OiB2ZWM9MDAg
ZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1M
IG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny44MDldICAg
ICBJUlEgMzYgVmVjIDMzOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTcuODIzXSAgICAg
ICBBcGljIDB4MDEsIFBpbiAxMjogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0
dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDY6NTcuODU5XSAgICAgSVJRIDM3IFZlYyA0MToNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ2OjU3Ljg3Ml0gICAgICAgQXBpYyAweDAxLCBQaW4gMTM6IHZlYz0w
MCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmln
PUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU3LjkwOF0g
ICAgIElSUSAzOCBWZWMxNjk6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny45MjJdICAg
ICAgIEFwaWMgMHgwMSwgUGluIDE0OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0
YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0Njo1Ny45NThdICAgICBJUlEgNDAgVmVjIDQ5Og0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDY6NTcuOTcxXSAgICAgICBBcGljIDB4MDEsIFBpbiAxNjogdmVj
PTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRy
aWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTguMDA3
XSAgICAgSVJRIDQ2IFZlYzExNDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU4LjAyMF0g
ICAgICAgQXBpYyAweDAxLCBQaW4gMjI6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwg
c3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU4LjA1Nl0gICAgIElSUSA0NyBWZWMyMDk6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0Njo1OC4wNzBdICAgICAgIEFwaWMgMHgwMSwgUGluIDIzOiB2
ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVzdD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAg
dHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1OC4x
MDZdICAgICBJUlEgNDggVmVjMjA4Og0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTguMTE5
XSAgICAgICBBcGljIDB4MDEsIFBpbiAyNDogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9
TCBzdGF0dXM9MCBwb2xhcml0eT0xIGlycj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTguMTU1XSAgICAgSVJRIDUxIFZlYzEzODoNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU4LjE2OV0gICAgICAgQXBpYyAweDAxLCBQaW4gMjc6
IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBkZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9
MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU4
LjIwNV0gICAgIElSUSA1MiBWZWMgNTc6DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1OC4y
MThdICAgICAgIEFwaWMgMHgwMSwgUGluIDI4OiB2ZWM9MDAgZGVsaXZlcnk9Rml4ZWQgZGVz
dD1MIHN0YXR1cz0wIHBvbGFyaXR5PTEgaXJyPTAgdHJpZz1MIG1hc2s9MSBkZXN0X2lkOjYz
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Njo1OC4yNTRdICAgICBJUlEgNTMgVmVjMjAwOg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDY6NTguMjY3XSAgICAgICBBcGljIDB4MDEsIFBpbiAy
OTogdmVjPTAwIGRlbGl2ZXJ5PUZpeGVkIGRlc3Q9TCBzdGF0dXM9MCBwb2xhcml0eT0xIGly
cj0wIHRyaWc9TCBtYXNrPTEgZGVzdF9pZDo2Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDY6
NTguMzAzXSAgICAgSVJRIDU0IFZlYzIxNjoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ2OjU4
LjMxN10gICAgICAgQXBpYyAweDAxLCBQaW4gMzA6IHZlYz0wMCBkZWxpdmVyeT1GaXhlZCBk
ZXN0PUwgc3RhdHVzPTAgcG9sYXJpdHk9MSBpcnI9MCB0cmlnPUwgbWFzaz0xIGRlc3RfaWQ6
NjMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA1LjkyMV0gJ0knIHByZXNzZWQgLT4gZHVt
cGluZyBIVk0gaXJxIGluZm8NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4LjUwMF0gPT09
PSBQQ0kgZGV2aWNlcyA9PT09DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC41MTVdID09
PT0gc2VnbWVudCAwMDAwID09PT0NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4LjUyOV0g
MDAwMDowZjowMC4xIC0gZG9tIDAgICAtIE1TSXMgPCA4MyA+DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzowOC41NDddIDAwMDA6MGY6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDc6MDguNTY1XSAwMDAwOjBlOjAwLjEgLSBkb20gMCAgIC0g
TVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4LjU4Ml0gMDAwMDowZTowMC4w
IC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC42MDBd
IDAwMDA6MGQ6MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgODEgPg0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDc6MDguNjE4XSAwMDAwOjBjOjAwLjAgLSBkb20gMCAgIC0gTVNJcyA8IDgyID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4LjYzNl0gMDAwMDowYjowMC4wIC0gZG9tIDAg
ICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC42NTNdIDAwMDA6MGE6
MDAuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDgu
NjcxXSAwMDAwOjA5OjAwLjEgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ3OjA4LjY4OF0gMDAwMDowOTowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC43MDZdIDAwMDA6MDg6MDAuMCAtIGRvbSAwICAg
LSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDguNzIzXSAwMDAwOjA3OjAw
LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4Ljc0
MV0gMDAwMDowNjowMi4wIC0gZG9tIDAgICAtIE1TSXMgPCA3MiA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0NzowOC43NTldIDAwMDA6MDY6MDEuMCAtIGRvbSAwICAgLSBNU0lzIDwgNzEg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDguNzc3XSAwMDAwOjA1OjAwLjAgLSBkb20g
MCAgIC0gTVNJcyA8IDcwID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4Ljc5NV0gMDAw
MDowNDowMC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
NzowOC44MTNdIDAwMDA6MDM6MDYuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MDguODMwXSAwMDAwOjAwOjE4LjQgLSBkb20gMCAgIC0gTVNJcyA8
ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4Ljg0N10gMDAwMDowMDoxOC4zIC0gZG9t
IDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC44NjVdIDAwMDA6
MDA6MTguMiAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6
MDguODgyXSAwMDAwOjAwOjE4LjEgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjA4LjkwMF0gMDAwMDowMDoxOC4wIC0gZG9tIDAgICAtIE1TSXMgPCA+
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOC45MTddIDAwMDA6MDA6MTYuMiAtIGRvbSAw
ICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDguOTM1XSAwMDAwOjAw
OjE2LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA4
Ljk1Ml0gMDAwMDowMDoxNS4wIC0gZG9tIDAgICAtIE1TSXMgPCA2OSA+DQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0NzowOC45NzBdIDAwMDA6MDA6MTQuNSAtIGRvbSAwICAgLSBNU0lzIDwg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDguOTg4XSAwMDAwOjAwOjE0LjQgLSBkb20g
MCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA5LjAwNV0gMDAwMDow
MDoxNC4zIC0gZG9tIDAgICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Nzow
OS4wMjJdIDAwMDA6MDA6MTQuMiAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MDkuMDQwXSAwMDAwOjAwOjE0LjAgLSBkb20gMCAgIC0gTVNJcyA8ID4N
CihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA5LjA1N10gMDAwMDowMDoxMy4yIC0gZG9tIDAg
ICAtIE1TSXMgPCA+DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOS4wNzVdIDAwMDA6MDA6
MTMuMCAtIGRvbSAwICAgLSBNU0lzIDwgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDku
MDkyXSAwMDAwOjAwOjEyLjIgLSBkb20gMCAgIC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ3OjA5LjEwOV0gMDAwMDowMDoxMi4wIC0gZG9tIDAgICAtIE1TSXMgPCA+DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0NzowOS4xMjddIDAwMDA6MDA6MTEuMCAtIGRvbSAwICAg
LSBNU0lzIDwgNzMgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDkuMTQ1XSAwMDAwOjAw
OjBkLjAgLSBkb20gMCAgIC0gTVNJcyA8IDY4ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjA5LjE2M10gMDAwMDowMDowYy4wIC0gZG9tIDAgICAtIE1TSXMgPCA2NyA+DQooWEVOKSBb
MjAxNC0wOS0yNSAxMzo0NzowOS4xODJdIDAwMDA6MDA6MGIuMCAtIGRvbSAwICAgLSBNU0lz
IDwgNjYgPg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDkuMjAwXSAwMDAwOjAwOjBhLjAg
LSBkb20gMCAgIC0gTVNJcyA8IDY1ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA5LjIx
OF0gMDAwMDowMDowOS4wIC0gZG9tIDAgICAtIE1TSXMgPCA2NCA+DQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0NzowOS4yMzZdIDAwMDA6MDA6MDYuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjMg
Pg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MDkuMjU0XSAwMDAwOjAwOjA1LjAgLSBkb20g
MCAgIC0gTVNJcyA8IDYyID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA5LjI3M10gMDAw
MDowMDowMy4wIC0gZG9tIDAgICAtIE1TSXMgPCA2MSA+DQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0NzowOS4yOTFdIDAwMDA6MDA6MDIuMCAtIGRvbSAwICAgLSBNU0lzIDwgNjAgPg0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDc6MDkuMzA5XSAwMDAwOjAwOjAwLjAgLSBkb20gMCAgIC0g
TVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjA5LjMyNl0gMDAwMDowMDowMC4y
IC0gZG9tIDMyNzU0IC0gTVNJcyA8ID4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjExLjMy
OF0gTVNJIGluZm9ybWF0aW9uOg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuMzQxXSAg
TVNJICAgICA1NiB2ZWM9MjggbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRl
c3Q9MDAwMDAwMDEgbWFzaz0wLzAvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuMzcw
XSAgSFBFVCAgICA1NyB2ZWM9YTAgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0
IGRlc3Q9MDAwMDAwMTAgbWFzaz0xLzAvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEu
Mzk5XSAgSFBFVCAgICA1OCB2ZWM9YTggbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93
ZXN0IGRlc3Q9MDAwMDAwMDIgbWFzaz0xLzAvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6
MTEuNDI4XSAgSFBFVCAgICA1OSB2ZWM9YjAgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cg
bG93ZXN0IGRlc3Q9MDAwMDAwMDQgbWFzaz0xLzAvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDc6MTEuNDU3XSAgTVNJICAgICA2MCB2ZWM9NDEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBs
b2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDc6MTEuNDg2XSAgTVNJICAgICA2MSB2ZWM9NDkgbG93ZXN0ICBlZGdlICAgYXNzZXJ0
ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDc6MTEuNTE0XSAgTVNJICAgICA2MiB2ZWM9NTEgbG93ZXN0ICBlZGdlICAgYXNz
ZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTEuNTQzXSAgTVNJICAgICA2MyB2ZWM9NTkgbG93ZXN0ICBlZGdlICAg
YXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTEuNTcyXSAgTVNJICAgICA2NCB2ZWM9NjEgbG93ZXN0ICBlZGdl
ICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTEuNjAxXSAgTVNJICAgICA2NSB2ZWM9NjkgbG93ZXN0ICBl
ZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNjMwXSAgTVNJICAgICA2NiB2ZWM9NzEgbG93ZXN0
ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNjU5XSAgTVNJICAgICA2NyB2ZWM9NzkgbG93
ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEv
Pw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNjg4XSAgTVNJICAgICA2OCB2ZWM9ODEg
bG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0w
LzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNzE2XSAgTVNJICAgICA2OSB2ZWM9
OTEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFz
az0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNzQ1XSAgTVNJICAgICA3MCB2
ZWM9OTkgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2Yg
bWFzaz0xLzEvMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuNzc0XSAgTVNJICAgICA3
MSB2ZWM9YTEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAw
M2YgbWFzaz0xLzEvMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuODAzXSAgTVNJICAg
ICA3MiB2ZWM9YjEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAw
MDAwM2YgbWFzaz0xLzEvMQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuODMyXSAgTVNJ
ICAgICA3MyB2ZWM9MzIgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9
MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuODYxXSAg
TVNJICAgICA3NCB2ZWM9M2EgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRl
c3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEuODkw
XSAgTVNJICAgICA3NSB2ZWM9NDIgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0
IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTEu
OTE4XSAgTVNJICAgICA3NiB2ZWM9NGEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cgbG93
ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6
MTEuOTQ3XSAgTVNJICAgICA3NyB2ZWM9NTIgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBsb2cg
bG93ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDc6MTEuOTc2XSAgTVNJICAgICA3OCB2ZWM9NWEgbG93ZXN0ICBlZGdlICAgYXNzZXJ0ICBs
b2cgbG93ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDc6MTIuMDA1XSAgTVNJICAgICA3OSB2ZWM9NjIgbG93ZXN0ICBlZGdlICAgYXNzZXJ0
ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDc6MTIuMDM0XSAgTVNJICAgICA4MCB2ZWM9NmEgbG93ZXN0ICBlZGdlICAgYXNz
ZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwM2YgbWFzaz0wLzEvPw0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTIuMDYzXSAgTVNJICAgICA4MSB2ZWM9N2EgbG93ZXN0ICBlZGdlICAg
YXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTIuMDkyXSAgTVNJICAgICA4MiB2ZWM9OTIgbG93ZXN0ICBlZGdl
ICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTIuMTIwXSAgTVNJICAgICA4MyB2ZWM9YTIgbG93ZXN0ICBl
ZGdlICAgYXNzZXJ0ICBsb2cgbG93ZXN0IGRlc3Q9MDAwMDAwMDEgbWFzaz0wLzEvPw0KKFhF
TikgWzIwMTQtMDktMjUgMTM6NDc6MTMuODQ3XSBudW1iZXIgb2YgTVAgSVJRIHNvdXJjZXM6
IDE1Lg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTMuODYzXSBudW1iZXIgb2YgSU8tQVBJ
QyAjNiByZWdpc3RlcnM6IDI0Lg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTMuODgxXSBu
dW1iZXIgb2YgSU8tQVBJQyAjNyByZWdpc3RlcnM6IDMyLg0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDc6MTMuODk5XSB0ZXN0aW5nIHRoZSBJTyBBUElDLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjEzLjkxOV0gSU8gQVBJQyAjNi4uLi4uLg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTMuOTMyXSAuLi4uIHJlZ2lzdGVyICMwMDogMDYw
MDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjEzLjk0OF0gLi4uLi4uLiAgICA6IHBo
eXNpY2FsIEFQSUMgaWQ6IDA2DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxMy45NjVdIC4u
Li4uLi4gICAgOiBEZWxpdmVyeSBUeXBlOiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Nzox
My45ODJdIC4uLi4uLi4gICAgOiBMVFMgICAgICAgICAgOiAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzoxMy45OThdIC4uLi4gcmVnaXN0ZXIgIzAxOiAwMDE3ODAyMQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTQuMDE0XSAuLi4uLi4uICAgICA6IG1heCByZWRpcmVjdGlvbiBl
bnRyaWVzOiAwMDE3DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNC4wMzRdIC4uLi4uLi4g
ICAgIDogUFJRIGltcGxlbWVudGVkOiAxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNC4w
NTFdIC4uLi4uLi4gICAgIDogSU8gQVBJQyB2ZXJzaW9uOiAwMDIxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0NzoxNC4wNjldIC4uLi4gcmVnaXN0ZXIgIzAyOiAwNjAwMDAwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTQuMDg1XSAuLi4uLi4uICAgICA6IGFyYml0cmF0aW9uOiAw
Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTQuMTAxXSAuLi4uIHJlZ2lzdGVyICMwMzog
M0YwMDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjExN10gLi4uLi4uLiAgICAg
OiBCb290IERUICAgIDogMA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTQuMTMzXSAuLi4u
IElSUSByZWRpcmVjdGlvbiB0YWJsZToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjE0
OV0gIE5SIExvZyBQaHkgTWFzayBUcmlnIElSUiBQb2wgU3RhdCBEZXN0IERlbGkgVmVjdDog
ICANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjE3Ml0gIDAwIDAwMCAwMCAgMSAgICAw
ICAgIDAgICAwICAgMCAgICAwICAgIDEgICAgMzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjE5M10gIDAxIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
MzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjIxNF0gIDAyIDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgRjANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjIzNV0gIDAzIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
MzgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjI1Nl0gIDA0IDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgRjENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjI3N10gIDA1IDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
NDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjI5OF0gIDA2IDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNDgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjMxOV0gIDA3IDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
NTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjM0MF0gIDA4IDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNTgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjM2MV0gIDA5IDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAg
MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjM4Ml0gIDBhIDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNjgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjQwM10gIDBiIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
NzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjQyNF0gIDBjIDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNzgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjQ0Nl0gIDBkIDAzRiAwRiAgMSAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
ODgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjQ2N10gIDBlIDAwMSAwMSAgMCAgICAw
ICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgOTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjQ4OF0gIDBmIDAwMSAwMSAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg
OTgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjUwOV0gIDEwIDAwMSAwMSAgMCAgICAx
ICAgIDEgICAxICAgMCAgICAxICAgIDAgICAgODkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjUzMF0gIDExIDAwMSAwMSAgMCAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAg
QzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjU1MV0gIDEyIDAwMSAwMSAgMCAgICAx
ICAgIDEgICAxICAgMCAgICAxICAgIDAgICAgQjgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjU3Ml0gIDEzIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAg
MDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjU5M10gIDE0IDAwMCAwMCAgMSAgICAw
ICAgIDAgICAwICAgMCAgICAwICAgIDEgICAgMzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjYxNF0gIDE1IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDEgICAg
MzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjYzNV0gIDE2IDAzRiAwRiAgMSAgICAx
ICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE0LjY1Nl0gIDE3IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDEgICAg
MzANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjY3N10gSU8gQVBJQyAjNy4uLi4uLg0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTQuNjkwXSAuLi4uIHJlZ2lzdGVyICMwMDogMDcw
MDAwMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjcwNl0gLi4uLi4uLiAgICA6IHBo
eXNpY2FsIEFQSUMgaWQ6IDA3DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNC43MjNdIC4u
Li4uLi4gICAgOiBEZWxpdmVyeSBUeXBlOiAwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Nzox
NC43NDBdIC4uLi4uLi4gICAgOiBMVFMgICAgICAgICAgOiAwDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzoxNC43NTZdIC4uLi4gcmVnaXN0ZXIgIzAxOiAwMDFGODAyMQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTQuNzcyXSAuLi4uLi4uICAgICA6IG1heCByZWRpcmVjdGlvbiBl
bnRyaWVzOiAwMDFGDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNC43OTJdIC4uLi4uLi4g
ICAgIDogUFJRIGltcGxlbWVudGVkOiAxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNC44
MDldIC4uLi4uLi4gICAgIDogSU8gQVBJQyB2ZXJzaW9uOiAwMDIxDQooWEVOKSBbMjAxNC0w
OS0yNSAxMzo0NzoxNC44MjddIC4uLi4gcmVnaXN0ZXIgIzAyOiAwMDAwMDAwMA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTQuODQzXSAuLi4uLi4uICAgICA6IGFyYml0cmF0aW9uOiAw
MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTQuODU5XSAuLi4uIElSUSByZWRpcmVjdGlv
biB0YWJsZToNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0Ljg3NV0gIE5SIExvZyBQaHkg
TWFzayBUcmlnIElSUiBQb2wgU3RhdCBEZXN0IERlbGkgVmVjdDogICANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE0Ljg5OF0gIDAwIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0LjkxOV0gIDAxIDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE0Ljk0MF0gIDAyIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE0Ljk2MV0gIDAzIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE0Ljk4Ml0gIDA0IDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjAwM10gIDA1IDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjAyNF0gIDA2IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjA0NV0gIDA3IDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjA2Nl0gIDA4IDAwMiAwMiAgMSAgICAxICAgIDAgICAxICAgMSAg
ICAxICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjA4N10gIDA5IDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjEwOV0gIDBhIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjEzMF0gIDBiIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjE1MV0gIDBjIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjE3Ml0gIDBkIDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjE5M10gIDBlIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjIxNF0gIDBmIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjIzNV0gIDEwIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjI1Nl0gIDExIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjI3N10gIDEyIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjI5OF0gIDEzIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjMxOV0gIDE0IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjM0MF0gIDE1IDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjM2MV0gIDE2IDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjM4Ml0gIDE3IDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjQwM10gIDE4IDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjQyNF0gIDE5IDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjQ0NV0gIDFhIDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAg
ICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjQ2N10gIDFiIDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjQ4OF0gIDFjIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjUwOV0gIDFkIDAz
RiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAgICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjUzMF0gIDFlIDAzRiAwRiAgMSAgICAxICAgIDAgICAxICAgMCAg
ICAxICAgIDAgICAgMDANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjU1MV0gIDFmIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgQzkNCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjU3Ml0gVXNpbmcgdmVjdG9yLWJhc2VkIGluZGV4aW5nDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0NzoxNS41ODhdIElSUSB0byBwaW4gbWFwcGluZ3M6DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0NzoxNS42MDJdIElSUTI0MCAtPiAwOjINCihYRU4pIFsyMDE0
LTA5LTI1IDEzOjQ3OjE1LjYxNF0gSVJRNDggLT4gMDoxDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0NzoxNS42MjZdIElSUTU2IC0+IDA6Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUu
NjM4XSBJUlEyNDEgLT4gMDo0DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNS42NTBdIElS
UTY0IC0+IDA6NQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuNjYyXSBJUlE3MiAtPiAw
OjYNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjY3NF0gSVJRODAgLT4gMDo3DQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0NzoxNS42ODZdIElSUTg4IC0+IDA6OA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTUuNjk4XSBJUlE5NiAtPiAwOjkNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ3OjE1LjcxMF0gSVJRMTA0IC0+IDA6MTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1
LjcyMl0gSVJRMTEyIC0+IDA6MTENCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1LjczNV0g
SVJRMTIwIC0+IDA6MTINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljc0N10gSVJRMTM2
IC0+IDA6MTMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljc2MF0gSVJRMTQ0IC0+IDA6
MTQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljc3Ml0gSVJRMTUyIC0+IDA6MTUNCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljc4NV0gSVJRMTM3IC0+IDA6MTYNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ3OjE1Ljc5N10gSVJRMTkyIC0+IDA6MTcNCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ3OjE1LjgxMF0gSVJRMTg0IC0+IDA6MTgNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ3OjE1LjgyMl0gSVJRNDIgLT4gMDoxOQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUu
ODM0XSBJUlExODUgLT4gMDoyMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuODQ3XSBJ
UlExNTQgLT4gMToxDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNS44NTldIElSUTM0IC0+
IDE6NA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuODcxXSBJUlEyMTcgLT4gMTo1DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNS44ODNdIElSUTIwMSAtPiAxOjgNCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ3OjE1Ljg5Nl0gSVJRMTkzIC0+IDE6OQ0KKFhFTikgWzIwMTQtMDkt
MjUgMTM6NDc6MTUuOTA4XSBJUlEzMyAtPiAxOjEyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
NzoxNS45MjBdIElSUTQxIC0+IDE6MTMNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljkz
Ml0gSVJRMTY5IC0+IDE6MTQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE1Ljk0NV0gSVJR
NDkgLT4gMToxNg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuOTU3XSBJUlExMTQgLT4g
MToyMg0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuOTY5XSBJUlEyMDkgLT4gMToyMw0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTUuOTgyXSBJUlEyMDggLT4gMToyNA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTUuOTk0XSBJUlExMzggLT4gMToyNw0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTYuMDA3XSBJUlE1NyAtPiAxOjI4DQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0NzoxNi4wMTldIElSUTIwMCAtPiAxOjI5DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Nzox
Ni4wMzJdIElSUTIxNiAtPiAxOjMwDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNi4wNDRd
IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBkb25lLg0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTcuNTU2XSAnZScgcHJlc3NlZCAtPiBkdW1waW5nIGV2ZW50LWNo
YW5uZWwgaW5mbw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuNTc1XSBFdmVudCBjaGFu
bmVsIGluZm9ybWF0aW9uIGZvciBkb21haW4gMDoNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3
OjE3LjU5NF0gUG9sbGluZyB2Q1BVczoge30NCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3
LjYwN10gICAgIHBvcnQgW3AvbS9zXQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuNjIw
XSAgICAgICAgMSBbMC8wLyAgLSAgIF06IHM9NSBuPTAgeD0wIHY9MA0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTcuNjM5XSAgICAgICAgMiBbMS8xLyAgLSAgIF06IHM9NiBuPTAgeD0w
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNy42NTddICAgICAgICAzIFsxLzAvICAwICAg
XTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3LjY3NV0gICAgICAg
IDQgWzAvMC8gIC0gICBdOiBzPTYgbj0wIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6
MTcuNjkyXSAgICAgICAgNSBbMC8wLyAgLSAgIF06IHM9NSBuPTAgeD0wIHY9MQ0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTcuNzExXSAgICAgICAgNiBbMC8wLyAgLSAgIF06IHM9NiBu
PTAgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNy43MjldICAgICAgICA3IFswLzAv
ICAtICAgXTogcz02IG49MCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3Ljc0Nl0g
ICAgICAgIDggWzAvMC8gIC0gICBdOiBzPTUgbj0xIHg9MCB2PTANCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ3OjE3Ljc2NV0gICAgICAgIDkgWzEvMS8gIC0gICBdOiBzPTYgbj0xIHg9MA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuNzgzXSAgICAgICAxMCBbMC8wLyAgLSAgIF06
IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNy44MDBdICAgICAgIDEx
IFswLzAvICAtICAgXTogcz02IG49MSB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3
LjgxOF0gICAgICAgMTIgWzAvMC8gIC0gICBdOiBzPTUgbj0xIHg9MCB2PTENCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ3OjE3LjgzN10gICAgICAgMTMgWzAvMC8gIC0gICBdOiBzPTYgbj0x
IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuODU0XSAgICAgICAxNCBbMC8wLyAg
LSAgIF06IHM9NiBuPTEgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNy44NzJdICAg
ICAgIDE1IFswLzAvICAtICAgXTogcz01IG49MiB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzoxNy44OTFdICAgICAgIDE2IFsxLzEvICAtICAgXTogcz02IG49MiB4PTANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3LjkwOV0gICAgICAgMTcgWzAvMC8gIC0gICBdOiBz
PTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuOTI2XSAgICAgICAxOCBb
MC8wLyAgLSAgIF06IHM9NiBuPTIgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxNy45
NDRdICAgICAgIDE5IFswLzAvICAtICAgXTogcz01IG49MiB4PTAgdj0xDQooWEVOKSBbMjAx
NC0wOS0yNSAxMzo0NzoxNy45NjNdICAgICAgIDIwIFswLzAvICAtICAgXTogcz02IG49MiB4
PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE3Ljk4MF0gICAgICAgMjEgWzAvMC8gIC0g
ICBdOiBzPTYgbj0yIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTcuOTk4XSAgICAg
ICAyMiBbMC8wLyAgLSAgIF06IHM9NSBuPTMgeD0wIHY9MA0KKFhFTikgWzIwMTQtMDktMjUg
MTM6NDc6MTguMDE3XSAgICAgICAyMyBbMS8xLyAgLSAgIF06IHM9NiBuPTMgeD0wDQooWEVO
KSBbMjAxNC0wOS0yNSAxMzo0NzoxOC4wMzRdICAgICAgIDI0IFswLzAvICAtICAgXTogcz02
IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjA1Ml0gICAgICAgMjUgWzAv
MC8gIC0gICBdOiBzPTYgbj0zIHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTguMDcw
XSAgICAgICAyNiBbMC8wLyAgLSAgIF06IHM9NSBuPTMgeD0wIHY9MQ0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTguMDg4XSAgICAgICAyNyBbMC8wLyAgLSAgIF06IHM9NiBuPTMgeD0w
DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC4xMDZdICAgICAgIDI4IFswLzAvICAtICAg
XTogcz02IG49MyB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjEyNF0gICAgICAg
MjkgWzAvMC8gIC0gICBdOiBzPTUgbj00IHg9MCB2PTANCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ3OjE4LjE0M10gICAgICAgMzAgWzEvMS8gIC0gICBdOiBzPTYgbj00IHg9MA0KKFhFTikg
WzIwMTQtMDktMjUgMTM6NDc6MTguMTYwXSAgICAgICAzMSBbMC8wLyAgLSAgIF06IHM9NiBu
PTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC4xNzhdICAgICAgIDMyIFswLzAv
ICAtICAgXTogcz02IG49NCB4PTANCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjE5Nl0g
ICAgICAgMzMgWzAvMC8gIC0gICBdOiBzPTUgbj00IHg9MCB2PTENCihYRU4pIFsyMDE0LTA5
LTI1IDEzOjQ3OjE4LjIxNF0gICAgICAgMzQgWzAvMC8gIC0gICBdOiBzPTYgbj00IHg9MA0K
KFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTguMjMyXSAgICAgICAzNSBbMC8wLyAgLSAgIF06
IHM9NiBuPTQgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC4yNTBdICAgICAgIDM2
IFswLzAvICAtICAgXTogcz01IG49NSB4PTAgdj0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0
NzoxOC4yNjhdICAgICAgIDM3IFswLzEvICAtICAgXTogcz02IG49NSB4PTANCihYRU4pIFsy
MDE0LTA5LTI1IDEzOjQ3OjE4LjI4Nl0gICAgICAgMzggWzAvMC8gIC0gICBdOiBzPTYgbj01
IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTguMzA0XSAgICAgICAzOSBbMC8wLyAg
LSAgIF06IHM9NiBuPTUgeD0wDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC4zMjFdICAg
ICAgIDQwIFswLzAvICAtICAgXTogcz01IG49NSB4PTAgdj0xDQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzoxOC4zNDBdICAgICAgIDQxIFswLzAvICAtICAgXTogcz02IG49NSB4PTANCihY
RU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjM1OF0gICAgICAgNDIgWzAvMC8gIC0gICBdOiBz
PTYgbj01IHg9MA0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTguMzc1XSAgICAgICA0MyBb
MC8wLyAgLSAgIF06IHM9MyBuPTAgeD0wIGQ9MCBwPTYxDQooWEVOKSBbMjAxNC0wOS0yNSAx
Mzo0NzoxOC4zOTZdICAgICAgIDQ0IFswLzAvICAtICAgXTogcz01IG49MCB4PTAgdj05DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC40MTRdICAgICAgIDQ1IFswLzEvICAtICAgXTog
cz01IG49MCB4PTAgdj0yDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC40MzNdICAgICAg
IDQ2IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0yOTEgaT03Mw0KKFhFTikgWzIwMTQt
MDktMjUgMTM6NDc6MTguNDUzXSAgICAgICA0NyBbMC8wLyAgLSAgIF06IHM9NCBuPTAgeD0w
IHA9MjkyIGk9NzQNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjQ3NF0gICAgICAgNDgg
WzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5MyBpPTc1DQooWEVOKSBbMjAxNC0wOS0y
NSAxMzo0NzoxOC40OTVdICAgICAgIDQ5IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0y
OTQgaT03Ng0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTguNTE1XSAgICAgICA1MCBbMC8w
LyAgLSAgIF06IHM9NCBuPTAgeD0wIHA9Mjk1IGk9NzcNCihYRU4pIFsyMDE0LTA5LTI1IDEz
OjQ3OjE4LjUzNl0gICAgICAgNTEgWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI5NiBp
PTc4DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC41NTZdICAgICAgIDUyIFswLzAvICAt
ICAgXTogcz00IG49MCB4PTAgcD0xNyBpPTE3DQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0Nzox
OC41NzZdICAgICAgIDUzIFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xOCBpPTE4DQoo
WEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC41OTddICAgICAgIDU0IFswLzAvICAtICAgXTog
cz00IG49MCB4PTAgcD0xMiBpPTEyDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC42MTdd
ICAgICAgIDU1IFswLzAvICAtICAgXTogcz00IG49MCB4PTAgcD0xIGk9MQ0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MTguNjM3XSAgICAgICA1NiBbMC8wLyAgLSAgIF06IHM9NCBuPTAg
eD0wIHA9OCBpPTgNCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjY1N10gICAgICAgNTcg
WzEvMS8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTE2IGk9MTYNCihYRU4pIFsyMDE0LTA5LTI1
IDEzOjQ3OjE4LjY3N10gICAgICAgNTggWzAvMC8gIC0gICBdOiBzPTQgbj0wIHg9MCBwPTI4
OCBpPTgzDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoxOC42OTddICAgICAgIDU5IFswLzAv
ICAtICAgXTogcz00IG49MCB4PTAgcD0yOTAgaT04MQ0KKFhFTikgWzIwMTQtMDktMjUgMTM6
NDc6MTguNzE4XSAgICAgICA2MCBbMS8wLyAgMCAgIF06IHM9NCBuPTAgeD0wIHA9Mjg5IGk9
ODINCihYRU4pIFsyMDE0LTA5LTI1IDEzOjQ3OjE4LjczOF0gICAgICAgNjEgWzAvMC8gIC0g
ICBdOiBzPTMgbj0wIHg9MCBkPTAgcD00Mw0KKFhFTikgWzIwMTQtMDktMjUgMTM6NDc6MTgu
NzU4XSAgICAgICA2MiBbMC8wLyAgLSAgIF06IHM9NSBuPTAgeD0wIHY9Mw0KKFhFTikgWzIw
MTQtMDktMjUgMTM6NDc6MjAuMjkwXSAqKioqKioqKioqKiBWTUNCIEFyZWFzICoqKioqKioq
KioqKioqDQooWEVOKSBbMjAxNC0wOS0yNSAxMzo0NzoyMC4zMDldICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqDQo=
------------0F00510E42C86A23A
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

------------0F00510E42C86A23A--



From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:44 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBXA-0002ll-RA; Thu, 25 Sep 2014 16:04:44 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX9-0002lY-HC
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:44 +0000
Received: from [85.158.143.35:44208] by server-3.bemta-4.messagelabs.com id
	A1/A3-06192-A1D34245; Thu, 25 Sep 2014 16:04:42 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-12.tower-21.messagelabs.com!1411661080!11972779!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31752 invoked from network); 25 Sep 2014 16:04:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-12.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:41 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185165"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:24 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSy-0004M6-4v;
	Thu, 25 Sep 2014 17:00:24 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:18 +0100
Message-ID: <1411660758-12578-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 3/3] Add XenDisk device upper filter.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

XenDisk intercepts and translates IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP requests
to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
XenDisk is only neccessary because Storport does not do the translation
to SCSIOP_UNMAPs.

Changes for v2:
* replace inline functions with intrinsics for byte array access/ordering
* add brackets for Length calculation
* remove SRB flags relating to queues (irrelevant for miniports)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 build.py                            |    1 +
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1862 +++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2079 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   73 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 vs2012/package/package.vcxproj      |    3 +
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   28 +
 vs2013/package/package.vcxproj      |    3 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xendisk/xendisk.vcxproj.user |    8 +
 vs2013/xenvbd.sln                   |   28 +
 24 files changed, 5729 insertions(+)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj
 create mode 100644 vs2013/xendisk/xendisk.vcxproj.user

diff --git a/build.py b/build.py
index 26261ad..3a71d0c 100644
--- a/build.py
+++ b/build.py
@@ -368,6 +368,7 @@ if __name__ == '__main__':
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xendisk', driver, vs)
         run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
diff --git a/src/xendisk/assert.h b/src/xendisk/assert.h
new file mode 100644
index 0000000..cd571bd
--- /dev/null
+++ b/src/xendisk/assert.h
@@ -0,0 +1,220 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _XENDISK_ASSERT_H
+#define _XENDISK_ASSERT_H
+
+#include <ntddk.h>
+
+#include "debug.h"
+
+static FORCEINLINE VOID
+__BugCheck(
+    __in  ULONG       Code,
+    __in_opt ULONG_PTR   Parameter1,
+    __in_opt ULONG_PTR   Parameter2,
+    __in_opt ULONG_PTR   Parameter3,
+    __in_opt ULONG_PTR   Parameter4
+    )
+{
+#pragma prefast(suppress:28159)
+    KeBugCheckEx(Code,
+                 Parameter1,
+                 Parameter2,
+                 Parameter3,
+                 Parameter4);
+}
+
+#define ASSERTION_FAILURE   0x0000DEAD
+
+
+#define BUG(_TEXT)                                              \
+        do {                                                    \
+            const CHAR  *_Text = (_TEXT);                       \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT "\n");                          \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text,                        \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       0);                                      \
+        } while (FALSE)
+
+#define BUG_MSG(_TEXT1, _TEXT2)                                 \
+        do {                                                    \
+            const CHAR  *_Text1 = (_TEXT1);                     \
+            const CHAR  *_Text2 = (_TEXT2);                     \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT1 " %s\n", _Text2);              \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text1,                       \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       (ULONG_PTR)_Text2);                      \
+        } while (FALSE)
+
+#define BUG_ON(_EXP)                           \
+        if (_EXP) BUG(#_EXP)
+
+#define BUG_ON_MSG(_EXP, _TEXT)                \
+        if (_EXP) BUG_MSG(#_EXP, _TEXT)
+
+#if DBG
+
+#define __NT_ASSERT(_EXP)                                       \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP "\n"),                \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __NT_ASSERT_MSG(_EXP, _TEXT)                            \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP " " #_TEXT "\n"),     \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __ASSERT(_EXP)              __NT_ASSERT(_EXP)
+#define __ASSERT_MSG(_EXP, _TEXT)   __NT_ASSERT_MSG(_EXP, _TEXT)
+
+#else   // DBG
+
+#define __ASSERT(_EXP)              BUG_ON(!(_EXP))
+#define __ASSERT_MSG(_EXP, _TEXT)   BUG_ON_MSG(!(_EXP), _TEXT)
+
+#endif  // DBG
+
+#undef  ASSERT
+
+#define ASSERT(_EXP)                    \
+        do {                            \
+            __ASSERT(_EXP);             \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT_MSG(_EXP, _TEXT)         \
+        do {                            \
+            __ASSERT_MSG(_EXP, _TEXT);  \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT3U(_X, _OP, _Y)                       \
+        do {                                        \
+            ULONGLONG   _Lval = (ULONGLONG)(_X);    \
+            ULONGLONG   _Rval = (ULONGLONG)(_Y);    \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %llu\n", #_X, _Lval);   \
+                Error("%s = %llu\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3S(_X, _OP, _Y)                       \
+        do {                                        \
+            LONGLONG    _Lval = (LONGLONG)(_X);     \
+            LONGLONG    _Rval = (LONGLONG)(_Y);     \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %lld\n", #_X, _Lval);   \
+                Error("%s = %lld\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3P(_X, _OP, _Y)                       \
+        do {                                        \
+            PVOID   _Lval = (PVOID)(_X);            \
+            PVOID   _Rval = (PVOID)(_Y);            \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %p\n", #_X, _Lval);     \
+                Error("%s = %p\n", #_Y, _Rval);     \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERTREFCOUNT(_X, _OP, _Y, _Z)             \
+        do {                                        \
+            LONG    _L = (LONG)(_X);                \
+            LONG    _R = (LONG)(_Y);                \
+            if (!(_L _OP _R)) {                     \
+                Error("%s:%s = %d\n", (_Z), #_X, _L); \
+                Error("%s:%s = %d\n", (_Z), #_Y, _R); \
+                ASSERT_MSG(_X _OP _Y, (_Z));        \
+            }                                       \
+        } while (FALSE)
+
+#ifndef TEST_MEMORY
+#define TEST_MEMORY DBG
+#endif
+
+#if TEST_MEMORY
+
+__checkReturn
+static __inline BOOLEAN
+_IsZeroMemory(
+    __in const PCHAR Caller,
+    __in const PCHAR Name,
+    __in PVOID       Buffer,
+    __in ULONG       Length
+    )
+{
+    ULONG           Offset;
+
+    Offset = 0;
+    while (Offset < Length) {
+        if (*((PUCHAR)Buffer + Offset) != 0) {
+            Error("%s: non-zero byte in %s (0x%p+0x%x)\n", Caller, Name, Buffer, Offset);
+            return FALSE;
+        }
+        Offset++;
+    }
+
+    return TRUE;
+}
+
+#define IsZeroMemory(_Buffer, _Length) \
+        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
+
+#else   // TEST_MEMORY
+
+#define IsZeroMemory(_Buffer, _Length)  TRUE
+
+#endif  // TEST_MEMORY
+
+#define IMPLY(_X, _Y)   (!(_X) || (_Y))
+#define EQUIV(_X, _Y)   (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X)))
+
+#endif  // _XENDISK_ASSERT_H
+
diff --git a/src/xendisk/debug.h b/src/xendisk/debug.h
new file mode 100644
index 0000000..f592f86
--- /dev/null
+++ b/src/xendisk/debug.h
@@ -0,0 +1,94 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _DEBUG_H
+#define _DEBUG_H
+
+#include <ntddk.h>
+#include <stdarg.h>
+
+#ifdef  _SDV_
+#define __MODULE__ ""
+#endif
+
+// DEBUG_FILTER_MASKs
+// Set these to see relevant output
+// ERROR        0x00000001
+// WARNING      0x00000002
+// TRACE        0x00000004
+// INFO         0x00000008
+
+#pragma warning(disable:4127)   // conditional expression is constant
+
+//
+// Debug Output and Logging
+//
+static __inline VOID
+__DebugMessage(
+    __in    ULONG       Level,
+    __in __nullterminated const CHAR  *Prefix,
+    __in __nullterminated const CHAR  *Format,
+    ...
+    )
+{
+    va_list         Arguments;
+
+    va_start(Arguments, Format);
+
+#pragma prefast(suppress:6001) // Using uninitialized memory
+    vDbgPrintExWithPrefix(Prefix,
+                          DPFLTR_IHVDRIVER_ID,
+                          Level,
+                          Format,
+                          Arguments);
+    va_end(Arguments);
+}
+
+#define Error(...)  \
+        __DebugMessage(DPFLTR_ERROR_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#define Warning(...)  \
+        __DebugMessage(DPFLTR_WARNING_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#if DBG
+#define Trace(...)  \
+        __DebugMessage(DPFLTR_TRACE_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+#else   // DBG
+#define Trace(...) \
+        (VOID)(__VA_ARGS__)
+#endif  // DBG
+
+#define Verbose(...) \
+        __DebugMessage(DPFLTR_INFO_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#include "assert.h"
+
+#endif  // _DEBUG_H
diff --git a/src/xendisk/driver.c b/src/xendisk/driver.c
new file mode 100644
index 0000000..743fc61
--- /dev/null
+++ b/src/xendisk/driver.c
@@ -0,0 +1,203 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#include <ntddk.h>
+#include "driver.h"
+#include "util.h"
+#include "debug.h"
+#include "assert.h"
+#include <version.h>
+
+extern PULONG       InitSafeBootMode;
+
+typedef struct _XENDISK_DRIVER {
+    PDRIVER_OBJECT              DriverObject;
+} XENDISK_DRIVER, *PXENDISK_DRIVER;
+
+static XENDISK_DRIVER   Driver;
+
+static FORCEINLINE VOID
+__DriverSetDriverObject(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    Driver.DriverObject = DriverObject;
+}
+
+static FORCEINLINE PDRIVER_OBJECT
+__DriverGetDriverObject(
+    VOID
+    )
+{
+    return Driver.DriverObject;
+}
+
+PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    )
+{
+    return __DriverGetDriverObject();
+}
+
+DRIVER_UNLOAD   DriverUnload;
+
+VOID
+DriverUnload(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(NULL);
+
+    ASSERT(IsZeroMemory(&Driver, sizeof (XENDISK_DRIVER)));
+
+    Trace("<====\n");
+}
+
+DRIVER_ADD_DEVICE   AddDevice;
+
+NTSTATUS
+#pragma prefast(suppress:28152) // Does not clear DO_DEVICE_INITIALIZING
+AddDevice(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    NTSTATUS            status;
+
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    status = FdoCreate(PhysicalDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    return STATUS_SUCCESS;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+DRIVER_DISPATCH Dispatch;
+
+NTSTATUS 
+Dispatch(
+    IN PDEVICE_OBJECT   DeviceObject,
+    IN PIRP             Irp
+    )
+{
+    PXENDISK_DX         Dx;
+    NTSTATUS            status;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3P(Dx->DeviceObject, ==, DeviceObject);
+
+    if (Dx->DevicePnpState == Deleted) {
+        status = STATUS_NO_SUCH_DEVICE;
+
+        Irp->IoStatus.Status = status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        goto done;
+    }
+
+    status = STATUS_NOT_SUPPORTED;
+    switch (Dx->Type) {
+    case PHYSICAL_DEVICE_OBJECT: {
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        status = PdoDispatch(Pdo, Irp);
+        break;
+    }
+    case FUNCTION_DEVICE_OBJECT: {
+        PXENDISK_FDO    Fdo = Dx->Fdo;
+
+        status = FdoDispatch(Fdo, Irp);
+        break;
+    }
+    default:
+        ASSERT(FALSE);
+        break;
+    }
+
+done:
+    return status;
+}
+
+DRIVER_INITIALIZE   DriverEntry;
+
+NTSTATUS
+DriverEntry(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PUNICODE_STRING RegistryPath
+    )
+{
+    ULONG               Index;
+
+    ASSERT3P(__DriverGetDriverObject(), ==, NULL);
+    UNREFERENCED_PARAMETER(RegistryPath);
+
+    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(DriverObject);
+
+    DriverObject->DriverUnload = DriverUnload;
+
+    if (*InitSafeBootMode > 0)
+        goto done;
+
+    Verbose("XENDISK %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+            MAJOR_VERSION,
+            MINOR_VERSION,
+            MICRO_VERSION,
+            BUILD_NUMBER,
+            DAY,
+            MONTH,
+            YEAR);
+
+    DriverObject->DriverExtension->AddDevice = AddDevice;
+
+    for (Index = 0; Index <= IRP_MJ_MAXIMUM_FUNCTION; Index++) {
+#pragma prefast(suppress:28169) // No __drv_dispatchType annotation
+#pragma prefast(suppress:28168) // No matching __drv_dispatchType annotation for IRP_MJ_CREATE
+        DriverObject->MajorFunction[Index] = Dispatch;
+    }
+
+done:
+    Trace("<====\n");
+    return STATUS_SUCCESS;
+}
diff --git a/src/xendisk/driver.h b/src/xendisk/driver.h
new file mode 100644
index 0000000..b47e21b
--- /dev/null
+++ b/src/xendisk/driver.h
@@ -0,0 +1,68 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _XENDISK_DRIVER_H
+#define _XENDISK_DRIVER_H
+
+#include "fdo.h"
+#include "pdo.h"
+
+extern PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    );
+
+#pragma warning(push)
+#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union
+
+typedef struct _XENDISK_DX {
+    PDEVICE_OBJECT      DeviceObject;
+    DEVICE_OBJECT_TYPE  Type;
+
+    DEVICE_PNP_STATE    DevicePnpState;
+    DEVICE_PNP_STATE    PreviousDevicePnpState;
+
+    SYSTEM_POWER_STATE  SystemPowerState;
+    DEVICE_POWER_STATE  DevicePowerState;
+
+    IO_REMOVE_LOCK      RemoveLock;
+
+    LIST_ENTRY          ListEntry;
+
+    union {
+        PXENDISK_FDO    Fdo;
+        PXENDISK_PDO    Pdo;
+    };
+} XENDISK_DX, *PXENDISK_DX;
+
+#pragma warning(pop)
+
+#endif // _XENDISK_DRIVER_H
diff --git a/src/xendisk/fdo.c b/src/xendisk/fdo.c
new file mode 100644
index 0000000..771c82e
--- /dev/null
+++ b/src/xendisk/fdo.c
@@ -0,0 +1,1862 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <names.h>
+
+#include "driver.h"
+#include "fdo.h"
+#include "pdo.h"
+#include "thread.h"
+#include "mutex.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define FDO_TAG 'ODF'
+
+struct _XENDISK_FDO {
+    PXENDISK_DX                     Dx;
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    PDEVICE_OBJECT                  PhysicalDeviceObject;
+
+    PXENDISK_THREAD                 SystemPowerThread;
+    PIRP                            SystemPowerIrp;
+    PXENDISK_THREAD                 DevicePowerThread;
+    PIRP                            DevicePowerIrp;
+
+    MUTEX                           Mutex;
+    ULONG                           References;
+};
+
+static FORCEINLINE PVOID
+__FdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+static FORCEINLINE VOID
+__FdoRestoreDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__FdoGetDevicePnpState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__FdoGetDevicePowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__FdoSetSystemPowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX              Dx = Fdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__FdoGetSystemPowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+static FORCEINLINE PDEVICE_OBJECT
+__FdoGetPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    return Fdo->PhysicalDeviceObject;
+}
+
+VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    InsertTailList(&Fdo->Dx->ListEntry, &Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    Fdo->References++;
+}
+
+VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    RemoveEntryList(&Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+}
+
+static FORCEINLINE VOID
+__FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    AcquireMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoAcquireMutex(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    ReleaseMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoReleaseMutex(Fdo);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoEnumerate(
+    IN  PXENDISK_FDO        Fdo,
+    IN  PDEVICE_RELATIONS   Relations
+    )
+{
+    PDEVICE_OBJECT          *PhysicalDeviceObject;
+    ULONG                   Count;
+    PLIST_ENTRY             ListEntry;
+    ULONG                   Index;
+    NTSTATUS                status;
+
+    Count = Relations->Count;
+    ASSERT(Count != 0);
+
+    PhysicalDeviceObject = __FdoAllocate(sizeof (PDEVICE_OBJECT) * Count);
+
+    status = STATUS_NO_MEMORY;
+    if (PhysicalDeviceObject == NULL)
+        goto fail1;
+
+    RtlCopyMemory(PhysicalDeviceObject,
+                  Relations->Objects,
+                  sizeof (PDEVICE_OBJECT) * Count);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    // Remove any PDOs that do not appear in the device list
+    ListEntry = Fdo->Dx->ListEntry.Flink;
+    while (ListEntry != &Fdo->Dx->ListEntry) {
+        PLIST_ENTRY     Next = ListEntry->Flink;
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+        BOOLEAN         Missing;
+
+        Missing = TRUE;
+        for (Index = 0; Index < Count; Index++) {
+            if (PdoGetPhysicalDeviceObject(Pdo) == PhysicalDeviceObject[Index]) {
+                Missing = FALSE;
+#pragma prefast(suppress:6387)  // PhysicalDeviceObject[Index] could be NULL
+                ObDereferenceObject(PhysicalDeviceObject[Index]);
+                PhysicalDeviceObject[Index] = NULL; // avoid duplication
+                break;
+            }
+        }
+
+        if (Missing && !PdoIsMissing(Pdo)) {
+            if (PdoGetDevicePnpState(Pdo) == Present) {
+                PdoSetDevicePnpState(Pdo, Deleted);
+                PdoDestroy(Pdo);
+            } else {
+                PdoSetMissing(Pdo, "device disappeared");
+            }
+        }
+
+        ListEntry = Next;
+    }
+
+    // Walk the list and create PDO filters for any new devices
+    for (Index = 0; Index < Count; Index++) {
+#pragma warning(suppress:6385)  // Reading invalid data from 'PhysicalDeviceObject'
+        if (PhysicalDeviceObject[Index] != NULL) {
+            (VOID) PdoCreate(Fdo,
+                             PhysicalDeviceObject[Index]);
+            ObDereferenceObject(PhysicalDeviceObject[Index]);
+        }
+    }
+    
+    ReleaseMutex(&Fdo->Mutex);
+
+    __FdoFree(PhysicalDeviceObject);
+    return;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+FdoForwardIrpSynchronously(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStartDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __FdoSetSystemPowerState(Fdo, PowerSystemWorking);
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePnpState(Fdo, Started);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __FdoRestoreDevicePnpState(Fdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoRestoreDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoSurpriseRemoval(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoSurpriseRemoval,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Deleted);
+
+    IoReleaseRemoveLockAndWait(&Fdo->Dx->RemoveLock, Irp);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    AcquireMutex(&Fdo->Mutex);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+    ReleaseMutex(&Fdo->Mutex);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryDeviceRelations(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryDeviceRelations(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               Size;
+    PDEVICE_RELATIONS   Relations;
+    PLIST_ENTRY         ListEntry;
+    ULONG               Count;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryDeviceRelations,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    if (StackLocation->Parameters.QueryDeviceRelations.Type != BusRelations)
+        goto done;
+
+    Relations = (PDEVICE_RELATIONS)Irp->IoStatus.Information;
+
+    if (Relations->Count != 0)
+        __FdoEnumerate(Fdo, Relations);
+
+    ExFreePool(Relations);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    Count = 0;
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink)
+        Count++;
+
+    Size = FIELD_OFFSET(DEVICE_RELATIONS, Objects) + (sizeof (DEVICE_OBJECT) * __min(Count, 1));
+
+    Relations = ExAllocatePoolWithTag(PagedPool, Size, 'TLIF');
+
+    status = STATUS_NO_MEMORY;
+    if (Relations == NULL)
+        goto fail3;
+
+    RtlZeroMemory(Relations, Size);
+
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink) {
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+        if (PdoGetDevicePnpState(Pdo) == Present)
+            PdoSetDevicePnpState(Pdo, Enumerated);
+
+        ObReferenceObject(PdoGetPhysicalDeviceObject(Pdo));
+        Relations->Objects[Relations->Count++] = PdoGetPhysicalDeviceObject(Pdo);
+    }
+
+    ASSERT3U(Relations->Count, ==, Count);
+
+    Trace("%d PDO(s)\n", Relations->Count);
+
+    ReleaseMutex(&Fdo->Mutex);
+
+    Irp->IoStatus.Information = (ULONG_PTR)Relations;
+    status = STATUS_SUCCESS;
+
+done:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail3:
+    ReleaseMutex(&Fdo->Mutex);
+
+fail2:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPnp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = FdoStartDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = FdoQueryStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = FdoCancelStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = FdoStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = FdoQueryRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = FdoSurpriseRemoval(Fdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = FdoRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = FdoCancelRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_DEVICE_RELATIONS:
+        status = FdoQueryDeviceRelations(Fdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPnp,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoSetDevicePowerUp(Fdo, Irp) :
+             __FdoSetDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoSetSystemPowerUp(Fdo, Irp) :
+             __FdoSetSystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoQueryDevicePowerUp(Fdo, Irp) :
+             __FdoQueryDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerUp(
+    IN  PXENDISK_FDO     Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoQuerySystemPowerUp(Fdo, Irp) :
+             __FdoQuerySystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+FdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetDevicePower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQueryDevicePower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+FdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetSystemPower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQuerySystemPower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->DevicePowerIrp, ==, NULL);
+        Fdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->SystemPowerIrp, ==, NULL);
+        Fdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchDefault(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoDispatchDefault,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_PNP:
+        status = FdoDispatchPnp(Fdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = FdoDispatchPower(Fdo, Irp);
+        break;
+
+    default:
+        status = FdoDispatchDefault(Fdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject;
+    ULONG               DeviceType;
+    PDEVICE_OBJECT      FilterDeviceObject;
+    PXENDISK_DX         Dx;
+    PXENDISK_FDO        Fdo;
+    NTSTATUS            status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'FilterDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof (XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = FUNCTION_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Added;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, FDO_TAG, 0, 0);
+
+    Fdo = __FdoAllocate(sizeof (XENDISK_FDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Fdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Fdo->Dx = Dx;
+    Fdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Fdo->LowerDeviceObject = LowerDeviceObject;
+
+    status = ThreadCreate(FdoSystemPower, Fdo, &Fdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(FdoDevicePower, Fdo, &Fdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    InitializeMutex(&Fdo->Mutex);
+    InitializeListHead(&Dx->ListEntry);
+    Fdo->References = 1;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Fdo = Fdo;
+
+#pragma prefast(suppress:28182)  // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Fdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Fdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT(IsListEmpty(&Dx->ListEntry));
+    ASSERT3U(Fdo->References, ==, 0);
+    ASSERT3U(__FdoGetDevicePnpState(Fdo), ==, Deleted);
+
+    Dx->Fdo = NULL;
+
+    RtlZeroMemory(&Fdo->Mutex, sizeof (MUTEX));
+
+    ThreadAlert(Fdo->DevicePowerThread);
+    ThreadJoin(Fdo->DevicePowerThread);
+    Fdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/fdo.h b/src/xendisk/fdo.h
new file mode 100644
index 0000000..8aa0529
--- /dev/null
+++ b/src/xendisk/fdo.h
@@ -0,0 +1,78 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _XENDISK_FDO_H
+#define _XENDISK_FDO_H
+
+#include <ntddk.h>
+#include "types.h"
+
+typedef struct _XENDISK_FDO XENDISK_FDO, *PXENDISK_FDO;
+
+extern VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    );
+
+extern NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    );
+
+#endif // _XENDISK_FDO_H
diff --git a/src/xendisk/mutex.h b/src/xendisk/mutex.h
new file mode 100644
index 0000000..bcc2414
--- /dev/null
+++ b/src/xendisk/mutex.h
@@ -0,0 +1,113 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */
+
+#ifndef _XENDISK_MUTEX_H
+#define _XENDISK_MUTEX_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _MUTEX {
+    PKTHREAD    Owner;
+    KEVENT      Event;
+} MUTEX, *PMUTEX;
+
+static FORCEINLINE VOID
+InitializeMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    RtlZeroMemory(Mutex, sizeof (MUTEX));
+
+    KeInitializeEvent(&Mutex->Event, SynchronizationEvent, TRUE);
+}
+
+static FORCEINLINE BOOLEAN
+__drv_maxIRQL(PASSIVE_LEVEL)
+TryAcquireMutex(
+    IN  PMUTEX      Mutex
+    )
+{
+    LARGE_INTEGER   Timeout;
+    NTSTATUS        status;
+
+    Timeout.QuadPart = 0;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   &Timeout);
+    if (status == STATUS_TIMEOUT)
+        return FALSE;
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+
+    return TRUE;
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+AcquireMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    NTSTATUS    status;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   NULL);
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+ReleaseMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    ASSERT3P(Mutex->Owner, ==, KeGetCurrentThread());
+    Mutex->Owner = NULL;
+
+    KeSetEvent(&Mutex->Event, IO_NO_INCREMENT, FALSE);
+}
+
+#endif  // _XENDISK_MUTEX_H
diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
new file mode 100644
index 0000000..3de958a
--- /dev/null
+++ b/src/xendisk/pdo.c
@@ -0,0 +1,2079 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <storport.h>
+#include <Ntddstor.h>
+#include <Ntddscsi.h>
+#include <names.h>
+
+#include "fdo.h"
+#include "pdo.h"
+#include "driver.h"
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define PDO_TAG 'ODP'
+
+struct _XENDISK_PDO {
+    PXENDISK_DX                 Dx;
+    PDEVICE_OBJECT              LowerDeviceObject;
+    PDEVICE_OBJECT              PhysicalDeviceObject;
+
+    PXENDISK_THREAD             SystemPowerThread;
+    PIRP                        SystemPowerIrp;
+    PXENDISK_THREAD             DevicePowerThread;
+    PIRP                        DevicePowerIrp;
+
+    PXENDISK_FDO                Fdo;
+    BOOLEAN                     Missing;
+    const CHAR                  *Reason;
+
+    ULONG                       SectorSize;
+};
+
+static FORCEINLINE PVOID
+__PdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    __PdoSetDevicePnpState(Pdo, State);
+}
+
+static FORCEINLINE VOID
+__PdoRestoreDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoGetDevicePnpState(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__PdoGetDevicePowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__PdoSetSystemPowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__PdoGetSystemPowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->PhysicalDeviceObject;
+}
+
+static FORCEINLINE VOID
+__PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    Pdo->Reason = Reason;
+    Pdo->Missing = TRUE;
+}
+
+VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    __PdoSetMissing(Pdo, Reason);
+}
+
+static FORCEINLINE BOOLEAN
+__PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->Missing;
+}
+
+BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoIsMissing(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoLink(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    Pdo->Fdo = Fdo;
+    FdoAddPhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+}
+
+static FORCEINLINE VOID
+__PdoUnlink(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_FDO        Fdo = Pdo->Fdo;
+
+    ASSERT(Fdo != NULL);
+
+    FdoRemovePhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+
+    Pdo->Fdo = NULL;
+}
+
+static FORCEINLINE PXENDISK_FDO
+__PdoGetFdo(
+    IN  PXENDISK_PDO Pdo
+    )
+{
+    return Pdo->Fdo;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoForwardIrpSynchronously(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpAndForget(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoForwardIrpAndForget(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                            __PdoForwardIrpAndForget,
+                            Pdo,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+
+    return IoCallDriver(Pdo->LowerDeviceObject, Irp);
+}
+
+static NTSTATUS
+PdoCompleteIrp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp,
+    IN  NTSTATUS        Status
+    )
+{
+    Irp->IoStatus.Status = Status;
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    return Status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryProperty(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR    Descriptor = Irp->UserBuffer;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    if (!NT_SUCCESS(Irp->IoStatus.Status))
+        goto done;
+
+    Descriptor = Irp->UserBuffer;
+    Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
+    Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, Pdo->SectorSize);
+
+done:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryProperty(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PSTORAGE_PROPERTY_QUERY Query;
+    PDEVICE_TRIM_DESCRIPTOR Trim;
+    NTSTATUS                status;
+
+    Query = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Query->PropertyId) {
+    case StorageAccessAlignmentProperty:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                                __PdoQueryProperty,
+                                Pdo,
+                                TRUE,
+                                TRUE,
+                                TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+
+    case StorageDeviceTrimProperty:
+        Trim = Irp->AssociatedIrp.SystemBuffer;
+
+        Trim->Version = 0;
+        Trim->Size = sizeof(DEVICE_TRIM_DESCRIPTOR);
+        Trim->TrimEnabled = TRUE;
+
+        Irp->IoStatus.Information = (ULONG_PTR)sizeof(DEVICE_TRIM_DESCRIPTOR);
+        status = PdoCompleteIrp(Pdo, Irp, STATUS_SUCCESS);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSendAwaitSrb(
+    IN  PDEVICE_OBJECT          DeviceObject,
+    IN  PIRP                    Irp,
+    IN  PVOID                   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Context);
+
+    *(Irp->UserIosb) = Irp->IoStatus;
+
+    if (Irp->MdlAddress) {
+        MmUnlockPages(Irp->MdlAddress);
+        IoFreeMdl(Irp->MdlAddress);
+    }
+
+    KeSetEvent(Irp->UserEvent, IO_NO_INCREMENT, FALSE);
+
+    IoFreeIrp(Irp);
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoSendAwaitSrb(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PSCSI_REQUEST_BLOCK     Srb
+    )
+{
+    PIRP                        Irp;
+    IO_STATUS_BLOCK             IoStatus;
+    KEVENT                      Event;
+    PIO_STACK_LOCATION          Stack;
+    NTSTATUS                    status;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    status = STATUS_NO_MEMORY;
+    Irp = IoAllocateIrp((CCHAR)(Pdo->LowerDeviceObject->StackSize + 1), FALSE);
+    if (Irp == NULL)
+        goto fail1;
+
+    Stack = IoGetNextIrpStackLocation(Irp);
+    Stack->MajorFunction = IRP_MJ_SCSI;
+    Stack->Parameters.Scsi.Srb = Srb;
+
+    IoSetCompletionRoutine(Irp,
+                            __PdoSendAwaitSrb,
+                            Srb,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+    Irp->UserIosb = &IoStatus;
+    Irp->UserEvent = &Event;
+
+    Irp->MdlAddress = IoAllocateMdl(Srb->DataBuffer,
+                                    Srb->DataTransferLength,
+                                    FALSE,
+                                    FALSE,
+                                    Irp);
+    if (Irp->MdlAddress == NULL)
+        goto fail2;
+
+#pragma warning(disable:6320)
+    try {
+        MmProbeAndLockPages(Irp->MdlAddress, KernelMode, IoReadAccess);
+    } except (EXCEPTION_EXECUTE_HANDLER) {
+        status = GetExceptionCode();
+
+        goto fail3;
+    }
+#pragma warning(default:6320)
+    
+    Srb->OriginalRequest = Irp;
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
+        status = IoStatus.Status;
+    }
+
+    return status;
+
+fail3:
+    Error("fail3\n");
+
+    IoFreeMdl(Irp->MdlAddress);
+
+fail2:
+    Error("fail2\n");
+
+    IoFreeIrp(Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoSendTrimSynchronous(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PDEVICE_DATA_SET_RANGE  Ranges,
+    IN  ULONG                   Count
+    )
+{
+    SCSI_REQUEST_BLOCK          Srb;
+    PCDB                        Cdb;
+    PUNMAP_LIST_HEADER          Unmap;
+    ULONG                       Length;
+    ULONG                       Index;
+    NTSTATUS                    status;
+
+    Length = sizeof(UNMAP_LIST_HEADER) + 
+             (Count * sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    status = STATUS_NO_MEMORY;
+    Unmap = __PdoAllocate(Length);
+    if (Unmap == NULL)
+        goto fail1;
+
+    RtlZeroMemory(&Srb, sizeof(SCSI_REQUEST_BLOCK));
+    Srb.Length = sizeof(SCSI_REQUEST_BLOCK);
+    Srb.SrbFlags = 0;
+    Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
+    Srb.DataBuffer = Unmap;
+    Srb.DataTransferLength = Length;
+    Srb.TimeOutValue = (ULONG)-1;
+    Srb.CdbLength = 10;
+
+    Cdb = (PCDB)&Srb.Cdb[0];
+    Cdb->UNMAP.OperationCode = SCSIOP_UNMAP;
+    *(PUSHORT)Cdb->UNMAP.AllocationLength = _byteswap_ushort((USHORT)Length);
+
+    *(PUSHORT)Unmap->DataLength = _byteswap_ushort((USHORT)Length);
+    *(PUSHORT)Unmap->BlockDescrDataLength = _byteswap_ushort((USHORT)sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Block = &Unmap->Descriptors[Index];
+        PDEVICE_DATA_SET_RANGE  Range = &Ranges[Index];
+        
+        ULONG   LengthInSectors = (ULONG)(Range->LengthInBytes / Pdo->SectorSize);
+        ULONG64 OffsetInSectors = (ULONG64)(Range->StartingOffset / Pdo->SectorSize);
+
+        Trace("TRIM[%x] %x @ %llx\n",
+                        Index,
+                        LengthInSectors,
+                        OffsetInSectors);
+
+        *(PULONG64)Block->StartingLba = _byteswap_uint64(OffsetInSectors);
+        *(PULONG)Block->LbaCount = _byteswap_ulong(LengthInSectors);
+    }
+
+    status = PdoSendAwaitSrb(Pdo, &Srb);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoFree(Unmap);
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    __PdoFree(Unmap);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoManageDataSetAttributes(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PDEVICE_MANAGE_DATA_SET_ATTRIBUTES  Attributes;
+    PDEVICE_DATA_SET_RANGE              Ranges;
+    ULONG                               NumRanges;
+    NTSTATUS                            status;
+
+    Attributes = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Attributes->Action) {
+    case DeviceDsmAction_Trim:
+        Ranges = (PDEVICE_DATA_SET_RANGE)((PUCHAR)Attributes + Attributes->DataSetRangesOffset);
+        NumRanges = Attributes->DataSetRangesLength / sizeof(DEVICE_DATA_SET_RANGE);
+
+        status = PdoSendTrimSynchronous(Pdo, Ranges, NumRanges);
+
+        status = PdoCompleteIrp(Pdo, Irp, status);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchControl(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               ControlCode;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    ControlCode = StackLocation->Parameters.DeviceIoControl.IoControlCode;
+
+    switch (ControlCode) {
+    case IOCTL_STORAGE_QUERY_PROPERTY:
+        status = PdoQueryProperty(Pdo, Irp);
+        break;
+
+    case IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES:
+        status = PdoManageDataSetAttributes(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStartDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoSetSystemPowerState(Pdo, PowerSystemWorking);
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __PdoSetDevicePnpState(Pdo, Started);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return STATUS_SUCCESS;
+
+fail2:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __PdoRestoreDevicePnpState(Pdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    __PdoSetDevicePnpState(Pdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoRestoreDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoSurpriseRemoval(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoSurpriseRemoval,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    if (__PdoIsMissing(Pdo)) {
+        __PdoSetDevicePnpState(Pdo, Deleted);
+        IoReleaseRemoveLockAndWait(&Pdo->Dx->RemoveLock, Irp);
+    } else {
+        __PdoSetDevicePnpState(Pdo, Enumerated);
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    if (__PdoIsMissing(Pdo)) {
+        FdoAcquireMutex(Fdo);
+        PdoDestroy(Pdo);
+        FdoReleaseMutex(Fdo);
+    }
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoEject(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    NTSTATUS            status;
+
+    __PdoSetMissing(Pdo, "Ejected");
+    __PdoSetDevicePnpState(Pdo, Deleted);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    FdoAcquireMutex(Fdo);
+    PdoDestroy(Pdo);
+    FdoReleaseMutex(Fdo);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPnp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = PdoStartDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = PdoQueryStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = PdoCancelStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = PdoStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = PdoQueryRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = PdoSurpriseRemoval(Pdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = PdoRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = PdoCancelRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_EJECT:
+        status = PdoEject(Pdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPnp,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoSetDevicePowerUp(Pdo, Irp) :
+             __PdoSetDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerDown(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoSetSystemPowerUp(Pdo, Irp) :
+             __PdoSetSystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoQueryDevicePowerUp(Pdo, Irp) :
+             __PdoQueryDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerUp(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoQuerySystemPowerUp(Pdo, Irp) :
+             __PdoQuerySystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetDevicePower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQueryDevicePower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetSystemPower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQuerySystemPower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->DevicePowerIrp, ==, NULL);
+        Pdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->SystemPowerIrp, ==, NULL);
+        Pdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchDefault(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoDispatchDefault,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_DEVICE_CONTROL:
+        status = PdoDispatchControl(Pdo, Irp);
+        break;
+
+    case IRP_MJ_PNP:
+        status = PdoDispatchPnp(Pdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = PdoDispatchPower(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoDispatchDefault(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+PdoCreate(
+    PXENDISK_FDO                    Fdo,
+    PDEVICE_OBJECT                  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    ULONG                           DeviceType;
+    PDEVICE_OBJECT                  FilterDeviceObject;
+    PXENDISK_DX                     Dx;
+    PXENDISK_PDO                    Pdo;
+    NTSTATUS                        status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'PhysicalDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof(XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = PHYSICAL_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Present;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, PDO_TAG, 0, 0);
+
+    Pdo = __PdoAllocate(sizeof (XENDISK_PDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Pdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Pdo->Dx = Dx;
+    Pdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Pdo->LowerDeviceObject = LowerDeviceObject;
+    Pdo->SectorSize = 512;
+
+    status = ThreadCreate(PdoSystemPower, Pdo, &Pdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(PdoDevicePower, Pdo, &Pdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Pdo = Pdo;
+
+#pragma prefast(suppress:28182) // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    __PdoLink(Pdo, Fdo);
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Pdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Pdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT3U(__PdoGetDevicePnpState(Pdo), ==, Deleted);
+
+    ASSERT(__PdoIsMissing(Pdo));
+    Pdo->Missing = FALSE;
+
+    __PdoUnlink(Pdo);
+
+    Verbose("%p (%s)\n",
+         FilterDeviceObject,
+         Pdo->Reason);
+    Pdo->Reason = NULL;
+
+    Dx->Pdo = NULL;
+
+    ThreadAlert(Pdo->DevicePowerThread);
+    ThreadJoin(Pdo->DevicePowerThread);
+    Pdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+    Pdo->SectorSize = 0;
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/pdo.h b/src/xendisk/pdo.h
new file mode 100644
index 0000000..5e2e5d6
--- /dev/null
+++ b/src/xendisk/pdo.h
@@ -0,0 +1,90 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _XENDISK_PDO_H
+#define _XENDISK_PDO_H
+
+#include <ntddk.h>
+#include "types.h"
+#include "fdo.h"
+
+typedef struct _XENDISK_PDO XENDISK_PDO, *PXENDISK_PDO;
+
+extern VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    );
+
+extern DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    );
+
+extern BOOLEAN
+PdoIsMasked(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoCreate(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    );
+
+#endif // _XENDISK_PDO_H
diff --git a/src/xendisk/thread.c b/src/xendisk/thread.c
new file mode 100644
index 0000000..92e2b94
--- /dev/null
+++ b/src/xendisk/thread.c
@@ -0,0 +1,225 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */
+
+#include <ntddk.h>
+
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define THREAD_POOL 'ERHT'
+
+struct _XENDISK_THREAD {
+    XENDISK_THREAD_FUNCTION Function;
+    PVOID                   Context;
+    KEVENT                  Event;
+    BOOLEAN                 Alerted;
+    LONG                    References;
+    PKTHREAD                Thread;
+};
+
+static FORCEINLINE PVOID
+__ThreadAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    KeSetEvent(&Thread->Event, IO_NO_INCREMENT, FALSE);
+}
+
+VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadWake(Thread);
+}
+
+static FORCEINLINE VOID
+__ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    Thread->Alerted = TRUE;
+    __ThreadWake(Thread);
+}
+
+VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadAlert(Thread);
+}
+
+KSTART_ROUTINE  ThreadFunction;
+
+VOID
+ThreadFunction(
+    IN  PVOID       Argument
+    )
+{
+    PXENDISK_THREAD Self = Argument;
+    NTSTATUS        status;
+
+    status = Self->Function(Self, Self->Context);
+
+    if (InterlockedDecrement(&Self->References) == 0)
+        __ThreadFree(Self);
+
+    PsTerminateSystemThread(status);
+    // NOT REACHED
+}
+
+NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    )
+{
+    HANDLE                      Handle;
+    NTSTATUS                    status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    (*Thread) = __ThreadAllocate(sizeof (XENDISK_THREAD));
+
+    status = STATUS_NO_MEMORY;
+    if (*Thread == NULL)
+        goto fail1;
+
+    (*Thread)->Function = Function;
+    (*Thread)->Context = Context;
+    (*Thread)->Alerted = FALSE;
+    (*Thread)->References = 2; // One for us, one for the thread function
+
+    KeInitializeEvent(&(*Thread)->Event, NotificationEvent, FALSE);
+
+    status = PsCreateSystemThread(&Handle,
+                                  STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL,
+                                  NULL,
+                                  NULL,
+                                  NULL,
+                                  ThreadFunction,
+                                  *Thread);
+    if (!NT_SUCCESS(status)) {
+        --(*Thread)->References;    // Fake thread function termination
+        goto fail2;
+    }
+
+    status = ObReferenceObjectByHandle(Handle,
+                                       SYNCHRONIZE,
+                                       *PsThreadType,
+                                       KernelMode,
+                                       &(*Thread)->Thread,
+                                       NULL);
+    if (!NT_SUCCESS(status))
+        goto fail3;
+
+    ZwClose(Handle);
+
+    return STATUS_SUCCESS;
+
+fail3:
+    Error("fail3\n");
+
+    __ThreadAlert(*Thread);
+    ZwClose(Handle);
+
+fail2:
+    Error("fail2\n");
+
+    if (InterlockedDecrement(&(*Thread)->References) == 0)
+        __ThreadFree(*Thread);
+
+    *Thread = NULL;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return &Thread->Event;
+}
+
+BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return Thread->Alerted;
+}
+
+VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    LONG                References;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+    ASSERT3P(KeGetCurrentThread(), !=, Thread->Thread);
+
+    (VOID) KeWaitForSingleObject(Thread->Thread,
+                                 Executive,
+                                 KernelMode,
+                                 FALSE,
+                                 NULL);
+
+    References = InterlockedDecrement(&Thread->References);
+    ASSERT3U(References, ==, 0);
+
+    __ThreadFree(Thread);
+}
+
diff --git a/src/xendisk/thread.h b/src/xendisk/thread.h
new file mode 100644
index 0000000..c197337
--- /dev/null
+++ b/src/xendisk/thread.h
@@ -0,0 +1,73 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */
+
+#ifndef _XENDISK_THREAD_H
+#define _XENDISK_THREAD_H
+
+#include <ntddk.h>
+
+typedef struct _XENDISK_THREAD XENDISK_THREAD, *PXENDISK_THREAD;
+
+typedef NTSTATUS (*XENDISK_THREAD_FUNCTION)(PXENDISK_THREAD, PVOID);
+
+extern NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    );
+
+extern PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    );
+
+#endif  // _XENDISK_THREAD_H
diff --git a/src/xendisk/types.h b/src/xendisk/types.h
new file mode 100644
index 0000000..b2b4218
--- /dev/null
+++ b/src/xendisk/types.h
@@ -0,0 +1,53 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */
+
+#ifndef _XENDISK_TYPES_H
+#define _XENDISK_TYPES_H
+
+typedef enum _DEVICE_OBJECT_TYPE {
+    PHYSICAL_DEVICE_OBJECT = 'ODP',
+    FUNCTION_DEVICE_OBJECT = 'ODF'
+} DEVICE_OBJECT_TYPE, *PDEVICE_OBJECT_TYPE;
+
+typedef enum _DEVICE_PNP_STATE {
+    Invalid = 0,
+    Present,        // PDO only
+    Enumerated,     // PDO only
+    Added,          // FDO only
+    Started,
+    StopPending,
+    Stopped,
+    RemovePending,
+    SurpriseRemovePending,
+    Deleted
+} DEVICE_PNP_STATE, *PDEVICE_PNP_STATE;
+
+#endif  // _XENDISK_TYPES_H
diff --git a/src/xendisk/util.h b/src/xendisk/util.h
new file mode 100644
index 0000000..e7adc22
--- /dev/null
+++ b/src/xendisk/util.h
@@ -0,0 +1,222 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _NON_PAGED_BUFFER_HEADER {
+    SIZE_T  Length;
+    ULONG   Tag;
+} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
+
+typedef struct _NON_PAGED_BUFFER_TRAILER {
+    ULONG   Tag;
+} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
+
+static FORCEINLINE PVOID
+__AllocateNonPagedPoolWithTag(
+    IN  PCHAR                   Caller,
+    IN  ULONG                   Line,
+    IN  SIZE_T                  Length,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3S(Length, !=, 0);
+
+    Buffer = (PUCHAR)ExAllocatePoolWithTag(NonPagedPool,
+                                   sizeof (NON_PAGED_BUFFER_HEADER) +
+                                   Length +
+                                   sizeof (NON_PAGED_BUFFER_TRAILER),
+                                   Tag);
+    if (Buffer == NULL) {
+        Warning("%s:%u : AllocFailed %d bytes, %08x tag\n", Caller, Line, Length, Tag);
+        goto done;
+    }
+
+    RtlZeroMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER));
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    Header->Length = Length;
+    Header->Tag = Tag;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    Trailer->Tag = Tag;
+
+done:
+    return Buffer;
+}
+
+static FORCEINLINE VOID
+__FreePoolWithTag(
+    IN  PVOID                   _Buffer,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer = (PUCHAR)_Buffer;
+    SIZE_T                      Length;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3P(Buffer, !=, NULL);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    ASSERT3U(Tag, ==, Header->Tag);
+    Length = Header->Length;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    ASSERT3U(Tag, ==, Trailer->Tag);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    RtlFillMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER),
+                  0xAA);
+
+    ExFreePoolWithTag(Buffer, Tag);
+}
+
+static FORCEINLINE PMDL
+__AllocPagesForMdl(
+    IN  SIZE_T          Size
+    )
+{
+    PMDL                Mdl;
+    PHYSICAL_ADDRESS    LowAddr;
+    PHYSICAL_ADDRESS    HighAddr;
+    PHYSICAL_ADDRESS    SkipBytes;
+
+    SkipBytes.QuadPart = 0ull;
+    HighAddr.QuadPart = ~0ull;
+
+    // try > 4GB
+    LowAddr.QuadPart = 0x100000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try > 2GB
+    LowAddr.QuadPart = 0x80000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try anywhere
+    LowAddr.QuadPart = 0ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    // Mdl byte count gets checked again after this returns
+
+done:
+    return Mdl;
+}
+static FORCEINLINE PVOID
+___AllocPages(
+    IN  PCHAR           Caller, 
+    IN  ULONG           Line,
+    IN  SIZE_T          Size,
+    OUT PMDL*           Mdl
+    )
+{
+    PVOID               Buffer;
+
+    *Mdl = __AllocPagesForMdl(Size);
+    if (*Mdl == NULL) {
+        Warning("%s:%u : MmAllocatePagesForMdlEx Failed %d bytes\n", Caller, Line, Size);
+        goto fail1;
+    }
+
+    if (MmGetMdlByteCount(*Mdl) != Size) {
+        Warning("%s:%u : %d bytes != %d bytes requested\n", Caller, Line, MmGetMdlByteCount(*Mdl), Size);
+        goto fail2;
+    }
+
+    Buffer = MmMapLockedPagesSpecifyCache(*Mdl, KernelMode, MmCached, NULL, FALSE, NormalPagePriority);
+    if (Buffer == NULL) {
+        Warning("%s:%u : MmMapLockedPagesSpecifyCache Failed %d bytes\n", Caller, Line, Size);
+        goto fail3;
+    }
+
+    return Buffer;
+
+fail3:
+fail2:
+    MmFreePagesFromMdl(*Mdl);
+    ExFreePool(*Mdl);
+fail1:
+    *Mdl = NULL;
+    return NULL;
+}
+#define __AllocPages(Size, Mdl) ___AllocPages(__FUNCTION__, __LINE__, Size, Mdl)
+
+static FORCEINLINE VOID
+__FreePages(
+    IN  PVOID           Buffer,
+    IN  PMDL            Mdl
+    )
+{
+    if (Buffer && Mdl) {
+        MmUnmapLockedPages(Buffer, Mdl);
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+    }
+}
+
+#endif  // _UTIL_H
diff --git a/src/xendisk/xendisk.rc b/src/xendisk/xendisk.rc
new file mode 100644
index 0000000..df2e5b6
--- /dev/null
+++ b/src/xendisk/xendisk.rc
@@ -0,0 +1,56 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, 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.
+ */ 
+
+#include <windows.h>
+#include <ntverp.h>
+
+
+#undef VER_COMPANYNAME_STR
+#undef VER_PRODUCTNAME_STR
+#undef VER_PRODUCTVERSION
+#undef VER_PRODUCTVERSION_STR
+
+#include <version.h>
+
+#define	VER_COMPANYNAME_STR         COMPANY_NAME_STR
+#define VER_LEGALCOPYRIGHT_STR      "Copyright (c) Citrix Systems Inc."
+
+#define VER_PRODUCTNAME_STR         "XENDISK"
+#define VER_PRODUCTVERSION          MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION,BUILD_NUMBER
+#define VER_PRODUCTVERSION_STR      MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." BUILD_NUMBER_STR
+
+#define VER_INTERNALNAME_STR        "XENDISK.SYS"
+#define VER_FILEDESCRIPTION_STR     "XENDISK"
+
+#define VER_FILETYPE                VFT_DRV
+#define VER_FILESUBTYPE             VFT2_DRV_SYSTEM
+
+#include <common.ver>
diff --git a/src/xenvbd.inf b/src/xenvbd.inf
index bc8627b..0d58453 100644
--- a/src/xenvbd.inf
+++ b/src/xenvbd.inf
@@ -46,6 +46,7 @@ CoInst_CopyFiles=11
 [SourceDisksFiles]
 xenvbd.sys=0,,
 xencrsh.sys=0,,
+xendisk.sys=0,,
 xenvbd_coinst.dll=0,,
 
 [Manufacturer] 
@@ -62,9 +63,25 @@ CopyFiles=XenVbd_Copyfiles
 [XenVbd_Copyfiles]
 xenvbd.sys
 xencrsh.sys
+xendisk.sys
+
+[XenVbd_Inst.HW] 
+AddReg=XenVbd_AddReg
+
+[XenVbd_AddReg]
+HKR,,"UpperFilters",0x00010000,"xendisk"
 
 [XenVbd_Inst.Services] 
 AddService=xenvbd,2,XenVbd_Service,
+AddService=xendisk,,XenDisk_Service,
+
+[XenDisk_Service] 
+DisplayName=%XenDiskDesc%
+ServiceType=%SERVICE_KERNEL_DRIVER% 
+StartType=%SERVICE_BOOT_START% 
+ErrorControl=%SERVICE_ERROR_NORMAL% 
+ServiceBinary=%12%\xendisk.sys 
+LoadOrderGroup="Scsi Miniport"
 
 [XenVbd_Service] 
 DisplayName=%XenVbdDesc%
@@ -95,6 +112,7 @@ HKR,,CoInstallers32,0x00010000,"xenvbd_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@M
 Company = "@COMPANY_NAME@"
 DiskDesc = "@PRODUCT_NAME@ PV Storage Host Adapter Package" 
 XenVbdDesc= "@PRODUCT_NAME@ PV Storage Host Adapter"
+XenDiskDesc= "@PRODUCT_NAME@ PV Storage Filter"
 
 SERVICE_BOOT_START = 0x0 
 SERVICE_SYSTEM_START = 0x1 
diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index 5e5fcbc..9782f19 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -51,6 +51,9 @@
 		<ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
 			<Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
 		</ProjectReference>
+		<ProjectReference Include="..\xendisk\xendisk.vcxproj">
+			<Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+		</ProjectReference>
 	</ItemGroup>
 	<ItemGroup>
 		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2012/xendisk/xendisk.vcxproj b/vs2012/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..333bc40
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<Import Project="..\configs.props" />
+
+	<PropertyGroup Label="Globals">
+		<Configuration>Windows Vista Debug</Configuration>
+		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+	</PropertyGroup>
+	<PropertyGroup Label="ProeprtySheets">
+		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+		<ConfigurationType>Driver</ConfigurationType>
+		<DriverType>WDM</DriverType>
+	</PropertyGroup>
+
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+	
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+	</PropertyGroup>
+	
+	<Import Project="..\targets.props" />
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+	
+	<PropertyGroup>
+		<IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+		<RunCodeAnalysis>true</RunCodeAnalysis>
+		<EnableInf2cat>false</EnableInf2cat>
+		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+	</PropertyGroup>
+
+	<ItemDefinitionGroup>
+		<ClCompile>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<WarningLevel>EnableAllWarnings</WarningLevel>
+			<DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+			<MultiProcessorCompilation>true</MultiProcessorCompilation>
+			<EnablePREfast>true</EnablePREfast>
+		</ClCompile>
+		<Link>
+			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+		</Link>
+		<Inf>
+			<SpecifyArchitecture>true</SpecifyArchitecture>
+			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+			<EnableVerbose>true</EnableVerbose>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+		<ClCompile>
+			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>x86</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+		<ClCompile>
+			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>amd64</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+
+	<ItemGroup>
+		<FilesToPackage Include="$(TargetPath)" />
+		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+	</ItemGroup>
+	<ItemGroup>
+		<ClCompile Include="../../src/xendisk/driver.c" />
+		<ClCompile Include="../../src/xendisk/fdo.c" />
+		<ClCompile Include="../../src/xendisk/pdo.c" />
+		<ClCompile Include="../../src/xendisk/thread.c" />
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2012/xendisk/xendisk.vcxproj.user b/vs2012/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..0b2b210
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<PropertyGroup>
+		<SignMode>TestSign</SignMode>
+		<TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+		<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+	</PropertyGroup>
+</Project>
diff --git a/vs2012/xenvbd.sln b/vs2012/xenvbd.sln
index 86fb1a5..15113cf 100644
--- a/vs2012/xenvbd.sln
+++ b/vs2012/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
 	ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 5d0de4d..8b2fa4f 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -80,6 +80,9 @@
     <ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
       <Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\xendisk\xendisk.vcxproj">
+      <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2013/xendisk/xendisk.vcxproj b/vs2013/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..39b9163
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="ProeprtySheets">
+    <ConfigurationType>Driver</ConfigurationType>
+    <DriverType>WDM</DriverType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/xendisk/driver.c" />
+    <ClCompile Include="../../src/xendisk/fdo.c" />
+    <ClCompile Include="../../src/xendisk/pdo.c" />
+    <ClCompile Include="../../src/xendisk/thread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2013/xendisk/xendisk.vcxproj.user b/vs2013/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..1f1f3c0
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
diff --git a/vs2013/xenvbd.sln b/vs2013/xenvbd.sln
index 13128c5..da798d2 100644
--- a/vs2013/xenvbd.sln
+++ b/vs2013/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
     ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}		
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From xen-users-bounces@lists.xen.org Thu Sep 25 20:26:24 2014
Return-path: <xen-users-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Sep 2014 20:26:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xen.org>)
	id 1XXFbK-0001Z9-Tk; Thu, 25 Sep 2014 20:25:18 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Josh.Whitehead@dornerworks.com>) id 1XXFbI-0001Z4-OH
	for xen-users@lists.xensource.com; Thu, 25 Sep 2014 20:25:17 +0000
Received: from [85.158.137.68:60004] by server-13.bemta-3.messagelabs.com id
	34/B7-01569-C2A74245; Thu, 25 Sep 2014 20:25:16 +0000
X-Env-Sender: Josh.Whitehead@dornerworks.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1411676711!8361886!1
X-Originating-IP: [12.207.209.148]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 18307 invoked from network); 25 Sep 2014 20:25:11 -0000
Received: from unknown (HELO mail.dornerworks.com) (12.207.209.148)
	by server-9.tower-31.messagelabs.com with SMTP;
	25 Sep 2014 20:25:11 -0000
Received: from [172.27.11.113] (172.27.11.113) by Quimby.dw.local
	(172.27.1.90) with Microsoft SMTP Server (TLS) id 14.2.247.3;
	Thu, 25 Sep 2014 16:28:31 -0400
Message-ID: <54247A26.40204@dornerworks.com>
Date: Thu, 25 Sep 2014 16:25:10 -0400
From: Joshua Whitehead <josh.whitehead@dornerworks.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Konstantin Belov <konstantin.belov@gmail.com>, Ian Campbell
	<Ian.Campbell@citrix.com>
References: <CAOxDqr=Hg+2xrC9LsUz6VJ7Uujk2-vf2qsYau9ZGZz-+Op2Xqw@mail.gmail.com>	<1400165013.19926.5.camel@kazak.uk.xensource.com>	<CAOxDqrnsvzDtTQ3CwXt-cv47nPJQbNBwv19+2ZExA7Voni9mNw@mail.gmail.com>	<1400168027.19926.29.camel@kazak.uk.xensource.com>	<D6A5567D-EB6E-4397-822E-EC9F96312BCA@gmail.com>	<245C176A-C563-471B-9566-86CBFDCA5AA8@gmail.com>	<CAOxDqr=bdHcs3dvi5AMmSeJtwQiraaZz=UpvPNT=vGGCeb4KRg@mail.gmail.com>	<1411484812093-5724814.post@n5.nabble.com>	<1411486025.1781.66.camel@kazak.uk.xensource.com>	<1411503477814-5724834.post@n5.nabble.com>	<5421FFFE.1000103@citrix.com>	<74E24E17-6FF3-4D52-A97C-5847B0FC6D19@gmail.com>	<CAHu=REwgFSZunb41=si+370ixhpC_BFxDeC-mmudT9HfOw-2uA@mail.gmail.com>	<1411552109.1781.168.camel@kazak.uk.xensource.com>	<CAHu=REzafK-kuMPt-nxG332tH+s4Wg=7TcJcv_w25rB5O9TvoA@mail.gmail.com>	<1411639871.16473.3.camel@kazak.uk.xensource.com>
	<CAHu=REz7vA_FoQP7WeFvFz0ZHcp6yMiAAerN6f9he=qK0jgXrA@mail.gmail.com>
In-Reply-To: <CAHu=REz7vA_FoQP7WeFvFz0ZHcp6yMiAAerN6f9he=qK0jgXrA@mail.gmail.com>
Content-Type: multipart/mixed; boundary="------------050508080101040303040102"
X-Originating-IP: [172.27.11.113]
Cc: Julien Grall <julien.grall@citrix.com>, Chen Baozi <baozich@gmail.com>,
	xen-users@lists.xensource.com
Subject: Re: [Xen-users] Booting dom0 on OMAP5432 board
X-BeenThere: xen-users@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen user discussion <xen-users.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xen.org>
List-Help: <mailto:xen-users-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xen.org?subject=subscribe>
Sender: xen-users-bounces@lists.xen.org
Errors-To: xen-users-bounces@lists.xen.org

--------------050508080101040303040102
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

Hello everyone, thought I'd chime in on this since I've been chasing similar
issues the last few days with the OMAP5432EVM board.

For reference I have been using:
- Upstream Xen (4.5 compiled with early printk=omap5432)
- Upstream Linux (3.17.x)
- An older u-boot (2013.01) that was included with the TI-OMAP5432SDK that
starts the board correctly in HYP mode

-----------

After checking my fdt before boot as Ian suggested I did notice that there was
an error, apparently introduced by copying the commands in to terminal from a
text file.  I resolved this error by transferring those commands into uboot
script and running them that way.

At this point I was still having the same problem Konstantin is currently
having.  Going off some previous experience with the Arndale (that's related to
the known issue regarding memory banks, even though that issue is supposed to be
resolved in upstream Xen) I bumped the dom0_mem down to 128MB and was finally
able to some output from Linux as follows, I did not have to move the dom0
bootargs as Ian suggested in his later e-mail to get this output:

...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 256kB init memory.
6Booting Linux on physical CPU 0x0
6Initializing cgroup subsys cpuset
6Initializing cgroup subsys cpu
6Initializing cgroup subsys cpuacct
5Linux version 3.17.0-rc4-armv7-lpae-x5 (arlx@arlx-58) (gcc version 4.8.3
20140401 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC
4.8-2014.04) ) #12 SMP Thu Sep 25 11:40:50 EDT 2014
6CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
6CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
6Machine model: TI OMAP5 uEVM board
4Forcing write-allocate cache policy for SMP
6Memory policy: Data cache writealloc
7On node 0 totalpages: 32256
7free_area_init_node: node 0, pgdat c0d05b40, node_mem_map c7cf8000
7  Normal zone: 256 pages used for memmap
7  Normal zone: 0 pages reserved
7  Normal zone: 32256 pages, LIFO batch:7
4  HighMem zone: 1048572 pages exceeds freesize 0
6psci: probing for conduit method from DT.
6psci: PSCIv0.2 detected in firmware.
6psci: Using standard PSCI v0.2 function IDs
6OMAP5432 ES2.0
6PERCPU: Embedded 9 pages/cpu @c7cae000 s14464 r8192 d14208 u36864
7pcpu-alloc: s14464 r8192 d14208 u36864 alloc=9*4096
7pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32000
5Kernel command line: console=hvc0,115200n8 earlyprintk=xen debug loglevel=8
root=/dev/mmcblk0p2 rw rootwait fixrtc
6PID hash table entries: 512 (order: -1, 2048 bytes)
6Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
6Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
6allocated 258048 bytes of page_cgroup
6please try 'cgroup_disable=memory' option if you don't want memory cgroups
Memory: 112936K/129024K available (8777K kernel code, 645K rwdata, 3432K rodata,
538K init, 918K bss, 16088K reserved, 0K highmem)
5Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)
    vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0bf4964   (12211 kB)
      .init : 0xc0bf5000 - 0xc0c7b880   ( 539 kB)
      .data : 0xc0c7c000 - 0xc0d1d460   ( 646 kB)
       .bss : 0xc0d1d460 - 06SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2,
Nodes=1
6Hierarchical RCU implementation.
6       RCU dyntick-idle grace-period acceleration is enabled.
6       RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
6RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
6NR_IRQS:16 nr_irqs:16 16
6OMAP clockevent source: timer1 at 32768 Hz
6sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65536000000000ns
6OMAP clocksource: 32k_counter at 32768 Hz
0Internal error: Oops - undefined instruction: 0 [#1] SMP ARM
dModules linked in:
dCPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.17.0-rc4-armv7-lpae-x5 #12
dtask: c0c88be0 ti: c0c7c000 task.ti: c0c7c000
PC is at omap_smc1+0x10/0x18
LR is at omap5_realtime_timer_init+0x408/0x428
pc : [<c003a6d8>]    lr : [<c0c006f0>]    psr: 600001d3
sp : c0c7df58  ip : 00000109  fp : c0d1d500
r10: 00000000  r9 : c0c84540  r8 : c0c63c28
r7 : c7cda66c  r6 : c0d1e718  r5 : 00000008  r4 : fa243200
r3 : 005dc000  r2 : 000bb800  r1 : 005dc000  r0 : 005dc000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 30c5387d  Table: a8003000  DAC: fffffffd
0Process swapper/0 (pid: 0, stack limit = 0xc0c7c248)
0Stack: (0xc0c7df58 to 0xc0c7e000)
0df40:                                                       000bb800 005dc000
0df60: fa243200 00000008 c0d1e718 c7cda66c c0c63c28 c0c84540 00000000 c0d1d500
0df80: c0c8b2dc c0c006f0 00000001 c7cc2340 00000000 c78066f4 ffffffff c7cc2340
0dfa0: 00000000 c0d1d500 ffffffff c0bf5b00 ffffffff ffffffff c0bf5608 00000000
0dfc0: ffffffff 00000000 00000000 c0c63c28 00000000 c0d1e114 c0c845d0 c0c63c24
0dfe0: c0c8aa48 a8007000 412fc0f2 00000000 00000000 a8008084 00000000 00000000
[<c003a6d8>] (omap_smc1) from [<005dc000>] (0x5dc000)
0Code: e92d5ffc e1a0c000 e1a00001 f57ff04f (e1600070)
4---[ end trace f24b6c88ae00fa9a ]---
0Kernel panic - not syncing: Attempted to kill the idle task!
0---[ end Kernel panic - not syncing: Attempted to kill the idle task!
5random: nonblocking pool is initialized

----------------------

I discovered this behavior is apparently linked to a secure monitor call
(omap_smc1 called out in the stack trace above) in the Linux code located in
$LINUX_SOURCE/arch/arm/mach-omap2/timer.c

The function in question is as follows:

#ifdef CONFIG_SOC_HAS_REALTIME_COUNTER
static unsigned long arch_timer_freq;

void set_cntfreq(void)
{
	omap_smc1(OMAP5_DRA7_MON_SET_CNTFRQ_INDEX, arch_timer_freq);
}
#endif

Digging through some recent git logs it appears this line was added to address
some issues with TI's DRA7XX boards.  I would assume an smc function would cause
issues running in Xen as Xen is running in HYP mode and the smc call has to be
escalated to SECURE mode?

In any case, for experimentation purposes, I simply commented out the
"omap_smc1" line in that file and recompiled the kernel. At the surface it
didn't seem as though that function had much of an impact on the OMAP5432.  This
change did result in the dom0 linux boot getting further but still did not
succeed; output was as follows:

(XEN) Freed 256kB init memory.
6Booting Linux on physical CPU 0x0
6Initializing cgroup subsys cpuset
6Initializing cgroup subsys cpu
6Initializing cgroup subsys cpuacct
5Linux version 3.17.0-rc4-armv7-lpae-x5 (arlx@arlx-58) (gcc version 4.8.3
20140401 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC
4.8-2014.04) ) #11 SMP Mon Sep 22 16:11:12 EDT 2014
6CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
6CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
6Machine model: TI OMAP5 uEVM board
4Forcing write-allocate cache policy for SMP
6Memory policy: Data cache writealloc
7On node 0 totalpages: 32256
7free_area_init_node: node 0, pgdat c0d05b40, node_mem_map c7cf8000
7  Normal zone: 256 pages used for memmap
7  Normal zone: 0 pages reserved
7  Normal zone: 32256 pages, LIFO batch:7
4  HighMem zone: 1048572 pages exceeds freesize 0
6psci: probing for conduit method from DT.
6psci: PSCIv0.2 detected in firmware.
6psci: Using standard PSCI v0.2 function IDs
6OMAP5432 ES2.0
6PERCPU: Embedded 9 pages/cpu @c7cae000 s14464 r8192 d14208 u36864
7pcpu-alloc: s14464 r8192 d14208 u36864 alloc=9*4096
7pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32000
5Kernel command line: console=hvc0,115200n8 earlyprintk=xen debug loglevel=8
root=/dev/mmcblk0p2 rw rootwait fixrtc
6PID hash table entries: 512 (order: -1, 2048 bytes)
6Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
6Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
6allocated 258048 bytes of page_cgroup
6please try 'cgroup_disable=memory' option if you don't want memory cgroups
Memory: 112936K/129024K available (8777K kernel code, 645K rwdata, 3432K rodata,
538K init, 918K bss, 16088K reserved, 0K highmem)
5Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)
    vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0bf4964   (12211 kB)
      .init : 0xc0bf5000 - 0xc0c7b880   ( 539 kB)
      .data : 0xc0c7c000 - 0xc0d1d460   ( 646 kB)
       .bss : 0xc0d1d460 - 06SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2,
Nodes=1
6Hierarchical RCU implementation.
6       RCU dyntick-idle grace-period acceleration is enabled.
6       RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
6RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
6NR_IRQS:16 nr_irqs:16 16
6OMAP clockevent source: timer1 at 32768 Hz
6sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65536000000000ns
6OMAP clocksource: 32k_counter at 32768 Hz
6Architected cp15 timer(s) running at 6.14MHz (virt).
6sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 2796202663936ns
6Switching to timer-based delay loop, resolution 162ns
6Console: colour dummy device 80x30
6Calibrating delay loop (skipped), value calculated using timer frequency..
12.28 BogoMIPS (lpj=61440)
6pid_max: default: 32768 minimum: 301
6Security Framework initialized
6AppArmor: AppArmor disabled by boot time parameter
6Yama: becoming mindful.
6Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
6Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
6Initializing cgroup subsys memory
6Initializing cgroup subsys devices
6Initializing cgroup subsys freezer
6Initializing cgroup subsys net_cls
6Initializing cgroup subsys blkio
6CPU: Testing write buffer coherency: ok
3/cpus/cpu@0 missing clock-frequency property
3/cpus/cpu@1 missing clock-frequency property
6CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
6Xen 4.5 support found, events_irq=31 gnttab_frame=0x000000004b000000
6xen:grant_table: Grant tables using version 1 layout
Grant table initialized
6xen:events: Using FIFO-based ABI
6Xen: initializing cpu0
6Setting up static identity map for 0xa8858700 - 0xa8858798
CPU1: Booted secondary processor
6Xen: initializing cpu1
6CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
6Brought up 2 CPUs
6SMP: Total of 2 processors activated.
6CPU: All CPU(s) started in SVC mode.
6devtmpfs: initialized
6VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
4omap_hwmod: l3_main_3 using broken dt data from ocp
4omap_hwmod: l3_main_2 using broken dt data from ocp
4------------[ cut here ]------------
4WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2542 _init+0x4cc/0x4dc()
dModules linked in:
dCPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.17.0-rc4-armv7-lpae-x5 #11
[<c00269c0>] (unwind_backtrace) from [<c0022d0c>] (show_stack+0x10/0x14)
[<c0022d0c>] (show_stack) from [<c0850ca4>] (dump_stack+0x84/0x94)
[<c0850ca4>] (dump_stack) from [<c004cf20>] (warn_slowpath_common+0x70/0x8c)
[<c004cf20>] (warn_slowpath_common) from [<c004cf6c>] (warn_slowpath_fmt+0x30/0x40)
[<c004cf6c>] (warn_slowpath_fmt) from [<c0c01b40>] (_init+0x4cc/0x4dc)
[<c0c01b40>] (_init) from [<c0c021a0>] (__omap_hwmod_setup_all+0x44/0x8c)
[<c0c021a0>] (__omap_hwmod_setup_all) from [<c000891c>] (do_one_initcall+0xd8/0x204)
[<c000891c>] (do_one_initcall) from [<c0bf5e38>] (kernel_init_freeable+0x1e0/0x280)
[<c0bf5e38>] (kernel_init_freeable) from [<c084ab98>] (kernel_init+0xc/0xe8)
[<c084ab98>] (kernel_init) from [<c001f898>] (ret_from_fork+0x14/0x3c)
4---[ end trace 6338789eb5a532ef ]---
4------------[ cut here ]------------
4WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2542 _init+0x4cc/0x4dc()
dModules linked in:
dCPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W      3.17.0-rc4-armv7-lpae-x5 #11
[<c00269c0>] (unwind_backtrace) from [<c0022d0c>] (show_stack+0x10/0x14)
[<c0022d0c>] (show_stack) from [<c0850ca4>] (dump_stack+0x84/0x94)
[<c0850ca4>] (dump_stack) from [<c004cf20>] (warn_slowpath_common+0x70/0x8c)
[<c004cf20>] (warn_slowpath_common) from [<c004cf6c>] (warn_slowpath_fmt+0x30/0x40)
[<c004cf6c>] (warn_slowpath_fmt) from [<c0c01b40>] (_init+0x4cc/0x4dc)
[<c0c01b40>] (_init) from [<c0c021a0>] (__omap_hwmod_setup_all+0x44/0x8c)
[<c0c021a0>] (__omap_hwmod_setup_all) from [<c000891c>] (do_one_initcall+0xd8/0x204)
[<c000891c>] (do_one_initcall) from [<c0bf5e38>] (kernel_init_freeable+0x1e0/0x280)
[<c0bf5e38>] (kernel_init_freeable) from [<c084ab98>] (kernel_init+0xc/0xe8)
[<c084ab98>] (kernel_init) from [<c001f898>] (ret_from_fork+0x14/0x3c)
4---[ end trace 6338789eb5a532f0 ]---
4omap_hwmod: dss_dispc: cannot be enabled for reset (3)
4omap_hwmod: dss_dsi1: cannot be enabled for reset (3)
4omap_hwmod: dss_dsi2: cannot be enabled for reset (3)
4omap_hwmod: dss_hdmi: cannot be enabled for reset (3)
6xor: measuring software checksum speed
6   arm4regs  :  1803.200 MB/sec
6   8regs     :  1180.800 MB/sec
6   32regs    :  1204.000 MB/sec
6   neon      :  2873.600 MB/sec
6xor: using function: neon (2873.600 MB/sec)
6pinctrl core: initialized pinctrl subsystem
6regulator-dummy: no parameters
6NET: Registered protocol family 16
6DMA: preallocated 256 KiB pool for atomic coherent allocations
4xen:swiotlb_xen: Warning: only able to allocate 4 MB for software IO TLB
6software IO TLB [mem 0xaec00000-0xaf000000] (4MB) mapped at [c6c00000-c6ffffff]
6OMAP GPIO hardware version 0.1
6No ATAGs?6OMAP DMA hardware revision 0.0
raid6: int32x1    164 MB/s
raid6: int32x2    239 MB/s
raid6: int32x4    280 MB/s
raid6: int32x8    297 MB/s
raid6: neonx1     684 MB/s
raid6: neonx2    1060 MB/s
raid6: neonx4    1509 MB/s
raid6: neonx8    1381 MB/s
raid6: using algorithm neonx4 (1509 MB/s)
raid6: using intx1 recovery algorithm
4edma-dma-engine: probe of edma-dma-engine.0 failed with error -22
6xen:balloon: Initialising balloon driver
6xen_balloon: Initialising balloon driver
6vmmcsd_fixed: 3000 mV
5SCSI subsystem initialized
7libata version 3.00 loaded.
6usbcore: registered new interface driver usbfs
6usbcore: registered new interface driver hub
6usbcore: registered new device driver usb
4hsusb2_phy supply vcc not found, using dummy regulator
4hsusb3_phy supply vcc not found, using dummy regulator
6media: Linux media interface: v0.10
6Linux video capture interface: v2.00
6pps_core: LinuxPPS API ver. 1 registered
6pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti
<giometti@linux.it>
6PTP clock support registered
6NetLabel: Initializing
6NetLabel:  domain hash size = 128
6NetLabel:  protocols = UNLABELED CIPSOv4
6NetLabel:  unlabeled traffic allowed by default
6Switched to clocksource arch_sys_counter
3/thermal-zones/cpu_thermal/cooling-maps/map0: could not find phandle
3missing cooling_device property
3failed to build thermal zone cpu_thermal: -22
6NET: Registered protocol family 2
6TCP established hash table entries: 1024 (order: 0, 4096 bytes)
6TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
6TCP: Hash tables configured (established 1024 bind 1024)
6TCP: reno registered
6UDP hash table entries: 256 (order: 1, 8192 bytes)
6UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
6NET: Registered protocol family 1
6RPC: Registered named UNIX socket transport module.
6RPC: Registered udp transport module.
6RPC: Registered tcp transport module.
6RPC: Registered tcp NFSv4.1 backchannel transport module.
3kvm [1]: HYP mode not available
6futex hash table entries: 512 (order: 3, 32768 bytes)
6audit: initializing netlink subsys (disabled)
5audit: type=2000 audit(2.500:1): initialized
5VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
5NFS: Registering the id_resolver key type
5Key type id_resolver registered
5Key type id_legacy registered
6nfs4filelayout_init: NFSv4 File Layout Driver Registering...
6fuse init (API version 7.23)
6SGI XFS with ACLs, security attributes, realtime, no debug enabled
6msgmni has been set to 220
6Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
6io scheduler noop registered
6io scheduler deadline registered
6io scheduler cfq registered (default)
6OMAP DSS rev 6.1
6xen:xen_evtchn: Event-channel device installed
6pbias_mmc_omap5: 1800 <--> 3000 mV at 3000 mV
6abb_mpu: 1060 <--> 1250 mV
6abb_mm: 1025 <--> 1120 mV
[    0.187796] omap_hwmod: dss_rfbi: doesn't have mpu register target base
[    0.295987] omap_hwmod: uart3: doesn't have mpu register target base
[    0.937594] platform 50000000.gpmc: Cannot lookup hwmod 'gpmc'
[    0.937691] omap-gpmc 50000000.gpmc: _od_fail_runtime_resume: FIXME: missing
hwmod/omap_dev info
[    0.937705] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[    2.369486] edma-dma-engine edma-dma-engine.0: Can't allocate PaRAM dummy slot
[    2.388102] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver
[    2.430722] omap_i2c 48070000.i2c: could not find pctldev for node
/ocp/pinmux@4a002840/pinmux_i2c1_pins, deferring probe
[    2.430738] platform 48070000.i2c: Driver omap_i2c requests probe deferral
[    2.431145] omap_i2c 48072000.i2c: bus 1 rev0.12 at 100 kHz
[    2.431518] omap_i2c 48060000.i2c: bus 2 rev0.12 at 100 kHz
[    2.431886] omap_i2c 4807a000.i2c: bus 3 rev0.12 at 100 kHz
[    2.431929] omap_i2c 4807c000.i2c: could not find pctldev for node
/ocp/pinmux@4a002840/pinmux_i2c5_pins, deferring probe
[    2.431943] platform 4807c000.i2c: Driver omap_i2c requests probe deferral
[    2.454413] omap-iommu 4a066000.mmu: 4a066000.mmu registered
[    2.454506] omap-iommu 55082000.mmu: 55082000.mmu registered
[    2.692441] pinctrl-single 4a002840.pinmux: 219 pins at pa fc002840 size 438
[    2.692623] pinctrl-single 4ae0c840.pinmux: 28 pins at pa fce0c840 size 56
[    2.699391] tpd12s015 encoder@0: failed to parse CT CP HPD gpio
[    2.699416] platform encoder@0: Driver tpd12s015 requests probe deferral
[    2.699874] connector-hdmi connector@0: failed to find video source
[    2.699892] platform connector@0: Driver connector-hdmi requests probe deferral
6console [hvc0] enabled
6Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.881014] omap_uart 4806a000.serial: no wakeirq for uart0
64806a000.serial: ttyO0 at MMIO 0x4806a000 (irq = 104, base_baud = 3000000) is a
OMAP UART0
[    2.895146] omap_uart 4806c000.serial: no wakeirq for uart0
64806c000.serial: ttyO1 at MMIO 0x4806c000 (irq = 105, base_baud = 3000000) is a
OMAP UART1
[    2.909256] omap_uart 4806e000.serial: no wakeirq for uart0
64806e000.serial: ttyO3 at MMIO 0x4806e000 (irq = 102, base_baud = 3000000) is a
OMAP UART3
[    2.923430] omap_uart 48066000.serial: no wakeirq for uart0
648066000.serial: ttyO4 at MMIO 0x48066000 (irq = 137, base_baud = 3000000) is a
OMAP UART4
[    2.937571] omap_uart 48068000.serial: no wakeirq for uart0
648068000.serial: ttyO5 at MMIO 0x48068000 (irq = 138, base_baud = 3000000) is a
OMAP UART5
6serial: Freescale lpuart driver
6[drm] Initialized drm 1.1.0 20060810
6usbcore: registered new interface driver udl
3Error: Driver 'tfp410' is already registered, aborting...
[    2.971104] ahci 4a140000.sata: forcing PORTS_IMPL to 0x1
[    2.976485] ahci 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1
impl platform mode
[    2.985101] ahci 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio
slum part ccc apst
[    2.995244] scsi host0: ahci_platform
6ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 86
6xen_netfront: Initialising Xen virtual ethernet driver
6ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
6ehci-platform: EHCI generic platform driver
6ehci-omap: OMAP-EHCI Host Controller driver
[    3.041987] ehci-omap 4a064c00.ehci: EHCI Host Controller
[    3.047529] ehci-omap 4a064c00.ehci: new USB bus registered, assigned bus
number 1
[    3.055168] ehci-omap 4a064c00.ehci: irq 109, io mem 0x4a064c00
[    3.079503] ehci-omap 4a064c00.ehci: USB 2.0 started, EHCI 1.00
[    3.085600] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.092371] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.099681] usb usb1: Product: EHCI Host Controller
[    3.104635] usb usb1: Manufacturer: Linux 3.17.0-rc4-armv7-lpae-x5 ehci_hcd
[    3.111711] usb usb1: SerialNumber: 4a064c00.ehci
[    3.117092] hub 1-0:1.0: USB hub found
[    3.120845] hub 1-0:1.0: 3 ports detected
6tegra-ehci: Tegra EHCI driver
6usbcore: registered new interface driver usb-storage
6mousedev: PS/2 mouse device common for all mice
6i2c /dev entries driver
6IR Sharp protocol handler initialized
6IR XMP protocol handler initialized
[    3.184750] ti-soc-thermal 4a0021e0.bandgap: Delay 1000 ms is not supported
[    3.191747] ti-soc-thermal 4a0021e0.bandgap: Delay 1000 ms is not supported
6omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
6sdhci: Secure Digital Host Controller Interface driver
6sdhci: Copyright(c) Pierre Ossman
4mmc0: host does not support reading read-only switch. assuming write-enable.
4480ad000.mmc supply vmmc not found, using dummy regulator
[    3.299904] omap_hsmmc 480ad000.mmc: could not set regulator OCR (-22)
6mmc0: new high speed SDHC card at address 1234
6mmcblk0: mmc0:1234 SA08G 7.28 GiB
6 mmcblk0: p1 p2
4480d1000.mmc supply vmmc not found, using dummy regulator
[    3.344983] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22)
[    3.351686] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22)
6ata1: SATA link down (SStatus 0 SControl 300)
6mmc1: BKOPS_EN bit is not set
4480d5000.mmc supply vmmc not found, using dummy regulator
[    3.394920] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22)
[    3.401663] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22)
6mmc1: new high speed MMC card at address 0001
6mmcblk1: mmc1:0001 SEM04G 3.68 GiB
6mmcblk1boot0: mmc1:0001 SEM04G partition 1 2.00 MiB
6mmcblk1boot1: mmc1:0001 SEM04G partition 2 2.00 MiB
6 mmcblk1: unknown partition table
6 mmcblk1boot1: unknown partition table
6 mmcblk1boot0: unknown partition table
6sdhci-pltfm: SDHCI platform and OF driver helper
[    3.445877] u6ledtrig-cpu: registered to indicate activity on CPUs
sb 1-3: new high6hidraw: raw HID events driver (C) Jiri Kosina
-speed USB device number 2 using ehci-omap
6usbcore: registered new interface driver usbhid
6usbhid: USB HID core driver
6ashmem: initialized
3emif_probe: error getting device data
3emif_probe: error getting device data
6oprofile: hardware counters not available
6oprofile: using timer interrupt.
6TCP: cubic registered
6NET: Registered protocol family 10
6mip6: Mobile IPv6
6NET: Registered protocol family 17
5Key type dns_resolver registered
6mpls_gso: MPLS GSO support
3omap_vc_init_channel: No PMIC info for vdd_core
3omap_vp_init: No PMIC info for vdd_core
3omap_vc_init_channel: No PMIC info for vdd_mm
3omap_vp_init: No PMIC info for vdd_mm
3omap_vc_init_channel: No PMIC info for vdd_mpu
3omap_vp_init: No PMIC info for vdd_mpu
4cpufreq_cpu0: failed to get cpu0 regulator: -19
3cpufreq_cpu0: failed to get cpu0 clock: -2
4cpufreq-cpu0: probe of cpufreq-cpu0.0 failed with error -2
6ThumbEE CPU extension supported.
5Registering SWP/SWPB emulation handler
6registered taskstats version 1
6Btrfs loaded
[    3.559848] dmm 4e000000.dmm: initialized all PAT entries
[    3.565416] platform omapdrm.0: Driver omapdrm requests probe deferral
[    3.573182] palmas 0-0048: Irq flag is 0x00000000
[    3.580780] palmas 0-0048: Muxing GPIO 2, PWM 0, LED 0
6smps123: 600 <--> 1500 mV at 1050 mV
6smps45: 600 <--> 1310 mV at 1050 mV
6smps6: 1200 mV
6smps7: 1800 mV
6smps8: 600 <--> 1310 mV at 1050 mV
6smps9: 2100 mV
6smps10_out2: 5000 mV
[    3.621895] usb 1-3: New USB device found, idVendor=0424, idProduct=9730
[    3.628590] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
6smps10_out1: 5000 mV
6ldo1: 1500 <--> 1800 mV
6ldo2: 2800 mV
6ldo3: 1500 mV
6ldo4: 1500 <--> 1800 mV
6ldo5: 1800 mV
6ldo6: 1200 mV
6ldo7: 2000 mV
6ldo8: 3000 mV
6ldo9: 1800 <--> 3000 mV at 3000 mV
6ldoln: 1800 mV
6ldousb: 3250 mV
6REGEN1: no parameters
6REGEN2: no parameters
6regen3: no parameters
6SYSEN1: no parameters
6SYSEN2: no parameters
[    3.694618] twl6040 0-004b: clk32k is not handled
[    3.702694] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
[    3.709323] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
[    3.715088] tpd12s015 encoder@0: failed to parse CT CP HPD gpio
[    3.720993] platform encoder@0: Driver tpd12s015 requests probe deferral
[    3.728057] connector-hdmi connector@0: failed to find video source
[    3.734316] platform connector@0: Driver connector-hdmi requests probe deferral
[    3.741938] platform omapdrm.0: Driver omapdrm requests probe deferral
3drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
6ldo9: disabling
6ldo8: disabling
6ldo3: disabling
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, aborting
3end_request: I/O error, dev mmcblk0, sector 26626
3EXT4-fs (mmcblk0p2): unable to read superblock
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, aborting
3end_request: I/O error, dev mmcblk0, sector 26626
3EXT4-fs (mmcblk0p2): unable to read superblock
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, aborting
3end_request: I/O error, dev mmcblk0, sector 26626
3EXT4-fs (mmcblk0p2): unable to read superblock
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, retrying
3mmcblk0: error -110 sending status command, aborting
3end_request: I/O error, dev mmcblk0, sector 26624
3FAT-fs (mmcblk0p2): unable to read boot sector
VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -5
Please append a correct "root=" boot option; here are the available partitions:
b300         7639040 mmcblk0  driver: mmcblk
  b301           12288 mmcblk0p1 00000000-01
  b302         7625728 mmcblk0p2 00000000-02
b308         3866624 mmcblk1  driver: mmcblk
b318            2048 mmcblk1boot1  (driver?)
b310            2048 mmcblk1boot0  (driver?)
0Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)
dCPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W      3.17.0-rc4-armv7-lpae-x5 #11
[<c00269c0>] (unwind_backtrace) from [<c0022d0c>] (show_stack+0x10/0x14)
[<c0022d0c>] (show_stack) from [<c0850ca4>] (dump_stack+0x84/0x94)
[<c0850ca4>] (dump_stack) from [<c084c52c>] (panic+0xa4/0x21c)
[<c084c52c>] (panic) from [<c0bf6224>] (mount_block_root+0x240/0x2c8)
[<c0bf6224>] (mount_block_root) from [<c0bf6468>] (prepare_namespace+0x158/0x19c)
[<c0bf6468>] (prepare_namespace) from [<c0bf5ec8>]
(kernel_init_freeable+0x270/0x280)
[<c0bf5ec8>] (kernel_init_freeable) from [<c084ab98>] (kernel_init+0xc/0xe8)
[<c084ab98>] (kernel_init) from [<c001f898>] (ret_from_fork+0x14/0x3c)
2CPU0: stopping
dCPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W      3.17.0-rc4-armv7-lpae-x5 #11
[<c00269c0>] (unwind_backtrace) from [<c0022d0c>] (show_stack+0x10/0x14)
[<c0022d0c>] (show_stack) from [<c0850ca4>] (dump_stack+0x84/0x94)
[<c0850ca4>] (dump_stack) from [<c0024be4>] (handle_IPI+0x190/0x214)
[<c0024be4>] (handle_IPI) from [<c000863c>] (gic_handle_irq+0x58/0x5c)
[<c000863c>] (gic_handle_irq) from [<c0856dc0>] (__irq_svc+0x40/0x54)
Exception stack(0xc0c7df40 to 0xc0c7df88)
df40: ffffffed 00000000 ffffffed c002c2a0 c0c7c000 c0d09ce0 c0c84644 c0c845e0
df60: 00000000 00000000 c0c7a428 00000000 00000000 c0c7df88 c0020438 c002043c
df80: 60000113 ffffffff
[<c0856dc0>] (__irq_svc) from [<c002043c>] (arch_cpu_idle+0x38/0x3c)
[<c002043c>] (arch_cpu_idle) from [<c0080f04>] (cpu_startup_entry+0x218/0x2bc)
[<c0080f04>] (cpu_startup_entry) from [<c0bf5c4c>] (start_kernel+0x408/0x414)
[<c0bf5c4c>] (start_kernel) from [<a8008084>] (0xa8008084)
0---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(179,2)

------------------------------------

Still not sure of the cause for this, tried all the simple things, but this card
and kernel will boot straight linux without Xen, so I don't think the card
itself or anything like that is the issue.

One thought was that removing that secure monitor call line messed up something
with the clocking on the board such that it can no longer get consistent
accurate reads from the SD card, but that's just one theory.

This is where I am currently and I am still working on the issue, just thought
I'd throw in this info to see if it gives anyone something to work from.  I've
attached the complete uboot/xen/linux logs for both boots to this e-mail if that
helps.

Let me know if I can provide any additional information, thanks for your time.

- Josh


> 
> ---- Boot log ----
> (XEN) Checking for initrd in /chosen
> (XEN) RAM: 0000000080000000 - 00000000feffffff
> (XEN)
> (XEN) MODULE[0]: 00000000825f0000 - 00000000825fd000 Device Tree
> (XEN) MODULE[1]: 00000000a0000000 - 00000000a0a00000 Kernel
> console=hvc0,115200n8 earlyprintk=xen debug ignore_loglevel
> root=/dev/mmcblk0p2 rw rootwait fixrtc
> (XEN)  RESVD[0]: 00000000825f0000 - 00000000825fd000
> (XEN)
> (XEN) Command line: sync_console console=dtuart dtuart=serial2
> loglvl=all guest_loglvl=all sync_console console_to_ring dom0_mem=512M
> (XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000
> (XEN) Update BOOTMOD_XEN from 0000000080200000-00000000802f9681 =>
> 00000000fee00000-00000000feef9681
> (XEN) Xen heap: 00000000ee000000-00000000fe000000 (65536 pages)
> (XEN) Dom heap: 454656 pages
> (XEN) Domain heap initialised
> (XEN) Looking for UART console serial2
> 
> But the final is the same:
> (XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch
> input to Xen)
> (XEN) Freed 252kB init memory.
> 
> 
> On Thu, Sep 25, 2014 at 2:11 PM, Ian Campbell <Ian.Campbell@citrix.com> wrote:
>> On Wed, 2014-09-24 at 20:17 +0400, Konstantin Belov wrote:
>>> Ian,
>>>  That's what I have in FDT before bootm command:
>>>
>>> U-Boot# fdt print /chosen
>>> chosen {
>>>         xen,dom0-bootargs = "console=hvc0 earlyprintk=xen debug
>>> ignore_loglevel root=/dev/mmcblk0p2 rw rootwait fixrtc";
>>>         xen,xen-bootargs = "sync_console console=dtuart dtuart=serial2";
>>>         modules {
>>>                 #size-cells = <0x00000001>;
>>>                 #address-cells = <0x00000001>;
>>>                 module@0 {
>>>                         reg = <0xa0000000 0x00a00000>;
>>>                         compatible = "xen,linux-zimage", "xen,multiboot-module";
>>>                 };
>>>         };
>>> };
>>>
>>> Also I tried to add more options for Xen (which I took from Arndale
>>> setup): "loglvl=all guest_loglvl=all sync_console console_to_ring"
>>> but this didn't add any extra info.
>>
>> I don't spot anything wrong with this :-(
>>
>> Could you try putting /chosen/xen,dom0-bootargs
>> into /chosen/modules/module@0/bootargs instead and see if that works?
>> Perhaps we have somehow regressed the former path (in which case it
>> should be fixed).
>>
>> Ian.
>>
>>
> 
> 
> 


--------------050508080101040303040102
Content-Type: text/plain; charset="windows-1252"; name="boot2.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="boot2.log"

VS1Cb290IFNQTCAyMDEzLjAxLWdkYzYyMzhjIChNYXIgMjcgMjAxMyAtIDE0OjMzOjQ3KQ0K
T01BUDU0MzIgRVMyLjANCmRpZV9pZDE6IDE1ZDYwNzQNCmxpc2FfbWFwXzI6IDB4ODA3NDAz
MDANCk9NQVAgU0QvTU1DOiAwDQpyZWFkaW5nIHUtYm9vdC5pbWcNCnJlYWRpbmcgdS1ib290
LmltZw0KDQoNClUtQm9vdCAyMDEzLjAxLWdkYzYyMzhjIChNYXIgMjcgMjAxMyAtIDE0OjMz
OjQ3KQ0KDQpDUFUgIDogT01BUDU0MzIgRVMyLjANCkJvYXJkOiBPTUFQNTQzMCBFVk0NCkky
QzogICByZWFkeQ0KRFJBTTogIDIgR2lCDQpyZWxvY2F0aW9uIE9mZnNldCBpczogN2UxMDEw
MDANCk1NQzogICBPTUFQIFNEL01NQzogMCwgT01BUCBTRC9NTUM6IDENCkluOiAgICBzZXJp
YWwNCk91dDogICBzZXJpYWwNCkVycjogICBzZXJpYWwNCkhpdCBhbnkga2V5IHRvIHN0b3Ag
YXV0b2Jvb3Q6ICAwDQpPTUFQNTQzMCBFVk0gIyBmYXRsb2FkIG1tYyAwOjEgJGR0Yl9hZGRy
X3Igb21hcDUtdWV2bS5kdGINCnJlYWRpbmcgb21hcDUtdWV2bS5kdGINCjQ5NjExIGJ5dGVz
IHJlYWQgaW4gMTAgbXMgKDQuNyBNaUIvcykNCk9NQVA1NDMwIEVWTSAjIGZhdGxvYWQgbW1j
IDA6MSAkeGVuX2FkZHJfciB4ZW4tdUltYWdlDQpyZWFkaW5nIHhlbi11SW1hZ2UNCjY4OTAy
MCBieXRlcyByZWFkIGluIDQ3IG1zICgxNCBNaUIvcykNCk9NQVA1NDMwIEVWTSAjIGZhdGxv
YWQgbW1jIDA6MSAka2VybmVsX2FkZHJfciB6SW1hZ2UtY29tbWVudGVkb3V0DQpyZWFkaW5n
IHpJbWFnZS1jb21tZW50ZWRvdXQNCjQ2NTU4ODggYnl0ZXMgcmVhZCBpbiAyODkgbXMgKDE1
LjQgTWlCL3MpDQpPTUFQNTQzMCBFVk0gIyBmZHQgYWRkciAkZHRiX2FkZHJfcg0KT01BUDU0
MzAgRVZNICMgZmR0IHJlc2l6ZQ0KT01BUDU0MzAgRVZNICMgZmR0IHNldCAvY2hvc2VuIHhl
bix4ZW4tYm9vdGFyZ3MgXCIkeGVuX2Jvb3RhcmdzXCINCk9NQVA1NDMwIEVWTSAjIGZkdCBy
ZXNpemUNCk9NQVA1NDMwIEVWTSAjIGZkdCBzZXQgL2Nob3NlbiB4ZW4sZG9tMC1ib290YXJn
cyBcIiRkb20wX2Jvb3RhcmdzXCINCk9NQVA1NDMwIEVWTSAjIGZkdCBta25vZGUgL2Nob3Nl
biBtb2R1bGVzDQpPTUFQNTQzMCBFVk0gIyBmZHQgc2V0IC9jaG9zZW4vbW9kdWxlcyAnI2Fk
ZHJlc3MtY2VsbHMnIDwxPg0KT01BUDU0MzAgRVZNICMgZmR0IHNldCAvY2hvc2VuL21vZHVs
ZXMgJyNzaXplLWNlbGxzJyA8MT4NCk9NQVA1NDMwIEVWTSAjIGZkdCBta25vZGUgL2Nob3Nl
bi9tb2R1bGVzIG1vZHVsZUAwDQpPTUFQNTQzMCBFVk0gIyBmZHQgc2V0IC9jaG9zZW4vbW9k
dWxlcy9tb2R1bGVAMCBjb21wYXRpYmxlIHhlbixsaW51eC16aW1hZ2UgeGVuLG11bHRpYm9v
dC1tb2R1bGUNCk9NQVA1NDMwIEVWTSAjIGZkdCBzZXQgL2Nob3Nlbi9tb2R1bGVzL21vZHVs
ZUAwIHJlZyA8JGtlcm5lbF9hZGRyX3IgMHhhMDAwMDA+DQpPTUFQNTQzMCBFVk0gIyBmZHQg
Y2hvc2VuDQpPTUFQNTQzMCBFVk0gIyBmZHQgcHJpbnQgL2Nob3Nlbg0KY2hvc2VuIHsNCiAg
ICAgICAgeGVuLGRvbTAtYm9vdGFyZ3MgPSAiY29uc29sZT1odmMwLDExNTIwMG44IGVhcmx5
cHJpbnRrPXhlbiBkZWJ1ZyBsb2dsZXZlbD04IHJvb3Q9L2Rldi9tbWNibGswcDIgcncgcm9v
dHdhaXQgZml4cnRjIjsNCiAgICAgICAgeGVuLHhlbi1ib290YXJncyA9ICJkb20wX21lbT0x
MjhNIGxvZ2x2bD1hbGwgZ3Vlc3RfbG9nbHZsPWFsbCBzeW5jX2NvbnNvbGUgY29uc29sZT1k
dHVhcnQgZHR1YXJ0PXNlcmlhbDIiOw0KICAgICAgICBtb2R1bGVzIHsNCiAgICAgICAgICAg
ICAgICAjc2l6ZS1jZWxscyA9IDwweDAwMDAwMDAxPjsNCiAgICAgICAgICAgICAgICAjYWRk
cmVzcy1jZWxscyA9IDwweDAwMDAwMDAxPjsNCiAgICAgICAgICAgICAgICBtb2R1bGVAMCB7
DQogICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHhhMDAwMDAwMCAweDAwYTAwMDAw
PjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLGxpbnV4LXpp
bWFnZSIsICJ4ZW4sbXVsdGlib290LW1vZHVsZSI7DQogICAgICAgICAgICAgICAgfTsNCiAg
ICAgICAgfTsNCn07DQpPTUFQNTQzMCBFVk0gIyBib290bSAkeGVuX2FkZHJfciAtICRkdGJf
YWRkcl9yDQojIyBCb290aW5nIGtlcm5lbCBmcm9tIExlZ2FjeSBJbWFnZSBhdCA5MDAwMDAw
MCAuLi4NCiAgIEltYWdlIE5hbWU6DQogICBJbWFnZSBUeXBlOiAgIEFSTSBMaW51eCBLZXJu
ZWwgSW1hZ2UgKHVuY29tcHJlc3NlZCkNCiAgIERhdGEgU2l6ZTogICAgNjg4OTU2IEJ5dGVz
ID0gNjcyLjggS2lCDQogICBMb2FkIEFkZHJlc3M6IDgwMjAwMDAwDQogICBFbnRyeSBQb2lu
dDogIDgwMjAwMDAwDQogICBWZXJpZnlpbmcgQ2hlY2tzdW0gLi4uIE9LDQojIyBGbGF0dGVu
ZWQgRGV2aWNlIFRyZWUgYmxvYiBhdCA4MjVmMDAwMA0KICAgQm9vdGluZyB1c2luZyB0aGUg
ZmR0IGJsb2IgYXQgMHg4MjVmMDAwMA0KICAgTG9hZGluZyBLZXJuZWwgSW1hZ2UgLi4uIE9L
DQpPSw0KICAgcmVzZXJ2aW5nIGZkdCBtZW1vcnkgcmVnaW9uOiBhZGRyPTgyNWYwMDAwIHNp
emU9ZDAwMA0KICAgTG9hZGluZyBEZXZpY2UgVHJlZSB0byBmZWVlZjAwMCwgZW5kIGZlZWZl
ZmZmIC4uLiBPSw0KDQpTdGFydGluZyBrZXJuZWwgLi4uDQoNCi0gVUFSVCBlbmFibGVkIC0N
Ci0gQ1BVIDAwMDAwMDAwIGJvb3RpbmcgLQ0KLSBYZW4gc3RhcnRpbmcgaW4gSHlwIG1vZGUg
LQ0KLSBaZXJvIEJTUyAtDQotIFNldHRpbmcgdXAgY29udHJvbCByZWdpc3RlcnMgLQ0KLSBU
dXJuaW5nIG9uIHBhZ2luZyAtDQotIFJlYWR5IC0NCihYRU4pIENoZWNraW5nIGZvciBpbml0
cmQgaW4gL2Nob3Nlbg0KKFhFTikgUkFNOiAwMDAwMDAwMDgwMDAwMDAwIC0gMDAwMDAwMDBm
ZWZmZmZmZg0KKFhFTikNCihYRU4pIE1PRFVMRVswXTogMDAwMDAwMDBmZWVlZjAwMCAtIDAw
MDAwMDAwZmVlZmYwMDAgRGV2aWNlIFRyZWUNCihYRU4pIE1PRFVMRVsxXTogMDAwMDAwMDBh
MDAwMDAwMCAtIDAwMDAwMDAwYTBhMDAwMDAgS2VybmVsDQooWEVOKSAgUkVTVkRbMF06IDAw
MDAwMDAwODI1ZjAwMDAgLSAwMDAwMDAwMDgyNWZkMDAwDQooWEVOKQ0KKFhFTikgQ29tbWFu
ZCBsaW5lOiBkb20wX21lbT0xMjhNIGxvZ2x2bD1hbGwgZ3Vlc3RfbG9nbHZsPWFsbCBzeW5j
X2NvbnNvbGUgY29uc29sZT1kdHVhcnQgZHR1YXJ0PXNlcmlhbDINCihYRU4pIFBsYWNpbmcg
WGVuIGF0IDB4MDAwMDAwMDBmZWMwMDAwMC0weDAwMDAwMDAwZmVlMDAwMDANCihYRU4pIFVw
ZGF0ZSBCT09UTU9EX1hFTiBmcm9tIDAwMDAwMDAwODAyMDAwMDAtMDAwMDAwMDA4MDJmMTY4
MSA9PiAwMDAwMDAwMGZlYzAwMDAwLTAwMDAwMDAwZmVjZjE2ODENCihYRU4pIFhlbiBoZWFw
OiAwMDAwMDAwMGVlMDAwMDAwLTAwMDAwMDAwZmUwMDAwMDAgKDY1NTM2IHBhZ2VzKQ0KKFhF
TikgRG9tIGhlYXA6IDQ1NDY1NiBwYWdlcw0KKFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlz
ZWQNCihYRU4pIExvb2tpbmcgZm9yIFVBUlQgY29uc29sZSBzZXJpYWwyDQogWGVuIDQuNS11
bnN0YWJsZQ0KKFhFTikgWGVuIHZlcnNpb24gNC41LXVuc3RhYmxlIChhcmx4QCkgKGFybS1s
aW51eC1nbnVlYWJpLWdjYyAoVWJ1bnR1L0xpbmFybyA0LjcuMy0xMnVidW50dTEpIDQuNy4z
KSBkZWJ1Zz15IEZyaSBTZXAgMTIgMTI6MTQ6NDkgRURUIDIwMTQNCihYRU4pIExhdGVzdCBD
aGFuZ2VTZXQ6IFdlZCBTZXAgMTAgMTY6NDM6MTYgMjAxNCArMDEwMCBnaXQ6Y2M2OTQwYg0K
KFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25vdXMuDQooWEVOKSBQcm9jZXNzb3I6
IDQxMmZjMGYyOiAiQVJNIExpbWl0ZWQiLCB2YXJpYW50OiAweDIsIHBhcnQgMHhjMGYsIHJl
diAweDINCihYRU4pIDMyLWJpdCBFeGVjdXRpb246DQooWEVOKSAgIFByb2Nlc3NvciBGZWF0
dXJlczogMDAwMDExMzE6MDAwMTEwMTENCihYRU4pICAgICBJbnN0cnVjdGlvbiBTZXRzOiBB
QXJjaDMyIFRodW1iIFRodW1iLTIgVGh1bWJFRSBKYXplbGxlDQooWEVOKSAgICAgRXh0ZW5z
aW9uczogR2VuZXJpY1RpbWVyIFNlY3VyaXR5DQooWEVOKSAgIERlYnVnIEZlYXR1cmVzOiAw
MjAxMDU1NQ0KKFhFTikgICBBdXhpbGlhcnkgRmVhdHVyZXM6IDAwMDAwMDAwDQooWEVOKSAg
IE1lbW9yeSBNb2RlbCBGZWF0dXJlczogMTAyMDExMDUgMjAwMDAwMDAgMDEyNDAwMDAgMDIx
MDIyMTENCihYRU4pICBJU0EgRmVhdHVyZXM6IDAyMTAxMTEwIDEzMTEyMTExIDIxMjMyMDQx
IDExMTEyMTMxIDEwMDExMTQyIDAwMDAwMDAwDQooWEVOKSBQbGF0Zm9ybTogVEkgT01BUDUN
CihYRU4pIFNldCBBdXhDb3JlQm9vdDEgdG8gMDAwMDAwMDBmZWMwMDA0YyAoMDAyMDAwNGMp
DQooWEVOKSBTZXQgQXV4Q29yZUJvb3QwIHRvIDB4MjANCihYRU4pIEdlbmVyaWMgVGltZXIg
SVJROiBwaHlzPTMwIGh5cD0yNiB2aXJ0PTI3DQooWEVOKSBVc2luZyBnZW5lcmljIHRpbWVy
IGF0IDYxNDQgS0h6DQooWEVOKSBHSUN2MiBpbml0aWFsaXphdGlvbjoNCihYRU4pICAgICAg
ICAgZ2ljX2Rpc3RfYWRkcj0wMDAwMDAwMDQ4MjExMDAwDQooWEVOKSAgICAgICAgIGdpY19j
cHVfYWRkcj0wMDAwMDAwMDQ4MjEyMDAwDQooWEVOKSAgICAgICAgIGdpY19oeXBfYWRkcj0w
MDAwMDAwMDQ4MjE0MDAwDQooWEVOKSAgICAgICAgIGdpY192Y3B1X2FkZHI9MDAwMDAwMDA0
ODIxNjAwMA0KKFhFTikgICAgICAgICBnaWNfbWFpbnRlbmFuY2VfaXJxPTI1DQooWEVOKSBH
SUN2MjogMTkyIGxpbmVzLCAyIGNwdXMsIHNlY3VyZSAoSUlEIDAwMDAwNDNiKS4NCihYRU4p
IFVzaW5nIHNjaGVkdWxlcjogU01QIENyZWRpdCBTY2hlZHVsZXIgKGNyZWRpdCkNCihYRU4p
IEkvTyB2aXJ0dWFsaXNhdGlvbiBkaXNhYmxlZA0KKFhFTikgQWxsb2NhdGVkIGNvbnNvbGUg
cmluZyBvZiAxNiBLaUIuDQooWEVOKSBWRlAgaW1wbGVtZW50ZXIgMHg0MSBhcmNoaXRlY3R1
cmUgNCBwYXJ0IDB4MzAgdmFyaWFudCAweGYgcmV2IDB4MA0KKFhFTikgQnJpbmdpbmcgdXAg
Q1BVMQ0KLSBDUFUgMDAwMDAwMDEgYm9vdGluZyAtDQotIFhlbiBzdGFydGluZyBpbiBIeXAg
bW9kZSAtDQotIFNldHRpbmcgdXAgY29udHJvbCByZWdpc3RlcnMgLQ0KLSBUdXJuaW5nIG9u
IHBhZ2luZyAtDQotIFJlYWR5IC0NCihYRU4pIENQVSAxIGJvb3RlZC4NCihYRU4pIEJyb3Vn
aHQgdXAgMiBDUFVzDQooWEVOKSAqKiogTE9BRElORyBET01BSU4gMCAqKioNCihYRU4pIExv
YWRpbmcga2VybmVsIGZyb20gYm9vdCBtb2R1bGUgQCAwMDAwMDAwMGEwMDAwMDAwDQooWEVO
KSBBbGxvY2F0aW5nIDE6MSBtYXBwaW5ncyB0b3RhbGxpbmcgMTI4TUIgZm9yIGRvbTA6DQoo
WEVOKSBCQU5LWzBdIDB4MDAwMDAwYTgwMDAwMDAtMHgwMDAwMDBiMDAwMDAwMCAoMTI4TUIp
DQooWEVOKSBMb2FkaW5nIHpJbWFnZSBmcm9tIDAwMDAwMDAwYTAwMDAwMDAgdG8gMDAwMDAw
MDBhZmEwMDAwMC0wMDAwMDAwMGFmZTcwYjEwDQooWEVOKSBMb2FkaW5nIGRvbTAgRFRCIHRv
IDB4MDAwMDAwMDBhZjgwMDAwMC0weDAwMDAwMDAwYWY4MGMxNzkNCihYRU4pIFNjcnViYmlu
ZyBGcmVlIFJBTSBvbiAxIG5vZGVzIHVzaW5nIDIgQ1BVcw0KKFhFTikgLi4uLi4uLi5kb25l
Lg0KKFhFTikgSW5pdGlhbCBsb3cgbWVtb3J5IHZpcnEgdGhyZXNob2xkIHNldCBhdCAweDQw
MDAgcGFnZXMuDQooWEVOKSBTdGQuIExvZ2xldmVsOiBBbGwNCihYRU4pIEd1ZXN0IExvZ2xl
dmVsOiBBbGwNCihYRU4pICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCihYRU4pICoqKioqKiogV0FSTklORzogQ09OU09MRSBPVVRQVVQgSVMgU1lO
Q0hST05PVVMNCihYRU4pICoqKioqKiogVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYWlk
IGRlYnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcNCihYRU4pICoqKioqKiogdGhhdCBhbGwg
b3V0cHV0IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwgbGluZS4N
CihYRU4pICoqKioqKiogSG93ZXZlciBpdCBjYW4gaW50cm9kdWNlIFNJR05JRklDQU5UIGxh
dGVuY2llcyBhbmQgYWZmZWN0DQooWEVOKSAqKioqKioqIHRpbWVrZWVwaW5nLiBJdCBpcyBO
T1QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNlIQ0KKFhFTikgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKFhFTikgMy4uLiAyLi4uIDEu
Li4NCihYRU4pICoqKiBTZXJpYWwgaW5wdXQgLT4gRE9NMCAodHlwZSAnQ1RSTC1hJyB0aHJl
ZSB0aW1lcyB0byBzd2l0Y2ggaW5wdXQgdG8gWGVuKQ0KKFhFTikgRnJlZWQgMjU2a0IgaW5p
dCBtZW1vcnkuDQo2Qm9vdGluZyBMaW51eCBvbiBwaHlzaWNhbCBDUFUgMHgwDQo2SW5pdGlh
bGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0DQo2SW5pdGlhbGl6aW5nIGNncm91cCBzdWJz
eXMgY3B1DQo2SW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1YWNjdA0KNUxpbnV4IHZl
cnNpb24gMy4xNy4wLXJjNC1hcm12Ny1scGFlLXg1IChhcmx4QGFybHgtNTgpIChnY2MgdmVy
c2lvbiA0LjguMyAyMDE0MDQwMSAocHJlcmVsZWFzZSkgKGNyb3NzdG9vbC1ORyBsaW5hcm8t
MS4xMy4xLTQuOC0yMDE0LjA0IC0gTGluYXJvIEdDQyA0LjgtMjAxNC4wNCkgKSAjMTEgU01Q
IE1vbiBTZXAgMjIgMTY6MTE6MTIgRURUIDIwMTQNCjZDUFU6IEFSTXY3IFByb2Nlc3NvciBb
NDEyZmMwZjJdIHJldmlzaW9uIDIgKEFSTXY3KSwgY3I9MzBjNTM4N2QNCjZDUFU6IFBJUFQg
LyBWSVBUIG5vbmFsaWFzaW5nIGRhdGEgY2FjaGUsIFBJUFQgaW5zdHJ1Y3Rpb24gY2FjaGUN
CjZNYWNoaW5lIG1vZGVsOiBUSSBPTUFQNSB1RVZNIGJvYXJkDQo0Rm9yY2luZyB3cml0ZS1h
bGxvY2F0ZSBjYWNoZSBwb2xpY3kgZm9yIFNNUA0KNk1lbW9yeSBwb2xpY3k6IERhdGEgY2Fj
aGUgd3JpdGVhbGxvYw0KN09uIG5vZGUgMCB0b3RhbHBhZ2VzOiAzMjI1Ng0KN2ZyZWVfYXJl
YV9pbml0X25vZGU6IG5vZGUgMCwgcGdkYXQgYzBkMDViNDAsIG5vZGVfbWVtX21hcCBjN2Nm
ODAwMA0KNyAgTm9ybWFsIHpvbmU6IDI1NiBwYWdlcyB1c2VkIGZvciBtZW1tYXANCjcgIE5v
cm1hbCB6b25lOiAwIHBhZ2VzIHJlc2VydmVkDQo3ICBOb3JtYWwgem9uZTogMzIyNTYgcGFn
ZXMsIExJRk8gYmF0Y2g6Nw0KNCAgSGlnaE1lbSB6b25lOiAxMDQ4NTcyIHBhZ2VzIGV4Y2Vl
ZHMgZnJlZXNpemUgMA0KNnBzY2k6IHByb2JpbmcgZm9yIGNvbmR1aXQgbWV0aG9kIGZyb20g
RFQuDQo2cHNjaTogUFNDSXYwLjIgZGV0ZWN0ZWQgaW4gZmlybXdhcmUuDQo2cHNjaTogVXNp
bmcgc3RhbmRhcmQgUFNDSSB2MC4yIGZ1bmN0aW9uIElEcw0KNk9NQVA1NDMyIEVTMi4wDQo2
UEVSQ1BVOiBFbWJlZGRlZCA5IHBhZ2VzL2NwdSBAYzdjYWUwMDAgczE0NDY0IHI4MTkyIGQx
NDIwOCB1MzY4NjQNCjdwY3B1LWFsbG9jOiBzMTQ0NjQgcjgxOTIgZDE0MjA4IHUzNjg2NCBh
bGxvYz05KjQwOTYNCjdwY3B1LWFsbG9jOiBbMF0gMCBbMF0gMQ0KQnVpbHQgMSB6b25lbGlz
dHMgaW4gWm9uZSBvcmRlciwgbW9iaWxpdHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdlczog
MzIwMDANCjVLZXJuZWwgY29tbWFuZCBsaW5lOiBjb25zb2xlPWh2YzAsMTE1MjAwbjggZWFy
bHlwcmludGs9eGVuIGRlYnVnIGxvZ2xldmVsPTggcm9vdD0vZGV2L21tY2JsazBwMiBydyBy
b290d2FpdCBmaXhydGMNCjZQSUQgaGFzaCB0YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVyOiAt
MSwgMjA0OCBieXRlcykNCjZEZW50cnkgY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAxNjM4
NCAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQ0KNklub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50
cmllczogODE5MiAob3JkZXI6IDMsIDMyNzY4IGJ5dGVzKQ0KNmFsbG9jYXRlZCAyNTgwNDgg
Ynl0ZXMgb2YgcGFnZV9jZ3JvdXANCjZwbGVhc2UgdHJ5ICdjZ3JvdXBfZGlzYWJsZT1tZW1v
cnknIG9wdGlvbiBpZiB5b3UgZG9uJ3Qgd2FudCBtZW1vcnkgY2dyb3Vwcw0KTWVtb3J5OiAx
MTI5MzZLLzEyOTAyNEsgYXZhaWxhYmxlICg4Nzc3SyBrZXJuZWwgY29kZSwgNjQ1SyByd2Rh
dGEsIDM0MzJLIHJvZGF0YSwgNTM4SyBpbml0LCA5MThLIGJzcywgMTYwODhLIHJlc2VydmVk
LCAwSyBoaWdobWVtKQ0KNVZpcnR1YWwga2VybmVsIG1lbW9yeSBsYXlvdXQ6DQogICAgdmVj
dG9yICA6IDB4ZmZmZjAwMDAgLSAweGZmZmYxMDAwICAgKCAgIDQga0IpDQogICAgZml4bWFw
ICA6IDB4ZmZjMDAwMDAgLSAweGZmZTAwMDAwICAgKDIwNDgga0IpDQogICAgdm1hbGxvYyA6
IDB4Yzg4MDAwMDAgLSAweGZmMDAwMDAwICAgKCA4NzIgTUIpDQogICAgbG93bWVtICA6IDB4
YzAwMDAwMDAgLSAweGM4MDAwMDAwICAgKCAxMjggTUIpDQogICAgcGttYXAgICA6IDB4YmZl
MDAwMDAgLSAweGMwMDAwMDAwICAgKCAgIDIgTUIpDQogICAgbW9kdWxlcyA6IDB4YmYwMDAw
MDAgLSAweGJmZTAwMDAwICAgKCAgMTQgTUIpDQogICAgICAudGV4dCA6IDB4YzAwMDgwMDAg
LSAweGMwYmY0OTY0ICAgKDEyMjExIGtCKQ0KICAgICAgLmluaXQgOiAweGMwYmY1MDAwIC0g
MHhjMGM3Yjg4MCAgICggNTM5IGtCKQ0KICAgICAgLmRhdGEgOiAweGMwYzdjMDAwIC0gMHhj
MGQxZDQ2MCAgICggNjQ2IGtCKQ0KICAgICAgIC5ic3MgOiAweGMwZDFkNDYwIC0gMDZTTFVC
OiBIV2FsaWduPTY0LCBPcmRlcj0wLTMsIE1pbk9iamVjdHM9MCwgQ1BVcz0yLCBOb2Rlcz0x
DQo2SGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRhdGlvbi4NCjYgICAgICAgUkNVIGR5bnRp
Y2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9uIGlzIGVuYWJsZWQuDQo2ICAgICAg
IFJDVSByZXN0cmljdGluZyBDUFVzIGZyb20gTlJfQ1BVUz00IHRvIG5yX2NwdV9pZHM9Mi4N
CjZSQ1U6IEFkanVzdGluZyBnZW9tZXRyeSBmb3IgcmN1X2Zhbm91dF9sZWFmPTE2LCBucl9j
cHVfaWRzPTINCjZOUl9JUlFTOjE2IG5yX2lycXM6MTYgMTYNCjZPTUFQIGNsb2NrZXZlbnQg
c291cmNlOiB0aW1lcjEgYXQgMzI3NjggSHoNCjZzY2hlZF9jbG9jazogMzIgYml0cyBhdCAz
MmtIeiwgcmVzb2x1dGlvbiAzMDUxN25zLCB3cmFwcyBldmVyeSA2NTUzNjAwMDAwMDAwMG5z
DQo2T01BUCBjbG9ja3NvdXJjZTogMzJrX2NvdW50ZXIgYXQgMzI3NjggSHoNCjZBcmNoaXRl
Y3RlZCBjcDE1IHRpbWVyKHMpIHJ1bm5pbmcgYXQgNi4xNE1IeiAodmlydCkuDQo2c2NoZWRf
Y2xvY2s6IDU2IGJpdHMgYXQgNk1IeiwgcmVzb2x1dGlvbiAxNjJucywgd3JhcHMgZXZlcnkg
Mjc5NjIwMjY2MzkzNm5zDQo2U3dpdGNoaW5nIHRvIHRpbWVyLWJhc2VkIGRlbGF5IGxvb3As
IHJlc29sdXRpb24gMTYybnMNCjZDb25zb2xlOiBjb2xvdXIgZHVtbXkgZGV2aWNlIDgweDMw
DQo2Q2FsaWJyYXRpbmcgZGVsYXkgbG9vcCAoc2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQg
dXNpbmcgdGltZXIgZnJlcXVlbmN5Li4gMTIuMjggQm9nb01JUFMgKGxwaj02MTQ0MCkNCjZw
aWRfbWF4OiBkZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDENCjZTZWN1cml0eSBGcmFtZXdv
cmsgaW5pdGlhbGl6ZWQNCjZBcHBBcm1vcjogQXBwQXJtb3IgZGlzYWJsZWQgYnkgYm9vdCB0
aW1lIHBhcmFtZXRlcg0KNllhbWE6IGJlY29taW5nIG1pbmRmdWwuDQo2TW91bnQtY2FjaGUg
aGFzaCB0YWJsZSBlbnRyaWVzOiAxMDI0IChvcmRlcjogMCwgNDA5NiBieXRlcykNCjZNb3Vu
dHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDAsIDQwOTYg
Ynl0ZXMpDQo2SW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgbWVtb3J5DQo2SW5pdGlhbGl6
aW5nIGNncm91cCBzdWJzeXMgZGV2aWNlcw0KNkluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lz
IGZyZWV6ZXINCjZJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBuZXRfY2xzDQo2SW5pdGlh
bGl6aW5nIGNncm91cCBzdWJzeXMgYmxraW8NCjZDUFU6IFRlc3Rpbmcgd3JpdGUgYnVmZmVy
IGNvaGVyZW5jeTogb2sNCjMvY3B1cy9jcHVAMCBtaXNzaW5nIGNsb2NrLWZyZXF1ZW5jeSBw
cm9wZXJ0eQ0KMy9jcHVzL2NwdUAxIG1pc3NpbmcgY2xvY2stZnJlcXVlbmN5IHByb3BlcnR5
DQo2Q1BVMDogdGhyZWFkIC0xLCBjcHUgMCwgc29ja2V0IDAsIG1waWRyIDgwMDAwMDAwDQo2
WGVuIDQuNSBzdXBwb3J0IGZvdW5kLCBldmVudHNfaXJxPTMxIGdudHRhYl9mcmFtZT0weDAw
MDAwMDAwNGIwMDAwMDANCjZ4ZW46Z3JhbnRfdGFibGU6IEdyYW50IHRhYmxlcyB1c2luZyB2
ZXJzaW9uIDEgbGF5b3V0DQpHcmFudCB0YWJsZSBpbml0aWFsaXplZA0KNnhlbjpldmVudHM6
IFVzaW5nIEZJRk8tYmFzZWQgQUJJDQo2WGVuOiBpbml0aWFsaXppbmcgY3B1MA0KNlNldHRp
bmcgdXAgc3RhdGljIGlkZW50aXR5IG1hcCBmb3IgMHhhODg1ODcwMCAtIDB4YTg4NTg3OTgN
CkNQVTE6IEJvb3RlZCBzZWNvbmRhcnkgcHJvY2Vzc29yDQo2WGVuOiBpbml0aWFsaXppbmcg
Y3B1MQ0KNkNQVTE6IHRocmVhZCAtMSwgY3B1IDEsIHNvY2tldCAwLCBtcGlkciA4MDAwMDAw
MQ0KNkJyb3VnaHQgdXAgMiBDUFVzDQo2U01QOiBUb3RhbCBvZiAyIHByb2Nlc3NvcnMgYWN0
aXZhdGVkLg0KNkNQVTogQWxsIENQVShzKSBzdGFydGVkIGluIFNWQyBtb2RlLg0KNmRldnRt
cGZzOiBpbml0aWFsaXplZA0KNlZGUCBzdXBwb3J0IHYwLjM6IGltcGxlbWVudG9yIDQxIGFy
Y2hpdGVjdHVyZSA0IHBhcnQgMzAgdmFyaWFudCBmIHJldiAwDQo0b21hcF9od21vZDogbDNf
bWFpbl8zIHVzaW5nIGJyb2tlbiBkdCBkYXRhIGZyb20gb2NwDQo0b21hcF9od21vZDogbDNf
bWFpbl8yIHVzaW5nIGJyb2tlbiBkdCBkYXRhIGZyb20gb2NwDQo0LS0tLS0tLS0tLS0tWyBj
dXQgaGVyZSBdLS0tLS0tLS0tLS0tDQo0V0FSTklORzogQ1BVOiAwIFBJRDogMSBhdCBhcmNo
L2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzoyNTQyIF9pbml0KzB4NGNjLzB4NGRjKCkN
CmRNb2R1bGVzIGxpbmtlZCBpbjoNCmRDUFU6IDAgUElEOiAxIENvbW06IHN3YXBwZXIvMCBO
b3QgdGFpbnRlZCAzLjE3LjAtcmM0LWFybXY3LWxwYWUteDUgIzExDQpbPGMwMDI2OWMwPl0g
KHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDAyMmQwYz5dIChzaG93X3N0YWNrKzB4MTAv
MHgxNCkNCls8YzAwMjJkMGM+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwODUwY2E0Pl0gKGR1
bXBfc3RhY2srMHg4NC8weDk0KQ0KWzxjMDg1MGNhND5dIChkdW1wX3N0YWNrKSBmcm9tIFs8
YzAwNGNmMjA+XSAod2Fybl9zbG93cGF0aF9jb21tb24rMHg3MC8weDhjKQ0KWzxjMDA0Y2Yy
MD5dICh3YXJuX3Nsb3dwYXRoX2NvbW1vbikgZnJvbSBbPGMwMDRjZjZjPl0gKHdhcm5fc2xv
d3BhdGhfZm10KzB4MzAvMHg0MCkNCls8YzAwNGNmNmM+XSAod2Fybl9zbG93cGF0aF9mbXQp
IGZyb20gWzxjMGMwMWI0MD5dIChfaW5pdCsweDRjYy8weDRkYykNCls8YzBjMDFiNDA+XSAo
X2luaXQpIGZyb20gWzxjMGMwMjFhMD5dIChfX29tYXBfaHdtb2Rfc2V0dXBfYWxsKzB4NDQv
MHg4YykNCls8YzBjMDIxYTA+XSAoX19vbWFwX2h3bW9kX3NldHVwX2FsbCkgZnJvbSBbPGMw
MDA4OTFjPl0gKGRvX29uZV9pbml0Y2FsbCsweGQ4LzB4MjA0KQ0KWzxjMDAwODkxYz5dIChk
b19vbmVfaW5pdGNhbGwpIGZyb20gWzxjMGJmNWUzOD5dIChrZXJuZWxfaW5pdF9mcmVlYWJs
ZSsweDFlMC8weDI4MCkNCls8YzBiZjVlMzg+XSAoa2VybmVsX2luaXRfZnJlZWFibGUpIGZy
b20gWzxjMDg0YWI5OD5dIChrZXJuZWxfaW5pdCsweGMvMHhlOCkNCls8YzA4NGFiOTg+XSAo
a2VybmVsX2luaXQpIGZyb20gWzxjMDAxZjg5OD5dIChyZXRfZnJvbV9mb3JrKzB4MTQvMHgz
YykNCjQtLS1bIGVuZCB0cmFjZSA2MzM4Nzg5ZWI1YTUzMmVmIF0tLS0NCjQtLS0tLS0tLS0t
LS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0NCjRXQVJOSU5HOiBDUFU6IDAgUElEOiAxIGF0
IGFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjI1NDIgX2luaXQrMHg0Y2MvMHg0
ZGMoKQ0KZE1vZHVsZXMgbGlua2VkIGluOg0KZENQVTogMCBQSUQ6IDEgQ29tbTogc3dhcHBl
ci8wIFRhaW50ZWQ6IEcgICAgICAgIFcgICAgICAzLjE3LjAtcmM0LWFybXY3LWxwYWUteDUg
IzExDQpbPGMwMDI2OWMwPl0gKHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDAyMmQwYz5d
IChzaG93X3N0YWNrKzB4MTAvMHgxNCkNCls8YzAwMjJkMGM+XSAoc2hvd19zdGFjaykgZnJv
bSBbPGMwODUwY2E0Pl0gKGR1bXBfc3RhY2srMHg4NC8weDk0KQ0KWzxjMDg1MGNhND5dIChk
dW1wX3N0YWNrKSBmcm9tIFs8YzAwNGNmMjA+XSAod2Fybl9zbG93cGF0aF9jb21tb24rMHg3
MC8weDhjKQ0KWzxjMDA0Y2YyMD5dICh3YXJuX3Nsb3dwYXRoX2NvbW1vbikgZnJvbSBbPGMw
MDRjZjZjPl0gKHdhcm5fc2xvd3BhdGhfZm10KzB4MzAvMHg0MCkNCls8YzAwNGNmNmM+XSAo
d2Fybl9zbG93cGF0aF9mbXQpIGZyb20gWzxjMGMwMWI0MD5dIChfaW5pdCsweDRjYy8weDRk
YykNCls8YzBjMDFiNDA+XSAoX2luaXQpIGZyb20gWzxjMGMwMjFhMD5dIChfX29tYXBfaHdt
b2Rfc2V0dXBfYWxsKzB4NDQvMHg4YykNCls8YzBjMDIxYTA+XSAoX19vbWFwX2h3bW9kX3Nl
dHVwX2FsbCkgZnJvbSBbPGMwMDA4OTFjPl0gKGRvX29uZV9pbml0Y2FsbCsweGQ4LzB4MjA0
KQ0KWzxjMDAwODkxYz5dIChkb19vbmVfaW5pdGNhbGwpIGZyb20gWzxjMGJmNWUzOD5dIChr
ZXJuZWxfaW5pdF9mcmVlYWJsZSsweDFlMC8weDI4MCkNCls8YzBiZjVlMzg+XSAoa2VybmVs
X2luaXRfZnJlZWFibGUpIGZyb20gWzxjMDg0YWI5OD5dIChrZXJuZWxfaW5pdCsweGMvMHhl
OCkNCls8YzA4NGFiOTg+XSAoa2VybmVsX2luaXQpIGZyb20gWzxjMDAxZjg5OD5dIChyZXRf
ZnJvbV9mb3JrKzB4MTQvMHgzYykNCjQtLS1bIGVuZCB0cmFjZSA2MzM4Nzg5ZWI1YTUzMmYw
IF0tLS0NCjRvbWFwX2h3bW9kOiBkc3NfZGlzcGM6IGNhbm5vdCBiZSBlbmFibGVkIGZvciBy
ZXNldCAoMykNCjRvbWFwX2h3bW9kOiBkc3NfZHNpMTogY2Fubm90IGJlIGVuYWJsZWQgZm9y
IHJlc2V0ICgzKQ0KNG9tYXBfaHdtb2Q6IGRzc19kc2kyOiBjYW5ub3QgYmUgZW5hYmxlZCBm
b3IgcmVzZXQgKDMpDQo0b21hcF9od21vZDogZHNzX2hkbWk6IGNhbm5vdCBiZSBlbmFibGVk
IGZvciByZXNldCAoMykNCjZ4b3I6IG1lYXN1cmluZyBzb2Z0d2FyZSBjaGVja3N1bSBzcGVl
ZA0KNiAgIGFybTRyZWdzICA6ICAxODAzLjIwMCBNQi9zZWMNCjYgICA4cmVncyAgICAgOiAg
MTE4MC44MDAgTUIvc2VjDQo2ICAgMzJyZWdzICAgIDogIDEyMDQuMDAwIE1CL3NlYw0KNiAg
IG5lb24gICAgICA6ICAyODczLjYwMCBNQi9zZWMNCjZ4b3I6IHVzaW5nIGZ1bmN0aW9uOiBu
ZW9uICgyODczLjYwMCBNQi9zZWMpDQo2cGluY3RybCBjb3JlOiBpbml0aWFsaXplZCBwaW5j
dHJsIHN1YnN5c3RlbQ0KNnJlZ3VsYXRvci1kdW1teTogbm8gcGFyYW1ldGVycw0KNk5FVDog
UmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTYNCjZETUE6IHByZWFsbG9jYXRlZCAyNTYg
S2lCIHBvb2wgZm9yIGF0b21pYyBjb2hlcmVudCBhbGxvY2F0aW9ucw0KNHhlbjpzd2lvdGxi
X3hlbjogV2FybmluZzogb25seSBhYmxlIHRvIGFsbG9jYXRlIDQgTUIgZm9yIHNvZnR3YXJl
IElPIFRMQg0KNnNvZnR3YXJlIElPIFRMQiBbbWVtIDB4YWVjMDAwMDAtMHhhZjAwMDAwMF0g
KDRNQikgbWFwcGVkIGF0IFtjNmMwMDAwMC1jNmZmZmZmZl0NCjZPTUFQIEdQSU8gaGFyZHdh
cmUgdmVyc2lvbiAwLjENCjZObyBBVEFHcz82T01BUCBETUEgaGFyZHdhcmUgcmV2aXNpb24g
MC4wDQpyYWlkNjogaW50MzJ4MSAgICAxNjQgTUIvcw0KcmFpZDY6IGludDMyeDIgICAgMjM5
IE1CL3MNCnJhaWQ2OiBpbnQzMng0ICAgIDI4MCBNQi9zDQpyYWlkNjogaW50MzJ4OCAgICAy
OTcgTUIvcw0KcmFpZDY6IG5lb254MSAgICAgNjg0IE1CL3MNCnJhaWQ2OiBuZW9ueDIgICAg
MTA2MCBNQi9zDQpyYWlkNjogbmVvbng0ICAgIDE1MDkgTUIvcw0KcmFpZDY6IG5lb254OCAg
ICAxMzgxIE1CL3MNCnJhaWQ2OiB1c2luZyBhbGdvcml0aG0gbmVvbng0ICgxNTA5IE1CL3Mp
DQpyYWlkNjogdXNpbmcgaW50eDEgcmVjb3ZlcnkgYWxnb3JpdGhtDQo0ZWRtYS1kbWEtZW5n
aW5lOiBwcm9iZSBvZiBlZG1hLWRtYS1lbmdpbmUuMCBmYWlsZWQgd2l0aCBlcnJvciAtMjIN
CjZ4ZW46YmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24gZHJpdmVyDQo2eGVuX2JhbGxv
b246IEluaXRpYWxpc2luZyBiYWxsb29uIGRyaXZlcg0KNnZtbWNzZF9maXhlZDogMzAwMCBt
Vg0KNVNDU0kgc3Vic3lzdGVtIGluaXRpYWxpemVkDQo3bGliYXRhIHZlcnNpb24gMy4wMCBs
b2FkZWQuDQo2dXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Jm
cw0KNnVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgaHViDQo2dXNi
Y29yZTogcmVnaXN0ZXJlZCBuZXcgZGV2aWNlIGRyaXZlciB1c2INCjRoc3VzYjJfcGh5IHN1
cHBseSB2Y2Mgbm90IGZvdW5kLCB1c2luZyBkdW1teSByZWd1bGF0b3INCjRoc3VzYjNfcGh5
IHN1cHBseSB2Y2Mgbm90IGZvdW5kLCB1c2luZyBkdW1teSByZWd1bGF0b3INCjZtZWRpYTog
TGludXggbWVkaWEgaW50ZXJmYWNlOiB2MC4xMA0KNkxpbnV4IHZpZGVvIGNhcHR1cmUgaW50
ZXJmYWNlOiB2Mi4wMA0KNnBwc19jb3JlOiBMaW51eFBQUyBBUEkgdmVyLiAxIHJlZ2lzdGVy
ZWQNCjZwcHNfY29yZTogU29mdHdhcmUgdmVyLiA1LjMuNiAtIENvcHlyaWdodCAyMDA1LTIw
MDcgUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+DQo2UFRQIGNsb2NrIHN1
cHBvcnQgcmVnaXN0ZXJlZA0KNk5ldExhYmVsOiBJbml0aWFsaXppbmcNCjZOZXRMYWJlbDog
IGRvbWFpbiBoYXNoIHNpemUgPSAxMjgNCjZOZXRMYWJlbDogIHByb3RvY29scyA9IFVOTEFC
RUxFRCBDSVBTT3Y0DQo2TmV0TGFiZWw6ICB1bmxhYmVsZWQgdHJhZmZpYyBhbGxvd2VkIGJ5
IGRlZmF1bHQNCjZTd2l0Y2hlZCB0byBjbG9ja3NvdXJjZSBhcmNoX3N5c19jb3VudGVyDQoz
L3RoZXJtYWwtem9uZXMvY3B1X3RoZXJtYWwvY29vbGluZy1tYXBzL21hcDA6IGNvdWxkIG5v
dCBmaW5kIHBoYW5kbGUNCjNtaXNzaW5nIGNvb2xpbmdfZGV2aWNlIHByb3BlcnR5DQozZmFp
bGVkIHRvIGJ1aWxkIHRoZXJtYWwgem9uZSBjcHVfdGhlcm1hbDogLTIyDQo2TkVUOiBSZWdp
c3RlcmVkIHByb3RvY29sIGZhbWlseSAyDQo2VENQIGVzdGFibGlzaGVkIGhhc2ggdGFibGUg
ZW50cmllczogMTAyNCAob3JkZXI6IDAsIDQwOTYgYnl0ZXMpDQo2VENQIGJpbmQgaGFzaCB0
YWJsZSBlbnRyaWVzOiAxMDI0IChvcmRlcjogMSwgODE5MiBieXRlcykNCjZUQ1A6IEhhc2gg
dGFibGVzIGNvbmZpZ3VyZWQgKGVzdGFibGlzaGVkIDEwMjQgYmluZCAxMDI0KQ0KNlRDUDog
cmVubyByZWdpc3RlcmVkDQo2VURQIGhhc2ggdGFibGUgZW50cmllczogMjU2IChvcmRlcjog
MSwgODE5MiBieXRlcykNCjZVRFAtTGl0ZSBoYXNoIHRhYmxlIGVudHJpZXM6IDI1NiAob3Jk
ZXI6IDEsIDgxOTIgYnl0ZXMpDQo2TkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAx
DQo2UlBDOiBSZWdpc3RlcmVkIG5hbWVkIFVOSVggc29ja2V0IHRyYW5zcG9ydCBtb2R1bGUu
DQo2UlBDOiBSZWdpc3RlcmVkIHVkcCB0cmFuc3BvcnQgbW9kdWxlLg0KNlJQQzogUmVnaXN0
ZXJlZCB0Y3AgdHJhbnNwb3J0IG1vZHVsZS4NCjZSUEM6IFJlZ2lzdGVyZWQgdGNwIE5GU3Y0
LjEgYmFja2NoYW5uZWwgdHJhbnNwb3J0IG1vZHVsZS4NCjNrdm0gWzFdOiBIWVAgbW9kZSBu
b3QgYXZhaWxhYmxlDQo2ZnV0ZXggaGFzaCB0YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVyOiAz
LCAzMjc2OCBieXRlcykNCjZhdWRpdDogaW5pdGlhbGl6aW5nIG5ldGxpbmsgc3Vic3lzIChk
aXNhYmxlZCkNCjVhdWRpdDogdHlwZT0yMDAwIGF1ZGl0KDIuNTAwOjEpOiBpbml0aWFsaXpl
ZA0KNVZGUzogRGlzayBxdW90YXMgZHF1b3RfNi41LjINCkRxdW90LWNhY2hlIGhhc2ggdGFi
bGUgZW50cmllczogMTAyNCAob3JkZXIgMCwgNDA5NiBieXRlcykNCjVORlM6IFJlZ2lzdGVy
aW5nIHRoZSBpZF9yZXNvbHZlciBrZXkgdHlwZQ0KNUtleSB0eXBlIGlkX3Jlc29sdmVyIHJl
Z2lzdGVyZWQNCjVLZXkgdHlwZSBpZF9sZWdhY3kgcmVnaXN0ZXJlZA0KNm5mczRmaWxlbGF5
b3V0X2luaXQ6IE5GU3Y0IEZpbGUgTGF5b3V0IERyaXZlciBSZWdpc3RlcmluZy4uLg0KNmZ1
c2UgaW5pdCAoQVBJIHZlcnNpb24gNy4yMykNCjZTR0kgWEZTIHdpdGggQUNMcywgc2VjdXJp
dHkgYXR0cmlidXRlcywgcmVhbHRpbWUsIG5vIGRlYnVnIGVuYWJsZWQNCjZtc2dtbmkgaGFz
IGJlZW4gc2V0IHRvIDIyMA0KNkJsb2NrIGxheWVyIFNDU0kgZ2VuZXJpYyAoYnNnKSBkcml2
ZXIgdmVyc2lvbiAwLjQgbG9hZGVkIChtYWpvciAyNDkpDQo2aW8gc2NoZWR1bGVyIG5vb3Ag
cmVnaXN0ZXJlZA0KNmlvIHNjaGVkdWxlciBkZWFkbGluZSByZWdpc3RlcmVkDQo2aW8gc2No
ZWR1bGVyIGNmcSByZWdpc3RlcmVkIChkZWZhdWx0KQ0KNk9NQVAgRFNTIHJldiA2LjENCjZ4
ZW46eGVuX2V2dGNobjogRXZlbnQtY2hhbm5lbCBkZXZpY2UgaW5zdGFsbGVkDQo2cGJpYXNf
bW1jX29tYXA1OiAxODAwIDwtLT4gMzAwMCBtViBhdCAzMDAwIG1WDQo2YWJiX21wdTogMTA2
MCA8LS0+IDEyNTAgbVYNCjZhYmJfbW06IDEwMjUgPC0tPiAxMTIwIG1WDQpbICAgIDAuMTg3
Nzk2XSBvbWFwX2h3bW9kOiBkc3NfcmZiaTogZG9lc24ndCBoYXZlIG1wdSByZWdpc3RlciB0
YXJnZXQgYmFzZQ0KWyAgICAwLjI5NTk4N10gb21hcF9od21vZDogdWFydDM6IGRvZXNuJ3Qg
aGF2ZSBtcHUgcmVnaXN0ZXIgdGFyZ2V0IGJhc2UNClsgICAgMC45Mzc1OTRdIHBsYXRmb3Jt
IDUwMDAwMDAwLmdwbWM6IENhbm5vdCBsb29rdXAgaHdtb2QgJ2dwbWMnDQpbICAgIDAuOTM3
NjkxXSBvbWFwLWdwbWMgNTAwMDAwMDAuZ3BtYzogX29kX2ZhaWxfcnVudGltZV9yZXN1bWU6
IEZJWE1FOiBtaXNzaW5nIGh3bW9kL29tYXBfZGV2IGluZm8NClsgICAgMC45Mzc3MDVdIG9t
YXAtZ3BtYyA1MDAwMDAwMC5ncG1jOiBHUE1DIHJldmlzaW9uIDYuMA0KWyAgICAyLjM2OTQ4
Nl0gZWRtYS1kbWEtZW5naW5lIGVkbWEtZG1hLWVuZ2luZS4wOiBDYW4ndCBhbGxvY2F0ZSBQ
YVJBTSBkdW1teSBzbG90DQpbICAgIDIuMzg4MTAyXSBvbWFwLWRtYS1lbmdpbmUgNGEwNTYw
MDAuZG1hLWNvbnRyb2xsZXI6IE9NQVAgRE1BIGVuZ2luZSBkcml2ZXINClsgICAgMi40MzA3
MjJdIG9tYXBfaTJjIDQ4MDcwMDAwLmkyYzogY291bGQgbm90IGZpbmQgcGN0bGRldiBmb3Ig
bm9kZSAvb2NwL3Bpbm11eEA0YTAwMjg0MC9waW5tdXhfaTJjMV9waW5zLCBkZWZlcnJpbmcg
cHJvYmUNClsgICAgMi40MzA3MzhdIHBsYXRmb3JtIDQ4MDcwMDAwLmkyYzogRHJpdmVyIG9t
YXBfaTJjIHJlcXVlc3RzIHByb2JlIGRlZmVycmFsDQpbICAgIDIuNDMxMTQ1XSBvbWFwX2ky
YyA0ODA3MjAwMC5pMmM6IGJ1cyAxIHJldjAuMTIgYXQgMTAwIGtIeg0KWyAgICAyLjQzMTUx
OF0gb21hcF9pMmMgNDgwNjAwMDAuaTJjOiBidXMgMiByZXYwLjEyIGF0IDEwMCBrSHoNClsg
ICAgMi40MzE4ODZdIG9tYXBfaTJjIDQ4MDdhMDAwLmkyYzogYnVzIDMgcmV2MC4xMiBhdCAx
MDAga0h6DQpbICAgIDIuNDMxOTI5XSBvbWFwX2kyYyA0ODA3YzAwMC5pMmM6IGNvdWxkIG5v
dCBmaW5kIHBjdGxkZXYgZm9yIG5vZGUgL29jcC9waW5tdXhANGEwMDI4NDAvcGlubXV4X2ky
YzVfcGlucywgZGVmZXJyaW5nIHByb2JlDQpbICAgIDIuNDMxOTQzXSBwbGF0Zm9ybSA0ODA3
YzAwMC5pMmM6IERyaXZlciBvbWFwX2kyYyByZXF1ZXN0cyBwcm9iZSBkZWZlcnJhbA0KWyAg
ICAyLjQ1NDQxM10gb21hcC1pb21tdSA0YTA2NjAwMC5tbXU6IDRhMDY2MDAwLm1tdSByZWdp
c3RlcmVkDQpbICAgIDIuNDU0NTA2XSBvbWFwLWlvbW11IDU1MDgyMDAwLm1tdTogNTUwODIw
MDAubW11IHJlZ2lzdGVyZWQNClsgICAgMi42OTI0NDFdIHBpbmN0cmwtc2luZ2xlIDRhMDAy
ODQwLnBpbm11eDogMjE5IHBpbnMgYXQgcGEgZmMwMDI4NDAgc2l6ZSA0MzgNClsgICAgMi42
OTI2MjNdIHBpbmN0cmwtc2luZ2xlIDRhZTBjODQwLnBpbm11eDogMjggcGlucyBhdCBwYSBm
Y2UwYzg0MCBzaXplIDU2DQpbICAgIDIuNjk5MzkxXSB0cGQxMnMwMTUgZW5jb2RlckAwOiBm
YWlsZWQgdG8gcGFyc2UgQ1QgQ1AgSFBEIGdwaW8NClsgICAgMi42OTk0MTZdIHBsYXRmb3Jt
IGVuY29kZXJAMDogRHJpdmVyIHRwZDEyczAxNSByZXF1ZXN0cyBwcm9iZSBkZWZlcnJhbA0K
WyAgICAyLjY5OTg3NF0gY29ubmVjdG9yLWhkbWkgY29ubmVjdG9yQDA6IGZhaWxlZCB0byBm
aW5kIHZpZGVvIHNvdXJjZQ0KWyAgICAyLjY5OTg5Ml0gcGxhdGZvcm0gY29ubmVjdG9yQDA6
IERyaXZlciBjb25uZWN0b3ItaGRtaSByZXF1ZXN0cyBwcm9iZSBkZWZlcnJhbA0KNmNvbnNv
bGUgW2h2YzBdIGVuYWJsZWQNCjZTZXJpYWw6IDgyNTAvMTY1NTAgZHJpdmVyLCA0IHBvcnRz
LCBJUlEgc2hhcmluZyBkaXNhYmxlZA0KWyAgICAyLjg4MTAxNF0gb21hcF91YXJ0IDQ4MDZh
MDAwLnNlcmlhbDogbm8gd2FrZWlycSBmb3IgdWFydDANCjY0ODA2YTAwMC5zZXJpYWw6IHR0
eU8wIGF0IE1NSU8gMHg0ODA2YTAwMCAoaXJxID0gMTA0LCBiYXNlX2JhdWQgPSAzMDAwMDAw
KSBpcyBhIE9NQVAgVUFSVDANClsgICAgMi44OTUxNDZdIG9tYXBfdWFydCA0ODA2YzAwMC5z
ZXJpYWw6IG5vIHdha2VpcnEgZm9yIHVhcnQwDQo2NDgwNmMwMDAuc2VyaWFsOiB0dHlPMSBh
dCBNTUlPIDB4NDgwNmMwMDAgKGlycSA9IDEwNSwgYmFzZV9iYXVkID0gMzAwMDAwMCkgaXMg
YSBPTUFQIFVBUlQxDQpbICAgIDIuOTA5MjU2XSBvbWFwX3VhcnQgNDgwNmUwMDAuc2VyaWFs
OiBubyB3YWtlaXJxIGZvciB1YXJ0MA0KNjQ4MDZlMDAwLnNlcmlhbDogdHR5TzMgYXQgTU1J
TyAweDQ4MDZlMDAwIChpcnEgPSAxMDIsIGJhc2VfYmF1ZCA9IDMwMDAwMDApIGlzIGEgT01B
UCBVQVJUMw0KWyAgICAyLjkyMzQzMF0gb21hcF91YXJ0IDQ4MDY2MDAwLnNlcmlhbDogbm8g
d2FrZWlycSBmb3IgdWFydDANCjY0ODA2NjAwMC5zZXJpYWw6IHR0eU80IGF0IE1NSU8gMHg0
ODA2NjAwMCAoaXJxID0gMTM3LCBiYXNlX2JhdWQgPSAzMDAwMDAwKSBpcyBhIE9NQVAgVUFS
VDQNClsgICAgMi45Mzc1NzFdIG9tYXBfdWFydCA0ODA2ODAwMC5zZXJpYWw6IG5vIHdha2Vp
cnEgZm9yIHVhcnQwDQo2NDgwNjgwMDAuc2VyaWFsOiB0dHlPNSBhdCBNTUlPIDB4NDgwNjgw
MDAgKGlycSA9IDEzOCwgYmFzZV9iYXVkID0gMzAwMDAwMCkgaXMgYSBPTUFQIFVBUlQ1DQo2
c2VyaWFsOiBGcmVlc2NhbGUgbHB1YXJ0IGRyaXZlcg0KNltkcm1dIEluaXRpYWxpemVkIGRy
bSAxLjEuMCAyMDA2MDgxMA0KNnVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBk
cml2ZXIgdWRsDQozRXJyb3I6IERyaXZlciAndGZwNDEwJyBpcyBhbHJlYWR5IHJlZ2lzdGVy
ZWQsIGFib3J0aW5nLi4uDQpbICAgIDIuOTcxMTA0XSBhaGNpIDRhMTQwMDAwLnNhdGE6IGZv
cmNpbmcgUE9SVFNfSU1QTCB0byAweDENClsgICAgMi45NzY0ODVdIGFoY2kgNGExNDAwMDAu
c2F0YTogQUhDSSAwMDAxLjAzMDAgMzIgc2xvdHMgMSBwb3J0cyAzIEdicHMgMHgxIGltcGwg
cGxhdGZvcm0gbW9kZQ0KWyAgICAyLjk4NTEwMV0gYWhjaSA0YTE0MDAwMC5zYXRhOiBmbGFn
czogNjRiaXQgbmNxIHNudGYgcG0gbGVkIGNsbyBvbmx5IHBtcCBwaW8gc2x1bSBwYXJ0IGNj
YyBhcHN0DQpbICAgIDIuOTk1MjQ0XSBzY3NpIGhvc3QwOiBhaGNpX3BsYXRmb3JtDQo2YXRh
MTogU0FUQSBtYXggVURNQS8xMzMgbW1pbyBbbWVtIDB4NGExNDAwMDAtMHg0YTE0MTBmZl0g
cG9ydCAweDEwMCBpcnEgODYNCjZ4ZW5fbmV0ZnJvbnQ6IEluaXRpYWxpc2luZyBYZW4gdmly
dHVhbCBldGhlcm5ldCBkcml2ZXINCjZlaGNpX2hjZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhv
c3QgQ29udHJvbGxlciAoRUhDSSkgRHJpdmVyDQo2ZWhjaS1wbGF0Zm9ybTogRUhDSSBnZW5l
cmljIHBsYXRmb3JtIGRyaXZlcg0KNmVoY2ktb21hcDogT01BUC1FSENJIEhvc3QgQ29udHJv
bGxlciBkcml2ZXINClsgICAgMy4wNDE5ODddIGVoY2ktb21hcCA0YTA2NGMwMC5laGNpOiBF
SENJIEhvc3QgQ29udHJvbGxlcg0KWyAgICAzLjA0NzUyOV0gZWhjaS1vbWFwIDRhMDY0YzAw
LmVoY2k6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMQ0K
WyAgICAzLjA1NTE2OF0gZWhjaS1vbWFwIDRhMDY0YzAwLmVoY2k6IGlycSAxMDksIGlvIG1l
bSAweDRhMDY0YzAwDQpbICAgIDMuMDc5NTAzXSBlaGNpLW9tYXAgNGEwNjRjMDAuZWhjaTog
VVNCIDIuMCBzdGFydGVkLCBFSENJIDEuMDANClsgICAgMy4wODU2MDBdIHVzYiB1c2IxOiBO
ZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDINClsg
ICAgMy4wOTIzNzFdIHVzYiB1c2IxOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9Mywg
UHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQ0KWyAgICAzLjA5OTY4MV0gdXNiIHVzYjE6IFBy
b2R1Y3Q6IEVIQ0kgSG9zdCBDb250cm9sbGVyDQpbICAgIDMuMTA0NjM1XSB1c2IgdXNiMTog
TWFudWZhY3R1cmVyOiBMaW51eCAzLjE3LjAtcmM0LWFybXY3LWxwYWUteDUgZWhjaV9oY2QN
ClsgICAgMy4xMTE3MTFdIHVzYiB1c2IxOiBTZXJpYWxOdW1iZXI6IDRhMDY0YzAwLmVoY2kN
ClsgICAgMy4xMTcwOTJdIGh1YiAxLTA6MS4wOiBVU0IgaHViIGZvdW5kDQpbICAgIDMuMTIw
ODQ1XSBodWIgMS0wOjEuMDogMyBwb3J0cyBkZXRlY3RlZA0KNnRlZ3JhLWVoY2k6IFRlZ3Jh
IEVIQ0kgZHJpdmVyDQo2dXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZl
ciB1c2Itc3RvcmFnZQ0KNm1vdXNlZGV2OiBQUy8yIG1vdXNlIGRldmljZSBjb21tb24gZm9y
IGFsbCBtaWNlDQo2aTJjIC9kZXYgZW50cmllcyBkcml2ZXINCjZJUiBTaGFycCBwcm90b2Nv
bCBoYW5kbGVyIGluaXRpYWxpemVkDQo2SVIgWE1QIHByb3RvY29sIGhhbmRsZXIgaW5pdGlh
bGl6ZWQNClsgICAgMy4xODQ3NTBdIHRpLXNvYy10aGVybWFsIDRhMDAyMWUwLmJhbmRnYXA6
IERlbGF5IDEwMDAgbXMgaXMgbm90IHN1cHBvcnRlZA0KWyAgICAzLjE5MTc0N10gdGktc29j
LXRoZXJtYWwgNGEwMDIxZTAuYmFuZGdhcDogRGVsYXkgMTAwMCBtcyBpcyBub3Qgc3VwcG9y
dGVkDQo2b21hcF93ZHQ6IE9NQVAgV2F0Y2hkb2cgVGltZXIgUmV2IDB4MDE6IGluaXRpYWwg
dGltZW91dCA2MCBzZWMNCjZzZGhjaTogU2VjdXJlIERpZ2l0YWwgSG9zdCBDb250cm9sbGVy
IEludGVyZmFjZSBkcml2ZXINCjZzZGhjaTogQ29weXJpZ2h0KGMpIFBpZXJyZSBPc3NtYW4N
CjRtbWMwOiBob3N0IGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyByZWFkLW9ubHkgc3dpdGNo
LiBhc3N1bWluZyB3cml0ZS1lbmFibGUuDQo0NDgwYWQwMDAubW1jIHN1cHBseSB2bW1jIG5v
dCBmb3VuZCwgdXNpbmcgZHVtbXkgcmVndWxhdG9yDQpbICAgIDMuMjk5OTA0XSBvbWFwX2hz
bW1jIDQ4MGFkMDAwLm1tYzogY291bGQgbm90IHNldCByZWd1bGF0b3IgT0NSICgtMjIpDQo2
bW1jMDogbmV3IGhpZ2ggc3BlZWQgU0RIQyBjYXJkIGF0IGFkZHJlc3MgMTIzNA0KNm1tY2Js
azA6IG1tYzA6MTIzNCBTQTA4RyA3LjI4IEdpQg0KNiBtbWNibGswOiBwMSBwMg0KNDQ4MGQx
MDAwLm1tYyBzdXBwbHkgdm1tYyBub3QgZm91bmQsIHVzaW5nIGR1bW15IHJlZ3VsYXRvcg0K
WyAgICAzLjM0NDk4M10gb21hcF9oc21tYyA0ODBkMTAwMC5tbWM6IGNvdWxkIG5vdCBzZXQg
cmVndWxhdG9yIE9DUiAoLTIyKQ0KWyAgICAzLjM1MTY4Nl0gb21hcF9oc21tYyA0ODBkMTAw
MC5tbWM6IGNvdWxkIG5vdCBzZXQgcmVndWxhdG9yIE9DUiAoLTIyKQ0KNmF0YTE6IFNBVEEg
bGluayBkb3duIChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQ0KNm1tYzE6IEJLT1BTX0VOIGJp
dCBpcyBub3Qgc2V0DQo0NDgwZDUwMDAubW1jIHN1cHBseSB2bW1jIG5vdCBmb3VuZCwgdXNp
bmcgZHVtbXkgcmVndWxhdG9yDQpbICAgIDMuMzk0OTIwXSBvbWFwX2hzbW1jIDQ4MGQ1MDAw
Lm1tYzogY291bGQgbm90IHNldCByZWd1bGF0b3IgT0NSICgtMjIpDQpbICAgIDMuNDAxNjYz
XSBvbWFwX2hzbW1jIDQ4MGQ1MDAwLm1tYzogY291bGQgbm90IHNldCByZWd1bGF0b3IgT0NS
ICgtMjIpDQo2bW1jMTogbmV3IGhpZ2ggc3BlZWQgTU1DIGNhcmQgYXQgYWRkcmVzcyAwMDAx
DQo2bW1jYmxrMTogbW1jMTowMDAxIFNFTTA0RyAzLjY4IEdpQg0KNm1tY2JsazFib290MDog
bW1jMTowMDAxIFNFTTA0RyBwYXJ0aXRpb24gMSAyLjAwIE1pQg0KNm1tY2JsazFib290MTog
bW1jMTowMDAxIFNFTTA0RyBwYXJ0aXRpb24gMiAyLjAwIE1pQg0KNiBtbWNibGsxOiB1bmtu
b3duIHBhcnRpdGlvbiB0YWJsZQ0KNiBtbWNibGsxYm9vdDE6IHVua25vd24gcGFydGl0aW9u
IHRhYmxlDQo2IG1tY2JsazFib290MDogdW5rbm93biBwYXJ0aXRpb24gdGFibGUNCjZzZGhj
aS1wbHRmbTogU0RIQ0kgcGxhdGZvcm0gYW5kIE9GIGRyaXZlciBoZWxwZXINClsgICAgMy40
NDU4NzddIHU2bGVkdHJpZy1jcHU6IHJlZ2lzdGVyZWQgdG8gaW5kaWNhdGUgYWN0aXZpdHkg
b24gQ1BVcw0Kc2IgMS0zOiBuZXcgaGlnaDZoaWRyYXc6IHJhdyBISUQgZXZlbnRzIGRyaXZl
ciAoQykgSmlyaSBLb3NpbmENCi1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVzaW5nIGVo
Y2ktb21hcA0KNnVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNi
aGlkDQo2dXNiaGlkOiBVU0IgSElEIGNvcmUgZHJpdmVyDQo2YXNobWVtOiBpbml0aWFsaXpl
ZA0KM2VtaWZfcHJvYmU6IGVycm9yIGdldHRpbmcgZGV2aWNlIGRhdGENCjNlbWlmX3Byb2Jl
OiBlcnJvciBnZXR0aW5nIGRldmljZSBkYXRhDQo2b3Byb2ZpbGU6IGhhcmR3YXJlIGNvdW50
ZXJzIG5vdCBhdmFpbGFibGUNCjZvcHJvZmlsZTogdXNpbmcgdGltZXIgaW50ZXJydXB0Lg0K
NlRDUDogY3ViaWMgcmVnaXN0ZXJlZA0KNk5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1p
bHkgMTANCjZtaXA2OiBNb2JpbGUgSVB2Ng0KNk5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBm
YW1pbHkgMTcNCjVLZXkgdHlwZSBkbnNfcmVzb2x2ZXIgcmVnaXN0ZXJlZA0KNm1wbHNfZ3Nv
OiBNUExTIEdTTyBzdXBwb3J0DQozb21hcF92Y19pbml0X2NoYW5uZWw6IE5vIFBNSUMgaW5m
byBmb3IgdmRkX2NvcmUNCjNvbWFwX3ZwX2luaXQ6IE5vIFBNSUMgaW5mbyBmb3IgdmRkX2Nv
cmUNCjNvbWFwX3ZjX2luaXRfY2hhbm5lbDogTm8gUE1JQyBpbmZvIGZvciB2ZGRfbW0NCjNv
bWFwX3ZwX2luaXQ6IE5vIFBNSUMgaW5mbyBmb3IgdmRkX21tDQozb21hcF92Y19pbml0X2No
YW5uZWw6IE5vIFBNSUMgaW5mbyBmb3IgdmRkX21wdQ0KM29tYXBfdnBfaW5pdDogTm8gUE1J
QyBpbmZvIGZvciB2ZGRfbXB1DQo0Y3B1ZnJlcV9jcHUwOiBmYWlsZWQgdG8gZ2V0IGNwdTAg
cmVndWxhdG9yOiAtMTkNCjNjcHVmcmVxX2NwdTA6IGZhaWxlZCB0byBnZXQgY3B1MCBjbG9j
azogLTINCjRjcHVmcmVxLWNwdTA6IHByb2JlIG9mIGNwdWZyZXEtY3B1MC4wIGZhaWxlZCB3
aXRoIGVycm9yIC0yDQo2VGh1bWJFRSBDUFUgZXh0ZW5zaW9uIHN1cHBvcnRlZC4NCjVSZWdp
c3RlcmluZyBTV1AvU1dQQiBlbXVsYXRpb24gaGFuZGxlcg0KNnJlZ2lzdGVyZWQgdGFza3N0
YXRzIHZlcnNpb24gMQ0KNkJ0cmZzIGxvYWRlZA0KWyAgICAzLjU1OTg0OF0gZG1tIDRlMDAw
MDAwLmRtbTogaW5pdGlhbGl6ZWQgYWxsIFBBVCBlbnRyaWVzDQpbICAgIDMuNTY1NDE2XSBw
bGF0Zm9ybSBvbWFwZHJtLjA6IERyaXZlciBvbWFwZHJtIHJlcXVlc3RzIHByb2JlIGRlZmVy
cmFsDQpbICAgIDMuNTczMTgyXSBwYWxtYXMgMC0wMDQ4OiBJcnEgZmxhZyBpcyAweDAwMDAw
MDAwDQpbICAgIDMuNTgwNzgwXSBwYWxtYXMgMC0wMDQ4OiBNdXhpbmcgR1BJTyAyLCBQV00g
MCwgTEVEIDANCjZzbXBzMTIzOiA2MDAgPC0tPiAxNTAwIG1WIGF0IDEwNTAgbVYNCjZzbXBz
NDU6IDYwMCA8LS0+IDEzMTAgbVYgYXQgMTA1MCBtVg0KNnNtcHM2OiAxMjAwIG1WDQo2c21w
czc6IDE4MDAgbVYNCjZzbXBzODogNjAwIDwtLT4gMTMxMCBtViBhdCAxMDUwIG1WDQo2c21w
czk6IDIxMDAgbVYNCjZzbXBzMTBfb3V0MjogNTAwMCBtVg0KWyAgICAzLjYyMTg5NV0gdXNi
IDEtMzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA0MjQsIGlkUHJvZHVjdD05
NzMwDQpbICAgIDMuNjI4NTkwXSB1c2IgMS0zOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBN
ZnI9MCwgUHJvZHVjdD0wLCBTZXJpYWxOdW1iZXI9MA0KNnNtcHMxMF9vdXQxOiA1MDAwIG1W
DQo2bGRvMTogMTUwMCA8LS0+IDE4MDAgbVYNCjZsZG8yOiAyODAwIG1WDQo2bGRvMzogMTUw
MCBtVg0KNmxkbzQ6IDE1MDAgPC0tPiAxODAwIG1WDQo2bGRvNTogMTgwMCBtVg0KNmxkbzY6
IDEyMDAgbVYNCjZsZG83OiAyMDAwIG1WDQo2bGRvODogMzAwMCBtVg0KNmxkbzk6IDE4MDAg
PC0tPiAzMDAwIG1WIGF0IDMwMDAgbVYNCjZsZG9sbjogMTgwMCBtVg0KNmxkb3VzYjogMzI1
MCBtVg0KNlJFR0VOMTogbm8gcGFyYW1ldGVycw0KNlJFR0VOMjogbm8gcGFyYW1ldGVycw0K
NnJlZ2VuMzogbm8gcGFyYW1ldGVycw0KNlNZU0VOMTogbm8gcGFyYW1ldGVycw0KNlNZU0VO
Mjogbm8gcGFyYW1ldGVycw0KWyAgICAzLjY5NDYxOF0gdHdsNjA0MCAwLTAwNGI6IGNsazMy
ayBpcyBub3QgaGFuZGxlZA0KWyAgICAzLjcwMjY5NF0gb21hcF9pMmMgNDgwNzAwMDAuaTJj
OiBidXMgMCByZXYwLjEyIGF0IDQwMCBrSHoNClsgICAgMy43MDkzMjNdIG9tYXBfaTJjIDQ4
MDdjMDAwLmkyYzogYnVzIDQgcmV2MC4xMiBhdCA0MDAga0h6DQpbICAgIDMuNzE1MDg4XSB0
cGQxMnMwMTUgZW5jb2RlckAwOiBmYWlsZWQgdG8gcGFyc2UgQ1QgQ1AgSFBEIGdwaW8NClsg
ICAgMy43MjA5OTNdIHBsYXRmb3JtIGVuY29kZXJAMDogRHJpdmVyIHRwZDEyczAxNSByZXF1
ZXN0cyBwcm9iZSBkZWZlcnJhbA0KWyAgICAzLjcyODA1N10gY29ubmVjdG9yLWhkbWkgY29u
bmVjdG9yQDA6IGZhaWxlZCB0byBmaW5kIHZpZGVvIHNvdXJjZQ0KWyAgICAzLjczNDMxNl0g
cGxhdGZvcm0gY29ubmVjdG9yQDA6IERyaXZlciBjb25uZWN0b3ItaGRtaSByZXF1ZXN0cyBw
cm9iZSBkZWZlcnJhbA0KWyAgICAzLjc0MTkzOF0gcGxhdGZvcm0gb21hcGRybS4wOiBEcml2
ZXIgb21hcGRybSByZXF1ZXN0cyBwcm9iZSBkZWZlcnJhbA0KM2RyaXZlcnMvcnRjL2hjdG9z
eXMuYzogdW5hYmxlIHRvIG9wZW4gcnRjIGRldmljZSAocnRjMCkNCjZsZG85OiBkaXNhYmxp
bmcNCjZsZG84OiBkaXNhYmxpbmcNCjZsZG8zOiBkaXNhYmxpbmcNCjNtbWNibGswOiBlcnJv
ciAtMTEwIHNlbmRpbmcgc3RhdHVzIGNvbW1hbmQsIHJldHJ5aW5nDQozbW1jYmxrMDogZXJy
b3IgLTExMCBzZW5kaW5nIHN0YXR1cyBjb21tYW5kLCByZXRyeWluZw0KM21tY2JsazA6IGVy
cm9yIC0xMTAgc2VuZGluZyBzdGF0dXMgY29tbWFuZCwgYWJvcnRpbmcNCjNlbmRfcmVxdWVz
dDogSS9PIGVycm9yLCBkZXYgbW1jYmxrMCwgc2VjdG9yIDI2NjI2DQozRVhUNC1mcyAobW1j
YmxrMHAyKTogdW5hYmxlIHRvIHJlYWQgc3VwZXJibG9jaw0KM21tY2JsazA6IGVycm9yIC0x
MTAgc2VuZGluZyBzdGF0dXMgY29tbWFuZCwgcmV0cnlpbmcNCjNtbWNibGswOiBlcnJvciAt
MTEwIHNlbmRpbmcgc3RhdHVzIGNvbW1hbmQsIHJldHJ5aW5nDQozbW1jYmxrMDogZXJyb3Ig
LTExMCBzZW5kaW5nIHN0YXR1cyBjb21tYW5kLCBhYm9ydGluZw0KM2VuZF9yZXF1ZXN0OiBJ
L08gZXJyb3IsIGRldiBtbWNibGswLCBzZWN0b3IgMjY2MjYNCjNFWFQ0LWZzIChtbWNibGsw
cDIpOiB1bmFibGUgdG8gcmVhZCBzdXBlcmJsb2NrDQozbW1jYmxrMDogZXJyb3IgLTExMCBz
ZW5kaW5nIHN0YXR1cyBjb21tYW5kLCByZXRyeWluZw0KM21tY2JsazA6IGVycm9yIC0xMTAg
c2VuZGluZyBzdGF0dXMgY29tbWFuZCwgcmV0cnlpbmcNCjNtbWNibGswOiBlcnJvciAtMTEw
IHNlbmRpbmcgc3RhdHVzIGNvbW1hbmQsIGFib3J0aW5nDQozZW5kX3JlcXVlc3Q6IEkvTyBl
cnJvciwgZGV2IG1tY2JsazAsIHNlY3RvciAyNjYyNg0KM0VYVDQtZnMgKG1tY2JsazBwMik6
IHVuYWJsZSB0byByZWFkIHN1cGVyYmxvY2sNCjNtbWNibGswOiBlcnJvciAtMTEwIHNlbmRp
bmcgc3RhdHVzIGNvbW1hbmQsIHJldHJ5aW5nDQozbW1jYmxrMDogZXJyb3IgLTExMCBzZW5k
aW5nIHN0YXR1cyBjb21tYW5kLCByZXRyeWluZw0KM21tY2JsazA6IGVycm9yIC0xMTAgc2Vu
ZGluZyBzdGF0dXMgY29tbWFuZCwgYWJvcnRpbmcNCjNlbmRfcmVxdWVzdDogSS9PIGVycm9y
LCBkZXYgbW1jYmxrMCwgc2VjdG9yIDI2NjI0DQozRkFULWZzIChtbWNibGswcDIpOiB1bmFi
bGUgdG8gcmVhZCBib290IHNlY3Rvcg0KVkZTOiBDYW5ub3Qgb3BlbiByb290IGRldmljZSAi
bW1jYmxrMHAyIiBvciB1bmtub3duLWJsb2NrKDE3OSwyKTogZXJyb3IgLTUNClBsZWFzZSBh
cHBlbmQgYSBjb3JyZWN0ICJyb290PSIgYm9vdCBvcHRpb247IGhlcmUgYXJlIHRoZSBhdmFp
bGFibGUgcGFydGl0aW9uczoNCmIzMDAgICAgICAgICA3NjM5MDQwIG1tY2JsazAgIGRyaXZl
cjogbW1jYmxrDQogIGIzMDEgICAgICAgICAgIDEyMjg4IG1tY2JsazBwMSAwMDAwMDAwMC0w
MQ0KICBiMzAyICAgICAgICAgNzYyNTcyOCBtbWNibGswcDIgMDAwMDAwMDAtMDINCmIzMDgg
ICAgICAgICAzODY2NjI0IG1tY2JsazEgIGRyaXZlcjogbW1jYmxrDQpiMzE4ICAgICAgICAg
ICAgMjA0OCBtbWNibGsxYm9vdDEgIChkcml2ZXI/KQ0KYjMxMCAgICAgICAgICAgIDIwNDgg
bW1jYmxrMWJvb3QwICAoZHJpdmVyPykNCjBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzog
VkZTOiBVbmFibGUgdG8gbW91bnQgcm9vdCBmcyBvbiB1bmtub3duLWJsb2NrKDE3OSwyKQ0K
ZENQVTogMSBQSUQ6IDEgQ29tbTogc3dhcHBlci8wIFRhaW50ZWQ6IEcgICAgICAgIFcgICAg
ICAzLjE3LjAtcmM0LWFybXY3LWxwYWUteDUgIzExDQpbPGMwMDI2OWMwPl0gKHVud2luZF9i
YWNrdHJhY2UpIGZyb20gWzxjMDAyMmQwYz5dIChzaG93X3N0YWNrKzB4MTAvMHgxNCkNCls8
YzAwMjJkMGM+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwODUwY2E0Pl0gKGR1bXBfc3RhY2sr
MHg4NC8weDk0KQ0KWzxjMDg1MGNhND5dIChkdW1wX3N0YWNrKSBmcm9tIFs8YzA4NGM1MmM+
XSAocGFuaWMrMHhhNC8weDIxYykNCls8YzA4NGM1MmM+XSAocGFuaWMpIGZyb20gWzxjMGJm
NjIyND5dIChtb3VudF9ibG9ja19yb290KzB4MjQwLzB4MmM4KQ0KWzxjMGJmNjIyND5dICht
b3VudF9ibG9ja19yb290KSBmcm9tIFs8YzBiZjY0Njg+XSAocHJlcGFyZV9uYW1lc3BhY2Ur
MHgxNTgvMHgxOWMpDQpbPGMwYmY2NDY4Pl0gKHByZXBhcmVfbmFtZXNwYWNlKSBmcm9tIFs8
YzBiZjVlYzg+XSAoa2VybmVsX2luaXRfZnJlZWFibGUrMHgyNzAvMHgyODApDQpbPGMwYmY1
ZWM4Pl0gKGtlcm5lbF9pbml0X2ZyZWVhYmxlKSBmcm9tIFs8YzA4NGFiOTg+XSAoa2VybmVs
X2luaXQrMHhjLzB4ZTgpDQpbPGMwODRhYjk4Pl0gKGtlcm5lbF9pbml0KSBmcm9tIFs8YzAw
MWY4OTg+XSAocmV0X2Zyb21fZm9yaysweDE0LzB4M2MpDQoyQ1BVMDogc3RvcHBpbmcNCmRD
UFU6IDAgUElEOiAwIENvbW06IHN3YXBwZXIvMCBUYWludGVkOiBHICAgICAgICBXICAgICAg
My4xNy4wLXJjNC1hcm12Ny1scGFlLXg1ICMxMQ0KWzxjMDAyNjljMD5dICh1bndpbmRfYmFj
a3RyYWNlKSBmcm9tIFs8YzAwMjJkMGM+XSAoc2hvd19zdGFjaysweDEwLzB4MTQpDQpbPGMw
MDIyZDBjPl0gKHNob3dfc3RhY2spIGZyb20gWzxjMDg1MGNhND5dIChkdW1wX3N0YWNrKzB4
ODQvMHg5NCkNCls8YzA4NTBjYTQ+XSAoZHVtcF9zdGFjaykgZnJvbSBbPGMwMDI0YmU0Pl0g
KGhhbmRsZV9JUEkrMHgxOTAvMHgyMTQpDQpbPGMwMDI0YmU0Pl0gKGhhbmRsZV9JUEkpIGZy
b20gWzxjMDAwODYzYz5dIChnaWNfaGFuZGxlX2lycSsweDU4LzB4NWMpDQpbPGMwMDA4NjNj
Pl0gKGdpY19oYW5kbGVfaXJxKSBmcm9tIFs8YzA4NTZkYzA+XSAoX19pcnFfc3ZjKzB4NDAv
MHg1NCkNCkV4Y2VwdGlvbiBzdGFjaygweGMwYzdkZjQwIHRvIDB4YzBjN2RmODgpDQpkZjQw
OiBmZmZmZmZlZCAwMDAwMDAwMCBmZmZmZmZlZCBjMDAyYzJhMCBjMGM3YzAwMCBjMGQwOWNl
MCBjMGM4NDY0NCBjMGM4NDVlMA0KZGY2MDogMDAwMDAwMDAgMDAwMDAwMDAgYzBjN2E0Mjgg
MDAwMDAwMDAgMDAwMDAwMDAgYzBjN2RmODggYzAwMjA0MzggYzAwMjA0M2MNCmRmODA6IDYw
MDAwMTEzIGZmZmZmZmZmDQpbPGMwODU2ZGMwPl0gKF9faXJxX3N2YykgZnJvbSBbPGMwMDIw
NDNjPl0gKGFyY2hfY3B1X2lkbGUrMHgzOC8weDNjKQ0KWzxjMDAyMDQzYz5dIChhcmNoX2Nw
dV9pZGxlKSBmcm9tIFs8YzAwODBmMDQ+XSAoY3B1X3N0YXJ0dXBfZW50cnkrMHgyMTgvMHgy
YmMpDQpbPGMwMDgwZjA0Pl0gKGNwdV9zdGFydHVwX2VudHJ5KSBmcm9tIFs8YzBiZjVjNGM+
XSAoc3RhcnRfa2VybmVsKzB4NDA4LzB4NDE0KQ0KWzxjMGJmNWM0Yz5dIChzdGFydF9rZXJu
ZWwpIGZyb20gWzxhODAwODA4ND5dICgweGE4MDA4MDg0KQ0KMC0tLVsgZW5kIEtlcm5lbCBw
YW5pYyAtIG5vdCBzeW5jaW5nOiBWRlM6IFVuYWJsZSB0byBtb3VudCByb290IGZzIG9uIHVu
a25vd24tYmxvY2soMTc5LDIp
--------------050508080101040303040102
Content-Type: text/plain; charset="windows-1252"; name="boot1.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="boot1.log"

VS1Cb290IDIwMTMuMDEtZ2RjNjIzOGMgKE1hciAyNyAyMDEzIC0gMTQ6MzM6NDcpDQoNCkNQ
VSAgOiBPTUFQNTQzMiBFUzIuMA0KQm9hcmQ6IE9NQVA1NDMwIEVWTQ0KSTJDOiAgIHJlYWR5
DQpEUkFNOiAgMiBHaUINCnJlbG9jYXRpb24gT2Zmc2V0IGlzOiA3ZTEwMTAwMA0KTU1DOiAg
IE9NQVAgU0QvTU1DOiAwLCBPTUFQIFNEL01NQzogMQ0KSW46ICAgIHNlcmlhbA0KT3V0OiAg
IHNlcmlhbA0KRXJyOiAgIHNlcmlhbA0KSGl0IGFueSBrZXkgdG8gc3RvcCBhdXRvYm9vdDog
IDANCk9NQVA1NDMwIEVWTSAjIGZhdGxvYWQgbW1jIDA6MSAkZHRiX2FkZHJfciBvbWFwNS11
ZXZtLmR0Yg0KcmVhZGluZyBvbWFwNS11ZXZtLmR0Yg0KNDk2MTEgYnl0ZXMgcmVhZCBpbiAx
MCBtcyAoNC43IE1pQi9zKQ0KT01BUDU0MzAgRVZNICMgZmF0bG9hZCBtbWMgMDoxICR4ZW5f
YWRkcl9yIHhlbi11SW1hZ2UNCnJlYWRpbmcgeGVuLXVJbWFnZQ0KNjg5MDIwIGJ5dGVzIHJl
YWQgaW4gNDcgbXMgKDE0IE1pQi9zKQ0KT01BUDU0MzAgRVZNICMgZmF0bG9hZCBtbWMgMDox
ICRrZXJuZWxfYWRkcl9yIHpJbWFnZQ0KcmVhZGluZyB6SW1hZ2UNCjQ2NTYwOTYgYnl0ZXMg
cmVhZCBpbiAyOTAgbXMgKDE1LjMgTWlCL3MpDQpPTUFQNTQzMCBFVk0gIyBmZHQgYWRkciAk
ZHRiX2FkZHJfcg0KT01BUDU0MzAgRVZNICMgZmR0IHJlc2l6ZQ0KT01BUDU0MzAgRVZNICMg
ZmR0IHNldCAvY2hvc2VuIHhlbix4ZW4tYm9vdGFyZ3MgXCIkeGVuX2Jvb3RhcmdzXCINCk9N
QVA1NDMwIEVWTSAjIGZkdCByZXNpemUNCk9NQVA1NDMwIEVWTSAjIGZkdCBzZXQgL2Nob3Nl
biB4ZW4sZG9tMC1ib290YXJncyBcIiRkb20wX2Jvb3RhcmdzXCINCk9NQVA1NDMwIEVWTSAj
IGZkdCBta25vZGUgL2Nob3NlbiBtb2R1bGVzDQpPTUFQNTQzMCBFVk0gIyBmZHQgc2V0IC9j
aG9zZW4vbW9kdWxlcyAnI2FkZHJlc3MtY2VsbHMnIDwxPg0KT01BUDU0MzAgRVZNICMgZmR0
IHNldCAvY2hvc2VuL21vZHVsZXMgJyNzaXplLWNlbGxzJyA8MT4NCk9NQVA1NDMwIEVWTSAj
IGZkdCBta25vZGUgL2Nob3Nlbi9tb2R1bGVzIG1vZHVsZUAwDQpPTUFQNTQzMCBFVk0gIyBm
ZHQgc2V0IC9jaG9zZW4vbW9kdWxlcy9tb2R1bGVAMCBjb21wYXRpYmxlIHhlbixsaW51eC16
aW1hZ2UgeGVuLG11bHRpYm9vdC1tb2R1bGUNCk9NQVA1NDMwIEVWTSAjIGZkdCBzZXQgL2No
b3Nlbi9tb2R1bGVzL21vZHVsZUAwIHJlZyA8JGtlcm5lbF9hZGRyX3IgMHhhMDAwMDA+DQpP
TUFQNTQzMCBFVk0gIyBmZHQgY2hvc2VuDQpPTUFQNTQzMCBFVk0gIyBmZHQgcHJpbnQgL2No
b3Nlbg0KY2hvc2VuIHsNCiAgICAgICAgeGVuLGRvbTAtYm9vdGFyZ3MgPSAiY29uc29sZT1o
dmMwLDExNTIwMG44IGVhcmx5cHJpbnRrPXhlbiBkZWJ1ZyBsb2dsZXZlbD04IHJvb3Q9L2Rl
di9tbWNibGswcDIgcncgcm9vdHdhaXQgZml4cnRjIjsNCiAgICAgICAgeGVuLHhlbi1ib290
YXJncyA9ICJkb20wX21lbT0xMjhNIGxvZ2x2bD1hbGwgZ3Vlc3RfbG9nbHZsPWFsbCBzeW5j
X2NvbnNvbGUgY29uc29sZT1kdHVhcnQgZHR1YXJ0PXNlcmlhbDIiOw0KICAgICAgICBtb2R1
bGVzIHsNCiAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwweDAwMDAwMDAxPjsNCiAg
ICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwweDAwMDAwMDAxPjsNCiAgICAgICAg
ICAgICAgICBtb2R1bGVAMCB7DQogICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHhh
MDAwMDAwMCAweDAwYTAwMDAwPjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGli
bGUgPSAieGVuLGxpbnV4LXppbWFnZSIsICJ4ZW4sbXVsdGlib290LW1vZHVsZSI7DQogICAg
ICAgICAgICAgICAgfTsNCiAgICAgICAgfTsNCn07DQpPTUFQNTQzMCBFVk0gIyBib290bSAk
eGVuX2FkZHJfciAtICRkdGJfYWRkcl9yDQojIyBCb290aW5nIGtlcm5lbCBmcm9tIExlZ2Fj
eSBJbWFnZSBhdCA5MDAwMDAwMCAuLi4NCiAgIEltYWdlIE5hbWU6DQogICBJbWFnZSBUeXBl
OiAgIEFSTSBMaW51eCBLZXJuZWwgSW1hZ2UgKHVuY29tcHJlc3NlZCkNCiAgIERhdGEgU2l6
ZTogICAgNjg4OTU2IEJ5dGVzID0gNjcyLjggS2lCDQogICBMb2FkIEFkZHJlc3M6IDgwMjAw
MDAwDQogICBFbnRyeSBQb2ludDogIDgwMjAwMDAwDQogICBWZXJpZnlpbmcgQ2hlY2tzdW0g
Li4uIE9LDQojIyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgYmxvYiBhdCA4MjVmMDAwMA0KICAg
Qm9vdGluZyB1c2luZyB0aGUgZmR0IGJsb2IgYXQgMHg4MjVmMDAwMA0KICAgTG9hZGluZyBL
ZXJuZWwgSW1hZ2UgLi4uIE9LDQpPSw0KICAgcmVzZXJ2aW5nIGZkdCBtZW1vcnkgcmVnaW9u
OiBhZGRyPTgyNWYwMDAwIHNpemU9ZDAwMA0KICAgTG9hZGluZyBEZXZpY2UgVHJlZSB0byBm
ZWVlZjAwMCwgZW5kIGZlZWZlZmZmIC4uLiBPSw0KDQpTdGFydGluZyBrZXJuZWwgLi4uDQoN
Ci0gVUFSVCBlbmFibGVkIC0NCi0gQ1BVIDAwMDAwMDAwIGJvb3RpbmcgLQ0KLSBYZW4gc3Rh
cnRpbmcgaW4gSHlwIG1vZGUgLQ0KLSBaZXJvIEJTUyAtDQotIFNldHRpbmcgdXAgY29udHJv
bCByZWdpc3RlcnMgLQ0KLSBUdXJuaW5nIG9uIHBhZ2luZyAtDQotIFJlYWR5IC0NCihYRU4p
IENoZWNraW5nIGZvciBpbml0cmQgaW4gL2Nob3Nlbg0KKFhFTikgUkFNOiAwMDAwMDAwMDgw
MDAwMDAwIC0gMDAwMDAwMDBmZWZmZmZmZg0KKFhFTikNCihYRU4pIE1PRFVMRVswXTogMDAw
MDAwMDBmZWVlZjAwMCAtIDAwMDAwMDAwZmVlZmYwMDAgRGV2aWNlIFRyZWUNCihYRU4pIE1P
RFVMRVsxXTogMDAwMDAwMDBhMDAwMDAwMCAtIDAwMDAwMDAwYTBhMDAwMDAgS2VybmVsDQoo
WEVOKSAgUkVTVkRbMF06IDAwMDAwMDAwODI1ZjAwMDAgLSAwMDAwMDAwMDgyNWZkMDAwDQoo
WEVOKQ0KKFhFTikgQ29tbWFuZCBsaW5lOiBkb20wX21lbT0xMjhNIGxvZ2x2bD1hbGwgZ3Vl
c3RfbG9nbHZsPWFsbCBzeW5jX2NvbnNvbGUgY29uc29sZT1kdHVhcnQgZHR1YXJ0PXNlcmlh
bDINCihYRU4pIFBsYWNpbmcgWGVuIGF0IDB4MDAwMDAwMDBmZWMwMDAwMC0weDAwMDAwMDAw
ZmVlMDAwMDANCihYRU4pIFVwZGF0ZSBCT09UTU9EX1hFTiBmcm9tIDAwMDAwMDAwODAyMDAw
MDAtMDAwMDAwMDA4MDJmMTY4MSA9PiAwMDAwMDAwMGZlYzAwMDAwLTAwMDAwMDAwZmVjZjE2
ODENCihYRU4pIFhlbiBoZWFwOiAwMDAwMDAwMGVlMDAwMDAwLTAwMDAwMDAwZmUwMDAwMDAg
KDY1NTM2IHBhZ2VzKQ0KKFhFTikgRG9tIGhlYXA6IDQ1NDY1NiBwYWdlcw0KKFhFTikgRG9t
YWluIGhlYXAgaW5pdGlhbGlzZWQNCihYRU4pIExvb2tpbmcgZm9yIFVBUlQgY29uc29sZSBz
ZXJpYWwyDQogWGVuIDQuNS11bnN0YWJsZQ0KKFhFTikgWGVuIHZlcnNpb24gNC41LXVuc3Rh
YmxlIChhcmx4QCkgKGFybS1saW51eC1nbnVlYWJpLWdjYyAoVWJ1bnR1L0xpbmFybyA0Ljcu
My0xMnVidW50dTEpIDQuNy4zKSBkZWJ1Zz15IEZyaSBTZXAgMTIgMTI6MTQ6NDkgRURUIDIw
MTQNCihYRU4pIExhdGVzdCBDaGFuZ2VTZXQ6IFdlZCBTZXAgMTAgMTY6NDM6MTYgMjAxNCAr
MDEwMCBnaXQ6Y2M2OTQwYg0KKFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25vdXMu
DQooWEVOKSBQcm9jZXNzb3I6IDQxMmZjMGYyOiAiQVJNIExpbWl0ZWQiLCB2YXJpYW50OiAw
eDIsIHBhcnQgMHhjMGYsIHJldiAweDINCihYRU4pIDMyLWJpdCBFeGVjdXRpb246DQooWEVO
KSAgIFByb2Nlc3NvciBGZWF0dXJlczogMDAwMDExMzE6MDAwMTEwMTENCihYRU4pICAgICBJ
bnN0cnVjdGlvbiBTZXRzOiBBQXJjaDMyIFRodW1iIFRodW1iLTIgVGh1bWJFRSBKYXplbGxl
DQooWEVOKSAgICAgRXh0ZW5zaW9uczogR2VuZXJpY1RpbWVyIFNlY3VyaXR5DQooWEVOKSAg
IERlYnVnIEZlYXR1cmVzOiAwMjAxMDU1NQ0KKFhFTikgICBBdXhpbGlhcnkgRmVhdHVyZXM6
IDAwMDAwMDAwDQooWEVOKSAgIE1lbW9yeSBNb2RlbCBGZWF0dXJlczogMTAyMDExMDUgMjAw
MDAwMDAgMDEyNDAwMDAgMDIxMDIyMTENCihYRU4pICBJU0EgRmVhdHVyZXM6IDAyMTAxMTEw
IDEzMTEyMTExIDIxMjMyMDQxIDExMTEyMTMxIDEwMDExMTQyIDAwMDAwMDAwDQooWEVOKSBQ
bGF0Zm9ybTogVEkgT01BUDUNCihYRU4pIFNldCBBdXhDb3JlQm9vdDEgdG8gMDAwMDAwMDBm
ZWMwMDA0YyAoMDAyMDAwNGMpDQooWEVOKSBTZXQgQXV4Q29yZUJvb3QwIHRvIDB4MjANCihY
RU4pIEdlbmVyaWMgVGltZXIgSVJROiBwaHlzPTMwIGh5cD0yNiB2aXJ0PTI3DQooWEVOKSBV
c2luZyBnZW5lcmljIHRpbWVyIGF0IDYxNDQgS0h6DQooWEVOKSBHSUN2MiBpbml0aWFsaXph
dGlvbjoNCihYRU4pICAgICAgICAgZ2ljX2Rpc3RfYWRkcj0wMDAwMDAwMDQ4MjExMDAwDQoo
WEVOKSAgICAgICAgIGdpY19jcHVfYWRkcj0wMDAwMDAwMDQ4MjEyMDAwDQooWEVOKSAgICAg
ICAgIGdpY19oeXBfYWRkcj0wMDAwMDAwMDQ4MjE0MDAwDQooWEVOKSAgICAgICAgIGdpY192
Y3B1X2FkZHI9MDAwMDAwMDA0ODIxNjAwMA0KKFhFTikgICAgICAgICBnaWNfbWFpbnRlbmFu
Y2VfaXJxPTI1DQooWEVOKSBHSUN2MjogMTkyIGxpbmVzLCAyIGNwdXMsIHNlY3VyZSAoSUlE
IDAwMDAwNDNiKS4NCihYRU4pIFVzaW5nIHNjaGVkdWxlcjogU01QIENyZWRpdCBTY2hlZHVs
ZXIgKGNyZWRpdCkNCihYRU4pIEkvTyB2aXJ0dWFsaXNhdGlvbiBkaXNhYmxlZA0KKFhFTikg
QWxsb2NhdGVkIGNvbnNvbGUgcmluZyBvZiAxNiBLaUIuDQooWEVOKSBWRlAgaW1wbGVtZW50
ZXIgMHg0MSBhcmNoaXRlY3R1cmUgNCBwYXJ0IDB4MzAgdmFyaWFudCAweGYgcmV2IDB4MA0K
KFhFTikgQnJpbmdpbmcgdXAgQ1BVMQ0KLSBDUFUgMDAwMDAwMDEgYm9vdGluZyAtDQotIFhl
biBzdGFydGluZyBpbiBIeXAgbW9kZSAtDQotIFNldHRpbmcgdXAgY29udHJvbCByZWdpc3Rl
cnMgLQ0KLSBUdXJuaW5nIG9uIHBhZ2luZyAtDQotIFJlYWR5IC0NCihYRU4pIENQVSAxIGJv
b3RlZC4NCihYRU4pIEJyb3VnaHQgdXAgMiBDUFVzDQooWEVOKSAqKiogTE9BRElORyBET01B
SU4gMCAqKioNCihYRU4pIExvYWRpbmcga2VybmVsIGZyb20gYm9vdCBtb2R1bGUgQCAwMDAw
MDAwMGEwMDAwMDAwDQooWEVOKSBBbGxvY2F0aW5nIDE6MSBtYXBwaW5ncyB0b3RhbGxpbmcg
MTI4TUIgZm9yIGRvbTA6DQooWEVOKSBCQU5LWzBdIDB4MDAwMDAwYTgwMDAwMDAtMHgwMDAw
MDBiMDAwMDAwMCAoMTI4TUIpDQooWEVOKSBMb2FkaW5nIHpJbWFnZSBmcm9tIDAwMDAwMDAw
YTAwMDAwMDAgdG8gMDAwMDAwMDBhZmEwMDAwMC0wMDAwMDAwMGFmZTcwYmUwDQooWEVOKSBM
b2FkaW5nIGRvbTAgRFRCIHRvIDB4MDAwMDAwMDBhZjgwMDAwMC0weDAwMDAwMDAwYWY4MGMx
NzkNCihYRU4pIFNjcnViYmluZyBGcmVlIFJBTSBvbiAxIG5vZGVzIHVzaW5nIDIgQ1BVcw0K
KFhFTikgLi4uLi4uLi5kb25lLg0KKFhFTikgSW5pdGlhbCBsb3cgbWVtb3J5IHZpcnEgdGhy
ZXNob2xkIHNldCBhdCAweDQwMDAgcGFnZXMuDQooWEVOKSBTdGQuIExvZ2xldmVsOiBBbGwN
CihYRU4pIEd1ZXN0IExvZ2xldmVsOiBBbGwNCihYRU4pICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioNCihYRU4pICoqKioqKiogV0FSTklORzogQ09O
U09MRSBPVVRQVVQgSVMgU1lOQ0hST05PVVMNCihYRU4pICoqKioqKiogVGhpcyBvcHRpb24g
aXMgaW50ZW5kZWQgdG8gYWlkIGRlYnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcNCihYRU4p
ICoqKioqKiogdGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9u
IHRoZSBzZXJpYWwgbGluZS4NCihYRU4pICoqKioqKiogSG93ZXZlciBpdCBjYW4gaW50cm9k
dWNlIFNJR05JRklDQU5UIGxhdGVuY2llcyBhbmQgYWZmZWN0DQooWEVOKSAqKioqKioqIHRp
bWVrZWVwaW5nLiBJdCBpcyBOT1QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNlIQ0K
KFhFTikgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K
KFhFTikgMy4uLiAyLi4uIDEuLi4NCihYRU4pICoqKiBTZXJpYWwgaW5wdXQgLT4gRE9NMCAo
dHlwZSAnQ1RSTC1hJyB0aHJlZSB0aW1lcyB0byBzd2l0Y2ggaW5wdXQgdG8gWGVuKQ0KKFhF
TikgRnJlZWQgMjU2a0IgaW5pdCBtZW1vcnkuDQo2Qm9vdGluZyBMaW51eCBvbiBwaHlzaWNh
bCBDUFUgMHgwDQo2SW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0DQo2SW5pdGlh
bGl6aW5nIGNncm91cCBzdWJzeXMgY3B1DQo2SW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMg
Y3B1YWNjdA0KNUxpbnV4IHZlcnNpb24gMy4xNy4wLXJjNC1hcm12Ny1scGFlLXg1IChhcmx4
QGFybHgtNTgpIChnY2MgdmVyc2lvbiA0LjguMyAyMDE0MDQwMSAocHJlcmVsZWFzZSkgKGNy
b3NzdG9vbC1ORyBsaW5hcm8tMS4xMy4xLTQuOC0yMDE0LjA0IC0gTGluYXJvIEdDQyA0Ljgt
MjAxNC4wNCkgKSAjMTIgU01QIFRodSBTZXAgMjUgMTE6NDA6NTAgRURUIDIwMTQNCjZDUFU6
IEFSTXY3IFByb2Nlc3NvciBbNDEyZmMwZjJdIHJldmlzaW9uIDIgKEFSTXY3KSwgY3I9MzBj
NTM4N2QNCjZDUFU6IFBJUFQgLyBWSVBUIG5vbmFsaWFzaW5nIGRhdGEgY2FjaGUsIFBJUFQg
aW5zdHJ1Y3Rpb24gY2FjaGUNCjZNYWNoaW5lIG1vZGVsOiBUSSBPTUFQNSB1RVZNIGJvYXJk
DQo0Rm9yY2luZyB3cml0ZS1hbGxvY2F0ZSBjYWNoZSBwb2xpY3kgZm9yIFNNUA0KNk1lbW9y
eSBwb2xpY3k6IERhdGEgY2FjaGUgd3JpdGVhbGxvYw0KN09uIG5vZGUgMCB0b3RhbHBhZ2Vz
OiAzMjI1Ng0KN2ZyZWVfYXJlYV9pbml0X25vZGU6IG5vZGUgMCwgcGdkYXQgYzBkMDViNDAs
IG5vZGVfbWVtX21hcCBjN2NmODAwMA0KNyAgTm9ybWFsIHpvbmU6IDI1NiBwYWdlcyB1c2Vk
IGZvciBtZW1tYXANCjcgIE5vcm1hbCB6b25lOiAwIHBhZ2VzIHJlc2VydmVkDQo3ICBOb3Jt
YWwgem9uZTogMzIyNTYgcGFnZXMsIExJRk8gYmF0Y2g6Nw0KNCAgSGlnaE1lbSB6b25lOiAx
MDQ4NTcyIHBhZ2VzIGV4Y2VlZHMgZnJlZXNpemUgMA0KNnBzY2k6IHByb2JpbmcgZm9yIGNv
bmR1aXQgbWV0aG9kIGZyb20gRFQuDQo2cHNjaTogUFNDSXYwLjIgZGV0ZWN0ZWQgaW4gZmly
bXdhcmUuDQo2cHNjaTogVXNpbmcgc3RhbmRhcmQgUFNDSSB2MC4yIGZ1bmN0aW9uIElEcw0K
Nk9NQVA1NDMyIEVTMi4wDQo2UEVSQ1BVOiBFbWJlZGRlZCA5IHBhZ2VzL2NwdSBAYzdjYWUw
MDAgczE0NDY0IHI4MTkyIGQxNDIwOCB1MzY4NjQNCjdwY3B1LWFsbG9jOiBzMTQ0NjQgcjgx
OTIgZDE0MjA4IHUzNjg2NCBhbGxvYz05KjQwOTYNCjdwY3B1LWFsbG9jOiBbMF0gMCBbMF0g
MQ0KQnVpbHQgMSB6b25lbGlzdHMgaW4gWm9uZSBvcmRlciwgbW9iaWxpdHkgZ3JvdXBpbmcg
b24uICBUb3RhbCBwYWdlczogMzIwMDANCjVLZXJuZWwgY29tbWFuZCBsaW5lOiBjb25zb2xl
PWh2YzAsMTE1MjAwbjggZWFybHlwcmludGs9eGVuIGRlYnVnIGxvZ2xldmVsPTggcm9vdD0v
ZGV2L21tY2JsazBwMiBydyByb290d2FpdCBmaXhydGMNCjZQSUQgaGFzaCB0YWJsZSBlbnRy
aWVzOiA1MTIgKG9yZGVyOiAtMSwgMjA0OCBieXRlcykNCjZEZW50cnkgY2FjaGUgaGFzaCB0
YWJsZSBlbnRyaWVzOiAxNjM4NCAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQ0KNklub2RlLWNh
Y2hlIGhhc2ggdGFibGUgZW50cmllczogODE5MiAob3JkZXI6IDMsIDMyNzY4IGJ5dGVzKQ0K
NmFsbG9jYXRlZCAyNTgwNDggYnl0ZXMgb2YgcGFnZV9jZ3JvdXANCjZwbGVhc2UgdHJ5ICdj
Z3JvdXBfZGlzYWJsZT1tZW1vcnknIG9wdGlvbiBpZiB5b3UgZG9uJ3Qgd2FudCBtZW1vcnkg
Y2dyb3Vwcw0KTWVtb3J5OiAxMTI5MzZLLzEyOTAyNEsgYXZhaWxhYmxlICg4Nzc3SyBrZXJu
ZWwgY29kZSwgNjQ1SyByd2RhdGEsIDM0MzJLIHJvZGF0YSwgNTM4SyBpbml0LCA5MThLIGJz
cywgMTYwODhLIHJlc2VydmVkLCAwSyBoaWdobWVtKQ0KNVZpcnR1YWwga2VybmVsIG1lbW9y
eSBsYXlvdXQ6DQogICAgdmVjdG9yICA6IDB4ZmZmZjAwMDAgLSAweGZmZmYxMDAwICAgKCAg
IDQga0IpDQogICAgZml4bWFwICA6IDB4ZmZjMDAwMDAgLSAweGZmZTAwMDAwICAgKDIwNDgg
a0IpDQogICAgdm1hbGxvYyA6IDB4Yzg4MDAwMDAgLSAweGZmMDAwMDAwICAgKCA4NzIgTUIp
DQogICAgbG93bWVtICA6IDB4YzAwMDAwMDAgLSAweGM4MDAwMDAwICAgKCAxMjggTUIpDQog
ICAgcGttYXAgICA6IDB4YmZlMDAwMDAgLSAweGMwMDAwMDAwICAgKCAgIDIgTUIpDQogICAg
bW9kdWxlcyA6IDB4YmYwMDAwMDAgLSAweGJmZTAwMDAwICAgKCAgMTQgTUIpDQogICAgICAu
dGV4dCA6IDB4YzAwMDgwMDAgLSAweGMwYmY0OTY0ICAgKDEyMjExIGtCKQ0KICAgICAgLmlu
aXQgOiAweGMwYmY1MDAwIC0gMHhjMGM3Yjg4MCAgICggNTM5IGtCKQ0KICAgICAgLmRhdGEg
OiAweGMwYzdjMDAwIC0gMHhjMGQxZDQ2MCAgICggNjQ2IGtCKQ0KICAgICAgIC5ic3MgOiAw
eGMwZDFkNDYwIC0gMDZTTFVCOiBIV2FsaWduPTY0LCBPcmRlcj0wLTMsIE1pbk9iamVjdHM9
MCwgQ1BVcz0yLCBOb2Rlcz0xDQo2SGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRhdGlvbi4N
CjYgICAgICAgUkNVIGR5bnRpY2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9uIGlz
IGVuYWJsZWQuDQo2ICAgICAgIFJDVSByZXN0cmljdGluZyBDUFVzIGZyb20gTlJfQ1BVUz00
IHRvIG5yX2NwdV9pZHM9Mi4NCjZSQ1U6IEFkanVzdGluZyBnZW9tZXRyeSBmb3IgcmN1X2Zh
bm91dF9sZWFmPTE2LCBucl9jcHVfaWRzPTINCjZOUl9JUlFTOjE2IG5yX2lycXM6MTYgMTYN
CjZPTUFQIGNsb2NrZXZlbnQgc291cmNlOiB0aW1lcjEgYXQgMzI3NjggSHoNCjZzY2hlZF9j
bG9jazogMzIgYml0cyBhdCAzMmtIeiwgcmVzb2x1dGlvbiAzMDUxN25zLCB3cmFwcyBldmVy
eSA2NTUzNjAwMDAwMDAwMG5zDQo2T01BUCBjbG9ja3NvdXJjZTogMzJrX2NvdW50ZXIgYXQg
MzI3NjggSHoNCjBJbnRlcm5hbCBlcnJvcjogT29wcyAtIHVuZGVmaW5lZCBpbnN0cnVjdGlv
bjogMCBbIzFdIFNNUCBBUk0NCmRNb2R1bGVzIGxpbmtlZCBpbjoNCmRDUFU6IDAgUElEOiAw
IENvbW06IHN3YXBwZXIvMCBOb3QgdGFpbnRlZCAzLjE3LjAtcmM0LWFybXY3LWxwYWUteDUg
IzEyDQpkdGFzazogYzBjODhiZTAgdGk6IGMwYzdjMDAwIHRhc2sudGk6IGMwYzdjMDAwDQpQ
QyBpcyBhdCBvbWFwX3NtYzErMHgxMC8weDE4DQpMUiBpcyBhdCBvbWFwNV9yZWFsdGltZV90
aW1lcl9pbml0KzB4NDA4LzB4NDI4DQpwYyA6IFs8YzAwM2E2ZDg+XSAgICBsciA6IFs8YzBj
MDA2ZjA+XSAgICBwc3I6IDYwMDAwMWQzDQpzcCA6IGMwYzdkZjU4ICBpcCA6IDAwMDAwMTA5
ICBmcCA6IGMwZDFkNTAwDQpyMTA6IDAwMDAwMDAwICByOSA6IGMwYzg0NTQwICByOCA6IGMw
YzYzYzI4DQpyNyA6IGM3Y2RhNjZjICByNiA6IGMwZDFlNzE4ICByNSA6IDAwMDAwMDA4ICBy
NCA6IGZhMjQzMjAwDQpyMyA6IDAwNWRjMDAwICByMiA6IDAwMGJiODAwICByMSA6IDAwNWRj
MDAwICByMCA6IDAwNWRjMDAwDQpGbGFnczogblpDdiAgSVJRcyBvZmYgIEZJUXMgb2ZmICBN
b2RlIFNWQ18zMiAgSVNBIEFSTSAgU2VnbWVudCBrZXJuZWwNCkNvbnRyb2w6IDMwYzUzODdk
ICBUYWJsZTogYTgwMDMwMDAgIERBQzogZmZmZmZmZmQNCjBQcm9jZXNzIHN3YXBwZXIvMCAo
cGlkOiAwLCBzdGFjayBsaW1pdCA9IDB4YzBjN2MyNDgpDQowU3RhY2s6ICgweGMwYzdkZjU4
IHRvIDB4YzBjN2UwMDApDQowZGY0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMDAwYmI4MDAgMDA1ZGMwMDANCjBkZjYwOiBmYTI0
MzIwMCAwMDAwMDAwOCBjMGQxZTcxOCBjN2NkYTY2YyBjMGM2M2MyOCBjMGM4NDU0MCAwMDAw
MDAwMCBjMGQxZDUwMA0KMGRmODA6IGMwYzhiMmRjIGMwYzAwNmYwIDAwMDAwMDAxIGM3Y2My
MzQwIDAwMDAwMDAwIGM3ODA2NmY0IGZmZmZmZmZmIGM3Y2MyMzQwDQowZGZhMDogMDAwMDAw
MDAgYzBkMWQ1MDAgZmZmZmZmZmYgYzBiZjViMDAgZmZmZmZmZmYgZmZmZmZmZmYgYzBiZjU2
MDggMDAwMDAwMDANCjBkZmMwOiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBjMGM2M2My
OCAwMDAwMDAwMCBjMGQxZTExNCBjMGM4NDVkMCBjMGM2M2MyNA0KMGRmZTA6IGMwYzhhYTQ4
IGE4MDA3MDAwIDQxMmZjMGYyIDAwMDAwMDAwIDAwMDAwMDAwIGE4MDA4MDg0IDAwMDAwMDAw
IDAwMDAwMDAwDQpbPGMwMDNhNmQ4Pl0gKG9tYXBfc21jMSkgZnJvbSBbPDAwNWRjMDAwPl0g
KDB4NWRjMDAwKQ0KMENvZGU6IGU5MmQ1ZmZjIGUxYTBjMDAwIGUxYTAwMDAxIGY1N2ZmMDRm
IChlMTYwMDA3MCkNCjQtLS1bIGVuZCB0cmFjZSBmMjRiNmM4OGFlMDBmYTlhIF0tLS0NCjBL
ZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogQXR0ZW1wdGVkIHRvIGtpbGwgdGhlIGlkbGUg
dGFzayENCjAtLS1bIGVuZCBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogQXR0ZW1wdGVk
IHRvIGtpbGwgdGhlIGlkbGUgdGFzayENCjVyYW5kb206IG5vbmJsb2NraW5nIHBvb2wgaXMg
aW5pdGlhbGl6ZWQ=
--------------050508080101040303040102
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xen.org
http://lists.xen.org/xen-users
--------------050508080101040303040102--


From xen-devel-bounces@lists.xen.org Tue Sep 30 07:58:30 2014
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Sep 2014 07:58:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1XYsKA-0002C7-IF; Tue, 30 Sep 2014 07:58:18 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fengguang.wu@intel.com>) id 1XYsK8-0002C2-28
	for xen-devel@lists.xenproject.org; Tue, 30 Sep 2014 07:58:16 +0000
Received: from [193.109.254.147:13527] by server-13.bemta-14.messagelabs.com
	id 4F/6A-19311-7926A245; Tue, 30 Sep 2014 07:58:15 +0000
X-Env-Sender: fengguang.wu@intel.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1412063884!12387481!1
X-Originating-IP: [134.134.136.65]
X-SpamReason: No, hits=0.7 required=7.0 tests=BODY_RANDOM_LONG, UPPERCASE_50_75
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13624 invoked from network); 30 Sep 2014 07:58:05 -0000
Received: from mga03.intel.com (HELO mga03.intel.com) (134.134.136.65)
	by server-13.tower-27.messagelabs.com with SMTP;
	30 Sep 2014 07:58:05 -0000
Received: from orsmga001.jf.intel.com ([10.7.209.18])
	by orsmga103.jf.intel.com with ESMTP; 30 Sep 2014 00:55:48 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.04,625,1406617200"; 
	d="log'?scan'208";a="581099611"
Received: from wfg-t540p.sh.intel.com ([10.239.198.202])
	by orsmga001.jf.intel.com with ESMTP; 30 Sep 2014 00:57:52 -0700
Received: from wfg by wfg-t540p.sh.intel.com with local (Exim 4.84)
	(envelope-from <fengguang.wu@intel.com>)
	id 1XYsJj-0002X1-NB; Tue, 30 Sep 2014 15:57:51 +0800
Date: Tue, 30 Sep 2014 15:57:51 +0800
From: Fengguang Wu <fengguang.wu@intel.com>
To: Andy Lutomirski <luto@amacapital.net>
Message-ID: <20140930075751.GB9561@wfg-t540p.sh.intel.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="St7VIuEGZ6dlpu13"
Content-Disposition: inline
User-Agent: Heirloom mailx 12.5 6/20/10
Cc: Yuanhan Liu <yuanhan.liu@intel.com>, linux-kernel@vger.kernel.org,
	Su Tao <tao.su@intel.com>, xen-devel@lists.xenproject.org,
	LKP <lkp@01.org>, Jet Chen <jet.chen@intel.com>
Subject: [Xen-devel] [x86_64,
 vsyscall] Kernel panic - not syncing: Attempted to kill init!
 exitcode=0x0000000b
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org


--St7VIuEGZ6dlpu13
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi Andy,

0day kernel testing robot got the below dmesg and the first bad commit is

git://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git x86/vsyscall

commit caae204be184a575af2c02b837d818278f921323
Author:     Andy Lutomirski <luto@amacapital.net>
AuthorDate: Mon Jun 16 18:50:12 2014 -0700
Commit:     Andy Lutomirski <luto@amacapital.net>
CommitDate: Tue Sep 23 10:02:10 2014 -0700

    x86_64,vsyscall: Make vsyscall emulation configurable
    
    This adds CONFIG_X86_VSYSCALL_EMULATION, guarded by CONFIG_EXPERT.
    Turning it off completely disables vsyscall emulation, saving ~3.5k
    for vsyscall_64.c, 4k for vsyscall_emu_64.S (the fake vsyscall
    page), some tiny amount of core mm code that supports a gate area,
    and possibly 4k for a wasted pagetable.  The latter is because the
    vsyscall addresses are misaligned and fit poorly in the fixmap.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>

+-----------------------------------------------------------+------------+------------+------------------+
|                                                           | 2df87bdfa6 | caae204be1 | v3.17-rc6_092402 |
+-----------------------------------------------------------+------------+------------+------------------+
| boot_successes                                            | 156        | 27         | 47               |
| boot_failures                                             | 0          | 25         | 264              |
| Kernel_panic-not_syncing:Attempted_to_kill_init_exitcode= | 0          | 25         | 264              |
+-----------------------------------------------------------+------------+------------+------------------+

[    5.248382] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[    5.356741] init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp 00007fff5e2eecf8 error 15
[    5.357984] init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp 00007fff5e2ee1b8 error 15
[    5.359253] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    5.359253] 
[    5.360439] CPU: 0 PID: 1 Comm: init Not tainted 3.17.0-rc1-00169-gcaae204 #1
[    5.361364] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    5.362114]  0000000000000000 ffff88001284fcb0 ffffffff814a2ce5 ffff88001284fd30
[    5.363152]  ffffffff814a1c51 0000000000000010 ffff88001284fd40 ffff88001284fcd8
[    5.363611]  ffff88001284fd78 000000000000000b 0000000000000000 ffff880012848740
[    5.363611] Call Trace:
[    5.363611]  [<ffffffff814a2ce5>] dump_stack+0x19/0x1b
[    5.363611]  [<ffffffff814a1c51>] panic+0xc4/0x1ef
[    5.363611]  [<ffffffff81090d2c>] do_exit+0x3bb/0x81e
[    5.363611]  [<ffffffff811198c5>] ? __kmem_cache_free+0x11/0x2e
[    5.363611]  [<ffffffff8111992c>] ? kmem_cache_free+0x31/0x33
[    5.363611]  [<ffffffff810962eb>] ? __sigqueue_free+0x33/0x36
[    5.363611]  [<ffffffff81091e90>] do_group_exit+0x45/0xbf
[    5.363611]  [<ffffffff81098df9>] get_signal+0x53d/0x568
[    5.363611]  [<ffffffff81043039>] ? bad_area_nosemaphore+0xe/0x10
[    5.363611]  [<ffffffff81028218>] do_signal+0x23/0x885
[    5.363611]  [<ffffffff814a0000>] ? free_area_init_node+0xac/0x36e
[    5.363611]  [<ffffffff81028a96>] do_notify_resume+0x1c/0x75
[    5.363611]  [<ffffffff814a927b>] retint_signal+0x48/0x8d
[    5.363611] Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffff9fffffff)

Elapsed time: 10

git bisect start ddc5057b07ef7126431d5df5f5b176154896f560 0f33be009b89d2268e94194dc4fd01a7851b6d51 --
git bisect good ca66f746334c4a3abf469f758c9b0633987bc876  # 19:56     21+      0  Merge 'linuxtv-media/devel-3.17-rc6' into devel-hourly-2014092402
git bisect good 46eba17a40aaafce6a606447c1fba1f316c331f7  # 20:09     21+      0  Merge 'xen-tip/devel/for-linus-3.18' into devel-hourly-2014092402
git bisect good c68691d04897b6ecdeea62d994db0442388df6ff  # 20:59     21+      0  Merge 'pinctrl/devel' into devel-hourly-2014092402
git bisect  bad 4c8c7dc7eaee7651e7f551879bcbf4bf47accc3d  # 21:24     16-      5  Merge 'kgene-samsung/for-next' into devel-hourly-2014092402
git bisect good 351b6700979b25afd3bf9bac32ebad2d0d89a696  # 21:34     52+      0  Merge 'pinctrl/for-next' into devel-hourly-2014092402
git bisect  bad 34e91dce5b5a0df1dea8628d0ab8a349128a5d78  # 21:46      0-     52  Merge 'luto/x86/vsyscall' into devel-hourly-2014092402
git bisect good fcfee6f8749af14d96373a9e2656354ad0b95499  # 21:59     52+      0  x86_64,vdso: Remove jiffies from the vvar page
git bisect good 2dee11c0eb4eb9a767fa87764c91fda18d14eff1  # 22:07     52+      0  x86_64,vsyscall: Turn vsyscalls all the way off when vsyscall=none
git bisect  bad caae204be184a575af2c02b837d818278f921323  # 22:14      0-      2  x86_64,vsyscall: Make vsyscall emulation configurable
git bisect good 2df87bdfa6ac9076ed80bb83764b8b0f3ec396bd  # 22:22     52+      0  x86_64,vsyscall: Rewrite comment and clean up headers in vsyscall code
# first bad commit: [caae204be184a575af2c02b837d818278f921323] x86_64,vsyscall: Make vsyscall emulation configurable
git bisect good 2df87bdfa6ac9076ed80bb83764b8b0f3ec396bd  # 22:24    156+      0  x86_64,vsyscall: Rewrite comment and clean up headers in vsyscall code
git bisect  bad ddc5057b07ef7126431d5df5f5b176154896f560  # 22:24      0-    264  0day head guard for 'devel-hourly-2014092402'
git bisect good f4cb707e7ad9727a046b463232f2de166e327d3e  # 23:06    156+      0  Merge tag 'pm+acpi-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
git bisect good 4d8426f9ac601db2a64fa7be64051d02b9c9fe01  # 23:22    156+      0  Add linux-next specific files for 20140926


This script may reproduce the error.

----------------------------------------------------------------------------
#!/bin/bash

kernel=$1
initrd=yocto-minimal-x86_64.cgz

wget --no-clobber https://github.com/fengguang/reproduce-kernel-bug/raw/master/initrd/$initrd

kvm=(
	qemu-system-x86_64
	-enable-kvm
	-cpu Haswell,+smep,+smap
	-kernel $kernel
	-initrd $initrd
	-m 320
	-smp 1
	-net nic,vlan=1,model=e1000
	-net user,vlan=1
	-boot order=nc
	-no-reboot
	-watchdog i6300esb
	-rtc base=localtime
	-serial stdio
	-display none
	-monitor null 
)

append=(
	hung_task_panic=1
	earlyprintk=ttyS0,115200
	debug
	apic=debug
	sysrq_always_enabled
	rcupdate.rcu_cpu_stall_timeout=100
	panic=-1
	softlockup_panic=1
	nmi_watchdog=panic
	oops=panic
	load_ramdisk=2
	prompt_ramdisk=0
	console=ttyS0,115200
	console=tty0
	vga=normal
	root=/dev/ram0
	rw
	drbd.minor_count=8
)

"${kvm[@]}" --append "${append[*]}"
----------------------------------------------------------------------------

Thanks,
Fengguang

--St7VIuEGZ6dlpu13
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="dmesg-yocto-kbuild-29:20140926221247:x86_64-randconfig-s1-09240351:3.17.0-rc1-00169-gcaae204:1"
Content-Transfer-Encoding: quoted-printable

early console in setup code
Probing EDD (edd=3Doff to disable)... ok
[    0.000000] Linux version 3.17.0-rc1-00169-gcaae204 (kbuild@snb) (gcc ve=
rsion 4.9.1 (Debian 4.9.1-11) ) #1 Fri Sep 26 22:13:15 CST 2014
[    0.000000] Command line: hung_task_panic=3D1 earlyprintk=3DttyS0,115200=
 debug apic=3Ddebug sysrq_always_enabled rcupdate.rcu_cpu_stall_timeout=3D1=
00 panic=3D-1 softlockup_panic=3D1 nmi_watchdog=3Dpanic oops=3Dpanic load_r=
amdisk=3D2 prompt_ramdisk=3D0 console=3DttyS0,115200 console=3Dtty0 vga=3Dn=
ormal  root=3D/dev/ram0 rw link=3D/kbuild-tests/run-queue/kvm/x86_64-randco=
nfig-s1-09240351/linux-devel:devel-hourly-2014092402:caae204be184a575af2c02=
b837d818278f921323:bisect-linux-6/.vmlinuz-caae204be184a575af2c02b837d81827=
8f921323-20140926221333-24-kbuild branch=3Dlinux-devel/devel-hourly-2014092=
402 BOOT_IMAGE=3D/kernel/x86_64-randconfig-s1-09240351/caae204be184a575af2c=
02b837d818278f921323/vmlinuz-3.17.0-rc1-00169-gcaae204 drbd.minor_count=3D8
[    0.000000] KERNEL supported cpus:
[    0.000000] CPU: vendor_id 'GenuineIntel' unknown, using generic init.
[    0.000000] CPU: Your system may be unstable.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reser=
ved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reser=
ved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000013ffdfff] usable
[    0.000000] BIOS-e820: [mem 0x0000000013ffe000-0x0000000013ffffff] reser=
ved
[    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reser=
ved
[    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reser=
ved
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.4 present.
[    0.000000] DMI: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.000000] Hypervisor detected: KVM
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable =3D=3D> rese=
rved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn =3D 0x13ffe max_arch_pfn =3D 0x400000000
[    0.000000] Scan for SMP in [mem 0x00000000-0x000003ff]
[    0.000000] Scan for SMP in [mem 0x0009fc00-0x0009ffff]
[    0.000000] Scan for SMP in [mem 0x000f0000-0x000fffff]
[    0.000000] found SMP MP-table at [mem 0x000fdb00-0x000fdb0f] mapped at =
[ffff8800000fdb00]
[    0.000000]   mpc: fdb10-fdbf0
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x026de000, 0x026defff] PGTABLE
[    0.000000] BRK [0x026df000, 0x026dffff] PGTABLE
[    0.000000] BRK [0x026e0000, 0x026e0fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x13a00000-0x13bfffff]
[    0.000000]  [mem 0x13a00000-0x13bfffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x10000000-0x139fffff]
[    0.000000]  [mem 0x10000000-0x139fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x0fffffff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x0fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x13c00000-0x13ffdfff]
[    0.000000]  [mem 0x13c00000-0x13dfffff] page 2M
[    0.000000]  [mem 0x13e00000-0x13ffdfff] page 4k
[    0.000000] BRK [0x026e1000, 0x026e1fff] PGTABLE
[    0.000000] RAMDISK: [mem 0x13ce6000-0x13feffff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000FD9A0 000014 (v00 BOCHS )
[    0.000000] ACPI: RSDT 0x0000000013FFE4B0 000034 (v01 BOCHS  BXPCRSDT 00=
000001 BXPC 00000001)
[    0.000000] ACPI: FACP 0x0000000013FFFF80 000074 (v01 BOCHS  BXPCFACP 00=
000001 BXPC 00000001)
[    0.000000] ACPI: DSDT 0x0000000013FFE4F0 0011A9 (v01 BXPC   BXDSDT   00=
000001 INTL 20100528)
[    0.000000] ACPI: FACS 0x0000000013FFFF40 000040
[    0.000000] ACPI: SSDT 0x0000000013FFF800 000735 (v01 BOCHS  BXPCSSDT 00=
000001 BXPC 00000001)
[    0.000000] ACPI: APIC 0x0000000013FFF6E0 000078 (v01 BOCHS  BXPCAPIC 00=
000001 BXPC 00000001)
[    0.000000] ACPI: HPET 0x0000000013FFF6A0 000038 (v01 BOCHS  BXPCHPET 00=
000001 BXPC 00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff7fc000 (        fee00000)
[    0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[    0.000000] kvm-clock: cpu 0, msr 0:13ffd001, primary cpu clock
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0x13ffdfff]
[    0.000000] On node 0 totalpages: 81820
[    0.000000]   DMA zone: 56 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3998 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 1064 pages used for memmap
[    0.000000]   DMA32 zone: 77822 pages, LIFO batch:15
[    0.000000] ACPI: PM-Timer IO Port: 0xb008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff7fc000 (        fee00000)
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x00] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-=
23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 00, APIC ID 0, APIC =
INT 02
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 05, APIC ID 0, APIC =
INT 05
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 09, APIC ID 0, APIC =
INT 09
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0a, APIC ID 0, APIC =
INT 0a
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0b, APIC ID 0, APIC =
INT 0b
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 01, APIC ID 0, APIC =
INT 01
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 03, APIC ID 0, APIC =
INT 03
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 04, APIC ID 0, APIC =
INT 04
[    0.000000] ACPI: IRQ5 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 06, APIC ID 0, APIC =
INT 06
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 07, APIC ID 0, APIC =
INT 07
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 08, APIC ID 0, APIC =
INT 08
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] ACPI: IRQ10 used by override.
[    0.000000] ACPI: IRQ11 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0c, APIC ID 0, APIC =
INT 0c
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0d, APIC ID 0, APIC =
INT 0d
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0e, APIC ID 0, APIC =
INT 0e
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0f, APIC ID 0, APIC =
INT 0f
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] mapped IOAPIC to ffffffffff7fb000 (fec00000)
[    0.000000] KVM setup async PF for cpu 0
[    0.000000] kvm-stealtime: cpu 0, msr 1a2a500
[    0.000000] e820: [mem 0x14000000-0xfeffbfff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on KVM
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=3D1*32768
[    0.000000] pcpu-alloc: [0] 0=20
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Tota=
l pages: 80679
[    0.000000] Kernel command line: hung_task_panic=3D1 earlyprintk=3DttyS0=
,115200 debug apic=3Ddebug sysrq_always_enabled rcupdate.rcu_cpu_stall_time=
out=3D100 panic=3D-1 softlockup_panic=3D1 nmi_watchdog=3Dpanic oops=3Dpanic=
 load_ramdisk=3D2 prompt_ramdisk=3D0 console=3DttyS0,115200 console=3Dtty0 =
vga=3Dnormal  root=3D/dev/ram0 rw link=3D/kbuild-tests/run-queue/kvm/x86_64=
-randconfig-s1-09240351/linux-devel:devel-hourly-2014092402:caae204be184a57=
5af2c02b837d818278f921323:bisect-linux-6/.vmlinuz-caae204be184a575af2c02b83=
7d818278f921323-20140926221333-24-kbuild branch=3Dlinux-devel/devel-hourly-=
2014092402 BOOT_IMAGE=3D/kernel/x86_64-randconfig-s1-09240351/caae204be184a=
575af2c02b837d818278f921323/vmlinuz-3.17.0-rc1-00169-gcaae204 drbd.minor_co=
unt=3D8
[    0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 byt=
es)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 byte=
s)
[    0.000000] xsave: enabled xstate_bv 0x7, cntxt size 0x340 using standar=
d form
[    0.000000] Memory: 293856K/327280K available (4783K kernel code, 555K r=
wdata, 2556K rodata, 704K init, 11908K bss, 33424K reserved)
[    0.000000] NR_IRQS:4352 nr_irqs:256 0
[    0.000000] console [ttyS0] enabled
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc.,=
 Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.000000] ... MAX_LOCKDEP_CHAINS:      65536
[    0.000000] ... CHAINHASH_SIZE:          32768
[    0.000000]  memory used by lock dependency info: 8127 kB
[    0.000000]  per task-struct memory footprint: 1920 bytes
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Detected 2693.452 MHz processor
[    0.020000] Calibrating delay loop (skipped) preset value.. 5386.90 Bogo=
MIPS (lpj=3D26934520)
[    0.020000] pid_max: default: 32768 minimum: 301
[    0.020000] ACPI: Core revision 20140724
[    0.023037] ACPI: All ACPI Tables successfully acquired
[    0.023847] Security Framework initialized
[    0.024412] Smack:  Initializing.
[    0.030015] AppArmor: AppArmor disabled by boot time parameter
[    0.030812] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
[    0.037435] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 by=
tes)
[    0.038806] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0
[    0.038806] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0
[    0.040008] CPU: GenuineIntel Intel Core Processor (Haswell) (fam: 06, m=
odel: 3c, stepping: 01)
[    0.051178] Performance Events: no PMU driver, software events only.
[    0.054538] Getting VERSION: 1050014
[    0.055042] Getting VERSION: 1050014
[    0.055581] Getting ID: 0
[    0.055946] Getting ID: ff000000
[    0.060022] Getting LVT0: 8700
[    0.060445] Getting LVT1: 8400
[    0.060928] enabled ExtINT on CPU#0
[    0.065925] ENABLING IO-APIC IRQs
[    0.066410] NMI watchdog: disabled (cpu0): hardware events not enabled
[    0.067316] init IO_APIC IRQs
[    0.067719]  apic 0 pin 0 not connected
[    0.070030] IOAPIC[0]: Set routing entry (0-1 -> 0x31 -> IRQ 1 Mode:0 Ac=
tive:0 Dest:1)
[    0.071839] IOAPIC[0]: Set routing entry (0-2 -> 0x30 -> IRQ 0 Mode:0 Ac=
tive:0 Dest:1)
[    0.072966] IOAPIC[0]: Set routing entry (0-3 -> 0x33 -> IRQ 3 Mode:0 Ac=
tive:0 Dest:1)
[    0.080037] IOAPIC[0]: Set routing entry (0-4 -> 0x34 -> IRQ 4 Mode:0 Ac=
tive:0 Dest:1)
[    0.082820] IOAPIC[0]: Set routing entry (0-5 -> 0x35 -> IRQ 5 Mode:1 Ac=
tive:0 Dest:1)
[    0.083875] IOAPIC[0]: Set routing entry (0-6 -> 0x36 -> IRQ 6 Mode:0 Ac=
tive:0 Dest:1)
[    0.084927] IOAPIC[0]: Set routing entry (0-7 -> 0x37 -> IRQ 7 Mode:0 Ac=
tive:0 Dest:1)
[    0.090030] IOAPIC[0]: Set routing entry (0-8 -> 0x38 -> IRQ 8 Mode:0 Ac=
tive:0 Dest:1)
[    0.091088] IOAPIC[0]: Set routing entry (0-9 -> 0x39 -> IRQ 9 Mode:1 Ac=
tive:0 Dest:1)
[    0.097294] IOAPIC[0]: Set routing entry (0-10 -> 0x3a -> IRQ 10 Mode:1 =
Active:0 Dest:1)
[    0.098424] IOAPIC[0]: Set routing entry (0-11 -> 0x3b -> IRQ 11 Mode:1 =
Active:0 Dest:1)
[    0.100031] IOAPIC[0]: Set routing entry (0-12 -> 0x3c -> IRQ 12 Mode:0 =
Active:0 Dest:1)
[    0.101175] IOAPIC[0]: Set routing entry (0-13 -> 0x3d -> IRQ 13 Mode:0 =
Active:0 Dest:1)
[    0.103983] IOAPIC[0]: Set routing entry (0-14 -> 0x3e -> IRQ 14 Mode:0 =
Active:0 Dest:1)
[    0.105065] IOAPIC[0]: Set routing entry (0-15 -> 0x3f -> IRQ 15 Mode:0 =
Active:0 Dest:1)
[    0.110026]  apic 0 pin 16 not connected
[    0.110607]  apic 0 pin 17 not connected
[    0.111115]  apic 0 pin 18 not connected
[    0.117539]  apic 0 pin 19 not connected
[    0.118127]  apic 0 pin 20 not connected
[    0.118637]  apic 0 pin 21 not connected
[    0.119172]  apic 0 pin 22 not connected
[    0.120010]  apic 0 pin 23 not connected
[    0.120675] ..TIMER: vector=3D0x30 apic1=3D0 pin1=3D2 apic2=3D-1 pin2=3D=
-1
[    0.122074] TSC deadline timer enabled
[    0.129227] evm: security.selinux
[    0.130015] evm: security.SMACK64
[    0.130512] evm: security.capability
[    0.131654] regulator-dummy: no parameters
[    0.133844] NET: Registered protocol family 16
[    0.136219] cpuidle: using governor ladder
[    0.136768] cpuidle: using governor menu
[    0.137529] ACPI: bus type PCI registered
[    0.138239] PCI: Using configuration type 1 for base access
[    0.143720] Running resizable hashtable tests...
[    0.144345]   Adding 2048 keys
[    0.149228]   Traversal complete: counted=3D2048, nelems=3D2048, entries=
=3D2048
[    0.150124]   Table expansion iteration 0...
[    0.150958]   Verifying lookups...
[    0.151521]   Table expansion iteration 1...
[    0.153120]   Verifying lookups...
[    0.153713]   Table expansion iteration 2...
[    0.159581]   Verifying lookups...
[    0.160121]   Table expansion iteration 3...
[    0.164152]   Verifying lookups...
[    0.164836]   Table shrinkage iteration 0...
[    0.166334]   Verifying lookups...
[    0.166881]   Table shrinkage iteration 1...
[    0.167567]   Verifying lookups...
[    0.168126]   Table shrinkage iteration 2...
[    0.170081]   Verifying lookups...
[    0.170666]   Table shrinkage iteration 3...
[    0.172564]   Verifying lookups...
[    0.173105]   Deleting 2048 keys
[    0.174264] ACPI: Added _OSI(Module Device)
[    0.174823] ACPI: Added _OSI(Processor Device)
[    0.178926] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.179586] ACPI: Added _OSI(Processor Aggregator Device)
[    0.195701] ACPI: Interpreter enabled
[    0.196218] ACPI: (supports S0 S5)
[    0.196658] ACPI: Using IOAPIC for interrupt routing
[    0.197342] PCI: Using host bridge windows from ACPI; if necessary, use =
"pci=3Dnocrs" and report a bug
[    0.219227] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.220016] acpi PNP0A03:00: _OSC: OS supports [Segments]
[    0.225376] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[    0.227511] PCI host bridge to bus 0000:00
[    0.228053] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.228759] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.230015] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.230798] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bfff=
f]
[    0.231713] pci_bus 0000:00: root bus resource [mem 0x80000000-0xfebffff=
f]
[    0.232713] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
[    0.237038] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100
[    0.238546] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180
[    0.243127] pci 0000:00:01.1: reg 0x20: [io  0xc040-0xc04f]
[    0.248566] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io  0x01f0-0x=
01f7]
[    0.249573] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io  0x03f6]
[    0.250015] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io  0x0170-0x=
0177]
[    0.250923] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io  0x0376]
[    0.254385] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
[    0.256293] pci 0000:00:01.3: quirk: [io  0xb000-0xb03f] claimed by PIIX=
4 ACPI
[    0.257424] pci 0000:00:01.3: quirk: [io  0xb100-0xb10f] claimed by PIIX=
4 SMB
[    0.260460] pci 0000:00:02.0: [1013:00b8] type 00 class 0x030000
[    0.270077] pci 0000:00:02.0: reg 0x10: [mem 0xfc000000-0xfdffffff pref]
[    0.273839] pci 0000:00:02.0: reg 0x14: [mem 0xfebf0000-0xfebf0fff]
[    0.295670] pci 0000:00:02.0: reg 0x30: [mem 0xfebe0000-0xfebeffff pref]
[    0.297364] pci 0000:00:03.0: [8086:100e] type 00 class 0x020000
[    0.301839] pci 0000:00:03.0: reg 0x10: [mem 0xfeba0000-0xfebbffff]
[    0.308418] pci 0000:00:03.0: reg 0x14: [io  0xc000-0xc03f]
[    0.320019] pci 0000:00:03.0: reg 0x30: [mem 0xfebc0000-0xfebdffff pref]
[    0.321344] pci 0000:00:04.0: [8086:25ab] type 00 class 0x088000
[    0.324982] pci 0000:00:04.0: reg 0x10: [mem 0xfebf1000-0xfebf100f]
[    0.335388] pci_bus 0000:00: on NUMA node 0
[    0.341103] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[    0.342227] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[    0.343464] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[    0.349574] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[    0.350346] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
[    0.351638] ACPI: Enabled 16 GPEs in block 00 to 0F
[    0.354996] vgaarb: device added: PCI:0000:00:02.0,decodes=3Dio+mem,owns=
=3Dio+mem,locks=3Dnone
[    0.356703] vgaarb: loaded
[    0.357080] vgaarb: bridge control possible 0000:00:02.0
[    0.358078] pps_core: LinuxPPS API ver. 1 registered
[    0.358721] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo =
Giometti <giometti@linux.it>
[    0.360043] PTP clock support registered
[    0.360892] PCI: Using ACPI for IRQ routing
[    0.366036] PCI: pci_cache_line_size set to 64 bytes
[    0.366807] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
[    0.367583] e820: reserve RAM buffer [mem 0x13ffe000-0x13ffffff]
[    0.370588] NetLabel: Initializing
[    0.371067] NetLabel:  domain hash size =3D 128
[    0.375156] NetLabel:  protocols =3D UNLABELED CIPSOv4
[    0.375901] NetLabel:  unlabeled traffic allowed by default
[    0.376811] nfc: nfc_init: NFC Core ver 0.1
[    0.377436] NET: Registered protocol family 39
[    0.380293] cfg80211: Calling CRDA to update world regulatory domain
[    0.385173] Switched to clocksource kvm-clock
[    0.386020] FS-Cache: Loaded
[    0.386517] pnp: PnP ACPI init
[    0.387106] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.387106] pnp 00:01: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.390376] pnp 00:02: Plug and Play ACPI device, IDs PNP0f13 (active)
[    0.391294] pnp 00:03: [dma 2]
[    0.391764] pnp 00:03: Plug and Play ACPI device, IDs PNP0700 (active)
[    0.392880] pnp 00:04: Plug and Play ACPI device, IDs PNP0400 (active)
[    0.393870] pnp 00:05: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.399984] pnp 00:06: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.401315] pnp: PnP ACPI: found 7 devices
[    0.412510] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.413247] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.413969] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.419359] pci_bus 0000:00: resource 7 [mem 0x80000000-0xfebfffff]
[    0.420299] NET: Registered protocol family 2
[    0.421289] TCP established hash table entries: 4096 (order: 3, 32768 by=
tes)
[    0.422272] TCP bind hash table entries: 4096 (order: 6, 262144 bytes)
[    0.427327] TCP: Hash tables configured (established 4096 bind 4096)
[    0.428244] TCP: reno registered
[    0.428678] UDP hash table entries: 256 (order: 3, 40960 bytes)
[    0.432948] UDP-Lite hash table entries: 256 (order: 3, 40960 bytes)
[    0.434079] NET: Registered protocol family 1
[    0.436485] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[    0.437308] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[    0.438079] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[    0.438952] pci 0000:00:02.0: Boot video device
[    0.443096] PCI: CLS 0 bytes, default 64
[    0.443907] Unpacking initramfs...
[    0.656538] Freeing initrd memory: 3112K (ffff880013ce6000 - ffff880013f=
f0000)
[    0.658510] cryptomgr_test (16) used greatest stack depth: 14888 bytes l=
eft
[    0.664451] AVX version of gcm_enc/dec engaged.
[    0.666792] AES CTR mode by8 optimization enabled
[    0.673688] futex hash table entries: 256 (order: 2, 20480 bytes)
[    0.674521] Initialise system trusted keyring
[    0.676474] audit: initializing netlink subsys (disabled)
[    0.677274] audit: type=3D2000 audit(1411740757.417:1): initialized
[    0.678295] Kprobe smoke test: started
[    0.697846] Kprobe smoke test: passed successfully
[    0.702725] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.704248] DLM installed
[    0.709898] FS-Cache: Netfs 'cifs' registered for caching
[    0.710668] Key type cifs.spnego registered
[    0.711227] fuse init (API version 7.23)
[    0.711877] 9p: Installing v9fs 9p2000 file system support
[    0.714825] FS-Cache: Netfs '9p' registered for caching
[    0.715557] FS-Cache: Netfs 'ceph' registered for caching
[    0.719806] ceph: loaded (mds proto 32)
[    0.720356] msgmni has been set to 580
[    0.725098] Key type asymmetric registered
[    0.729693] Asymmetric key parser 'x509' registered
[    0.730365] test_string_helpers: Running tests...
[    0.731191] rbtree testing -> 26118 cycles
[    1.801774] augmented rbtree testing -> 39138 cycles
[    3.357964] tsc: Refined TSC clocksource calibration: 2693.503 MHz
[    3.358934] no IO addresses supplied
[    3.359585] ipmi message handler version 39.2
[    3.360223] ipmi device interface
[    3.360719] IPMI Watchdog: driver initialized
[    3.361584] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/inpu=
t/input0
[    3.362608] ACPI: Power Button [PWRF]
[    3.467567] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    3.518506] 00:05: ttyS0 at I/O 0x3f8 (irq =3D 4, base_baud =3D 115200) =
is a 16550A
[    3.520736] Non-volatile memory driver v1.3
[    3.521346] Silicon Labs C2 port support v. 0.51.0 - (C) 2007 Rodolfo Gi=
ometti
[    3.522564] c2port c2port0: C2 port uc added
[    3.523114] c2port c2port0: uc flash has 30 blocks x 512 bytes (15360 by=
tes total)
[    3.533923] Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
[    3.536677] libphy: Fixed MDIO Bus: probed
[    3.537653] vcan: Virtual CAN interface driver
[    3.538247] CAN device driver interface
[    3.538830] sja1000 CAN netdevice driver
[    3.539918] ieee802154fakelb ieee802154fakelb: added ieee802154 hardware
[    3.540983] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x6=
0,0x64 irq 1,12
[    3.542953] serio: i8042 KBD port at 0x60,0x64 irq 1
[    3.554804] serio: i8042 AUX port at 0x60,0x64 irq 12
[    3.555565] Driver for 1-wire Dallas network protocol.
[    3.556525] 1-Wire driver for the DS2760 battery monitor chip - (c) 2004=
-2005, Szabolcs Gyurko
[    3.557763] acquirewdt: WDT driver for Acquire single board computer ini=
tialising
[    3.558872] acquirewdt: I/O address 0x0043 already in use
[    3.559570] acquirewdt: probe of acquirewdt failed with error -5
[    3.560643] it87_wdt: no device
[    3.561166] cpu5wdt: init success
[    3.561675] w83877f_wdt: cannot register miscdev on minor=3D130 (err=3D-=
16)
[    3.562569] w83977f_wdt: driver v1.00
[    3.563062] w83977f_wdt: cannot register miscdev on minor=3D130 (err=3D-=
16)
[    3.563955] sbc_epx_c3: cannot register miscdev on minor=3D130 (err=3D-1=
6)
[    3.576872] dcdbas dcdbas: Dell Systems Management Base Driver (version =
5.6.0-3.2)
[    3.578095] pktgen: Packet Generator for packet performance testing. Ver=
sion: 2.74
[    3.579250] Netfilter messages via NETLINK v0.30.
[    3.579880] nfnl_acct: registering with nfnetlink.
[    3.580810] ipip: IPv4 over IPv4 tunneling driver
[    3.581843] ip_tables: (C) 2000-2006 Netfilter Core Team
[    3.582579] arp_tables: (C) 2002 David S. Miller
[    3.583193] TCP: cubic registered
[    3.583641] NET: Registered protocol family 17
[    3.584316] Bridge firewalling registered
[    3.594661] Ebtables v2.0 registered
[    3.595267] NET: Registered protocol family 9
[    3.595859] X25: Linux Version 0.2
[    3.596321] can: controller area network core (rev 20120528 abi 9)
[    3.605334] NET: Registered protocol family 29
[    3.605939] can: netlink gateway (rev 20130117) max_hops=3D1
[    3.606767] NET: Registered protocol family 35
[    3.607387] 8021q: 802.1Q VLAN Support v1.8
[    3.608377] sctp: Hash tables configured (established 2340 bind 2048)
[    3.612476] sctp_probe: probe registered (port=3D0/fwmark=3D0) bufsize=
=3D65536
[    3.613354] tipc: Activated (version 2.0.0)
[    3.624689] NET: Registered protocol family 30
[    3.625548] tipc: Started in single node mode
[    3.626225] 9pnet: Installing 9P2000 support
[    3.626859] NET: Registered protocol family 36
[    3.627474] Key type dns_resolver registered
[    3.628064] Key type ceph registered
[    3.628613] libceph: loaded (mon/osd proto 15/24)
[    3.629508] batman_adv: B.A.T.M.A.N. advanced 2014.4.0 (compatibility ve=
rsion 15) loaded
[    3.630807]=20
[    3.630807] printing PIC contents
[    3.631445] ... PIC  IMR: ffff
[    3.631888] ... PIC  IRR: 1012
[    3.632298] ... PIC  ISR: 0000
[    3.632720] ... PIC ELCR: 0c00
[    3.633176] printing local APIC contents on CPU#0/0:
[    3.640614] ... APIC ID:      00000000 (0)
[    3.640614] ... APIC VERSION: 01050014
[    3.640614] ... APIC TASKPRI: 00000000 (00)
[    3.640614] ... APIC PROCPRI: 00000000
[    3.640614] ... APIC LDR: 01000000
[    3.640614] ... APIC DFR: ffffffff
[    3.640614] ... APIC SPIV: 000001ff
[    3.640614] ... APIC ISR field:
[    3.640614] 000000000000000000000000000000000000000000000000000000000000=
0000
[    3.640614] ... APIC TMR field:
[    3.640614] 000000000200000000000000000000000000000000000000000000000000=
0000
[    3.640614] ... APIC IRR field:
[    3.640614] 000000000000000000000000000000000000000000000000000000000000=
8000
[    3.640614] ... APIC ESR: 00000000
[    3.640614] ... APIC ICR: 00000831
[    3.640614] ... APIC ICR2: 01000000
[    3.640614] ... APIC LVTT: 000400ef
[    3.640614] ... APIC LVTPC: 00010000
[    3.640614] ... APIC LVT0: 00010700
[    3.640614] ... APIC LVT1: 00000400
[    3.640614] ... APIC LVTERR: 000000fe
[    3.640614] ... APIC TMICT: 00000000
[    3.640614] ... APIC TMCCT: 00000000
[    3.640614] ... APIC TDCR: 00000000
[    3.640614]=20
[    3.667608] number of MP IRQ sources: 15.
[    3.668129] number of IO-APIC #0 registers: 24.
[    3.668719] testing the IO APIC.......................
[    3.669392] IO APIC #0......
[    3.669779] .... register #00: 00000000
[    3.670289] .......    : physical APIC id: 00
[    3.670858] .......    : Delivery Type: 0
[    3.671373] .......    : LTS          : 0
[    3.671898] .... register #01: 00170011
[    3.672391] .......     : max redirection entries: 17
[    3.673045] .......     : PRQ implemented: 0
[    3.673595] .......     : IO APIC version: 11
[    3.685285] .... register #02: 00000000
[    3.685797] .......     : arbitration: 00
[    3.686303] .... IRQ redirection table:
[    3.686867] 1    0    0   0   0    0    0    00
[    3.687460] 0    0    0   0   0    1    1    31
[    3.688173] 0    0    0   0   0    1    1    30
[    3.688792] 0    0    0   0   0    1    1    33
[    3.689431] 1    0    0   0   0    1    1    34
[    3.690037] 1    1    0   0   0    1    1    35
[    3.690629] 0    0    0   0   0    1    1    36
[    3.691269] 0    0    0   0   0    1    1    37
[    3.691895] 0    0    0   0   0    1    1    38
[    3.692570] 0    1    0   0   0    1    1    39
[    3.693178] 1    1    0   0   0    1    1    3A
[    3.695278] 1    1    0   0   0    1    1    3B
[    3.695891] 0    0    0   0   0    1    1    3C
[    3.696487] 0    0    0   0   0    1    1    3D
[    3.697090] 0    0    0   0   0    1    1    3E
[    3.697692] 0    0    0   0   0    1    1    3F
[    3.698286] 1    0    0   0   0    0    0    00
[    3.698886] 1    0    0   0   0    0    0    00
[    3.699479] 1    0    0   0   0    0    0    00
[    3.700104] 1    0    0   0   0    0    0    00
[    3.700708] 1    0    0   0   0    0    0    00
[    3.701302] 1    0    0   0   0    0    0    00
[    3.701904] 1    0    0   0   0    0    0    00
[    3.702502] 1    0    0   0   0    0    0    00
[    3.703093] IRQ to pin mappings:
[    3.703514] IRQ0 -> 0:2
[    3.703897] IRQ1 -> 0:1
[    3.704265] IRQ3 -> 0:3
[    3.714713] IRQ4 -> 0:4
[    3.715081] IRQ5 -> 0:5
[    3.715486] IRQ6 -> 0:6
[    3.715854] IRQ7 -> 0:7
[    3.716231] IRQ8 -> 0:8
[    3.716594] IRQ9 -> 0:9
[    3.716969] IRQ10 -> 0:10
[    3.717385] IRQ11 -> 0:11
[    3.717762] IRQ12 -> 0:12
[    3.718199] IRQ13 -> 0:13
[    3.718584] IRQ14 -> 0:14
[    3.718988] IRQ15 -> 0:15
[    3.719402] .................................... done.
[    3.720616] Loading compiled-in X.509 certificates
[    3.722422] Loaded X.509 cert 'Magrathea: Glacier signing key: ef1e43c96=
fb751d0e1f4cebc584a90b84fa08085'
[    3.734134] registered taskstats version 1
[    3.735210] kworker/u2:1 (102) used greatest stack depth: 14520 bytes le=
ft
[    3.736503] Key type encrypted registered
[    3.737102] cryptomgr_probe (105) used greatest stack depth: 14272 bytes=
 left
[    3.738443] evm: HMAC attrs: 0x1
[    3.756635] Freeing unused kernel memory: 704K (ffffffff81a8c000 - fffff=
fff81b3c000)
[    3.757706] Write protecting the kernel read-only data: 10240k
[    3.764364] Freeing unused kernel memory: 1352K (ffff8800014ae000 - ffff=
880001600000)
[    3.772279] Freeing unused kernel memory: 1540K (ffff88000187f000 - ffff=
880001a00000)
/etc/rcS.d/S00fbsetup: line 3: /sbin/modprobe: not found
[    3.802104] S00fbsetup (120) used greatest stack depth: 14168 bytes left
[    3.803977] rc (123) used greatest stack depth: 14000 bytes left

Please wait: booting...
Starting udev
mount: mounting none on /dev failed: Invalid argument
/etc/rcS.d/S03udev: line 72: can't create /proc/sys/kernel/hotplug: nonexis=
tent directory
[    3.858723] udev[138]: starting version 164
[    4.560305] udevadm (140) used greatest stack depth: 13944 bytes left
[    5.248382] input: AT Translated Set 2 keyboard as /devices/platform/i80=
42/serio0/input/input1
[    5.356741] init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp=
 00007fff5e2eecf8 error 15
[    5.357984] init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp=
 00007fff5e2ee1b8 error 15
[    5.359253] Kernel panic - not syncing: Attempted to kill init! exitcode=
=3D0x0000000b
[    5.359253]=20
[    5.360439] CPU: 0 PID: 1 Comm: init Not tainted 3.17.0-rc1-00169-gcaae2=
04 #1
[    5.361364] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    5.362114]  0000000000000000 ffff88001284fcb0 ffffffff814a2ce5 ffff8800=
1284fd30
[    5.363152]  ffffffff814a1c51 0000000000000010 ffff88001284fd40 ffff8800=
1284fcd8
[    5.363611]  ffff88001284fd78 000000000000000b 0000000000000000 ffff8800=
12848740
[    5.363611] Call Trace:
[    5.363611]  [<ffffffff814a2ce5>] dump_stack+0x19/0x1b
[    5.363611]  [<ffffffff814a1c51>] panic+0xc4/0x1ef
[    5.363611]  [<ffffffff81090d2c>] do_exit+0x3bb/0x81e
[    5.363611]  [<ffffffff811198c5>] ? __kmem_cache_free+0x11/0x2e
[    5.363611]  [<ffffffff8111992c>] ? kmem_cache_free+0x31/0x33
[    5.363611]  [<ffffffff810962eb>] ? __sigqueue_free+0x33/0x36
[    5.363611]  [<ffffffff81091e90>] do_group_exit+0x45/0xbf
[    5.363611]  [<ffffffff81098df9>] get_signal+0x53d/0x568
[    5.363611]  [<ffffffff81043039>] ? bad_area_nosemaphore+0xe/0x10
[    5.363611]  [<ffffffff81028218>] do_signal+0x23/0x885
[    5.363611]  [<ffffffff814a0000>] ? free_area_init_node+0xac/0x36e
[    5.363611]  [<ffffffff81028a96>] do_notify_resume+0x1c/0x75
[    5.363611]  [<ffffffff814a927b>] retint_signal+0x48/0x8d
[    5.363611] Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range=
: 0xffffffff80000000-0xffffffff9fffffff)

Elapsed time: 10
qemu-system-x86_64 -enable-kvm -cpu Haswell,+smep,+smap -kernel /kernel/x86=
_64-randconfig-s1-09240351/caae204be184a575af2c02b837d818278f921323/vmlinuz=
-3.17.0-rc1-00169-gcaae204 -append 'hung_task_panic=3D1 earlyprintk=3DttyS0=
,115200 debug apic=3Ddebug sysrq_always_enabled rcupdate.rcu_cpu_stall_time=
out=3D100 panic=3D-1 softlockup_panic=3D1 nmi_watchdog=3Dpanic oops=3Dpanic=
 load_ramdisk=3D2 prompt_ramdisk=3D0 console=3DttyS0,115200 console=3Dtty0 =
vga=3Dnormal  root=3D/dev/ram0 rw link=3D/kbuild-tests/run-queue/kvm/x86_64=
-randconfig-s1-09240351/linux-devel:devel-hourly-2014092402:caae204be184a57=
5af2c02b837d818278f921323:bisect-linux-6/.vmlinuz-caae204be184a575af2c02b83=
7d818278f921323-20140926221333-24-kbuild branch=3Dlinux-devel/devel-hourly-=
2014092402 BOOT_IMAGE=3D/kernel/x86_64-randconfig-s1-09240351/caae204be184a=
575af2c02b837d818278f921323/vmlinuz-3.17.0-rc1-00169-gcaae204 drbd.minor_co=
unt=3D8'  -initrd /kernel-tests/initrd/yocto-minimal-x86_64.cgz -m 320 -smp=
 1 -net nic,vlan=3D1,model=3De1000 -net user,vlan=3D1 -boot order=3Dnc -no-=
reboot -watchdog i6300esb -rtc base=3Dlocaltime -pidfile /dev/shm/kboot/pid=
-yocto-kbuild-29 -serial file:/dev/shm/kboot/serial-yocto-kbuild-29 -daemon=
ize -display none -monitor null=20

--St7VIuEGZ6dlpu13
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="x86_64-randconfig-s1-09240351-ddc5057b07ef7126431d5df5f5b176154896f560-Kernel-panic---not-syncing:-Attempted-to-kill----exitcode--92847.log"
Content-Transfer-Encoding: base64

SEVBRCBpcyBub3cgYXQgZGRjNTA1N2IuLi4gMGRheSBoZWFkIGd1YXJkIGZvciAnZGV2ZWwt
aG91cmx5LTIwMTQwOTI0MDInCmdpdCBjaGVja291dCAwZjMzYmUwMDliODlkMjI2OGU5NDE5
NGRjNGZkMDFhNzg1MWI2ZDUxCmxzIC1hIC9rYnVpbGQtdGVzdHMvcnVuLXF1ZXVlL2t2bS94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9saW51eC1kZXZlbDpkZXZlbC1ob3VybHkt
MjAxNDA5MjQwMjowZjMzYmUwMDliODlkMjI2OGU5NDE5NGRjNGZkMDFhNzg1MWI2ZDUxOmJp
c2VjdC1saW51eC02CgoyMDE0LTA5LTI2IDE4OjI0OjU5IDBmMzNiZTAwOWI4OWQyMjY4ZTk0
MTk0ZGM0ZmQwMWE3ODUxYjZkNTEgY29tcGlsaW5nClF1ZXVlZCBidWlsZCB0YXNrIHRvIC9r
YnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxLTBmMzNiZTAwOWI4OWQyMjY4ZTk0MTk0ZGM0ZmQwMWE3ODUxYjZkNTEKQ2hlY2sgZm9y
IGtlcm5lbCBpbiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzBmMzNi
ZTAwOWI4OWQyMjY4ZTk0MTk0ZGM0ZmQwMWE3ODUxYjZkNTEKd2FpdGluZyBmb3IgY29tcGxl
dGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi94ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MS0wZjMzYmUwMDliODlkMjI2OGU5NDE5NGRjNGZkMDFhNzg1MWI2ZDUx
ChtbMTszNW0yMDE0LTA5LTI2IDE4OjUwOjU5IE5vIGJ1aWxkIHNlcnZlZCBmaWxlIC9rYnVp
bGQtdGVzdHMvYnVpbGQtc2VydmVkL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLTBm
MzNiZTAwOWI4OWQyMjY4ZTk0MTk0ZGM0ZmQwMWE3ODUxYjZkNTEbWzBtClJldHJ5IGJ1aWxk
IC4uCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1
ZS9zbmItc21va2UveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtMGYzM2JlMDA5Yjg5
ZDIyNjhlOTQxOTRkYzRmZDAxYTc4NTFiNmQ1MQprZXJuZWw6IC9rZXJuZWwveDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTEvMGYzM2JlMDA5Yjg5ZDIyNjhlOTQxOTRkYzRmZDAxYTc4
NTFiNmQ1MS92bWxpbnV6LTMuMTcuMC1yYzYKCjIwMTQtMDktMjYgMTg6NTI6NTkgZGV0ZWN0
aW5nIGJvb3Qgc3RhdGUgLi4uLi4uCTIJNwkxNgkxOQkyMSBTVUNDRVNTCgpiaXNlY3Q6IGdv
b2QgY29tbWl0IDBmMzNiZTAwOWI4OWQyMjY4ZTk0MTk0ZGM0ZmQwMWE3ODUxYjZkNTEKZ2l0
IGJpc2VjdCBzdGFydCBkZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYw
IDBmMzNiZTAwOWI4OWQyMjY4ZTk0MTk0ZGM0ZmQwMWE3ODUxYjZkNTEgLS0KL2Mva2VybmVs
LXRlc3RzL2xpbmVhci1iaXNlY3Q6IFsiLWIiLCAiZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1
ZjViMTc2MTU0ODk2ZjU2MCIsICItZyIsICIwZjMzYmUwMDliODlkMjI2OGU5NDE5NGRjNGZk
MDFhNzg1MWI2ZDUxIiwgIi9jL2tlcm5lbC10ZXN0cy9iaXNlY3QtdGVzdC1ib290LWZhaWx1
cmUuc2giLCAiL2MvYm9vdC1iaXNlY3QvbGludXgtNi9vYmotYmlzZWN0Il0KQmlzZWN0aW5n
OiA0NDc4IHJldmlzaW9ucyBsZWZ0IHRvIHRlc3QgYWZ0ZXIgdGhpcyAocm91Z2hseSAxMyBz
dGVwcykKW2NhNjZmNzQ2MzM0YzRhM2FiZjQ2OWY3NThjOWIwNjMzOTg3YmM4NzZdIE1lcmdl
ICdsaW51eHR2LW1lZGlhL2RldmVsLTMuMTctcmM2JyBpbnRvIGRldmVsLWhvdXJseS0yMDE0
MDkyNDAyCnJ1bm5pbmcgL2Mva2VybmVsLXRlc3RzL2Jpc2VjdC10ZXN0LWJvb3QtZmFpbHVy
ZS5zaCAvYy9ib290LWJpc2VjdC9saW51eC02L29iai1iaXNlY3QKbHMgLWEgL2tidWlsZC10
ZXN0cy9ydW4tcXVldWUva3ZtL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2xpbnV4
LWRldmVsOmRldmVsLWhvdXJseS0yMDE0MDkyNDAyOmNhNjZmNzQ2MzM0YzRhM2FiZjQ2OWY3
NThjOWIwNjMzOTg3YmM4NzY6YmlzZWN0LWxpbnV4LTYKCjIwMTQtMDktMjYgMTk6MTI6Mjkg
Y2E2NmY3NDYzMzRjNGEzYWJmNDY5Zjc1OGM5YjA2MzM5ODdiYzg3NiBjb21waWxpbmcKUXVl
dWVkIGJ1aWxkIHRhc2sgdG8gL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1ZS9zbmIveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEtY2E2NmY3NDYzMzRjNGEzYWJmNDY5Zjc1OGM5YjA2
MzM5ODdiYzg3NgpDaGVjayBmb3Iga2VybmVsIGluIC9rZXJuZWwveDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTEvY2E2NmY3NDYzMzRjNGEzYWJmNDY5Zjc1OGM5YjA2MzM5ODdiYzg3
Ngp3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUv
c25iL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLWNhNjZmNzQ2MzM0YzRhM2FiZjQ2
OWY3NThjOWIwNjMzOTg3YmM4NzYKG1sxOzM1bTIwMTQtMDktMjYgMTk6MzA6MjkgTm8gYnVp
bGQgc2VydmVkIGZpbGUgL2tidWlsZC10ZXN0cy9idWlsZC1zZXJ2ZWQveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEtY2E2NmY3NDYzMzRjNGEzYWJmNDY5Zjc1OGM5YjA2MzM5ODdi
Yzg3NhtbMG0KUmV0cnkgYnVpbGQgLi4Kd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiAva2J1
aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi1zbW9rZS94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS1jYTY2Zjc0NjMzNGM0YTNhYmY0NjlmNzU4YzliMDYzMzk4N2JjODc2Cmtlcm5l
bDogL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9jYTY2Zjc0NjMzNGM0
YTNhYmY0NjlmNzU4YzliMDYzMzk4N2JjODc2L3ZtbGludXotMy4xNy4wLXJjNi0wMjAzMi1n
Y2E2NmY3NAoKMjAxNC0wOS0yNiAxOTo0NToyOSBkZXRlY3RpbmcgYm9vdCBzdGF0ZSAuLi4u
Li4uLi4uLi4uLi4uLi4uLgk5CTIxIFNVQ0NFU1MKCkJpc2VjdGluZzogMjQ0NiByZXZpc2lv
bnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMgKHJvdWdobHkgMTIgc3RlcHMpCls0NmViYTE3
YTQwYWFhZmNlNmE2MDY0NDdjMWZiYTFmMzE2YzMzMWY3XSBNZXJnZSAneGVuLXRpcC9kZXZl
bC9mb3ItbGludXMtMy4xOCcgaW50byBkZXZlbC1ob3VybHktMjAxNDA5MjQwMgpydW5uaW5n
IC9jL2tlcm5lbC10ZXN0cy9iaXNlY3QtdGVzdC1ib290LWZhaWx1cmUuc2ggL2MvYm9vdC1i
aXNlY3QvbGludXgtNi9vYmotYmlzZWN0CmxzIC1hIC9rYnVpbGQtdGVzdHMvcnVuLXF1ZXVl
L2t2bS94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9saW51eC1kZXZlbDpkZXZlbC1o
b3VybHktMjAxNDA5MjQwMjo0NmViYTE3YTQwYWFhZmNlNmE2MDY0NDdjMWZiYTFmMzE2YzMz
MWY3OmJpc2VjdC1saW51eC02CgoyMDE0LTA5LTI2IDE5OjU2OjMwIDQ2ZWJhMTdhNDBhYWFm
Y2U2YTYwNjQ0N2MxZmJhMWYzMTZjMzMxZjcgY29tcGlsaW5nClF1ZXVlZCBidWlsZCB0YXNr
IHRvIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxLTQ2ZWJhMTdhNDBhYWFmY2U2YTYwNjQ0N2MxZmJhMWYzMTZjMzMxZjcKQ2hl
Y2sgZm9yIGtlcm5lbCBpbiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
LzQ2ZWJhMTdhNDBhYWFmY2U2YTYwNjQ0N2MxZmJhMWYzMTZjMzMxZjcKd2FpdGluZyBmb3Ig
Y29tcGxldGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS00NmViYTE3YTQwYWFhZmNlNmE2MDY0NDdjMWZiYTFmMzE2
YzMzMWY3ChtbMTszNW0yMDE0LTA5LTI2IDE5OjU4OjMxIE5vIGJ1aWxkIHNlcnZlZCBmaWxl
IC9rYnVpbGQtdGVzdHMvYnVpbGQtc2VydmVkL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxLTQ2ZWJhMTdhNDBhYWFmY2U2YTYwNjQ0N2MxZmJhMWYzMTZjMzMxZjcbWzBtClJldHJ5
IGJ1aWxkIC4uCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10ZXN0cy9idWls
ZC1xdWV1ZS9zbmItc21va2UveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtNDZlYmEx
N2E0MGFhYWZjZTZhNjA2NDQ3YzFmYmExZjMxNmMzMzFmNwprZXJuZWw6IC9rZXJuZWwveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvNDZlYmExN2E0MGFhYWZjZTZhNjA2NDQ3YzFm
YmExZjMxNmMzMzFmNy92bWxpbnV6LTMuMTcuMC1yYzYtd2wtMDI5MzYtZzQ2ZWJhMTcKCjIw
MTQtMDktMjYgMjA6MDA6MzEgZGV0ZWN0aW5nIGJvb3Qgc3RhdGUgLi4uLi4uLi4uLi4uLi4J
OQkxNAkxOAkyMSBTVUNDRVNTCgpCaXNlY3Rpbmc6IDE1NDIgcmV2aXNpb25zIGxlZnQgdG8g
dGVzdCBhZnRlciB0aGlzIChyb3VnaGx5IDExIHN0ZXBzKQpbYzY4NjkxZDA0ODk3YjZlY2Rl
ZWE2MmQ5OTRkYjA0NDIzODhkZjZmZl0gTWVyZ2UgJ3BpbmN0cmwvZGV2ZWwnIGludG8gZGV2
ZWwtaG91cmx5LTIwMTQwOTI0MDIKcnVubmluZyAvYy9rZXJuZWwtdGVzdHMvYmlzZWN0LXRl
c3QtYm9vdC1mYWlsdXJlLnNoIC9jL2Jvb3QtYmlzZWN0L2xpbnV4LTYvb2JqLWJpc2VjdAps
cyAtYSAva2J1aWxkLXRlc3RzL3J1bi1xdWV1ZS9rdm0veDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTEvbGludXgtZGV2ZWw6ZGV2ZWwtaG91cmx5LTIwMTQwOTI0MDI6YzY4NjkxZDA0
ODk3YjZlY2RlZWE2MmQ5OTRkYjA0NDIzODhkZjZmZjpiaXNlY3QtbGludXgtNgoKMjAxNC0w
OS0yNiAyMDowOTozMiBjNjg2OTFkMDQ4OTdiNmVjZGVlYTYyZDk5NGRiMDQ0MjM4OGRmNmZm
IGNvbXBpbGluZwpRdWV1ZWQgYnVpbGQgdGFzayB0byAva2J1aWxkLXRlc3RzL2J1aWxkLXF1
ZXVlL3NuYi94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS1jNjg2OTFkMDQ4OTdiNmVj
ZGVlYTYyZDk5NGRiMDQ0MjM4OGRmNmZmCkNoZWNrIGZvciBrZXJuZWwgaW4gL2tlcm5lbC94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9jNjg2OTFkMDQ4OTdiNmVjZGVlYTYyZDk5
NGRiMDQ0MjM4OGRmNmZmCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10ZXN0
cy9idWlsZC1xdWV1ZS9zbmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtYzY4Njkx
ZDA0ODk3YjZlY2RlZWE2MmQ5OTRkYjA0NDIzODhkZjZmZgobWzE7MzVtMjAxNC0wOS0yNiAy
MDoyNjozMiBObyBidWlsZCBzZXJ2ZWQgZmlsZSAva2J1aWxkLXRlc3RzL2J1aWxkLXNlcnZl
ZC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS1jNjg2OTFkMDQ4OTdiNmVjZGVlYTYy
ZDk5NGRiMDQ0MjM4OGRmNmZmG1swbQpSZXRyeSBidWlsZCAuLgp3YWl0aW5nIGZvciBjb21w
bGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iLXNtb2tlL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxLWM2ODY5MWQwNDg5N2I2ZWNkZWVhNjJkOTk0ZGIwNDQy
Mzg4ZGY2ZmYKa2VybmVsOiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2M2ODY5MWQwNDg5N2I2ZWNkZWVhNjJkOTk0ZGIwNDQyMzg4ZGY2ZmYvdm1saW51ei0zLjE3
LjAtcmM2LXdsLTA0Mzc2LWdjNjg2OTFkCgoyMDE0LTA5LTI2IDIwOjUyOjMyIGRldGVjdGlu
ZyBib290IHN0YXRlIC4uCTIJNAk1CTcJOQkxMAkxMwkxNC4JMjAJMjEgU1VDQ0VTUwoKQmlz
ZWN0aW5nOiAxMDIgcmV2aXNpb25zIGxlZnQgdG8gdGVzdCBhZnRlciB0aGlzIChyb3VnaGx5
IDcgc3RlcHMpCls0YzhjN2RjN2VhZWU3NjUxZTdmNTUxODc5YmNiZjRiZjQ3YWNjYzNkXSBN
ZXJnZSAna2dlbmUtc2Ftc3VuZy9mb3ItbmV4dCcgaW50byBkZXZlbC1ob3VybHktMjAxNDA5
MjQwMgpydW5uaW5nIC9jL2tlcm5lbC10ZXN0cy9iaXNlY3QtdGVzdC1ib290LWZhaWx1cmUu
c2ggL2MvYm9vdC1iaXNlY3QvbGludXgtNi9vYmotYmlzZWN0CmxzIC1hIC9rYnVpbGQtdGVz
dHMvcnVuLXF1ZXVlL2t2bS94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9saW51eC1k
ZXZlbDpkZXZlbC1ob3VybHktMjAxNDA5MjQwMjo0YzhjN2RjN2VhZWU3NjUxZTdmNTUxODc5
YmNiZjRiZjQ3YWNjYzNkOmJpc2VjdC1saW51eC02CgoyMDE0LTA5LTI2IDIxOjAxOjQwIDRj
OGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QgY29tcGlsaW5nClF1ZXVl
ZCBidWlsZCB0YXNrIHRvIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxLTRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJm
NDdhY2NjM2QKQ2hlY2sgZm9yIGtlcm5lbCBpbiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxLzRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QK
d2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3Nu
Yi94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS00YzhjN2RjN2VhZWU3NjUxZTdmNTUx
ODc5YmNiZjRiZjQ3YWNjYzNkChtbMTszNW0yMDE0LTA5LTI2IDIxOjA0OjQwIE5vIGJ1aWxk
IHNlcnZlZCBmaWxlIC9rYnVpbGQtdGVzdHMvYnVpbGQtc2VydmVkL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxLTRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2Nj
M2QbWzBtClJldHJ5IGJ1aWxkIC4uCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWls
ZC10ZXN0cy9idWlsZC1xdWV1ZS9zbmItc21va2UveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEtNGM4YzdkYzdlYWVlNzY1MWU3ZjU1MTg3OWJjYmY0YmY0N2FjY2MzZAprZXJuZWw6
IC9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvNGM4YzdkYzdlYWVlNzY1
MWU3ZjU1MTg3OWJjYmY0YmY0N2FjY2MzZC92bWxpbnV6LTMuMTcuMC1yYzYtd2wtMDQ0NjEt
ZzRjOGM3ZGMKCjIwMTQtMDktMjYgMjE6MjM6NDAgZGV0ZWN0aW5nIGJvb3Qgc3RhdGUgCTE2
IFRFU1QgRkFJTFVSRQpbICAgIDEuNDgwODM3XSB0c2M6IFJlZmluZWQgVFNDIGNsb2Nrc291
cmNlIGNhbGlicmF0aW9uOiAyNjkzLjUwNiBNSHoKWyAgICAxLjU0MjczMV0gaW5pdFsxXTog
c2VnZmF1bHQgYXQgZmZmZmZmZmZmZjYwMDQwMCBpcCBmZmZmZmZmZmZmNjAwNDAwIHNwIDAw
MDA3ZmZmZDgxYmEwNjggZXJyb3IgMTUKWyAgICAxLjU0NDAyNF0gaW5pdFsxXTogc2VnZmF1
bHQgYXQgZmZmZmZmZmZmZjYwMDQwMCBpcCBmZmZmZmZmZmZmNjAwNDAwIHNwIDAwMDA3ZmZm
ZDgxYjk2NzggZXJyb3IgMTUKWyAgICAxLjU0NTM1MV0gS2VybmVsIHBhbmljIC0gbm90IHN5
bmNpbmc6IEF0dGVtcHRlZCB0byBraWxsIGluaXQhIGV4aXRjb2RlPTB4MDAwMDAwMGIKWyAg
ICAxLjU0NTM1MV0gClsgICAgMS41NDY2MTFdIENQVTogMCBQSUQ6IDEgQ29tbTogaW5pdCBO
b3QgdGFpbnRlZCAzLjE3LjAtcmM2LXdsLTA0NDYxLWc0YzhjN2RjICMxClsgICAgMS41NDc2
MjBdIEhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBGWCArIFBJSVgsIDE5
OTYpLCBCSU9TIDEuNy41LTIwMTQwNTMxXzA4MzAzMC1nYW5kYWxmIDA0LzAxLzIwMTQKWyAg
ICAxLjU0OTAxNF0gIDAwMDAwMDAwMDAwMDAwMDAgZmZmZjg4MDAxMjg0ZmNiMCBmZmZmZmZm
ZjgxNGEzYmE1IGZmZmY4ODAwMTI4NGZkMzAKWyAgICAxLjU1MDAxMF0gIGZmZmZmZmZmODE0
YTJiMTEgMDAwMDAwMDAwMDAwMDAxMCBmZmZmODgwMDEyODRmZDQwIGZmZmY4ODAwMTI4NGZj
ZDgKWyAgICAxLjU1MDAxMF0gIGZmZmY4ODAwMTI4NGZkNzggMDAwMDAwMDAwMDAwMDAwYiBm
ZmZmODgwMDEyODQ4MDAwIDAwMDAwMDAwMDAwMDAwMDAKWyAgICAxLjU1MDAxMF0gQ2FsbCBU
cmFjZToKWyAgICAxLjU1MDAxMF0gIFs8ZmZmZmZmZmY4MTRhM2JhNT5dIGR1bXBfc3RhY2sr
MHgxOS8weDFiClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODE0YTJiMTE+XSBwYW5pYysw
eGM0LzB4MWVmClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODEwOTBkNjE+XSBkb19leGl0
KzB4M2NhLzB4ODNjClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODExMWEyMmM+XSA/IF9f
a21lbV9jYWNoZV9mcmVlKzB4MTEvMHgyZQpbICAgIDEuNTUwMDEwXSAgWzxmZmZmZmZmZjgx
MTFhMjkzPl0gPyBrbWVtX2NhY2hlX2ZyZWUrMHgzMS8weDMzClsgICAgMS41NTAwMTBdICBb
PGZmZmZmZmZmODEwOTYzZjI+XSA/IF9fc2lncXVldWVfZnJlZSsweDMzLzB4MzYKWyAgICAx
LjU1MDAxMF0gIFs8ZmZmZmZmZmY4MTA5MWVkND5dIGRvX2dyb3VwX2V4aXQrMHg0NS8weGJm
ClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODEwOThmMDA+XSBnZXRfc2lnbmFsKzB4NTNk
LzB4NTY4ClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODEwNDMwMzM+XSA/IGJhZF9hcmVh
X25vc2VtYXBob3JlKzB4ZS8weDEwClsgICAgMS41NTAwMTBdICBbPGZmZmZmZmZmODEwMjgy
MTg+XSBkb19zaWduYWwrMHgyMy8weDg4NQpbICAgIDEuNTUwMDEwXSAgWzxmZmZmZmZmZjgx
NGEwMDAwPl0gPyBzYXZlX21yKzB4MjMvMHgzZQpbICAgIDEuNTUwMDEwXSAgWzxmZmZmZmZm
ZjgxMDI4YTk2Pl0gZG9fbm90aWZ5X3Jlc3VtZSsweDFjLzB4NzUKWyAgICAxLjU1MDAxMF0g
IFs8ZmZmZmZmZmY4MTRhYTEzYj5dIHJldGludF9zaWduYWwrMHg0OC8weDhkClsgICAgMS41
NTAwMTBdIEtlcm5lbCBPZmZzZXQ6IDB4MCBmcm9tIDB4ZmZmZmZmZmY4MTAwMDAwMCAocmVs
b2NhdGlvbiByYW5nZTogMHhmZmZmZmZmZjgwMDAwMDAwLTB4ZmZmZmZmZmY5ZmZmZmZmZikK
CkVsYXBzZWQgdGltZTogNQova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
LzRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QvZG1lc2cteW9jdG8t
aXZiNDEtMTI6MjAxNDA5MjYyMTIzMjc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzRjOGM3ZGM3ZWFlZTc2
NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QvZG1lc2cteW9jdG8taXZiNDEtMjQ6MjAxNDA5
MjYyMTIzMjc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2Jm
NGJmNDdhY2NjM2QvZG1lc2cteW9jdG8taXZiNDEtMjc6MjAxNDA5MjYyMTIzMjc6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxLzRjOGM3ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QvZG1l
c2cteW9jdG8taXZiNDEtOTY6MjAxNDA5MjYyMTIzMjc6eDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzRjOGM3
ZGM3ZWFlZTc2NTFlN2Y1NTE4NzliY2JmNGJmNDdhY2NjM2QvZG1lc2cteW9jdG8tdnAtNTg6
MjAxNDA5MjYyMTIzMjc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJj
Ni13bC0wNDQ2MS1nNGM4YzdkYzoxCjE2OjU6NSBhbGxfZ29vZDpiYWQ6YWxsX2JhZCBib290
cwobWzE7MzVtMjAxNC0wOS0yNiAyMToyNDoxMSBSRVBFQVQgQ09VTlQ6IDUyICAjIC9jL2Jv
b3QtYmlzZWN0L2xpbnV4LTYvb2JqLWJpc2VjdC8ucmVwZWF0G1swbQoKQmlzZWN0aW5nOiA4
NSByZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMgKHJvdWdobHkgNyBzdGVwcykK
WzM1MWI2NzAwOTc5YjI1YWZkM2JmOWJhYzMyZWJhZDJkMGQ4OWE2OTZdIE1lcmdlICdwaW5j
dHJsL2Zvci1uZXh0JyBpbnRvIGRldmVsLWhvdXJseS0yMDE0MDkyNDAyCnJ1bm5pbmcgL2Mv
a2VybmVsLXRlc3RzL2Jpc2VjdC10ZXN0LWJvb3QtZmFpbHVyZS5zaCAvYy9ib290LWJpc2Vj
dC9saW51eC02L29iai1iaXNlY3QKbHMgLWEgL2tidWlsZC10ZXN0cy9ydW4tcXVldWUva3Zt
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2xpbnV4LWRldmVsOmRldmVsLWhvdXJs
eS0yMDE0MDkyNDAyOjM1MWI2NzAwOTc5YjI1YWZkM2JmOWJhYzMyZWJhZDJkMGQ4OWE2OTY6
YmlzZWN0LWxpbnV4LTYKCjIwMTQtMDktMjYgMjE6MjQ6MTIgMzUxYjY3MDA5NzliMjVhZmQz
YmY5YmFjMzJlYmFkMmQwZDg5YTY5NiBjb21waWxpbmcKUXVldWVkIGJ1aWxkIHRhc2sgdG8g
L2tidWlsZC10ZXN0cy9idWlsZC1xdWV1ZS9zbmIveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEtMzUxYjY3MDA5NzliMjVhZmQzYmY5YmFjMzJlYmFkMmQwZDg5YTY5NgpDaGVjayBm
b3Iga2VybmVsIGluIC9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzUx
YjY3MDA5NzliMjVhZmQzYmY5YmFjMzJlYmFkMmQwZDg5YTY5Ngp3YWl0aW5nIGZvciBjb21w
bGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxLTM1MWI2NzAwOTc5YjI1YWZkM2JmOWJhYzMyZWJhZDJkMGQ4OWE2
OTYKG1sxOzM1bTIwMTQtMDktMjYgMjE6Mjg6MTIgTm8gYnVpbGQgc2VydmVkIGZpbGUgL2ti
dWlsZC10ZXN0cy9idWlsZC1zZXJ2ZWQveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEt
MzUxYjY3MDA5NzliMjVhZmQzYmY5YmFjMzJlYmFkMmQwZDg5YTY5NhtbMG0KUmV0cnkgYnVp
bGQgLi4Kd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1
ZXVlL3NuYi1zbW9rZS94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS0zNTFiNjcwMDk3
OWIyNWFmZDNiZjliYWMzMmViYWQyZDBkODlhNjk2Cmtlcm5lbDogL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNTFiNjcwMDk3OWIyNWFmZDNiZjliYWMzMmViYWQy
ZDBkODlhNjk2L3ZtbGludXotMy4xNy4wLXJjNi13bC0wNDM3OC1nMzUxYjY3MAoKMjAxNC0w
OS0yNiAyMTozMDoxMiBkZXRlY3RpbmcgYm9vdCBzdGF0ZSAJNwkxMQkyNQkzOQk0Mgk0NQk1
MAk1MiBTVUNDRVNTCgpCaXNlY3Rpbmc6IDgzIHJldmlzaW9ucyBsZWZ0IHRvIHRlc3QgYWZ0
ZXIgdGhpcyAocm91Z2hseSA3IHN0ZXBzKQpbMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFi
OGEzNDkxMjhhNWQ3OF0gTWVyZ2UgJ2x1dG8veDg2L3ZzeXNjYWxsJyBpbnRvIGRldmVsLWhv
dXJseS0yMDE0MDkyNDAyCnJ1bm5pbmcgL2Mva2VybmVsLXRlc3RzL2Jpc2VjdC10ZXN0LWJv
b3QtZmFpbHVyZS5zaCAvYy9ib290LWJpc2VjdC9saW51eC02L29iai1iaXNlY3QKbHMgLWEg
L2tidWlsZC10ZXN0cy9ydW4tcXVldWUva3ZtL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxL2xpbnV4LWRldmVsOmRldmVsLWhvdXJseS0yMDE0MDkyNDAyOjM0ZTkxZGNlNWI1YTBk
ZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzg6YmlzZWN0LWxpbnV4LTYKCjIwMTQtMDktMjYg
MjE6MzQ6MTMgMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OCBjb21w
aWxpbmcKUXVldWVkIGJ1aWxkIHRhc2sgdG8gL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1ZS9z
bmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtMzRlOTFkY2U1YjVhMGRmMWRlYTg2
MjhkMGFiOGEzNDkxMjhhNWQ3OApDaGVjayBmb3Iga2VybmVsIGluIC9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEz
NDkxMjhhNWQ3OAp3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVp
bGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLTM0ZTkxZGNlNWI1
YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgKG1sxOzM1bTIwMTQtMDktMjYgMjE6NDI6
MTMgTm8gYnVpbGQgc2VydmVkIGZpbGUgL2tidWlsZC10ZXN0cy9idWlsZC1zZXJ2ZWQveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFi
OGEzNDkxMjhhNWQ3OBtbMG0KUmV0cnkgYnVpbGQgLi4Kd2FpdGluZyBmb3IgY29tcGxldGlv
biBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi1zbW9rZS94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS0zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1
ZDc4Cmtlcm5lbDogL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5
MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L3ZtbGludXotMy4xNy4wLXJj
Ni13bC0wNDM5MC1nMzRlOTFkYwoKMjAxNC0wOS0yNiAyMTo0NjoxMyBkZXRlY3RpbmcgYm9v
dCBzdGF0ZSAuIFRFU1QgRkFJTFVSRQpbICAgIDQuMDc4NDE1XSBpbnB1dDogQVQgVHJhbnNs
YXRlZCBTZXQgMiBrZXlib2FyZCBhcyAvZGV2aWNlcy9wbGF0Zm9ybS9pODA0Mi9zZXJpbzAv
aW5wdXQvaW5wdXQxClsgICAgNC4xNDg1OTldIGluaXRbMV06IHNlZ2ZhdWx0IGF0IGZmZmZm
ZmZmZmY2MDA0MDAgaXAgZmZmZmZmZmZmZjYwMDQwMCBzcCAwMDAwN2ZmZmYyNzlmYmE4IGVy
cm9yIDE1ClsgICAgNC4xNTAyMTldIGluaXRbMV06IHNlZ2ZhdWx0IGF0IGZmZmZmZmZmZmY2
MDA0MDAgaXAgZmZmZmZmZmZmZjYwMDQwMCBzcCAwMDAwN2ZmZmYyNzlmMWI4IGVycm9yIDE1
ClsgICAgNC4xNTE4MTNdIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBBdHRlbXB0ZWQg
dG8ga2lsbCBpbml0ISBleGl0Y29kZT0weDAwMDAwMDBiClsgICAgNC4xNTE4MTNdIApbICAg
IDQuMTUzMzEyXSBDUFU6IDAgUElEOiAxIENvbW06IGluaXQgTm90IHRhaW50ZWQgMy4xNy4w
LXJjNi13bC0wNDM5MC1nMzRlOTFkYyAjMQpbICAgIDQuMTU0NTAzXSBIYXJkd2FyZSBuYW1l
OiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyAxLjcuNS0y
MDE0MDUzMV8wODMwMzAtZ2FuZGFsZiAwNC8wMS8yMDE0ClsgICAgNC4xNTYxNTZdICAwMDAw
MDAwMDAwMDAwMDAwIGZmZmY4ODAwMTI4NGZjYjAgZmZmZmZmZmY4MTRhM2JhNSBmZmZmODgw
MDEyODRmZDMwClsgICAgNC4xNTc0NjhdICBmZmZmZmZmZjgxNGEyYjExIDAwMDAwMDAwMDAw
MDAwMTAgZmZmZjg4MDAxMjg0ZmQ0MCBmZmZmODgwMDEyODRmY2Q4ClsgICAgNC4xNTg4MTld
ICBmZmZmODgwMDEyODRmZDc4IDAwMDAwMDAwMDAwMDAwMGIgZmZmZjg4MDAxMjg0ODAwMCAw
MDAwMDAwMDAwMDAwMDAwClsgICAgNC4xNjAwODJdIENhbGwgVHJhY2U6ClsgICAgNC4xNjAw
ODJdICBbPGZmZmZmZmZmODE0YTNiYTU+XSBkdW1wX3N0YWNrKzB4MTkvMHgxYgpbICAgIDQu
MTYwMDgyXSAgWzxmZmZmZmZmZjgxNGEyYjExPl0gcGFuaWMrMHhjNC8weDFlZgpbICAgIDQu
MTYwMDgyXSAgWzxmZmZmZmZmZjgxMDkwZDYxPl0gZG9fZXhpdCsweDNjYS8weDgzYwpbICAg
IDQuMTYwMDgyXSAgWzxmZmZmZmZmZjgxMTFhMjJjPl0gPyBfX2ttZW1fY2FjaGVfZnJlZSsw
eDExLzB4MmUKWyAgICA0LjE2MDA4Ml0gIFs8ZmZmZmZmZmY4MTExYTI5Mz5dID8ga21lbV9j
YWNoZV9mcmVlKzB4MzEvMHgzMwpbICAgIDQuMTYwMDgyXSAgWzxmZmZmZmZmZjgxMDk2M2Yy
Pl0gPyBfX3NpZ3F1ZXVlX2ZyZWUrMHgzMy8weDM2ClsgICAgNC4xNjAwODJdICBbPGZmZmZm
ZmZmODEwOTFlZDQ+XSBkb19ncm91cF9leGl0KzB4NDUvMHhiZgpbICAgIDQuMTYwMDgyXSAg
WzxmZmZmZmZmZjgxMDk4ZjAwPl0gZ2V0X3NpZ25hbCsweDUzZC8weDU2OApbICAgIDQuMTYw
MDgyXSAgWzxmZmZmZmZmZjgxMDQzMDMzPl0gPyBiYWRfYXJlYV9ub3NlbWFwaG9yZSsweGUv
MHgxMApbICAgIDQuMTYwMDgyXSAgWzxmZmZmZmZmZjgxMDI4MjE4Pl0gZG9fc2lnbmFsKzB4
MjMvMHg4ODUKWyAgICA0LjE2MDA4Ml0gIFs8ZmZmZmZmZmY4MTRhMDAwMD5dID8gc2F2ZV9t
cisweDIzLzB4M2UKWyAgICA0LjE2MDA4Ml0gIFs8ZmZmZmZmZmY4MTAyOGE5Nj5dIGRvX25v
dGlmeV9yZXN1bWUrMHgxYy8weDc1ClsgICAgNC4xNjAwODJdICBbPGZmZmZmZmZmODE0YWEx
M2I+XSByZXRpbnRfc2lnbmFsKzB4NDgvMHg4ZApbICAgIDQuMTYwMDgyXSBLZXJuZWwgT2Zm
c2V0OiAweDAgZnJvbSAweGZmZmZmZmZmODEwMDAwMDAgKHJlbG9jYXRpb24gcmFuZ2U6IDB4
ZmZmZmZmZmY4MDAwMDAwMC0weGZmZmZmZmZmOWZmZmZmZmYpCgpFbGFwc2VkIHRpbWU6IDEw
Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRm
MWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTA5OjIw
MTQwOTI2MjE0NjA5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQw
YWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xMToyMDE0MDkyNjIxNDYw
ODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhh
NWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTMwOjIwMTQwOTI2MjE0NjA5Ong4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNn
LXlvY3RvLWxrcC1uZXgwNC0xMzE6MjAxNDA5MjYyMTQ2MDg6eDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0
ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtw
LW5leDA0LTE0MToyMDE0MDkyNjIxNDYwODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVh
MGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTQ2
OjIwMTQwOTI2MjE0NjEwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5l
bC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYy
OGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xNDk6MjAxNDA5MjYy
MTQ2MTA6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5
MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTE3NzoyMDE0MDkyNjIxNDYxMDp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9k
bWVzZy15b2N0by1sa3AtbmV4MDQtNDA6MjAxNDA5MjYyMTQ2MDg6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
LzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8t
bGtwLW5leDA0LTQ0OjIwMTQwOTI2MjE0NjA4Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTVi
NWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC02
ODoyMDE0MDkyNjIxNDYwODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2
MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtNzA6MjAxNDA5MjYy
MTQ2MDg6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5
MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTc1OjIwMTQwOTI2MjE0NjA4Ong4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2Rt
ZXNnLXlvY3RvLWxrcC1uZXgwNC04MzoyMDE0MDkyNjIxNDYxMDp4ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
MzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1s
a3AtbmV4MDQtODk6MjAxNDA5MjYyMTQ2MTA6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1
YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTk5
OjIwMTQwOTI2MjE0NjEwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5l
bC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYy
OGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xMDU6MjAxNDA5MjYy
MTQ2MTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5
MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTExMDoyMDE0MDkyNjIxNDYxNTp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9k
bWVzZy15b2N0by1sa3AtbmV4MDQtMTEzOjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3Rv
LWxrcC1uZXgwNC0xMTQ6MjAxNDA5MjYyMTQ2MTU6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNl
NWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0
LTEyMjoyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRl
YTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTI5OjIwMTQw
OTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4
YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xMzM6MjAxNDA5MjYyMTQ2MTU6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVk
NzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTEzNToyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15
b2N0by1sa3AtbmV4MDQtMTM4OjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5
MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1u
ZXgwNC0xNDA6MjAxNDA5MjYyMTQ2MjA6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBk
ZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTE0NToy
MDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2Mjhk
MGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTUwOjIwMTQwOTI2MjE0
NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEy
OGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xNTQ6MjAxNDA5MjYyMTQ2MTU6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1l
c2cteW9jdG8tbGtwLW5leDA0LTE1NzoyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
MzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1s
a3AtbmV4MDQtMTU5OjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTVi
NWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0x
NToyMDE0MDkyNjIxNDYyMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2
MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTY0OjIwMTQwOTI2
MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0
OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xNjg6MjAxNDA5MjYyMTQ2MTU6eDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgv
ZG1lc2cteW9jdG8tbGtwLW5leDA0LTE3MDoyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0
by1sa3AtbmV4MDQtMTc2OjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRj
ZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgw
NC0xNzoyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRl
YTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMTkxOjIwMTQw
OTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4
YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0yOToyMDE0MDkyNjIxNDYxNTp4
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3
OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtMzM6MjAxNDA5MjYyMTQ2MTU6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9j
dG8tbGtwLW5leDA0LTM6MjAxNDA5MjYyMTQ2MjA6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNl
NWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0
LTQ2OjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVh
ODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC01MzoyMDE0MDky
NjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEz
NDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQtNjE6MjAxNDA5MjYyMTQ2MTU6eDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgv
ZG1lc2cteW9jdG8tbGtwLW5leDA0LTY1OjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3Rv
LWxrcC1uZXgwNC02OToyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvMzRlOTFkY2U1
YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9kbWVzZy15b2N0by1sa3AtbmV4MDQt
NzM6MjAxNDA5MjYyMTQ2MTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzM0ZTkxZGNlNWI1YTBkZjFkZWE4
NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8tbGtwLW5leDA0LTc2OjIwMTQwOTI2
MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0
OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC03OToyMDE0MDkyNjIxNDYxNTp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTEvMzRlOTFkY2U1YjVhMGRmMWRlYTg2MjhkMGFiOGEzNDkxMjhhNWQ3OC9k
bWVzZy15b2N0by1sa3AtbmV4MDQtODI6MjAxNDA5MjYyMTQ2MTU6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
LzM0ZTkxZGNlNWI1YTBkZjFkZWE4NjI4ZDBhYjhhMzQ5MTI4YTVkNzgvZG1lc2cteW9jdG8t
bGtwLW5leDA0LTkyOjIwMTQwOTI2MjE0NjE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxOjoKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8zNGU5MWRjZTVi
NWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4L2RtZXNnLXlvY3RvLWxrcC1uZXgwNC05
ODoyMDE0MDkyNjIxNDYxNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6CjA6NTI6
NTIgYWxsX2dvb2Q6YmFkOmFsbF9iYWQgYm9vdHMKCmxpbmVhci1iaXNlY3Q6IGJhZCBicmFu
Y2ggbWF5IGJlIGx1dG8veDg2L3ZzeXNjYWxsCmxpbmVhci1iaXNlY3Q6IGhhbmRsZSBvdmVy
IHRvIGdpdCBiaXNlY3QKbGluZWFyLWJpc2VjdDogZ2l0IGJpc2VjdCBzdGFydCAzNGU5MWRj
ZTViNWEwZGYxZGVhODYyOGQwYWI4YTM0OTEyOGE1ZDc4IDM1MWI2NzAwOTc5YjI1YWZkM2Jm
OWJhYzMyZWJhZDJkMGQ4OWE2OTYgLS0KUHJldmlvdXMgSEVBRCBwb3NpdGlvbiB3YXMgMzRl
OTFkYy4uLiBNZXJnZSAnbHV0by94ODYvdnN5c2NhbGwnIGludG8gZGV2ZWwtaG91cmx5LTIw
MTQwOTI0MDIKSEVBRCBpcyBub3cgYXQgYjRkMzMxOC4uLiBNZXJnZSByZW1vdGUtdHJhY2tp
bmcgYnJhbmNoICdjcnlwdG8vbWFzdGVyJwpCaXNlY3Rpbmc6IDUgcmV2aXNpb25zIGxlZnQg
dG8gdGVzdCBhZnRlciB0aGlzIChyb3VnaGx5IDMgc3RlcHMpCltmY2ZlZTZmODc0OWFmMTRk
OTYzNzNhOWUyNjU2MzU0YWQwYjk1NDk5XSB4ODZfNjQsdmRzbzogUmVtb3ZlIGppZmZpZXMg
ZnJvbSB0aGUgdnZhciBwYWdlCmxpbmVhci1iaXNlY3Q6IGdpdCBiaXNlY3QgcnVuIC9jL2tl
cm5lbC10ZXN0cy9iaXNlY3QtdGVzdC1ib290LWZhaWx1cmUuc2ggL2MvYm9vdC1iaXNlY3Qv
bGludXgtNi9vYmotYmlzZWN0CnJ1bm5pbmcgL2Mva2VybmVsLXRlc3RzL2Jpc2VjdC10ZXN0
LWJvb3QtZmFpbHVyZS5zaCAvYy9ib290LWJpc2VjdC9saW51eC02L29iai1iaXNlY3QKbHMg
LWEgL2tidWlsZC10ZXN0cy9ydW4tcXVldWUva3ZtL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2xpbnV4LWRldmVsOmRldmVsLWhvdXJseS0yMDE0MDkyNDAyOmZjZmVlNmY4NzQ5
YWYxNGQ5NjM3M2E5ZTI2NTYzNTRhZDBiOTU0OTk6YmlzZWN0LWxpbnV4LTYKCjIwMTQtMDkt
MjYgMjE6NDY6NTIgZmNmZWU2Zjg3NDlhZjE0ZDk2MzczYTllMjY1NjM1NGFkMGI5NTQ5OSBj
b21waWxpbmcKUXVldWVkIGJ1aWxkIHRhc2sgdG8gL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1
ZS9zbmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtZmNmZWU2Zjg3NDlhZjE0ZDk2
MzczYTllMjY1NjM1NGFkMGI5NTQ5OQpDaGVjayBmb3Iga2VybmVsIGluIC9rZXJuZWwveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZmNmZWU2Zjg3NDlhZjE0ZDk2MzczYTllMjY1
NjM1NGFkMGI5NTQ5OQp3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMv
YnVpbGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLWZjZmVlNmY4
NzQ5YWYxNGQ5NjM3M2E5ZTI2NTYzNTRhZDBiOTU0OTkKG1sxOzM1bTIwMTQtMDktMjYgMjE6
NTE6NTIgTm8gYnVpbGQgc2VydmVkIGZpbGUgL2tidWlsZC10ZXN0cy9idWlsZC1zZXJ2ZWQv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtZmNmZWU2Zjg3NDlhZjE0ZDk2MzczYTll
MjY1NjM1NGFkMGI5NTQ5ORtbMG0KUmV0cnkgYnVpbGQgLi4Kd2FpdGluZyBmb3IgY29tcGxl
dGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi1zbW9rZS94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS1mY2ZlZTZmODc0OWFmMTRkOTYzNzNhOWUyNjU2MzU0YWQw
Yjk1NDk5Cmtlcm5lbDogL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9m
Y2ZlZTZmODc0OWFmMTRkOTYzNzNhOWUyNjU2MzU0YWQwYjk1NDk5L3ZtbGludXotMy4xNy4w
LXJjMS0wMDE2NC1nZmNmZWU2ZgoKMjAxNC0wOS0yNiAyMTo1NDo1MiBkZXRlY3RpbmcgYm9v
dCBzdGF0ZSAJMQkzCTgJMTgJMjQJMjcJNDUuCTUyIFNVQ0NFU1MKCkJpc2VjdGluZzogMiBy
ZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMgKHJvdWdobHkgMiBzdGVwcykKWzJk
ZWUxMWMwZWI0ZWI5YTc2N2ZhODc3NjRjOTFmZGExOGQxNGVmZjFdIHg4Nl82NCx2c3lzY2Fs
bDogVHVybiB2c3lzY2FsbHMgYWxsIHRoZSB3YXkgb2ZmIHdoZW4gdnN5c2NhbGw9bm9uZQpy
dW5uaW5nIC9jL2tlcm5lbC10ZXN0cy9iaXNlY3QtdGVzdC1ib290LWZhaWx1cmUuc2ggL2Mv
Ym9vdC1iaXNlY3QvbGludXgtNi9vYmotYmlzZWN0CmxzIC1hIC9rYnVpbGQtdGVzdHMvcnVu
LXF1ZXVlL2t2bS94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9saW51eC1kZXZlbDpk
ZXZlbC1ob3VybHktMjAxNDA5MjQwMjoyZGVlMTFjMGViNGViOWE3NjdmYTg3NzY0YzkxZmRh
MThkMTRlZmYxOmJpc2VjdC1saW51eC02CgoyMDE0LTA5LTI2IDIxOjU5OjIzIDJkZWUxMWMw
ZWI0ZWI5YTc2N2ZhODc3NjRjOTFmZGExOGQxNGVmZjEgY29tcGlsaW5nClF1ZXVlZCBidWls
ZCB0YXNrIHRvIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxLTJkZWUxMWMwZWI0ZWI5YTc2N2ZhODc3NjRjOTFmZGExOGQxNGVm
ZjEKQ2hlY2sgZm9yIGtlcm5lbCBpbiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxLzJkZWUxMWMwZWI0ZWI5YTc2N2ZhODc3NjRjOTFmZGExOGQxNGVmZjEKd2FpdGlu
ZyBmb3IgY29tcGxldGlvbiBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi1zbW9r
ZS94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS0yZGVlMTFjMGViNGViOWE3NjdmYTg3
NzY0YzkxZmRhMThkMTRlZmYxCmtlcm5lbDogL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS8yZGVlMTFjMGViNGViOWE3NjdmYTg3NzY0YzkxZmRhMThkMTRlZmYxL3Zt
bGludXotMy4xNy4wLXJjMS0wMDE2Ny1nMmRlZTExYwoKMjAxNC0wOS0yNiAyMjowMzoyMyBk
ZXRlY3RpbmcgYm9vdCBzdGF0ZSAJMwk0CTI0CTI4CTQwCTQyCTQ2CTQ5CTUyIFNVQ0NFU1MK
CkJpc2VjdGluZzogMCByZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMgKHJvdWdo
bHkgMSBzdGVwKQpbY2FhZTIwNGJlMTg0YTU3NWFmMmMwMmI4MzdkODE4Mjc4ZjkyMTMyM10g
eDg2XzY0LHZzeXNjYWxsOiBNYWtlIHZzeXNjYWxsIGVtdWxhdGlvbiBjb25maWd1cmFibGUK
cnVubmluZyAvYy9rZXJuZWwtdGVzdHMvYmlzZWN0LXRlc3QtYm9vdC1mYWlsdXJlLnNoIC9j
L2Jvb3QtYmlzZWN0L2xpbnV4LTYvb2JqLWJpc2VjdApscyAtYSAva2J1aWxkLXRlc3RzL3J1
bi1xdWV1ZS9rdm0veDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvbGludXgtZGV2ZWw6
ZGV2ZWwtaG91cmx5LTIwMTQwOTI0MDI6Y2FhZTIwNGJlMTg0YTU3NWFmMmMwMmI4MzdkODE4
Mjc4ZjkyMTMyMzpiaXNlY3QtbGludXgtNgoKMjAxNC0wOS0yNiAyMjowNzo1NCBjYWFlMjA0
YmUxODRhNTc1YWYyYzAyYjgzN2Q4MTgyNzhmOTIxMzIzIGNvbXBpbGluZwpRdWV1ZWQgYnVp
bGQgdGFzayB0byAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS1jYWFlMjA0YmUxODRhNTc1YWYyYzAyYjgzN2Q4MTgyNzhmOTIx
MzIzCkNoZWNrIGZvciBrZXJuZWwgaW4gL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS9jYWFlMjA0YmUxODRhNTc1YWYyYzAyYjgzN2Q4MTgyNzhmOTIxMzIzCndhaXRp
bmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1ZS9zbmIveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtY2FhZTIwNGJlMTg0YTU3NWFmMmMwMmI4Mzdk
ODE4Mjc4ZjkyMTMyMwobWzE7MzVtMjAxNC0wOS0yNiAyMjoxMTo1NCBObyBidWlsZCBzZXJ2
ZWQgZmlsZSAva2J1aWxkLXRlc3RzL2J1aWxkLXNlcnZlZC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS1jYWFlMjA0YmUxODRhNTc1YWYyYzAyYjgzN2Q4MTgyNzhmOTIxMzIzG1sw
bQpSZXRyeSBidWlsZCAuLgp3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIC9rYnVpbGQtdGVz
dHMvYnVpbGQtcXVldWUvc25iLXNtb2tlL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
LWNhYWUyMDRiZTE4NGE1NzVhZjJjMDJiODM3ZDgxODI3OGY5MjEzMjMKa2VybmVsOiAva2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2NhYWUyMDRiZTE4NGE1NzVhZjJj
MDJiODM3ZDgxODI3OGY5MjEzMjMvdm1saW51ei0zLjE3LjAtcmMxLTAwMTY5LWdjYWFlMjA0
CgoyMDE0LTA5LTI2IDIyOjEzOjU0IGRldGVjdGluZyBib290IHN0YXRlIC4gVEVTVCBGQUlM
VVJFClsgICAgMy44NTIzMzBdIGlucHV0OiBBVCBUcmFuc2xhdGVkIFNldCAyIGtleWJvYXJk
IGFzIC9kZXZpY2VzL3BsYXRmb3JtL2k4MDQyL3NlcmlvMC9pbnB1dC9pbnB1dDEKWyAgICAz
Ljk4NDM4M10gaW5pdFsxXTogc2VnZmF1bHQgYXQgZmZmZmZmZmZmZjYwMDQwMCBpcCBmZmZm
ZmZmZmZmNjAwNDAwIHNwIDAwMDA3ZmZmYmFkOGRkMzggZXJyb3IgMTUKWyAgICA0LjAxMDI4
Ml0gaW5pdFsxXTogc2VnZmF1bHQgYXQgZmZmZmZmZmZmZjYwMDQwMCBpcCBmZmZmZmZmZmZm
NjAwNDAwIHNwIDAwMDA3ZmZmYmFkOGQxZjggZXJyb3IgMTUKWyAgICA0LjAxMTY5OF0gS2Vy
bmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEF0dGVtcHRlZCB0byBraWxsIGluaXQhIGV4aXRj
b2RlPTB4MDAwMDAwMGIKWyAgICA0LjAxMTY5OF0gClsgICAgNC4wMTI5NDBdIENQVTogMCBQ
SUQ6IDEgQ29tbTogaW5pdCBOb3QgdGFpbnRlZCAzLjE3LjAtcmMxLTAwMTY5LWdjYWFlMjA0
ICMxClsgICAgNC4wMTM4OTJdIEhhcmR3YXJlIG5hbWU6IEJvY2hzIEJvY2hzLCBCSU9TIEJv
Y2hzIDAxLzAxLzIwMTEKWyAgICA0LjAxNDYzNl0gIDAwMDAwMDAwMDAwMDAwMDAgZmZmZjg4
MDAxMjg0ZmNiMCBmZmZmZmZmZjgxNGEyY2U1IGZmZmY4ODAwMTI4NGZkMzAKWyAgICA0LjAx
NTcyM10gIGZmZmZmZmZmODE0YTFjNTEgMDAwMDAwMDAwMDAwMDAxMCBmZmZmODgwMDEyODRm
ZDQwIGZmZmY4ODAwMTI4NGZjZDgKWyAgICA0LjAyMDEwMl0gIGZmZmY4ODAwMTI4NGZkNzgg
MDAwMDAwMDAwMDAwMDAwYiAwMDAwMDAwMDAwMDAwMDAwIGZmZmY4ODAwMTI4NDg3NDAKWyAg
ICA0LjAyMDEwMl0gQ2FsbCBUcmFjZToKWyAgICA0LjAyMDEwMl0gIFs8ZmZmZmZmZmY4MTRh
MmNlNT5dIGR1bXBfc3RhY2srMHgxOS8weDFiClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZm
ODE0YTFjNTE+XSBwYW5pYysweGM0LzB4MWVmClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZm
ODEwOTBkMmM+XSBkb19leGl0KzB4M2JiLzB4ODFlClsgICAgNC4wMjAxMDJdICBbPGZmZmZm
ZmZmODExMTk4YzU+XSA/IF9fa21lbV9jYWNoZV9mcmVlKzB4MTEvMHgyZQpbICAgIDQuMDIw
MTAyXSAgWzxmZmZmZmZmZjgxMTE5OTJjPl0gPyBrbWVtX2NhY2hlX2ZyZWUrMHgzMS8weDMz
ClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZmODEwOTYyZWI+XSA/IF9fc2lncXVldWVfZnJl
ZSsweDMzLzB4MzYKWyAgICA0LjAyMDEwMl0gIFs8ZmZmZmZmZmY4MTA5MWU5MD5dIGRvX2dy
b3VwX2V4aXQrMHg0NS8weGJmClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZmODEwOThkZjk+
XSBnZXRfc2lnbmFsKzB4NTNkLzB4NTY4ClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZmODEw
NDMwMzk+XSA/IGJhZF9hcmVhX25vc2VtYXBob3JlKzB4ZS8weDEwClsgICAgNC4wMjAxMDJd
ICBbPGZmZmZmZmZmODEwMjgyMTg+XSBkb19zaWduYWwrMHgyMy8weDg4NQpbICAgIDQuMDIw
MTAyXSAgWzxmZmZmZmZmZjgxNGEwMDAwPl0gPyBmcmVlX2FyZWFfaW5pdF9ub2RlKzB4YWMv
MHgzNmUKWyAgICA0LjAyMDEwMl0gIFs8ZmZmZmZmZmY4MTAyOGE5Nj5dIGRvX25vdGlmeV9y
ZXN1bWUrMHgxYy8weDc1ClsgICAgNC4wMjAxMDJdICBbPGZmZmZmZmZmODE0YTkyN2I+XSBy
ZXRpbnRfc2lnbmFsKzB4NDgvMHg4ZApbICAgIDQuMDIwMTAyXSBLZXJuZWwgT2Zmc2V0OiAw
eDAgZnJvbSAweGZmZmZmZmZmODEwMDAwMDAgKHJlbG9jYXRpb24gcmFuZ2U6IDB4ZmZmZmZm
ZmY4MDAwMDAwMC0weGZmZmZmZmZmOWZmZmZmZmYpCgpFbGFwc2VkIHRpbWU6IDEwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvY2FhZTIwNGJlMTg0YTU3NWFmMmMw
MmI4MzdkODE4Mjc4ZjkyMTMyMy9kbWVzZy15b2N0by1rYnVpbGQtMTU6MjAxNDA5MjYyMjEx
MTc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjMS0wMDE2OS1nY2Fh
ZTIwNDoxCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvY2FhZTIwNGJl
MTg0YTU3NWFmMmMwMmI4MzdkODE4Mjc4ZjkyMTMyMy9kbWVzZy15b2N0by1rYnVpbGQtNzoy
MDE0MDkyNjIyMTExNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmMx
LTAwMTY5LWdjYWFlMjA0OjEKMDoyOjIgYWxsX2dvb2Q6YmFkOmFsbF9iYWQgYm9vdHMKCkJp
c2VjdGluZzogMCByZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMgKHJvdWdobHkg
MCBzdGVwcykKWzJkZjg3YmRmYTZhYzkwNzZlZDgwYmI4Mzc2NGI4YjBmM2VjMzk2YmRdIHg4
Nl82NCx2c3lzY2FsbDogUmV3cml0ZSBjb21tZW50IGFuZCBjbGVhbiB1cCBoZWFkZXJzIGlu
IHZzeXNjYWxsIGNvZGUKcnVubmluZyAvYy9rZXJuZWwtdGVzdHMvYmlzZWN0LXRlc3QtYm9v
dC1mYWlsdXJlLnNoIC9jL2Jvb3QtYmlzZWN0L2xpbnV4LTYvb2JqLWJpc2VjdApscyAtYSAv
a2J1aWxkLXRlc3RzL3J1bi1xdWV1ZS9rdm0veDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvbGludXgtZGV2ZWw6ZGV2ZWwtaG91cmx5LTIwMTQwOTI0MDI6MmRmODdiZGZhNmFjOTA3
NmVkODBiYjgzNzY0YjhiMGYzZWMzOTZiZDpiaXNlY3QtbGludXgtNgoKMjAxNC0wOS0yNiAy
MjoxNDoyNiAyZGY4N2JkZmE2YWM5MDc2ZWQ4MGJiODM3NjRiOGIwZjNlYzM5NmJkIGNvbXBp
bGluZwpRdWV1ZWQgYnVpbGQgdGFzayB0byAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3Nu
Yi94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS0yZGY4N2JkZmE2YWM5MDc2ZWQ4MGJi
ODM3NjRiOGIwZjNlYzM5NmJkCkNoZWNrIGZvciBrZXJuZWwgaW4gL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS8yZGY4N2JkZmE2YWM5MDc2ZWQ4MGJiODM3NjRiOGIw
ZjNlYzM5NmJkCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10ZXN0cy9idWls
ZC1xdWV1ZS9zbmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtMmRmODdiZGZhNmFj
OTA3NmVkODBiYjgzNzY0YjhiMGYzZWMzOTZiZAobWzE7MzVtMjAxNC0wOS0yNiAyMjoxODoy
NiBObyBidWlsZCBzZXJ2ZWQgZmlsZSAva2J1aWxkLXRlc3RzL2J1aWxkLXNlcnZlZC94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS0yZGY4N2JkZmE2YWM5MDc2ZWQ4MGJiODM3NjRi
OGIwZjNlYzM5NmJkG1swbQpSZXRyeSBidWlsZCAuLgp3YWl0aW5nIGZvciBjb21wbGV0aW9u
IG9mIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iLXNtb2tlL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxLTJkZjg3YmRmYTZhYzkwNzZlZDgwYmI4Mzc2NGI4YjBmM2VjMzk2
YmQKa2VybmVsOiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLzJkZjg3
YmRmYTZhYzkwNzZlZDgwYmI4Mzc2NGI4YjBmM2VjMzk2YmQvdm1saW51ei0zLjE3LjAtcmMx
LTAwMTY4LWcyZGY4N2JkCgoyMDE0LTA5LTI2IDIyOjIxOjI2IGRldGVjdGluZyBib290IHN0
YXRlIAkzMQk0MQk1MiBTVUNDRVNTCgpjYWFlMjA0YmUxODRhNTc1YWYyYzAyYjgzN2Q4MTgy
NzhmOTIxMzIzIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0CmNvbW1pdCBjYWFlMjA0YmUxODRh
NTc1YWYyYzAyYjgzN2Q4MTgyNzhmOTIxMzIzCkF1dGhvcjogQW5keSBMdXRvbWlyc2tpIDxs
dXRvQGFtYWNhcGl0YWwubmV0PgpEYXRlOiAgIE1vbiBKdW4gMTYgMTg6NTA6MTIgMjAxNCAt
MDcwMAoKICAgIHg4Nl82NCx2c3lzY2FsbDogTWFrZSB2c3lzY2FsbCBlbXVsYXRpb24gY29u
ZmlndXJhYmxlCiAgICAKICAgIFRoaXMgYWRkcyBDT05GSUdfWDg2X1ZTWVNDQUxMX0VNVUxB
VElPTiwgZ3VhcmRlZCBieSBDT05GSUdfRVhQRVJULgogICAgVHVybmluZyBpdCBvZmYgY29t
cGxldGVseSBkaXNhYmxlcyB2c3lzY2FsbCBlbXVsYXRpb24sIHNhdmluZyB+My41awogICAg
Zm9yIHZzeXNjYWxsXzY0LmMsIDRrIGZvciB2c3lzY2FsbF9lbXVfNjQuUyAodGhlIGZha2Ug
dnN5c2NhbGwKICAgIHBhZ2UpLCBzb21lIHRpbnkgYW1vdW50IG9mIGNvcmUgbW0gY29kZSB0
aGF0IHN1cHBvcnRzIGEgZ2F0ZSBhcmVhLAogICAgYW5kIHBvc3NpYmx5IDRrIGZvciBhIHdh
c3RlZCBwYWdldGFibGUuICBUaGUgbGF0dGVyIGlzIGJlY2F1c2UgdGhlCiAgICB2c3lzY2Fs
bCBhZGRyZXNzZXMgYXJlIG1pc2FsaWduZWQgYW5kIGZpdCBwb29ybHkgaW4gdGhlIGZpeG1h
cC4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5keSBMdXRvbWlyc2tpIDxsdXRvQGFtYWNh
cGl0YWwubmV0PgoKOjA0MDAwMCAwNDAwMDAgMDlkM2I2MGI0YjY0ZDdlOTAzNzkyOTJlMzA0
Y2QxNWU2ZGZhMmYzOSAyYzliNWIzNmNmYWUxNWExODdhZmM0ZjMyZmEzOWEyMWIwMDk5MTVi
IE0JYXJjaApiaXNlY3QgcnVuIHN1Y2Nlc3MKSEVBRCBpcyBub3cgYXQgMmRmODdiZC4uLiB4
ODZfNjQsdnN5c2NhbGw6IFJld3JpdGUgY29tbWVudCBhbmQgY2xlYW4gdXAgaGVhZGVycyBp
biB2c3lzY2FsbCBjb2RlCmxzIC1hIC9rYnVpbGQtdGVzdHMvcnVuLXF1ZXVlL2t2bS94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9saW51eC1kZXZlbDpkZXZlbC1ob3VybHktMjAx
NDA5MjQwMjoyZGY4N2JkZmE2YWM5MDc2ZWQ4MGJiODM3NjRiOGIwZjNlYzM5NmJkOmJpc2Vj
dC1saW51eC02CgoyMDE0LTA5LTI2IDIyOjIyOjU3IDJkZjg3YmRmYTZhYzkwNzZlZDgwYmI4
Mzc2NGI4YjBmM2VjMzk2YmQgcmV1c2UgL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS8yZGY4N2JkZmE2YWM5MDc2ZWQ4MGJiODM3NjRiOGIwZjNlYzM5NmJkL3ZtbGlu
dXotMy4xNy4wLXJjMS0wMDE2OC1nMmRmODdiZAoKMjAxNC0wOS0yNiAyMjoyMjo1NyBkZXRl
Y3RpbmcgYm9vdCBzdGF0ZSAJNjMJMTAyCTExNAkxNTYgU1VDQ0VTUwoKUHJldmlvdXMgSEVB
RCBwb3NpdGlvbiB3YXMgMmRmODdiZC4uLiB4ODZfNjQsdnN5c2NhbGw6IFJld3JpdGUgY29t
bWVudCBhbmQgY2xlYW4gdXAgaGVhZGVycyBpbiB2c3lzY2FsbCBjb2RlCkhFQUQgaXMgbm93
IGF0IGRkYzUwNTdiLi4uIDBkYXkgaGVhZCBndWFyZCBmb3IgJ2RldmVsLWhvdXJseS0yMDE0
MDkyNDAyJwpscyAtYSAva2J1aWxkLXRlc3RzL3J1bi1xdWV1ZS9rdm0veDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvbGludXgtZGV2ZWw6ZGV2ZWwtaG91cmx5LTIwMTQwOTI0MDI6
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MDpiaXNlY3QtbGludXgt
NgogVEVTVCBGQUlMVVJFClsgICAgNC41MDgyODNdIHVkZXZbMTM5XTogc3RhcnRpbmcgdmVy
c2lvbiAxNjQKWyAgICA2Ljc0MjM0NV0gaW5pdFsxXTogc2VnZmF1bHQgYXQgZmZmZmZmZmZm
ZjYwMDQwMCBpcCBmZmZmZmZmZmZmNjAwNDAwIHNwIDAwMDA3ZmZmYjg5YTRhYjggZXJyb3Ig
MTUKWyAgICA2Ljc0MzYzMl0gaW5pdFsxXTogc2VnZmF1bHQgYXQgZmZmZmZmZmZmZjYwMDQw
MCBpcCBmZmZmZmZmZmZmNjAwNDAwIHNwIDAwMDA3ZmZmYjg5YTNmNzggZXJyb3IgMTUKWyAg
ICA2Ljc2MzY3NF0gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEF0dGVtcHRlZCB0byBr
aWxsIGluaXQhIGV4aXRjb2RlPTB4MDAwMDAwMGIKWyAgICA2Ljc2MzY3NF0gClsgICAgNi43
NzAwMTJdIENQVTogMCBQSUQ6IDEgQ29tbTogaW5pdCBOb3QgdGFpbnRlZCAzLjE3LjAtcmM2
LXdsLTA0NDc4LWdkZGM1MDU3YiAjNTcwClsgICAgNi43NzAwMTJdIEhhcmR3YXJlIG5hbWU6
IEJvY2hzIEJvY2hzLCBCSU9TIEJvY2hzIDAxLzAxLzIwMTEKWyAgICA2Ljc3MDAxMl0gIDAw
MDAwMDAwMDAwMDAwMDAgZmZmZjg4MDAxMjg0ZmNiMCBmZmZmZmZmZjgxNGEzYmE1IGZmZmY4
ODAwMTI4NGZkMzAKWyAgICA2Ljc3MDAxMl0gIGZmZmZmZmZmODE0YTJiMTEgMDAwMDAwMDAw
MDAwMDAxMCBmZmZmODgwMDEyODRmZDQwIGZmZmY4ODAwMTI4NGZjZDgKWyAgICA2Ljc3MDAx
Ml0gIGZmZmY4ODAwMTI4NGZkNzggMDAwMDAwMDAwMDAwMDAwYiBmZmZmODgwMDEyODQ4MDAw
IDAwMDAwMDAwMDAwMDAwMDAKWyAgICA2Ljc3MDAxMl0gQ2FsbCBUcmFjZToKWyAgICA2Ljc3
MDAxMl0gIFs8ZmZmZmZmZmY4MTRhM2JhNT5dIGR1bXBfc3RhY2srMHgxOS8weDFiClsgICAg
Ni43NzAwMTJdICBbPGZmZmZmZmZmODE0YTJiMTE+XSBwYW5pYysweGM0LzB4MWVmClsgICAg
Ni43NzAwMTJdICBbPGZmZmZmZmZmODEwOTBkNjE+XSBkb19leGl0KzB4M2NhLzB4ODNjClsg
ICAgNi43NzAwMTJdICBbPGZmZmZmZmZmODExMWEyMmM+XSA/IF9fa21lbV9jYWNoZV9mcmVl
KzB4MTEvMHgyZQpbICAgIDYuNzcwMDEyXSAgWzxmZmZmZmZmZjgxMTFhMjkzPl0gPyBrbWVt
X2NhY2hlX2ZyZWUrMHgzMS8weDMzClsgICAgNi43NzAwMTJdICBbPGZmZmZmZmZmODEwOTYz
ZjI+XSA/IF9fc2lncXVldWVfZnJlZSsweDMzLzB4MzYKWyAgICA2Ljc3MDAxMl0gIFs8ZmZm
ZmZmZmY4MTA5MWVkND5dIGRvX2dyb3VwX2V4aXQrMHg0NS8weGJmClsgICAgNi43NzAwMTJd
ICBbPGZmZmZmZmZmODEwOThmMDA+XSBnZXRfc2lnbmFsKzB4NTNkLzB4NTY4ClsgICAgNi43
NzAwMTJdICBbPGZmZmZmZmZmODEwNDMwMzM+XSA/IGJhZF9hcmVhX25vc2VtYXBob3JlKzB4
ZS8weDEwClsgICAgNi43NzAwMTJdICBbPGZmZmZmZmZmODEwMjgyMTg+XSBkb19zaWduYWwr
MHgyMy8weDg4NQpbICAgIDYuNzcwMDEyXSAgWzxmZmZmZmZmZjgxNGEwMDAwPl0gPyBzYXZl
X21yKzB4MjMvMHgzZQpbICAgIDYuNzcwMDEyXSAgWzxmZmZmZmZmZjgxMDI4YTk2Pl0gZG9f
bm90aWZ5X3Jlc3VtZSsweDFjLzB4NzUKWyAgICA2Ljc3MDAxMl0gIFs8ZmZmZmZmZmY4MTRh
YTEzYj5dIHJldGludF9zaWduYWwrMHg0OC8weDhkClsgICAgNi43NzAwMTJdIEtlcm5lbCBP
ZmZzZXQ6IDB4MCBmcm9tIDB4ZmZmZmZmZmY4MTAwMDAwMCAocmVsb2NhdGlvbiByYW5nZTog
MHhmZmZmZmZmZjgwMDAwMDAwLTB4ZmZmZmZmZmY5ZmZmZmZmZikKCkVsYXBzZWQgdGltZTog
MTUKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xNzc6
MjAxNDA5MjYxODI0MTc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTY6MjAxNDA5MjQwNDMxNTc6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRj
NTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1
N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQt
ODoyMDE0MDkyNDA0MjQzMzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAt
cmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2Rt
ZXNnLXlvY3RvLXZwLTYxOjIwMTQwOTI0MDQxMDUzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMyOjIwMTQwOTI0MDQyNzQ0Ong4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI3OjIw
MTQwOTI0MDQyNDM1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8tdnAtMzoyMDE0MDkyNDA0MDAxMjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC04OjIwMTQwOTI0MDQxMzE5Ong4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE3OjIwMTQwOTI0
MDQzMTU4Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTk6MjAxNDA5MjQwNDEyNDY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTU6MjAxNDA5MjQwNDE1MjA6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTA6MjAxNDA5MjQw
NDM3MjQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12
cC02OjIwMTQwOTI0MDQwNTE2Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQxNTIwOng4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTIzOjIwMTQwOTI0MDQxODM0
Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2Rk
YzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUw
NTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxk
LTEyOjIwMTQwOTI0MDQxMzIwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTQ6MjAxNDA5MjQwNDQwMTk6eDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1
ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTU6MjAxNDA5MjQwNDE2NTY6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRj
NTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1
N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQt
MjM6MjAxNDA5MjQwNDAxMTQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4w
LXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9k
bWVzZy15b2N0by1rYnVpbGQtMTM6MjAxNDA5MjQwNDIwMTM6eDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1
ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtODoyMDE0MDkyNDA0MTI0NDp4
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1
MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3
YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0x
OjIwMTQwOTI0MDQxNTE2Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1y
YzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1l
c2cteW9jdG8ta2J1aWxkLTc6MjAxNDA5MjQwNDMzMzk6eDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjVi
MTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjoyMDE0MDkyNDA0NDAxOTp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3
Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3
ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yODoy
MDE0MDkyNDA0NDAxNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2
LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNn
LXlvY3RvLWtidWlsZC0xMzoyMDE0MDkyNDA0MjUwNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIx
NzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNjoyMDE0MDkyNDA0MjQzMzp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3
Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3
ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zMjoy
MDE0MDkyNDA0NDA1MTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2
LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNn
LXlvY3RvLWtidWlsZC0zMDoyMDE0MDkyNDA0MDkyNjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIx
NzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xMToyMDE0MDkyNDA0MjYwNjp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3
Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3
ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC03OjIw
MTQwOTI0MDQxNjU1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTE6MjAxNDA5MjQwNDM0MDk6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjk6MjAxNDA5MjQwNDIyNTE6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6
NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2Vm
NzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC00NDoyMDE0MDky
NDA0MDI0Mzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0xOToyMDE0MDkyNDA0MjIxODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yOjIwMTQwOTI0MDQzOTE4Ong4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTU6MjAxNDA5MjQw
NDM1NDc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12
cC0xOjIwMTQwOTI0MDQwMjQyOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTI5OjIwMTQwOTI0MDQyMjE2Ong4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8tdnAtNTI6MjAxNDA5MjQwNDEwNTM6eDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1
N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2Iw
N2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtODoy
MDE0MDkyNDA0MTg0MDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2
LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0w
OTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNn
LXlvY3RvLWtidWlsZC01OjIwMTQwOTI0MDQzOTE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMyOjIwMTQwOTI0MDQzOTIwOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMyOjIw
MTQwOTI0MDQxMjQ1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTc6MjAxNDA5MjQwNDI4NDY6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMzE6MjAxNDA5MjQwNDE5NDE6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6
NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2Vm
NzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMzI6MjAx
NDA5MjQwNDI5MTk6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtNzoyMDE0MDkyNDA0NDAxOTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zOjIwMTQwOTI0MDQzNzIyOng4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3
MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcx
MjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTIzOjIwMTQw
OTI0MDQxMjEzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wt
MDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9j
dG8ta2J1aWxkLTY6MjAxNDA5MjQwNDE2NTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0
ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTA6MjAxNDA5MjQwNDA3NDY6eDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcw
Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEy
NjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjY6MjAxNDA5
MjQwNDIyMTg6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0w
NDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0
by1rYnVpbGQtMzE6MjAxNDA5MjQwNDE2NTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0
ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTE6MjAxNDA5MjQwMzU2NTI6eDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcw
Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEy
NjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjI6MjAxNDA5
MjQwNDE1MjE6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0w
NDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0
by1rYnVpbGQtMTY6MjAxNDA5MjQwMzU2NTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0
ODk2ZjU2MC9kbWVzZy15b2N0by12cC0yNzoyMDE0MDkyNDA0MTIwNTp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWxrcC1uZXgwNC0xNTM6MjAxNDA5
MjYxODI0MTQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMyOjIwMTQwOTI0MDQxMDMwOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE3OjIw
MTQwOTI0MDQzOTE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTE3OjIwMTQwOTI0MDQwMTEzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTk6MjAxNDA5MjQwNDEzMjE6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6
NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2Vm
NzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMzA6MjAx
NDA5MjQwNDA4NTE6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtMjE6MjAxNDA5MjQwNDM5MjA6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtODoyMDE0MDkyNDA0MTgwMDp4ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1
NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWxrcC1uZXgwNC03OToy
MDE0MDkyNjE4MjQxNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9rZXJuZWwv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1
ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC0xMToyMDE0MDkyNDA0MDAxMzp4ODZf
NjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3
Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3
ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC05OjIw
MTQwOTI0MDQ0MDUxOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTE0OjIwMTQwOTI0MDQyOTUyOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQyMjUzOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE0OjIw
MTQwOTI0MDQwMTE4Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTI0OjIwMTQwOTI0MDQxOTQwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE0OjIwMTQwOTI0MDQzNzIzOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8tdnAtNTQ6MjAxNDA5
MjQwNDA1MTY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0w
NDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0
by1rYnVpbGQtMzoyMDE0MDkyNDA0MzU0Njp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yODoyMDE0MDkyNDA0MTk0NTp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xMDoyMDE0MDky
NDA0MjYxMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0yNDoyMDE0MDkyNDA0MzE1ODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xOjIwMTQwOTI0MDQzNTQ1Ong4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTU6MjAxNDA5MjQw
NDM4MTg6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12
cC0xOToyMDE0MDkyNDA0MDUxNjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3
LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYw
L2RtZXNnLXlvY3RvLWtidWlsZC0xNDoyMDE0MDkyNDA0MzkyMDp4ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5l
bC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVk
ZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yNToyMDE0MDkyNDA0MTYy
Mjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdk
ZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1
MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWxrcC1u
ZXgwNC0xNDU6MjAxNDA5MjYxODI0MTY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
Ogova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcx
MjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMxOjIwMTQw
OTI0MDM1NzI0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wt
MDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9j
dG8tdnAtNTI6MjAxNDA5MjQwNDAxMjg6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTQ6MjAxNDA5MjQwNDIyMTU6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTg6MjAxNDA5MjQw
NDE2NTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12
cC01NDoyMDE0MDkyNDA0MTQ1ODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3
LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYw
L2RtZXNnLXlvY3RvLWtidWlsZC0xNjoyMDE0MDkyNDA0MTMxOTp4ODZfNjQtcmFuZGNvbmZp
Zy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5l
bC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVk
ZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xODoyMDE0MDkyNDA0Mzgx
Nzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdk
ZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1
MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTEy
OjIwMTQwOTI0MDQxMDUzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1y
YzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1l
c2cteW9jdG8ta2J1aWxkLTExOjIwMTQwOTI0MDQxMDI3Ong4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4
Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1
YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE6MjAxNDA5MjQwNDAxMTI6eDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1
N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2Iw
N2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjA6
MjAxNDA5MjQwNDExNDM6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJj
Ni13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVz
Zy15b2N0by12cC01NToyMDE0MDkyNDA0MDEyNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yNToyMDE0MDkyNDA0MjIyMjp4ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1
NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yOToyMDE0
MDkyNDA0MzMzOTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXds
LTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlv
Y3RvLWtidWlsZC0yMDoyMDE0MDkyNDA0MTgzNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC03OjIwMTQwOTI0MDQxMzE5Ong4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3
MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcx
MjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEwOjIwMTQw
OTI0MDQxMDI3Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wt
MDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9j
dG8ta2J1aWxkLTg6MjAxNDA5MjQwNDMyMDE6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0
ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtNjoyMDE0MDkyNDA0MzcyMDp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yOjIwMTQwOTI0
MDQxOTQ2Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTIyOjIwMTQwOTI0MDQzODE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
OjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5
NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE5OjIwMTQwOTI0MDQyNDMzOng4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTY6MjAxNDA5MjQw
NDI2MDk6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1r
YnVpbGQtMTI6MjAxNDA5MjQwNDE1MTU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtODoyMDE0MDkyNDA0MTYyNTp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yOToyMDE0MDkyNDA0
MzYxODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4
LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9k
ZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWti
dWlsZC0xNToyMDE0MDkyNDA0MjAxMjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MToz
LjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZm
NTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xODoyMDE0MDkyNDA0MzU0Njp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTEwOjIwMTQwOTI0MDQxMDUz
Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2Rk
YzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUw
NTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxk
LTE3OjIwMTQwOTI0MDQxMzIwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTIxOjIwMTQwOTI0MDQzNzI0Ong4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE5OjIwMTQwOTI0MDQwOTI0
Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2Rk
YzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUw
NTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxk
LTE3OjIwMTQwOTI0MDQyNzQ1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTI1OjIwMTQwOTI0MDQxMTAyOng4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEyOjIwMTQwOTI0MDQ0MDE2
Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2Rk
YzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUw
NTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxk
LTEzOjIwMTQwOTI0MDQzNzIxOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTE0OjIwMTQwOTI0MDQzODI0Ong4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI6MjAxNDA5MjQwNDMzMDg6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRj
NTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1
N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1sa3AtbmV4
MDQtMTc6MjAxNDA5MjYxODI0MTc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6Ogov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8tdnAtMjE6MjAxNDA5MjQwNDA1
MTQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1n
ZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRj
NTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVp
bGQtMTM6MjAxNDA5MjQwNDI4MTI6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4x
Ny4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2
MC9kbWVzZy15b2N0by12cC0xOToyMDE0MDkyNDA0MTA1NDp4ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVm
NWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC04OjIwMTQwOTI0MDQxMjExOng4
Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUw
NTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdi
MDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8tdnAtNDM6MjAx
NDA5MjQwNDAxMjM6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtNzoyMDE0MDkyNDAzNTYyNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTIwOjIwMTQwOTI0MDQwMDEyOng4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEwOjIwMTQwOTI0
MDQyNzQ1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTEwOjIwMTQwOTI0MDQyOTE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
OjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5
NmY1NjAvZG1lc2cteW9jdG8tdnAtMzY6MjAxNDA5MjQwNDAyNDM6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1
ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTc6MjAxNDA5MjQwNDI5
NTQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1n
ZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRj
NTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC0z
NjoyMDE0MDkyNDA0MDUxNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAt
cmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2Rt
ZXNnLXlvY3RvLWtidWlsZC0yMzoyMDE0MDkyNDA0MDc0Mjp4ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVm
NWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTU3OjIwMTQwOTI0MDQwNTE0Ong4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTY6MjAx
NDA5MjQwMzU2MjU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtMjY6MjAxNDA5MjQwNDE2MjM6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC0xNToyMDE0MDkyNDA0MDUxODp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yNDoyMDE0MDky
NDA0Mjk1Mzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0xMjoyMDE0MDkyNDA0MzEyNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yNToyMDE0MDkyNDA0MDc0Mjp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yMToyMDE0MDky
NDA0MzY0OTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0yOToyMDE0MDkyNDA0MjYxMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNToyMDE0MDkyNDA0MjI1Mzp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yMjoyMDE0MDky
NDA0Mjk1Mzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0yMjoyMDE0MDkyNDA0MDExNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zMjoyMDE0MDkyNDA0MjcxMTp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNDoyMDE0MDky
NDA0MjkxNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0yMDoyMDE0MDkyNDA0MDc0MDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yNDoyMDE0MDkyNDA0MTgwMDp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zMDoyMDE0MDky
NDA0MTgzNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0
NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3Rv
LWtidWlsZC0xNDoyMDE0MDkyNDA0MzMwNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC05OjIwMTQwOTI0MDQzNzIwOng4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTIxOjIwMTQwOTI0
MDQxMDMwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTMxOjIwMTQwOTI0MDM1MzIxOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
OjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5
NmY1NjAvZG1lc2cteW9jdG8tdnAtMjg6MjAxNDA5MjQwNDEwNTM6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1
ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtOToyMDE0MDkyNDA0MTIx
Njp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdk
ZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1
MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWls
ZC04OjIwMTQwOTI0MDQzMDUxOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTMxOjIwMTQwOTI0MDQwMTIwOng4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTY6MjAxNDA5MjQwNDE1MTk6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRj
NTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1
N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQt
NDoyMDE0MDkyNDA0MzgxODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAt
cmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2Rt
ZXNnLXlvY3RvLXZwLTIzOjIwMTQwOTI0MDQxMjAyOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQzNDQyOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI0OjIw
MTQwOTI0MDQyMjIxOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYt
d2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2ct
eW9jdG8ta2J1aWxkLTI6MjAxNDA5MjQwNDM0NDM6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjQ6MjAxNDA5MjQwNDI5MTc6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6
NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2Vm
NzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTg6MjAx
NDA5MjQwNDM3Mjc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtMzI6MjAxNDA5MjQwNDEyMTI6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjU6MjAxNDA5MjQwNDEyMTY6eDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6
NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2Vm
NzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtOToyMDE0
MDkyNDA0MzE1ODp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXds
LTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlv
Y3RvLXZwLTc6MjAxNDA5MjQwNDEwNTI6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTI6MjAxNDA5MjQwNDI2MDg6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTg6MjAxNDA5MjQw
NDM5MTk6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1r
YnVpbGQtMzE6MjAxNDA5MjQwNDM4MjQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjI6MjAxNDA5MjQwNDM5MTk6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTA6MjAxNDA5MjQw
NDI5NTQ6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1r
YnVpbGQtNjoyMDE0MDkyNDA0MzU0NTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MToz
LjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZm
NTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNToyMDE0MDkyNDA0MTgzNzp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yMjoyMDE0MDkyNDA0
MDkyNTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4
LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9k
ZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWti
dWlsZC05OjIwMTQwOTI0MDQyOTU0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE4OjIwMTQwOTI0MDQwMTE0Ong4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFk
NWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI3OjIwMTQwOTI0MDQz
MzA3Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTE3OjIwMTQwOTI0MDQxMjQ1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTIxOjIwMTQwOTI0MDQxMjEzOng4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFk
NWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE3OjIwMTQwOTI0MDQw
OTI1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTE0OjIwMTQwOTI0MDQzMTU3Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEwOjIwMTQwOTI0MDQxMTAyOng4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFk
NWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEyOjIwMTQwOTI0MDQy
NzQzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTMyOjIwMTQwOTI0MDQyOTUzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8tdnAtNTI6MjAxNDA5MjQwNDA1MTY6eDg2XzY0LXJhbmRjb25maWct
czEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwv
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1
ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtNToyMDE0MDkyNDA0MzcyMzp4
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1
MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3
YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWxrcC1uZXgw
NC0yMDoyMDE0MDkyNjE4MjQxNjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTo6Ci9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTE6MjAxNDA5MjQw
NDEyMTY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3
OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEv
ZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1r
YnVpbGQtOToyMDE0MDkyNDA0Mjc0NDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MToz
LjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZm
NTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zMDoyMDE0MDkyNDA0NDAxODp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xMjoyMDE0MDkyNDA0
MjAxNzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4
LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9k
ZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWti
dWlsZC0yNDoyMDE0MDkyNDA0MTUyMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MToz
LjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZm
NTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xODoyMDE0MDkyNDA0MTk0MTp4ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tl
cm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMx
ZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zOjIwMTQwOTI0MDQz
ODIzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTEyOjIwMTQwOTI0MDQwMDA0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI6MjAxNDA5MjQwNDI3NDY6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1
ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMzE6MjAxNDA5MjQwNDM5
MjA6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1n
ZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRj
NTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC02
OjIwMTQwOTI0MDQxMDUzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1y
YzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1l
c2cteW9jdG8ta2J1aWxkLTI5OjIwMTQwOTI0MDQwOTI2Ong4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4
Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1
YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQyODQ2Ong4
Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUw
NTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdi
MDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTM6
MjAxNDA5MjQwNDA3NDI6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJj
Ni13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVz
Zy15b2N0by1rYnVpbGQtMjc6MjAxNDA5MjQwNDEyNDQ6eDg2XzY0LXJhbmRjb25maWctczEt
MDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjVi
MTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTM6MjAxNDA5MjQwNDEzMTk6eDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1
N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2Iw
N2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC00OToyMDE0
MDkyNDA0MDUxNjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXds
LTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlv
Y3RvLWtidWlsZC0yOToyMDE0MDkyNDA0MzU0Mzp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0yMToyMDE0MDkyNDA0MzgyMDp4ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1
NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTE1OjIwMTQwOTI0
MDQxMDU0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTExOjIwMTQwOTI0MDQzOTIwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
OjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5
NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQyMjE4Ong4Nl82NC1yYW5k
Y29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAov
a2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0
MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTIyOjIwMTQwOTI0
MDQzMTU4Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0
NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUx
L2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8t
a2J1aWxkLTY6MjAxNDA5MjQwNDI5NTI6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6
My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2
ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTM6MjAxNDA5MjQwNDI0Mjk6eDg2XzY0LXJhbmRj
b25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9r
ZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQz
MWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMToyMDE0MDkyNDA0
MjUwNjp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4
LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9k
ZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZw
LTI4OjIwMTQwOTI0MDQwNTE2Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTEyOjIwMTQwOTI0MDQzMjAwOng4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI1OjIwMTQwOTI0MDQyNjA5
Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2Rk
YzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUw
NTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxk
LTEwOjIwMTQwOTI0MDQzNjUwOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcu
MC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAv
ZG1lc2cteW9jdG8ta2J1aWxkLTI3OjIwMTQwOTI0MDQyNjA5Ong4Nl82NC1yYW5kY29uZmln
LXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVs
L3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRm
NWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTY6MjAxNDA5MjQwNDI0MzQ6
eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRj
NTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1
N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1sa3AtbmV4
MDQtMTg0OjIwMTQwOTI2MTgyNDE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjoK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTE4OjIwMTQwOTI0MDQx
MjA0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTEzOjIwMTQwOTI0MDQxNjU1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTExOjIwMTQwOTI0MDQxMzIxOng4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2Vy
bmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFk
NWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTE0OjIwMTQwOTI0MDQz
NDQzOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTg6MjAxNDA5MjQwNDI4MTI6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4x
Ny4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2
MC9kbWVzZy15b2N0by1rYnVpbGQtMTE6MjAxNDA5MjQwNDE1MTU6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1
ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by12cC04OjIwMTQwOTI0MDQxMjAyOng4
Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUw
NTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdi
MDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI3
OjIwMTQwOTI0MDQxMzE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1y
YzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMx
LTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1l
c2cteW9jdG8tdnAtMjM6MjAxNDA5MjQwNDE0NTk6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtODoyMDE0MDkyNDA0NDAxNjp4ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1
NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNToyMDE0
MDkyNDA0MTAzMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXds
LTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlv
Y3RvLWtidWlsZC05OjIwMTQwOTI0MDQyOTE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1
NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTk6MjAxNDA5MjQwNDE1MTU6eDg2XzY0LXJh
bmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcw
Ci9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEy
NjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMTM6MjAxNDA5
MjQwNDE5MzY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0w
NDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAz
NTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0
by1rYnVpbGQtOToyMDE0MDkyNDA0MDExNDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1
MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4
OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xMToyMDE0MDkyNDA0MzA1Mzp4ODZfNjQtcmFu
ZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAK
L2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2
NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLXZwLTI0OjIwMTQwOTI0MDQw
MTI0Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0Nzgt
Z2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2Rk
YzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1
aWxkLTE3OjIwMTQwOTI0MDQyOTE5Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMu
MTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29u
ZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1
NjAvZG1lc2cteW9jdG8ta2J1aWxkLTg6MjAxNDA5MjQwNDEwMjk6eDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJu
ZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1
ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjE6MjAxNDA5MjQwNDEz
MjU6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1n
ZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRj
NTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVp
bGQtMTE6MjAxNDA5MjQwNDA3NDM6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4x
Ny4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25m
aWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2
MC9kbWVzZy15b2N0by12cC0yNDoyMDE0MDkyNDA0MDI0Mjp4ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVm
NWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0zMjoyMDE0MDkyNDA0MjYxMTp4
ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1
MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3
YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0x
NzoyMDE0MDkyNDA0MjYxMDp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAt
cmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1z
MS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2Rt
ZXNnLXlvY3RvLXZwLTUzOjIwMTQwOTI0MDQwMjQyOng4Nl82NC1yYW5kY29uZmlnLXMxLTA5
MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3
NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMwOjIwMTQwOTI0MDQxNTIxOng4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdi
OjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdl
ZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTQ6MjAx
NDA5MjQwNDI4NDc6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13
bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2MTU0ODk2ZjU2MC9kbWVzZy15
b2N0by1rYnVpbGQtMzI6MjAxNDA5MjQwNDMxNTk6eDg2XzY0LXJhbmRjb25maWctczEtMDky
NDAzNTE6My4xNy4wLXJjNi13bC0wNDQ3OC1nZGRjNTA1N2I6NTcwCi9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZGRjNTA1N2IwN2VmNzEyNjQzMWQ1ZGY1ZjViMTc2
MTU0ODk2ZjU2MC9kbWVzZy15b2N0by1rYnVpbGQtMjoyMDE0MDkyNDA0MzYxODp4ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1
NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3
MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xNjoyMDE0
MDkyNDA0MTY1NTp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MTozLjE3LjAtcmM2LXds
LTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYxNTQ4OTZmNTYwL2RtZXNnLXlv
Y3RvLWtidWlsZC0yMToyMDE0MDkyNDA0MTI0Njp4ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0
MDM1MTozLjE3LjAtcmM2LXdsLTA0NDc4LWdkZGM1MDU3Yjo1NzAKL2tlcm5lbC94ODZfNjQt
cmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9kZGM1MDU3YjA3ZWY3MTI2NDMxZDVkZjVmNWIxNzYx
NTQ4OTZmNTYwL2RtZXNnLXlvY3RvLWtidWlsZC0xOjIwMTQwOTI0MDQzNzIwOng4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3
MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcx
MjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTMwOjIwMTQw
OTI0MDQwODE1Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wt
MDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9j
dG8ta2J1aWxkLTEzOjIwMTQwOTI0MDQzMzA2Ong4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3MAova2VybmVsL3g4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcxMjY0MzFkNWRmNWY1YjE3NjE1
NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTI1OjIwMTQwOTI0MDQwMTE1Ong4Nl82NC1y
YW5kY29uZmlnLXMxLTA5MjQwMzUxOjMuMTcuMC1yYzYtd2wtMDQ0NzgtZ2RkYzUwNTdiOjU3
MAova2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxL2RkYzUwNTdiMDdlZjcx
MjY0MzFkNWRmNWY1YjE3NjE1NDg5NmY1NjAvZG1lc2cteW9jdG8ta2J1aWxkLTg6MjAxNDA5
MjQwNDI4NDY6eDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTE6My4xNy4wLXJjNi13bC0w
NDQ3OC1nZGRjNTA1N2I6NTcwCjQ3OjI2NDoyNjQgYWxsX2dvb2Q6YmFkOmFsbF9iYWQgYm9v
dHMKCkhFQUQgaXMgbm93IGF0IGRkYzUwNTdiIDBkYXkgaGVhZCBndWFyZCBmb3IgJ2RldmVs
LWhvdXJseS0yMDE0MDkyNDAyJwoKPT09PT09PT09IGxpbnVzL21hc3RlciA9PT09PT09PT0K
Tm90ZTogY2hlY2tpbmcgb3V0ICdsaW51cy9tYXN0ZXInLgoKWW91IGFyZSBpbiAnZGV0YWNo
ZWQgSEVBRCcgc3RhdGUuIFlvdSBjYW4gbG9vayBhcm91bmQsIG1ha2UgZXhwZXJpbWVudGFs
CmNoYW5nZXMgYW5kIGNvbW1pdCB0aGVtLCBhbmQgeW91IGNhbiBkaXNjYXJkIGFueSBjb21t
aXRzIHlvdSBtYWtlIGluIHRoaXMKc3RhdGUgd2l0aG91dCBpbXBhY3RpbmcgYW55IGJyYW5j
aGVzIGJ5IHBlcmZvcm1pbmcgYW5vdGhlciBjaGVja291dC4KCklmIHlvdSB3YW50IHRvIGNy
ZWF0ZSBhIG5ldyBicmFuY2ggdG8gcmV0YWluIGNvbW1pdHMgeW91IGNyZWF0ZSwgeW91IG1h
eQpkbyBzbyAobm93IG9yIGxhdGVyKSBieSB1c2luZyAtYiB3aXRoIHRoZSBjaGVja291dCBj
b21tYW5kIGFnYWluLiBFeGFtcGxlOgoKICBnaXQgY2hlY2tvdXQgLWIgbmV3X2JyYW5jaF9u
YW1lCgpIRUFEIGlzIG5vdyBhdCBmNGNiNzA3Li4uIE1lcmdlIHRhZyAncG0rYWNwaS0zLjE3
LXJjNycgb2YgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0
L3JhZmFlbC9saW51eC1wbQpscyAtYSAva2J1aWxkLXRlc3RzL3J1bi1xdWV1ZS9rdm0veDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvbGludXM6bWFzdGVyOmY0Y2I3MDdlN2FkOTcy
N2EwNDZiNDYzMjMyZjJkZTE2NmUzMjdkM2U6YmlzZWN0LWxpbnV4LTYKCjIwMTQtMDktMjYg
MjI6MjU6MDMgZjRjYjcwN2U3YWQ5NzI3YTA0NmI0NjMyMzJmMmRlMTY2ZTMyN2QzZSBjb21w
aWxpbmcKUXVldWVkIGJ1aWxkIHRhc2sgdG8gL2tidWlsZC10ZXN0cy9idWlsZC1xdWV1ZS9z
bmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtZjRjYjcwN2U3YWQ5NzI3YTA0NmI0
NjMyMzJmMmRlMTY2ZTMyN2QzZQpDaGVjayBmb3Iga2VybmVsIGluIC9rZXJuZWwveDg2XzY0
LXJhbmRjb25maWctczEtMDkyNDAzNTEvZjRjYjcwN2U3YWQ5NzI3YTA0NmI0NjMyMzJmMmRl
MTY2ZTMyN2QzZQp3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVp
bGQtcXVldWUvc25iL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLWY0Y2I3MDdlN2Fk
OTcyN2EwNDZiNDYzMjMyZjJkZTE2NmUzMjdkM2UKG1sxOzM1bTIwMTQtMDktMjYgMjI6Mjk6
MDMgTm8gYnVpbGQgc2VydmVkIGZpbGUgL2tidWlsZC10ZXN0cy9idWlsZC1zZXJ2ZWQveDg2
XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtZjRjYjcwN2U3YWQ5NzI3YTA0NmI0NjMyMzJm
MmRlMTY2ZTMyN2QzZRtbMG0KUmV0cnkgYnVpbGQgLi4Kd2FpdGluZyBmb3IgY29tcGxldGlv
biBvZiAva2J1aWxkLXRlc3RzL2J1aWxkLXF1ZXVlL3NuYi1zbW9rZS94ODZfNjQtcmFuZGNv
bmZpZy1zMS0wOTI0MDM1MS1mNGNiNzA3ZTdhZDk3MjdhMDQ2YjQ2MzIzMmYyZGUxNjZlMzI3
ZDNlCmtlcm5lbDogL2tlcm5lbC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS9mNGNi
NzA3ZTdhZDk3MjdhMDQ2YjQ2MzIzMmYyZGUxNjZlMzI3ZDNlL3ZtbGludXotMy4xNy4wLXJj
Ni0wMDI3OC1nZjRjYjcwNwoKMjAxNC0wOS0yNiAyMjozOTowMyBkZXRlY3RpbmcgYm9vdCBz
dGF0ZSAJMQkyCTE4CTI3CTI4CTMxCTM1CTQxLgk0Mi4JNDUuLgk0Ny4JNDguLgk1MS4JNTYu
Lgk2MAk2Mgk2NQk3NS4JODEJODMuCTg4Lgk5Mgk5My4JOTUuCTk2Li4JOTkuCTEwMC4JMTAx
CTEwNgkxMTEJMTE4CTEyMAkxMjYJMTQ0CTE1MgkxNTYgU1VDQ0VTUwoKCj09PT09PT09PSBu
ZXh0L21hc3RlciA9PT09PT09PT0KRnJvbSBnaXQ6Ly9naXRtaXJyb3IvbmV4dAogKyA0ODEw
MGNhLi4uNGYzN2FmMSBha3BtICAgICAgIC0+IG5leHQvYWtwbSAgKGZvcmNlZCB1cGRhdGUp
CiArIDJjZjUwNzYuLi5hMjVjMWQ4IGFrcG0tYmFzZSAgLT4gbmV4dC9ha3BtLWJhc2UgIChm
b3JjZWQgdXBkYXRlKQogKyA4ZGQyYzgxLi4uNGQ4NDI2ZiBtYXN0ZXIgICAgIC0+IG5leHQv
bWFzdGVyICAoZm9yY2VkIHVwZGF0ZSkKICAgMDA1ZjgwMC4uZjRjYjcwNyAgc3RhYmxlICAg
ICAtPiBuZXh0L3N0YWJsZQpGcm9tIGdpdDovL2dpdG1pcnJvci9uZXh0CiAqIFtuZXcgdGFn
XSAgICAgICAgIG5leHQtMjAxNDA5MjYgLT4gbmV4dC0yMDE0MDkyNgpQcmV2aW91cyBIRUFE
IHBvc2l0aW9uIHdhcyBmNGNiNzA3Li4uIE1lcmdlIHRhZyAncG0rYWNwaS0zLjE3LXJjNycg
b2YgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JhZmFl
bC9saW51eC1wbQpIRUFEIGlzIG5vdyBhdCA0ZDg0MjZmLi4uIEFkZCBsaW51eC1uZXh0IHNw
ZWNpZmljIGZpbGVzIGZvciAyMDE0MDkyNgpscyAtYSAva2J1aWxkLXRlc3RzL3J1bi1xdWV1
ZS9rdm0veDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEvbmV4dDptYXN0ZXI6NGQ4NDI2
ZjlhYzYwMWRiMmE2NGZhN2JlNjQwNTFkMDJiOWM5ZmUwMTpiaXNlY3QtbGludXgtNgoKMjAx
NC0wOS0yNiAyMzowNzo0NiA0ZDg0MjZmOWFjNjAxZGIyYTY0ZmE3YmU2NDA1MWQwMmI5Yzlm
ZTAxIGNvbXBpbGluZwpRdWV1ZWQgYnVpbGQgdGFzayB0byAva2J1aWxkLXRlc3RzL2J1aWxk
LXF1ZXVlL3NuYi94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS00ZDg0MjZmOWFjNjAx
ZGIyYTY0ZmE3YmU2NDA1MWQwMmI5YzlmZTAxCkNoZWNrIGZvciBrZXJuZWwgaW4gL2tlcm5l
bC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS80ZDg0MjZmOWFjNjAxZGIyYTY0ZmE3
YmU2NDA1MWQwMmI5YzlmZTAxCndhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgL2tidWlsZC10
ZXN0cy9idWlsZC1xdWV1ZS9zbmIveDg2XzY0LXJhbmRjb25maWctczEtMDkyNDAzNTEtNGQ4
NDI2ZjlhYzYwMWRiMmE2NGZhN2JlNjQwNTFkMDJiOWM5ZmUwMQobWzE7MzVtMjAxNC0wOS0y
NiAyMzoxNzo0NiBObyBidWlsZCBzZXJ2ZWQgZmlsZSAva2J1aWxkLXRlc3RzL2J1aWxkLXNl
cnZlZC94ODZfNjQtcmFuZGNvbmZpZy1zMS0wOTI0MDM1MS00ZDg0MjZmOWFjNjAxZGIyYTY0
ZmE3YmU2NDA1MWQwMmI5YzlmZTAxG1swbQpSZXRyeSBidWlsZCAuLgp3YWl0aW5nIGZvciBj
b21wbGV0aW9uIG9mIC9rYnVpbGQtdGVzdHMvYnVpbGQtcXVldWUvc25iLXNtb2tlL3g4Nl82
NC1yYW5kY29uZmlnLXMxLTA5MjQwMzUxLTRkODQyNmY5YWM2MDFkYjJhNjRmYTdiZTY0MDUx
ZDAyYjljOWZlMDEKa2VybmVsOiAva2VybmVsL3g4Nl82NC1yYW5kY29uZmlnLXMxLTA5MjQw
MzUxLzRkODQyNmY5YWM2MDFkYjJhNjRmYTdiZTY0MDUxZDAyYjljOWZlMDEvdm1saW51ei0z
LjE3LjAtcmM2LW5leHQtMjAxNDA5MjYKCjIwMTQtMDktMjYgMjM6MjA6NDYgZGV0ZWN0aW5n
IGJvb3Qgc3RhdGUgLi4JMTE2CTE1NiBTVUNDRVNTCgo=

--St7VIuEGZ6dlpu13
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="config-3.17.0-rc1-00169-gcaae204"

#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 3.17.0-rc1 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ZONE_DMA32=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y

#
# General setup
#
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
CONFIG_KERNEL_LZ4=y
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_CROSS_MEMORY_ATTACH is not set
# CONFIG_FHANDLE is not set
# CONFIG_USELIB is not set
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y

#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_DEBUG=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y

#
# CPU/Task time and stats accounting
#
CONFIG_VIRT_CPU_ACCOUNTING=y
# CONFIG_TICK_CPU_ACCOUNTING is not set
CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
# CONFIG_TASK_XACCT is not set

#
# RCU Subsystem
#
CONFIG_TINY_RCU=y
# CONFIG_PREEMPT_RCU is not set
CONFIG_RCU_STALL_COMMON=y
CONFIG_CONTEXT_TRACKING=y
# CONFIG_CONTEXT_TRACKING_FORCE is not set
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
# CONFIG_IKCONFIG_PROC is not set
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
# CONFIG_CGROUPS is not set
CONFIG_CHECKPOINT_RESTORE=y
# CONFIG_NAMESPACES is not set
# CONFIG_SCHED_AUTOGROUP is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
# CONFIG_RD_LZMA is not set
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_EXPERT=y
# CONFIG_UID16 is not set
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_PRINTK=y
CONFIG_BUG=y
# CONFIG_PCSPKR_PLATFORM is not set
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
# CONFIG_EPOLL is not set
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_PCI_QUIRKS=y
# CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
CONFIG_DEBUG_PERF_USE_VMALLOC=y
# CONFIG_VM_EVENT_COUNTERS is not set
CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
# CONFIG_SLUB is not set
CONFIG_SLOB=y
CONFIG_SYSTEM_TRUSTED_KEYRING=y
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
CONFIG_KPROBES=y
# CONFIG_JUMP_LABEL is not set
CONFIG_OPTPROBES=y
# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_KRETPROBES=y
CONFIG_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
CONFIG_HAVE_CMPXCHG_LOCAL=y
CONFIG_HAVE_CMPXCHG_DOUBLE=y
CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_COMPAT_OLD_SIGACTION=y

#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
# CONFIG_MODULE_UNLOAD is not set
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
CONFIG_MODULE_SIG_SHA256=y
# CONFIG_MODULE_SIG_SHA384 is not set
# CONFIG_MODULE_SIG_SHA512 is not set
CONFIG_MODULE_SIG_HASH="sha256"
# CONFIG_BLOCK is not set
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_ASN1=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_ARCH_USE_QUEUE_RWLOCK=y
# CONFIG_FREEZER is not set

#
# Processor type and features
#
CONFIG_ZONE_DMA=y
# CONFIG_SMP is not set
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
# CONFIG_X86_INTEL_LPSS is not set
# CONFIG_SCHED_OMIT_FRAME_POINTER is not set
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
# CONFIG_PARAVIRT_DEBUG is not set
# CONFIG_XEN is not set
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
CONFIG_PARAVIRT_CLOCK=y
CONFIG_NO_BOOTMEM=y
# CONFIG_MEMTEST is not set
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_PROCESSOR_SELECT=y
# CONFIG_CPU_SUP_INTEL is not set
# CONFIG_CPU_SUP_AMD is not set
# CONFIG_CPU_SUP_CENTAUR is not set
CONFIG_HPET_TIMER=y
CONFIG_DMI=y
# CONFIG_CALGARY_IOMMU is not set
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
CONFIG_NR_CPUS=1
# CONFIG_PREEMPT_NONE is not set
CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_COUNT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set
# CONFIG_X86_MCE is not set
# CONFIG_X86_16BIT is not set
# CONFIG_X86_VSYSCALL_EMULATION is not set
CONFIG_I8K=m
# CONFIG_MICROCODE_INTEL_EARLY is not set
# CONFIG_MICROCODE_AMD_EARLY is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_DIRECT_GBPAGES=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y
# CONFIG_SPARSEMEM_VMEMMAP is not set
CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_SPARSE=y
# CONFIG_MEMORY_HOTREMOVE is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
# CONFIG_BALLOON_COMPACTION is not set
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_NEED_PER_CPU_KM=y
# CONFIG_CLEANCACHE is not set
# CONFIG_CMA is not set
# CONFIG_MEM_SOFT_DIRTY is not set
CONFIG_ZPOOL=m
CONFIG_ZBUD=m
# CONFIG_ZSMALLOC is not set
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
CONFIG_X86_RESERVE_LOW=64
# CONFIG_MTRR is not set
# CONFIG_ARCH_RANDOM is not set
CONFIG_X86_SMAP=y
# CONFIG_EFI is not set
# CONFIG_SECCOMP is not set
CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
CONFIG_KEXEC_VERIFY_SIG=y
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_COMPAT_VDSO=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y

#
# Power management and ACPI options
#
# CONFIG_SUSPEND is not set
CONFIG_PM_RUNTIME=y
CONFIG_PM=y
CONFIG_PM_DEBUG=y
# CONFIG_PM_ADVANCED_DEBUG is not set
CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
CONFIG_ACPI=y
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
# CONFIG_ACPI_PROCFS_POWER is not set
# CONFIG_ACPI_EC_DEBUGFS is not set
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
# CONFIG_ACPI_IPMI is not set
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_CUSTOM_DSDT_FILE=""
# CONFIG_ACPI_CUSTOM_DSDT is not set
# CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not set
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_HOTPLUG_MEMORY is not set
# CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_HED is not set
# CONFIG_ACPI_CUSTOM_METHOD is not set
# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
CONFIG_HAVE_ACPI_APEI=y
CONFIG_HAVE_ACPI_APEI_NMI=y
# CONFIG_ACPI_APEI is not set
# CONFIG_SFI is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_COMMON=y
# CONFIG_CPU_FREQ_STAT is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# x86 CPU frequency scaling drivers
#
CONFIG_X86_INTEL_PSTATE=y
# CONFIG_X86_PCC_CPUFREQ is not set
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_P4_CLOCKMOD is not set

#
# shared options
#
# CONFIG_X86_SPEEDSTEP_LIB is not set

#
# CPU Idle
#
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set

#
# Memory power savings
#
# CONFIG_I7300_IDLE is not set

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
# CONFIG_PCI_MMCONFIG is not set
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_CNB20LE_QUIRK is not set
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
# CONFIG_PCI_STUB is not set
CONFIG_HT_IRQ=y
# CONFIG_PCI_IOV is not set
# CONFIG_PCI_PRI is not set
# CONFIG_PCI_PASID is not set
# CONFIG_PCI_IOAPIC is not set
CONFIG_PCI_LABEL=y

#
# PCI host controller drivers
#
# CONFIG_ISA_DMA_API is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
# CONFIG_RAPIDIO is not set
CONFIG_X86_SYSFB=y

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=m
# CONFIG_COREDUMP is not set
CONFIG_IA32_EMULATION=y
# CONFIG_IA32_AOUT is not set
CONFIG_X86_X32=y
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_KEYS_COMPAT=y
CONFIG_X86_DEV_DMA_OPS=y
CONFIG_IOSF_MBI=m
CONFIG_PMC_ATOM=y
CONFIG_NET=y
CONFIG_COMPAT_NETLINK_MESSAGES=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_DIAG=y
CONFIG_UNIX=y
CONFIG_UNIX_DIAG=m
CONFIG_XFRM=y
CONFIG_XFRM_ALGO=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
CONFIG_XFRM_STATISTICS=y
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_ROUTE_CLASSID=y
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=y
# CONFIG_NET_IPGRE_DEMUX is not set
CONFIG_NET_IP_TUNNEL=y
# CONFIG_SYN_COOKIES is not set
# CONFIG_NET_UDP_TUNNEL is not set
CONFIG_INET_AH=m
CONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
CONFIG_INET_TUNNEL=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not set
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NET_PTP_CLASSIFY=y
CONFIG_NETWORK_PHY_TIMESTAMPING=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_ACCT=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=m
# CONFIG_NF_CONNTRACK is not set
CONFIG_NF_LOG_COMMON=y
# CONFIG_NF_TABLES is not set
CONFIG_NETFILTER_XTABLES=y

#
# Xtables combined modules
#
CONFIG_NETFILTER_XT_MARK=y
CONFIG_NETFILTER_XT_SET=m

#
# Xtables targets
#
# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
CONFIG_NETFILTER_XT_TARGET_RATEEST=y
CONFIG_NETFILTER_XT_TARGET_TEE=m
# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y

#
# Xtables matches
#
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
CONFIG_NETFILTER_XT_MATCH_CPU=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=y
CONFIG_NETFILTER_XT_MATCH_DSCP=y
CONFIG_NETFILTER_XT_MATCH_ECN=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPCOMP=y
# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=m
# CONFIG_NETFILTER_XT_MATCH_MARK is not set
# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
CONFIG_NETFILTER_XT_MATCH_NFACCT=m
CONFIG_NETFILTER_XT_MATCH_OSF=m
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
# CONFIG_NETFILTER_XT_MATCH_REALM is not set
CONFIG_NETFILTER_XT_MATCH_RECENT=y
CONFIG_NETFILTER_XT_MATCH_SCTP=y
# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
CONFIG_NETFILTER_XT_MATCH_TIME=m
# CONFIG_NETFILTER_XT_MATCH_U32 is not set
CONFIG_IP_SET=m
CONFIG_IP_SET_MAX=256
CONFIG_IP_SET_BITMAP_IP=m
CONFIG_IP_SET_BITMAP_IPMAC=m
CONFIG_IP_SET_BITMAP_PORT=m
CONFIG_IP_SET_HASH_IP=m
CONFIG_IP_SET_HASH_IPMARK=m
# CONFIG_IP_SET_HASH_IPPORT is not set
CONFIG_IP_SET_HASH_IPPORTIP=m
# CONFIG_IP_SET_HASH_IPPORTNET is not set
CONFIG_IP_SET_HASH_NETPORTNET=m
# CONFIG_IP_SET_HASH_NET is not set
CONFIG_IP_SET_HASH_NETNET=m
CONFIG_IP_SET_HASH_NETPORT=m
CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_DEBUG=y
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
# CONFIG_IP_VS_PROTO_ESP is not set
CONFIG_IP_VS_PROTO_AH=y
# CONFIG_IP_VS_PROTO_SCTP is not set

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
# CONFIG_IP_VS_WRR is not set
CONFIG_IP_VS_LC=m
# CONFIG_IP_VS_WLC is not set
CONFIG_IP_VS_LBLC=m
# CONFIG_IP_VS_LBLCR is not set
CONFIG_IP_VS_DH=m
# CONFIG_IP_VS_SH is not set
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8

#
# IPVS application helper
#

#
# IP: Netfilter Configuration
#
# CONFIG_NF_DEFRAG_IPV4 is not set
CONFIG_NF_LOG_ARP=y
CONFIG_NF_LOG_IPV4=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=m
# CONFIG_IP_NF_MATCH_ECN is not set
# CONFIG_IP_NF_MATCH_RPFILTER is not set
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=m
# CONFIG_IP_NF_MANGLE is not set
CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_SECURITY is not set
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=y

#
# DECnet: Netfilter Configuration
#
CONFIG_DECNET_NF_GRABULATOR=m
CONFIG_BRIDGE_NF_EBTABLES=y
CONFIG_BRIDGE_EBT_BROUTE=m
# CONFIG_BRIDGE_EBT_T_FILTER is not set
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=y
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=y
# CONFIG_BRIDGE_EBT_LIMIT is not set
# CONFIG_BRIDGE_EBT_MARK is not set
# CONFIG_BRIDGE_EBT_PKTTYPE is not set
CONFIG_BRIDGE_EBT_STP=y
# CONFIG_BRIDGE_EBT_VLAN is not set
CONFIG_BRIDGE_EBT_ARPREPLY=y
# CONFIG_BRIDGE_EBT_DNAT is not set
CONFIG_BRIDGE_EBT_MARK_T=m
# CONFIG_BRIDGE_EBT_REDIRECT is not set
# CONFIG_BRIDGE_EBT_SNAT is not set
CONFIG_BRIDGE_EBT_LOG=m
# CONFIG_BRIDGE_EBT_NFLOG is not set
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m

#
# DCCP CCIDs Configuration
#
# CONFIG_IP_DCCP_CCID2_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
CONFIG_IP_DCCP_CCID3_DEBUG=y
CONFIG_IP_DCCP_TFRC_LIB=y
CONFIG_IP_DCCP_TFRC_DEBUG=y

#
# DCCP Kernel Hacking
#
CONFIG_IP_DCCP_DEBUG=y
CONFIG_NET_DCCPPROBE=m
CONFIG_IP_SCTP=y
CONFIG_NET_SCTPPROBE=y
CONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE=y
# CONFIG_SCTP_COOKIE_HMAC_MD5 is not set
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
# CONFIG_RDS is not set
CONFIG_TIPC=y
CONFIG_TIPC_PORTS=8191
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
# CONFIG_VLAN_8021Q_MVRP is not set
CONFIG_DECNET=m
CONFIG_DECNET_ROUTER=y
CONFIG_LLC=y
CONFIG_LLC2=m
CONFIG_IPX=m
CONFIG_IPX_INTERN=y
CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
# CONFIG_IPDDP_ENCAP is not set
CONFIG_X25=y
# CONFIG_LAPB is not set
CONFIG_PHONET=y
CONFIG_IEEE802154=y
CONFIG_MAC802154=y
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_CBQ is not set
# CONFIG_NET_SCH_HTB is not set
CONFIG_NET_SCH_HFSC=m
# CONFIG_NET_SCH_PRIO is not set
CONFIG_NET_SCH_MULTIQ=m
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFB=m
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not set
# CONFIG_NET_SCH_TBF is not set
# CONFIG_NET_SCH_GRED is not set
CONFIG_NET_SCH_DSMARK=y
# CONFIG_NET_SCH_NETEM is not set
# CONFIG_NET_SCH_DRR is not set
CONFIG_NET_SCH_MQPRIO=m
CONFIG_NET_SCH_CHOKE=m
CONFIG_NET_SCH_QFQ=y
# CONFIG_NET_SCH_CODEL is not set
CONFIG_NET_SCH_FQ_CODEL=y
CONFIG_NET_SCH_FQ=m
CONFIG_NET_SCH_HHF=y
# CONFIG_NET_SCH_PIE is not set
CONFIG_NET_SCH_PLUG=y

#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=y
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_FW=m
# CONFIG_NET_CLS_U32 is not set
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=y
CONFIG_NET_CLS_BPF=m
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=y
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
# CONFIG_BATMAN_ADV_NC is not set
# CONFIG_BATMAN_ADV_MCAST is not set
# CONFIG_BATMAN_ADV_DEBUG is not set
# CONFIG_OPENVSWITCH is not set
CONFIG_VSOCKETS=y
CONFIG_NETLINK_MMAP=y
CONFIG_NETLINK_DIAG=y
CONFIG_NET_MPLS_GSO=m
CONFIG_HSR=m
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_BPF_JIT is not set

#
# Network testing
#
CONFIG_NET_PKTGEN=y
# CONFIG_NET_TCPPROBE is not set
# CONFIG_HAMRADIO is not set
CONFIG_CAN=y
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
CONFIG_CAN_GW=y

#
# CAN Device Drivers
#
CONFIG_CAN_VCAN=y
# CONFIG_CAN_SLCAN is not set
CONFIG_CAN_DEV=y
CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_LEDS=y
CONFIG_CAN_SJA1000=y
CONFIG_CAN_SJA1000_ISA=m
# CONFIG_CAN_SJA1000_PLATFORM is not set
# CONFIG_CAN_EMS_PCI is not set
# CONFIG_CAN_PEAK_PCI is not set
# CONFIG_CAN_KVASER_PCI is not set
# CONFIG_CAN_PLX_PCI is not set
CONFIG_CAN_C_CAN=y
# CONFIG_CAN_C_CAN_PLATFORM is not set
# CONFIG_CAN_C_CAN_PCI is not set
# CONFIG_CAN_CC770 is not set

#
# CAN USB interfaces
#
CONFIG_CAN_EMS_USB=m
# CONFIG_CAN_ESD_USB2 is not set
CONFIG_CAN_GS_USB=m
CONFIG_CAN_KVASER_USB=m
CONFIG_CAN_PEAK_USB=m
CONFIG_CAN_8DEV_USB=m
CONFIG_CAN_SOFTING=m
# CONFIG_CAN_DEBUG_DEVICES is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
# CONFIG_RXKAD is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_CFG80211=y
CONFIG_NL80211_TESTMODE=y
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
CONFIG_CFG80211_REG_DEBUG=y
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
CONFIG_CFG80211_DEBUGFS=y
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_WEXT=y
# CONFIG_LIB80211 is not set
# CONFIG_MAC80211 is not set
CONFIG_WIMAX=y
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=y
CONFIG_RFKILL_LEDS=y
# CONFIG_RFKILL_INPUT is not set
CONFIG_RFKILL_REGULATOR=m
CONFIG_RFKILL_GPIO=y
CONFIG_NET_9P=y
# CONFIG_NET_9P_VIRTIO is not set
CONFIG_NET_9P_DEBUG=y
CONFIG_CAIF=m
CONFIG_CAIF_DEBUG=y
# CONFIG_CAIF_NETDEV is not set
# CONFIG_CAIF_USB is not set
CONFIG_CEPH_LIB=y
CONFIG_CEPH_LIB_PRETTYDEBUG=y
CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
CONFIG_NFC=y
CONFIG_NFC_DIGITAL=m
# CONFIG_NFC_NCI is not set
# CONFIG_NFC_HCI is not set

#
# Near Field Communication (NFC) devices
#
# CONFIG_NFC_PN533 is not set
CONFIG_NFC_SIM=y
CONFIG_NFC_PORT100=m
CONFIG_HAVE_BPF_JIT=y

#
# Device Drivers
#

#
# Generic Driver Options
#
# CONFIG_UEVENT_HELPER is not set
# CONFIG_DEVTMPFS is not set
# CONFIG_STANDALONE is not set
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_FENCE_TRACE is not set

#
# Bus devices
#
CONFIG_CONNECTOR=y
# CONFIG_PROC_EVENTS is not set
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
CONFIG_MTD_REDBOOT_PARTS_READONLY=y
CONFIG_MTD_CMDLINE_PARTS=m
# CONFIG_MTD_AR7_PARTS is not set

#
# User Modules And Translation Layers
#
CONFIG_MTD_OOPS=m

#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=m
CONFIG_MTD_JEDECPROBE=m
CONFIG_MTD_GEN_PROBE=m
CONFIG_MTD_CFI_ADV_OPTIONS=y
# CONFIG_MTD_CFI_NOSWAP is not set
CONFIG_MTD_CFI_BE_BYTE_SWAP=y
# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
# CONFIG_MTD_CFI_GEOMETRY is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=m
CONFIG_MTD_CFI_AMDSTD=m
CONFIG_MTD_CFI_STAA=m
CONFIG_MTD_CFI_UTIL=m
CONFIG_MTD_RAM=m
# CONFIG_MTD_ROM is not set
CONFIG_MTD_ABSENT=m

#
# Mapping drivers for chip access
#
CONFIG_MTD_COMPLEX_MAPPINGS=y
# CONFIG_MTD_PHYSMAP is not set
CONFIG_MTD_SBC_GXX=m
# CONFIG_MTD_AMD76XROM is not set
CONFIG_MTD_ICHXROM=m
# CONFIG_MTD_ESB2ROM is not set
# CONFIG_MTD_CK804XROM is not set
# CONFIG_MTD_SCB2_FLASH is not set
CONFIG_MTD_NETtel=m
CONFIG_MTD_L440GX=m
# CONFIG_MTD_PCI is not set
# CONFIG_MTD_GPIO_ADDR is not set
# CONFIG_MTD_INTEL_VR_NOR is not set
# CONFIG_MTD_PLATRAM is not set
CONFIG_MTD_LATCH_ADDR=m

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
CONFIG_MTD_PHRAM=m
# CONFIG_MTD_MTDRAM is not set

#
# Disk-On-Chip Device Drivers
#
CONFIG_MTD_DOCG3=m
CONFIG_BCH_CONST_M=14
CONFIG_BCH_CONST_T=4
# CONFIG_MTD_NAND is not set
CONFIG_MTD_ONENAND=m
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
CONFIG_MTD_ONENAND_GENERIC=m
# CONFIG_MTD_ONENAND_OTP is not set
CONFIG_MTD_ONENAND_2X_PROGRAM=y

#
# LPDDR & LPDDR2 PCM memory drivers
#
CONFIG_MTD_LPDDR=m
CONFIG_MTD_QINFO_PROBE=m
CONFIG_MTD_SPI_NOR=m
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set
CONFIG_MTD_UBI_GLUEBI=m
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not set
CONFIG_PNP=y
CONFIG_PNP_DEBUG_MESSAGES=y

#
# Protocols
#
CONFIG_PNPACPI=y

#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_AD525X_DPOT is not set
CONFIG_DUMMY_IRQ=m
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
CONFIG_ICS932S401=m
CONFIG_ENCLOSURE_SERVICES=m
# CONFIG_HP_ILO is not set
CONFIG_APDS9802ALS=m
CONFIG_ISL29003=m
# CONFIG_ISL29020 is not set
CONFIG_SENSORS_TSL2550=m
CONFIG_SENSORS_BH1780=m
CONFIG_SENSORS_BH1770=m
# CONFIG_SENSORS_APDS990X is not set
CONFIG_HMC6352=m
CONFIG_DS1682=m
# CONFIG_VMWARE_BALLOON is not set
# CONFIG_BMP085_I2C is not set
CONFIG_USB_SWITCH_FSA9480=m
CONFIG_SRAM=y
CONFIG_C2PORT=y
CONFIG_C2PORT_DURAMAR_2150=y

#
# EEPROM support
#
CONFIG_EEPROM_AT24=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_CB710_CORE is not set

#
# Texas Instruments shared transport line discipline
#
# CONFIG_TI_ST is not set
CONFIG_SENSORS_LIS3_I2C=m

#
# Altera FPGA firmware download module
#
CONFIG_ALTERA_STAPL=m
# CONFIG_INTEL_MEI is not set
# CONFIG_INTEL_MEI_ME is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_VMWARE_VMCI is not set

#
# Intel MIC Bus Driver
#
# CONFIG_INTEL_MIC_BUS is not set

#
# Intel MIC Host Driver
#

#
# Intel MIC Card Driver
#
# CONFIG_GENWQE is not set
# CONFIG_ECHO is not set
CONFIG_HAVE_IDE=y

#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_I2O is not set
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_NETDEVICES=y
CONFIG_MII=y
CONFIG_NET_CORE=y
CONFIG_BONDING=y
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
CONFIG_NET_TEAM=y
CONFIG_NET_TEAM_MODE_BROADCAST=y
CONFIG_NET_TEAM_MODE_ROUNDROBIN=y
# CONFIG_NET_TEAM_MODE_RANDOM is not set
CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
CONFIG_NET_TEAM_MODE_LOADBALANCE=y
# CONFIG_MACVLAN is not set
# CONFIG_VXLAN is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_VIRTIO_NET is not set
# CONFIG_NLMON is not set
# CONFIG_ARCNET is not set

#
# CAIF transport drivers
#
# CONFIG_CAIF_TTY is not set
CONFIG_CAIF_SPI_SLAVE=m
CONFIG_CAIF_SPI_SYNC=y
CONFIG_CAIF_HSI=m
CONFIG_CAIF_VIRTIO=m
# CONFIG_VHOST_NET is not set
CONFIG_VHOST_RING=m

#
# Distributed Switch Architecture drivers
#
CONFIG_NET_DSA_MV88E6XXX=m
CONFIG_NET_DSA_MV88E6060=y
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
# CONFIG_NET_DSA_MV88E6131 is not set
CONFIG_NET_DSA_MV88E6123_61_65=m
CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_3COM=y
# CONFIG_VORTEX is not set
# CONFIG_TYPHOON is not set
CONFIG_NET_VENDOR_ADAPTEC=y
# CONFIG_ADAPTEC_STARFIRE is not set
CONFIG_NET_VENDOR_ALTEON=y
# CONFIG_ACENIC is not set
CONFIG_ALTERA_TSE=y
CONFIG_NET_VENDOR_AMD=y
# CONFIG_AMD8111_ETH is not set
# CONFIG_PCNET32 is not set
CONFIG_NET_XGENE=y
CONFIG_NET_VENDOR_ARC=y
CONFIG_NET_VENDOR_ATHEROS=y
# CONFIG_ATL2 is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not set
# CONFIG_ATL1C is not set
# CONFIG_ALX is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
CONFIG_NET_VENDOR_BROCADE=y
# CONFIG_BNA is not set
# CONFIG_NET_CALXEDA_XGMAC is not set
CONFIG_NET_VENDOR_CHELSIO=y
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
# CONFIG_CHELSIO_T4 is not set
# CONFIG_CHELSIO_T4VF is not set
CONFIG_NET_VENDOR_CISCO=y
# CONFIG_ENIC is not set
# CONFIG_CX_ECAT is not set
CONFIG_DNET=y
CONFIG_NET_VENDOR_DEC=y
# CONFIG_NET_TULIP is not set
CONFIG_NET_VENDOR_DLINK=y
# CONFIG_DL2K is not set
# CONFIG_SUNDANCE is not set
CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_BE2NET is not set
CONFIG_NET_VENDOR_EXAR=y
# CONFIG_S2IO is not set
# CONFIG_VXGE is not set
CONFIG_NET_VENDOR_HP=y
# CONFIG_HP100 is not set
CONFIG_NET_VENDOR_INTEL=y
# CONFIG_E100 is not set
# CONFIG_E1000 is not set
# CONFIG_E1000E is not set
# CONFIG_IGB is not set
# CONFIG_IGBVF is not set
# CONFIG_IXGB is not set
# CONFIG_IXGBE is not set
# CONFIG_I40E is not set
CONFIG_NET_VENDOR_I825XX=y
# CONFIG_IP1000 is not set
# CONFIG_JME is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
CONFIG_NET_VENDOR_MELLANOX=y
# CONFIG_MLX4_EN is not set
# CONFIG_MLX4_CORE is not set
# CONFIG_MLX5_CORE is not set
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=y
CONFIG_KS8851_MLL=y
# CONFIG_KSZ884X_PCI is not set
CONFIG_NET_VENDOR_MYRI=y
# CONFIG_MYRI10GE is not set
# CONFIG_FEALNX is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
CONFIG_NET_VENDOR_NVIDIA=y
# CONFIG_FORCEDETH is not set
CONFIG_NET_VENDOR_OKI=y
# CONFIG_ETHOC is not set
CONFIG_NET_PACKET_ENGINE=y
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
CONFIG_NET_VENDOR_QLOGIC=y
# CONFIG_QLA3XXX is not set
# CONFIG_QLCNIC is not set
# CONFIG_QLGE is not set
# CONFIG_NETXEN_NIC is not set
CONFIG_NET_VENDOR_REALTEK=y
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_R8169 is not set
# CONFIG_SH_ETH is not set
CONFIG_NET_VENDOR_RDC=y
# CONFIG_R6040 is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
CONFIG_NET_VENDOR_SEEQ=y
CONFIG_NET_VENDOR_SILAN=y
# CONFIG_SC92031 is not set
CONFIG_NET_VENDOR_SIS=y
# CONFIG_SIS900 is not set
# CONFIG_SIS190 is not set
# CONFIG_SFC is not set
CONFIG_NET_VENDOR_SMSC=y
# CONFIG_EPIC100 is not set
# CONFIG_SMSC911X is not set
# CONFIG_SMSC9420 is not set
# CONFIG_NET_VENDOR_STMICRO is not set
CONFIG_NET_VENDOR_SUN=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NIU is not set
CONFIG_NET_VENDOR_TEHUTI=y
# CONFIG_TEHUTI is not set
CONFIG_NET_VENDOR_TI=y
# CONFIG_TLAN is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_NET_SB1000 is not set
CONFIG_PHYLIB=y

#
# MII PHY device drivers
#
# CONFIG_AT803X_PHY is not set
CONFIG_AMD_PHY=m
# CONFIG_MARVELL_PHY is not set
CONFIG_DAVICOM_PHY=m
CONFIG_QSEMI_PHY=m
CONFIG_LXT_PHY=m
# CONFIG_CICADA_PHY is not set
CONFIG_VITESSE_PHY=m
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
CONFIG_BCM7XXX_PHY=y
CONFIG_BCM87XX_PHY=m
CONFIG_ICPLUS_PHY=y
CONFIG_REALTEK_PHY=m
CONFIG_NATIONAL_PHY=y
CONFIG_STE10XP=m
CONFIG_LSI_ET1011C_PHY=y
CONFIG_MICREL_PHY=y
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_GPIO=m
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_MPPE is not set
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=m
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m

#
# Host-side USB support is needed for USB Network Adapter support
#
CONFIG_USB_NET_DRIVERS=m
CONFIG_USB_CATC=m
# CONFIG_USB_KAWETH is not set
CONFIG_USB_PEGASUS=m
# CONFIG_USB_RTL8150 is not set
CONFIG_USB_RTL8152=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
# CONFIG_USB_NET_AX88179_178A is not set
CONFIG_USB_NET_CDCETHER=m
# CONFIG_USB_NET_CDC_EEM is not set
CONFIG_USB_NET_CDC_NCM=m
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
CONFIG_USB_NET_CDC_MBIM=m
CONFIG_USB_NET_DM9601=m
CONFIG_USB_NET_SR9700=m
# CONFIG_USB_NET_SR9800 is not set
# CONFIG_USB_NET_SMSC75XX is not set
CONFIG_USB_NET_SMSC95XX=m
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
# CONFIG_USB_NET_PLUSB is not set
# CONFIG_USB_NET_MCS7830 is not set
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CDC_SUBSET=m
# CONFIG_USB_ALI_M5632 is not set
# CONFIG_USB_AN2720 is not set
# CONFIG_USB_BELKIN is not set
# CONFIG_USB_ARMLINUX is not set
CONFIG_USB_EPSON2888=y
# CONFIG_USB_KC2190 is not set
CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_NET_CX82310_ETH=m
CONFIG_USB_NET_KALMIA=m
# CONFIG_USB_NET_QMI_WWAN is not set
# CONFIG_USB_HSO is not set
CONFIG_USB_NET_INT51X1=m
CONFIG_USB_CDC_PHONET=m
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
# CONFIG_USB_VL600 is not set
# CONFIG_WLAN is not set

#
# WiMAX Wireless Broadband devices
#
CONFIG_WIMAX_I2400M=m
CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
# CONFIG_WAN is not set
CONFIG_IEEE802154_DRIVERS=y
# CONFIG_IEEE802154_FAKEHARD is not set
CONFIG_IEEE802154_FAKELB=y
# CONFIG_VMXNET3 is not set
# CONFIG_ISDN is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_MATRIXKMAP=m

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
CONFIG_INPUT_JOYDEV=m
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_LM8323 is not set
# CONFIG_KEYBOARD_LM8333 is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_MCS is not set
# CONFIG_KEYBOARD_MPR121 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_CYAPA is not set
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_MOUSE_GPIO=m
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
CONFIG_MOUSE_SYNAPTICS_USB=m
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
# CONFIG_JOYSTICK_GF2K is not set
CONFIG_JOYSTICK_GRIP=m
# CONFIG_JOYSTICK_GRIP_MP is not set
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
CONFIG_JOYSTICK_TMDC=m
# CONFIG_JOYSTICK_IFORCE is not set
CONFIG_JOYSTICK_WARRIOR=m
CONFIG_JOYSTICK_MAGELLAN=m
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
CONFIG_JOYSTICK_STINGER=m
CONFIG_JOYSTICK_TWIDJOY=m
CONFIG_JOYSTICK_ZHENHUA=m
# CONFIG_JOYSTICK_AS5011 is not set
CONFIG_JOYSTICK_JOYDUMP=m
CONFIG_JOYSTICK_XPAD=m
# CONFIG_JOYSTICK_XPAD_FF is not set
CONFIG_JOYSTICK_XPAD_LEDS=y
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_AD7879=m
CONFIG_TOUCHSCREEN_AD7879_I2C=m
CONFIG_TOUCHSCREEN_ATMEL_MXT=m
CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
# CONFIG_TOUCHSCREEN_BU21013 is not set
CONFIG_TOUCHSCREEN_CY8CTMG110=m
CONFIG_TOUCHSCREEN_CYTTSP_CORE=m
CONFIG_TOUCHSCREEN_CYTTSP_I2C=m
CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m
# CONFIG_TOUCHSCREEN_CYTTSP4_I2C is not set
CONFIG_TOUCHSCREEN_DYNAPRO=m
CONFIG_TOUCHSCREEN_HAMPSHIRE=m
CONFIG_TOUCHSCREEN_EETI=m
CONFIG_TOUCHSCREEN_FUJITSU=m
CONFIG_TOUCHSCREEN_ILI210X=m
CONFIG_TOUCHSCREEN_GUNZE=m
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
CONFIG_TOUCHSCREEN_WACOM_I2C=m
CONFIG_TOUCHSCREEN_MAX11801=m
CONFIG_TOUCHSCREEN_MCS5000=m
# CONFIG_TOUCHSCREEN_MMS114 is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
CONFIG_TOUCHSCREEN_MK712=m
CONFIG_TOUCHSCREEN_PENMOUNT=m
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
CONFIG_TOUCHSCREEN_PIXCIR=m
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
# CONFIG_TOUCHSCREEN_MC13783 is not set
# CONFIG_TOUCHSCREEN_USB_EGALAX is not set
CONFIG_TOUCHSCREEN_USB_PANJIT=y
# CONFIG_TOUCHSCREEN_USB_3M is not set
CONFIG_TOUCHSCREEN_USB_ITM=y
# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
CONFIG_TOUCHSCREEN_USB_ELO=y
CONFIG_TOUCHSCREEN_USB_E2I=y
CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
CONFIG_TOUCHSCREEN_TOUCHIT213=m
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
CONFIG_TOUCHSCREEN_TSC2007=m
CONFIG_TOUCHSCREEN_ST1232=m
CONFIG_TOUCHSCREEN_SUR40=m
CONFIG_TOUCHSCREEN_TPS6507X=m
CONFIG_TOUCHSCREEN_ZFORCE=m
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=m
# CONFIG_INPUT_AD714X_I2C is not set
# CONFIG_INPUT_BMA150 is not set
# CONFIG_INPUT_MC13783_PWRBUTTON is not set
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
CONFIG_INPUT_APANEL=m
# CONFIG_INPUT_GP2A is not set
CONFIG_INPUT_GPIO_BEEPER=m
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
CONFIG_INPUT_KXTJ9=m
# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
# CONFIG_INPUT_POWERMATE is not set
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
# CONFIG_INPUT_RETU_PWRBUTTON is not set
# CONFIG_INPUT_UINPUT is not set
# CONFIG_INPUT_PCF50633_PMU is not set
CONFIG_INPUT_PCF8574=m
# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_IMS_PCU=m
CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_CT82C710=m
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
CONFIG_SERIO_ALTERA_PS2=m
CONFIG_SERIO_PS2MULT=m
CONFIG_SERIO_ARC_PS2=m
CONFIG_GAMEPORT=m
# CONFIG_GAMEPORT_NS558 is not set
# CONFIG_GAMEPORT_L4 is not set
# CONFIG_GAMEPORT_EMU10K1 is not set
# CONFIG_GAMEPORT_FM801 is not set

#
# Character devices
#
CONFIG_TTY=y
# CONFIG_VT is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set
# CONFIG_N_GSM is not set
# CONFIG_TRACE_SINK is not set
CONFIG_DEVKMEM=y

#
# Serial drivers
#
CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_DW is not set

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_MFD_HSU is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_SCCNXP is not set
# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_SERIAL_ARC is not set
# CONFIG_SERIAL_RP2 is not set
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_MEN_Z135 is not set
# CONFIG_TTY_PRINTK is not set
# CONFIG_VIRTIO_CONSOLE is not set
CONFIG_IPMI_HANDLER=y
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=y
CONFIG_IPMI_SI=m
# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set
CONFIG_IPMI_WATCHDOG=y
CONFIG_IPMI_POWEROFF=m
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
# CONFIG_HPET is not set
CONFIG_HANGCHECK_TIMER=m
CONFIG_TCG_TPM=m
# CONFIG_TCG_TIS is not set
# CONFIG_TCG_TIS_I2C_ATMEL is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_ST33_I2C=m
CONFIG_TELCLOCK=m
CONFIG_DEVPORT=y

#
# I2C support
#
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_MUX=m

#
# Multiplexer I2C Chip support
#
# CONFIG_I2C_MUX_GPIO is not set
# CONFIG_I2C_MUX_PCA9541 is not set
CONFIG_I2C_MUX_PCA954x=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCA=m

#
# I2C Hardware Bus support
#

#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_ISCH is not set
# CONFIG_I2C_ISMT is not set
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set

#
# ACPI drivers
#
# CONFIG_I2C_SCMI is not set

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_GPIO is not set
CONFIG_I2C_KEMPLD=m
CONFIG_I2C_OCORES=m
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_PXA_PCI is not set
CONFIG_I2C_SIMTEC=m
# CONFIG_I2C_XILINX is not set

#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_DIOLAN_U2C is not set
CONFIG_I2C_PARPORT_LIGHT=m
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
# CONFIG_I2C_TAOS_EVM is not set
CONFIG_I2C_TINY_USB=m

#
# Other I2C/SMBus bus drivers
#
CONFIG_I2C_STUB=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
CONFIG_SPMI=m
CONFIG_HSI=m
CONFIG_HSI_BOARDINFO=y

#
# HSI controllers
#

#
# HSI clients
#
# CONFIG_HSI_CHAR is not set

#
# PPS support
#
CONFIG_PPS=y
# CONFIG_PPS_DEBUG is not set
# CONFIG_NTP_PPS is not set

#
# PPS clients support
#
CONFIG_PPS_CLIENT_KTIMER=m
# CONFIG_PPS_CLIENT_LDISC is not set
# CONFIG_PPS_CLIENT_GPIO is not set

#
# PPS generators support
#

#
# PTP clock support
#
CONFIG_PTP_1588_CLOCK=y
CONFIG_DP83640_PHY=m
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_ACPI=y
CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GENERIC=m

#
# Memory mapped GPIO drivers:
#
CONFIG_GPIO_GENERIC_PLATFORM=m
# CONFIG_GPIO_IT8761E is not set
CONFIG_GPIO_F7188X=m
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_ICH is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_LYNXPOINT is not set

#
# I2C GPIO expanders:
#
# CONFIG_GPIO_ARIZONA is not set
# CONFIG_GPIO_MAX7300 is not set
CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_ADP5588 is not set

#
# PCI GPIO expanders:
#
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_INTEL_MID is not set
# CONFIG_GPIO_ML_IOH is not set
# CONFIG_GPIO_RDC321X is not set

#
# SPI GPIO expanders:
#

#
# AC97 GPIO expanders:
#

#
# LPC GPIO expanders:
#
# CONFIG_GPIO_KEMPLD is not set

#
# MODULbus GPIO expanders:
#

#
# USB GPIO expanders:
#
CONFIG_W1=y
# CONFIG_W1_CON is not set

#
# 1-wire Bus Masters
#
# CONFIG_W1_MASTER_MATROX is not set
CONFIG_W1_MASTER_DS2490=m
CONFIG_W1_MASTER_DS2482=m
# CONFIG_W1_MASTER_DS1WM is not set
CONFIG_W1_MASTER_GPIO=y

#
# 1-wire Slaves
#
CONFIG_W1_SLAVE_THERM=y
# CONFIG_W1_SLAVE_SMEM is not set
CONFIG_W1_SLAVE_DS2408=m
CONFIG_W1_SLAVE_DS2408_READBACK=y
# CONFIG_W1_SLAVE_DS2413 is not set
# CONFIG_W1_SLAVE_DS2406 is not set
# CONFIG_W1_SLAVE_DS2423 is not set
# CONFIG_W1_SLAVE_DS2431 is not set
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2433_CRC=y
CONFIG_W1_SLAVE_DS2760=y
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=y
# CONFIG_W1_SLAVE_DS28E04 is not set
CONFIG_W1_SLAVE_BQ27000=y
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
CONFIG_GENERIC_ADC_BATTERY=y
# CONFIG_TEST_POWER is not set
CONFIG_BATTERY_DS2760=m
CONFIG_BATTERY_DS2780=m
CONFIG_BATTERY_DS2781=y
CONFIG_BATTERY_DS2782=m
CONFIG_BATTERY_SBS=m
CONFIG_BATTERY_BQ27x00=m
# CONFIG_BATTERY_BQ27X00_I2C is not set
CONFIG_BATTERY_BQ27X00_PLATFORM=y
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
CONFIG_CHARGER_PCF50633=m
CONFIG_CHARGER_ISP1704=y
CONFIG_CHARGER_MAX8903=y
CONFIG_CHARGER_LP8727=m
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_BQ2415X is not set
CONFIG_CHARGER_BQ24190=m
CONFIG_CHARGER_BQ24735=m
CONFIG_CHARGER_SMB347=m
# CONFIG_POWER_RESET is not set
CONFIG_POWER_AVS=y
CONFIG_HWMON=m
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set

#
# Native drivers
#
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ABITUGURU3=m
CONFIG_SENSORS_AD7414=m
# CONFIG_SENSORS_AD7418 is not set
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1029 is not set
CONFIG_SENSORS_ADM1031=m
# CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_ADT7410 is not set
# CONFIG_SENSORS_ADT7411 is not set
# CONFIG_SENSORS_ADT7462 is not set
# CONFIG_SENSORS_ADT7470 is not set
CONFIG_SENSORS_ADT7475=m
CONFIG_SENSORS_ASC7621=m
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_K10TEMP is not set
# CONFIG_SENSORS_FAM15H_POWER is not set
# CONFIG_SENSORS_APPLESMC is not set
CONFIG_SENSORS_ASB100=m
# CONFIG_SENSORS_ATXP1 is not set
CONFIG_SENSORS_DS620=m
CONFIG_SENSORS_DS1621=m
# CONFIG_SENSORS_I5K_AMB is not set
# CONFIG_SENSORS_F71805F is not set
CONFIG_SENSORS_F71882FG=m
# CONFIG_SENSORS_F75375S is not set
CONFIG_SENSORS_MC13783_ADC=m
CONFIG_SENSORS_FSCHMD=m
# CONFIG_SENSORS_GL518SM is not set
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_G760A=m
CONFIG_SENSORS_G762=m
CONFIG_SENSORS_GPIO_FAN=m
CONFIG_SENSORS_HIH6130=m
CONFIG_SENSORS_IBMAEM=m
# CONFIG_SENSORS_IBMPEX is not set
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_JC42=m
CONFIG_SENSORS_POWR1220=m
CONFIG_SENSORS_LINEAGE=m
# CONFIG_SENSORS_LTC2945 is not set
CONFIG_SENSORS_LTC4151=m
# CONFIG_SENSORS_LTC4215 is not set
CONFIG_SENSORS_LTC4222=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4260=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_MAX1668=m
# CONFIG_SENSORS_MAX197 is not set
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
# CONFIG_SENSORS_MAX6697 is not set
CONFIG_SENSORS_HTU21=m
# CONFIG_SENSORS_MCP3021 is not set
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM73=m
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
CONFIG_SENSORS_LM78=m
# CONFIG_SENSORS_LM80 is not set
CONFIG_SENSORS_LM83=m
CONFIG_SENSORS_LM85=m
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
CONFIG_SENSORS_LM92=m
# CONFIG_SENSORS_LM93 is not set
# CONFIG_SENSORS_LM95234 is not set
CONFIG_SENSORS_LM95241=m
CONFIG_SENSORS_LM95245=m
# CONFIG_SENSORS_PC87360 is not set
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_NTC_THERMISTOR=m
# CONFIG_SENSORS_NCT6683 is not set
CONFIG_SENSORS_NCT6775=m
CONFIG_SENSORS_PCF8591=m
# CONFIG_PMBUS is not set
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
# CONFIG_SENSORS_SHTC1 is not set
# CONFIG_SENSORS_SIS5595 is not set
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_EMC1403=m
CONFIG_SENSORS_EMC2103=m
# CONFIG_SENSORS_EMC6W201 is not set
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
CONFIG_SENSORS_SCH5636=m
# CONFIG_SENSORS_SMM665 is not set
CONFIG_SENSORS_ADC128D818=m
CONFIG_SENSORS_ADS1015=m
# CONFIG_SENSORS_ADS7828 is not set
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
CONFIG_SENSORS_THMC50=m
# CONFIG_SENSORS_TMP102 is not set
CONFIG_SENSORS_TMP103=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
# CONFIG_SENSORS_VIA_CPUTEMP is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
CONFIG_SENSORS_W83781D=m
CONFIG_SENSORS_W83791D=m
CONFIG_SENSORS_W83792D=m
# CONFIG_SENSORS_W83793 is not set
# CONFIG_SENSORS_W83795 is not set
CONFIG_SENSORS_W83L785TS=m
# CONFIG_SENSORS_W83L786NG is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set

#
# ACPI drivers
#
# CONFIG_SENSORS_ACPI_POWER is not set
# CONFIG_SENSORS_ATK0110 is not set
CONFIG_THERMAL=y
# CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE is not set
CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE=y
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_THERMAL_EMULATION is not set
# CONFIG_ACPI_INT3403_THERMAL is not set
# CONFIG_INTEL_SOC_DTS_THERMAL is not set

#
# Texas Instruments thermal drivers
#
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
CONFIG_XILINX_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=y
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_F71808E_WDT is not set
# CONFIG_SP5100_TCO is not set
CONFIG_SBC_FITPC2_WATCHDOG=y
# CONFIG_EUROTECH_WDT is not set
CONFIG_IB700_WDT=m
CONFIG_IBMASR=y
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_ITCO_WDT is not set
CONFIG_IT8712F_WDT=y
CONFIG_IT87_WDT=y
# CONFIG_HP_WATCHDOG is not set
# CONFIG_KEMPLD_WDT is not set
# CONFIG_SC1200_WDT is not set
CONFIG_PC87413_WDT=m
# CONFIG_NV_TCO is not set
CONFIG_60XX_WDT=m
CONFIG_CPU5_WDT=y
CONFIG_SMSC_SCH311X_WDT=y
CONFIG_SMSC37B787_WDT=m
# CONFIG_VIA_WDT is not set
CONFIG_W83627HF_WDT=m
CONFIG_W83877F_WDT=y
CONFIG_W83977F_WDT=y
# CONFIG_MACHZ_WDT is not set
CONFIG_SBC_EPX_C3_WATCHDOG=y
CONFIG_MEN_A21_WDT=y

#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set

#
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
CONFIG_SSB=m
CONFIG_SSB_SPROM=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
# CONFIG_SSB_B43_PCI_BRIDGE is not set
CONFIG_SSB_SILENT=y
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
# CONFIG_SSB_DRIVER_PCICORE is not set
# CONFIG_SSB_DRIVER_GPIO is not set
CONFIG_BCMA_POSSIBLE=y

#
# Broadcom specific AMBA
#
CONFIG_BCMA=m
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_HOST_SOC is not set
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
CONFIG_BCMA_DRIVER_GPIO=y
# CONFIG_BCMA_DEBUG is not set

#
# Multifunction device drivers
#
CONFIG_MFD_CORE=y
CONFIG_MFD_BCM590XX=m
# CONFIG_MFD_CROS_EC is not set
CONFIG_MFD_MC13XXX=m
CONFIG_MFD_MC13XXX_I2C=m
CONFIG_HTC_PASIC3=m
# CONFIG_LPC_ICH is not set
# CONFIG_LPC_SCH is not set
# CONFIG_MFD_JANZ_CMODIO is not set
CONFIG_MFD_KEMPLD=m
# CONFIG_MFD_VIPERBOARD is not set
CONFIG_MFD_RETU=m
CONFIG_MFD_PCF50633=m
CONFIG_PCF50633_ADC=m
CONFIG_PCF50633_GPIO=m
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_RTSX_PCI is not set
# CONFIG_MFD_RTSX_USB is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_MFD_SM501=m
# CONFIG_MFD_SM501_GPIO is not set
CONFIG_ABX500_CORE=y
CONFIG_MFD_SYSCON=y
CONFIG_MFD_TI_AM335X_TSCADC=y
# CONFIG_MFD_LP3943 is not set
CONFIG_TPS6105X=m
# CONFIG_TPS65010 is not set
CONFIG_TPS6507X=m
CONFIG_MFD_TPS65217=m
CONFIG_MFD_TPS65218=m
CONFIG_MFD_TPS65912=y
CONFIG_MFD_WL1273_CORE=m
CONFIG_MFD_LM3533=m
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_VX855 is not set
CONFIG_MFD_ARIZONA=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_WM5102=y
# CONFIG_MFD_WM5110 is not set
# CONFIG_MFD_WM8997 is not set
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
CONFIG_REGULATOR_ACT8865=m
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_ANATOP=m
CONFIG_REGULATOR_BCM590XX=m
CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_DA9211=m
CONFIG_REGULATOR_FAN53555=m
CONFIG_REGULATOR_GPIO=y
# CONFIG_REGULATOR_ISL6271A is not set
CONFIG_REGULATOR_LP3971=m
# CONFIG_REGULATOR_LP3972 is not set
CONFIG_REGULATOR_LP872X=m
CONFIG_REGULATOR_LP8755=m
CONFIG_REGULATOR_LTC3589=m
# CONFIG_REGULATOR_MAX1586 is not set
# CONFIG_REGULATOR_MAX8649 is not set
CONFIG_REGULATOR_MAX8660=m
CONFIG_REGULATOR_MAX8952=m
CONFIG_REGULATOR_MAX8973=m
CONFIG_REGULATOR_MC13XXX_CORE=m
# CONFIG_REGULATOR_MC13783 is not set
CONFIG_REGULATOR_MC13892=m
CONFIG_REGULATOR_PCF50633=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_TPS51632 is not set
CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS62360=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
# CONFIG_REGULATOR_TPS65217 is not set
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
# CONFIG_AGP is not set
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
# CONFIG_VGA_SWITCHEROO is not set

#
# Direct Rendering Manager
#
CONFIG_DRM=m
CONFIG_DRM_USB=m
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set

#
# I2C encoder or helper chips
#
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
CONFIG_DRM_PTN3460=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
# CONFIG_DRM_NOUVEAU is not set
# CONFIG_DRM_I915 is not set
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
# CONFIG_DRM_VMWGFX is not set
# CONFIG_DRM_GMA500 is not set
CONFIG_DRM_UDL=m
# CONFIG_DRM_AST is not set
# CONFIG_DRM_MGAG200 is not set
# CONFIG_DRM_CIRRUS_QEMU is not set
# CONFIG_DRM_QXL is not set
# CONFIG_DRM_BOCHS is not set

#
# Frame buffer Devices
#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DDC is not set
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
CONFIG_FB_FOREIGN_ENDIAN=y
CONFIG_FB_BOTH_ENDIAN=y
# CONFIG_FB_BIG_ENDIAN is not set
# CONFIG_FB_LITTLE_ENDIAN is not set
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_HECUBA=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_ARC=y
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
CONFIG_FB_UVESA=m
CONFIG_FB_VESA=y
CONFIG_FB_N411=y
CONFIG_FB_HGA=m
CONFIG_FB_OPENCORES=m
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I740 is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
CONFIG_FB_SM501=m
# CONFIG_FB_SMSCUFX is not set
CONFIG_FB_UDL=m
CONFIG_FB_VIRTUAL=m
CONFIG_FB_METRONOME=y
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_AUO_K190X is not set
CONFIG_FB_SIMPLE=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_PLATFORM is not set
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
# CONFIG_VGASTATE is not set
CONFIG_HDMI=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set
# CONFIG_SOUND is not set

#
# HID support
#
CONFIG_HID=m
# CONFIG_HIDRAW is not set
# CONFIG_UHID is not set
CONFIG_HID_GENERIC=m

#
# Special HID drivers
#
CONFIG_HID_A4TECH=m
# CONFIG_HID_ACRUX is not set
# CONFIG_HID_APPLE is not set
CONFIG_HID_APPLEIR=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=m
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_CHICONY is not set
CONFIG_HID_CP2112=m
# CONFIG_HID_CYPRESS is not set
CONFIG_HID_DRAGONRISE=m
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
# CONFIG_HID_ELO is not set
CONFIG_HID_EZKEY=m
CONFIG_HID_HOLTEK=m
CONFIG_HOLTEK_FF=y
CONFIG_HID_GT683R=m
CONFIG_HID_HUION=m
# CONFIG_HID_KEYTOUCH is not set
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
CONFIG_HID_WALTOP=m
CONFIG_HID_GYRATION=m
# CONFIG_HID_ICADE is not set
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LCPOWER=m
# CONFIG_HID_LENOVO is not set
CONFIG_HID_LOGITECH=m
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
CONFIG_LOGIG940_FF=y
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=m
# CONFIG_HID_MICROSOFT is not set
CONFIG_HID_MONTEREY=m
CONFIG_HID_MULTITOUCH=m
# CONFIG_HID_NTRIG is not set
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PETALYNX=m
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=m
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
# CONFIG_SONY_FF is not set
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_STEELSERIES=m
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_RMI is not set
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
CONFIG_HID_SMARTJOYPLUS=m
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_TIVO is not set
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THINGM is not set
# CONFIG_HID_THRUSTMASTER is not set
CONFIG_HID_WACOM=m
CONFIG_HID_WIIMOTE=m
CONFIG_HID_XINMO=m
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
CONFIG_HID_SENSOR_HUB=m

#
# USB HID support
#
CONFIG_USB_HID=m
# CONFIG_HID_PID is not set
CONFIG_USB_HIDDEV=y

#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set

#
# I2C HID support
#
CONFIG_I2C_HID=m
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=m
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set

#
# Miscellaneous USB options
#
# CONFIG_USB_DEFAULT_PERSIST is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_OTG_FSM is not set
CONFIG_USB_MON=m
# CONFIG_USB_WUSB_CBAF is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_C67X00_HCD=m
CONFIG_USB_XHCI_HCD=m
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=m
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_PCI=m
CONFIG_USB_EHCI_HCD_PLATFORM=m
# CONFIG_USB_OXU210HP_HCD is not set
CONFIG_USB_ISP116X_HCD=m
CONFIG_USB_ISP1760_HCD=m
# CONFIG_USB_ISP1362_HCD is not set
# CONFIG_USB_FUSBH200_HCD is not set
CONFIG_USB_FOTG210_HCD=m
# CONFIG_USB_OHCI_HCD is not set
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HCD_BCMA is not set
CONFIG_USB_HCD_SSB=m
CONFIG_USB_HCD_TEST_MODE=y

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m
CONFIG_USB_TMC=m

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#

#
# also be needed; see USB_STORAGE Help for more info
#

#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
# CONFIG_USB_MUSB_HDRC is not set
CONFIG_USB_DWC3=m
CONFIG_USB_DWC3_HOST=y

#
# Platform Glue Driver Support
#
CONFIG_USB_DWC3_PCI=m

#
# Debugging features
#
# CONFIG_USB_DWC3_DEBUG is not set
CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
CONFIG_USB_DWC2=y
CONFIG_USB_DWC2_HOST=m
# CONFIG_USB_DWC2_PLATFORM is not set
CONFIG_USB_DWC2_PCI=y

#
# Gadget mode requires USB Gadget support to be enabled
#
CONFIG_USB_DWC2_DEBUG=y
# CONFIG_USB_DWC2_VERBOSE is not set
CONFIG_USB_DWC2_TRACK_MISSED_SOFS=y
CONFIG_USB_DWC2_DEBUG_PERIODIC=y
# CONFIG_USB_CHIPIDEA is not set

#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
# CONFIG_USB_SEVSEG is not set
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=m
CONFIG_USB_CYTHERM=m
CONFIG_USB_IDMOUSE=m
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
CONFIG_USB_SISUSBVGA=m
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
CONFIG_USB_EHSET_TEST_FIXTURE=m
CONFIG_USB_ISIGHTFW=m
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
CONFIG_USB_LINK_LAYER_TEST=m

#
# USB Physical Layer drivers
#
CONFIG_USB_PHY=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_SAMSUNG_USBPHY=m
# CONFIG_SAMSUNG_USB2PHY is not set
CONFIG_SAMSUNG_USB3PHY=m
CONFIG_USB_GPIO_VBUS=m
CONFIG_TAHVO_USB=m
# CONFIG_TAHVO_USB_HOST_BY_DEFAULT is not set
CONFIG_USB_ISP1301=m
# CONFIG_USB_GADGET is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set

#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set

#
# MemoryStick Host Controller Drivers
#
# CONFIG_MEMSTICK_TIFM_MS is not set
# CONFIG_MEMSTICK_JMICRON_38X is not set
# CONFIG_MEMSTICK_R592 is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y

#
# LED drivers
#
CONFIG_LEDS_LM3530=m
# CONFIG_LEDS_LM3533 is not set
CONFIG_LEDS_LM3642=m
CONFIG_LEDS_PCA9532=m
# CONFIG_LEDS_PCA9532_GPIO is not set
# CONFIG_LEDS_GPIO is not set
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP55XX_COMMON=m
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not set
CONFIG_LEDS_LP5562=m
# CONFIG_LEDS_LP8501 is not set
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_PCA955X=m
CONFIG_LEDS_PCA963X=m
CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_BD2802=m
# CONFIG_LEDS_INTEL_SS4200 is not set
CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MC13783=m
# CONFIG_LEDS_TCA6507 is not set
CONFIG_LEDS_LM355x=m

#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
CONFIG_LEDS_BLINKM=m

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
# CONFIG_LEDS_TRIGGER_ONESHOT is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
# CONFIG_LEDS_TRIGGER_CPU is not set
CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y

#
# iptables trigger is under Netfilter config (LED target)
#
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=y
CONFIG_ACCESSIBILITY=y
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set

#
# DMA Devices
#
# CONFIG_INTEL_MID_DMAC is not set
# CONFIG_INTEL_IOATDMA is not set
CONFIG_DW_DMAC_CORE=m
CONFIG_DW_DMAC=m
# CONFIG_DW_DMAC_PCI is not set
CONFIG_DMA_ENGINE=y
CONFIG_DMA_ACPI=y

#
# DMA Clients
#
# CONFIG_ASYNC_TX_DMA is not set
# CONFIG_DMATEST is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=y
# CONFIG_UIO_CIF is not set
CONFIG_UIO_PDRV_GENIRQ=m
# CONFIG_UIO_DMEM_GENIRQ is not set
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set
# CONFIG_UIO_PCI_GENERIC is not set
# CONFIG_UIO_NETX is not set
# CONFIG_UIO_MF624 is not set
# CONFIG_VIRT_DRIVERS is not set
CONFIG_VIRTIO=m

#
# Virtio drivers
#
# CONFIG_VIRTIO_PCI is not set
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_MMIO=m
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set

#
# Microsoft Hyper-V guest support
#
# CONFIG_HYPERV is not set
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
# CONFIG_CHROME_PLATFORMS is not set

#
# SOC (System On Chip) specific Drivers
#

#
# Hardware Spinlock drivers
#

#
# Clock Source drivers
#
CONFIG_CLKEVT_I8253=y
CONFIG_CLKBLD_I8253=y
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set
# CONFIG_EM_TIMER_STI is not set
# CONFIG_MAILBOX is not set
# CONFIG_IOMMU_SUPPORT is not set

#
# Remoteproc drivers
#
CONFIG_REMOTEPROC=m
CONFIG_STE_MODEM_RPROC=m

#
# Rpmsg drivers
#
CONFIG_PM_DEVFREQ=y

#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set

#
# DEVFREQ Drivers
#
CONFIG_EXTCON=m

#
# Extcon Device Drivers
#
CONFIG_EXTCON_ADC_JACK=m
CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_SM5502=m
CONFIG_MEMORY=y
CONFIG_IIO=y
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=m
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2

#
# Accelerometers
#
CONFIG_BMA180=m
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
# CONFIG_MMA8452 is not set
CONFIG_KXCJK1013=m

#
# Analog to digital converters
#
CONFIG_AD7291=m
CONFIG_AD799X=m
CONFIG_MAX1363=m
CONFIG_MCP3422=m
CONFIG_MEN_Z188_ADC=m
CONFIG_NAU7802=m
CONFIG_TI_ADC081C=m
# CONFIG_TI_AM335X_ADC is not set

#
# Amplifiers
#

#
# Hid Sensor IIO Common
#
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
CONFIG_IIO_ST_SENSORS_I2C=m
CONFIG_IIO_ST_SENSORS_CORE=m

#
# Digital to analog converters
#
CONFIG_AD5064=m
CONFIG_AD5380=m
# CONFIG_AD5446 is not set
CONFIG_MAX517=m
# CONFIG_MCP4725 is not set

#
# Frequency Synthesizers DDS/PLL
#

#
# Clock Generator/Distribution
#

#
# Phase-Locked Loop (PLL) frequency synthesizers
#

#
# Digital gyroscope sensors
#
CONFIG_HID_SENSOR_GYRO_3D=m
CONFIG_IIO_ST_GYRO_3AXIS=m
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
CONFIG_ITG3200=m

#
# Humidity sensors
#
CONFIG_DHT11=m
# CONFIG_SI7005 is not set

#
# Inertial measurement units
#
# CONFIG_INV_MPU6050_IIO is not set

#
# Light sensors
#
# CONFIG_ADJD_S311 is not set
CONFIG_APDS9300=m
CONFIG_CM32181=m
CONFIG_CM36651=m
# CONFIG_GP2AP020A00F is not set
CONFIG_ISL29125=m
CONFIG_HID_SENSOR_ALS=m
CONFIG_HID_SENSOR_PROX=m
CONFIG_SENSORS_LM3533=m
CONFIG_LTR501=m
CONFIG_TCS3414=m
CONFIG_TCS3472=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_TSL4531=m
CONFIG_VCNL4000=m

#
# Magnetometer sensors
#
# CONFIG_AK8975 is not set
CONFIG_AK09911=m
# CONFIG_MAG3110 is not set
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m

#
# Inclinometer sensors
#
# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set

#
# Triggers - standalone
#
CONFIG_IIO_INTERRUPT_TRIGGER=m
# CONFIG_IIO_SYSFS_TRIGGER is not set

#
# Pressure sensors
#
CONFIG_HID_SENSOR_PRESS=m
CONFIG_MPL115=m
# CONFIG_MPL3115 is not set
CONFIG_IIO_ST_PRESS=m
CONFIG_IIO_ST_PRESS_I2C=m
CONFIG_T5403=m

#
# Lightning sensors
#

#
# Temperature sensors
#
CONFIG_MLX90614=m
# CONFIG_TMP006 is not set
# CONFIG_NTB is not set
# CONFIG_VME_BUS is not set
# CONFIG_PWM is not set
# CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
CONFIG_FMC=y
# CONFIG_FMC_FAKEDEV is not set
CONFIG_FMC_TRIVIAL=m
CONFIG_FMC_WRITE_EEPROM=m
# CONFIG_FMC_CHARDEV is not set

#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
# CONFIG_BCM_KONA_USB2_PHY is not set
CONFIG_PHY_SAMSUNG_USB2=m
# CONFIG_PHY_EXYNOS4210_USB2 is not set
# CONFIG_PHY_EXYNOS4X12_USB2 is not set
# CONFIG_PHY_EXYNOS5250_USB2 is not set
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
CONFIG_POWERCAP=y
# CONFIG_INTEL_RAPL is not set
CONFIG_MCB=m
# CONFIG_MCB_PCI is not set
# CONFIG_THUNDERBOLT is not set

#
# Firmware Drivers
#
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=y
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
# CONFIG_ISCSI_IBFT_FIND is not set
CONFIG_GOOGLE_FIRMWARE=y

#
# Google Firmware Drivers
#
CONFIG_GOOGLE_MEMCONSOLE=m

#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_FS_POSIX_ACL=y
# CONFIG_FILE_LOCKING is not set
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
# CONFIG_QUOTA is not set
# CONFIG_QUOTACTL is not set
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=y
CONFIG_CUSE=m

#
# Caches
#
CONFIG_FSCACHE=y
CONFIG_FSCACHE_STATS=y
# CONFIG_FSCACHE_HISTOGRAM is not set
CONFIG_FSCACHE_DEBUG=y
CONFIG_FSCACHE_OBJECT_LIST=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
# CONFIG_PROC_SYSCTL is not set
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_KERNFS=y
CONFIG_SYSFS=y
# CONFIG_TMPFS is not set
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=y
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ECRYPT_FS is not set
# CONFIG_JFFS2_FS is not set
CONFIG_UBIFS_FS=m
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
# CONFIG_LOGFS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_PSTORE is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_CEPH_FS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_CIFS=y
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_UPCALL=y
# CONFIG_CIFS_XATTR is not set
CONFIG_CIFS_DEBUG=y
CONFIG_CIFS_DEBUG2=y
# CONFIG_CIFS_DFS_UPCALL is not set
CONFIG_CIFS_SMB2=y
CONFIG_CIFS_FSCACHE=y
CONFIG_NCP_FS=y
CONFIG_NCPFS_PACKET_SIGNING=y
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
CONFIG_NCPFS_OS2_NS=y
CONFIG_NCPFS_SMALLDOS=y
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
CONFIG_CODA_FS=y
CONFIG_AFS_FS=m
CONFIG_AFS_DEBUG=y
CONFIG_AFS_FSCACHE=y
CONFIG_9P_FS=y
CONFIG_9P_FSCACHE=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_9P_FS_SECURITY=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
CONFIG_NLS_CODEPAGE_861=y
# CONFIG_NLS_CODEPAGE_862 is not set
CONFIG_NLS_CODEPAGE_863=y
CONFIG_NLS_CODEPAGE_864=y
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
CONFIG_NLS_CODEPAGE_869=y
CONFIG_NLS_CODEPAGE_936=m
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
CONFIG_NLS_ISO8859_9=y
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
CONFIG_NLS_KOI8_U=y
CONFIG_NLS_MAC_ROMAN=m
CONFIG_NLS_MAC_CELTIC=m
CONFIG_NLS_MAC_CENTEURO=y
CONFIG_NLS_MAC_CROATIAN=y
CONFIG_NLS_MAC_CYRILLIC=m
# CONFIG_NLS_MAC_GAELIC is not set
CONFIG_NLS_MAC_GREEK=m
CONFIG_NLS_MAC_ICELAND=m
CONFIG_NLS_MAC_INUIT=m
# CONFIG_NLS_MAC_ROMANIAN is not set
CONFIG_NLS_MAC_TURKISH=m
CONFIG_NLS_UTF8=y
CONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y

#
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_BOOT_PRINTK_DELAY=y
# CONFIG_DYNAMIC_DEBUG is not set

#
# Compile-time checks and compiler options
#
# CONFIG_DEBUG_INFO is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=2048
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_READABLE_ASM is not set
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_KERNEL=y

#
# Memory Debugging
#
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_DEBUG_OBJECTS=y
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
# CONFIG_DEBUG_OBJECTS_FREE is not set
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
# CONFIG_DEBUG_OBJECTS_WORK is not set
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
CONFIG_DEBUG_STACK_USAGE=y
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_VIRTUAL=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_DEBUG_SHIRQ is not set

#
# Debug Lockups and Hangs
#
CONFIG_LOCKUP_DETECTOR=y
CONFIG_HARDLOCKUP_DETECTOR=y
# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_PANIC_ON_OOPS=y
CONFIG_PANIC_ON_OOPS_VALUE=1
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y

#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
CONFIG_DEBUG_LOCK_ALLOC=y
# CONFIG_PROVE_LOCKING is not set
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_DEBUG_ATOMIC_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_LOCK_TORTURE_TEST=m
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_LIST=y
# CONFIG_DEBUG_PI_LIST is not set
CONFIG_DEBUG_SG=y
CONFIG_DEBUG_NOTIFIERS=y
CONFIG_DEBUG_CREDENTIALS=y

#
# RCU Debugging
#
# CONFIG_SPARSE_RCU_POINTER is not set
CONFIG_TORTURE_TEST=m
CONFIG_RCU_TORTURE_TEST=m
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_TRACE=y
CONFIG_NOTIFIER_ERROR_INJECTION=m
CONFIG_PM_NOTIFIER_ERROR_INJECT=m
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_FENTRY=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACE_CLOCK=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set

#
# Runtime Testing
#
# CONFIG_TEST_LIST_SORT is not set
CONFIG_KPROBES_SANITY_TEST=y
# CONFIG_BACKTRACE_SELF_TEST is not set
CONFIG_RBTREE_TEST=y
# CONFIG_INTERVAL_TREE_TEST is not set
CONFIG_PERCPU_TEST=m
# CONFIG_ATOMIC64_SELFTEST is not set
CONFIG_TEST_STRING_HELPERS=y
CONFIG_TEST_KSTRTOX=y
CONFIG_TEST_RHASHTABLE=y
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
CONFIG_BUILD_DOCSRC=y
# CONFIG_DMA_API_DEBUG is not set
CONFIG_TEST_MODULE=m
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
CONFIG_TEST_FIRMWARE=m
CONFIG_TEST_UDELAY=m
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_X86_VERBOSE_BOOTUP=y
# CONFIG_EARLY_PRINTK is not set
# CONFIG_X86_PTDUMP is not set
CONFIG_DEBUG_RODATA=y
CONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_SET_MODULE_RONX is not set
CONFIG_DEBUG_NX_TEST=m
# CONFIG_DOUBLEFAULT is not set
CONFIG_DEBUG_TLBFLUSH=y
# CONFIG_IOMMU_STRESS is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
# CONFIG_X86_DECODER_SELFTEST is not set
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set
CONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=1
CONFIG_DEBUG_BOOT_PARAMS=y
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
CONFIG_X86_DEBUG_STATIC_CPU_HAS=y

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_PERSISTENT_KEYRINGS is not set
CONFIG_TRUSTED_KEYS=m
CONFIG_ENCRYPTED_KEYS=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
CONFIG_SECURITY_PATH=y
CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
# CONFIG_SECURITY_SELINUX_DISABLE is not set
# CONFIG_SECURITY_SELINUX_DEVELOP is not set
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y
CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX_VALUE=19
CONFIG_SECURITY_SMACK=y
# CONFIG_SECURITY_TOMOYO is not set
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
# CONFIG_SECURITY_APPARMOR_HASH is not set
# CONFIG_SECURITY_YAMA is not set
CONFIG_INTEGRITY=y
# CONFIG_INTEGRITY_SIGNATURE is not set
# CONFIG_INTEGRITY_AUDIT is not set
# CONFIG_IMA is not set
CONFIG_EVM=y

#
# EVM options
#
CONFIG_EVM_ATTR_FSUUID=y
# CONFIG_EVM_EXTRA_SMACK_XATTRS is not set
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
CONFIG_DEFAULT_SECURITY_SMACK=y
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="smack"
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=y
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_ABLK_HELPER=y
CONFIG_CRYPTO_GLUE_HELPER_X86=y

#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=y

#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=y

#
# Hash modes
#
CONFIG_CRYPTO_CMAC=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_VMAC=m

#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32C_INTEL=y
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRC32_PCLMUL is not set
CONFIG_CRYPTO_CRCT10DIF=m
CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
CONFIG_CRYPTO_GHASH=m
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_RMD128 is not set
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=y

#
# Ciphers
#
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=y
CONFIG_CRYPTO_AES_NI_INTEL=y
CONFIG_CRYPTO_ANUBIS=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_BLOWFISH_COMMON=m
CONFIG_CRYPTO_BLOWFISH_X86_64=m
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_CAMELLIA_X86_64=y
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m
CONFIG_CRYPTO_CAST_COMMON=y
CONFIG_CRYPTO_CAST5=y
CONFIG_CRYPTO_CAST5_AVX_X86_64=y
CONFIG_CRYPTO_CAST6=y
CONFIG_CRYPTO_CAST6_AVX_X86_64=m
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
CONFIG_CRYPTO_FCRYPT=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
CONFIG_CRYPTO_SALSA20_X86_64=m
# CONFIG_CRYPTO_SEED is not set
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_SERPENT_SSE2_X86_64=y
CONFIG_CRYPTO_SERPENT_AVX_X86_64=y
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_TEA=y
# CONFIG_CRYPTO_TWOFISH is not set
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_X86_64=m
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_ZLIB is not set
CONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_LZ4 is not set
CONFIG_CRYPTO_LZ4HC=y

#
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
# CONFIG_CRYPTO_DRBG_MENU is not set
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=y
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=y
# CONFIG_CRYPTO_DEV_CCP is not set
# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_PUBLIC_KEY_ALGO_RSA=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=m
CONFIG_PKCS7_TEST_KEY=m
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQFD=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_EVENTFD=y
CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_AMD=m
# CONFIG_BINARY_PRINTF is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_IO=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=m
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
# CONFIG_CRC32_SLICEBY8 is not set
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
CONFIG_CRC32_BIT=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
# CONFIG_CRC8 is not set
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4HC_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
CONFIG_XZ_DEC=y
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
CONFIG_XZ_DEC_IA64=y
# CONFIG_XZ_DEC_ARM is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_BCJ=y
CONFIG_XZ_DEC_TEST=m
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_BCH=m
CONFIG_BCH_CONST_PARAMS=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_DQL=y
CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
CONFIG_AVERAGE=y
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=y
# CONFIG_DDR is not set
CONFIG_MPILIB=y
CONFIG_OID_REGISTRY=y
CONFIG_ARCH_HAS_SG_CHAIN=y

--St7VIuEGZ6dlpu13
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

_______________________________________________
LKP mailing list
LKP@linux.intel.com

--St7VIuEGZ6dlpu13
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--St7VIuEGZ6dlpu13--


From advisory-board-bounces@lists.xenproject.org Tue Sep 30 22:26:31 2014
Return-path: <advisory-board-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Sep 2014 22:26:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <advisory-board-bounces@lists.xenproject.org>)
	id 1XZ5sM-0006pA-UA; Tue, 30 Sep 2014 22:26:31 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth@citrix.com>) id 1XZ5sI-0006ov-SE
	for advisory-board@lists.xenproject.org; Tue, 30 Sep 2014 22:26:28 +0000
Received: from [85.158.143.35:8103] by server-1.bemta-4.messagelabs.com id
	D7/4D-05872-11E2B245; Tue, 30 Sep 2014 22:26:25 +0000
X-Env-Sender: lars.kurth@citrix.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1412115983!12932653!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16886 invoked from network); 30 Sep 2014 22:26:23 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Sep 2014 22:26:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,629,1406592000"; 
	d="xml'?rels'?docx'72,48,150?png'72,48,150,150?scan'72,48,150,150,208,217,72,150,48";
	a="25455273"
From: Lars Kurth <lars.kurth@citrix.com>
To: Advisory-board discussions <advisory-board@lists.xenproject.org>
Thread-Topic: [Advisory-board] Process for the statement re XSA 108
Thread-Index: AQHP3P2QOyxC2hbIyUWJmAVkA6uN4w==
Date: Tue, 30 Sep 2014 22:26:22 +0000
Message-ID: <D050EC1F.12123%lars.kurth@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
Content-Type: multipart/mixed; boundary="_004_D050EC1F12123larskurthcitrixcom_"
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [Advisory-board] Process for the statement re XSA 108
X-BeenThere: advisory-board@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: Advisory-board discussions <advisory-board@lists.xenproject.org>
List-Id: Advisory-board discussions <advisory-board.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:advisory-board@lists.xenproject.org>
List-Help: <mailto:advisory-board-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board>,
	<mailto:advisory-board-request@lists.xenproject.org?subject=subscribe>
Sender: advisory-board-bounces@lists.xenproject.org
Errors-To: advisory-board-bounces@lists.xenproject.org

--_004_D050EC1F12123larskurthcitrixcom_
Content-Type: multipart/alternative;
	boundary="_000_D050EC1F12123larskurthcitrixcom_"

--_000_D050EC1F12123larskurthcitrixcom_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Matt,
please find attached the un-redacted version including technical details. I=
 don=92t have time to share with the others on the pre disclosure list (it=
=92s near midnight). But if the technical side is OK with, I will share tom=
orrow AM. That way we cover different timezones.
Lars

From: <Wilson>, Matt Wilson <msw@amazon.com<mailto:msw@amazon.com>>
Reply-To: "advisory-board@lists.xenproject.org<mailto:advisory-board@lists.=
xenproject.org>" <advisory-board@lists.xenproject.org<mailto:advisory-board=
@lists.xenproject.org>>
Date: Tuesday, 30 September 2014 23:15
To: "advisory-board@lists.xenproject.org<mailto:advisory-board@lists.xenpro=
ject.org>" <advisory-board@lists.xenproject.org<mailto:advisory-board@lists=
.xenproject.org>>, "advisory-board@lists.xenproject.org<mailto:advisory-boa=
rd@lists.xenproject.org>" <advisory-board@lists.xenproject.org<mailto:advis=
ory-board@lists.xenproject.org>>
Subject: Re: [Advisory-board] Process for the statement re XSA 108


Lars,

Just checking in on this...

--msw (via mobile)


On September 30, 2014, at 7:49AM, Lars Kurth wrote:

Hi all,

assuming that I get the 1 missing vote, I will send a version of the statem=
ent out for review later today.

I will need to redact the section on some of the details related to XSA 108=
 until the embargo though, but was planning to send the full version to tho=
se AB members who are also on the pre-disclosure list

Lars

--_000_D050EC1F12123larskurthcitrixcom_
Content-Type: text/html; charset="Windows-1252"
Content-ID: <3B1E66638CE73C4093E87CD3F8FEF708@citrix.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DWindows-1=
252">
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div>Matt,</div>
<div>please find attached the un-redacted version including technical detai=
ls. I don=92t have time to share with the others on the pre disclosure list=
 (it=92s near midnight). But if the technical side is OK with, I will share=
 tomorrow AM. That way we cover different
 timezones.</div>
<div>Lars</div>
<div><br>
</div>
<span id=3D"OLK_SRC_BODY_SECTION">
<div style=3D"font-family:Calibri; font-size:11pt; text-align:left; color:b=
lack; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM:=
 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;=
 BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style=3D"font-weight:bold">From: </span>&lt;Wilson&gt;, Matt Wilson &=
lt;<a href=3D"mailto:msw@amazon.com">msw@amazon.com</a>&gt;<br>
<span style=3D"font-weight:bold">Reply-To: </span>&quot;<a href=3D"mailto:a=
dvisory-board@lists.xenproject.org">advisory-board@lists.xenproject.org</a>=
&quot; &lt;<a href=3D"mailto:advisory-board@lists.xenproject.org">advisory-=
board@lists.xenproject.org</a>&gt;<br>
<span style=3D"font-weight:bold">Date: </span>Tuesday, 30 September 2014 23=
:15<br>
<span style=3D"font-weight:bold">To: </span>&quot;<a href=3D"mailto:advisor=
y-board@lists.xenproject.org">advisory-board@lists.xenproject.org</a>&quot;=
 &lt;<a href=3D"mailto:advisory-board@lists.xenproject.org">advisory-board@=
lists.xenproject.org</a>&gt;, &quot;<a href=3D"mailto:advisory-board@lists.=
xenproject.org">advisory-board@lists.xenproject.org</a>&quot;
 &lt;<a href=3D"mailto:advisory-board@lists.xenproject.org">advisory-board@=
lists.xenproject.org</a>&gt;<br>
<span style=3D"font-weight:bold">Subject: </span>Re: [Advisory-board] Proce=
ss for the statement re XSA 108<br>
</div>
<div><br>
</div>
<div>
<div style=3D"word-wrap:break-word; color:rgb(0,0,0); font-size:14px; font-=
family:Calibri,sans-serif">
<style>
<!--
@font-face
	{font-family:Calibri}
-->
</style><font face=3D"Calibri">
<p dir=3D"ltr">Lars,</p>
<p dir=3D"ltr">Just checking in on this...</p>
<p dir=3D"ltr">--msw (via mobile)</p>
<br>
<br>
On September 30, 2014, at 7:49AM, Lars Kurth wrote:<br>
<br>
</font>
<div>
<div>Hi all,</div>
<div><br>
</div>
<div>assuming that I get the 1 missing vote, I will send a version of the s=
tatement out for review later today.&nbsp;</div>
<div><br>
</div>
<div>I will need to redact the section on some of the details related to XS=
A 108 until the embargo though, but was planning to send the full version t=
o those AB members who are also on the pre-disclosure list</div>
<div><br>
</div>
<div>Lars</div>
</div>
</div>
</div>
</span>
</body>
</html>

--_000_D050EC1F12123larskurthcitrixcom_--

--_004_D050EC1F12123larskurthcitrixcom_
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
	name="Security Blogdraft2.docx"
Content-Description: Security Blogdraft2.docx
Content-Disposition: attachment; filename="Security Blogdraft2.docx";
	size=1007140; creation-date="Tue, 30 Sep 2014 22:26:21 GMT";
	modification-date="Tue, 30 Sep 2014 22:26:21 GMT"
Content-ID: <C684BC01F7CC3641B61F6C72E24152F0@citrix.com>
Content-Transfer-Encoding: base64

UEsDBBQABgAIAAAAIQCX5QRJzAEAANAIAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0
Vjtv2zAQ3gv0PwhcC4lOhqAoLGdo0zEJUBedafJkERUfIM9J/O97lGzBNQzTbaxFgER9j7uj9HF+
/2a64gVC1M7W7KaasQKsdErbdc1+Lr+Xn1kRUVglOmehZluI7H7x8cN8ufUQC0LbWLMW0X/hPMoW
jIiV82BppXHBCKTbsOZeyN9iDfx2Nrvj0lkEiyUmDraYf4NGbDosHt7o8eCE4Kz4OryXpGomvO+0
FEhGeVrlJ3Hero9w2iTd9Pw0IkAXjyCHUi9WHdVT7mqpCNnbia328dPO0xM1M2gFxbMI+CgMOeev
LiiunNwYqro6X9oJPdc0WsKIT2w+OAkx0pRMV40rRmib9WE3ZgWBkNc3MlJnTUTcdhCv72DgvVD+
l8b2oWlA0h7ND8XEMnW+GiQOsHk1QKR+XyLy95dT5iYfd8xZC6+w+jGZiwPyrJHGObQOp5j9SJ01
AVZN5GHPnLUgnUk/gwn2xJ45a6EFoSDcXLD1/3FXDsRZ/TSvSfQH4gv0LS7FqoPrd6Ch4OqpsyaQ
EhN4f33/JHqac5KUFM/B+UgJHP6j7H3wJXRJEeQhoIaz0TcqUqa+u8+QzgcK1Alt3p9HFn8AAAD/
/wMAUEsDBBQABgAIAAAAIQDCYJrz9AAAAE4CAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjJLBSgMx
EIbvgu8Q5t6dbQURabYXEXoTqQ8wJNPdpbtJSEZt395BVFxYa49JZr755ifrzXEczBvn0sdgYVnV
YDi46PvQWnjZPS7uwBSh4GmIgS2cuMCmub5aP/NAok2l61MxSgnFQieS7hGL63ikUsXEQV/2MY8k
eswtJnIHahlXdX2L+TcDmgnTbL2FvPVLMLtT0sn/s+N+3zt+iO515CAzI3BaoWTKLYuF95g9+q/G
SpUB521Wl9v8vSmOLORJCF3MvEhZc8rSa7I/QurypNfls+Kc0M3lQtPl5+Lho3Dw7M8rUUrfRjj5
Bc0HAAAA//8DAFBLAwQUAAYACAAAACEATKndb40CAACcDQAAHAAIAXdvcmQvX3JlbHMvZG9jdW1l
bnQueG1sLnJlbHMgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEV89v2jAUvk/a
/xD5bkxgK+vU0Ms6qYddNqadjfNCvDp2ZDtA/vu9QJMGCumQ3PaC8LPy/H2f3y/f3G4LFa3BOml0
QuLRmESghUmlXiXk9+I7/UIi57lOuTIaElKDI7fzjx9ufoLiHj9yuSxdhF60S0juffmVMSdyKLgb
mRI07mTGFtzj0q5YycUDXwGbjMdXzPZ9kPmBz+g+TYi9T69JtKhLPPll3ybLpIBvRlQFaH/iCJaj
J6ukfkCn3K7A7906xLxUZjXCLZPCSJgCv44nDDHGU7YFTR2IykpfU56upTNWgqOoCs3Nhm6A5vhf
QUo9Emet8x/oKyF3Ww9Wc0XYaYITlDwcwwYAtAASsluy3W88wqs4ByIOCuIlmVHQ0pq/IPwuJnpS
I1IqtQdFXe0seFpauZYKVkDBCb4PuQsFjuOQAp/hhhF0xKqLmNIoKepR7lH+x7D7v8iIJ28AvIv9
I/jdpVyzjsm6UhosX0olfZMAzW0JYyxWC+4x+lPphDKuskAdrxzmOS2kUpfe1/R9aU93aT87Tbvu
k8QgFuCwEAgBJQpwKdFP70u0rW+vknSf34DbqyTd1RsAH0w67DtxL/p6SdXGW2OqXNOyaVWmmHqX
Bt4sKEfgKVj02HbU3Xq43eBUEa7nZcZgi30CsF8PAwg6VmRG+wVfql7j7UyDXTekCroqlmBxbnsS
ojMNgQjaZJyvFU6IXSzs10PHnyv2hRTWOJP53TS2H+2akW52ODWy/Ql/pM/vsgwnimeH97aGcASt
xQ68x5voY3m0DEEIWjI3sPz1DEXPOAQkaAlsslFjgvbE6ExDIILWKNDpEYbWMgQhaJXCR0XzLOnJ
0FpaCOzgTTX/BwAA//8DAFBLAwQUAAYACAAAACEAzwvq//obAAAMlwAAEQAAAHdvcmQvZG9jdW1l
bnQueG1s7F1tc9NYlv6+Vfsfbrlqp6AqMU6ggc40oUKgB2qhoUgaZmtrP8jSta2OLHn0EmM+zY/Y
L/v35pfs85x7ryzJimMnjkloeqY74FjSfTkvz3nOuUe/PP8yjtS5TrMwiZ919rq9jtKxnwRhPHzW
+f30192nHZXlXhx4URLrZ52ZzjrPD//9336ZHgSJX4x1nCvcIs4OphP/WWeU55ODBw8yf6THXtYd
h36aZMkg7/rJ+EEyGIS+fjBN0uDBfm+vJ3+apImvswzPO/bicy/r2NuNk9XuNvZ8d+P9Xu/pg7EX
xuU9FkeUTHSM8Q6SdOzlWTdJh7giPSsmuxjhxMvDfhiF+Qzj6z0ub3P+rFOk8YGd1W45K15zgAEc
nI8j92UM++LvmhU4MD/cFenCRFsGaS55aZdchvcg1REGnMTZKJzM1+2qd8N6jNyQlk64MtnpZO/R
wvPK5Vll01+m3hR77x48nSzcrmUxAnPRODLrQIGai1Hzjnu9FXaEtyjHsMoQ6s90I6kK3/RqSzOX
pOkEKngdhfpbmhSTclaT8Hp3exOflfeiJVhjZL3HourVqWVr3WDBVpyMvInuqLF/8GYYJ6nXjzAi
rLiiRHYOYZ36STDjz4maHsC6BR+fdXr2n4776KUeeEWU8zcvj/ce7j+WKycfUrnwJJ9FGl8996Jn
ndfao03sPOCvUvON9NckzjN8w8v8EKt7lIYe7MD0QHtZfpSFXuWj0VGcVb/iYwHM9+WOfhIlqXtW
7zH/Zx6VfXWf7j9ynxzzmTIq89kDOyL8tGOXCSwd5eaeOj3ID/9+cqT2ek8PVD7S6u86/gVDyQ/5
XzOSyqJtZKa8+7/++X9LHtO+N5ud9VE0m2RanY68XH32sj/JrPPaqlPmNqhmL6C1RsynYZBMj6Fg
aRI5ce9tWf0ov1R1TtL9/NNM1unuMlu3TJ/c4lFXT41ZUB/S5A/t5+pE+0UKmKVOtTdWeRJ4MxWE
mR8lmQ5UoHMvjDKVDJw9mV9wFJyHWZLOaG7UA3X86dUuoOSj3Sd7T5+qe6fvX74/UEdBoKIwPlOA
rSoP80jf70JLxTKVQ8j5ZLiOsRdFeHiiM/wtV6nOJgkvS1Q20X4IxKrOiyjW8DFEhqHOeK8wU/h/
HxfWtGGTa6azcBgrAGMfTkirvo5Cfa6xInywznIFyJNjMTNVZMDvMlmsHP848vwz/Oyq18kU16Q7
so6p9onWT0Y6irJR4p+pfjHcUWk4HOUK/i3N4UWx/BG8Fyafwt3tqISP94YA1WpS4GNg+amX4iOs
EbarCFQ2y3I9Ns+H+Q/T5nqpQQo1NldgADpVuBkdxVgHoddVJ0U/0/8o8KtotmM+ZMhxUwvL+OIg
m3g+EMME263Tc905THPMnDteEFPHQ7MKU60hRf0EM7cubgdLwO0IIBsBLoGceEGA22QyJUwjE0iu
Ui+kLE9DbJiZLvxiKX0IHMZFTA3gQtqFqM34T2VYV9EbOIGN4aq5bfJT2DD+VSBKBacsARB9MXv9
42xV8/fWm429ZfBg7TteGfys+6R2bclguP1RHPpepF59mUReLIEoLfZHY2Wqwl5a+08VQzpTNXF3
O2C8zWZG+a9//u+yh2xyh3+D6/BidTRJsCREhbXJ3ZguL4X4N6EwnIkFBKvpygVwf66AQh8t2uMT
WFni6qlnDGsIcgbAAQJWW9m62CzZ0auOw5r9JrS4/9w5BAX8kEzh/tSQth/eYBzGYZanXo6IDqbf
g+PsR4ARxl3iw1ECHwEXAwd+DieSclYQni9PH6vXn97Z+8Cx+KmXjcSt8Aq4YixJ6I9wx09hmhfQ
vXeeD++iVVrEAkt0zfdWYI03mQDl4J4fPpn7G3/tezFBT18rDS1OQjpBgBoDKDiqG1vtQ04JT8N8
7+nusItH8amyFPCvfUW/DLZQganD4LzxRFBcHSsQRLStup8UUYCr4M1zrcBmEjZBmOxWXXQZlidF
mI+hjL0v4bgYczQP1VkYJf1ZDoCIv6bw18kYHntMEIot4c1kozAZUIHcDgsQ7ShikhPyNS/PBZhx
H4Y3JcaHGvP0SakKhk3GXIB4ADmLc9ATkEjDfYI37NbG8P0Zqe9vRhs0d4fvaZoyuCtNud7b3euZ
MKEa7cwQSjDaAHKFPYOEe+r0xcuu+kuU/9XEWgYHwzBpKAIYLMQqHsA+JTyBrOEnA5a/DPO/3qi0
WXpuvyOQbGtucXpwN/i5z6PZPIR+BzvEKPEeLCt/QQv2wQOYe36/ZhCmB4xSYDY+evFQn+QIEAEp
wgB0qV3ma0GA9dYOLEI7FG16qOqYXyG2unDE55hyNrLo32Aad60e6BRZMJK/5XSJWCRS+PPQXZu0
Nu8QIgwJeqrmBWSKxL/gIdQg/IK/gduYeKk4fXGsSZE2sPQGB3WBQBGzxbM51RGAQomSCTWhq34D
L+Q4EJJADOPh8H+P8hAJNE0Gg4xL5fLqhGdqXADJAW/l3hmMKkBOmBQZoBlQF9AJJ0+KCZbzPInO
dbDIW5XBlFBnSEOdZXDwUQSWAiY6xFBnQjo41NkEm9kOqI10qHeN6WecJnBvB1lgQJs0a9gAExhv
gAS8YLXhezCG3b5HtqTKJb0/ISUI+hfIliwKv6ayYjJJYIfgV4BqgKKBgjFhL8sIeEbJlL9BrO0N
LUWVpKC9sOLFEBMHfIa3Iz4fh18pjGmYGZbQoU14LJ2mxUQ4nG7dtnx/cOL7m9GNW4dfC5RC0BRQ
7nbEUJybYCz8ajiQzHHbYZYVui5C9eFdNSa9Oq9x+RMPYZtCsJ3QNUvW76j//PRuR72Frn0RpQMX
TPgA9LBljpYBM2hpZAfEvkYFtfSuLXC7GRwjAZKCBA9JratBAVeQ6n6C2Bz2kZ6QZryr3g9y4zUk
NHb8AZwoLmMg7w0GsHYwpNgcXDVTCPAVfQS+kUByF7xvPsLnw5EJEYcFPQiW1B8R8VmKwP55hDQB
AH4xkeGAn/fPuupNrAagZZAmMKPce9LcDgepmhBybxMQkpjMeKb8cB6SxEhiSPALUUYdElIhzSRN
dVBzjNg2pFoNwLGFww4e2ik0qgBOwzGW7jc9VR8TeKJ6PUDLL21lQMtvWCPQ/HiRcvaKPOFI5ovh
pufGaWGszI/fWoPqXsFgMLaDvdgubCit04JEGxWgc6fakFOr2DL1ejYhr4QM4g4UBswZiDFkvoga
Rh6yaxF0B3/2nPYRlgELCmKyAKmBCtx6tiOkYy8K+2lYF4LKh3bzK59w091fFzd7Xhoy3+4LAqNT
TD+JAY4mqT63KNOV7GGWYcyyPsQ4UF0P6dKxkH/W6JB1XeD+Rlw7yaumEhalb4KfOTHE96A6Z6ge
7CxIVk1/ZPF5Axs/riBcGCOSi3C3AHVg8bAd8ENJU59rGPW6j1wqyde8ebvxx14oJLH3ayqE/S0X
fGFZGybHyQs2Y54iq3y4ESk7vFECZ174sTXyxmkQfkpOgz+50huqGLsFM1pumy4vP3MrxBKON/W6
n/qtV9DkK2csV7g3jFXEtDwiw5GaJAjiaP+ZtRfaH44A+AjROgJ3wCdUcaAkhGY+ZhSJAJEpf8Ce
vs6R8DeUfsYonvl5i2xIUTBV7zwDsBhvq84AsgiBEDgLCkOWAelQRAao24iKgOMAy2pzGQ6w1RT9
lq3kyEuXmteG6VlLiNrNX1lPMidW4gFSX3la+HmRasbt2BWpbWHsjiUN6bOquBaby6THJJdkC30b
Ezni2ipgWgArYcEEd8cWIZ0jIJsVM3D+S7blOplF1tN8BLcCIQw+gJh4gSTTmbj2HNEWZubIHqG9
vHmMRRQvPsAClkagaWkbKSBJKOBjUiNg3ytlNPgMCEBmx/gA/yKnFvyw5MHHNWp/vzdLbpOWYNyo
IUefT8SylQVOVBBb2tWwW5KNN+lMZqc1sJnVw10bX2aJjcqZtv25p4AYpegMzwlRqTa/rZSnqaM4
2CnJ3hRHRox675UXgmFxUBxkoCXmZBgZLIMBtyDryzHhDAc4PZqIWtJTUssm83lDSp4fig+5o5rl
HP2dg0LNgded6YVW213malMRMffDeQ0TNeBo7H0FJmCBRIEwSWIQQQomQuRXEN0HrPIgdeO4GtIQ
qE39D4sbUA3pAi3wz+YxuIHw2byFLXqFLPOCSmnmvbKy9fH+k737LjAtKxQ5tBxJk5SOjC4AGAZw
ZMI8HsGHRL882aRz4BFf31HBZA6y9WSE28E7J7E4mSK+f8XyQTe/FQV7zbtT/n8DLjj2QALm6gWy
xEU6uZqJXGtaF6ZzYb2XArHNPOXqDPq6zz9ECXaVgVqytmvf+soh1dpPyubVAx8S1LLN1GcmHmuT
oaRuMHy2+KwjyrI1TmC1ooTpASpeh2Bb5BAWspe/n3CcTZu0ss5eYOM2Mhiq+O9xFJ5pJK5RDAY3
Q8eDUJQnMVhcCT8iAQLPByB/jBgX9SEIoeFirB8Bg4js6i4iZ9zlPU7Qnpy8FafzggWKu1X5Zpg9
xQED5DAQ8Ug1oafOPWZtJJaGC6SPssmFn39CWCfZdWaUJKDDUzk+Kdpj6Labg0/vqvozaoJ3a5ZZ
TmLIlH87OcJJBjLHwwQ8Qkz0gAgVbnrMQyTMXwWauX77C5Oc4byxBhEwMfhXWUVWX83UEUhkr+8h
3eJ3JROHisYddQI6A5Xl8Pq8MaoNEflxn1CZiAUr6wTML0GekgZGVoK5IqlQKONFUiEotDB1AF0w
rGd6CjO8o/oJ+JSW7+tI8JAURPJCG7jfzl3hWY2ygINyz9rIOhxaRYJq3KphPch93+CxzkusDKBR
ao2OmJ4fxle8xNqA6YaNbzvnhcQpbOoEZ/eFiKTmN7SnJP9VmW3ZQ3OGq6RbXGLzYupunSpGOpQ3
KJOJ1Ml/nXx8dYo6gfAcdTWouHnFmiKJg2uTwZaUs7kslXE5n7gpr9i+MbV84owOEJmZPSS4Yebg
u+yhLZALGQ6Ow7+R5/DUzOYQLSfC7dRfkBYjEcH0Y205VrE2gnq+iWR+sEc0G0MuN7Aijnu3RRxL
X2fAaW3od0r47mV6JUOwf1tW/r/3/ufurjaRUW30FTtVEfOHt2ax9+/uYuMEdmOpaU0BixeKy10N
v3iK9qqKb+0kTmHfay4QpLN1gbp0gaw5ZTREZyB1GADTwOoMZ+Qz+oXScEkx7/wEPEKm6lFJEHqo
JaQzaaxhm1V+dDVxdct+PZBwKWZFr5DqvMvj/E+UYzz3d3v7e0/u1xH6nbLijU2qCvq82sytd1XM
a9Ulx7e62uzSjXazbhShybSxmyjZwX9/xCy1mOXHilAyaPO5Etb2VxXkYuN0w1j58EgOpkg5rjAe
rsh7InQoDk9U7LVjt3joQOgTc/hyEGowO+gxh6JUkGwAHxmKLfBHBBme+AXkMwdg1Mi8lRmi/Ue2
+lAuYLcSxiGWQzOnWkHokEsitVcdW8MM1YrkvtlCXhB1sRuLnM/A8WZHOrINCeqTgYjRHgYLyQaE
Qm7hU5Q1BwmOVd9wLcN2jxX20BPRxurrBOTX1JUrPlVoADCAiItLFIPYUQ4eMzkAtPK8JoEbNm6X
FmVU6h+vVhS5ni3a2OMuTI290CAbpBcQq/q9OJsSTrIdkOs6A5zIQtkzsOuZttQSaCbW0ArknCC5
hw5LLgdAJLZGuP/T1YDlw2pqhFIzF5ekJiANXqQGhl672uOFuzEbVbsNtq2ExZexTTe/aQd1yL5h
JXgLjumDl3rD1JuMTKosLsbGcYbRebNxGn73hidiJW3lVrK8ALVzGRcMP9138DtuOoTmWefx45/t
TrovhnBhwIF6gA6K/C3+wsMi0PxnnYc9+bZ15/jR6nFwxVw3VyPVv51WHr5CY1wckQHROdEJ+lGg
LjFBCQYduYMDcuZLDp+kmtV4VLsxPRojRKjhQlSzSQR8HWl4ZPf2hzTMj19AOhunMZzw0Yy9Mo09
yqJVe3xWhEIOroZ9dh+pGln3XaDAaksYIruFY7oCEM25E3NSV8o9abqrd2QOUOpneWjF9iGDczBH
D+dih3OzAFbLKrib+rlJy3jIFLMctcXo0WgmYe0ek45QDhRImYkxzWhP5t4wqNs+ctiw1d/+BBqu
uWHLNykr7fHBKTi0PrsrTXFOEoKT8XC8wT5I6CIMgI0Vq1tDAjc86kZt2kP5xzjhgqaDhWtwhJWP
s1Hpff0IKSN6TPs1OcWHvw7CCN2Gf5V/rEm2xS/5Iau3B+gsgL6Q7EvJPivokYpad1Tijq0azXUe
5/w1q9pZQOtlibFWcr4d7l/yVvOLrccyrS9pjlDxgZBS47gnKhwRojrLhUDTP4MHRDEjvwYFZl9I
trdC7Aqr912vP6qXma6FLKJZxY168u1r+A8TxfbcFUu2xPO/YfSlQOpAj1y9DmgZ17xiKt3H+iRl
DNXTN4FbpfOW7SnKk0G+aYRrPTaqd3jOsVQp7xydcFndXunlKn3xGALiEfLt8kv4REJEiqhFGJUC
Y1hI5q3RmQ4H+KVMCWorYSIJpSiU06D3YEAY0/ueFfW/fXi7TaWuIKx2V3DfGB7AnfMkDFjUhNIx
pNsZd2gc2UKSBCijvq5SRCWsmfyepd4oSMsaKak7rwJ3fgI37LArssWqZ5pyAFMqC5QQDZ9y9yKU
JpOKM4VS9Mpj0aRT4O8ycriue8LS3q43iazbVUTxlRmVapWG/pbsSCXHjXedIHhf+yC34xBKiGIL
Y65XA1SxwnN2oPLhpceZKxvdvkKOah7gfSrsO8RSV3ZrybjzAy9MYxZSuvOgJgqb8+820uuqz9W2
3BAlnCc1SV7ZgAx21Gclq6saYi+9qvhUzD9QrDCn+IZcK+AKvSbRp1oEE59PeVpkoWBhGatfWbJr
r+MhJgPQJw1IpTyVsJI1UOzYraWOmIWW44asbWt47duMVZQdHWOcIQkb6O6ZHiURzmIyoQD3zcZS
Ug0bhOidImst/UNQcVybyp23rXd+AttzDu3CdJLsmNcE0GFUOZgSazglZh3787pxQBhm+HqAMNEc
duMhVpkRhnyUFvxxMoWCaXWGP7Bn/thhOGNIWEkCG1OeSwvUR8Ri0sje1O+7WA3jA6vCM+ci5RKm
4cKaOH/rxTRjNMwP0himexFfMICBkinqqndsecwDBwgsM6Y9kexwFJscVwiYDuReZOjH1WUiI8B5
8fI7tKBCwyUwnQiqJS9i41nsgcPVTRoKDf34VgJ28kOMzNbO3CU+Ro/76JuXIBkJGre+mndet+78
BLYnz4enkAWXcDMqSb8OUgrhmJeh2RSpKNcPl2cxqsbiVimhpYzm8epc/9gbAUKPBmKsdIZKVCch
J0+EdQ7Qr8xHvwGJyUBPqfMQpWvodYCqaNv0AromfJJoJ2zdm4GaJYWKkgRNyQz6HkC7d9mtQ4we
da3yNhJeXTkX26izwJlaEmkYgZy2wev8cLjINOLDJkggLsaCzSSGQ3Z3ktMxtW2488K/7QmUibo5
qiw/WnogBgNdo7pno/CVb8Kp7fr2LEY7nIBzFm9f9uYAS2sKg+CryMCIc7SImyYl1YMIygYRxokw
KokJS5Cw68M1Im5plAWRJsaX2bDPHO8Cp7tboYMQw+au1oYtStQAh8O+0RIdssKn8WzGTW31wRJz
bm/3Gm2vSNjPxzUv52wZ1eoNpuViKsfGiyJXL2BSLxAWkQVoKHX5eVWzyw/Jkorum0/k2EofN5EK
A9vmDSfdG5/Ui/XkrYwmb3K1sqfqjpxU2pRLTnu5pHyjsTN//BYUA5zrEqmfS1fbTGr1Mce3pVh4
zc1fuXmlq08whMJlNaHbl0bsaLudV2+BT2CIa/t8Yx57i29NXM+ZG4BQOSRPFSCUlnALyE/HXwEj
zUFo99IdYj96uqx8QxxyKmhwotiMNmLQDAfnqbkL9NLaMq+g+80cK6yf5EYLgfQ4Io139CDc+xWA
1r6FRrw2OSJJRKOCl2QrO48jdEf5UwCaCcReEeCFK3Cvgwhdk+Gc+QIepGx5ql7u/Ae61MncyCSc
uCxQi4sWljEzfbzI/xFlI/Mb+iHSS1qx++rDXv32fc2YFYuGnp5coQApJnyAjJGLYTmgWsnybEvp
zG8on7dI5zaGbDmnNcrkncpS945Q0M5OiddWGLDnCN0YhIWEtISuC4wYI2SyYhBG/QXlCmN5S4G0
iYBiGTALBPpQDtKaiJGXQPn4hktcZZgiiG2NeLPFT3xJAnk19oAkuQsFS9F5XRQMnzOVeUCiDbx1
xVaYW6IcCUlDvuyDRQ44moW+jUmMEFY+66oXmJvU2OJGHCfq+MDp89QvFRHg/Zrr1+40hHOaV3SV
62mTFI1nXoR/fjKgahkH32qWEZ8jpRoNljxmDk3aHnI7oUkNda4MPGR+VJzLaolbl7JuVuvBQxWq
PrnaVrVLTzOKq8rHfONaHrl6xCIXm1WhDeLabKht7u2MWK4WmFyqeWUctYWga50pQFDTsreIk33r
aBrFf9eNoPZ7j3pWFNcbYX74GfmQho2qrviaoUjvGiO5Qieua4QoVx9ou73g2wq+5M/rZmPDaj2v
aFsXAiJIGONVzWPvjyR9zXY7JCmEjFj8TSW+4PitxOL7aRYGHz+gHLPXe3m893D/cefCEHLxris9
j5gK9QACQlx0AHI8Qa3mV1tpYkIdnx2heIgAaKYsqyw9PEOeBsdt0lc2FQZwgq4iBZozgaEnBAFe
YX0ncw/VRkeZadaFr8cGQfkeU942oOLhdQSlOccA7BTjnGJ5n4VDOVtbPiBHdMXS6BsWo8McajKG
ePEmauxcYR0XDC0tUXIwnxYgItN+Zmou5YDkPXYRbceAKUVuKo28pWCvaTW2NsUWQ7G1Z2fSs0C2
nXJgevEiQq202ob4QpgCNjQFmkftBIoBGd7aUpZSXKURHKB42VA7hgFBAKzPJDqWfKsQ24g55Qbk
nYssQ/QrxSPA3ID0eHfXzrfaiXZLyJCe5+faoxhJ5qHcvDDEuRAQ1CBE7SgeQqIPb5yV98hj2Vyq
moEP4xz8JAwz73zH22PB2UtVYg45baxBFa5VMeJTixG3JjBir5YMbo4l3dCqRvV7CgJkfgbuwpds
bQNWjR7cUbttDewC5VlJVLYyViYgVn27pwzI7G0r5rF4oXVt3YdXaia/ESC0NHBohTKLKRtOnlCJ
03c/NxjRXR361XJLWOulk21++e7Nk8C2McUS69rZ8e/lxIw/qNEai++Huq2bejcnawudmzXdhvu5
k9v3/c1oXbu6+JK9xY1UvyPthK676t1JRSWbL+ezytn8WLLiNTV17GOtl6VNl2df5/nyffsZ203j
Lv8vAAAAAP//jFDLDoIwEPwVsj9AMUaQUO4eTIx+AbTLIwHalCUEv96Finq0l+7O7LQzG86pu7k8
C+fU7neezemIim4uYHZs9V2CeB9YyQYLje6OFTocFPIULRYlaKyKqSMIXNpqCe6ioxjCVVEZQ38q
Eq+w9ePJD88SougsBHDdcH1KjmIfuBarQTKW8SPD3Li2bojbxCtKQ2T6L91h9cP6GBJikaxa7/HT
1hOxZU7uv1OmG3lotIXipPFhg3lrflHbAkujl63QRk09DpS/AAAA//8DAFBLAwQUAAYACAAAACEA
gPxplcEBAABBBQAAEAAAAHdvcmQvaGVhZGVyMS54bWykVMFuozAQva/Uf0C+J5jsKqpQSA+Nuu2t
2u5+gGtMsGp7LNvgzd93gECyS3eVthywBfPevHkez+bmt1ZJK5yXYAqSLSlJhOFQSrMvyK+fd4tr
kvjATMkUGFGQg/DkZnv1ZRPzunQJoo3Po+UFqUOweZp6XgvN/FJL7sBDFZYcdApVJblII7gyXdGM
9jvrgAvvMdUtMy3z5Ein4TI2zfhIvKL0OtVMmoljrgisMKi3AqdZ8Etwe0S4l8YuUKFlQT5LJcMB
9dH1RNMWpHEmP1a1mKrqMDkKyFutxmCU/e/YwYF8WEaEmxX6hsgBsgPeaGFCLy91QqFgML6W9uTb
R9nQj3qU9N+Cz4qNNvs2yzfZc8mh7xyLePZj4mhndG+YUQ4grQYfuoY6tdHfjBm94EQ6iknDJRL+
zDkqOW+++DFrTp0ULd6+z1yo7w4aO1Vl5efYHszLxNUNgXcoo+v+qp+X5t9FMJsVTzWzgiSa5w97
A449K1SEjiddR5ItDiabxBwHWvmjIPT4kPHTTlSsUaH7s7vNvq7WA+LR9cCncFACQ1umCnIvWCnc
HUAQjqTbTYrMXVy39m8cgNtXAAAA//8DAFBLAwQUAAYACAAAACEAierUMcEBAABBBQAAEAAAAHdv
cmQvZm9vdGVyMS54bWykVMFuozAQva/Uf0C+J5jsKqpQSA+Nuu2t2u5+gGtMsGp7LNvgzd93gECy
S3eVthywBfPevHkez+bmt1ZJK5yXYAqSLSlJhOFQSrMvyK+fd4trkvjATMkUGFGQg/DkZnv1ZRPz
KrgE0cbn0fKC1CHYPE09r4Vmfqkld+ChCksOOoWqklykEVyZrmhG+511wIX3mOqWmZZ5cqTTcBmb
ZnwkXlF6nWomzcQxVwRWGNRbgdMs+CW4PSLcS2MXqNCyIJ+lkuGA+uh6omkL0jiTH6taTFV1mBwF
5K1WYzDK/nfs4EA+LCPCzQp9Q+QA2QFvtDChl5c6oVAwGF9Le/Lto2zoRz1K+m/BZ8VGm32b5Zvs
ueTQd45FPPsxcbQzujfMKAeQVoMPXUOd2uhvxoxecCIdxaThEgl/5hyVnDdf/Jg1p06KFm/fZy7U
dweNnaqy8nNsD+Zl4uqGwDuU0XV/1c9L8+8imM2Kp5pZQRLN84e9AceeFSpCx5OuI8kWB5NNYo4D
rfxREHp8yPhpJyrWqND92d1mX1frAfHoeuBTOCiBoS1TBbkXrBTuDiAIR9LtJkXmLq5b+zcOwO0r
AAAA//8DAFBLAwQUAAYACAAAACEAz/QMFN0BAAALBgAAEgAAAHdvcmQvZm9vdG5vdGVzLnhtbKSU
wW7jIBCG7yvtO1jcE3B2FVVWnB4atep12z4AxThGNQwCHG/efsc4drJ1WqWND9iGmZ9vhmFWt391
neyk8wpMTtI5I4k0Agpltjl5eb6f3ZDEB24KXoOROdlLT27XP3+s2qwECAaC9AlqGJ+1VuSkCsFm
lHpRSc39XCvhwEMZ5gI0hbJUQtIWXEEXLGXxyzoQ0nvc8I6bHffkIKfhMjXNxSC8YOyGaq7MqDEl
AisN8pbgNA9+Dm6LHu6tsTMktDyoV1WrsEc+thxldjlpnMkOUc3GqDqfDAGyna4HY8T+2LbPQNa/
Bg83CfQMZO+yAdFoaULEo07WCAzGV8oe8/ZdNcxHNSB9GvBJsK1Nf0/2G9NzyaFvHG/x7IeNWzuR
O5OMonfSdZ+HrqCOZfReMWUXnEgnMTJcgvD/ngPJafG130vNsZJai3fwmgv14KCxY1RWXaf2aN5G
ra4VfIGMLeNVPw3Nf0lg0iueKm4lSbTIHrcGHH+tkQgznnQVSdYn7Slps7C3uOql5Y4HcASnVJGT
WRoNLf5i/yv+5IQdns4iTm1kyZs6dCubu/TXYhk9XKc/ytH1iqJ5HG0ch854FkOACco08eI+vUdi
1xCdVf6MDrEHVL/+BwAA//8DAFBLAwQUAAYACAAAACEAkKY4wN0BAAAFBgAAEQAAAHdvcmQvZW5k
bm90ZXMueG1spJTBbuMgEIbvK+07WNwTcHYVVVacHhq16nXbPgDFOEY1DAIcb95+xzh2snVapY0P
2IaZn2+GYVa3f3Wd7KTzCkxO0jkjiTQCCmW2OXl5vp/dkMQHbgpeg5E52UtPbtc/f6zaTJrCQJA+
QQnjs9aKnFQh2IxSLyqpuZ9rJRx4KMNcgKZQlkpI2oIr6IKlLH5ZB0J6j/vdcbPjnhzkNFymprkY
hBeM3VDNlRk1pkRgpUHeEpzmwc/BbdHDvTV2hoSWB/WqahX2yMeWo8wuJ40z2SGq2RhV55MhQLbT
9WCM2B/b9hnI+tfg4SaBnoHsXTYgGi1NiHjUyRqBwfhK2WPevquG+agGpE8DPgm2tenvyX5jei45
9I3jLZ79sHFrJ3JnklH0Trru89AV1LGM3ium7IIT6SRGhksQ/t9zIDktvvZ7qTlWUmvxCl5zoR4c
NHaMyqrr1B7N26jVdYIvkLFlvOqnofkvCUx6xVPFrSSJFtnj1oDjrzUSYcaTriLJ+tidkjYLe4uL
XlrueABHcEoVOZml0c7iL3a/4k9O2OHpLOLURpa8qUO3srlLfy2W0cN18qMcXa8omsfRxvHQF89B
CDBBmSbe2qf3QOwanrPKn7Ah89C/1/8AAAD//wMAUEsDBAoAAAAAAAAAIQCWp/iqgHcHAIB3BwAV
AAAAd29yZC9tZWRpYS9pbWFnZTIucG5niVBORw0KGgoAAAANSUhEUgAAAnsAAAJ7CAYAAACbNFeX
AABAAElEQVR4AVzd2dIdxfH14RYNCMQgCZBAI+8gOeDQBz6zfcIBBkww2MbGYQP2ue+hb8S3RaAB
tBEgMc/zJO+n7J+iwxXRX3dXZa5cuTKr9t6v8P87cH759415nqeHHnpo+vnnn6fXX399uuuuu6bb
b799Onbs2PT9999PX3/99fTtt99OBw8enL788svptttuGzY3btyYfvzxx+mWW26Z7r777uH/ySef
TEeOHBk2P/zww/Bl8913300nT56cbr311um9996b7r///mF/4cKF6Y477pgOHTo01j/++OPhi9OV
K1emc+fOjXdxrYn14IMPTtZxuvPOOwfm559/PuHjXR54e3fh1jNOX3zxxXTixIkxBxcn+Xo+cODA
4PLhhx+OHK3hLid+csHXOi5w77vvvuHrXR64sLl+/fq0u7s7+Lz//vuD2+HDh0cMWLjIgc54v/vu
u4O3WDh/8803g5u8xaD/Bx98MGLyVSc2YnnnY07ubD/66KPp008/ncQUp7rCk79cf/rpp5HHV199
NXjK12XN/bPPPhvxxJCfebH0AEz+xZ+2w3M94a5O8jp69OjAoZtn/YYbe9q/9dZb05kzZwae+olB
W/FxpeW99947rrfffnvofM8994xewkFu1vESw5p6mjcHhx5i0B6neou9vPBwqRUs8bvTXb5nz569
iceWbmpn0J+NnHFyGfYPLWHJ2bP66Cv9gh8b7+bVlHZqrpcM/MyLwd4lDzXBgz2+tKOPHqrHzfOV
P0z605cmONWvfF36w/5UG77F90yH48ePj9zkLi4u8jLPRv7ygW3dJa9ybF59cCxfteLPXl50gsVO
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
EZedOO7mxNfbMN3lJR5daImjfMX1rhZ01ree3dWgs81dvmzkxL8+V196ykXt4Rr42VPx0Cds5OgM
9HlUXGs49ssMdoZcXHjLSf58rMvH/4OPd1xoVD640kJ/muOHD57iiE8b3OlpyJkNbJj0dy7IlZ/c
1M6a2HixhW3/dfaYE9sZBz8ezjt8aElba/TkLzY8McRVy2pmTo3Mu4zygQ0HH3Pydv6Lw0du1Ywv
7Q2Y6mg/W/dDEQ1hiMtOHWHzoz97/Y0rTcSEgwONXc2phXzYl6d3GHQQp3zN0Z0vjPaQXMQVv/rS
Hj/++/yBRZ5wnB+e+cjZ3PbOve8GBy++fQOXLDDiCOiZo4QM60SxLjif1hVWUQWXlGDIEkAM8zWK
xvHHF3A1WzwkS1zNwpeP5kdaXMnCsKklah5H82L6ycc8PKLZFIqHp4bOVhw44rArFi7lE2fi8aWH
DYsHjtbZiuvuXWFhV1S58+PfQWSdLU41vWe4HQgah35srZUn/R3G7g5Jcenu3aZhKx59rTkw2ONL
kzaL3PnQCjdDQ8cXDl1wwIkuhs0DK06w4eKHqzoYcDzjYs2mcNB1ZwNHPao1f1zUgn4u8XHtA49u
ePPtEMcbjw5H2B0g8sOlfPmzxR+Gi37isBOTRvoOhrk+qGF51vtsYLLnLw/P8tXTcpCPeQcazuzU
xByM4uLrg89cP4TQyqGJJw78PfPFy4clLfUAfFhqrhbxsz897/Mg4Jsdbtbg8FNbc7iVj9zkKm55
4UEvdvWjfGnK36X/2ej18NWX5tYNNnHNj7Z9sWZD/+qcjbg+YHCvVnjAUg/P6qgP5EU/e9+amLRr
P6QRnfnpdet6XWw1xNk7TBw846mv+bOTP574qLdY+MGim7t1PjjJAbaYfNXFM1vP/OkmTtxwd06o
iUtc9mpd/cw5J2Fkww9v+jhrPTsf1QtHcelp//D3Dy+LCdsXW/Yw8Jc7jeJuXmxYcuNHJzbiy9te
hiuWeb8R5aNvzcGyTgc9I3c9IC95wLSml/S7mDDFYQuLTmLp1fSnn9z6jMCPDVu58DVwhy9/+LiY
gy82nvJWWz0Mw3N+B8j8H32CsxzyxUd8OLjg5F18g8YwxbRGM/mJAd8z3nCaM8/OnT742dNG/QIP
R9pUN+9044trvVa/+TLFFh6btKcn7tZcdHP+w/NbeLad12wNdVZbWugfl3j89bCcqo841R7f/M3r
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
AAAAAAAAIQCWp/iqgHcHAIB3BwAVAAAAd29yZC9tZWRpYS9pbWFnZTEucG5niVBORw0KGgoAAAAN
SUhEUgAAAnsAAAJ7CAYAAACbNFeXAABAAElEQVR4AVzd2dIdxfH14RYNCMQgCZBAI+8gOeDQBz6z
fcIBBkww2MbGYQP2ue+hb8S3RaABtBEgMc/zJO+n7J+iwxXRX3dXZa5cuTKr9t6v8P87cH759415
nqeHHnpo+vnnn6fXX399uuuuu6bbb799Onbs2PT9999PX3/99fTtt99OBw8enL788svptttuGzY3
btyYfvzxx+mWW26Z7r777uH/ySefTEeOHBk2P/zww/Bl8913300nT56cbr311um9996b7r///mF/
4cKF6Y477pgOHTo01j/++OPhi9OVK1emc+fOjXdxrYn14IMPTtZxuvPOOwfm559/PuHjXR54e3fh
1jNOX3zxxXTixIkxBxcn+Xo+cODA4PLhhx+OHK3hLid+csHXOi5w77vvvuHrXR64sLl+/fq0u7s7
+Lz//vuD2+HDh0cMWLjIgc54v/vuu4O3WDh/8803g5u8xaD/Bx98MGLyVSc2YnnnY07ubD/66KPp
008/ncQUp7rCk79cf/rpp5HHV199NXjK12XN/bPPPhvxxJCfebH0AEz+xZ+2w3M94a5O8jp69OjA
oZtn/YYbe9q/9dZb05kzZwae+olBW/FxpeW99947rrfffnvofM8994xewkFu1vESw5p6mjcHhx5i
0B6neou9vPBwqRUs8bvTXb5nz569iceWbmpn0J+NnHFyGfYPLWHJ2bP66Cv9gh8b7+bVlHZqrpcM
/MyLwd4lDzXBgz2+tKOPHqrHzfOVP0z605cmONWvfF36w/5UG77F90yH48ePj9zkLi4u8jLPRv7y
gW3dJa9ybF59cCxfteLPXl50gsVOruLgb9DKHO2ts5eTvM05h2jWfhMDtto+8MADA0v+7NUJt+qo
JnKzj6zTkxZiw/AsFkwc8MW1vXH69Onhq8fEVzPrtOMnT/OwaK1+5tVBHs43tjTzjJ93vPmoEX70
gO2dP75szdHHuvf2AX7mxKwH6jk5WYdhiF0s7/UGrubpyIZmMK3jqMdg080cPOv2I3w5plca4MdG
TnzUwj7ST3QzR2e6qY2hdnysi4mXwce8dfWRF7/Oa5zhudNG39L81KlTA8ec/pRXGOqedvJxFjlH
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
ALtYDwAAAA==

--_004_D050EC1F12123larskurthcitrixcom_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Advisory-board mailing list
Advisory-board@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/advisory-board
Archives: http://lists.xenproject.org/archives/html/advisory-board/ - login/pass "member"/"S3gurtasunG4be!"

--_004_D050EC1F12123larskurthcitrixcom_--


