From win-pv-devel-bounces@lists.xenproject.org Fri Sep 08 13:29:33 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Sep 2017 13:29:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dqJLf-0004mL-IT; Fri, 08 Sep 2017 13:29:31 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4176ffd6a=owen.smith@citrix.com>)
 id 1dqJLe-0004mA-DZ
 for win-pv-devel@lists.xenproject.org; Fri, 08 Sep 2017 13:29:30 +0000
Received: from [193.109.254.147] by server-7.bemta-6.messagelabs.com id
 ED/70-03610-93B92B95; Fri, 08 Sep 2017 13:29:29 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFIsWRWlGSWpSXmKPExsXitHSDva7l7E2
 RBg/28lj8WZzowOhx+MMVlgDGKNbMvKT8igTWjFnPZzEWLGKvaDuynqmB8SVrFyMnh4SAv8T8
 qXeZQGw2AVmJjys/M4PYIgLqEvs+bwWLMwuoSVzf3wVUz8EhLBAgcexuPkiYRUBFou3/ArASX
 gEriR/PL7NAjJSTmLz4EiOIzSlgLTHnz3WwVUJANatmbmeHsJUkvi1+wQzRKyhxcuYTFohVEh
 IHX7xgnsDIOwtJahaS1AJGplWM6sWpRWWpRbqmeklFmekZJbmJmTm6hgZmermpxcWJ6ak5iUn
 Fesn5uZsYgWHDAAQ7GKdf9j/EKMnBpCTKK9OzKVKILyk/pTIjsTgjvqg0J7X4EKMMB4eSBK/k
 LKCcYFFqempFWmYOMIBh0hIcPEoivLNmAqV5iwsSc4sz0yFSpxgtOZ6suPiHiePGw+tAsuPm3
 T9MQix5+XmpUuK870AaBEAaMkrz4MbBouwSo6yUMC8j0IFCPAWpRbmZJajyrxjFORiVhHkfgU
 zhycwrgdv6CuggJqCDSp5vADmoJBEhJdXAuMxw17/Ht80f837pk1CbVu6T3xKn9aI5NEie5eD
 zx5mXOnyMkyZIrjwrcqLig4+d++IFkaWy5s4Jz2a42Zw0l7x8u4Pn0M6c+QvC3xo6cv85cCp5
 mqRvSMPeU62Fx7X7jrk1HjmbJWQkO62xZ+2Z6sCyXRdUfPStEyNkT726/Cq32OeUugKLEktxR
 qKhFnNRcSIAmSspC60CAAA=
X-Env-Sender: prvs=4176ffd6a=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1504877367!104878877!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 52133 invoked from network); 8 Sep 2017 13:29:28 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-8.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 8 Sep 2017 13:29:28 -0000
X-IronPort-AV: E=Sophos;i="5.42,361,1500940800"; d="scan'208";a="447141765"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 8 Sep 2017 14:29:12 +0100
Message-ID: <20170908132912.18148-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170908132912.18148-1-owen.smith@citrix.com>
References: <20170908132912.18148-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/2] Handle DBT_DEVICEREMOVEPENDING and
	DBT_DEVICEREMOVECOMPLETE
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKV2hlbiBzdXJwcmlzZSBy
ZW1vdmVkLCBEQlRfREVWSUNFUVVFUllSRU1PVkUgaXMgbm90IGNhbGxlZCwgYW5kCnRoZSBoYW5k
bGVzIG9wZW5lZCBieSB0aGUgc2VydmljZSBuZWVkIGNsb3NpbmcgYmVmb3JlIHRoZSBkcml2ZXIK
Z2V0cyB0aGUgSVJQX01OX1JFTU9WRV9ERVZJQ0UgSXJwLgoKU2lnbmVkLW9mZi1ieTogT3dlbiBT
bWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIG1zYnVpbGQuYmF0ICAgICAgICAgICB8
IDAKIHNyYy9tb25pdG9yL21vbml0b3IuYyB8IDIgKysKIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IG1zYnVpbGQuYmF0CgpkaWZm
IC0tZ2l0IGEvbXNidWlsZC5iYXQgYi9tc2J1aWxkLmJhdApvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9zcmMvbW9uaXRvci9tb25pdG9yLmMgYi9zcmMvbW9uaXRv
ci9tb25pdG9yLmMKaW5kZXggODlmNWY1Ni4uMDhhZTBmMiAxMDA2NDQKLS0tIGEvc3JjL21vbml0
b3IvbW9uaXRvci5jCisrKyBiL3NyYy9tb25pdG9yL21vbml0b3IuYwpAQCAtMTEyMiw2ICsxMTIy
LDggQEAgTW9uaXRvckN0cmxIYW5kbGVyRXgoCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIERCVF9ERVZJQ0VRVUVSWVJFTU9WRToKKyAgICAgICAgY2FzZSBEQlRfREVWSUNFUkVN
T1ZFUEVORElORzoKKyAgICAgICAgY2FzZSBEQlRfREVWSUNFUkVNT1ZFQ09NUExFVEU6CiAgICAg
ICAgICAgICBpZiAoSGVhZGVyLT5kYmNoX2RldmljZXR5cGUgPT0gREJUX0RFVlRZUF9IQU5ETEUp
IHsKICAgICAgICAgICAgICAgICBQREVWX0JST0FEQ0FTVF9IQU5ETEUgRGV2aWNlID0gRXZlbnRE
YXRhOwogCi0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 08 13:29:33 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Sep 2017 13:29:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dqJLf-0004mU-Jb; Fri, 08 Sep 2017 13:29:31 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4176ffd6a=owen.smith@citrix.com>)
 id 1dqJLe-0004m9-FY
 for win-pv-devel@lists.xenproject.org; Fri, 08 Sep 2017 13:29:30 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
 11/BE-02229-93B92B95; Fri, 08 Sep 2017 13:29:29 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRWlGSWpSXmKPExsXitHRDpK7l7E2
 RBnuX81n8WZzowOhx+MMVlgDGKNbMvKT8igTWjDeHfzAX9EhUNGxZz9zAeFGoi5GTQ0LAX6Jt
 32J2EJtNQFbi48rPzCC2iIC6xL7PW5lAbGYBNYnr+7tYQWxhAVOJ38sug9WzCKhI7Pr8hLGLk
 YODV8BKYvfyZIiRchKTF19iBLGFBJQkvi1+ATaSV0BQ4uTMJywQIyUkDr54wTyBkXsWktQsJK
 kFjEyrGDWKU4vKUot0DQ30kooy0zNKchMzc4A8Y73c1OLixPTUnMSkYr3k/NxNjMBAqGdgYNz
 BuK3L+RCjJAeTkiivTM+mSCG+pPyUyozE4oz4otKc1OJDjDIcHEoSvHNmAuUEi1LTUyvSMnOA
 IQmTluDgURLhnQWS5i0uSMwtzkyHSJ1i1OXouHn3D5MQS15+XqqUOO87kCIBkKKM0jy4EbD4u
 MQoKyXMy8jAwCDEU5BalJtZgir/ilGcg1FJmPcRyBSezLwSuE2vgI5gAjqi5PkGkCNKEhFSUg
 2MaWsE75uFbZfxWqm3Yl6PZ95ZTq2ZATrp8/b+u3DxYOtkHvaP1RVBz+4sXMx40/v9t/V7Pr1
 a8jP+jQ5LuPA2x73txzbsEJrzWuMGR76Tt/6rfNmkznS3Ge9sL2tW7OLbvUNoQ2799ZT2Jj5u
 77mff9U8iHgmuiOZP8FGLl7pwZaHt3L47r9ersRSnJFoqMVcVJwIAKgUkIiKAgAA
X-Env-Sender: prvs=4176ffd6a=owen.smith@citrix.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1504877367!113154266!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23521 invoked from network); 8 Sep 2017 13:29:28 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 8 Sep 2017 13:29:28 -0000
X-IronPort-AV: E=Sophos;i="5.42,361,1500940800"; d="scan'208";a="438998539"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 8 Sep 2017 14:29:11 +0100
Message-ID: <20170908132912.18148-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/2] Destroy all handles on FdoD0ToD3
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2luY2UgdGhlIFN0cmVh
bVdvcmtlciBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgWEVOQlVTX0NPTlMgaW50ZXJmYWNlLAp4
ZW5idXMgd2lsbCBCVUdfT04gaWYgdGhlIGhhbmRsZXMgYXJlIG5vdCBjbGVhbmVkIHVwIGJlZm9y
ZSBwb3dlciBkb3duLgpUaGUgc2VydmljZSBzaG91bGQgY2xvc2UgYWxsIGhhbmRsZXMgaW4gcmVz
cG9uc2UgdG8gYSBEQlRfREVWSUNFUVVFUllSRU1PVkUKbm90aWZpY2F0aW9uLCBidXQgdGhpcyBt
YXkgbm90IGJlIGlzc3VlZCBvbiBzeXN0ZW0gcG93ZXIgZG93bi4KClNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9mZG8uYyB8
IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t
LS0KIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zkby5jIGIvc3JjL3hlbmNvbnMvZmRvLmMKaW5kZXggNTk5
Mjc3Ni4uMWU2NjBlYSAxMDA2NDQKLS0tIGEvc3JjL3hlbmNvbnMvZmRvLmMKKysrIGIvc3JjL3hl
bmNvbnMvZmRvLmMKQEAgLTkwMiw2ICs5MDIsMTEgQEAgZmFpbDE6CiAgICAgcmV0dXJuIHN0YXR1
czsKIH0KIAorc3RhdGljIFZPSUQKK0Zkb0Rlc3Ryb3lBbGxIYW5kbGVzKAorICAgIElOICBQWEVO
Q09OU19GRE8gICAgRmRvCisgICAgKTsKKwogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCB0b3Vj
aCBwYWdlYWJsZSBjb2RlIG9yIGRhdGEKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECiBG
ZG9EMFRvRDMoCkBAIC05MjAsNiArOTI1LDggQEAgRmRvRDBUb0QzKAogI3ByYWdtYSBwcmVmYXN0
KHN1cHByZXNzOjI4MTIzKQogICAgIChWT0lEKSBJb1NldERldmljZUludGVyZmFjZVN0YXRlKCZE
eC0+TGluaywgRkFMU0UpOwogCisgICAgRmRvRGVzdHJveUFsbEhhbmRsZXMoRmRvKTsKKwogICAg
IFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQzOwogICAgIFBvU2V0UG93ZXJT
dGF0ZShGZG8tPkR4LT5EZXZpY2VPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgIERldmljZVBv
d2VyU3RhdGUsCkBAIC0yMTc1LDYgKzIxODIsMjMgQEAgZmFpbDE6CiAgICAgcmV0dXJuIE5VTEw7
CiB9CiAKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb0Rlc3Ryb3lIYW5kbGUoCisgICAg
SU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCisgICAgSU4gIFBGRE9fSEFORExFICAgICBIYW5kbGUK
KyAgICApCit7CisgICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnksIHNpemVvZiAo
TElTVF9FTlRSWSkpOworCisgICAgU3RyZWFtRGVzdHJveShIYW5kbGUtPlN0cmVhbSk7CisgICAg
SGFuZGxlLT5TdHJlYW0gPSBOVUxMOworCisgICAgSGFuZGxlLT5GaWxlT2JqZWN0ID0gTlVMTDsK
KworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoSGFuZGxlLCBzaXplb2YgKEZET19IQU5ETEUpKSk7
CisgICAgX19GZG9GcmVlKEhhbmRsZSk7Cit9CisKIHN0YXRpYyBWT0lECiBGZG9EZXN0cm95SGFu
ZGxlKAogICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLApAQCAtMjE4NywxNyArMjIxMSw0NyBA
QCBGZG9EZXN0cm95SGFuZGxlKAogICAgIFJlbW92ZUVudHJ5TGlzdCgmSGFuZGxlLT5MaXN0RW50
cnkpOwogICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOwogCi0g
ICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnksIHNpemVvZiAoTElTVF9FTlRSWSkp
OwotCiAgICAgVHJhY2UoIiVwXG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOwogCi0gICAgU3RyZWFt
RGVzdHJveShIYW5kbGUtPlN0cmVhbSk7Ci0gICAgSGFuZGxlLT5TdHJlYW0gPSBOVUxMOworICAg
IF9fRmRvRGVzdHJveUhhbmRsZShGZG8sIEhhbmRsZSk7Cit9CiAKLSAgICBIYW5kbGUtPkZpbGVP
YmplY3QgPSBOVUxMOworc3RhdGljIFZPSUQKK0Zkb0Rlc3Ryb3lBbGxIYW5kbGVzKAorICAgIElO
ICBQWEVOQ09OU19GRE8gICAgRmRvCisgICAgKQoreworICAgIEtJUlFMICAgICAgICAgICAgICAg
SXJxbDsKKyAgICBMSVNUX0VOVFJZICAgICAgICAgIExpc3RIZWFkOworICAgIFBMSVNUX0VOVFJZ
ICAgICAgICAgTGlzdEVudHJ5OworICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxlOwogCi0g
ICAgQVNTRVJUKElzWmVyb01lbW9yeShIYW5kbGUsIHNpemVvZiAoRkRPX0hBTkRMRSkpKTsKLSAg
ICBfX0Zkb0ZyZWUoSGFuZGxlKTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkxpc3RIZWFkKTsK
KworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJcnFsKTsKKworICAg
IExpc3RFbnRyeSA9IEZkby0+SGFuZGxlTGlzdC5GbGluazsKKyAgICBpZiAoIUlzTGlzdEVtcHR5
KCZGZG8tPkhhbmRsZUxpc3QpKSB7CisgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRmRvLT5IYW5k
bGVMaXN0KTsKKyAgICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkhhbmRsZUxpc3QpOwor
ICAgICAgICBBcHBlbmRUYWlsTGlzdCgmTGlzdEhlYWQsIExpc3RFbnRyeSk7CisgICAgfQorCisg
ICAgS2VSZWxlYXNlU3BpbkxvY2soJkZkby0+SGFuZGxlTG9jaywgSXJxbCk7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIExpc3RFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZMaXN0SGVhZCk7Cisg
ICAgICAgIGlmIChMaXN0RW50cnkgPT0gJkxpc3RIZWFkKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgSGFuZGxlID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGRE9fSEFORExFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMaXN0RW50cnkpOworCisgICAgICAgIFRyYWNlKCIlcFxuIiwgSGFu
ZGxlLT5GaWxlT2JqZWN0KTsKKworICAgICAgICBfX0Zkb0Rlc3Ryb3lIYW5kbGUoRmRvLCBIYW5k
bGUpOworICAgIH0KIH0KIAogc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCi0tIAoy
LjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Sun Sep 10 01:28:08 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 10 Sep 2017 01:28:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dqr2c-0005OL-3y; Sun, 10 Sep 2017 01:28:06 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <manand@us.ibm.com>) id 1dqpsS-0005Bv-TQ
 for win-pv-devel@lists.xenproject.org; Sun, 10 Sep 2017 00:13:33 +0000
Received: from [85.158.137.68] by server-11.bemta-3.messagelabs.com id
 C2/D4-01812-CA384B95; Sun, 10 Sep 2017 00:13:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPKsWRWlGSWpSXmKPExsUyZfE8Vt1VzVs
 iDQ7NMrb4szjRgdHj8IcrLAGMUayZeUn5FQmsGV/2H2Uq2ClaseTkVbYGxiahLkYuDiGBq4wS
 nQ1tjBDOSiaJvw+PskA4Rxkl9uzYzwbh7GaUONg5nxXCOcso8b9lJ5DDycErIChxcuYTFhBbW
 MBQ4uDZD8wgtoiAqsS15ceAujk42ATUJFquFYOEWQRUJO4/uQzWKiHgIXF2/iIWCNtW4t+8dU
 wQtojEpksH2CFsYYk/S68wQthCEqcXnwUbzyyQJfFu/2xGkPHMAtISy/9xQJToSNz4uA5qZKl
 E668zTCAnSwicZpL4dfkrG0TCReLL82NQM80lbt5YBXWPkcSGdX1gJ/MKxEtc7DaGCGdJ/DrR
 DVUuJ/H44QPGCYxSs5A8PwvJRbMQLoIIa0ssW/iaGcLWkti8rYkVVRykXFNi94pcJJ0LGDlWM
 aoXpxaVpRbpGuslFWWmZ5TkJmbm6BoaGOvlphYXJ6an5iQmFesl5+duYgQmAAYg2MHY/MXpEK
 MkB5OSKG9O6JZIIb6k/JTKjMTijPii0pzU4kOMMhwcShK8mU1AOcGi1PTUirTMHGAqgklLcPA
 oifAyg6R5iwsSc4sz0yFSpxgtOTpu3v3DxLEBTO4DkUIsefl5qVLivC0gDQIgDRmleXDjYOny
 EqOslDAvI9CBQjwFqUW5mSWo8q8YxTkYlYR5+0Cm8GTmlcBtfQV0EBPQQSXPN4AcVJKIkJJqY
 AyRfBn/6Y8DW5jvduUUx+Tah2e3deu0F7iorl78bKss/9uvz3/zp0kf3TlZ4Z3JDsvEvc9kuu
 X2uKdp/39VWsdj2Vxn01Z5UsdmQfFTy7jegJesxQ4F6bWb7Z18D70yqSua6Gf0Zv22N9sEHpw
 uFj35YMO9VW0/fPr3ygZmSlR8Kz34UGmbhRJLcUaioRZzUXEiAEjQ6vKSAwAA
X-Env-Sender: manand@us.ibm.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1505002409!113298488!1
X-Originating-IP: [148.163.158.5]
X-SpamReason: No, hits=0.9 required=7.0 tests=HTML_20_30,HTML_MESSAGE,
 UNPARSEABLE_RELAY
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48385 invoked from network); 10 Sep 2017 00:13:30 -0000
Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com)
 (148.163.158.5)
 by server-10.tower-31.messagelabs.com with AES256-SHA encrypted SMTP;
 10 Sep 2017 00:13:30 -0000
Received: from pps.filterd (m0098420.ppops.net [127.0.0.1])
 by mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id
 v8A0933Y090303
 for <win-pv-devel@lists.xenproject.org>; Sat, 9 Sep 2017 20:13:29 -0400
Received: from smtp.notes.na.collabserv.com (smtp.notes.na.collabserv.com
 [192.155.248.67])
 by mx0b-001b2d01.pphosted.com with ESMTP id 2cvcg64v93-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <win-pv-devel@lists.xenproject.org>; Sat, 09 Sep 2017 20:13:28 -0400
Received: from localhost
 by smtp.notes.na.collabserv.com with smtp.notes.na.collabserv.com ESMTP
 for <win-pv-devel@lists.xenproject.org> from <manand@us.ibm.com>;
 Sun, 10 Sep 2017 00:13:28 -0000
Received: from us1a3-smtp06.a3.dal06.isc4sb.com (10.146.103.243)
 by smtp.notes.na.collabserv.com (10.106.227.16) with
 smtp.notes.na.collabserv.com ESMTP; Sun, 10 Sep 2017 00:13:26 -0000
Received: from us1a3-mail102.a3.dal06.isc4sb.com ([10.146.21.228])
 by us1a3-smtp06.a3.dal06.isc4sb.com
 with ESMTP id 2017091000132578-452617 ;
 Sun, 10 Sep 2017 00:13:25 +0000 
MIME-Version: 1.0
To: win-pv-devel@lists.xenproject.org
From: "Mala Anand" <manand@us.ibm.com>
Date: Sat, 9 Sep 2017 19:12:41 -0500
X-KeepSent: CF6198A6:7650F0E8-00258196:00826FBA;
 type=4; name=$KeepSent
X-Mailer: IBM Notes Release 9.0.1EXT SHF766 December 14, 2016
X-LLNOutbound: False
X-Disclaimed: 29479
X-TNEFEvaluated: 1
x-cbid: 17091000-0327-0000-0000-000002D4A0D7
X-IBM-SpamModules-Scores: BY=0; FL=0; FP=0; FZ=0; HX=0; KW=0; PH=0;
 SC=0.423878; ST=0; TS=0; UL=0; ISC=; MB=0.037534
X-IBM-SpamModules-Versions: BY=3.00007698; HX=3.00000241; KW=3.00000007;
 PH=3.00000004; SC=3.00000227; SDB=6.00914730; UDB=6.00459174; IPR=6.00694960; 
 BA=6.00005578; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000;
 ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017087; XFM=3.00000015;
 UTC=2017-09-10 00:13:27
X-IBM-AV-DETECTION: SAVI=unsuspicious REMOTE=unsuspicious XFE=unused
X-IBM-AV-VERSION: SAVI=2017-09-09 21:07:30 - 6.00007304
x-cbparentid: 17091000-0328-0000-0000-00001678825E
Message-Id: <OFCF6198A6.7650F0E8-ON00258196.00826FBA-86258197.0001295F@notes.na.collabserv.com>
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, ,
 definitions=2017-09-09_15:, , signatures=0
X-Proofpoint-Spam-Reason: safe
X-Mailman-Approved-At: Sun, 10 Sep 2017 01:28:05 +0000
Subject: [win-pv-devel] Windows 2016 network performance on Xen
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4024009329599732321=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>


--===============4024009329599732321==
Content-type: multipart/alternative; 
	Boundary="0__=8FBB0B05DF11E92A8f9e8a93df938690918c8FBB0B05DF11E92A"
Content-Disposition: inline


--0__=8FBB0B05DF11E92A8f9e8a93df938690918c8FBB0B05DF11E92A
Content-Transfer-Encoding: quoted-printable
Content-type: text/plain; charset=US-ASCII



I have two VMs running Windows 2016 on  two different  hosts,  with single
tcp stream iperf3, I can get only ~1 Gbps.    I am using Windows PV driver
version 8.1.0.42.

 If I run iperf3 server on a Linux Ubuntu VM, iperf3 client on Windows 2016
I get ~3Gbps. If I reverse server and client (server on Windows and client
on  Linux VM), I get only ~1 Gbps. So clearly the problem is on Windows
receive side path.

Netsh int tcp show global has

RSS, RSC are enabled.
Auto tuning is set to experimental  (tried all variations, disabled,  set
window size in registry etc.,)

Netsh int tcp show supplemental has
I set congestion control to ctcp

I still don't get more than 1 Gbps.

I saw Paul Durrant's presentation where he showed 8 Gbps on two VMs running
Windows 10 on the same host.  So I tried two VMs running Windows 2016 on
the same host, I still get only 1 Gbps.

Is this a Windows 2016 specific problem or does Windows 2016 and/or Dom0
Xen need tunings?



Thanks,
    Mala

--0__=8FBB0B05DF11E92A8f9e8a93df938690918c8FBB0B05DF11E92A
Content-Transfer-Encoding: quoted-printable
Content-type: text/html; charset=US-ASCII
Content-Disposition: inline

<html><body><p><font size=3D"2">I have two VMs running Windows 2016 on  two=
 different  hosts,  with single tcp stream iperf3, I can get only ~1 Gbps. =
   I am using Windows PV driver version 8.1.0.42.</font><br><br><font size=
=3D"2"> If I run iperf3 server on a Linux Ubuntu VM, iperf3 client on Windo=
ws 2016 I get ~3Gbps. If I reverse server and client (server on Windows and=
 client on  Linux VM), I get only ~1 Gbps. So clearly the problem is on Win=
dows receive side path.</font><br><br><font size=3D"2">Netsh int tcp show g=
lobal has</font><br><br><font size=3D"2">RSS, RSC are enabled.</font><br><f=
ont size=3D"2">Auto tuning is set to experimental  (tried all variations, d=
isabled,  set window size in registry etc.,)</font><br><br><font size=3D"2"=
>Netsh int tcp show supplemental has</font><br><font size=3D"2">I set conge=
stion control to ctcp</font><br><br><font size=3D"2">I still don't get more=
 than 1 Gbps.</font><br><br><font size=3D"2">I saw Paul Durrant's presentat=
ion where he showed 8 Gbps on two VMs running Windows 10 on the same host. =
 So I tried two VMs running Windows 2016 on the same host, I still get only=
 1 Gbps. </font><br><br><font size=3D"2">Is this a Windows 2016 specific pr=
oblem or does Windows 2016 and/or Dom0 Xen need tunings?</font><br><br><fon=
t size=3D"2"><br><br>Thanks,<br>    Mala<br></font><BR>
</body></html>

--0__=8FBB0B05DF11E92A8f9e8a93df938690918c8FBB0B05DF11E92A--



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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

--===============4024009329599732321==--



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 15:04:51 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 15:04:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drQGY-0008H8-AD; Mon, 11 Sep 2017 15:04:50 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=42008d454=Paul.Durrant@citrix.com>)
 id 1drQGX-0008Gx-1s
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 15:04:49 +0000
Received: from [85.158.137.68] by server-11.bemta-3.messagelabs.com id
 7F/A3-01812-016A6B95; Mon, 11 Sep 2017 15:04:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAKsWRWlGSWpSXmKPExsWyU9JRQpd/2bZ
 Ig6/zuCz+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrRuOP6ywF0/8zVSxqm8bUwLjiLlMXIyeHhECQ
 xM5VK9lAbDYBHYmlR+eDxUUE8iSm/TgPFhcWcJbYsOUmM0TcReL5mlnsELaRxJa1x8FsFgFVi
 SdP7oDV8wq4S/R/fghWLyQQL/FrTzsLiM0pkCAx6c0/MJtRQFbiS+NqsBpmAXGJW0/mQ90jIL
 Fkz3lmCFtU4uXjf6wQtoHE1qX7WCDqcyXeTz7ECrFLUOLkzCcsExgFZyEZNQtJ2SwkZRBxHYk
 Fuz+xQdjaEssWvmaGsc8ceMyELL6AkX0Vo0ZxalFZapGusYFeUlFmekZJbmJmjq6hgbFebmpx
 cWJ6ak5iUrFecn7uJkZgXNQzMDDuYOw84XeIUZKDSUmU993xLZFCfEn5KZUZicUZ8UWlOanFh
 xhlODiUJHh/LtkWKSRYlJqeWpGWmQOMUJi0BAePkghvEkiat7ggMbc4Mx0idYrRnuPYpst/mD
 im3bwLJDeAyX0gUoglLz8vVUqc128pUJsASFtGaR7cUFhCucQoKyXMy8jAwCDEU5BalJtZgir
 /ilGcg1FJmFcRZApPZl4J3O5XQGcxAZ3Fc2kLyFkliQgpqQbGiY1sa0M1jsTzpMzqYejLtuJb
 8L2g79Er66nrynyslh1Zr569QPJhlMex607ymbXnz+6vX7bvm/DFyTtsdi4OS5rwUnSVh/Emv
 UNfVipLZjIksiRvmDeVj5f3/cpkLhfef51dyk46tXOEi5reaeQ8ln3FwRV+r71J8tlfhQy2xW
 +/S/vwi3krsRRnJBpqMRcVJwIAnQaIASMDAAA=
X-Env-Sender: prvs=42008d454=Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-31.messagelabs.com!1505142286!106618363!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.1 required=7.0 tests=BODY_RANDOM_LONG,
 HTML_90_100,HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 34796 invoked from network); 11 Sep 2017 15:04:47 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-16.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 15:04:47 -0000
X-IronPort-AV: E=Sophos;i="5.42,378,1500940800"; d="scan'208,217";a="52616225"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: 'Mala Anand' <manand@us.ibm.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Windows 2016 network performance on Xen
Thread-Index: AQHTKdQYRtICzMu5GkqAoKJnkQaRU6Kvx1AA
Date: Mon, 11 Sep 2017 15:04:01 +0000
Message-ID: <bed4987a46b14aabadee216db739504a@AMSPEX02CL03.citrite.net>
References: <OFCF6198A6.7650F0E8-ON00258196.00826FBA-86258197.0001295F@notes.na.collabserv.com>
In-Reply-To: <OFCF6198A6.7650F0E8-ON00258196.00826FBA-86258197.0001295F@notes.na.collabserv.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Subject: Re: [win-pv-devel] Windows 2016 network performance on Xen
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3257005501267790982=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

--===============3257005501267790982==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_bed4987a46b14aabadee216db739504aAMSPEX02CL03citritenet_"

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

Mala,

  The RSS changes did not arrive until the 8.2 release of the drivers, but =
for a single stream workload (which it appears you are using) these would n=
ot help anyway.

  In my presentation I was using Ixia Chariot as my workload as, in my expe=
rience, this is one of the few benchmarks that actually works well on Windo=
ws. I believe iperf3 is still using synchronous sockets which have never wo=
rked well on Windows, whereas IIRC Chariot uses overlapped I/O. I'm not fam=
iliar with using iperf3 so I can't suggest the best way to tune it but you =
should probably wireshark your TCP streams when running in both directions =
to see what sort of difference you are seeing.

  Cheers,

    Paul

From: win-pv-devel [mailto:win-pv-devel-bounces@lists.xenproject.org] On Be=
half Of Mala Anand
Sent: 09 September 2017 17:13
To: win-pv-devel@lists.xenproject.org
Subject: [win-pv-devel] Windows 2016 network performance on Xen


I have two VMs running Windows 2016 on two different hosts, with single tcp=
 stream iperf3, I can get only ~1 Gbps. I am using Windows PV driver versio=
n 8.1.0.42.

If I run iperf3 server on a Linux Ubuntu VM, iperf3 client on Windows 2016 =
I get ~3Gbps. If I reverse server and client (server on Windows and client =
on Linux VM), I get only ~1 Gbps. So clearly the problem is on Windows rece=
ive side path.

Netsh int tcp show global has

RSS, RSC are enabled.
Auto tuning is set to experimental (tried all variations, disabled, set win=
dow size in registry etc.,)

Netsh int tcp show supplemental has
I set congestion control to ctcp

I still don't get more than 1 Gbps.

I saw Paul Durrant's presentation where he showed 8 Gbps on two VMs running=
 Windows 10 on the same host. So I tried two VMs running Windows 2016 on th=
e same host, I still get only 1 Gbps.

Is this a Windows 2016 specific problem or does Windows 2016 and/or Dom0 Xe=
n need tunings?



Thanks,
Mala

--_000_bed4987a46b14aabadee216db739504aAMSPEX02CL03citritenet_
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"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 15">
<meta name=3D"Originator" content=3D"Microsoft Word 15">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D32AD4.84006C90"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"false" DefSem=
iHidden=3D"false" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=
=3D"371">
<w:LsdException Locked=3D"false" Priority=3D"0" QFormat=3D"true" Name=3D"No=
rmal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 6"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 7"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 8"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Normal Indent"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"footnote text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"annotation text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"header"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"footer"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"index heading"/>
<w:LsdException Locked=3D"false" Priority=3D"35" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"table of figures"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"envelope address"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"envelope return"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"footnote reference"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"annotation reference"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"line number"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"page number"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"endnote reference"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"endnote text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"table of authorities"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"macro"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"toa heading"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Bullet"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Number"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Bullet 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Bullet 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Bullet 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Bullet 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Number 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Number 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Number 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Number 5"/>
<w:LsdException Locked=3D"false" Priority=3D"10" QFormat=3D"true" Name=3D"T=
itle"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Closing"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Signature"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"true" UnhideW=
henUsed=3D"true" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text Indent"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Continue"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Continue 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Continue 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Continue 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"List Continue 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Message Header"/>
<w:LsdException Locked=3D"false" Priority=3D"11" QFormat=3D"true" Name=3D"S=
ubtitle"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Salutation"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Date"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text First Indent"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text First Indent 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Note Heading"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text Indent 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Body Text Indent 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Block Text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Hyperlink"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"FollowedHyperlink"/>
<w:LsdException Locked=3D"false" Priority=3D"22" QFormat=3D"true" Name=3D"S=
trong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" QFormat=3D"true" Name=3D"E=
mphasis"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Document Map"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Plain Text"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"E-mail Signature"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Top of Form"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Bottom of Form"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Normal (Web)"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Acronym"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Address"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Cite"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Code"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Definition"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Keyboard"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Preformatted"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Sample"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Typewriter"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"HTML Variable"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Normal Table"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"annotation subject"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"No List"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Outline List 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Outline List 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Outline List 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Simple 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Simple 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Simple 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Classic 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Classic 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Classic 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Classic 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Colorful 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Colorful 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Colorful 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Columns 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Columns 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Columns 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Columns 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Columns 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 6"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 7"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Grid 8"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 4"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 5"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 6"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 7"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table List 8"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table 3D effects 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table 3D effects 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table 3D effects 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Contemporary"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Elegant"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Professional"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Subtle 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Subtle 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Web 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Web 2"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Web 3"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Balloon Text"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"true=
" Name=3D"Table Theme"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" Name=3D"Placeholder Te=
xt"/>
<w:LsdException Locked=3D"false" Priority=3D"1" QFormat=3D"true" Name=3D"No=
 Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1"/=
>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2"/=
>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading"/=
>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 1"/>
<w:LsdException Locked=3D"false" SemiHidden=3D"true" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" QFormat=3D"true" Name=3D"L=
ist Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" QFormat=3D"true" Name=3D"Q=
uote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" QFormat=3D"true" Name=3D"I=
ntense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 1=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 2=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 3=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 4=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 5=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accent =
6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accent =
6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1 A=
ccent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2 A=
ccent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent 6=
"/>
<w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading A=
ccent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Acce=
nt 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" QFormat=3D"true" Name=3D"S=
ubtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" QFormat=3D"true" Name=3D"I=
ntense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" QFormat=3D"true" Name=3D"S=
ubtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" QFormat=3D"true" Name=3D"I=
ntense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" QFormat=3D"true" Name=3D"B=
ook Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true" Unhide=
WhenUsed=3D"true" QFormat=3D"true" Name=3D"TOC Heading"/>
<w:LsdException Locked=3D"false" Priority=3D"41" Name=3D"Plain Table 1"/>
<w:LsdException Locked=3D"false" Priority=3D"42" Name=3D"Plain Table 2"/>
<w:LsdException Locked=3D"false" Priority=3D"43" Name=3D"Plain Table 3"/>
<w:LsdException Locked=3D"false" Priority=3D"44" Name=3D"Plain Table 4"/>
<w:LsdException Locked=3D"false" Priority=3D"45" Name=3D"Plain Table 5"/>
<w:LsdException Locked=3D"false" Priority=3D"40" Name=3D"Grid Table Light"/=
>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark"=
/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Light=
 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dark =
Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Color=
ful Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Color=
ful Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark"=
/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 1"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 2"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 3"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 4"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 5"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Light=
 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Accen=
t 6"/>
<w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dark =
Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Color=
ful Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Color=
ful Accent 6"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073732485 9 0 511 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;
	mso-fareast-font-family:Calibri;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;
	text-underline:single;}
p
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;
	mso-fareast-font-family:Calibri;}
p.msonormal0, li.msonormal0, div.msonormal0
	{mso-style-name:msonormal;
	mso-style-unhide:no;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;
	mso-fareast-font-family:Calibri;}
span.EmailStyle19
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri",sans-serif;
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman",serif;}
</style><![endif]--><!--[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-GB" link=3D"#0563C1" vlink=3D"#954F72" style=3D"tab-interv=
al:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US">Mala,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><span style=3D"mso-spacerun:yes">&nbsp;
</span>The RSS changes did not arrive until the 8.2 release of the drivers,=
 but for a single stream workload (which it appears you are using) these wo=
uld not help anyway.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><span style=3D"mso-spacerun:yes">&nbsp;
</span>In my presentation I was using Ixia Chariot as my workload as, in my=
 experience, this is one of the few benchmarks that actually works well on =
Windows. I believe iperf3 is still using synchronous sockets which have nev=
er worked well on Windows, whereas
 IIRC Chariot uses overlapped I/O. I&#8217;m not familiar with using iperf3=
 so I can&#8217;t suggest the best way to tune it but you should probably
<span class=3D"SpellE">wireshark</span> your TCP streams when running in bo=
th directions to see what sort of difference you are seeing.<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Cheers,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D;mso-fareast-=
language:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" face=3D"Calibri"><span lang=3D"E=
N-US" style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;=
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-ansi-language:EN-US=
;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Calibri"=
><span lang=3D"EN-US" style=3D"font-size:11.0pt;font-family:&quot;Calibri&q=
uot;,sans-serif;mso-fareast-font-family:&quot;Times New Roman&quot;;mso-ans=
i-language:EN-US">
 win-pv-devel [mailto:win-pv-devel-bounces@lists.xenproject.org] <b><span s=
tyle=3D"font-weight:bold">On Behalf Of
</span></b>Mala Anand<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 09 September 2017 17:1=
3<br>
<b><span style=3D"font-weight:bold">To:</span></b> win-pv-devel@lists.xenpr=
oject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] Wind=
ows 2016 network performance on Xen<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" face=3D"Times New Roman"><span styl=
e=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p style=3D"margin-bottom:12.0pt"><font size=3D"2" face=3D"Times New Roman"=
><span style=3D"font-size:10.0pt">I have two VMs running Windows 2016 on tw=
o different hosts, with single tcp stream iperf3, I can get only ~1 Gbps. I=
 am using Windows PV driver version 8.1.0.42.</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">If I run iperf3 server on=
 a Linux Ubuntu VM, iperf3 client on Windows 2016 I get ~3Gbps. If I revers=
e server and client (server on Windows and client on Linux VM), I get only =
~1 Gbps. So clearly the problem is on
 Windows receive side path.</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">Netsh int tcp show global=
 has</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">RSS, RSC are enabled.</sp=
an></font><br>
<font size=3D"2"><span style=3D"font-size:10.0pt">Auto tuning is set to exp=
erimental (tried all variations, disabled, set window size in registry etc.=
,)</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">Netsh int tcp show supple=
mental has</span></font><br>
<font size=3D"2"><span style=3D"font-size:10.0pt">I set congestion control =
to ctcp</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">I still don't get more th=
an 1 Gbps.</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">I saw Paul Durrant's pres=
entation where he showed 8 Gbps on two VMs running Windows 10 on the same h=
ost. So I tried two VMs running Windows 2016 on the same host, I still get =
only 1 Gbps.
</span></font><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt">Is this a Windows 2016 sp=
ecific problem or does Windows 2016 and/or Dom0 Xen need tunings?</span></f=
ont><br>
<br>
<font size=3D"2"><span style=3D"font-size:10.0pt"><br>
<br>
Thanks,<br>
Mala</span></font><o:p></o:p></p>
</div>
</div>
</body>
</html>

--_000_bed4987a46b14aabadee216db739504aAMSPEX02CL03citritenet_--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

--===============3257005501267790982==--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 15:10:36 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 15:10:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drQM8-0000YI-0F; Mon, 11 Sep 2017 15:10:36 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=42008d454=Paul.Durrant@citrix.com>)
 id 1drQM7-0000YB-64
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 15:10:35 +0000
Received: from [193.109.254.147] by server-3.bemta-6.messagelabs.com id
 E0/40-03093-A67A6B95; Mon, 11 Sep 2017 15:10:34 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrEIsWRWlGSWpSXmKPExsWyU9JRQjdz+bZ
 Ig65HxhZ/Fic6MHoc/nCFJYAxijUzLym/IoE14/ipT2wFn3UqJp3sZ29gXKHTxcjJISHgJ/Fi
 01QmEJtNQEdi6dH5YLaIQIHE9/fzmEFsZgE1iev7u1i7GDk4hAU8gOqDIEo8JfYenMsIYRtJX
 D7/HKycRUBV4vuU3WA2r4C7xNsNnWAjhQSsJFbN3M4OYnMKWEvM+XOdFcRmFJCV+NK4GmqVuM
 StJxAnSAgISCzZc54ZwhaVePn4HyuEbSCxdek+FpBzmAU0Jdbv0odoVZSY0v2QHWKtoMTJmU9
 YJjAKz0IydRZCxywkHbOQdCxgZFnFqF6cWlSWWqRrqpdUlJmeUZKbmJmja2hgppebWlycmJ6a
 k5hUrJecn7uJERjyDECwg3H6Zf9DjJIcTEqivO+Ob4kU4kvKT6nMSCzOiC8qzUktPsQow8GhJ
 MFbu2xbpJBgUWp6akVaZg4w+mDSEhw8SiK8e0DSvMUFibnFmekQqVOMxhzHNl3+w8Qx4+bdP0
 xCLHn5ealS4rz2IKUCIKUZpXlwg2BJ4RKjrJQwLyPQaUI8BalFuZklqPKvGMU5GJWEeb1BpvB
 k5pXA7XsFdAoT0Ck8l7aAnFKSiJCSamCs8Luz/MeBz3t+tlzvz9t4PKRixqmFsz9tnLo450bV
 1GB3aeuZtw+cU4rc2njPNGpnNY88ox4XI9O0s8ZcxxNrp4X82W/nn5YmqcAlXnFv/edn70Jl/
 zEvmmyckGkk97J7yVT3zKbfUipL7lnpMvPd27J5v4WssPjPW79kvkkUic6REJMPNHZSYinOSD
 TUYi4qTgQAdZIfagUDAAA=
X-Env-Sender: prvs=42008d454=Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1505142633!115854748!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 36498 invoked from network); 11 Sep 2017 15:10:33 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 15:10:33 -0000
X-IronPort-AV: E=Sophos;i="5.42,378,1500940800"; d="scan'208";a="52616881"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/2] Destroy all handles on FdoD0ToD3
Thread-Index: AQHTKKaNiMFMGyOf4EW7J/fZLsIxy6KvzX9A
Date: Mon, 11 Sep 2017 15:10:33 +0000
Message-ID: <d30238f9fa8a4e3cbb1be0210ea6c623@AMSPEX02CL03.citrite.net>
References: <20170908132912.18148-1-owen.smith@citrix.com>
In-Reply-To: <20170908132912.18148-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/2] Destroy all handles on FdoD0ToD3
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAwOCBTZXB0ZW1iZXIgMjAxNyAwNjoy
OQ0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAxLzJdIERlc3Ryb3kgYWxsIGhhbmRsZXMgb24gRmRvRDBUb0QzDQo+IA0KPiBGcm9tOiBP
d2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBTaW5jZSB0aGUgU3RyZWFt
V29ya2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBYRU5CVVNfQ09OUyBpbnRlcmZhY2UsDQo+
IHhlbmJ1cyB3aWxsIEJVR19PTiBpZiB0aGUgaGFuZGxlcyBhcmUgbm90IGNsZWFuZWQgdXAgYmVm
b3JlIHBvd2VyIGRvd24uDQo+IFRoZSBzZXJ2aWNlIHNob3VsZCBjbG9zZSBhbGwgaGFuZGxlcyBp
biByZXNwb25zZSB0byBhDQo+IERCVF9ERVZJQ0VRVUVSWVJFTU9WRQ0KPiBub3RpZmljYXRpb24s
IGJ1dCB0aGlzIG1heSBub3QgYmUgaXNzdWVkIG9uIHN5c3RlbSBwb3dlciBkb3duLg0KPiANCj4g
U2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiAtLS0N
Cj4gIHNyYy94ZW5jb25zL2Zkby5jIHwgNjgNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDYxIGluc2Vy
dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMv
ZmRvLmMgYi9zcmMveGVuY29ucy9mZG8uYw0KPiBpbmRleCA1OTkyNzc2Li4xZTY2MGVhIDEwMDY0
NA0KPiAtLS0gYS9zcmMveGVuY29ucy9mZG8uYw0KPiArKysgYi9zcmMveGVuY29ucy9mZG8uYw0K
PiBAQCAtOTAyLDYgKzkwMiwxMSBAQCBmYWlsMToNCj4gICAgICByZXR1cm4gc3RhdHVzOw0KPiAg
fQ0KPiANCj4gK3N0YXRpYyBWT0lEDQo+ICtGZG9EZXN0cm95QWxsSGFuZGxlcygNCj4gKyAgICBJ
TiAgUFhFTkNPTlNfRkRPICAgIEZkbw0KPiArICAgICk7DQo+ICsNCg0KUGxlYXNlIHJlLW9yZGVy
IGZ1bmN0aW9ucyB0byBhdm9pZCB0aGUgbmVlZCBmb3IgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3Ig
c3RhdGljIGZ1bmN0aW9ucy4NCg0KPiAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCB0b3VjaCBw
YWdlYWJsZSBjb2RlIG9yIGRhdGENCj4gIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lEDQo+
ICBGZG9EMFRvRDMoDQo+IEBAIC05MjAsNiArOTI1LDggQEAgRmRvRDBUb0QzKA0KPiAgI3ByYWdt
YSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQ0KPiAgICAgIChWT0lEKSBJb1NldERldmljZUludGVy
ZmFjZVN0YXRlKCZEeC0+TGluaywgRkFMU0UpOw0KPiANCj4gKyAgICBGZG9EZXN0cm95QWxsSGFu
ZGxlcyhGZG8pOw0KPiArDQo+ICAgICAgUG93ZXJTdGF0ZS5EZXZpY2VTdGF0ZSA9IFBvd2VyRGV2
aWNlRDM7DQo+ICAgICAgUG9TZXRQb3dlclN0YXRlKEZkby0+RHgtPkRldmljZU9iamVjdCwNCj4g
ICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93ZXJTdGF0ZSwNCj4gQEAgLTIxNzUsNiArMjE4
MiwyMyBAQCBmYWlsMToNCj4gICAgICByZXR1cm4gTlVMTDsNCj4gIH0NCj4gDQo+ICtzdGF0aWMg
Rk9SQ0VJTkxJTkUgVk9JRA0KPiArX19GZG9EZXN0cm95SGFuZGxlKA0KPiArICAgIElOICBQWEVO
Q09OU19GRE8gICAgRmRvLA0KPiArICAgIElOICBQRkRPX0hBTkRMRSAgICAgSGFuZGxlDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkhhbmRsZS0+TGlzdEVudHJ5LCBzaXpl
b2YgKExJU1RfRU5UUlkpKTsNCj4gKw0KPiArICAgIFN0cmVhbURlc3Ryb3koSGFuZGxlLT5TdHJl
YW0pOw0KPiArICAgIEhhbmRsZS0+U3RyZWFtID0gTlVMTDsNCj4gKw0KPiArICAgIEhhbmRsZS0+
RmlsZU9iamVjdCA9IE5VTEw7DQo+ICsNCj4gKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEhhbmRs
ZSwgc2l6ZW9mIChGRE9fSEFORExFKSkpOw0KPiArICAgIF9fRmRvRnJlZShIYW5kbGUpOw0KPiAr
fQ0KPiArDQo+ICBzdGF0aWMgVk9JRA0KPiAgRmRvRGVzdHJveUhhbmRsZSgNCj4gICAgICBJTiAg
UFhFTkNPTlNfRkRPICAgIEZkbywNCj4gQEAgLTIxODcsMTcgKzIyMTEsNDcgQEAgRmRvRGVzdHJv
eUhhbmRsZSgNCj4gICAgICBSZW1vdmVFbnRyeUxpc3QoJkhhbmRsZS0+TGlzdEVudHJ5KTsNCj4g
ICAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsNCj4gDQo+IC0g
ICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnksIHNpemVvZiAoTElTVF9FTlRSWSkp
Ow0KPiAtDQo+ICAgICAgVHJhY2UoIiVwXG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOw0KDQpNb3Zl
IHRoaXMgVHJhY2Ugc3RhdGVtZW50IGludG8gdGhlIGlubGluZSBmdW5jdGlvbiwgdGhlbiB5b3Ug
Y2FuIGdldCByaWQgb2YgdGhlIG9uZSBpbiBGZG9EZXN0cm95QWxsSGFuZGxlcygpLg0KDQo+IA0K
PiAtICAgIFN0cmVhbURlc3Ryb3koSGFuZGxlLT5TdHJlYW0pOw0KPiAtICAgIEhhbmRsZS0+U3Ry
ZWFtID0gTlVMTDsNCj4gKyAgICBfX0Zkb0Rlc3Ryb3lIYW5kbGUoRmRvLCBIYW5kbGUpOw0KPiAr
fQ0KPiANCj4gLSAgICBIYW5kbGUtPkZpbGVPYmplY3QgPSBOVUxMOw0KPiArc3RhdGljIFZPSUQN
Cj4gK0Zkb0Rlc3Ryb3lBbGxIYW5kbGVzKA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsNCj4gKyAg
ICBMSVNUX0VOVFJZICAgICAgICAgIExpc3RIZWFkOw0KPiArICAgIFBMSVNUX0VOVFJZICAgICAg
ICAgTGlzdEVudHJ5Ow0KPiArICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxlOw0KPiANCj4g
LSAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEhhbmRsZSwgc2l6ZW9mIChGRE9fSEFORExFKSkpOw0K
PiAtICAgIF9fRmRvRnJlZShIYW5kbGUpOw0KPiArICAgIEluaXRpYWxpemVMaXN0SGVhZCgmTGlz
dEhlYWQpOw0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+SGFuZGxlTG9jaywg
JklycWwpOw0KPiArDQo+ICsgICAgTGlzdEVudHJ5ID0gRmRvLT5IYW5kbGVMaXN0LkZsaW5rOw0K
PiArICAgIGlmICghSXNMaXN0RW1wdHkoJkZkby0+SGFuZGxlTGlzdCkpIHsNCj4gKyAgICAgICAg
UmVtb3ZlRW50cnlMaXN0KCZGZG8tPkhhbmRsZUxpc3QpOw0KPiArICAgICAgICBJbml0aWFsaXpl
TGlzdEhlYWQoJkZkby0+SGFuZGxlTGlzdCk7DQo+ICsgICAgICAgIEFwcGVuZFRhaWxMaXN0KCZM
aXN0SGVhZCwgTGlzdEVudHJ5KTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBLZVJlbGVhc2VTcGlu
TG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsNCj4gKw0KPiArICAgIGZvciAoOzspIHsNCg0K
d2hpbGUgKCFJc0xpc3RFbXB0eSgmTGlzdEhlYWQpKT8NCg0KQWxzbyBzL0xpc3RIZWFkL0xpc3Qg
cGxlYXNlLg0KDQogIFBhdWwNCg0KPiArICAgICAgICBMaXN0RW50cnkgPSBSZW1vdmVIZWFkTGlz
dCgmTGlzdEhlYWQpOw0KPiArICAgICAgICBpZiAoTGlzdEVudHJ5ID09ICZMaXN0SGVhZCkNCj4g
KyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIEhhbmRsZSA9IENPTlRBSU5JTkdf
UkVDT1JEKExpc3RFbnRyeSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkRPX0hBTkRMRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdEVu
dHJ5KTsNCj4gKw0KPiArICAgICAgICBUcmFjZSgiJXBcbiIsIEhhbmRsZS0+RmlsZU9iamVjdCk7
DQo+ICsNCj4gKyAgICAgICAgX19GZG9EZXN0cm95SGFuZGxlKEZkbywgSGFuZGxlKTsNCj4gKyAg
ICB9DQo+ICB9DQo+IA0KPiAgc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IC0t
DQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1w
di1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 15:12:14 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 15:12:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drQNi-0000bz-5A; Mon, 11 Sep 2017 15:12:14 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=42008d454=Paul.Durrant@citrix.com>)
 id 1drQNh-0000bt-71
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 15:12:13 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 06/04-15060-CC7A6B95; Mon, 11 Sep 2017 15:12:12 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQvfU8m2
 RBptOWFn8WZzowOhx+MMVlgDGKNbMvKT8igTWjNMXT7AUzBWsuHduO1MDY4NgFyMnh4SAn8Si
 b9NYQWw2AR2JpUfnM4HYIgIFEt/fz2MGsZkF1CSu7+8CqxEWSJFYfPUVG0RNqsTK2btZIWwji
 VlH9rF0MXJwsAioStx9Lw4S5hVwlzhyey/YSCGBLIknnxvARnIKWEv8v3ANLM4oICvxpXE11C
 pxiVtPIE6QEBCQWLLnPDOELSrx8vE/VgjbQGLrUohVzAKaEut36UO0KkpM6X7IDrFWUOLkzCc
 sExiFZyGZOguhYxaSjllIOhYwsqxiVC9OLSpLLdI100sqykzPKMlNzMzRNTQw08tNLS5OTE/N
 SUwq1kvOz93ECAx5BiDYwTjvhP8hRkkOJiVR3nfHt0QK8SXlp1RmJBZnxBeV5qQWH2KU4eBQk
 uB1WrYtUkiwKDU9tSItMwcYfTBpCQ4eJRHePSBp3uKCxNzizHSI1ClGS44nKy7+YeI4tukykJ
 xx8+4fJiGWvPy8VClx3v0gDQIgDRmleXDjYAniEqOslDAvI9CBQjwFqUW5mSWo8q8YxTkYlYR
 5GYDpRognM68EbusroIOYgA7iubQF5KCSRISUVANjW9iFoNZzMzI2aUrEOfEriFw5Pi302zW9
 2Igns+tuLD0p85Y/b+/Ct1V/D/mzLH7TlBaoGu+28f3WpElZModkHDVm9UnOu7CD675j2aVV9
 uomNX3VidEr+ddH7XrzSODCz/unfinyv99maVx77u68z9xeIjll13TD1TZlXOzyXHd8kbfqFm
 4nJZbijERDLeai4kQARdzWpQsDAAA=
X-Env-Sender: prvs=42008d454=Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-21.messagelabs.com!1505142730!82319953!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30951 invoked from network); 11 Sep 2017 15:12:10 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-7.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 15:12:10 -0000
X-IronPort-AV: E=Sophos;i="5.42,378,1500940800"; d="scan'208";a="52616953"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/2] Handle DBT_DEVICEREMOVEPENDING and
 DBT_DEVICEREMOVECOMPLETE
Thread-Index: AQHTKKaPTyNswzSbv0ygUQphVJjIsaKvzxjg
Date: Mon, 11 Sep 2017 15:11:49 +0000
Message-ID: <47af75df35cb4c95b60f62e5b42bd1a2@AMSPEX02CL03.citrite.net>
References: <20170908132912.18148-1-owen.smith@citrix.com>
 <20170908132912.18148-2-owen.smith@citrix.com>
In-Reply-To: <20170908132912.18148-2-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/2] Handle DBT_DEVICEREMOVEPENDING
	and	DBT_DEVICEREMOVECOMPLETE
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAwOCBTZXB0ZW1iZXIgMjAxNyAwNjoy
OQ0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAyLzJdIEhhbmRsZSBEQlRfREVWSUNFUkVNT1ZFUEVORElORw0KPiBhbmQgREJUX0RFVklD
RVJFTU9WRUNPTVBMRVRFDQo+IA0KPiBGcm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJp
eC5jb20+DQo+IA0KPiBXaGVuIHN1cnByaXNlIHJlbW92ZWQsIERCVF9ERVZJQ0VRVUVSWVJFTU9W
RSBpcyBub3QgY2FsbGVkLCBhbmQNCj4gdGhlIGhhbmRsZXMgb3BlbmVkIGJ5IHRoZSBzZXJ2aWNl
IG5lZWQgY2xvc2luZyBiZWZvcmUgdGhlIGRyaXZlcg0KPiBnZXRzIHRoZSBJUlBfTU5fUkVNT1ZF
X0RFVklDRSBJcnAuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRo
QGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRy
aXguY29tPg0KDQo+IC0tLQ0KPiAgbXNidWlsZC5iYXQgICAgICAgICAgIHwgMA0KPiAgc3JjL21v
bml0b3IvbW9uaXRvci5jIHwgMiArKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMo
KykNCj4gIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbXNidWlsZC5iYXQNCj4gDQo+IGRp
ZmYgLS1naXQgYS9tc2J1aWxkLmJhdCBiL21zYnVpbGQuYmF0DQo+IG9sZCBtb2RlIDEwMDY0NA0K
PiBuZXcgbW9kZSAxMDA3NTUNCj4gZGlmZiAtLWdpdCBhL3NyYy9tb25pdG9yL21vbml0b3IuYyBi
L3NyYy9tb25pdG9yL21vbml0b3IuYw0KPiBpbmRleCA4OWY1ZjU2Li4wOGFlMGYyIDEwMDY0NA0K
PiAtLS0gYS9zcmMvbW9uaXRvci9tb25pdG9yLmMNCj4gKysrIGIvc3JjL21vbml0b3IvbW9uaXRv
ci5jDQo+IEBAIC0xMTIyLDYgKzExMjIsOCBAQCBNb25pdG9yQ3RybEhhbmRsZXJFeCgNCj4gICAg
ICAgICAgICAgIGJyZWFrOw0KPiANCj4gICAgICAgICAgY2FzZSBEQlRfREVWSUNFUVVFUllSRU1P
VkU6DQo+ICsgICAgICAgIGNhc2UgREJUX0RFVklDRVJFTU9WRVBFTkRJTkc6DQo+ICsgICAgICAg
IGNhc2UgREJUX0RFVklDRVJFTU9WRUNPTVBMRVRFOg0KPiAgICAgICAgICAgICAgaWYgKEhlYWRl
ci0+ZGJjaF9kZXZpY2V0eXBlID09IERCVF9ERVZUWVBfSEFORExFKSB7DQo+ICAgICAgICAgICAg
ICAgICAgUERFVl9CUk9BRENBU1RfSEFORExFIERldmljZSA9IEV2ZW50RGF0YTsNCj4gDQo+IC0t
DQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1w
di1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 15:41:41 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 15:41:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drQqC-0002eg-Sa; Mon, 11 Sep 2017 15:41:40 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4209a13fc=owen.smith@citrix.com>)
 id 1drQqB-0002ea-PK
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 15:41:39 +0000
Received: from [85.158.143.35] by server-6.bemta-6.messagelabs.com id
 26/B4-03423-2BEA6B95; Mon, 11 Sep 2017 15:41:38 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFIsWRWlGSWpSXmKPExsXitHSDve6mdds
 iDZYfkrb4szjRgdHj8IcrLAGMUayZeUn5FQmsGbOez2IsWMRe0XZkPVMD40vWLkZODgkBf4mj
 HafZQGw2AVmJjys/M4PYIgLqEvs+b2UCsZkF1CSu7+8CqufgEBYIlpg/uRwkzCKgKvFxexcTS
 JhXwFLiU5MzxEQ5icmLLzGC2JwCVhLdt5+DTRQCKnl75TiUrSTxbfELMJtXQFDi5MwnLBCbJC
 QOvnjBPIGRdxaS1CwkqQWMTKsYNYpTi8pSi3SNzPWSijLTM0pyEzNzdA0NzPRyU4uLE9NTcxK
 TivWS83M3MQLDhgEIdjAuXht4iFGSg0lJlPfd8S2RQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4
 u9duixQSLEpNT61Iy8wBBjBMWoKDR0mEVwQkzVtckJhbnJkOkTrFaMnxZMXFP0wcNx5eB5IdN
 +/+YRJiycvPS5US540AaRAAacgozYMbB4uyS4yyUsK8jEAHCvEUpBblZpagyr9iFOdgVBLmnQ
 IyhSczrwRu6yugg5iADuK5tAXkoJJEhJRUA+PKVWnqH0s+p1pe5+DJ8Lf03f73iInClhOzI21
 SFU5dFw+aHmH/foZzq1PZ2a8uzXkqm2bp3T5fJHvI5FbDLLVpc7cGJ+6L0F0k6NOy+syp+0Y2
 rwwsF8hmBZYGCgu6r9lo+FrZg+H8NGEBMa3z0y+em5LTzT7lfriC0fHJr6QD5LIPSX/yVVRiK
 c5INNRiLipOBAC3v/ACrQIAAA==
X-Env-Sender: prvs=4209a13fc=owen.smith@citrix.com
X-Msg-Ref: server-14.tower-21.messagelabs.com!1505144496!75621088!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 51507 invoked from network); 11 Sep 2017 15:41:38 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-14.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 15:41:38 -0000
X-IronPort-AV: E=Sophos;i="5.42,378,1500940800"; d="scan'208";a="447423196"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 11 Sep 2017 16:41:22 +0100
Message-ID: <20170911154122.7892-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170911154122.7892-1-owen.smith@citrix.com>
References: <20170911154122.7892-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 2/2] Handle DBT_DEVICEREMOVEPENDING and
	DBT_DEVICEREMOVECOMPLETE
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKV2hlbiBzdXJwcmlzZSBy
ZW1vdmVkLCBEQlRfREVWSUNFUVVFUllSRU1PVkUgaXMgbm90IGNhbGxlZCwgYW5kCnRoZSBoYW5k
bGVzIG9wZW5lZCBieSB0aGUgc2VydmljZSBuZWVkIGNsb3NpbmcgYmVmb3JlIHRoZSBkcml2ZXIK
Z2V0cyB0aGUgSVJQX01OX1JFTU9WRV9ERVZJQ0UgSXJwLgoKU2lnbmVkLW9mZi1ieTogT3dlbiBT
bWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIG1zYnVpbGQuYmF0ICAgICAgICAgICB8
IDAKIHNyYy9tb25pdG9yL21vbml0b3IuYyB8IDIgKysKIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IG1zYnVpbGQuYmF0CgpkaWZm
IC0tZ2l0IGEvbXNidWlsZC5iYXQgYi9tc2J1aWxkLmJhdApvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9zcmMvbW9uaXRvci9tb25pdG9yLmMgYi9zcmMvbW9uaXRv
ci9tb25pdG9yLmMKaW5kZXggODlmNWY1Ni4uMDhhZTBmMiAxMDA2NDQKLS0tIGEvc3JjL21vbml0
b3IvbW9uaXRvci5jCisrKyBiL3NyYy9tb25pdG9yL21vbml0b3IuYwpAQCAtMTEyMiw2ICsxMTIy
LDggQEAgTW9uaXRvckN0cmxIYW5kbGVyRXgoCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIERCVF9ERVZJQ0VRVUVSWVJFTU9WRToKKyAgICAgICAgY2FzZSBEQlRfREVWSUNFUkVN
T1ZFUEVORElORzoKKyAgICAgICAgY2FzZSBEQlRfREVWSUNFUkVNT1ZFQ09NUExFVEU6CiAgICAg
ICAgICAgICBpZiAoSGVhZGVyLT5kYmNoX2RldmljZXR5cGUgPT0gREJUX0RFVlRZUF9IQU5ETEUp
IHsKICAgICAgICAgICAgICAgICBQREVWX0JST0FEQ0FTVF9IQU5ETEUgRGV2aWNlID0gRXZlbnRE
YXRhOwogCi0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 15:41:42 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 15:41:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drQqE-0002f7-Tg; Mon, 11 Sep 2017 15:41:42 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4209a13fc=owen.smith@citrix.com>)
 id 1drQqD-0002ep-HL
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 15:41:41 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 F9/C9-01754-4BEA6B95; Mon, 11 Sep 2017 15:41:40 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRWlGSWpSXmKPExsXitHRDpO6mdds
 iDaZfFbH4szjRgdHj8IcrLAGMUayZeUn5FQmsGbNuiRVckarYc/8UcwPjKZEuRk4OCQF/idZ3
 z5lAbDYBWYmPKz8zg9giAuoS+z5vBYszC6hJXN/fxQpiCwtYSPw4t5MNxGYRUJX4c+4RmM0rY
 Clx8+kOdoiZchKTF19iBLGFBJQkvi1+wQxRIyhxcuYTFoiZEhIHX7xgnsDIPQtJahaS1AJGpl
 WM6sWpRWWpRboWeklFmekZJbmJmTm6hgamermpxcWJ6ak5iUnFesn5uZsYgWHAAAQ7GA82Ox9
 ilORgUhLlfXd8S6QQX1J+SmVGYnFGfFFpTmrxIUYZDg4lCd7Da7dFCgkWpaanVqRl5gADEiYt
 wcGjJMJrDwxKId7igsTc4sx0iNQpRl2Ojpt3/zAJseTl56VKifPeA5khAFKUUZoHNwIWHZcYZ
 aWEeRmBjhLiKUgtys0sQZV/xSjOwagkzDsFZApPZl4J3KZXQEcwAR3Bc2kLyBEliQgpqQZGCe
 Wi4zL2nLobTe8x3aqapeN8nm2BT2b2zFBPvR0XQ9bvEM6Rz/OXtli6irvexNNa5sjvVk8bhsq
 74sdj4phKLvfw3No28/fEYy7HJpVMO7CI2VeoN4hLXTVghXPYtD42TcfJW245cQUbzRPuuGFu
 enHZ2aUf7z6pmNTtlsn/P/7EqhBvXg0lluKMREMt5qLiRACBX6YdiQIAAA==
X-Env-Sender: prvs=4209a13fc=owen.smith@citrix.com
X-Msg-Ref: server-16.tower-206.messagelabs.com!1505144496!90986219!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 46330 invoked from network); 11 Sep 2017 15:41:38 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-16.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 15:41:38 -0000
X-IronPort-AV: E=Sophos;i="5.42,378,1500940800"; d="scan'208";a="439285115"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 11 Sep 2017 16:41:21 +0100
Message-ID: <20170911154122.7892-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 1/2] Destroy all handles on FdoD0ToD3
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2luY2UgdGhlIFN0cmVh
bVdvcmtlciBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgWEVOQlVTX0NPTlMgaW50ZXJmYWNlLAp4
ZW5idXMgd2lsbCBCVUdfT04gaWYgdGhlIGhhbmRsZXMgYXJlIG5vdCBjbGVhbmVkIHVwIGJlZm9y
ZSBwb3dlciBkb3duLgpUaGUgc2VydmljZSBzaG91bGQgY2xvc2UgYWxsIGhhbmRsZXMgaW4gcmVz
cG9uc2UgdG8gYQpEQlRfREVWSUNFUVVFUllSRU1PVkUgbm90aWZpY2F0aW9uLCBidXQgdGhpcyBt
YXkgbm90IGJlIGlzc3VlZCBvbgpzeXN0ZW0gcG93ZXIgZG93bi4KClNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9mZG8uYyB8
IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t
LS0KIDEgZmlsZSBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9zcmMveGVuY29ucy9mZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jCmluZGV4IDU5
OTI3NzYuLmRmMjBmYWEgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5jb25zL2Zkby5jCisrKyBiL3NyYy94
ZW5jb25zL2Zkby5jCkBAIC05MDIsNiArOTAyLDc1IEBAIGZhaWwxOgogICAgIHJldHVybiBzdGF0
dXM7CiB9CiAKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb0Rlc3Ryb3lIYW5kbGUoCisg
ICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCisgICAgSU4gIFBGRE9fSEFORExFICAgICBIYW5k
bGUKKyAgICApCit7CisgICAgVHJhY2UoIiVwXG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOworCisg
ICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnksIHNpemVvZiAoTElTVF9FTlRSWSkp
OworCisgICAgU3RyZWFtRGVzdHJveShIYW5kbGUtPlN0cmVhbSk7CisgICAgSGFuZGxlLT5TdHJl
YW0gPSBOVUxMOworCisgICAgSGFuZGxlLT5GaWxlT2JqZWN0ID0gTlVMTDsKKworICAgIEFTU0VS
VChJc1plcm9NZW1vcnkoSGFuZGxlLCBzaXplb2YgKEZET19IQU5ETEUpKSk7CisgICAgX19GZG9G
cmVlKEhhbmRsZSk7Cit9CisKK3N0YXRpYyBWT0lECitGZG9EZXN0cm95SGFuZGxlKAorICAgIElO
ICBQWEVOQ09OU19GRE8gICAgRmRvLAorICAgIElOICBQRkRPX0hBTkRMRSAgICAgSGFuZGxlCisg
ICAgKQoreworICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKKworICAgIEtlQWNxdWlyZVNw
aW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJcnFsKTsKKyAgICBSZW1vdmVFbnRyeUxpc3QoJkhh
bmRsZS0+TGlzdEVudHJ5KTsKKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2Nr
LCBJcnFsKTsKKworICAgIF9fRmRvRGVzdHJveUhhbmRsZShGZG8sIEhhbmRsZSk7Cit9CisKK3N0
YXRpYyBWT0lECitGZG9EZXN0cm95QWxsSGFuZGxlcygKKyAgICBJTiAgUFhFTkNPTlNfRkRPICAg
IEZkbworICAgICkKK3sKKyAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7CisgICAgTElTVF9F
TlRSWSAgICAgICAgICBMaXN0OworICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVudHJ5Owor
ICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxlOworCisgICAgSW5pdGlhbGl6ZUxpc3RIZWFk
KCZMaXN0KTsKKworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJcnFs
KTsKKworICAgIExpc3RFbnRyeSA9IEZkby0+SGFuZGxlTGlzdC5GbGluazsKKyAgICBpZiAoIUlz
TGlzdEVtcHR5KCZGZG8tPkhhbmRsZUxpc3QpKSB7CisgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgm
RmRvLT5IYW5kbGVMaXN0KTsKKyAgICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkhhbmRs
ZUxpc3QpOworICAgICAgICBBcHBlbmRUYWlsTGlzdCgmTGlzdCwgTGlzdEVudHJ5KTsKKyAgICB9
CisKKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsKKworICAg
IHdoaWxlICghSXNMaXN0RW1wdHkoJkxpc3QpKSB7CisgICAgICAgIExpc3RFbnRyeSA9IFJlbW92
ZUhlYWRMaXN0KCZMaXN0KTsKKyAgICAgICAgQVNTRVJUM1AoTGlzdEVudHJ5LCAhPSwgJkxpc3Qp
OworCisgICAgICAgIEhhbmRsZSA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRPX0hBTkRMRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTGlzdEVudHJ5KTsKKworICAgICAgICBfX0Zkb0Rlc3Ryb3lI
YW5kbGUoRmRvLCBIYW5kbGUpOworICAgIH0KK30KKwogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5v
dCB0b3VjaCBwYWdlYWJsZSBjb2RlIG9yIGRhdGEKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBW
T0lECiBGZG9EMFRvRDMoCkBAIC05MjAsNiArOTg5LDggQEAgRmRvRDBUb0QzKAogI3ByYWdtYSBw
cmVmYXN0KHN1cHByZXNzOjI4MTIzKQogICAgIChWT0lEKSBJb1NldERldmljZUludGVyZmFjZVN0
YXRlKCZEeC0+TGluaywgRkFMU0UpOwogCisgICAgRmRvRGVzdHJveUFsbEhhbmRsZXMoRmRvKTsK
KwogICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQzOwogICAgIFBvU2V0
UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZpY2VPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgIERl
dmljZVBvd2VyU3RhdGUsCkBAIC0yMTc1LDMxICsyMjQ2LDYgQEAgZmFpbDE6CiAgICAgcmV0dXJu
IE5VTEw7CiB9CiAKLXN0YXRpYyBWT0lECi1GZG9EZXN0cm95SGFuZGxlKAotICAgIElOICBQWEVO
Q09OU19GRE8gICAgRmRvLAotICAgIElOICBQRkRPX0hBTkRMRSAgICAgSGFuZGxlCi0gICAgKQot
ewotICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKLQotICAgIEtlQWNxdWlyZVNwaW5Mb2Nr
KCZGZG8tPkhhbmRsZUxvY2ssICZJcnFsKTsKLSAgICBSZW1vdmVFbnRyeUxpc3QoJkhhbmRsZS0+
TGlzdEVudHJ5KTsKLSAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFs
KTsKLQotICAgIFJ0bFplcm9NZW1vcnkoJkhhbmRsZS0+TGlzdEVudHJ5LCBzaXplb2YgKExJU1Rf
RU5UUlkpKTsKLQotICAgIFRyYWNlKCIlcFxuIiwgSGFuZGxlLT5GaWxlT2JqZWN0KTsKLQotICAg
IFN0cmVhbURlc3Ryb3koSGFuZGxlLT5TdHJlYW0pOwotICAgIEhhbmRsZS0+U3RyZWFtID0gTlVM
TDsKLQotICAgIEhhbmRsZS0+RmlsZU9iamVjdCA9IE5VTEw7Ci0KLSAgICBBU1NFUlQoSXNaZXJv
TWVtb3J5KEhhbmRsZSwgc2l6ZW9mIChGRE9fSEFORExFKSkpOwotICAgIF9fRmRvRnJlZShIYW5k
bGUpOwotfQotCiBzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKIEZkb0Rpc3BhdGNo
Q3JlYXRlKAogICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLAotLSAKMi44LjMKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFp
bGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 19:54:43 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 19:54:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drUn3-0005ab-JG; Mon, 11 Sep 2017 19:54:41 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=42008d454=Paul.Durrant@citrix.com>)
 id 1drUn2-0005aV-2f
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 19:54:40 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
 6E/40-27708-FF9E6B95; Mon, 11 Sep 2017 19:54:39 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCIsWRWlGSWpSXmKPExsWyU9JRQvffy22
 RBj275C3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxqaWG4wF+/QqTk/+w9LA+EG3i5GTQ0LAT+LE
 8/1MIDabgI7E0qPzwWwRgQKJ7+/nMYPYzAJqEtf3d7GC2MIC3hLLW65B1fhI3Jr8lxXCNpL4c
 PYrWD2LgKrElL477CA2r4C7xJEjfWBxIQFLibdXjoPZnAJWEt23n4PZjAKyEl8aV0PtEpe49Q
 TiBgkBAYkle84zQ9iiEi8f/2OFsA0kti7dx9LFyAFUrymxfpc+RKuixJTuh1BrBSVOznzCMoF
 ReBaSqbMQOmYh6ZiFpGMBI8sqRo3i1KKy1CJdQyO9pKLM9IyS3MTMHF1DA1O93NTi4sT01JzE
 pGK95PzcTYzAsGcAgh2MfbOcDzFKcjApifK+O74lUogvKT+lMiOxOCO+qDQntfgQowwHh5IE7
 6UX2yKFBItS01Mr0jJzgBEIk5bg4FES4T0BkuYtLkjMLc5Mh0idYjTmOLbp8h8mjhk37/5hEm
 LJy89LlRLnLQcpFQApzSjNgxsESwyXGGWlhHkZgU4T4ilILcrNLEGVf8UozsGoJMx7A2QKT2Z
 eCdy+V0CnMAGdwnNpC8gpJYkIKakGxhiT2NhGryu91ZVvuM7tXybR8Gbbn0hpvpSUN6HngjTd
 bly5pVKae6rvy9v7H1XMp3Gx3JrglfN8Z0njY/uQ4KeHcrkmqJcZ90lpmK266XPpruBl76gpJ
 9KXsTh+7t9SUKgfIhbUHCYzx3CzWPIW0R+Cd6dpfdF6kVR3en3FqerdGzfFMqW8U2Ipzkg01G
 IuKk4EALbSfu4HAwAA
X-Env-Sender: prvs=42008d454=Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1505159678!110991542!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19315 invoked from network); 11 Sep 2017 19:54:38 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 11 Sep 2017 19:54:38 -0000
X-IronPort-AV: E=Sophos;i="5.42,379,1500940800"; d="scan'208";a="52632911"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH v2 1/2] Destroy all handles on FdoD0ToD3
Thread-Index: AQHTKxSKdWkwnznDwESwLH1O2r+AwqKwGUhw
Date: Mon, 11 Sep 2017 19:54:37 +0000
Message-ID: <e30a92e4763a4e4bb50ef1875590625a@AMSPEX02CL03.citrite.net>
References: <20170911154122.7892-1-owen.smith@citrix.com>
In-Reply-To: <20170911154122.7892-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH v2 1/2] Destroy all handles on FdoD0ToD3
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAxMSBTZXB0ZW1iZXIgMjAxNyAwODo0
MQ0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCB2MiAxLzJdIERlc3Ryb3kgYWxsIGhhbmRsZXMgb24gRmRvRDBUb0QzDQo+IA0KPiBGcm9t
OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBTaW5jZSB0aGUgU3Ry
ZWFtV29ya2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBYRU5CVVNfQ09OUyBpbnRlcmZhY2Us
DQo+IHhlbmJ1cyB3aWxsIEJVR19PTiBpZiB0aGUgaGFuZGxlcyBhcmUgbm90IGNsZWFuZWQgdXAg
YmVmb3JlIHBvd2VyIGRvd24uDQo+IFRoZSBzZXJ2aWNlIHNob3VsZCBjbG9zZSBhbGwgaGFuZGxl
cyBpbiByZXNwb25zZSB0byBhDQo+IERCVF9ERVZJQ0VRVUVSWVJFTU9WRSBub3RpZmljYXRpb24s
IGJ1dCB0aGlzIG1heSBub3QgYmUgaXNzdWVkIG9uDQo+IHN5c3RlbSBwb3dlciBkb3duLg0KPiAN
Cj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpB
Y2tlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0N
Cj4gIHNyYy94ZW5jb25zL2Zkby5jIHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKy0NCj4gLS0tLS0tLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFuZ2VkLCA3MSBpbnNl
cnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29u
cy9mZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jDQo+IGluZGV4IDU5OTI3NzYuLmRmMjBmYWEgMTAw
NjQ0DQo+IC0tLSBhL3NyYy94ZW5jb25zL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5jb25zL2Zkby5j
DQo+IEBAIC05MDIsNiArOTAyLDc1IEBAIGZhaWwxOg0KPiAgICAgIHJldHVybiBzdGF0dXM7DQo+
ICB9DQo+IA0KPiArc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fRmRvRGVzdHJveUhhbmRs
ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbywNCj4gKyAgICBJTiAgUEZET19IQU5E
TEUgICAgIEhhbmRsZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBUcmFjZSgiJXBcbiIsIEhhbmRs
ZS0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZIYW5kbGUtPkxpc3RF
bnRyeSwgc2l6ZW9mIChMSVNUX0VOVFJZKSk7DQo+ICsNCj4gKyAgICBTdHJlYW1EZXN0cm95KEhh
bmRsZS0+U3RyZWFtKTsNCj4gKyAgICBIYW5kbGUtPlN0cmVhbSA9IE5VTEw7DQo+ICsNCj4gKyAg
ICBIYW5kbGUtPkZpbGVPYmplY3QgPSBOVUxMOw0KPiArDQo+ICsgICAgQVNTRVJUKElzWmVyb01l
bW9yeShIYW5kbGUsIHNpemVvZiAoRkRPX0hBTkRMRSkpKTsNCj4gKyAgICBfX0Zkb0ZyZWUoSGFu
ZGxlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZPSUQNCj4gK0Zkb0Rlc3Ryb3lIYW5kbGUoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+ICsgICAgSU4gIFBGRE9fSEFORExFICAg
ICBIYW5kbGUNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgS0lSUUwgICAgICAgICAgICAgICBJcnFs
Ow0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+SGFuZGxlTG9jaywgJklycWwp
Ow0KPiArICAgIFJlbW92ZUVudHJ5TGlzdCgmSGFuZGxlLT5MaXN0RW50cnkpOw0KPiArICAgIEtl
UmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOw0KPiArDQo+ICsgICAgX19G
ZG9EZXN0cm95SGFuZGxlKEZkbywgSGFuZGxlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZPSUQN
Cj4gK0Zkb0Rlc3Ryb3lBbGxIYW5kbGVzKA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsNCj4gKyAg
ICBMSVNUX0VOVFJZICAgICAgICAgIExpc3Q7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgICAgICBM
aXN0RW50cnk7DQo+ICsgICAgUEZET19IQU5ETEUgICAgICAgICBIYW5kbGU7DQo+ICsNCj4gKyAg
ICBJbml0aWFsaXplTGlzdEhlYWQoJkxpc3QpOw0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3Bpbkxv
Y2soJkZkby0+SGFuZGxlTG9jaywgJklycWwpOw0KPiArDQo+ICsgICAgTGlzdEVudHJ5ID0gRmRv
LT5IYW5kbGVMaXN0LkZsaW5rOw0KPiArICAgIGlmICghSXNMaXN0RW1wdHkoJkZkby0+SGFuZGxl
TGlzdCkpIHsNCj4gKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZGZG8tPkhhbmRsZUxpc3QpOw0K
PiArICAgICAgICBJbml0aWFsaXplTGlzdEhlYWQoJkZkby0+SGFuZGxlTGlzdCk7DQo+ICsgICAg
ICAgIEFwcGVuZFRhaWxMaXN0KCZMaXN0LCBMaXN0RW50cnkpOw0KPiArICAgIH0NCj4gKw0KPiAr
ICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOw0KPiArDQo+ICsg
ICAgd2hpbGUgKCFJc0xpc3RFbXB0eSgmTGlzdCkpIHsNCj4gKyAgICAgICAgTGlzdEVudHJ5ID0g
UmVtb3ZlSGVhZExpc3QoJkxpc3QpOw0KPiArICAgICAgICBBU1NFUlQzUChMaXN0RW50cnksICE9
LCAmTGlzdCk7DQo+ICsNCj4gKyAgICAgICAgSGFuZGxlID0gQ09OVEFJTklOR19SRUNPUkQoTGlz
dEVudHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRE9fSEFORExF
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0RW50cnkpOw0KPiAr
DQo+ICsgICAgICAgIF9fRmRvRGVzdHJveUhhbmRsZShGZG8sIEhhbmRsZSk7DQo+ICsgICAgfQ0K
PiArfQ0KPiArDQo+ICAvLyBUaGlzIGZ1bmN0aW9uIG11c3Qgbm90IHRvdWNoIHBhZ2VhYmxlIGNv
ZGUgb3IgZGF0YQ0KPiAgc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQNCj4gIEZkb0QwVG9E
MygNCj4gQEAgLTkyMCw2ICs5ODksOCBAQCBGZG9EMFRvRDMoDQo+ICAjcHJhZ21hIHByZWZhc3Qo
c3VwcHJlc3M6MjgxMjMpDQo+ICAgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUo
JkR4LT5MaW5rLCBGQUxTRSk7DQo+IA0KPiArICAgIEZkb0Rlc3Ryb3lBbGxIYW5kbGVzKEZkbyk7
DQo+ICsNCj4gICAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VEMzsNCj4g
ICAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LA0KPiAgICAgICAgICAg
ICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLA0KPiBAQCAtMjE3NSwzMSArMjI0Niw2IEBAIGZh
aWwxOg0KPiAgICAgIHJldHVybiBOVUxMOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBWT0lEDQo+IC1G
ZG9EZXN0cm95SGFuZGxlKA0KPiAtICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiAtICAg
IElOICBQRkRPX0hBTkRMRSAgICAgSGFuZGxlDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIEtJUlFM
ICAgICAgICAgICAgICAgSXJxbDsNCj4gLQ0KPiAtICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8t
PkhhbmRsZUxvY2ssICZJcnFsKTsNCj4gLSAgICBSZW1vdmVFbnRyeUxpc3QoJkhhbmRsZS0+TGlz
dEVudHJ5KTsNCj4gLSAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFs
KTsNCj4gLQ0KPiAtICAgIFJ0bFplcm9NZW1vcnkoJkhhbmRsZS0+TGlzdEVudHJ5LCBzaXplb2Yg
KExJU1RfRU5UUlkpKTsNCj4gLQ0KPiAtICAgIFRyYWNlKCIlcFxuIiwgSGFuZGxlLT5GaWxlT2Jq
ZWN0KTsNCj4gLQ0KPiAtICAgIFN0cmVhbURlc3Ryb3koSGFuZGxlLT5TdHJlYW0pOw0KPiAtICAg
IEhhbmRsZS0+U3RyZWFtID0gTlVMTDsNCj4gLQ0KPiAtICAgIEhhbmRsZS0+RmlsZU9iamVjdCA9
IE5VTEw7DQo+IC0NCj4gLSAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEhhbmRsZSwgc2l6ZW9mIChG
RE9fSEFORExFKSkpOw0KPiAtICAgIF9fRmRvRnJlZShIYW5kbGUpOw0KPiAtfQ0KPiAtDQo+ICBz
dGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gIEZkb0Rpc3BhdGNoQ3JlYXRlKA0K
PiAgICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiAtLQ0KPiAyLjguMw0KPiANCj4gDQo+
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1w
di1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
DQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlz
dGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 11 20:35:34 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Sep 2017 20:35:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1drVQc-0000Rz-23; Mon, 11 Sep 2017 20:35:34 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1drVQa-0000Rt-Mg
 for win-pv-devel@lists.xenproject.org; Mon, 11 Sep 2017 20:35:32 +0000
Date: Mon, 11 Sep 2017 20:35:30 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <19292126.7.1505162135398.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_6_32709952.1505162130007"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #8 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_6_32709952.1505162130007
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #8.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/8/console to view the results.
------=_Part_6_32709952.1505162130007
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

------=_Part_6_32709952.1505162130007--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 14 03:15:04 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 14 Sep 2017 03:15:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dsKcJ-00031T-6J; Thu, 14 Sep 2017 03:15:03 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <manand@us.ibm.com>) id 1dsKMY-0001cv-In
 for win-pv-devel@lists.xenproject.org; Thu, 14 Sep 2017 02:58:46 +0000
Received: from [85.158.143.35] by server-10.bemta-6.messagelabs.com id
 A3/5F-03642-560F9B95; Thu, 14 Sep 2017 02:58:45 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA2WSe0gUURTGu7Oz67i4Ma2Gx82iNtpE3EWTHgS
 BoEHgPxVkGJHO5rg7tQ+ZWWujB1JBi6KIKKmZlpZRiflEV3yh9tjVgtIkCUHTNITSpZAeWs3s
 VVOaPw4/vu/e75w7HEqmfqfQUKzTwfI2xqJVKMnCqjKkT5tzJ0d7q8P2LVQxcehQ79wQeRidk
 HM2o92ZKje/qInJyDvldL3vk2ehgZPZKJBS08MI2m4czEZKkR8S4GusRdh4isDtoTG3IbhZcB
 kfeoVg7HYlKRkqegN4Sib9HEgfAtf8gP9yMB0PdU0jMolD6EjIb2omJJbRifCqrEDUKUpB6+D
 6sCDJJL0Drt/pl+P8MgS97kmFZICY2V18bYkPwO/yWgJzCDS86Q6QcoBWg8eLsKyG/qqXMtwq
 HYZafpJYj4J73a6lq3YoyveRUi+g+wmoeNIhx0YCfJt+thS0F3yDnQGYd8GPrBIZfm8K5PpmF
 bjvGWhs2YqPbIGJ8TGUj8JLV/2V0lVjYD4DX3PvyzFvg8Kc8QDMO6GgvFL2v66DP+0+8Twl8i
 Z48JvCsh6KcgZlWI6F+i4Oy/vBNbCwJuUOCnqEIgSWP8fy+thYg5HnTGaHleEs+pjoPQYrKwi
 MibUwRsFw2m5tQOIerRO/VuR+cqQHhVGEdqOqQ+9OVq832tMumBnBnMJnWlihB4VTlBZUv76I
 3gaeNbHOdM4iLuOyDVSQNkRVIdkqIYOxCpwJW16USD1rGFwgKNfIqFiL/bXOXzv9dXK4fJFQk
 za7jdWEqrxSBC1FmDNtKw2WF/4N2qwJViFxZHVQBstbOcdafwaFUkgbrAqfFVOCOJtjZY4ZcU
 RCHHGgv1Ua0cH8szRZqP1taMWf+kLyrK2oOeHndjY4L7XQ2jr12hDn7dj2sdl3KenubLp1NnP
 6yvSQPe0TMjg9YQnFREH1sb7Bzw1HTZ7Q+JaU0sWpie/yEP5qlMYYoStLqrVF9CBBp/vQMz4/
 fl5pvXJz/9hccYxyMcrxnLtlfkxc3N06WtPljjieriUFMxMTKeMF5i95NAcb6wMAAA==
X-Env-Sender: manand@us.ibm.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1505357922!76548968!1
X-Originating-IP: [148.163.156.1]
X-SpamReason: No, hits=1.1 required=7.0 tests=BODY_RANDOM_LONG,
 HTML_40_50,HTML_MESSAGE,UNPARSEABLE_RELAY
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 35195 invoked from network); 14 Sep 2017 02:58:44 -0000
Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com)
 (148.163.156.1)
 by server-4.tower-21.messagelabs.com with AES256-SHA encrypted SMTP;
 14 Sep 2017 02:58:44 -0000
Received: from pps.filterd (m0098399.ppops.net [127.0.0.1])
 by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id
 v8E2sN2c098335
 for <win-pv-devel@lists.xenproject.org>; Wed, 13 Sep 2017 22:58:42 -0400
Received: from smtp.notes.na.collabserv.com (smtp.notes.na.collabserv.com
 [192.155.248.81])
 by mx0a-001b2d01.pphosted.com with ESMTP id 2cye48qxjt-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <win-pv-devel@lists.xenproject.org>; Wed, 13 Sep 2017 22:58:42 -0400
Received: from localhost
 by smtp.notes.na.collabserv.com with smtp.notes.na.collabserv.com ESMTP
 for <win-pv-devel@lists.xenproject.org> from <manand@us.ibm.com>;
 Thu, 14 Sep 2017 02:58:41 -0000
Received: from us1a3-smtp08.a3.dal06.isc4sb.com (10.146.103.57)
 by smtp.notes.na.collabserv.com (10.106.227.88) with
 smtp.notes.na.collabserv.com ESMTP; Thu, 14 Sep 2017 02:58:40 -0000
Received: from us1a3-mail102.a3.dal06.isc4sb.com ([10.146.21.228])
 by us1a3-smtp08.a3.dal06.isc4sb.com
 with ESMTP id 2017091402583924-1153042 ;
 Thu, 14 Sep 2017 02:58:39 +0000 
MIME-Version: 1.0
In-Reply-To: <bed4987a46b14aabadee216db739504a@AMSPEX02CL03.citrite.net>
To: Paul Durrant <Paul.Durrant@citrix.com>
From: "Mala Anand" <manand@us.ibm.com>
Date: Wed, 13 Sep 2017 21:57:41 -0500
References: <OFCF6198A6.7650F0E8-ON00258196.00826FBA-86258197.0001295F@notes.na.collabserv.com>
 <bed4987a46b14aabadee216db739504a@AMSPEX02CL03.citrite.net>
X-KeepSent: 0D7EF803:E038DC2C-0025819B:000F95B4;
 type=4; name=$KeepSent
X-Mailer: IBM Notes Release 9.0.1EXT SHF766 December 14, 2016
X-LLNOutbound: False
X-Disclaimed: 6155
X-TNEFEvaluated: 1
x-cbid: 17091402-7093-0000-0000-000003456A1D
X-IBM-SpamModules-Scores: FL=0; FP=0; FZ=0; HX=0; KW=0; PH=0; SC=0.410169;
 ST=0; TS=0; UL=0; ISC=; MB=0.140461
X-IBM-SpamModules-Versions: BY=3.00007726; HX=3.00000241; KW=3.00000007;
 PH=3.00000004; SC=3.00000227; SDB=6.00916702; UDB=6.00460359; IPR=6.00696934; 
 BA=6.00005588; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000;
 ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017144; XFM=3.00000015;
 UTC=2017-09-14 02:58:41
X-IBM-AV-DETECTION: SAVI=unsuspicious REMOTE=unsuspicious XFE=unused
X-IBM-AV-VERSION: SAVI=2017-09-13 23:28:40 - 6.00007325
x-cbparentid: 17091402-7094-0000-0000-00000FD2CE70
Message-Id: <OF0D7EF803.E038DC2C-ON0025819B.000F95B4-8625819B.0010448E@notes.na.collabserv.com>
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, ,
 definitions=2017-09-13_07:, , signatures=0
X-Proofpoint-Spam-Reason: safe
X-Mailman-Approved-At: Thu, 14 Sep 2017 03:15:02 +0000
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] Windows 2016 network performance on Xen
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8028035239717108457=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

--===============8028035239717108457==
Content-type: multipart/related; 
	Boundary="0__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324"

--0__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324
Content-type: multipart/alternative; 
	Boundary="1__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324"


--1__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324
Content-Transfer-Encoding: base64
Content-type: text/plain; charset=UTF-8

VGhhbmtzIFBhdWwuDQoNCkkgY29tcGFyZWQgdGNwZHVtcCBmcm9tIGJvdGggcnVucywgdGhlIFdp
bmRvd3MgdGNwIHdpbmRvdyBzaXplIGlzIH4yMDBrDQp3aGVyZWFzIExpbnV4IHRjcCB3aW5kb3cg
c2l6ZSBpcyA+IDFNQi4NCg0KSW4gdGhlIGdvb2QgY2FzZSwNCg0KTGludXggaXMgYWJsZSB0byBy
ZWNlaXZlIGxhcmdlIGRhdGEgYW5kIFdpbmRvd3MgaXMgYWJsZSB0byBzZW5kIHRoZSBkYXRhLg0K
DQpJbiB0aGUgYmFkIGNhc2UsDQogICAgICBXaW5kb3dzIGlzIG9ubHkgcmVjZWl2aW5nIDI5ODYg
Ynl0ZXMgYXQgYSB0aW1lIGFuZCBzZW5kaW5nIGFjayBvbmx5DQpmb3IgMjk4NiBldmVuIHRob3Vn
aCBMaW51eCBpcyBzZW5kaW5nIGxhcmdlIHNlZ21lbnRzLiBXaW5kb3dzIHNlbmRzDQptdWx0aXBs
ZSBhY2tzIGZvciBlYWNoIGxhcmdlIHNlZ21lbnQuDQoNCkkgdHJpZWQgaW5jcmVhc2luZyBXaW5k
b3cgc2l6ZSBpbiB0aGUgUmVnaXN0cnksICBhcyBJIG1lbnRpb25lZCBlYXJsaWVyLCBJDQpwbGF5
ZWQgd2l0aCBhdXRvLXR1bmluZyBsZXZlbHMgYWxzby4NCg0KT24gYW5vdGhlciBub3RlLCBkbyB5
b3Uga25vdyB3aGVuIFhlbiBUb29sIHdvdWxkIGluY2x1ZGUgOC4yIHZlcnNpb24gcHYNCmRyaXZl
cnM/DQoNClRoYW5rcywNCiAgICBNYWxhDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQoNCg0KRnJv
bToJUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT4NClRvOgknTWFsYSBBbmFu
ZCcgPG1hbmFuZEB1cy5pYm0uY29tPiwNCiAgICAgICAgICAgICJ3aW4tcHYtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmciDQogICAgICAgICAgICA8d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnPg0KRGF0ZToJMDkvMTEvMjAxNyAxMDowNCBBTQ0KU3ViamVjdDoJUkU6IFt3aW4tcHYt
ZGV2ZWxdIFdpbmRvd3MgMjAxNiBuZXR3b3JrIHBlcmZvcm1hbmNlIG9uIFhlbg0KDQoNCg0KTWFs
YSwNCg0KDQoNCg0KDQogIFRoZSBSU1MgY2hhbmdlcyBkaWQgbm90IGFycml2ZSB1bnRpbCB0aGUg
OC4yIHJlbGVhc2Ugb2YgdGhlIGRyaXZlcnMsIGJ1dA0KZm9yIGEgc2luZ2xlIHN0cmVhbSB3b3Jr
bG9hZCAod2hpY2ggaXQgYXBwZWFycyB5b3UgYXJlIHVzaW5nKSB0aGVzZSB3b3VsZA0Kbm90IGhl
bHAgYW55d2F5Lg0KDQoNCg0KDQoNCiAgSW4gbXkgcHJlc2VudGF0aW9uIEkgd2FzIHVzaW5nIEl4
aWEgQ2hhcmlvdCBhcyBteSB3b3JrbG9hZCBhcywgaW4gbXkNCmV4cGVyaWVuY2UsIHRoaXMgaXMg
b25lIG9mIHRoZSBmZXcgYmVuY2htYXJrcyB0aGF0IGFjdHVhbGx5IHdvcmtzIHdlbGwgb24NCldp
bmRvd3MuIEkgYmVsaWV2ZSBpcGVyZjMgaXMgc3RpbGwgdXNpbmcgc3luY2hyb25vdXMgc29ja2V0
cyB3aGljaCBoYXZlDQpuZXZlciB3b3JrZWQgd2VsbCBvbiBXaW5kb3dzLCB3aGVyZWFzIElJUkMg
Q2hhcmlvdCB1c2VzIG92ZXJsYXBwZWQgSS9PLiBJ4oCZbQ0Kbm90IGZhbWlsaWFyIHdpdGggdXNp
bmcgaXBlcmYzIHNvIEkgY2Fu4oCZdCBzdWdnZXN0IHRoZSBiZXN0IHdheSB0byB0dW5lIGl0DQpi
dXQgeW91IHNob3VsZCBwcm9iYWJseSB3aXJlc2hhcmsgeW91ciBUQ1Agc3RyZWFtcyB3aGVuIHJ1
bm5pbmcgaW4gYm90aA0KZGlyZWN0aW9ucyB0byBzZWUgd2hhdCBzb3J0IG9mIGRpZmZlcmVuY2Ug
eW91IGFyZSBzZWVpbmcuDQoNCg0KDQoNCg0KICBDaGVlcnMsDQoNCg0KDQoNCg0KICAgIFBhdWwN
Cg0KDQoNCg0KDQpGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0bzp3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCkJlaGFsZiBPZiBNYWxhIEFuYW5kDQpTZW50OiAw
OSBTZXB0ZW1iZXIgMjAxNyAxNzoxMw0KVG86IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZw0KU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gV2luZG93cyAyMDE2IG5ldHdvcmsgcGVyZm9y
bWFuY2Ugb24gWGVuDQoNCg0KDQoNCg0KSSBoYXZlIHR3byBWTXMgcnVubmluZyBXaW5kb3dzIDIw
MTYgb24gdHdvIGRpZmZlcmVudCBob3N0cywgd2l0aCBzaW5nbGUgdGNwDQpzdHJlYW0gaXBlcmYz
LCBJIGNhbiBnZXQgb25seSB+MSBHYnBzLiBJIGFtIHVzaW5nIFdpbmRvd3MgUFYgZHJpdmVyIHZl
cnNpb24NCjguMS4wLjQyLg0KDQpJZiBJIHJ1biBpcGVyZjMgc2VydmVyIG9uIGEgTGludXggVWJ1
bnR1IFZNLCBpcGVyZjMgY2xpZW50IG9uIFdpbmRvd3MgMjAxNg0KSSBnZXQgfjNHYnBzLiBJZiBJ
IHJldmVyc2Ugc2VydmVyIGFuZCBjbGllbnQgKHNlcnZlciBvbiBXaW5kb3dzIGFuZCBjbGllbnQN
Cm9uIExpbnV4IFZNKSwgSSBnZXQgb25seSB+MSBHYnBzLiBTbyBjbGVhcmx5IHRoZSBwcm9ibGVt
IGlzIG9uIFdpbmRvd3MNCnJlY2VpdmUgc2lkZSBwYXRoLg0KDQpOZXRzaCBpbnQgdGNwIHNob3cg
Z2xvYmFsIGhhcw0KDQpSU1MsIFJTQyBhcmUgZW5hYmxlZC4NCkF1dG8gdHVuaW5nIGlzIHNldCB0
byBleHBlcmltZW50YWwgKHRyaWVkIGFsbCB2YXJpYXRpb25zLCBkaXNhYmxlZCwgc2V0DQp3aW5k
b3cgc2l6ZSBpbiByZWdpc3RyeSBldGMuLCkNCg0KTmV0c2ggaW50IHRjcCBzaG93IHN1cHBsZW1l
bnRhbCBoYXMNCkkgc2V0IGNvbmdlc3Rpb24gY29udHJvbCB0byBjdGNwDQoNCkkgc3RpbGwgZG9u
J3QgZ2V0IG1vcmUgdGhhbiAxIEdicHMuDQoNCkkgc2F3IFBhdWwgRHVycmFudCdzIHByZXNlbnRh
dGlvbiB3aGVyZSBoZSBzaG93ZWQgOCBHYnBzIG9uIHR3byBWTXMgcnVubmluZw0KV2luZG93cyAx
MCBvbiB0aGUgc2FtZSBob3N0LiBTbyBJIHRyaWVkIHR3byBWTXMgcnVubmluZyBXaW5kb3dzIDIw
MTYgb24gdGhlDQpzYW1lIGhvc3QsIEkgc3RpbGwgZ2V0IG9ubHkgMSBHYnBzLg0KDQpJcyB0aGlz
IGEgV2luZG93cyAyMDE2IHNwZWNpZmljIHByb2JsZW0gb3IgZG9lcyBXaW5kb3dzIDIwMTYgYW5k
L29yIERvbTANClhlbiBuZWVkIHR1bmluZ3M/DQoNCg0KDQpUaGFua3MsDQpNYWxhDQoNCg0KDQoN
Cg0K

--1__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324
Content-Transfer-Encoding: base64
Content-type: text/html; charset=UTF-8
Content-Disposition: inline

PGh0bWw+PGJvZHk+PHA+PGZvbnQgc2l6ZT0iMiI+VGhhbmtzIFBhdWwuPC9mb250Pjxicj48YnI+
PGZvbnQgc2l6ZT0iMiI+SSBjb21wYXJlZCB0Y3BkdW1wIGZyb20gYm90aCBydW5zLCB0aGUgV2lu
ZG93cyB0Y3Agd2luZG93IHNpemUgaXMgfjIwMGsgIHdoZXJlYXMgTGludXggdGNwIHdpbmRvdyBz
aXplIGlzICZndDsgMU1CLiAgPC9mb250Pjxicj48YnI+PGZvbnQgc2l6ZT0iMiI+SW4gdGhlIGdv
b2QgY2FzZSw8L2ZvbnQ+PGJyPjxicj48Zm9udCBzaXplPSIyIj5MaW51eCBpcyBhYmxlIHRvIHJl
Y2VpdmUgbGFyZ2UgZGF0YSBhbmQgV2luZG93cyBpcyBhYmxlIHRvIHNlbmQgdGhlIGRhdGEuIDwv
Zm9udD48YnI+PGJyPjxmb250IHNpemU9IjIiPkluIHRoZSBiYWQgY2FzZSw8L2ZvbnQ+PGJyPjxm
b250IHNpemU9IjIiPiAgICAgIFdpbmRvd3MgaXMgb25seSByZWNlaXZpbmcgMjk4NiBieXRlcyBh
dCBhIHRpbWUgYW5kIHNlbmRpbmcgYWNrIG9ubHkgZm9yIDI5ODYgZXZlbiB0aG91Z2ggTGludXgg
aXMgc2VuZGluZyBsYXJnZSBzZWdtZW50cy4gV2luZG93cyBzZW5kcyBtdWx0aXBsZSBhY2tzIGZv
ciBlYWNoIGxhcmdlIHNlZ21lbnQuPC9mb250Pjxicj48YnI+PGZvbnQgc2l6ZT0iMiI+SSB0cmll
ZCBpbmNyZWFzaW5nIFdpbmRvdyBzaXplIGluIHRoZSBSZWdpc3RyeSwgIGFzIEkgbWVudGlvbmVk
IGVhcmxpZXIsIEkgcGxheWVkIHdpdGggYXV0by10dW5pbmcgbGV2ZWxzIGFsc28uPC9mb250Pjxi
cj48YnI+PGZvbnQgc2l6ZT0iMiI+T24gYW5vdGhlciBub3RlLCBkbyB5b3Uga25vdyB3aGVuIFhl
biBUb29sIHdvdWxkIGluY2x1ZGUgOC4yIHZlcnNpb24gcHYgZHJpdmVycz8gPGJyPjxicj5UaGFu
a3MsPGJyPiAgICBNYWxhPGJyPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4gIDwvZm9udD48YnI+PGJy
PjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9ImNpZDoxX189OEZCQjBCMDhERjlDMTMy
NDhmOWU4YTkzZGY5Mzg2OTA5MThjOEZCQCIgYm9yZGVyPSIwIiBhbHQ9IkluYWN0aXZlIGhpZGUg
ZGV0YWlscyBmb3IgUGF1bCBEdXJyYW50IC0tLTA5LzExLzIwMTcgMTA6MDQ6NTcgQU0tLS1NYWxh
LCAgIFRoZSBSU1MgY2hhbmdlcyBkaWQgbm90IGFycml2ZSB1bnRpbCB0aGUgOC4yIHJlbGVhc2Ui
Pjxmb250IHNpemU9IjIiIGNvbG9yPSIjNDI0MjgyIj5QYXVsIER1cnJhbnQgLS0tMDkvMTEvMjAx
NyAxMDowNDo1NyBBTS0tLU1hbGEsICAgVGhlIFJTUyBjaGFuZ2VzIGRpZCBub3QgYXJyaXZlIHVu
dGlsIHRoZSA4LjIgcmVsZWFzZSBvZiB0aGUgZHJpdmVycywgYnV0IGZvciBhIHNpbmdsZSBzdHJl
YW08L2ZvbnQ+PGJyPjxicj48Zm9udCBzaXplPSIyIiBjb2xvcj0iIzVGNUY1RiI+RnJvbTogICAg
ICAgIDwvZm9udD48Zm9udCBzaXplPSIyIj5QYXVsIER1cnJhbnQgJmx0O1BhdWwuRHVycmFudEBj
aXRyaXguY29tJmd0OzwvZm9udD48YnI+PGZvbnQgc2l6ZT0iMiIgY29sb3I9IiM1RjVGNUYiPlRv
OiAgICAgICAgPC9mb250Pjxmb250IHNpemU9IjIiPidNYWxhIEFuYW5kJyAmbHQ7bWFuYW5kQHVz
LmlibS5jb20mZ3Q7LCAmcXVvdDt3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcmcXVv
dDsgJmx0O3dpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyZndDs8L2ZvbnQ+PGJyPjxm
b250IHNpemU9IjIiIGNvbG9yPSIjNUY1RjVGIj5EYXRlOiAgICAgICAgPC9mb250Pjxmb250IHNp
emU9IjIiPjA5LzExLzIwMTcgMTA6MDQgQU08L2ZvbnQ+PGJyPjxmb250IHNpemU9IjIiIGNvbG9y
PSIjNUY1RjVGIj5TdWJqZWN0OiAgICAgICAgPC9mb250Pjxmb250IHNpemU9IjIiPlJFOiBbd2lu
LXB2LWRldmVsXSBXaW5kb3dzIDIwMTYgbmV0d29yayBwZXJmb3JtYW5jZSBvbiBYZW48L2ZvbnQ+
PGJyPjxociB3aWR0aD0iMTAwJSIgc2l6ZT0iMiIgYWxpZ249ImxlZnQiIG5vc2hhZGUgc3R5bGU9
ImNvbG9yOiM4MDkxQTU7ICI+PGJyPjxicj48YnI+PGZvbnQgY29sb3I9IiMxRjQ5N0QiPk1hbGEs
PC9mb250PjxwPjxmb250IGNvbG9yPSIjMUY0OTdEIj4gPC9mb250PjxwPjxmb250IGNvbG9yPSIj
MUY0OTdEIj4gIFRoZSBSU1MgY2hhbmdlcyBkaWQgbm90IGFycml2ZSB1bnRpbCB0aGUgOC4yIHJl
bGVhc2Ugb2YgdGhlIGRyaXZlcnMsIGJ1dCBmb3IgYSBzaW5nbGUgc3RyZWFtIHdvcmtsb2FkICh3
aGljaCBpdCBhcHBlYXJzIHlvdSBhcmUgdXNpbmcpIHRoZXNlIHdvdWxkIG5vdCBoZWxwIGFueXdh
eS48L2ZvbnQ+PHA+PGZvbnQgY29sb3I9IiMxRjQ5N0QiPiA8L2ZvbnQ+PHA+PGZvbnQgY29sb3I9
IiMxRjQ5N0QiPiAgSW4gbXkgcHJlc2VudGF0aW9uIEkgd2FzIHVzaW5nIEl4aWEgQ2hhcmlvdCBh
cyBteSB3b3JrbG9hZCBhcywgaW4gbXkgZXhwZXJpZW5jZSwgdGhpcyBpcyBvbmUgb2YgdGhlIGZl
dyBiZW5jaG1hcmtzIHRoYXQgYWN0dWFsbHkgd29ya3Mgd2VsbCBvbiBXaW5kb3dzLiBJIGJlbGll
dmUgaXBlcmYzIGlzIHN0aWxsIHVzaW5nIHN5bmNocm9ub3VzIHNvY2tldHMgd2hpY2ggaGF2ZSBu
ZXZlciB3b3JrZWQgd2VsbCBvbiBXaW5kb3dzLCB3aGVyZWFzIElJUkMgQ2hhcmlvdCB1c2VzIG92
ZXJsYXBwZWQgSS9PLiBJ4oCZbSBub3QgZmFtaWxpYXIgd2l0aCB1c2luZyBpcGVyZjMgc28gSSBj
YW7igJl0IHN1Z2dlc3QgdGhlIGJlc3Qgd2F5IHRvIHR1bmUgaXQgYnV0IHlvdSBzaG91bGQgcHJv
YmFibHkgd2lyZXNoYXJrIHlvdXIgVENQIHN0cmVhbXMgd2hlbiBydW5uaW5nIGluIGJvdGggZGly
ZWN0aW9ucyB0byBzZWUgd2hhdCBzb3J0IG9mIGRpZmZlcmVuY2UgeW91IGFyZSBzZWVpbmcuPC9m
b250PjxwPjxmb250IGNvbG9yPSIjMUY0OTdEIj4gPC9mb250PjxwPjxmb250IGNvbG9yPSIjMUY0
OTdEIj4gIENoZWVycyw8L2ZvbnQ+PHA+PGZvbnQgY29sb3I9IiMxRjQ5N0QiPiA8L2ZvbnQ+PHA+
PGZvbnQgY29sb3I9IiMxRjQ5N0QiPiAgICBQYXVsPC9mb250PjxwPjxmb250IGNvbG9yPSIjMUY0
OTdEIj4gPC9mb250PjxwPjxiPkZyb206PC9iPiB3aW4tcHYtZGV2ZWwgWzxhIGhyZWY9Im1haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyI+bWFpbHRvOndpbi1w
di1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnPC9hPl0gPGI+T24gQmVoYWxmIE9m
IDwvYj5NYWxhIEFuYW5kPGI+PGJyPlNlbnQ6PC9iPiAwOSBTZXB0ZW1iZXIgMjAxNyAxNzoxMzxi
Pjxicj5Ubzo8L2I+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzxiPjxicj5TdWJq
ZWN0OjwvYj4gW3dpbi1wdi1kZXZlbF0gV2luZG93cyAyMDE2IG5ldHdvcmsgcGVyZm9ybWFuY2Ug
b24gWGVuDQo8cD48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiA8L2ZvbnQ+PHA+PGZvbnQg
c2l6ZT0iMiIgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5JIGhhdmUgdHdvIFZNcyBydW5uaW5nIFdp
bmRvd3MgMjAxNiBvbiB0d28gZGlmZmVyZW50IGhvc3RzLCB3aXRoIHNpbmdsZSB0Y3Agc3RyZWFt
IGlwZXJmMywgSSBjYW4gZ2V0IG9ubHkgfjEgR2Jwcy4gSSBhbSB1c2luZyBXaW5kb3dzIFBWIGRy
aXZlciB2ZXJzaW9uIDguMS4wLjQyLjwvZm9udD48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4i
Pjxicj48L2ZvbnQ+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48YnI+SWYg
SSBydW4gaXBlcmYzIHNlcnZlciBvbiBhIExpbnV4IFVidW50dSBWTSwgaXBlcmYzIGNsaWVudCBv
biBXaW5kb3dzIDIwMTYgSSBnZXQgfjNHYnBzLiBJZiBJIHJldmVyc2Ugc2VydmVyIGFuZCBjbGll
bnQgKHNlcnZlciBvbiBXaW5kb3dzIGFuZCBjbGllbnQgb24gTGludXggVk0pLCBJIGdldCBvbmx5
IH4xIEdicHMuIFNvIGNsZWFybHkgdGhlIHByb2JsZW0gaXMgb24gV2luZG93cyByZWNlaXZlIHNp
ZGUgcGF0aC48L2ZvbnQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48YnI+PC9mb250Pjxm
b250IHNpemU9IjIiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPk5ldHNoIGludCB0Y3Agc2hv
dyBnbG9iYWwgaGFzPC9mb250Pjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPjwvZm9u
dD48Zm9udCBzaXplPSIyIiBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxicj5SU1MsIFJTQyBhcmUg
ZW5hYmxlZC48YnI+QXV0byB0dW5pbmcgaXMgc2V0IHRvIGV4cGVyaW1lbnRhbCAodHJpZWQgYWxs
IHZhcmlhdGlvbnMsIGRpc2FibGVkLCBzZXQgd2luZG93IHNpemUgaW4gcmVnaXN0cnkgZXRjLiwp
PC9mb250Pjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPjwvZm9udD48Zm9udCBzaXpl
PSIyIiBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxicj5OZXRzaCBpbnQgdGNwIHNob3cgc3VwcGxl
bWVudGFsIGhhczxicj5JIHNldCBjb25nZXN0aW9uIGNvbnRyb2wgdG8gY3RjcDwvZm9udD48Zm9u
dCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxicj48L2ZvbnQ+PGZvbnQgc2l6ZT0iMiIgZmFjZT0i
VGltZXMgTmV3IFJvbWFuIj48YnI+SSBzdGlsbCBkb24ndCBnZXQgbW9yZSB0aGFuIDEgR2Jwcy48
L2ZvbnQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48YnI+PC9mb250Pjxmb250IHNpemU9
IjIiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPkkgc2F3IFBhdWwgRHVycmFudCdzIHByZXNl
bnRhdGlvbiB3aGVyZSBoZSBzaG93ZWQgOCBHYnBzIG9uIHR3byBWTXMgcnVubmluZyBXaW5kb3dz
IDEwIG9uIHRoZSBzYW1lIGhvc3QuIFNvIEkgdHJpZWQgdHdvIFZNcyBydW5uaW5nIFdpbmRvd3Mg
MjAxNiBvbiB0aGUgc2FtZSBob3N0LCBJIHN0aWxsIGdldCBvbmx5IDEgR2Jwcy4gPC9mb250Pjxm
b250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPjwvZm9udD48Zm9udCBzaXplPSIyIiBmYWNl
PSJUaW1lcyBOZXcgUm9tYW4iPjxicj5JcyB0aGlzIGEgV2luZG93cyAyMDE2IHNwZWNpZmljIHBy
b2JsZW0gb3IgZG9lcyBXaW5kb3dzIDIwMTYgYW5kL29yIERvbTAgWGVuIG5lZWQgdHVuaW5ncz88
L2ZvbnQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48YnI+PC9mb250Pjxmb250IHNpemU9
IjIiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGJyPjxicj48YnI+VGhhbmtzLDxicj5NYWxhPC9m
b250PjxwPjxwPjxCUj4NCjwvYm9keT48L2h0bWw+DQo=

--1__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324--


--0__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324
Content-type: image/gif; 
	name="graycol.gif"
Content-Disposition: inline; filename="graycol.gif"
Content-ID: <1__=8FBB0B08DF9C13248f9e8a93df938690918c8FB@>
Content-Transfer-Encoding: base64

R0lGODlhEAAQAKECAMzMzAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIXlI+py+0PopwxUbpu
ZRfKZ2zgSJbmSRYAIf4fT3B0aW1pemVkIGJ5IFVsZWFkIFNtYXJ0U2F2ZXIhAAA7


--0__=8FBB0B08DF9C13248f9e8a93df938690918c8FBB0B08DF9C1324--



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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

--===============8028035239717108457==--



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 18 08:29:54 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Sep 2017 08:29:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dtrRA-0006Ii-IO; Mon, 18 Sep 2017 08:29:52 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=427434608=Paul.Durrant@citrix.com>)
 id 1dtrR9-0006Ib-8y
 for win-pv-devel@lists.xenproject.org; Mon, 18 Sep 2017 08:29:51 +0000
Received: from [193.109.254.147] by server-6.bemta-6.messagelabs.com id
 C5/B6-03423-EF38FB95; Mon, 18 Sep 2017 08:29:50 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNKsWRWlGSWpSXmKPExsWyU9JRQvdX8/5
 Igx3tYhZ/Fic6MHoc/nCFJYAxijUzLym/IoE1o/PFZLaCx4tZKq7ev8XYwLhyDksXIyeHhECS
 xLZv/5hBbDYBHYmlR+czgdgiAioSb9c8BqthFvCWuHryICOILSzgLLFhy01miBoXiedrZrFD2
 E4S21vmgtWzCKhK9B+aAFbDK+AucXrxdNYuRi4OIYGPjBIHjh0GG8QpkCCx/8xRsGZGAVmJL4
 2rmSGWiUvcegJxhISAiMTDi6fZIGxRiZeP/7FC2AYSW5fuYwEZyizQwShx5981dohtghInZz5
 hmcAoNAvJrFnI6mYhqYMoypX4PukQ8yxGDiBbU2L9Ln2IsKLElO6H7BC2hkTrnLnsmOI6Epsv
 7WSBibd1zmaCsBcxSvQt8oGpmXXlMzOy3gWMvKsY1YtTi8pSi3Qt9ZKKMtMzSnITM3N0DQ3M9
 HJTi4sT01NzEpOK9ZLzczcxAiOYAQh2MN7dFHCIUZKDSUmUVzRyf6QQX1J+SmVGYnFGfFFpTm
 rxIUYZDg4lCd6tTUA5waLU9NSKtMwcYCqBSUtw8CiJ8LIA04kQb3FBYm5xZjpE6hSjK8exTZf
 /MHHMuHkXSG4Ak/vA5JNr8/4yCbHk5eelSonzuoA0C4A0Z5TmwY2GpcFLjLJSwryMQMcK8RSk
 FuVmlqDKv2IU52BUEubdB3IhT2ZeCdwFr4COYwI6rmXHHpDjShIRUlINjJoNyyIaNy+buDXj6
 qLAvc5Tzz/v52afZlFZwRq5ya30Mt+eE8+VH8k9Tb2szCJeoOpyaVGcfIObc61YZcnsv2XyRp
 WNtx9u+zD97JsPif3vOqYHm8t+aw962Xw/dqrn4e5VO/fIrtn1641L5PpuK9HS1IkSb9j+rNK
 UOJK7UPVXQt/z18Y/TJVYijMSDbWYi4oTAYkTabl+AwAA
X-Env-Sender: prvs=427434608=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1505723386!117314388!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.9 required=7.0 tests=BODY_RANDOM_LONG,
 EXTRA_MPART_TYPE,HTML_90_100,HTML_MESSAGE,received_headers: No Received 
 headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24331 invoked from network); 18 Sep 2017 08:29:46 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 18 Sep 2017 08:29:46 -0000
X-IronPort-AV: E=Sophos;i="5.42,411,1500940800"; 
 d="gif'147?scan'147,208,217,147";a="52992557"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: 'Mala Anand' <manand@us.ibm.com>
Thread-Topic: [win-pv-devel] Windows 2016 network performance on Xen
Thread-Index: AQHTKdQYRtICzMu5GkqAoKJnkQaRU6Kvx1AAgAPN9oCABscPEA==
Date: Mon, 18 Sep 2017 08:29:45 +0000
Message-ID: <082994fc2c2e4149864868f7a540f2b2@AMSPEX02CL03.citrite.net>
References: <OFCF6198A6.7650F0E8-ON00258196.00826FBA-86258197.0001295F@notes.na.collabserv.com>
 <bed4987a46b14aabadee216db739504a@AMSPEX02CL03.citrite.net>
 <OF0D7EF803.E038DC2C-ON0025819B.000F95B4-8625819B.0010448E@notes.na.collabserv.com>
In-Reply-To: <OF0D7EF803.E038DC2C-ON0025819B.000F95B4-8625819B.0010448E@notes.na.collabserv.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] Windows 2016 network performance on Xen
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============6599430168415295504=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

--===============6599430168415295504==
Content-Language: en-US
Content-Type: multipart/related;
	boundary="_004_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_";
	type="multipart/alternative"

--_004_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_
Content-Type: multipart/alternative;
	boundary="_000_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_"

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

TWFsYSwNCg0KICBJ4oCZbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgeW91ciBxdWVzdGlvbi4gV2hh
dCBkbyB5b3UgbWVhbiBieSDigJhYZW4gVG9vbOKAmS4gQXJlIHlvdSByZWZlcnJpbmcgdG8gdGhl
IENpdHJpeCBicmFuZGVkIFBWIGRyaXZlcnM/DQoNCiAgUGF1bA0KDQpGcm9tOiBNYWxhIEFuYW5k
IFttYWlsdG86bWFuYW5kQHVzLmlibS5jb21dDQpTZW50OiAxNCBTZXB0ZW1iZXIgMjAxNyAwMzo1
OA0KVG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+DQpDYzogd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQpTdWJqZWN0OiBSRTogW3dpbi1wdi1kZXZlbF0g
V2luZG93cyAyMDE2IG5ldHdvcmsgcGVyZm9ybWFuY2Ugb24gWGVuDQoNCg0KVGhhbmtzIFBhdWwu
DQoNCkkgY29tcGFyZWQgdGNwZHVtcCBmcm9tIGJvdGggcnVucywgdGhlIFdpbmRvd3MgdGNwIHdp
bmRvdyBzaXplIGlzIH4yMDBrIHdoZXJlYXMgTGludXggdGNwIHdpbmRvdyBzaXplIGlzID4gMU1C
Lg0KDQpJbiB0aGUgZ29vZCBjYXNlLA0KDQpMaW51eCBpcyBhYmxlIHRvIHJlY2VpdmUgbGFyZ2Ug
ZGF0YSBhbmQgV2luZG93cyBpcyBhYmxlIHRvIHNlbmQgdGhlIGRhdGEuDQoNCkluIHRoZSBiYWQg
Y2FzZSwNCldpbmRvd3MgaXMgb25seSByZWNlaXZpbmcgMjk4NiBieXRlcyBhdCBhIHRpbWUgYW5k
IHNlbmRpbmcgYWNrIG9ubHkgZm9yIDI5ODYgZXZlbiB0aG91Z2ggTGludXggaXMgc2VuZGluZyBs
YXJnZSBzZWdtZW50cy4gV2luZG93cyBzZW5kcyBtdWx0aXBsZSBhY2tzIGZvciBlYWNoIGxhcmdl
IHNlZ21lbnQuDQoNCkkgdHJpZWQgaW5jcmVhc2luZyBXaW5kb3cgc2l6ZSBpbiB0aGUgUmVnaXN0
cnksIGFzIEkgbWVudGlvbmVkIGVhcmxpZXIsIEkgcGxheWVkIHdpdGggYXV0by10dW5pbmcgbGV2
ZWxzIGFsc28uDQoNCk9uIGFub3RoZXIgbm90ZSwgZG8geW91IGtub3cgd2hlbiBYZW4gVG9vbCB3
b3VsZCBpbmNsdWRlIDguMiB2ZXJzaW9uIHB2IGRyaXZlcnM/DQoNClRoYW5rcywNCk1hbGENCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KDQoNCltJbmFjdGl2ZSBoaWRlIGRldGFpbHMgZm9yIFBhdWwgRHVy
cmFudCAtLS0wOS8xMS8yMDE3IDEwOjA0OjU3IEFNLS0tTWFsYSwgICBUaGUgUlNTIGNoYW5nZXMg
ZGlkIG5vdCBhcnJpdmUgdW50aWwgdGhlIDguMiByZWxlYXNlXVBhdWwgRHVycmFudCAtLS0wOS8x
MS8yMDE3IDEwOjA0OjU3IEFNLS0tTWFsYSwgVGhlIFJTUyBjaGFuZ2VzIGRpZCBub3QgYXJyaXZl
IHVudGlsIHRoZSA4LjIgcmVsZWFzZSBvZiB0aGUgZHJpdmVycywgYnV0IGZvciBhIHNpbmdsZSBz
dHJlYW0NCg0KRnJvbTogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbTxtYWls
dG86UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Pg0KVG86ICdNYWxhIEFuYW5kJyA8bWFuYW5kQHVz
LmlibS5jb208bWFpbHRvOm1hbmFuZEB1cy5pYm0uY29tPj4sICJ3aW4tcHYtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmc8bWFpbHRvOndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4i
IDx3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc8bWFpbHRvOndpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZz4+DQpEYXRlOiAwOS8xMS8yMDE3IDEwOjA0IEFNDQpTdWJqZWN0
OiBSRTogW3dpbi1wdi1kZXZlbF0gV2luZG93cyAyMDE2IG5ldHdvcmsgcGVyZm9ybWFuY2Ugb24g
WGVuDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQoNCg0KDQpNYWxhLA0KDQpU
aGUgUlNTIGNoYW5nZXMgZGlkIG5vdCBhcnJpdmUgdW50aWwgdGhlIDguMiByZWxlYXNlIG9mIHRo
ZSBkcml2ZXJzLCBidXQgZm9yIGEgc2luZ2xlIHN0cmVhbSB3b3JrbG9hZCAod2hpY2ggaXQgYXBw
ZWFycyB5b3UgYXJlIHVzaW5nKSB0aGVzZSB3b3VsZCBub3QgaGVscCBhbnl3YXkuDQoNCkluIG15
IHByZXNlbnRhdGlvbiBJIHdhcyB1c2luZyBJeGlhIENoYXJpb3QgYXMgbXkgd29ya2xvYWQgYXMs
IGluIG15IGV4cGVyaWVuY2UsIHRoaXMgaXMgb25lIG9mIHRoZSBmZXcgYmVuY2htYXJrcyB0aGF0
IGFjdHVhbGx5IHdvcmtzIHdlbGwgb24gV2luZG93cy4gSSBiZWxpZXZlIGlwZXJmMyBpcyBzdGls
bCB1c2luZyBzeW5jaHJvbm91cyBzb2NrZXRzIHdoaWNoIGhhdmUgbmV2ZXIgd29ya2VkIHdlbGwg
b24gV2luZG93cywgd2hlcmVhcyBJSVJDIENoYXJpb3QgdXNlcyBvdmVybGFwcGVkIEkvTy4gSeKA
mW0gbm90IGZhbWlsaWFyIHdpdGggdXNpbmcgaXBlcmYzIHNvIEkgY2Fu4oCZdCBzdWdnZXN0IHRo
ZSBiZXN0IHdheSB0byB0dW5lIGl0IGJ1dCB5b3Ugc2hvdWxkIHByb2JhYmx5IHdpcmVzaGFyayB5
b3VyIFRDUCBzdHJlYW1zIHdoZW4gcnVubmluZyBpbiBib3RoIGRpcmVjdGlvbnMgdG8gc2VlIHdo
YXQgc29ydCBvZiBkaWZmZXJlbmNlIHlvdSBhcmUgc2VlaW5nLg0KDQpDaGVlcnMsDQoNClBhdWwN
Cg0KRnJvbTogd2luLXB2LWRldmVsIFttYWlsdG86d2luLXB2LWRldmVsLWJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmddIE9uIEJlaGFsZiBPZiBNYWxhIEFuYW5kDQpTZW50OiAwOSBTZXB0ZW1i
ZXIgMjAxNyAxNzoxMw0KVG86IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzxtYWls
dG86d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnPg0KU3ViamVjdDogW3dpbi1wdi1k
ZXZlbF0gV2luZG93cyAyMDE2IG5ldHdvcmsgcGVyZm9ybWFuY2Ugb24gWGVuDQoNCkkgaGF2ZSB0
d28gVk1zIHJ1bm5pbmcgV2luZG93cyAyMDE2IG9uIHR3byBkaWZmZXJlbnQgaG9zdHMsIHdpdGgg
c2luZ2xlIHRjcCBzdHJlYW0gaXBlcmYzLCBJIGNhbiBnZXQgb25seSB+MSBHYnBzLiBJIGFtIHVz
aW5nIFdpbmRvd3MgUFYgZHJpdmVyIHZlcnNpb24gOC4xLjAuNDIuDQoNCklmIEkgcnVuIGlwZXJm
MyBzZXJ2ZXIgb24gYSBMaW51eCBVYnVudHUgVk0sIGlwZXJmMyBjbGllbnQgb24gV2luZG93cyAy
MDE2IEkgZ2V0IH4zR2Jwcy4gSWYgSSByZXZlcnNlIHNlcnZlciBhbmQgY2xpZW50IChzZXJ2ZXIg
b24gV2luZG93cyBhbmQgY2xpZW50IG9uIExpbnV4IFZNKSwgSSBnZXQgb25seSB+MSBHYnBzLiBT
byBjbGVhcmx5IHRoZSBwcm9ibGVtIGlzIG9uIFdpbmRvd3MgcmVjZWl2ZSBzaWRlIHBhdGguDQoN
Ck5ldHNoIGludCB0Y3Agc2hvdyBnbG9iYWwgaGFzDQoNClJTUywgUlNDIGFyZSBlbmFibGVkLg0K
QXV0byB0dW5pbmcgaXMgc2V0IHRvIGV4cGVyaW1lbnRhbCAodHJpZWQgYWxsIHZhcmlhdGlvbnMs
IGRpc2FibGVkLCBzZXQgd2luZG93IHNpemUgaW4gcmVnaXN0cnkgZXRjLiwpDQoNCk5ldHNoIGlu
dCB0Y3Agc2hvdyBzdXBwbGVtZW50YWwgaGFzDQpJIHNldCBjb25nZXN0aW9uIGNvbnRyb2wgdG8g
Y3RjcA0KDQpJIHN0aWxsIGRvbid0IGdldCBtb3JlIHRoYW4gMSBHYnBzLg0KDQpJIHNhdyBQYXVs
IER1cnJhbnQncyBwcmVzZW50YXRpb24gd2hlcmUgaGUgc2hvd2VkIDggR2JwcyBvbiB0d28gVk1z
IHJ1bm5pbmcgV2luZG93cyAxMCBvbiB0aGUgc2FtZSBob3N0LiBTbyBJIHRyaWVkIHR3byBWTXMg
cnVubmluZyBXaW5kb3dzIDIwMTYgb24gdGhlIHNhbWUgaG9zdCwgSSBzdGlsbCBnZXQgb25seSAx
IEdicHMuDQoNCklzIHRoaXMgYSBXaW5kb3dzIDIwMTYgc3BlY2lmaWMgcHJvYmxlbSBvciBkb2Vz
IFdpbmRvd3MgMjAxNiBhbmQvb3IgRG9tMCBYZW4gbmVlZCB0dW5pbmdzPw0KDQoNCg0KVGhhbmtz
LA0KTWFsYQ0KDQoNCg==

--_000_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IlByb2dJZCIg
Y29udGVudD0iV29yZC5Eb2N1bWVudCI+DQo8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9
Ik1pY3Jvc29mdCBXb3JkIDE1Ij4NCjxtZXRhIG5hbWU9Ik9yaWdpbmF0b3IiIGNvbnRlbnQ9Ik1p
Y3Jvc29mdCBXb3JkIDE1Ij4NCjxsaW5rIHJlbD0iRmlsZS1MaXN0IiBocmVmPSJjaWQ6ZmlsZWxp
c3QueG1sQDAxRDMzMDYwLkE4REU3MDIwIj48bGluayByZWw9IkVkaXQtVGltZS1EYXRhIiBocmVm
PSJjaWQ6ZWRpdGRhdGEubXNvIj48IS0tW2lmICFtc29dPjxzdHlsZT52XDoqIHtiZWhhdmlvcjp1
cmwoI2RlZmF1bHQjVk1MKTt9DQpvXDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQp3
XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQouc2hhcGUge2JlaGF2aW9yOnVybCgj
ZGVmYXVsdCNWTUwpO30NCjwvc3R5bGU+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4
bWw+DQo8bzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPg0KPG86QWxsb3dQTkcvPg0KPG86RG9Ob3RS
ZWx5T25DU1MvPg0KPC9vOk9mZmljZURvY3VtZW50U2V0dGluZ3M+DQo8L3htbD48IVtlbmRpZl0t
LT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjx3OldvcmREb2N1bWVudD4NCjx3OlNwZWxsaW5n
U3RhdGU+Q2xlYW48L3c6U3BlbGxpbmdTdGF0ZT4NCjx3OlRyYWNrTW92ZXMvPg0KPHc6VHJhY2tG
b3JtYXR0aW5nLz4NCjx3OkVudmVsb3BlVmlzLz4NCjx3OlZhbGlkYXRlQWdhaW5zdFNjaGVtYXMv
Pg0KPHc6U2F2ZUlmWE1MSW52YWxpZD5mYWxzZTwvdzpTYXZlSWZYTUxJbnZhbGlkPg0KPHc6SWdu
b3JlTWl4ZWRDb250ZW50PmZhbHNlPC93Oklnbm9yZU1peGVkQ29udGVudD4NCjx3OkFsd2F5c1No
b3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD4NCjx3
OkRvTm90UHJvbW90ZVFGLz4NCjx3OkxpZFRoZW1lT3RoZXI+RU4tR0I8L3c6TGlkVGhlbWVPdGhl
cj4NCjx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRoZW1lQXNpYW4+DQo8dzpMaWRUaGVt
ZUNvbXBsZXhTY3JpcHQ+WC1OT05FPC93OkxpZFRoZW1lQ29tcGxleFNjcmlwdD4NCjx3OkNvbXBh
dGliaWxpdHk+DQo8dzpEb05vdEV4cGFuZFNoaWZ0UmV0dXJuLz4NCjx3OkJyZWFrV3JhcHBlZFRh
Ymxlcy8+DQo8dzpTcGxpdFBnQnJlYWtBbmRQYXJhTWFyay8+DQo8dzpFbmFibGVPcGVuVHlwZUtl
cm5pbmcvPg0KPC93OkNvbXBhdGliaWxpdHk+DQo8bTptYXRoUHI+DQo8bTptYXRoRm9udCBtOnZh
bD0iQ2FtYnJpYSBNYXRoIi8+DQo8bTpicmtCaW4gbTp2YWw9ImJlZm9yZSIvPg0KPG06YnJrQmlu
U3ViIG06dmFsPSImIzQ1Oy0iLz4NCjxtOnNtYWxsRnJhYyBtOnZhbD0ib2ZmIi8+DQo8bTpkaXNw
RGVmLz4NCjxtOmxNYXJnaW4gbTp2YWw9IjAiLz4NCjxtOnJNYXJnaW4gbTp2YWw9IjAiLz4NCjxt
OmRlZkpjIG06dmFsPSJjZW50ZXJHcm91cCIvPg0KPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIv
Pg0KPG06aW50TGltIG06dmFsPSJzdWJTdXAiLz4NCjxtOm5hcnlMaW0gbTp2YWw9InVuZE92ciIv
Pg0KPC9tOm1hdGhQcj48L3c6V29yZERvY3VtZW50Pg0KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtp
ZiBndGUgbXNvIDldPjx4bWw+DQo8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNl
IiBEZWZVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIERlZlNlbWlIaWRkZW49ImZhbHNlIiBEZWZRRm9y
bWF0PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5IiBMYXRlbnRTdHlsZUNvdW50PSIzNzEiPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIwIiBRRm9ybWF0PSJ0cnVlIiBO
YW1lPSJOb3JtYWwiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
OSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2Vk
PSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hl
blVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPg0KPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhp
ZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUi
IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0i
dHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcg
NiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlk
ZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVh
ZGluZyA3Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNl
bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1l
PSJoZWFkaW5nIDgiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
OSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUi
IE5hbWU9ImhlYWRpbmcgOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJpbmRleCAxIi8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVz
ZWQ9InRydWUiIE5hbWU9ImluZGV4IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggMyIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlk
ZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJpbmRleCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Imlu
ZGV4IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVl
IiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggNiIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBO
YW1lPSJpbmRleCA3Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRl
bj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9ImluZGV4IDgiLz4NCjx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i
dHJ1ZSIgTmFtZT0iaW5kZXggOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
InRvYyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBT
ZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRy
dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hl
blVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg
TmFtZT0idG9jIDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
MzkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRl
bj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhp
ZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0
cnVlIiBOYW1lPSJ0b2MgOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRl
V2hlblVzZWQ9InRydWUiIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFt
ZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2Vt
aUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9ImhlYWRlciIvPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5V
c2VkPSJ0cnVlIiBOYW1lPSJmb290ZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggaGVh
ZGluZyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNSIgU2Vt
aUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9
ImNhcHRpb24iLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0
cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5V
c2VkPSJ0cnVlIiBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
ImVudmVsb3BlIHJldHVybiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJmb290bm90ZSByZWZlcmVu
Y2UiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl
ZD0idHJ1ZSIgTmFtZT0ibGluZSBudW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0icGFnZSBu
dW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVl
IiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl
ZD0idHJ1ZSIgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRhYmxl
IG9mIGF1dGhvcml0aWVzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhp
ZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Im1hY3JvIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9
InRydWUiIE5hbWU9InRvYSBoZWFkaW5nIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX
aGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBCdWxsZXQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i
TGlzdCBOdW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVu
PSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCAyIi8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy
dWUiIE5hbWU9Ikxpc3QgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IDQiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl
ZD0idHJ1ZSIgTmFtZT0iTGlzdCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgQnVsbGV0
IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl
IiBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgQnVsbGV0
IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl
IiBOYW1lPSJMaXN0IE51bWJlciAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgTnVtYmVy
IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVGl0
bGUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQ2xvc2luZyIvPg0KPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1l
PSJTaWduYXR1cmUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
MSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkRlZmF1bHQg
UGFyYWdyYXBoIEZvbnQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlk
ZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0Ii8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVz
ZWQ9InRydWUiIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i
TGlzdCBDb250aW51ZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk
ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IENvbnRpbnVlIDIiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX
aGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBDb250aW51ZSAzIi8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h
bWU9Ikxpc3QgQ29udGludWUgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl
bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IENvbnRpbnVl
IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTWVzc2FnZSBIZWFkZXIiLz4NCjx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTEiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN1
YnRpdGxlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1
ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlNhbHV0YXRpb24iLz4NCjx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1
ZSIgTmFtZT0iRGF0ZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk
ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5k
ZW50Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIg
VW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJvZHkgVGV4dCBGaXJzdCBJbmRlbnQgMiIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdo
ZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3RlIEhlYWRpbmciLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i
Qm9keSBUZXh0IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVu
PSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0IDMiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl
ZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0IEluZGVudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
IkJvZHkgVGV4dCBJbmRlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl
bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCbG9jayBUZXh0Ii8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRl
V2hlblVzZWQ9InRydWUiIE5hbWU9Ikh5cGVybGluayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJG
b2xsb3dlZEh5cGVybGluayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJFbXBoYXNp
cyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVu
aGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJEb2N1bWVudCBNYXAiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg
TmFtZT0iUGxhaW4gVGV4dCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJFLW1haWwgU2lnbmF0dXJl
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5o
aWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgVG9wIG9mIEZvcm0iLz4NCjx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1
ZSIgTmFtZT0iSFRNTCBCb3R0b20gb2YgRm9ybSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3Jt
YWwgKFdlYikiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0
cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iSFRNTCBBY3JvbnltIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9
InRydWUiIE5hbWU9IkhUTUwgQWRkcmVzcyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIENp
dGUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV
bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iSFRNTCBDb2RlIi8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h
bWU9IkhUTUwgRGVmaW5pdGlvbiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl
bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIEtleWJvYXJk
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5o
aWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgUHJlZm9ybWF0dGVkIi8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy
dWUiIE5hbWU9IkhUTUwgU2FtcGxlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgVHlwZXdy
aXRlciIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi
IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIFZhcmlhYmxlIi8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy
dWUiIE5hbWU9Ik5vcm1hbCBUYWJsZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJhbm5vdGF0aW9u
IHN1YmplY3QiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0
cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTm8gTGlzdCIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl
IiBOYW1lPSJPdXRsaW5lIExpc3QgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJPdXRsaW5lIExp
c3QgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi
IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJPdXRsaW5lIExpc3QgMyIvPg0KPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0
cnVlIiBOYW1lPSJUYWJsZSBTaW1wbGUgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBT
aW1wbGUgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRy
dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBTaW1wbGUgMyIvPg0KPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2Vk
PSJ0cnVlIiBOYW1lPSJUYWJsZSBDbGFzc2ljIDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFi
bGUgQ2xhc3NpYyAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRl
bj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIENsYXNzaWMgMyIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdo
ZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDbGFzc2ljIDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFt
ZT0iVGFibGUgQ29sb3JmdWwgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl
bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb2xvcmZ1
bCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIg
VW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIENvbG9yZnVsIDMiLz4NCjx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i
dHJ1ZSIgTmFtZT0iVGFibGUgQ29sdW1ucyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxl
IENvbHVtbnMgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49
InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb2x1bW5zIDMiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVu
VXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgQ29sdW1ucyA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
IlRhYmxlIENvbHVtbnMgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI
aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDEiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX
aGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgR3JpZCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
IlRhYmxlIEdyaWQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk
ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDQiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVu
VXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgR3JpZCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRh
YmxlIEdyaWQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49
InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDciLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl
ZD0idHJ1ZSIgTmFtZT0iVGFibGUgR3JpZCA4Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxl
IExpc3QgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRy
dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBMaXN0IDIiLz4NCjx3OkxzZEV4
Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i
dHJ1ZSIgTmFtZT0iVGFibGUgTGlzdCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIExp
c3QgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi
IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBMaXN0IDUiLz4NCjx3OkxzZEV4Y2Vw
dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1
ZSIgTmFtZT0iVGFibGUgTGlzdCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIExpc3Qg
NyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVu
aGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBMaXN0IDgiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg
TmFtZT0iVGFibGUgM0QgZWZmZWN0cyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIDNE
IGVmZmVjdHMgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49
InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX
aGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgQ29udGVtcG9yYXJ5Ii8+DQo8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUi
IE5hbWU9IlRhYmxlIEVsZWdhbnQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBT
ZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgUHJvZmVz
c2lvbmFsIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1
ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIFN1YnRsZSAxIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9
InRydWUiIE5hbWU9IlRhYmxlIFN1YnRsZSAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxl
IFdlYiAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1
ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIFdlYiAyIi8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy
dWUiIE5hbWU9IlRhYmxlIFdlYiAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJhbGxvb24gVGV4
dCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0i
VGFibGUgR3JpZCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49
InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBUaGVtZSIvPg0KPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlBsYWNlaG9s
ZGVyIFRleHQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMSIg
UUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm8gU3BhY2luZyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyIvPg0KPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQg
R3JpZCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFt
ZT0iTWVkaXVtIFNoYWRpbmcgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSIvPg0KPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3Qg
MiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0i
TWVkaXVtIEdyaWQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0Ii8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFk
aW5nIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1l
PSJDb2xvcmZ1bCBMaXN0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp
dHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAxIi8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0
IEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYy
IiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAxIi8+DQo8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0g
U2hhZGluZyAyIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUmV2aXNpb24iLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzQiIFFGb3JtYXQ9InRydWUi
IE5hbWU9Ikxpc3QgUGFyYWdyYXBoIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJRdW90ZSIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iSW50
ZW5zZSBRdW90ZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2
NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMSIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVt
IEdyaWQgMiBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAxIi8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xv
cmZ1bCBTaGFkaW5nIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFj
Y2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBO
YW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAyIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFj
Y2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBO
YW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRp
dW0gTGlzdCAxIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2Vu
dCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1l
PSJNZWRpdW0gR3JpZCAyIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAyIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNj
ZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5h
bWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDIiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVs
IEdyaWQgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0
IEdyaWQgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNj
ZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5h
bWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDMiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlk
IDEgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsg
TGlzdCBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQg
MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0i
Q29sb3JmdWwgR3JpZCBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPg0KPHc6THNkRXhj
ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2Nl
bnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFt
ZT0iTGlnaHQgR3JpZCBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNCIvPg0KPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRp
bmcgMiBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNCIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVk
aXVtIEdyaWQgMSBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2Nl
bnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFt
ZT0iRGFyayBMaXN0IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA0Ii8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0
IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9Ijcz
IiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA1Ii8+DQo8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBM
aXN0IEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA1Ii8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRp
dW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNl
cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFj
Y2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBO
YW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA1Ii8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3Jp
ZCAzIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDUiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9y
ZnVsIExpc3QgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv
cml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50
IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9
IkxpZ2h0IExpc3QgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNj
ZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5h
bWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBM
aXN0IDIgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDYi
Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1l
ZGl1bSBHcmlkIDMgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2Nl
bnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFt
ZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNiIvPg0KPHc6THNk
RXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxOSIgUUZvcm1hdD0idHJ1ZSIgTmFt
ZT0iU3VidGxlIEVtcGhhc2lzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJJbnRlbnNlIEVtcGhhc2lzIi8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIiBO
YW1lPSJTdWJ0bGUgUmVmZXJlbmNlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjMyIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJJbnRlbnNlIFJlZmVyZW5jZSIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMyIgUUZvcm1hdD0idHJ1
ZSIgTmFtZT0iQm9vayBUaXRsZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSIzNyIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9
IkJpYmxpb2dyYXBoeSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5
PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRy
dWUiIE5hbWU9IlRPQyBIZWFkaW5nIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjQxIiBOYW1lPSJQbGFpbiBUYWJsZSAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQyIiBOYW1lPSJQbGFpbiBUYWJsZSAyIi8+DQo8dzpMc2RF
eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQzIiBOYW1lPSJQbGFpbiBUYWJsZSAz
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ0IiBOYW1lPSJQ
bGFpbiBUYWJsZSA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjQ1IiBOYW1lPSJQbGFpbiBUYWJsZSA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjQwIiBOYW1lPSJHcmlkIFRhYmxlIExpZ2h0Ii8+DQo8dzpMc2RFeGNlcHRp
b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQi
Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikdy
aWQgVGFibGUgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0
OCIgTmFtZT0iR3JpZCBUYWJsZSAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIi8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxl
IDYgQ29sb3JmdWwiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NTIiIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAx
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJH
cmlkIFRhYmxlIDIgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2Vu
dCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1l
PSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAx
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJH
cmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgMiIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3Jp
ZCBUYWJsZSAyIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQg
MiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0i
R3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh
bHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3Jp
ZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQg
VGFibGUgMiBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDMi
Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikdy
aWQgVGFibGUgNSBEYXJrIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz
ZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9IkdyaWQg
VGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs
c2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+DQo8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRh
YmxlIDIgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA0Ii8+
DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlk
IFRhYmxlIDUgRGFyayBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui
IFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA0Ii8+DQo8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJHcmlkIFRh
YmxlIDcgQ29sb3JmdWwgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl
IiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgNSIvPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJs
ZSAyIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgNSIvPg0K
PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBU
YWJsZSA1IERhcmsgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNTEiIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJs
ZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg
UHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUg
MiBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0
OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDYiLz4NCjx3
OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFi
bGUgNSBEYXJrIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9IkdyaWQgVGFibGUg
NyBDb2xvcmZ1bCBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy
aW9yaXR5PSI0NiIgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0Ii8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUg
MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0i
TGlzdCBUYWJsZSA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i
ZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIi8+DQo8dzpM
c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxl
IDcgQ29sb3JmdWwiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i
NDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAx
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJM
aXN0IFRhYmxlIDMgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ
cmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0
aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsg
QWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEi
IE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9u
IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVs
IEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2
IiBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMiIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlz
dCBUYWJsZSAzIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp
b3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlv
biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFj
Y2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBO
YW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM
b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBB
Y2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIg
TmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDMiLz4N
Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3Qg
VGFibGUgMyBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y
aXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24g
TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2Nl
bnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFt
ZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j
a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNj
ZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5h
bWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA0Ii8+DQo8
dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRh
YmxlIDMgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0
eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExv
Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50
IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9
Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl
ZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2Vu
dCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1l
PSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNSIvPg0KPHc6
THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJs
ZSAzIEFjY2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9
IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr
ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA1
Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJM
aXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9
ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQg
NSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0i
TGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDYiLz4NCjx3Okxz
ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUg
MyBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0
OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk
PSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgNiIv
Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iTGlz
dCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm
YWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDYi
Lz4NCjwvdzpMYXRlbnRTdHlsZXM+DQo8L3htbD48IVtlbmRpZl0tLT48c3R5bGU+PCEtLQ0KLyog
Rm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBN
YXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0Ow0KCW1zby1mb250LWNoYXJzZXQ6
MDsNCgltc28tZ2VuZXJpYy1mb250LWZhbWlseTpyb21hbjsNCgltc28tZm9udC1waXRjaDp2YXJp
YWJsZTsNCgltc28tZm9udC1zaWduYXR1cmU6LTUzNjg3MDE0NSAxMTA3MzA1NzI3IDAgMCA0MTUg
MDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1
IDIgMiAyIDQgMyAyIDQ7DQoJbXNvLWZvbnQtY2hhcnNldDowOw0KCW1zby1nZW5lcmljLWZvbnQt
ZmFtaWx5OnN3aXNzOw0KCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOw0KCW1zby1mb250LXNpZ25h
dHVyZTotNTM2ODU5OTA1IC0xMDczNzMyNDg1IDkgMCA1MTEgMDt9DQovKiBTdHlsZSBEZWZpbml0
aW9ucyAqLw0KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttc28t
c3R5bGUtdW5oaWRlOm5vOw0KCW1zby1zdHlsZS1xZm9ybWF0OnllczsNCgltc28tc3R5bGUtcGFy
ZW50OiIiOw0KCW1hcmdpbjowY207DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCW1zby1wYWdp
bmF0aW9uOndpZG93LW9ycGhhbjsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJU
aW1lcyBOZXcgUm9tYW4iLHNlcmlmOw0KCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkNhbGlicmk7
fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJ
Y29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOw0KCXRleHQtdW5kZXJsaW5l
OnNpbmdsZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0
eWxlLW5vc2hvdzp5ZXM7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOnB1cnBsZTsN
Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOw0KCXRleHQtdW5kZXJsaW5lOnNpbmdsZTt9DQpw
DQoJe21zby1zdHlsZS1ub3Nob3c6eWVzOw0KCW1zby1zdHlsZS1wcmlvcml0eTo5OTsNCgltc28t
bWFyZ2luLXRvcC1hbHQ6YXV0bzsNCgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1zby1tYXJnaW4tYm90
dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1sZWZ0OjBjbTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1v
cnBoYW47DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFu
IixzZXJpZjsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseTpDYWxpYnJpO30NCnAubXNvbm9ybWFs
MCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNvLXN0eWxlLW5hbWU6bXNvbm9y
bWFsOw0KCW1zby1zdHlsZS11bmhpZGU6bm87DQoJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87DQoJ
bWFyZ2luLXJpZ2h0OjBjbTsNCgltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsNCgltYXJnaW4t
bGVmdDowY207DQoJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMi4w
cHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7DQoJbXNvLWZhcmVhc3Qt
Zm9udC1mYW1pbHk6Q2FsaWJyaTt9DQpzcGFuLkVtYWlsU3R5bGUxOQ0KCXttc28tc3R5bGUtdHlw
ZTpwZXJzb25hbC1yZXBseTsNCgltc28tc3R5bGUtbm9zaG93OnllczsNCgltc28tc3R5bGUtdW5o
aWRlOm5vOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMS4wcHQ7DQoJbXNvLWJpZGktZm9udC1zaXpl
OjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tYXNjaWkt
Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseTpDYWxpYnJpOw0K
CW1zby1oYW5zaS1mb250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJU
aW1lcyBOZXcgUm9tYW4iOw0KCWNvbG9yOiMxRjQ5N0Q7fQ0Kc3Bhbi5TcGVsbEUNCgl7bXNvLXN0
eWxlLW5hbWU6IiI7DQoJbXNvLXNwbC1lOnllczt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5
bGUtdHlwZTpleHBvcnQtb25seTsNCgltc28tZGVmYXVsdC1wcm9wczp5ZXM7DQoJZm9udC1zaXpl
OjEwLjBwdDsNCgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0Ow0KCW1zby1iaWRpLWZvbnQtc2l6
ZToxMC4wcHQ7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6NjEyLjBwdCA3OTIuMHB0Ow0K
CW1hcmdpbjo3Mi4wcHQgNzIuMHB0IDcyLjBwdCA3Mi4wcHQ7DQoJbXNvLWhlYWRlci1tYXJnaW46
MzYuMHB0Ow0KCW1zby1mb290ZXItbWFyZ2luOjM2LjBwdDsNCgltc28tcGFwZXItc291cmNlOjA7
fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwh
LS1baWYgZ3RlIG1zbyAxMF0+PHN0eWxlPi8qIFN0eWxlIERlZmluaXRpb25zICovDQp0YWJsZS5N
c29Ob3JtYWxUYWJsZQ0KCXttc28tc3R5bGUtbmFtZToiVGFibGUgTm9ybWFsIjsNCgltc28tdHN0
eWxlLXJvd2JhbmQtc2l6ZTowOw0KCW1zby10c3R5bGUtY29sYmFuZC1zaXplOjA7DQoJbXNvLXN0
eWxlLW5vc2hvdzp5ZXM7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1wYXJl
bnQ6IiI7DQoJbXNvLXBhZGRpbmctYWx0OjBjbSA1LjRwdCAwY20gNS40cHQ7DQoJbXNvLXBhcmEt
bWFyZ2luOjBjbTsNCgltc28tcGFyYS1tYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJbXNvLXBhZ2lu
YXRpb246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6IlRp
bWVzIE5ldyBSb21hbiIsc2VyaWY7fQ0KPC9zdHlsZT48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBt
c28gOV0+PHhtbD4NCjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYi
IC8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBl
bGF5b3V0IHY6ZXh0PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0K
PC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0i
RU4tR0IiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiIHN0eWxlPSJ0YWItaW50ZXJ2YWw6MzYu
MHB0Ij4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
Zm9udCBzaXplPSIyIiBjb2xvcj0iIzFmNDk3ZCIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl
cmlmO21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oztjb2xv
cjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5NYWxhLDxvOnA+PC9vOnA+PC9z
cGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBjb2xv
cj0iIzFmNDk3ZCIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1iaWRpLWZvbnQt
ZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oztjb2xvcjojMUY0OTdEO21zby1mYXJl
YXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgY29sb3I9IiMxZjQ5N2QiIGZhY2U9
IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1l
cyBOZXcgUm9tYW4mcXVvdDs7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1V
UyI+PHNwYW4gc3R5bGU9Im1zby1zcGFjZXJ1bjp5ZXMiPiZuYnNwOw0KPC9zcGFuPknigJltIG5v
dCBzdXJlIEkgdW5kZXJzdGFuZCB5b3VyIHF1ZXN0aW9uLiBXaGF0IGRvIHlvdSBtZWFuIGJ5IOKA
mDxzcGFuIGNsYXNzPSJTcGVsbEUiPlhlbjwvc3Bhbj4gVG9vbOKAmS4gQXJlIHlvdSByZWZlcnJp
bmcgdG8gdGhlIENpdHJpeCBicmFuZGVkIFBWIGRyaXZlcnM/PG86cD48L286cD48L3NwYW4+PC9m
b250PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGNvbG9yPSIjMWY0
OTdkIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh
bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWJpZGktZm9udC1mYW1pbHk6
JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7O2NvbG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3QtbGFu
Z3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBjb2xvcj0iIzFmNDk3ZCIgZmFjZT0iQ2FsaWJy
aSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OyxzYW5zLXNlcmlmO21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBS
b21hbiZxdW90Oztjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48c3Bh
biBzdHlsZT0ibXNvLXNwYWNlcnVuOnllcyI+Jm5ic3A7DQo8L3NwYW4+UGF1bDxvOnA+PC9vOnA+
PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBj
b2xvcj0iIzFmNDk3ZCIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1iaWRpLWZv
bnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oztjb2xvcjojMUY0OTdEO21zby1m
YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9w
Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtw
YWRkaW5nOjBjbSAwY20gMGNtIDQuMHB0Ij4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9u
ZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwY20gMGNtIDBj
bSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJp
Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZx
dW90O1RpbWVzIE5ldyBSb21hbiZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpFTi1VUztmb250LXdl
aWdodDpib2xkIj5Gcm9tOjwvc3Bhbj48L2ZvbnQ+PC9iPjxmb250IHNpemU9IjIiIGZhY2U9IkNh
bGlicmkiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh
bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1p
bHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkVOLVVTIj4N
CiBNYWxhIEFuYW5kIFttYWlsdG86bWFuYW5kQHVzLmlibS5jb21dIDxicj4NCjxiPjxzcGFuIHN0
eWxlPSJmb250LXdlaWdodDpib2xkIj5TZW50Ojwvc3Bhbj48L2I+IDE0IFNlcHRlbWJlciAyMDE3
IDAzOjU4PGJyPg0KPGI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPlRvOjwvc3Bhbj48
L2I+IFBhdWwgRHVycmFudCAmbHQ7UGF1bC5EdXJyYW50QGNpdHJpeC5jb20mZ3Q7PGJyPg0KPGI+
PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPkNjOjwvc3Bhbj48L2I+IHdpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzxicj4NCjxiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDpi
b2xkIj5TdWJqZWN0Ojwvc3Bhbj48L2I+IFJFOiBbd2luLXB2LWRldmVsXSBXaW5kb3dzIDIwMTYg
bmV0d29yayBwZXJmb3JtYW5jZSBvbiBYZW48bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0K
PC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjMiIGZhY2U9
IlRpbWVzIE5ldyBSb21hbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQiPjxvOnA+Jm5i
c3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cD48Zm9udCBzaXplPSIyIiBmYWNlPSJUaW1l
cyBOZXcgUm9tYW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij5UaGFua3MgUGF1bC48
L3NwYW4+PC9mb250Pjxicj4NCjxicj4NCjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250
LXNpemU6MTAuMHB0Ij5JIGNvbXBhcmVkIHRjcGR1bXAgZnJvbSBib3RoIHJ1bnMsIHRoZSBXaW5k
b3dzIHRjcCB3aW5kb3cgc2l6ZSBpcyB+MjAwayB3aGVyZWFzIExpbnV4IHRjcCB3aW5kb3cgc2l6
ZSBpcyAmZ3Q7IDFNQi4NCjwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQgc2l6ZT0iMiI+
PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPkluIHRoZSBnb29kIGNhc2UsPC9zcGFuPjwv
Zm9udD48YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEw
LjBwdCI+TGludXggaXMgYWJsZSB0byByZWNlaXZlIGxhcmdlIGRhdGEgYW5kIFdpbmRvd3MgaXMg
YWJsZSB0byBzZW5kIHRoZSBkYXRhLg0KPC9zcGFuPjwvZm9udD48YnI+DQo8YnI+DQo8Zm9udCBz
aXplPSIyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdCI+SW4gdGhlIGJhZCBjYXNlLDwv
c3Bhbj48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox
MC4wcHQiPldpbmRvd3MgaXMgb25seSByZWNlaXZpbmcgMjk4NiBieXRlcyBhdCBhIHRpbWUgYW5k
IHNlbmRpbmcgYWNrIG9ubHkgZm9yIDI5ODYgZXZlbiB0aG91Z2ggTGludXggaXMgc2VuZGluZyBs
YXJnZSBzZWdtZW50cy4gV2luZG93cyBzZW5kcyBtdWx0aXBsZSBhY2tzIGZvciBlYWNoIGxhcmdl
IHNlZ21lbnQuPC9zcGFuPjwvZm9udD48YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIyIj48c3BhbiBz
dHlsZT0iZm9udC1zaXplOjEwLjBwdCI+SSB0cmllZCBpbmNyZWFzaW5nIFdpbmRvdyBzaXplIGlu
IHRoZSBSZWdpc3RyeSwgYXMgSSBtZW50aW9uZWQgZWFybGllciwgSSBwbGF5ZWQgd2l0aCBhdXRv
LXR1bmluZyBsZXZlbHMgYWxzby48L3NwYW4+PC9mb250Pjxicj4NCjxicj4NCjxmb250IHNpemU9
IjIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij5PbiBhbm90aGVyIG5vdGUsIGRvIHlv
dSBrbm93IHdoZW4gWGVuIFRvb2wgd291bGQgaW5jbHVkZSA4LjIgdmVyc2lvbiBwdiBkcml2ZXJz
Pw0KPGJyPg0KPGJyPg0KVGhhbmtzLDxicj4NCk1hbGE8YnI+DQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08
YnI+DQo8L3NwYW4+PC9mb250Pjxicj4NCjxicj4NCjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2
IiBpZD0iX3gwMDAwX2kxMDI1IiBzcmM9ImNpZDppbWFnZTAwMS5naWZAMDFEMzMwNjAuQThERTcw
MjAiIGFsdD0iSW5hY3RpdmUgaGlkZSBkZXRhaWxzIGZvciBQYXVsIER1cnJhbnQgLS0tMDkvMTEv
MjAxNyAxMDowNDo1NyBBTS0tLU1hbGEsICAgVGhlIFJTUyBjaGFuZ2VzIGRpZCBub3QgYXJyaXZl
IHVudGlsIHRoZSA4LjIgcmVsZWFzZSI+PGZvbnQgc2l6ZT0iMiIgY29sb3I9IiM0MjQyODIiPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2NvbG9yOiM0MjQyODIiPlBhdWwNCiBEdXJyYW50
IC0tLTA5LzExLzIwMTcgMTA6MDQ6NTcgQU0tLS1NYWxhLCBUaGUgUlNTIGNoYW5nZXMgZGlkIG5v
dCBhcnJpdmUgdW50aWwgdGhlIDguMiByZWxlYXNlIG9mIHRoZSBkcml2ZXJzLCBidXQgZm9yIGEg
c2luZ2xlIHN0cmVhbTwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQgc2l6ZT0iMiIgY29s
b3I9IiM1ZjVmNWYiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2NvbG9yOiM1RjVGNUYi
PkZyb206DQo8L3NwYW4+PC9mb250Pjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTAuMHB0Ij5QYXVsIER1cnJhbnQgJmx0OzxhIGhyZWY9Im1haWx0bzpQYXVsLkR1cnJhbnRA
Y2l0cml4LmNvbSI+UGF1bC5EdXJyYW50QGNpdHJpeC5jb208L2E+Jmd0Ozwvc3Bhbj48L2ZvbnQ+
PGJyPg0KPGZvbnQgc2l6ZT0iMiIgY29sb3I9IiM1ZjVmNWYiPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTAuMHB0O2NvbG9yOiM1RjVGNUYiPlRvOiA8L3NwYW4+DQo8L2ZvbnQ+PGZvbnQgc2l6ZT0i
MiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPidNYWxhIEFuYW5kJyAmbHQ7PGEgaHJl
Zj0ibWFpbHRvOm1hbmFuZEB1cy5pYm0uY29tIj5tYW5hbmRAdXMuaWJtLmNvbTwvYT4mZ3Q7LCAm
cXVvdDs8YSBocmVmPSJtYWlsdG86d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIj53
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc8L2E+JnF1b3Q7ICZsdDs8YSBocmVmPSJt
YWlsdG86d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIj53aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmc8L2E+Jmd0Ozwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0i
MiIgY29sb3I9IiM1ZjVmNWYiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2NvbG9yOiM1
RjVGNUYiPkRhdGU6DQo8L3NwYW4+PC9mb250Pjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTAuMHB0Ij4wOS8xMS8yMDE3IDEwOjA0IEFNPC9zcGFuPjwvZm9udD48YnI+DQo8
Zm9udCBzaXplPSIyIiBjb2xvcj0iIzVmNWY1ZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w
cHQ7Y29sb3I6IzVGNUY1RiI+U3ViamVjdDoNCjwvc3Bhbj48L2ZvbnQ+PGZvbnQgc2l6ZT0iMiI+
PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPlJFOiBbd2luLXB2LWRldmVsXSBXaW5kb3dz
IDIwMTYgbmV0d29yayBwZXJmb3JtYW5jZSBvbiBYZW48L3NwYW4+PC9mb250PjxvOnA+PC9vOnA+
PC9wPg0KPGRpdiBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIzIiBmYWNlPSJUaW1lcyBO
ZXcgUm9tYW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O21zby1mYXJlYXN0LWZvbnQt
ZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+DQo8aHIgc2l6ZT0iMiIgd2lkdGg9
IjEwMCUiIG5vc2hhZGU9IiIgc3R5bGU9ImNvbG9yOiM4MDkxQTUiIGFsaWduPSJsZWZ0Ij4NCjwv
c3Bhbj48L2ZvbnQ+PC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIzIiBm
YWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O21zby1m
YXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+PGJyPg0KPGJy
Pg0KPGJyPg0KPGZvbnQgY29sb3I9IiMxZjQ5N2QiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdE
Ij5NYWxhLDwvc3Bhbj48L2ZvbnQ+PG86cD48L286cD48L3NwYW4+PC9mb250PjwvcD4NCjxwPjxm
b250IHNpemU9IjMiIGNvbG9yPSIjMWY0OTdkIiBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOiMxRjQ5N0QiPlRoZSBSU1MgY2hhbmdlcyBk
aWQgbm90IGFycml2ZSB1bnRpbCB0aGUgOC4yIHJlbGVhc2Ugb2YgdGhlIGRyaXZlcnMsIGJ1dCBm
b3IgYSBzaW5nbGUgc3RyZWFtIHdvcmtsb2FkICh3aGljaCBpdCBhcHBlYXJzIHlvdSBhcmUgdXNp
bmcpIHRoZXNlIHdvdWxkIG5vdCBoZWxwDQogYW55d2F5Ljwvc3Bhbj48L2ZvbnQ+PG86cD48L286
cD48L3A+DQo8cD48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzFmNDk3ZCIgZmFjZT0iVGltZXMgTmV3
IFJvbWFuIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtjb2xvcjojMUY0OTdEIj5JbiBt
eSBwcmVzZW50YXRpb24gSSB3YXMgdXNpbmcgSXhpYSBDaGFyaW90IGFzIG15IHdvcmtsb2FkIGFz
LCBpbiBteSBleHBlcmllbmNlLCB0aGlzIGlzIG9uZSBvZiB0aGUgZmV3IGJlbmNobWFya3MgdGhh
dCBhY3R1YWxseSB3b3JrcyB3ZWxsIG9uIFdpbmRvd3MuIEkgYmVsaWV2ZQ0KIGlwZXJmMyBpcyBz
dGlsbCB1c2luZyBzeW5jaHJvbm91cyBzb2NrZXRzIHdoaWNoIGhhdmUgbmV2ZXIgd29ya2VkIHdl
bGwgb24gV2luZG93cywgd2hlcmVhcyBJSVJDIENoYXJpb3QgdXNlcyBvdmVybGFwcGVkIEkvTy4g
SeKAmW0gbm90IGZhbWlsaWFyIHdpdGggdXNpbmcgaXBlcmYzIHNvIEkgY2Fu4oCZdCBzdWdnZXN0
IHRoZSBiZXN0IHdheSB0byB0dW5lIGl0IGJ1dCB5b3Ugc2hvdWxkIHByb2JhYmx5IHdpcmVzaGFy
ayB5b3VyIFRDUCBzdHJlYW1zIHdoZW4NCiBydW5uaW5nIGluIGJvdGggZGlyZWN0aW9ucyB0byBz
ZWUgd2hhdCBzb3J0IG9mIGRpZmZlcmVuY2UgeW91IGFyZSBzZWVpbmcuPC9zcGFuPjwvZm9udD48
bzpwPjwvbzpwPjwvcD4NCjxwPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMWY0OTdkIiBmYWNlPSJU
aW1lcyBOZXcgUm9tYW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOiMxRjQ5
N0QiPkNoZWVycyw8L3NwYW4+PC9mb250PjxvOnA+PC9vOnA+PC9wPg0KPHA+PGZvbnQgc2l6ZT0i
MyIgY29sb3I9IiMxZjQ5N2QiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZToxMi4wcHQ7Y29sb3I6IzFGNDk3RCI+UGF1bDwvc3Bhbj48L2ZvbnQ+PG86cD48L286
cD48L3A+DQo8cCBzdHlsZT0ibXNvLW91dGxpbmUtbGV2ZWw6MSI+PGI+PGZvbnQgc2l6ZT0iMyIg
ZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtmb250
LXdlaWdodDpib2xkIj5Gcm9tOjwvc3Bhbj48L2ZvbnQ+PC9iPiB3aW4tcHYtZGV2ZWwgWzxhIGhy
ZWY9Im1haWx0bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyI+bWFp
bHRvOndpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnPC9hPl0NCjxiPjxz
cGFuIHN0eWxlPSJmb250LXdlaWdodDpib2xkIj5PbiBCZWhhbGYgT2YgPC9zcGFuPjwvYj5NYWxh
IEFuYW5kPGI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPjxicj4NClNlbnQ6PC9zcGFu
PjwvYj4gMDkgU2VwdGVtYmVyIDIwMTcgMTc6MTM8Yj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6
Ym9sZCI+PGJyPg0KVG86PC9zcGFuPjwvYj4gPGEgaHJlZj0ibWFpbHRvOndpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZyI+d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnPC9h
PjxiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDpib2xkIj48YnI+DQpTdWJqZWN0Ojwvc3Bhbj48
L2I+IFt3aW4tcHYtZGV2ZWxdIFdpbmRvd3MgMjAxNiBuZXR3b3JrIHBlcmZvcm1hbmNlIG9uIFhl
biA8bzpwPjwvbzpwPjwvcD4NCjxwPjxmb250IHNpemU9IjIiIGZhY2U9IlRpbWVzIE5ldyBSb21h
biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPkkgaGF2ZSB0d28gVk1zIHJ1bm5pbmcg
V2luZG93cyAyMDE2IG9uIHR3byBkaWZmZXJlbnQgaG9zdHMsIHdpdGggc2luZ2xlIHRjcCBzdHJl
YW0gaXBlcmYzLCBJIGNhbiBnZXQgb25seSB+MSBHYnBzLiBJIGFtIHVzaW5nIFdpbmRvd3MgUFYg
ZHJpdmVyIHZlcnNpb24gOC4xLjAuNDIuPC9zcGFuPjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIy
Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdCI+PGJyPg0KSWYgSSBydW4gaXBlcmYzIHNl
cnZlciBvbiBhIExpbnV4IFVidW50dSBWTSwgaXBlcmYzIGNsaWVudCBvbiBXaW5kb3dzIDIwMTYg
SSBnZXQgfjNHYnBzLiBJZiBJIHJldmVyc2Ugc2VydmVyIGFuZCBjbGllbnQgKHNlcnZlciBvbiBX
aW5kb3dzIGFuZCBjbGllbnQgb24gTGludXggVk0pLCBJIGdldCBvbmx5IH4xIEdicHMuIFNvIGNs
ZWFybHkgdGhlIHByb2JsZW0gaXMgb24gV2luZG93cyByZWNlaXZlIHNpZGUgcGF0aC48L3NwYW4+
PC9mb250Pjxicj4NCjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0
Ij48YnI+DQpOZXRzaCBpbnQgdGNwIHNob3cgZ2xvYmFsIGhhczwvc3Bhbj48L2ZvbnQ+PGJyPg0K
PGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPjxicj4NClJTUywg
UlNDIGFyZSBlbmFibGVkLjxicj4NCkF1dG8gdHVuaW5nIGlzIHNldCB0byBleHBlcmltZW50YWwg
KHRyaWVkIGFsbCB2YXJpYXRpb25zLCBkaXNhYmxlZCwgc2V0IHdpbmRvdyBzaXplIGluIHJlZ2lz
dHJ5IGV0Yy4sKTwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMC4wcHQiPjxicj4NCk5ldHNoIGludCB0Y3Agc2hvdyBzdXBwbGVtZW50YWwg
aGFzPGJyPg0KSSBzZXQgY29uZ2VzdGlvbiBjb250cm9sIHRvIGN0Y3A8L3NwYW4+PC9mb250Pjxi
cj4NCjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij48YnI+DQpJ
IHN0aWxsIGRvbid0IGdldCBtb3JlIHRoYW4gMSBHYnBzLjwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZv
bnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPjxicj4NCkkgc2F3IFBh
dWwgRHVycmFudCdzIHByZXNlbnRhdGlvbiB3aGVyZSBoZSBzaG93ZWQgOCBHYnBzIG9uIHR3byBW
TXMgcnVubmluZyBXaW5kb3dzIDEwIG9uIHRoZSBzYW1lIGhvc3QuIFNvIEkgdHJpZWQgdHdvIFZN
cyBydW5uaW5nIFdpbmRvd3MgMjAxNiBvbiB0aGUgc2FtZSBob3N0LCBJIHN0aWxsIGdldCBvbmx5
IDEgR2Jwcy4NCjwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMC4wcHQiPjxicj4NCklzIHRoaXMgYSBXaW5kb3dzIDIwMTYgc3BlY2lmaWMg
cHJvYmxlbSBvciBkb2VzIFdpbmRvd3MgMjAxNiBhbmQvb3IgRG9tMCBYZW4gbmVlZCB0dW5pbmdz
Pzwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMC4wcHQiPjxicj4NCjxicj4NCjxicj4NClRoYW5rcyw8YnI+DQpNYWxhPC9zcGFuPjwvZm9u
dD48bzpwPjwvbzpwPjwvcD4NCjxwPjxmb250IHNpemU9IjMiIGZhY2U9IlRpbWVzIE5ldyBSb21h
biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu
PjwvZm9udD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K

--_000_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_--

--_004_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_
Content-Type: image/gif; name="image001.gif"
Content-Description: image001.gif
Content-Disposition: inline; filename="image001.gif"; size=105;
	creation-date="Mon, 18 Sep 2017 08:29:45 GMT";
	modification-date="Mon, 18 Sep 2017 08:29:45 GMT"
Content-ID: <image001.gif@01D33060.A8DE7020>
Content-Transfer-Encoding: base64

R0lGODlhEAAQAKECAMzMzAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIXlI+py+0PopwxUbpu
ZRfKZ2zgSJbmSRYAIf4fT3B0aW1pemVkIGJ5IFVsZWFkIFNtYXJ0U2F2ZXIhAAA7

--_004_082994fc2c2e4149864868f7a540f2b2AMSPEX02CL03citritenet_--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

--===============6599430168415295504==--


From win-pv-devel-bounces@lists.xenproject.org Tue Sep 19 11:19:59 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Sep 2017 11:19:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duGZJ-0004XS-Cr; Tue, 19 Sep 2017 11:19:57 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1duGZH-0004XM-VE
 for win-pv-devel@lists.xenproject.org; Tue, 19 Sep 2017 11:19:56 +0000
Date: Tue, 19 Sep 2017 11:19:35 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <3003725.1.1505819981368.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_0_29670147.1505819975696"
X-Jenkins-Job: XENIFACE-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENIFACE-master - Build #69 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_0_29670147.1505819975696
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #69.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENIFACE-master/69/console to view the results.
------=_Part_0_29670147.1505819975696
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

------=_Part_0_29670147.1505819975696--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:57:34 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:57:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhNV-0001tT-6u; Wed, 20 Sep 2017 15:57:33 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhNU-0001tG-8a
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:57:32 +0000
Received: from [193.109.254.147] by server-9.bemta-6.messagelabs.com id
 3B/92-03422-BEF82C95; Wed, 20 Sep 2017 15:57:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplkeJIrShJLcpLzFFi42JxWrrBXvdV/6F
 IgzXfrSz+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxoyuioILARX31vI2ME4z7mLk5JAQ8JeY/GAe
 K4jNJiAr8XHlZ2YQW0RAXWLf561MIDazgJrE9f1dYDXCAvYS/RPb2UBsFgFViYP3LoDFeQUsJ
 e6ensMEMVNOYvLiS4wgNqeAlcTjGTOAZnJwCAHVvD/mCxIWElCS+Lb4BTNEq6DEyZlPWCBWSU
 gcfPGCeQIj7ywkqVlIUgsYmVYxahSnFpWlFukaGeklFWWmZ5TkJmbm6BoamOnlphYXJ6an5iQ
 mFesl5+duYgQGDQMQ7GBcMz/wEKMkB5OSKC97+6FIIb6k/JTKjMTijPii0pzU4kOMMhwcShK8
 0/qAcoJFqempFWmZOcDwhUlLcPAoifAeAUnzFhck5hZnpkOkTjHqcnTcvPuHSYglLz8vVUqcd
 w1IkQBIUUZpHtwIWCxdYpSVEuZlBDpKiKcgtSg3swRV/hWjOAejkjDvOpApPJl5JXCbXgEdwQ
 R0RPaGAyBHlCQipKQaGNmf3XHhuiv4aseHNVFZ2UnXPzF96lvs8+3RknW+G5njZN3Ek7YefcW
 91Oj5ycdL79+uWh6mpNty02SLW5GiYbCSocuNn75n74ktmzvN2s1v4oazczL3sqXN2G/c+L41
 h+PvkwOWp9fNVtxgm+no8+uDrvbfCcc7YvOK1zNf+nIxxaYv1tP+7y0lluKMREMt5qLiRAC5/
 XJYoAIAAA==
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-15.tower-27.messagelabs.com!1505923048!64854203!2
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 55391 invoked from network); 20 Sep 2017 15:57:30 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:57:30 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="448562141"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:25 +0100
Message-ID: <20170920155325.5860-8-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 7/7] Remove generic store accessors in
	frontend
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKUmVwbGFjZSB3aXRoIHNw
ZWNpZmljIHVzZSBmdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNt
aXRoQGNpdHJpeC5jb20+Ci0tLQogc3JjL3hlbnZiZC9mcm9udGVuZC5jIHwgMTUzICsrKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMveGVudmJkL2Zy
b250ZW5kLmggfCAgMzAgKysrKy0tLS0tLQogc3JjL3hlbnZiZC90YXJnZXQuYyAgIHwgIDM1ICsr
LS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3JjL3hlbnZiZC9m
cm9udGVuZC5jCmluZGV4IDQyZWFhMGIuLjliMGM4NmEgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQv
ZnJvbnRlbmQuYworKysgYi9zcmMveGVudmJkL2Zyb250ZW5kLmMKQEAgLTE4MywxMDMgKzE4Myw2
OSBAQCBGcm9udGVuZEdldElucXVpcnlPdmVycmlkZSgKICAgICB9CiB9CiAKLU5UU1RBVFVTCi1G
cm9udGVuZFN0b3JlV3JpdGVGcm9udGVuZCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAg
ICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUENIQVIgICAgICAgICAgICAgICAgIE5hbWUsCi0gICAg
X19pbiAgUENIQVIgICAgICAgICAgICAgICAgIFZhbHVlCitWT0lECitGcm9udGVuZFNldEVqZWN0
ZWQoCisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKICAgICApCiB7Ci0gICAg
cmV0dXJuIFhFTkJVU19TVE9SRShQcmludGYsCisgICAgKFZPSUQpIFhFTkJVU19TVE9SRShQcmlu
dGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgIEZy
b250ZW5kLT5Gcm9udGVuZFBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgImVq
ZWN0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIjEiKTsKIH0KLU5UU1RBVFVTCi1Gcm9u
dGVuZFN0b3JlUmVhZEJhY2tlbmQoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZy
b250ZW5kLAotICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgICAgICBOYW1lLAotICAgIF9fb3V0
IFBDSEFSKiAgICAgICAgICAgICAgICBWYWx1ZQotICAgICkKLXsKLSAgICBOVFNUQVRVUyAgICBT
dGF0dXM7Ci0KLSAgICBTdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7Ci0gICAgaWYg
KEZyb250ZW5kLT5CYWNrZW5kUGF0aCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWwxOwotCi0g
ICAgU3RhdHVzID0gWEVOQlVTX1NUT1JFKFJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5CYWNrZW5kUGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUpOwotICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwy
OwogCi0gICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwotCi1mYWlsMjoKLWZhaWwxOgotICAgIHJl
dHVybiBTdGF0dXM7Ci19CiBWT0lECi1Gcm9udGVuZFN0b3JlRnJlZSgKLSAgICBfX2luICBQWEVO
VkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUENIQVIgICAgICAgICAgICAg
ICAgIFZhbHVlCitGcm9udGVuZFNldEVqZWN0RmFpbGVkKAorICAgIElOICBQWEVOVkJEX0ZST05U
RU5EICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIFhFTkJVU19TVE9SRShGcmVlLAotICAgICAg
ICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICBW
YWx1ZSk7CisgICAgKFZPSUQpIFhFTkJVU19TVE9SRShQcmludGYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5Gcm9udGVuZFBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIlVucGx1ZyBmYWlsZWQgZHVlIHRvIG9wZW4gaGFuZGxlKHMpISIpOwogfQotX19kcnZfbWF4
SVJRTChESVNQQVRDSF9MRVZFTCkKLU5UU1RBVFVTCi1Gcm9udGVuZFdyaXRlVXNhZ2UoCi0gICAg
X19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQKKworVk9JRAorRnJvbnRlbmRT
ZXREZXZpY2VVc2FnZSgKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgICAgICAgICBG
cm9udGVuZCwKKyAgICBJTiAgREVWSUNFX1VTQUdFX05PVElGSUNBVElPTl9UWVBFICBUeXBlLAor
ICAgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlCiAgICAgKQogewot
ICAgIE5UU1RBVFVTICAgIFN0YXR1czsKKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2FnZU5hbWU7CiAKLSAgICBTdGF0dXMgPSBYRU5CVVNfU1RPUkUoUHJpbnRmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICBG
cm9udGVuZC0+VGFyZ2V0UGF0aCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwYWdpbmci
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcm9udGVuZC0+Q2Fwcy5QYWdpbmcpOwotICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMp
KQotICAgICAgICBnb3RvIG91dDsKLQotICAgIFN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IEZyb250ZW5kLT5UYXJnZXRQYXRoLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImhpYmVy
bmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuSGliZXJuYXRpb24pOwotICAgIGlmICghTlRfU1VD
Q0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIFN0YXR1cyA9IFhFTkJVU19T
VE9SRShQcmludGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJ
bnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyb250ZW5kLT5UYXJnZXRQYXRoLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImR1bXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fwcy5EdW1wRmlsZSk7Ci0gICAgaWYgKCFOVF9T
VUNDRVNTKFN0YXR1cykpCi0gICAgICAgIGdvdG8gb3V0OworICAgIHN3aXRjaCAoVHlwZSkgewor
ICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlUGFnaW5nOgorICAgICAgICBVc2FnZU5hbWUgPSAicGFn
aW5nIjsKKyAgICAgICAgRnJvbnRlbmQtPkNhcHMuUGFnaW5nID0gVmFsdWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlSGliZXJuYXRpb246CisgICAgICAgIFVzYWdl
TmFtZSA9ICJoaWJlcm5hdGlvbiI7CisgICAgICAgIEZyb250ZW5kLT5DYXBzLkhpYmVybmF0aW9u
ID0gVmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlRHVtcEZp
bGU6CisgICAgICAgIFVzYWdlTmFtZSA9ICJkdW1wIjsKKyAgICAgICAgRnJvbnRlbmQtPkNhcHMu
RHVtcEZpbGUgPSBWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotICAgIFZlcmJvc2UoIlRhcmdldFslZF0gOiAlcyAlcyAlc1xuIiwg
RnJvbnRlbmQtPlRhcmdldElkLAotICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuRHVtcEZpbGUg
PyAiRFVNUCIgOiAiTk9UX0RVTVAiLCAKLSAgICAgICAgICAgIEZyb250ZW5kLT5DYXBzLkhpYmVy
bmF0aW9uID8gIkhJQkVSIiA6ICJOT1RfSElCRVIiLAotICAgICAgICAgICAgRnJvbnRlbmQtPkNh
cHMuUGFnaW5nID8gIlBBR0UiIDogIk5PVF9QQUdFIik7CisgICAgKFZPSUQpIFhFTkJVU19TVE9S
RShQcmludGYsCisgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEZyb250ZW5kLT5UYXJnZXRQYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgVXNhZ2VO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKTsKIAotb3V0OgotICAgIHJldHVybiBTdGF0dXM7CisgICAgVmVyYm9zZSgiVGFy
Z2V0WyV1XSAlcyAlc1xuIiwKKyAgICAgICAgICAgIFZhbHVlID8gIkFERElORyIgOiAiUkVNT1ZJ
TkciLAorICAgICAgICAgICAgVXNhZ2VOYW1lKTsKIH0KIAogLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpAQCAtMTAzNywxMCArMTAwMywxNSBAQCBGcm9udGVuZFByZXBhcmUoCiAgICAgaWYgKCFOVF9T
VUNDRVNTKFN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFpbDI7CiAKLSAgICAvLyB3cml0ZSB0YXJn
ZXRwYXRoCi0gICAgU3RhdHVzID0gRnJvbnRlbmRXcml0ZVVzYWdlKEZyb250ZW5kKTsKLSAgICBp
ZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsMzsKKyAgICBGcm9udGVu
ZFNldERldmljZVVzYWdlKEZyb250ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2
aWNlVXNhZ2VUeXBlUGFnaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQt
PkNhcHMuUGFnaW5nKTsKKyAgICBGcm9udGVuZFNldERldmljZVVzYWdlKEZyb250ZW5kLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlVXNhZ2VUeXBlSGliZXJuYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fwcy5IaWJlcm5hdGlvbik7CisgICAg
RnJvbnRlbmRTZXREZXZpY2VVc2FnZShGcm9udGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERldmljZVVzYWdlVHlwZUR1bXBGaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
RnJvbnRlbmQtPkNhcHMuRHVtcEZpbGUpOwogCiAgICAgU3RhdHVzID0gWEVOQlVTX1NUT1JFKFBy
aW50ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFj
ZSwKQEAgLTEwNTAsNyArMTAyMSw3IEBAIEZyb250ZW5kUHJlcGFyZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkZy
b250ZW5kUGF0aCk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgICAgIGdvdG8g
ZmFpbDQ7CisgICAgICAgIGdvdG8gZmFpbDM7CiAKICAgICBTdGF0dXMgPSBYRU5CVVNfU1RPUkUo
UHJpbnRmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJm
YWNlLApAQCAtMTA2MCwyNCArMTAzMSwyNCBAQCBGcm9udGVuZFByZXBhcmUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIldSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5k
LT5EZXZpY2VJZCk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgICAgIGdvdG8g
ZmFpbDU7CisgICAgICAgIGdvdG8gZmFpbDQ7CiAKICAgICAvLyBGcm9udGVuZDogLT4gSU5JVElB
TElaSU5HCiAgICAgU3RhdHVzID0gX19fU2V0U3RhdGUoRnJvbnRlbmQsIFhlbmJ1c1N0YXRlSW5p
dGlhbGlzaW5nKTsKICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBm
YWlsNjsKKyAgICAgICAgZ290byBmYWlsNTsKIAogICAgIC8vIEJhY2tlbmQgOiAtPiBJTklUV0FJ
VAogICAgIEJhY2tlbmRTdGF0ZSA9IFhlbmJ1c1N0YXRlVW5rbm93bjsKICAgICBkbyB7CiAgICAg
ICAgIFN0YXR1cyA9IF9fV2FpdFN0YXRlKEZyb250ZW5kLCAmQmFja2VuZFN0YXRlKTsKICAgICAg
ICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgICAgICAgICBnb3RvIGZhaWw3OworICAg
ICAgICAgICAgZ290byBmYWlsNjsKICAgICB9IHdoaWxlIChCYWNrZW5kU3RhdGUgPT0gWGVuYnVz
U3RhdGVDbG9zZWQgfHwgCiAgICAgICAgICAgICAgQmFja2VuZFN0YXRlID09IFhlbmJ1c1N0YXRl
SW5pdGlhbGlzaW5nKTsKICAgICBTdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOwogICAgIGlm
IChCYWNrZW5kU3RhdGUgIT0gWGVuYnVzU3RhdGVJbml0V2FpdCkKLSAgICAgICAgZ290byBmYWls
ODsKKyAgICAgICAgZ290byBmYWlsNzsKIAogICAgIC8vIHJlYWQgZmVhdHVyZXMgYW5kIGNhcHMg
KHJlbW92YWJsZSwgcmluZy1vcmRlciwgLi4uKQogICAgIFZlcmJvc2UoIlRhcmdldFslZF0gOiBC
YWNrZW5kSWQgJWQgKCVzKVxuIiwKQEAgLTEwODksOCArMTA2MCw2IEBAIEZyb250ZW5kUHJlcGFy
ZSgKICAgICAKICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CiAKLWZhaWw4OgotICAgIEVycm9y
KCJGYWlsOFxuIik7CiBmYWlsNzoKICAgICBFcnJvcigiRmFpbDdcbiIpOwogZmFpbDY6CmRpZmYg
LS1naXQgYS9zcmMveGVudmJkL2Zyb250ZW5kLmggYi9zcmMveGVudmJkL2Zyb250ZW5kLmgKaW5k
ZXggMDkzMTkxNC4uNDZmMmUzOSAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9mcm9udGVuZC5oCisr
KyBiL3NyYy94ZW52YmQvZnJvbnRlbmQuaApAQCAtODgsMjcgKzg4LDIxIEBAIEZyb250ZW5kR2V0
SW5xdWlyeU92ZXJyaWRlKAogICAgIE9VVCBQVUxPTkcgICAgICAgICAgICAgIExlbmd0aAogICAg
ICk7CiAKLWV4dGVybiBOVFNUQVRVUwotRnJvbnRlbmRTdG9yZVdyaXRlRnJvbnRlbmQoCi0gICAg
X19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kLAotICAgIF9faW4gIFBDSEFSICAg
ICAgICAgICAgICAgICBOYW1lLAotICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgICAgICBWYWx1
ZQorZXh0ZXJuIFZPSUQKK0Zyb250ZW5kU2V0RWplY3RlZCgKKyAgICBJTiAgUFhFTlZCRF9GUk9O
VEVORCAgICBGcm9udGVuZAogICAgICk7Ci1leHRlcm4gTlRTVEFUVVMKLUZyb250ZW5kU3RvcmVS
ZWFkQmFja2VuZCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQsCi0g
ICAgX19pbiAgUENIQVIgICAgICAgICAgICAgICAgIE5hbWUsCi0gICAgX19vdXQgUENIQVIqICAg
ICAgICAgICAgICAgIFZhbHVlCisKK2V4dGVybiBWT0lECitGcm9udGVuZFNldEVqZWN0RmFpbGVk
KAorICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKTsKKwogZXh0ZXJu
IFZPSUQKLUZyb250ZW5kU3RvcmVGcmVlKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAg
ICBGcm9udGVuZCwKLSAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICAgICAgVmFsdWUKLSAgICAp
OyAgICAKLV9fZHJ2X21heElSUUwoRElTUEFUQ0hfTEVWRUwpCi1leHRlcm4gTlRTVEFUVVMKLUZy
b250ZW5kV3JpdGVVc2FnZSgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9u
dGVuZAorRnJvbnRlbmRTZXREZXZpY2VVc2FnZSgKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAg
ICAgICAgICAgICAgICBGcm9udGVuZCwKKyAgICBJTiAgREVWSUNFX1VTQUdFX05PVElGSUNBVElP
Tl9UWVBFICBUeXBlLAorICAgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlCiAgICAgKTsKIAogX19jaGVja1JldHVybgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC90YXJn
ZXQuYyBiL3NyYy94ZW52YmQvdGFyZ2V0LmMKaW5kZXggY2VjZmNmNS4uZmQ4NjIxZCAxMDA2NDQK
LS0tIGEvc3JjL3hlbnZiZC90YXJnZXQuYworKysgYi9zcmMveGVudmJkL3RhcmdldC5jCkBAIC05
NTcsOSArOTU3LDcgQEAgVGFyZ2V0SXNzdWVEZXZpY2VFamVjdCgKICAgICAgICAgICAgIFJlYXNv
bik7CiAgICAgaWYgKCFUYXJnZXQtPldyaXR0ZW5FamVjdGVkKSB7CiAgICAgICAgIFRhcmdldC0+
V3JpdHRlbkVqZWN0ZWQgPSBUUlVFOwotICAgICAgICBGcm9udGVuZFN0b3JlV3JpdGVGcm9udGVu
ZChUYXJnZXQtPkZyb250ZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZWplY3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIik7CisgICAg
ICAgIEZyb250ZW5kU2V0RWplY3RlZChUYXJnZXQtPkZyb250ZW5kKTsKICAgICB9CiAgICAgaWYg
KERvRWplY3QpIHsKICAgICAgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6IElvUmVxdWVzdERldmlj
ZUVqZWN0KDB4JXApXG4iLApAQCAtOTgyLDM1ICs5ODAsMTQgQEAgX19UYXJnZXREZXZpY2VVc2Fn
ZU5vdGlmaWNhdGlvbigKICAgICBQSU9fU1RBQ0tfTE9DQVRJT04gICAgICAgICAgICAgIFN0YWNr
TG9jYXRpb247CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZTsKICAg
ICBERVZJQ0VfVVNBR0VfTk9USUZJQ0FUSU9OX1RZUEUgIFR5cGU7Ci0gICAgUFhFTlZCRF9DQVBT
ICAgICAgICAgICAgICAgICAgICBDYXBzID0gRnJvbnRlbmRHZXRDYXBzKFRhcmdldC0+RnJvbnRl
bmQpOwogCiAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24o
SXJwKTsKICAgICBWYWx1ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuVXNhZ2VOb3RpZmlj
YXRpb24uSW5QYXRoOwogICAgIFR5cGUgID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Vc2Fn
ZU5vdGlmaWNhdGlvbi5UeXBlOwogCi0gICAgc3dpdGNoIChUeXBlKSB7Ci0gICAgY2FzZSBEZXZp
Y2VVc2FnZVR5cGVQYWdpbmc6Ci0gICAgICAgIGlmIChDYXBzLT5QYWdpbmcgPT0gVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENhcHMtPlBhZ2luZyA9IFZhbHVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlSGliZXJuYXRpb246Ci0gICAgICAg
IGlmIChDYXBzLT5IaWJlcm5hdGlvbiA9PSBWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgQ2Fwcy0+SGliZXJuYXRpb24gPSBWYWx1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIERldmljZVVzYWdlVHlwZUR1bXBGaWxlOgotICAgICAgICBpZiAoQ2Fwcy0+RHVtcEZpbGUg
PT0gVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENhcHMtPkR1bXBGaWxlID0g
VmFsdWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBGcm9udGVuZFdyaXRlVXNhZ2UoVGFyZ2V0LT5Gcm9udGVuZCk7CisgICAgRnJv
bnRlbmRTZXREZXZpY2VVc2FnZShUYXJnZXQtPkZyb250ZW5kLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKTsKIH0KIAog
c3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKQEAgLTEwNTUsOSArMTAzMiw3IEBAIF9fVGFyZ2V0Q2hl
Y2tFamVjdEZhaWxlZCgKICAgICBpZiAoRWplY3RGYWlsZWQpIHsKICAgICAgICAgRXJyb3IoIlRh
cmdldFslZF0gOiBVbnBsdWcgZmFpbGVkIGR1ZSB0byBvcGVuIGhhbmRsZShzKSFcbiIsCiAgICAg
ICAgICAgICAgIFRhcmdldEdldFRhcmdldElkKFRhcmdldCkpOwotICAgICAgICBGcm9udGVuZFN0
b3JlV3JpdGVGcm9udGVuZChUYXJnZXQtPkZyb250ZW5kLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVW5wbHVnIGZhaWxlZCBkdWUgdG8gb3BlbiBoYW5kbGUocykhIik7CisgICAgICAgIEZyb250
ZW5kU2V0RWplY3RGYWlsZWQoVGFyZ2V0LT5Gcm9udGVuZCk7CiAgICAgfQogfQogCi0tIAoyLjgu
MwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1w
di1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:57:34 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:57:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhNW-0001tq-9C; Wed, 20 Sep 2017 15:57:34 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhNV-0001tN-A2
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:57:33 +0000
Received: from [193.109.254.147] by server-4.bemta-6.messagelabs.com id
 95/F0-03283-CEF82C95; Wed, 20 Sep 2017 15:57:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplkeJIrShJLcpLzFFi42JxWrrBXvdV/6F
 Ig4tvGS3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxttXSgWPPCp6Hy1lb2C8adrFyMkhIeAvsX7n
 SjYQm01AVuLjys/MILaIgLrEvs9bmUBsZgE1iev7u1hBbGEBa4mOX5PAalgEVCV6//YCxTk4e
 AUsJf7+cIYYKScxefElRhCbU8BK4vGMGcwgJUJAJe+P+YKEhQSUJL4tfgE2hVdAUOLkzCcsEJ
 skJA6+eME8gZF3FpLULCSpBYxMqxg1ilOLylKLdI2M9JKKMtMzSnITM3N0DQ3M9HJTi4sT01N
 zEpOK9ZLzczcxAoOGAQh2MK6ZH3iIUZKDSUmUl739UKQQX1J+SmVGYnFGfFFpTmrxIUYZDg4l
 Cd5pfUA5waLU9NSKtMwcYPjCpCU4eJREeI+ApHmLCxJzizPTIVKnGHU5Om7e/cMkxJKXn5cqJ
 c67BqRIAKQoozQPbgQsli4xykoJ8zICHSXEU5BalJtZgir/ilGcg1FJmHcdyBSezLwSuE2vgI
 5gAjoie8MBkCNKEhFSUg2MyXMbq36eYru5rlC2LL85RGjNTc+QM7PDn2k5dTilaQmov3I4div
 kwDNPuewPn8V0ixaEyn5a8l7i8/TamX1pxScOKi6T6rG7liYuGuH/b9bnGSIfptlubzlytZzn
 5rpLMxSXGDw04uUT0TsyseHKUacfCjdW7i1YqustzXPcmz2ClcfLeVq1EktxRqKhFnNRcSIAq
 orX8qACAAA=
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-15.tower-27.messagelabs.com!1505923048!64854203!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 55305 invoked from network); 20 Sep 2017 15:57:29 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:57:29 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="448562137"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:20 +0100
Message-ID: <20170920155325.5860-3-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/7] Use macros for Frontend data accessors
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW52YmQvZnJvbnRl
bmQuYyB8IDE1MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogc3JjL3hlbnZiZC9mcm9udGVuZC5oIHwgIDczICsrKysrKysrLS0tLS0tLS0tLS0tLS0t
LQogMiBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAxNDIgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5j
CmluZGV4IDBiMjNiNzAuLmZjYTM2MGEgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQu
YworKysgYi9zcmMveGVudmJkL2Zyb250ZW5kLmMKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IF9Y
RU5WQkRfRlJPTlRFTkQgewogICAgIENIQVIgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVu
ZFBhdGhbc2l6ZW9mKCJkZXZpY2UvdmJkL1hYWFhYWFhYIildOwogICAgIFBDSEFSICAgICAgICAg
ICAgICAgICAgICAgICBCYWNrZW5kUGF0aDsKICAgICBDSEFSICAgICAgICAgICAgICAgICAgICAg
ICAgVGFyZ2V0UGF0aFtzaXplb2YoImRhdGEvc2NzaS90YXJnZXQvWFhYWCIpXTsKLSAgICBVU0hP
UlQgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZElkOworICAgIFVTSE9SVCAgICAgICAgICAg
ICAgICAgICAgICBCYWNrZW5kRG9tYWluOwogICAgIFhFTlZCRF9TVEFURSAgICAgICAgICAgICAg
ICBTdGF0ZTsKICAgICBLU1BJTl9MT0NLICAgICAgICAgICAgICAgICAgU3RhdGVMb2NrOwogCkBA
IC0xMjMsNDAgKzEyMyw2IEBAIF9fRnJvbnRlbmRGcmVlKAogICAgICAgICBfX0ZyZWVQb29sV2l0
aFRhZyhCdWZmZXIsIEZST05URU5EX1BPT0xfVEFHKTsKIH0KIAotLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLy8gQWNjZXNzb3JzCi1VTE9ORwotRnJvbnRlbmRHZXREZXZpY2VJZCgKLSAgICBJTiAg
UFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAotICAgICkKLXsKLSAgICByZXR1cm4gRnJvbnRl
bmQtPkRldmljZUlkOwotfQotCi1VTE9ORwotRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKAotICAg
IElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCi0gICAgKQotewotICAgIHJldHVybiBG
cm9udGVuZC0+QmFja2VuZElkOwotfQotCi1QQ0hBUgotRnJvbnRlbmRHZXRCYWNrZW5kUGF0aCgK
LSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAotICAgICkKLXsKLSAgICByZXR1
cm4gRnJvbnRlbmQtPkJhY2tlbmRQYXRoOwotfQotCi1QQ0hBUgotRnJvbnRlbmRHZXRGcm9udGVu
ZFBhdGgoCi0gICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKLSAgICApCi17Ci0g
ICAgcmV0dXJuIEZyb250ZW5kLT5Gcm9udGVuZFBhdGg7Ci19Ci0KIFZPSUQKIEZyb250ZW5kUmVt
b3ZlRmVhdHVyZSgKICAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQsCkBA
IC0xODQsMzQgKzE1MCw3IEBAIEZyb250ZW5kUmVtb3ZlRmVhdHVyZSgKICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQotUFhFTlZCRF9DQVBTCi1Gcm9udGVuZEdldENhcHMoCi0gICAgX19pbiAgUFhF
TlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0gICAgKQotewotICAgIHJldHVybiAmRnJvbnRl
bmQtPkNhcHM7Ci19Ci1QWEVOVkJEX0ZFQVRVUkVTCi1Gcm9udGVuZEdldEZlYXR1cmVzKAotICAg
IF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICBGcm9udGVuZAotICAgICkKLXsKLSAgICByZXR1
cm4gJkZyb250ZW5kLT5GZWF0dXJlczsKLX0KLVBYRU5WQkRfRElTS0lORk8KLUZyb250ZW5kR2V0
RGlza0luZm8oCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0gICAg
KQotewotICAgIHJldHVybiAmRnJvbnRlbmQtPkRpc2tJbmZvOwotfQotVUxPTkcKLUZyb250ZW5k
R2V0VGFyZ2V0SWQoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0g
ICAgKQotewotICAgIHJldHVybiBGcm9udGVuZC0+VGFyZ2V0SWQ7Ci19CisKIFBWT0lECiBGcm9u
dGVuZEdldElucXVpcnkoCiAgICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5k
CkBAIC0yMTksMjcgKzE1OCw2IEBAIEZyb250ZW5kR2V0SW5xdWlyeSgKIHsKICAgICByZXR1cm4g
RnJvbnRlbmQtPklucXVpcnk7CiB9Ci1QWEVOVkJEX1RBUkdFVAotRnJvbnRlbmRHZXRUYXJnZXQo
Ci0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0gICAgKQotewotICAg
IHJldHVybiBGcm9udGVuZC0+VGFyZ2V0OwotfQotUFhFTlZCRF9SSU5HCi1Gcm9udGVuZEdldFJp
bmcoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0gICAgKQotewot
ICAgIHJldHVybiBGcm9udGVuZC0+UmluZzsKLX0KLVBYRU5WQkRfR1JBTlRFUgotRnJvbnRlbmRH
ZXRHcmFudGVyKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICBGcm9udGVuZAotICAg
ICkKLXsKLSAgICByZXR1cm4gRnJvbnRlbmQtPkdyYW50ZXI7Ci19CiAKIE5UU1RBVFVTCiBGcm9u
dGVuZFN0b3JlV3JpdGVGcm9udGVuZCgKQEAgLTM3MywxMiArMjkxLDEyIEBAIF9fVXBkYXRlQmFj
a2VuZFBhdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrZW5kLWlkIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJlZhbHVlKTsKICAgICBpZiAoTlRfU1VDQ0VTUyhTdGF0dXMp
KSB7Ci0gICAgICAgIEZyb250ZW5kLT5CYWNrZW5kSWQgPSAoVVNIT1JUKXN0cnRvdWwoVmFsdWUs
IE5VTEwsIDEwKTsKKyAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4gPSAoVVNIT1JUKXN0
cnRvdWwoVmFsdWUsIE5VTEwsIDEwKTsKICAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsCiAgICAg
ICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEZyb250ZW5kLT5CYWNrZW5k
SWQgPSAwOworICAgICAgICBGcm9udGVuZC0+QmFja2VuZERvbWFpbiA9IDA7CiAgICAgfQogCiAg
ICAgU3RhdHVzID0gWEVOQlVTX1NUT1JFKFJlYWQsCkBAIC05OTcsNyArOTE1LDcgQEAgRnJvbnRl
bmRDbG9zZSgKICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5CYWNrZW5kV2F0Y2gpOwog
ICAgIEZyb250ZW5kLT5CYWNrZW5kV2F0Y2ggPSBOVUxMOwogICAgIAotICAgIEZyb250ZW5kLT5C
YWNrZW5kSWQgPSBET01JRF9JTlZBTElEOworICAgIEZyb250ZW5kLT5CYWNrZW5kRG9tYWluID0g
RE9NSURfSU5WQUxJRDsKIAogICAgIC8vIGdldC91cGRhdGUgYmFja2VuZCBwYXRoCiAgICAgU3Rh
dHVzID0gX19VcGRhdGVCYWNrZW5kUGF0aChGcm9udGVuZCk7CkBAIC0xMTE5LDcgKzEwMzcsNyBA
QCBGcm9udGVuZFByZXBhcmUoCiAgICAgLy8gcmVhZCBmZWF0dXJlcyBhbmQgY2FwcyAocmVtb3Zh
YmxlLCByaW5nLW9yZGVyLCAuLi4pCiAgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6IEJhY2tlbmRJ
ZCAlZCAoJXMpXG4iLAogICAgICAgICAgICAgRnJvbnRlbmQtPlRhcmdldElkLAotICAgICAgICAg
ICAgRnJvbnRlbmQtPkJhY2tlbmRJZCwKKyAgICAgICAgICAgIEZyb250ZW5kLT5CYWNrZW5kRG9t
YWluLAogICAgICAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmRQYXRoKTsKIAogICAgIEZyb250ZW5k
UmVhZEZlYXR1cmVzKEZyb250ZW5kKTsKQEAgLTExNTgsNyArMTA3Niw3IEBAIEZyb250ZW5kQ29u
bmVjdCgKICAgICBYZW5idXNTdGF0ZSAgICAgQmFja2VuZFN0YXRlOwogCiAgICAgLy8gQWxsb2Mg
UmluZywgQ3JlYXRlIEV2dGNobiwgR250dGFiIG1hcAotICAgIFN0YXR1cyA9IEdyYW50ZXJDb25u
ZWN0KEZyb250ZW5kLT5HcmFudGVyLCBGcm9udGVuZC0+QmFja2VuZElkKTsKKyAgICBTdGF0dXMg
PSBHcmFudGVyQ29ubmVjdChGcm9udGVuZC0+R3JhbnRlciwgRnJvbnRlbmQtPkJhY2tlbmREb21h
aW4pOwogICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQogICAgICAgICBnb3RvIGZhaWwxOwog
CkBAIC0xNjgwLDcgKzE1OTgsNyBAQCBGcm9udGVuZENyZWF0ZSgKICAgICBGcm9udGVuZC0+RGV2
aWNlSWQgPSBzdHJ0b3VsKERldmljZUlkLCBOVUxMLCAxMCk7CiAgICAgRnJvbnRlbmQtPlN0YXRl
ID0gWEVOVkJEX0lOSVRJQUxJWkVEOwogICAgIEZyb250ZW5kLT5EaXNrSW5mby5TZWN0b3JTaXpl
ID0gNTEyOyAvLyBkZWZhdWx0IHNlY3RvciBzaXplCi0gICAgRnJvbnRlbmQtPkJhY2tlbmRJZCA9
IERPTUlEX0lOVkFMSUQ7CisgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4gPSBET01JRF9JTlZB
TElEOwogICAgIAogICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRmQShGcm9udGVuZC0+RnJv
bnRlbmRQYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoRnJvbnRl
bmQtPkZyb250ZW5kUGF0aCksCkBAIC0xNzc2LDEwICsxNjk0LDEwIEBAIEZyb250ZW5kRGVidWdD
YWxsYmFjaygKICAgICApCiB7CiAgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWcsCi0gICAg
ICAgICAgICAgICAgICJGUk9OVEVORDogVGFyZ2V0SWQ9JWQgRGV2aWNlSWQ9JWQgQmFja2VuZElk
PSVkXG4iLAorICAgICAgICAgICAgICAgICAiRlJPTlRFTkQ6IFRhcmdldElkPSVkIERldmljZUlk
PSVkIEJhY2tlbmREb21haW49JWRcbiIsCiAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5UYXJn
ZXRJZCwKICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRldmljZUlkLAotICAgICAgICAgICAg
ICAgICBGcm9udGVuZC0+QmFja2VuZElkKTsKKyAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkJh
Y2tlbmREb21haW4pOwogICAgIFhFTkJVU19ERUJVRyhQcmludGYsIERlYnVnLAogICAgICAgICAg
ICAgICAgICAiRlJPTlRFTkQ6IEZyb250ZW5kUGF0aCAlc1xuIiwKICAgICAgICAgICAgICAgICAg
RnJvbnRlbmQtPkZyb250ZW5kUGF0aCk7CkBAIC0xODMzLDMgKzE3NTEsNTMgQEAgRnJvbnRlbmRE
ZWJ1Z0NhbGxiYWNrKAogICAgIEdyYW50ZXJEZWJ1Z0NhbGxiYWNrKEZyb250ZW5kLT5HcmFudGVy
LCBEZWJ1Zyk7CiB9CiAKKyNkZWZpbmUgRlJPTlRFTkRfR0VUX1BST1BFUlRZKF9uYW1lLCBfdHlw
ZSkgICAgIFwKK3N0YXRpYyBGT1JDRUlOTElORSBfdHlwZSAgICAgICAgICAgICAgICAgICAgICAg
IFwKK19fRnJvbnRlbmRHZXQgIyMgX25hbWUgIyMgKCAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZCAgICAgICAgICAgIFwKKyAgICApICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRnJvbnRlbmQt
PiAjIyBfbmFtZSAjIyA7ICAgICAgICAgICAgIFwKK30gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKK190eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKK0Zyb250ZW5kR2V0ICMjIF9uYW1lICMjICggICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZCAgICAgICAg
ICAgIFwKKyAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBy
ZXR1cm4gX19Gcm9udGVuZEdldCAjIyBfbmFtZSAjIyAoRnJvbnRlbmQpO1wKK30KKworRlJPTlRF
TkRfR0VUX1BST1BFUlRZKFRhcmdldCwgUFhFTlZCRF9UQVJHRVQpCitGUk9OVEVORF9HRVRfUFJP
UEVSVFkoUmluZywgUFhFTlZCRF9SSU5HKQorRlJPTlRFTkRfR0VUX1BST1BFUlRZKEdyYW50ZXIs
IFBYRU5WQkRfR1JBTlRFUikKK0ZST05URU5EX0dFVF9QUk9QRVJUWShUYXJnZXRJZCwgVUxPTkcp
CitGUk9OVEVORF9HRVRfUFJPUEVSVFkoRGV2aWNlSWQsIFVMT05HKQorRlJPTlRFTkRfR0VUX1BS
T1BFUlRZKEJhY2tlbmREb21haW4sIFVMT05HKQorRlJPTlRFTkRfR0VUX1BST1BFUlRZKEJhY2tl
bmRQYXRoLCBQQ0hBUikKK0ZST05URU5EX0dFVF9QUk9QRVJUWShGcm9udGVuZFBhdGgsIFBDSEFS
KQorLy9GUk9OVEVORF9HRVRfUFJPUEVSVFkoQ2FwcywgUFhFTlZCRF9DQVBTKQorUFhFTlZCRF9D
QVBTCitGcm9udGVuZEdldENhcHMoCisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRl
bmQKKyAgICApCit7CisgICAgcmV0dXJuICZGcm9udGVuZC0+Q2FwczsKK30KKy8vRlJPTlRFTkRf
R0VUX1BST1BFUlRZKEZlYXR1cmVzLCBQWEVOVkJEX0ZFQVRVUkVTKQorUFhFTlZCRF9GRUFUVVJF
UworRnJvbnRlbmRHZXRGZWF0dXJlcygKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9u
dGVuZAorICAgICkKK3sKKyAgICByZXR1cm4gJkZyb250ZW5kLT5GZWF0dXJlczsKK30KKy8vRlJP
TlRFTkRfR0VUX1BST1BFUlRZKERpc2tJbmZvLCBQWEVOVkJEX0RJU0tJTkZPKQorUFhFTlZCRF9E
SVNLSU5GTworRnJvbnRlbmRHZXREaXNrSW5mbygKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAg
ICBGcm9udGVuZAorICAgICkKK3sKKyAgICByZXR1cm4gJkZyb250ZW5kLT5EaXNrSW5mbzsKK30K
KworI3VuZGVmIEZST05URU5EX0dFVF9QUk9QRVJUWQpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9m
cm9udGVuZC5oIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5oCmluZGV4IDUxM2FjZTQuLjQ5YzEyMWMg
MTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQuaAorKysgYi9zcmMveGVudmJkL2Zyb250
ZW5kLmgKQEAgLTc0LDY1ICs3NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0RJU0tJTkZP
IHsKIAogdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9GUk9OVEVORCBYRU5WQkRfRlJPTlRFTkQsICpQ
WEVOVkJEX0ZST05URU5EOwogCi1leHRlcm4gVUxPTkcKLUZyb250ZW5kR2V0RGV2aWNlSWQoCi0g
ICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKLSAgICApOwotCi1leHRlcm4gVUxP
TkcKLUZyb250ZW5kR2V0QmFja2VuZERvbWFpbigKLSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAg
ICBGcm9udGVuZAotICAgICk7Ci0KLWV4dGVybiBQQ0hBUgotRnJvbnRlbmRHZXRCYWNrZW5kUGF0
aCgKLSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAotICAgICk7Ci0KLWV4dGVy
biBQQ0hBUgotRnJvbnRlbmRHZXRGcm9udGVuZFBhdGgoCi0gICAgSU4gIFBYRU5WQkRfRlJPTlRF
TkQgICAgRnJvbnRlbmQKLSAgICApOwotCiBleHRlcm4gVk9JRAogRnJvbnRlbmRSZW1vdmVGZWF0
dXJlKAogICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZCwKICAgICBJTiAg
VUNIQVIgICAgICAgICAgICAgICAgICAgQmxraWZPcGVyYXRpb24KICAgICApOwotZXh0ZXJuIFBY
RU5WQkRfQ0FQUwotRnJvbnRlbmRHZXRDYXBzKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQg
ICAgICBGcm9udGVuZAotICAgICk7Ci1leHRlcm4gUFhFTlZCRF9GRUFUVVJFUwotRnJvbnRlbmRH
ZXRGZWF0dXJlcygKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQKLSAg
ICApOwotZXh0ZXJuIFBYRU5WQkRfRElTS0lORk8KLUZyb250ZW5kR2V0RGlza0luZm8oCi0gICAg
X19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCi0gICAgKTsKLWV4dGVybiBVTE9O
RwotRnJvbnRlbmRHZXRUYXJnZXRJZCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAg
RnJvbnRlbmQKLSAgICApOworCiBleHRlcm4gUFZPSUQKIEZyb250ZW5kR2V0SW5xdWlyeSgKICAg
ICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQKICAgICApOwotZXh0ZXJuIFBY
RU5WQkRfVEFSR0VUCi1Gcm9udGVuZEdldFRhcmdldCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05U
RU5EICAgICAgRnJvbnRlbmQKLSAgICApOwotI2luY2x1ZGUgInJpbmcuaCIKLWV4dGVybiBQWEVO
VkJEX1JJTkcKLUZyb250ZW5kR2V0UmluZygKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAg
ICAgRnJvbnRlbmQKLSAgICApOwotI2luY2x1ZGUgImdyYW50ZXIuaCIKLWV4dGVybiBQWEVOVkJE
X0dSQU5URVIKLUZyb250ZW5kR2V0R3JhbnRlcigKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5E
ICAgICAgRnJvbnRlbmQKLSAgICApOwogCiBleHRlcm4gTlRTVEFUVVMKIEZyb250ZW5kU3RvcmVX
cml0ZUZyb250ZW5kKApAQCAtMjA1LDQgKzE1NiwyNiBAQCBGcm9udGVuZERlYnVnQ2FsbGJhY2so
CiAgICAgX19pbiAgUFhFTkJVU19ERUJVR19JTlRFUkZBQ0UgRGVidWcKICAgICApOwogCisjZGVm
aW5lIEZST05URU5EX0dFVF9QUk9QRVJUWShfbmFtZSwgX3R5cGUpICAgICBcCitleHRlcm4gX3R5
cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitGcm9udGVuZEdldCAjIyBf
bmFtZSAjIyAoICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgSU4gIFBYRU5WQkRfRlJPTlRF
TkQgICAgRnJvbnRlbmQgICAgICAgICAgICBcCisgICAgKTsKKworRlJPTlRFTkRfR0VUX1BST1BF
UlRZKFRhcmdldCwgUFhFTlZCRF9UQVJHRVQpCisjaW5jbHVkZSAicmluZy5oIgorRlJPTlRFTkRf
R0VUX1BST1BFUlRZKFJpbmcsIFBYRU5WQkRfUklORykKKyNpbmNsdWRlICJncmFudGVyLmgiCitG
Uk9OVEVORF9HRVRfUFJPUEVSVFkoR3JhbnRlciwgUFhFTlZCRF9HUkFOVEVSKQorRlJPTlRFTkRf
R0VUX1BST1BFUlRZKFRhcmdldElkLCBVTE9ORykKK0ZST05URU5EX0dFVF9QUk9QRVJUWShEZXZp
Y2VJZCwgVUxPTkcpCitGUk9OVEVORF9HRVRfUFJPUEVSVFkoQmFja2VuZERvbWFpbiwgVUxPTkcp
CitGUk9OVEVORF9HRVRfUFJPUEVSVFkoQmFja2VuZFBhdGgsIFBDSEFSKQorRlJPTlRFTkRfR0VU
X1BST1BFUlRZKEZyb250ZW5kUGF0aCwgUENIQVIpCitGUk9OVEVORF9HRVRfUFJPUEVSVFkoQ2Fw
cywgUFhFTlZCRF9DQVBTKQorRlJPTlRFTkRfR0VUX1BST1BFUlRZKEZlYXR1cmVzLCBQWEVOVkJE
X0ZFQVRVUkVTKQorRlJPTlRFTkRfR0VUX1BST1BFUlRZKERpc2tJbmZvLCBQWEVOVkJEX0RJU0tJ
TkZPKQorCisjdW5kZWYgRlJPTlRFTkRfR0VUX1BST1BFUlRZCisKICNlbmRpZiAvLyBfWEVOVkJE
X0ZST05URU5EX0gKLS0gCjIuOC4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:57:34 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:57:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhNW-0001ti-8D; Wed, 20 Sep 2017 15:57:34 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhNU-0001tM-Qx
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:57:32 +0000
Received: from [193.109.254.147] by server-1.bemta-6.messagelabs.com id
 FE/2D-03414-CEF82C95; Wed, 20 Sep 2017 15:57:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRWlGSWpSXmKPExsXitHSDve7r/kO
 RBlu/WVj8WZzowOhx+MMVlgDGKNbMvKT8igTWjKdXZjEVHOWvmL7+JGsD40KeLkZODgkBf4k9
 Xa2MIDabgKzEx5WfmUFsEQF1iX2ftzKB2MwCahLX93exgtjCAgoSpze/ZwOxWQRUJTZNhujlF
 bCU6L2xjhlippzE5MWXwOJCAkoS3xa/YIaoEZQ4OfMJC8RMCYmDL14wT2DknoUkNQtJagEj0y
 pGjeLUorLUIl0jI72kosz0jJLcxMwcXUMDM73c1OLixPTUnMSkYr3k/NxNjMBQYACCHYxr5gc
 eYpTkYFIS5WVvPxQpxJeUn1KZkVicEV9UmpNafIhRhoNDSYJ3Wh9QTrAoNT21Ii0zBxiUMGkJ
 Dh4lEd4jIGne4oLE3OLMdIjUKUZdjo6bd/8wCbHk5eelSonzrgEpEgApyijNgxsBi5BLjLJSw
 ryMQEcJ8RSkFuVmlqDKv2IU52BUEuZdBzKFJzOvBG7TK6AjmICOyN5wAOSIkkSElFQDI9+Vp8
 +Muc0P9eVX6TD/5ViRvXq1/ybLI4I7rz1d/fZ3pzHrSWuXmAUdWssPdM93T6pmr43vOpJSumy
 CxrpF67q3TC95YHR7xodFAvNKIk3eTfplfOuwoVLDKua3GwoVGRtvGb1vf2z569f5ytf7Tp6S
 EoyrYD99aOrpZYfcjPrWGUyatjNl4iwlluKMREMt5qLiRABPIEujiwIAAA==
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-15.tower-27.messagelabs.com!1505923048!64854203!3
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 55469 invoked from network); 20 Sep 2017 15:57:31 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:57:31 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="448562140"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:18 +0100
Message-ID: <20170920155325.5860-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/7] Refactoring
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKVGhpcyBzZXJpZXMgYXR0
ZW1wdHMgdG8gcmVsb2NhdGUgY29kZSB0byB0aGUgY29ycmN0IHNvdXJjZSBmaWxlCiogdGFyZ2V0
LmMgc2hvdWxkIGNvbnRhaW4gU1JCIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB0aGF0IGFyZSBub3QK
ICBwYXNzZWQgdG8gdGhlIGJhY2tlbmQuCiogZnJvbnRlbmQuYyBzaG91bGQgY29udGFpbiB0aGUg
c3RhdGUgbW9kZWwgYW5kIG5vbi1ibG9jayBwcm90b2NvbAogIGFjY2VzcyB0byB4ZW5zdG9yZS4K
KiByaW5nLmMgc2hvdWxkIGNvbnRhaW4gYWxsIFNSQiBoYW5kbGluZyBhbmQgdGhlIGJsb2NrIHBy
b3RvY29sCiAgaW1wbGVtZW50YXRpb24uCkVhY2ggc291cmNlIGZpbGUgc2hvdWxkIGNvbnRhaW4g
aXRzIG93biBkZWJ1ZyBjYWxsYmFjayBoYW5kbGVyCgpPd2VuIFNtaXRoICg3KToKICBNZXJnZSBO
b3RpZmllciBhbmQgQmxvY2tSaW5nIGludG8gUmluZwogIFVzZSBtYWNyb3MgZm9yIEZyb250ZW5k
IGRhdGEgYWNjZXNzb3JzCiAgTW92ZSByZXF1ZXN0IHByZXBhcmUvY2xlYW51cCB0byByaW5nCiAg
VGlkeSB1cCBGcm9udGVuZERlYnVnQ2FsbGJhY2sKICBUaWR5IHVwIEdyYW50ZXJEZWJ1Z0NhbGxi
YWNrCiAgTW92ZSBJbnF1aXJ5IGhhbmRsaW5nIGludG8gdGFyZ2V0LmMKICBSZW1vdmUgZ2VuZXJp
YyBzdG9yZSBhY2Nlc3NvcnMgaW4gZnJvbnRlbmQKCiBzcmMveGVudmJkL2Jhc2U2NC5jICAgICAg
ICAgIHwgIDE3NCArKysrCiBzcmMveGVudmJkL2Jhc2U2NC5oICAgICAgICAgIHwgICA1MCArCiBz
cmMveGVudmJkL2Jsb2NrcmluZy5jICAgICAgIHwgIDU5NyAtLS0tLS0tLS0tLS0KIHNyYy94ZW52
YmQvYmxvY2tyaW5nLmggICAgICAgfCAgIDk3IC0tCiBzcmMveGVudmJkL2Zyb250ZW5kLmMgICAg
ICAgIHwgIDgxOCArKysrKysrKy0tLS0tLS0tCiBzcmMveGVudmJkL2Zyb250ZW5kLmggICAgICAg
IHwgIDEzNiArKy0KIHNyYy94ZW52YmQvZ3JhbnRlci5jICAgICAgICAgfCAgMTQ2ICsrLQogc3Jj
L3hlbnZiZC9ncmFudGVyLmggICAgICAgICB8ICAgNDYgKy0KIHNyYy94ZW52YmQvbm90aWZpZXIu
YyAgICAgICAgfCAgMzkwIC0tLS0tLS0tCiBzcmMveGVudmJkL25vdGlmaWVyLmggICAgICAgIHwg
IDEwMSAtLQogc3JjL3hlbnZiZC9wZG9pbnF1aXJ5LmMgICAgICB8ICA1MzAgLS0tLS0tLS0tLS0K
IHNyYy94ZW52YmQvcGRvaW5xdWlyeS5oICAgICAgfCAgIDY0IC0tCiBzcmMveGVudmJkL3Jpbmcu
YyAgICAgICAgICAgIHwgMjEzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKIHNyYy94ZW52YmQvcmluZy5oICAgICAgICAgICAgfCAgIDk5ICsrCiBzcmMveGVudmJk
L3RhcmdldC5jICAgICAgICAgIHwgMTY1MSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogc3JjL3hlbnZiZC90YXJnZXQuaCAgICAgICAgICB8ICAgMTIgLQogdnMyMDE1L3hlbnZiZC94
ZW52YmQudmN4cHJvaiB8ICAgIDUgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDMzMjIgaW5zZXJ0aW9u
cygrKSwgMzcyNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVudmJkL2Jh
c2U2NC5jCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbnZiZC9iYXNlNjQuaAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IHNyYy94ZW52YmQvYmxvY2tyaW5nLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVudmJkL2Jsb2NrcmluZy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9ub3RpZmll
ci5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9ub3RpZmllci5oCiBkZWxldGUgbW9k
ZSAxMDA2NDQgc3JjL3hlbnZiZC9wZG9pbnF1aXJ5LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVudmJkL3Bkb2lucXVpcnkuaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW52YmQvcmluZy5j
CiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbnZiZC9yaW5nLmgKCi0tIAoyLjguMwoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBt
YWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:59:03 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:59:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhOx-0001zs-EQ; Wed, 20 Sep 2017 15:59:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhOv-0001zZ-Ly
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:59:01 +0000
Received: from [85.158.139.211] by server-12.bemta-5.messagelabs.com id
 E8/8B-30935-44092C95; Wed, 20 Sep 2017 15:59:00 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRWlGSWpSXmKPExsXitHRDpK7LhEO
 RBvfXilj8WZzowOhx+MMVlgDGKNbMvKT8igTWjBXbFrMVLJ3OWLFlwyTWBsYrOV2MnBwSAv4S
 BzpOMYPYbAKyEh9XfgazRQTUJfZ93soEYjMLqElc39/FCmILCxhJTNnSzgJiswioSpz68oQRx
 OYVsJS4fvI3K8RMOYnJiy+BxTkFrCQez5gBNJODQwio5v0xX5CwkICSxLfFL5ghWgUlTs58wg
 KxSkLi4IsXzBMYeWchSc1CklrAyLSKUb04tagstUjXSC+pKDM9oyQ3MTNH19DAVC83tbg4MT0
 1JzGpWC85P3cTIzBwGIBgB+P3P06HGCU5mJREeauPH4wU4kvKT6nMSCzOiC8qzUktPsQow8Gh
 JMH74AJQTrAoNT21Ii0zBxjCMGkJDh4lEV6Wi0Bp3uKCxNzizHSI1ClGS45jmy7/YeJ413QDS
 HbcvPuHSYglLz8vVUqc9yrIPAGQhozSPLhxsDi7xCgrJczLCHSgEE9BalFuZgmq/CtGcQ5GJW
 FeDpC1PJl5JXBbXwEdxAR0UPaGAyAHlSQipKQaGBc2eQvF3A63d/x1ttbWz++i0XV5hfZToXb
 3bbjmmszdyPumXen+fPailb2PvhdNe/SSvaktZ9Yz+c95lovnbH7psOxow3/V/Zq1eXM8LPlm
 1gd9f+bYIsHEwSJ8eDJXyvqdL+5fnn9kgRKjt6GYTM/hq2/kP7W9nd62t2eSmkthJM/HK89vl
 iqxFGckGmoxFxUnAgBJXiV1rgIAAA==
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-16.tower-206.messagelabs.com!1505923138!92468364!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1409 invoked from network); 20 Sep 2017 15:58:59 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-16.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:58:59 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="440535936"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:22 +0100
Message-ID: <20170920155325.5860-5-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 4/7] Tidy up FrontendDebugCallback
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKTWFrZSB0aGUgZnJvbnRl
bmQgcmVnaXN0ZXIgZm9yIGl0cyBvd24gZGVidWcgY2FsbGJhY2ssIGFuZCBub3QKY2hhaW4gdGhl
IGNhbGxiYWNrIGZyb20gdGhlIHRhcmdldHMgZGVidWcgY2FsbGJhY2sKClNpZ25lZC1vZmYtYnk6
IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVudmJkL2Zyb250
ZW5kLmMgfCAzMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIHNyYy94ZW52YmQvZnJvbnRlbmQuaCB8ICAzMSArKy0tLQogc3JjL3hlbnZiZC90YXJn
ZXQuYyAgIHwgICAzIC0KIDMgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDE2NyBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2Zyb250ZW5kLmMgYi9zcmMveGVu
dmJkL2Zyb250ZW5kLmMKaW5kZXggNTAxNDU5My4uYmZmZTNkNyAxMDA2NDQKLS0tIGEvc3JjL3hl
bnZiZC9mcm9udGVuZC5jCisrKyBiL3NyYy94ZW52YmQvZnJvbnRlbmQuYwpAQCAtMjksMjQgKzI5
LDI4IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLyAKIAorI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5j
bHVkZSA8bnRzdHJzYWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxzdG9y
ZV9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxkZWJ1Z19pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxz
dXNwZW5kX2ludGVyZmFjZS5oPgorCiAjaW5jbHVkZSAiZnJvbnRlbmQuaCIKICNpbmNsdWRlICJy
ZWdpc3RyeS5oIgogI2luY2x1ZGUgImRyaXZlci5oIgogI2luY2x1ZGUgImFkYXB0ZXIuaCIKICNp
bmNsdWRlICJwZG9pbnF1aXJ5LmgiCiAjaW5jbHVkZSAic3JiZXh0LmgiCi0jaW5jbHVkZSAiZGVi
dWcuaCIKLSNpbmNsdWRlICJhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dGlsLmgiCiAjaW5jbHVkZSAi
bmFtZXMuaCIKICNpbmNsdWRlICJyaW5nLmgiCiAjaW5jbHVkZSAiZ3JhbnRlci5oIgogI2luY2x1
ZGUgInRocmVhZC5oIgotI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgotI2luY2x1ZGUgPHN1
c3BlbmRfaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8bnRzdHJzYWZlLmg+CiAKLSNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUgImFzc2VydC5oIgorI2luY2x1
ZGUgInV0aWwuaCIKIAogc3RydWN0IF9YRU5WQkRfRlJPTlRFTkQgewogICAgIC8vIEZyb250ZW5k
CkBAIC02Nyw5ICs3MSwxMSBAQCBzdHJ1Y3QgX1hFTlZCRF9GUk9OVEVORCB7CiAKICAgICAvLyBJ
bnRlcmZhY2VzIHRvIFhlbkJ1cwogICAgIFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UgICAgICBTdG9y
ZUludGVyZmFjZTsKKyAgICBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICAgRGVidWdJbnRlcmZh
Y2U7CiAgICAgWEVOQlVTX1NVU1BFTkRfSU5URVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7CiAK
LSAgICBQWEVOQlVTX1NVU1BFTkRfQ0FMTEJBQ0sgICAgU3VzcGVuZExhdGVDYWxsYmFjazsKKyAg
ICBQWEVOQlVTX0RFQlVHX0NBTExCQUNLICAgICAgRGVidWdDYWxsYmFjazsKKyAgICBQWEVOQlVT
X1NVU1BFTkRfQ0FMTEJBQ0sgICAgU3VzcGVuZENhbGxiYWNrOwogCiAgICAgLy8gUmluZwogICAg
IFBYRU5WQkRfUklORyAgICAgICAgICAgICAgICBSaW5nOwpAQCAtMTM4NCwyOSArMTM5MCwyOSBA
QCBfX0Zyb250ZW5kU2V0U3RhdGUoCiAKIF9fZHJ2X3JlcXVpcmVzSVJRTChESVNQQVRDSF9MRVZF
TCkKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECi1Gcm9udGVuZFN1c3BlbmRMYXRlQ2Fs
bGJhY2soCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgICAgICAgQXJndW1lbnQKK0Zyb250
ZW5kU3VzcGVuZENhbGxiYWNrKAorICAgIElOICBQVk9JRCAgICAgICAgICAgQXJndW1lbnQKICAg
ICApCiB7Ci0gICAgTlRTVEFUVVMgICAgICAgICAgICBTdGF0dXM7CisgICAgUFhFTlZCRF9GUk9O
VEVORCAgICBGcm9udGVuZCA9IEFyZ3VtZW50OwogICAgIFhFTlZCRF9TVEFURSAgICAgICAgU3Rh
dGU7Ci0gICAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZCA9IChQWEVOVkJEX0ZST05URU5E
KUFyZ3VtZW50OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwogCiAgICAgVmVyYm9z
ZSgiVGFyZ2V0WyVkXSA6ID09PT4gZnJvbSAlc1xuIiwgRnJvbnRlbmQtPlRhcmdldElkLCBfX1hl
bnZiZFN0YXRlTmFtZShGcm9udGVuZC0+U3RhdGUpKTsKICAgICBTdGF0ZSA9IEZyb250ZW5kLT5T
dGF0ZTsKIAogICAgIC8vIGRvbnQgYWNxdWlyZSBzdGF0ZSBsb2NrIC0gY2FsbGVkIGF0IERJU1BB
VENIIG9uIDEgdkNQVSB3aXRoIGludGVycnVwdHMgZW5hYmxlZAogI3ByYWdtYSB3YXJuaW5nKHN1
cHByZXNzOiAyNjExMCkgLy8gd2FybmluZyBDMjYxMTA6IENhbGxlciBmYWlsaW5nIHRvIGhvbGQg
bG9jayA8bG9jaz4gYmVmb3JlIGNhbGxpbmcgZnVuY3Rpb24gPGZ1bmM+LgotICAgIFN0YXR1cyA9
IF9fRnJvbnRlbmRTZXRTdGF0ZShGcm9udGVuZCwgWEVOVkJEX0NMT1NFRCk7Ci0gICAgaWYgKCFO
VF9TVUNDRVNTKFN0YXR1cykpIHsKLSAgICAgICAgRXJyb3IoIlRhcmdldFslZF0gOiBTZXRTdGF0
ZSBDTE9TRUQgKCUwOHgpXG4iLCBGcm9udGVuZC0+VGFyZ2V0SWQsIFN0YXR1cyk7CisgICAgc3Rh
dHVzID0gX19Gcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBYRU5WQkRfQ0xPU0VEKTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICBFcnJvcigiVGFyZ2V0WyVkXSA6IFNl
dFN0YXRlIENMT1NFRCAoJTA4eClcbiIsIEZyb250ZW5kLT5UYXJnZXRJZCwgc3RhdHVzKTsKICAg
ICAgICAgQVNTRVJUKEZBTFNFKTsKICAgICB9CiAKICAgICAvLyBkb250IGFjcXVpcmUgc3RhdGUg
bG9jayAtIGNhbGxlZCBhdCBESVNQQVRDSCBvbiAxIHZDUFUgd2l0aCBpbnRlcnJ1cHRzIGVuYWJs
ZWQKLSAgICBTdGF0dXMgPSBfX0Zyb250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIFN0YXRlKTsKLSAg
ICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkgewotICAgICAgICBFcnJvcigiVGFyZ2V0WyVkXSA6
IFNldFN0YXRlICVzICglMDh4KVxuIiwgRnJvbnRlbmQtPlRhcmdldElkLCBfX1hlbnZiZFN0YXRl
TmFtZShTdGF0ZSksIFN0YXR1cyk7CisgICAgc3RhdHVzID0gX19Gcm9udGVuZFNldFN0YXRlKEZy
b250ZW5kLCBTdGF0ZSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAg
RXJyb3IoIlRhcmdldFslZF0gOiBTZXRTdGF0ZSAlcyAoJTA4eClcbiIsIEZyb250ZW5kLT5UYXJn
ZXRJZCwgX19YZW52YmRTdGF0ZU5hbWUoU3RhdGUpLCBzdGF0dXMpOwogICAgICAgICBBU1NFUlQo
RkFMU0UpOwogICAgIH0KIApAQCAtMTQxNSw5OSArMTQyMSwyMDEgQEAgRnJvbnRlbmRTdXNwZW5k
TGF0ZUNhbGxiYWNrKAogICAgIFZlcmJvc2UoIlRhcmdldFslZF0gOiA8PT09IHJlc3RvcmVkICVz
XG4iLCBGcm9udGVuZC0+VGFyZ2V0SWQsIF9fWGVudmJkU3RhdGVOYW1lKEZyb250ZW5kLT5TdGF0
ZSkpOwogfQogCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRAorRnJvbnRlbmREZWJ1Z0Nh
bGxiYWNrKAorICAgIElOICBQVk9JRCAgICAgICAgICAgQXJndW1lbnQsCisgICAgSU4gIEJPT0xF
QU4gICAgICAgICBDcmFzaGluZworICAgICkKK3sKKyAgICBQWEVOVkJEX0ZST05URU5EICAgIEZy
b250ZW5kID0gQXJndW1lbnQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENyYXNoaW5n
KTsKKworICAgIFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAgICAgICAgICZGcm9udGVu
ZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJUYXJnZXRJZD0lZCBEZXZpY2VJ
ZD0lZCBCYWNrZW5kRG9tYWluPSVkXG4iLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+VGFy
Z2V0SWQsCisgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5EZXZpY2VJZCwKKyAgICAgICAgICAg
ICAgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4pOworICAgIFhFTkJVU19ERUJVRyhQcmludGYs
CisgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAg
ICAgICAgICJGcm9udGVuZFBhdGg6ICVzXG4iLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+
RnJvbnRlbmRQYXRoKTsKKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAg
ICAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAiQmFja2VuZFBh
dGg6ICVzXG4iLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+QmFja2VuZFBhdGggPyBGcm9u
dGVuZC0+QmFja2VuZFBhdGggOiAiTlVMTCIpOworICAgIFhFTkJVU19ERUJVRyhQcmludGYsCisg
ICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICJUYXJnZXRQYXRoOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPlRhcmdl
dFBhdGgpOworICAgIFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAgICAgICAgICZGcm9u
dGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJTdGF0ZTogJXNcbiIsCisg
ICAgICAgICAgICAgICAgIF9fWGVudmJkU3RhdGVOYW1lKEZyb250ZW5kLT5TdGF0ZSkpOworCisg
ICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5EZWJ1
Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIkNhcHM6ICVzJXMlcyVzJXMlc1xuIiwKKyAg
ICAgICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuQ29ubmVjdGVkID8gIkNPTk5FQ1RFRCAiIDog
IiIsCisgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5DYXBzLlJlbW92YWJsZSA/ICJSRU1PVkFC
TEUgIiA6ICIiLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fwcy5TdXJwcmlzZVJlbW92
YWJsZSA/ICJTVVJQUklTRSAiIDogIiIsCisgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5DYXBz
LlBhZ2luZyA/ICJQQUdJTkcgIiA6ICIiLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fw
cy5IaWJlcm5hdGlvbiA/ICJISUJFUiAiIDogIiIsCisgICAgICAgICAgICAgICAgIEZyb250ZW5k
LT5DYXBzLkR1bXBGaWxlID8gIkRVTVAgIiA6ICIiKTsKKworICAgIFhFTkJVU19ERUJVRyhQcmlu
dGYsCisgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAg
ICAgICAgICAgICJGZWF0dXJlczogJXMlcyVzJXMlc1xuIiwKKyAgICAgICAgICAgICAgICAgRnJv
bnRlbmQtPkZlYXR1cmVzLlBlcnNpc3RlbnQgPyAiUEVSU0lTVEVOVCAiIDogIiIsCisgICAgICAg
ICAgICAgICAgIEZyb250ZW5kLT5GZWF0dXJlcy5JbmRpcmVjdCA+IDAgPyAiSU5ESVJFQ1QgIiA6
ICIiLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0luZm8uQmFycmllciA/ICJCQVJS
SUVSICIgOiAiIiwKKyAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLkZsdXNoQ2Fj
aGUgPyAiRkxVU0ggIiA6ICIiLAorICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0luZm8u
RGlzY2FyZCA/ICJESVNDQVJEICIgOiAiIik7CisKKyAgICBpZiAoRnJvbnRlbmQtPkZlYXR1cmVz
LkluZGlyZWN0ID4gMCkgeworICAgICAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAg
ICAgICAgICAgICAgJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICJJTkRJUkVDVCAleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5GZWF0
dXJlcy5JbmRpcmVjdCk7CisgICAgfQorICAgIGlmIChGcm9udGVuZC0+RGlza0luZm8uRGlzY2Fy
ZCkgeworICAgICAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAgICAg
JkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICJESVNDQVJE
ICVzJXgvJXhcbiIsCisgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0luZm8uRGlz
Y2FyZFNlY3VyZSA/ICJTRUNVUkUgIiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgRnJvbnRl
bmQtPkRpc2tJbmZvLkRpc2NhcmRBbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICBGcm9u
dGVuZC0+RGlza0luZm8uRGlzY2FyZEdyYW51bGFyaXR5KTsKKyAgICB9CisKKyAgICBYRU5CVVNf
REVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNl
LAorICAgICAgICAgICAgICAgICAiRGlza0luZm86ICVsbHUgQCAldSAoJXUpICUwOHhcbiIsCisg
ICAgICAgICAgICAgICAgIEZyb250ZW5kLT5EaXNrSW5mby5TZWN0b3JDb3VudCwKKyAgICAgICAg
ICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLlNlY3RvclNpemUsCisgICAgICAgICAgICAgICAg
IEZyb250ZW5kLT5EaXNrSW5mby5QaHlzU2VjdG9yU2l6ZSwKKyAgICAgICAgICAgICAgICAgRnJv
bnRlbmQtPkRpc2tJbmZvLkRpc2tJbmZvKTsKKworICAgIEdyYW50ZXJEZWJ1Z0NhbGxiYWNrKEZy
b250ZW5kLT5HcmFudGVyLCAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlKTsKK30KKwogX19jaGVj
a1JldHVybgogX19kcnZfbWF4SVJRTChESVNQQVRDSF9MRVZFTCkKIE5UU1RBVFVTCiBGcm9udGVu
ZEQzVG9EMCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZAorICAg
IElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIFBYRU5WQkRf
QURBUFRFUiBBZGFwdGVyID0gVGFyZ2V0R2V0QWRhcHRlcihGcm9udGVuZC0+VGFyZ2V0KTsKLSAg
ICBOVFNUQVRVUyAgICBTdGF0dXM7Ci0gICAgS0lSUUwgICAgICAgSXJxbDsKKyAgICBQWEVOVkJE
X0FEQVBURVIgICAgICAgICBBZGFwdGVyID0gVGFyZ2V0R2V0QWRhcHRlcihGcm9udGVuZC0+VGFy
Z2V0KTsKKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgICAgIHN0YXR1czsKIAogICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGcm9udGVuZC0+
U3RhdGVMb2NrLCAmSXJxbCk7CiAKLSAgICAvLyBhY3F1aXJlIGludGVyZmFjZXMKICAgICBBZGFw
dGVyR2V0U3RvcmVJbnRlcmZhY2UoQWRhcHRlciwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7
CisgICAgQWRhcHRlckdldERlYnVnSW50ZXJmYWNlKEFkYXB0ZXIsICZGcm9udGVuZC0+RGVidWdJ
bnRlcmZhY2UpOwogICAgIEFkYXB0ZXJHZXRTdXNwZW5kSW50ZXJmYWNlKEFkYXB0ZXIsICZGcm9u
dGVuZC0+U3VzcGVuZEludGVyZmFjZSk7CiAKLSAgICBTdGF0dXMgPSBYRU5CVVNfU1RPUkUoQWNx
dWlyZSwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7Ci0gICAgaWYgKCFOVF9TVUNDRVNTKFN0
YXR1cykpCisgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKEFjcXVpcmUsICZGcm9udGVuZC0+U3Rv
cmVJbnRlcmZhY2UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3Rv
IGZhaWwxOwogCi0gICAgU3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoQWNxdWlyZSwgJkZyb250ZW5k
LT5TdXNwZW5kSW50ZXJmYWNlKTsKLSAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKKyAgICBz
dGF0dXMgPSBYRU5CVVNfREVCVUcoQWNxdWlyZSwgJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFpbDI7CiAKLSAg
ICAvLyByZWdpc3RlciBzdXNwZW5kIGNhbGxiYWNrCi0gICAgQVNTRVJUM1AoRnJvbnRlbmQtPlN1
c3BlbmRMYXRlQ2FsbGJhY2ssID09LCBOVUxMKTsKLSAgICBTdGF0dXMgPSBYRU5CVVNfU1VTUEVO
RChSZWdpc3RlciwKKyAgICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChBY3F1aXJlLCAmRnJvbnRl
bmQtPlN1c3BlbmRJbnRlcmZhY2UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAg
ICAgICBnb3RvIGZhaWwzOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoUmVnaXN0ZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVU1BFTkRfQ0FMTEJBQ0tfTEFURSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFN1c3BlbmRMYXRlQ2FsbGJhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRTdXNwZW5kQ2FsbGJhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkZyb250ZW5kLT5TdXNwZW5kTGF0ZUNhbGxiYWNrKTsKLSAgICBpZiAoIU5UX1NVQ0NF
U1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsMzsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmRnJvbnRlbmQtPlN1c3BlbmRDYWxsYmFjayk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICBzdGF0dXMgPSBYRU5CVVNfREVCVUco
UmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRl
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fTU9EVUxFX18ifEZST05URU5EIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmREZWJ1Z0NhbGxiYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcm9udGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JkZyb250ZW5kLT5EZWJ1Z0NhbGxiYWNrKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsNTsKIAotICAgIC8vIHVwZGF0ZSBzdGF0ZQogICAgIEZyb250ZW5k
LT5BY3RpdmUgPSBUUlVFOwogCiAgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZyb250ZW5kLT5TdGF0
ZUxvY2ssIElycWwpOwogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKIAotZmFpbDM6Ci0gICAg
RXJyb3IoIkZhaWwzXG4iKTsKLQorZmFpbDU6CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKyAgICBY
RU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+
U3VzcGVuZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENh
bGxiYWNrKTsKKyAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrID0gTlVMTDsKK2ZhaWw0Ogor
ICAgIEVycm9yKCJmYWlsNFxuIik7CiAgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwgJkZyb250
ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKLSAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3Vz
cGVuZEludGVyZmFjZSwgc2l6ZW9mKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkpOwotCitmYWls
MzoKKyAgICBFcnJvcigiZmFpbDNcbiIpOworICAgIFhFTkJVU19ERUJVRyhSZWxlYXNlLCAmRnJv
bnRlbmQtPkRlYnVnSW50ZXJmYWNlKTsKIGZhaWwyOgotICAgIEVycm9yKCJGYWlsMlxuIik7Ci0K
KyAgICBFcnJvcigiZmFpbDJcbiIpOwogICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmRnJvbnRl
bmQtPlN0b3JlSW50ZXJmYWNlKTsKLSAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3RvcmVJ
bnRlcmZhY2UsIHNpemVvZihYRU5CVVNfU1RPUkVfSU5URVJGQUNFKSk7Ci0KIGZhaWwxOgotICAg
IEVycm9yKCJGYWlsMSAoJTA4eClcbiIsIFN0YXR1cyk7CisgICAgRXJyb3IoImZhaWwxICglMDh4
KVxuIiwgc3RhdHVzKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5TdXNwZW5kSW50
ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFD
RSkpOworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAg
ICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7CisgICAgUnRsWmVy
b01lbW9yeSgmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6
ZW9mKFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpKTsKIAogICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZG
cm9udGVuZC0+U3RhdGVMb2NrLCBJcnFsKTsKLSAgICByZXR1cm4gU3RhdHVzOworICAgIHJldHVy
biBzdGF0dXM7CiB9CiAKIF9fZHJ2X21heElSUUwoRElTUEFUQ0hfTEVWRUwpCiBWT0lECiBGcm9u
dGVuZEQwVG9EMygKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZAor
ICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIEtJUlFM
ICAgICAgIElycWw7CisgICAgS0lSUUwgICAgICAgICAgICAgICAgICAgSXJxbDsKIAogICAgIEtl
QWNxdWlyZVNwaW5Mb2NrKCZGcm9udGVuZC0+U3RhdGVMb2NrLCAmSXJxbCk7CiAKLSAgICAvLyB1
cGRhdGUgc3RhdGUKICAgICBGcm9udGVuZC0+QWN0aXZlID0gRkFMU0U7CiAKLSAgICAvLyBkZXJl
Z2lzdGVyIHN1c3BlbmQgY2FsbGJhY2sKLSAgICBpZiAoRnJvbnRlbmQtPlN1c3BlbmRMYXRlQ2Fs
bGJhY2sgIT0gTlVMTCkgewotICAgICAgICBYRU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdXNwZW5kTGF0ZUNhbGxiYWNrKTsKLSAgICAgICAg
RnJvbnRlbmQtPlN1c3BlbmRMYXRlQ2FsbGJhY2sgPSBOVUxMOwotICAgIH0KLSAgICAvLyBGcmVl
IGJhY2tlbmQgcGF0aCBiZWZvcmUgZHJvcHBpbmcgc3RvcmUgaW50ZXJmYWNlCi0gICAgaWYgKEZy
b250ZW5kLT5CYWNrZW5kUGF0aCkgeworICAgIFhFTkJVU19ERUJVRyhEZXJlZ2lzdGVyLAorICAg
ICAgICAgICAgICAgICAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAg
ICBGcm9udGVuZC0+RGVidWdDYWxsYmFjayk7CisgICAgRnJvbnRlbmQtPkRlYnVnQ2FsbGJhY2sg
PSBOVUxMOworCisgICAgWEVOQlVTX1NVU1BFTkQoRGVyZWdpc3RlciwKKyAgICAgICAgICAgICAg
ICAgICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgRnJv
bnRlbmQtPlN1c3BlbmRDYWxsYmFjayk7CisgICAgRnJvbnRlbmQtPlN1c3BlbmRDYWxsYmFjayA9
IE5VTEw7CisKKyAgICBpZiAoRnJvbnRlbmQtPkJhY2tlbmRQYXRoKQogICAgICAgICBfX0Zyb250
ZW5kRnJlZShGcm9udGVuZC0+QmFja2VuZFBhdGgpOwotICAgICAgICBGcm9udGVuZC0+QmFja2Vu
ZFBhdGggPSBOVUxMOwotICAgIH0KKyAgICBGcm9udGVuZC0+QmFja2VuZFBhdGggPSBOVUxMOwog
Ci0gICAgLy8gcmVsZWFzZSBpbnRlcmZhY2VzCiAgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwg
JkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKLSAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVu
ZC0+U3VzcGVuZEludGVyZmFjZSwgc2l6ZW9mKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkpOwot
ICAgIAorICAgIFhFTkJVU19ERUJVRyhSZWxlYXNlLCAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNl
KTsKICAgICBYRU5CVVNfU1RPUkUoUmVsZWFzZSwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7
Ci0gICAgUnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLCBzaXplb2YoWEVO
QlVTX1NUT1JFX0lOVEVSRkFDRSkpOworCisgICAgUnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPlN1
c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YoWEVOQlVTX1NVU1BFTkRf
SU5URVJGQUNFKSk7CisgICAgUnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNl
LAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19ERUJVR19JTlRFUkZBQ0UpKTsKKyAg
ICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICBzaXplb2YoWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSkpOwogCiAgICAgS2VSZWxlYXNlU3Bp
bkxvY2soJkZyb250ZW5kLT5TdGF0ZUxvY2ssIElycWwpOwogfQpAQCAtMTUxNSwxOSArMTYyMywx
OSBAQCBGcm9udGVuZEQwVG9EMygKIF9fY2hlY2tSZXR1cm4KIE5UU1RBVFVTCiBGcm9udGVuZFNl
dFN0YXRlKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5kLAotICAg
IF9faW4gIFhFTlZCRF9TVEFURSAgICAgICAgICAgIFN0YXRlCisgICAgSU4gIFBYRU5WQkRfRlJP
TlRFTkQgICAgRnJvbnRlbmQsCisgICAgSU4gIFhFTlZCRF9TVEFURSAgICAgICAgU3RhdGUKICAg
ICApCiB7Ci0gICAgTlRTVEFUVVMgICAgU3RhdHVzOwotICAgIEtJUlFMICAgICAgIElycWw7Cisg
ICAgS0lSUUwgICAgICAgICAgICAgICAgICAgSXJxbDsKKyAgICBOVFNUQVRVUyAgICAgICAgICAg
ICAgICBzdGF0dXM7CiAKICAgICBLZUFjcXVpcmVTcGluTG9jaygmRnJvbnRlbmQtPlN0YXRlTG9j
aywgJklycWwpOwogCi0gICAgU3RhdHVzID0gX19Gcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBT
dGF0ZSk7CisgICAgc3RhdHVzID0gX19Gcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBTdGF0ZSk7
CiAKICAgICBLZVJlbGVhc2VTcGluTG9jaygmRnJvbnRlbmQtPlN0YXRlTG9jaywgSXJxbCk7Ci0g
ICAgcmV0dXJuIFN0YXR1czsKKyAgICByZXR1cm4gc3RhdHVzOwogfQogCiBfX2NoZWNrUmV0dXJu
CkBAIC0xNTg3LDE0ICsxNjk1LDE0IEBAIGZhaWwxOgogCiBOVFNUQVRVUwogRnJvbnRlbmRDcmVh
dGUoCi0gICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgICAgIFRhcmdldCwKLSAgICBJTiAgUENI
QVIgICAgICAgICAgICAgICAgICAgRGV2aWNlSWQsCi0gICAgSU4gIFVMT05HICAgICAgICAgICAg
ICAgICAgIFRhcmdldElkLAotICAgIE9VVCBQWEVOVkJEX0ZST05URU5EKiAgICAgICBfRnJvbnRl
bmQKKyAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgICBUYXJnZXQsCisgICAgSU4gIFBDSEFSICAg
ICAgICAgICAgICAgRGV2aWNlSWQsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAgVGFyZ2V0
SWQsCisgICAgT1VUIFBYRU5WQkRfRlJPTlRFTkQqICAgX0Zyb250ZW5kCiAgICAgKQogewotICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwotICAgIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJv
bnRlbmQ7CisgICAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQ7CisgICAgTlRTVEFU
VVMgICAgICAgICAgICAgICAgc3RhdHVzOwogCiAgICAgVHJhY2UoIlRhcmdldFslZF0gQCAoJWQp
ID09PT09PlxuIiwgVGFyZ2V0SWQsIEtlR2V0Q3VycmVudElycWwoKSk7CiAKQEAgLTE2NjgsMTAg
KzE3NzYsMTAgQEAgZmFpbDE6CiAKIFZPSUQKIEZyb250ZW5kRGVzdHJveSgKLSAgICBfX2luICBQ
WEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZAorICAgIElOICBQWEVOVkJEX0ZST05URU5E
ICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIGNvbnN0IFVMT05HIFRhcmdldElkID0gRnJvbnRl
bmQtPlRhcmdldElkOworICAgIGNvbnN0IFVMT05HICAgICAgICAgICAgIFRhcmdldElkID0gRnJv
bnRlbmQtPlRhcmdldElkOwogCiAgICAgVHJhY2UoIlRhcmdldFslZF0gQCAoJWQpID09PT09Plxu
IiwgVGFyZ2V0SWQsIEtlR2V0Q3VycmVudElycWwoKSk7CiAKQEAgLTE2OTAsNzkgKzE3OTgsMTIg
QEAgRnJvbnRlbmREZXN0cm95KAogCiAgICAgQVNTRVJUM1AoRnJvbnRlbmQtPkJhY2tlbmRQYXRo
LCA9PSwgTlVMTCk7CiAgICAgQVNTRVJUM1AoRnJvbnRlbmQtPklucXVpcnksID09LCBOVUxMKTsK
LSAgICBBU1NFUlQzUChGcm9udGVuZC0+U3VzcGVuZExhdGVDYWxsYmFjaywgPT0sIE5VTEwpOwog
ICAgIEFTU0VSVDNQKEZyb250ZW5kLT5CYWNrZW5kV2F0Y2gsID09LCBOVUxMKTsKIAogICAgIF9f
RnJvbnRlbmRGcmVlKEZyb250ZW5kKTsKICAgICBUcmFjZSgiVGFyZ2V0WyVkXSBAICglZCkgPD09
PT09XG4iLCBUYXJnZXRJZCwgS2VHZXRDdXJyZW50SXJxbCgpKTsKIH0KIAotLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLy8gRGVidWcKLVZPSUQKLUZyb250ZW5kRGVidWdDYWxsYmFjaygKLSAgICBf
X2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZCwKLSAgICBfX2luICBQWEVOQlVT
X0RFQlVHX0lOVEVSRkFDRSBEZWJ1ZwotICAgICkKLXsKLSAgICBYRU5CVVNfREVCVUcoUHJpbnRm
LCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgIkZST05URU5EOiBUYXJnZXRJZD0lZCBEZXZpY2VJ
ZD0lZCBCYWNrZW5kRG9tYWluPSVkXG4iLAotICAgICAgICAgICAgICAgICBGcm9udGVuZC0+VGFy
Z2V0SWQsCi0gICAgICAgICAgICAgICAgIEZyb250ZW5kLT5EZXZpY2VJZCwKLSAgICAgICAgICAg
ICAgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4pOwotICAgIFhFTkJVU19ERUJVRyhQcmludGYs
IERlYnVnLAotICAgICAgICAgICAgICAgICAiRlJPTlRFTkQ6IEZyb250ZW5kUGF0aCAlc1xuIiwK
LSAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkZyb250ZW5kUGF0aCk7Ci0gICAgWEVOQlVTX0RF
QlVHKFByaW50ZiwgRGVidWcsCi0gICAgICAgICAgICAgICAgICJGUk9OVEVORDogQmFja2VuZFBh
dGggICVzXG4iLAotICAgICAgICAgICAgICAgICBGcm9udGVuZC0+QmFja2VuZFBhdGggPyBGcm9u
dGVuZC0+QmFja2VuZFBhdGggOiAiTlVMTCIpOwotICAgIFhFTkJVU19ERUJVRyhQcmludGYsIERl
YnVnLAotICAgICAgICAgICAgICAgICAiRlJPTlRFTkQ6IFRhcmdldFBhdGggICAlc1xuIiwKLSAg
ICAgICAgICAgICAgICAgRnJvbnRlbmQtPlRhcmdldFBhdGgpOwotICAgIFhFTkJVU19ERUJVRyhQ
cmludGYsIERlYnVnLAotICAgICAgICAgICAgICAgICAiRlJPTlRFTkQ6IFN0YXRlICAgOiAlc1xu
IiwKLSAgICAgICAgICAgICAgICAgX19YZW52YmRTdGF0ZU5hbWUoRnJvbnRlbmQtPlN0YXRlKSk7
Ci0KLSAgICBYRU5CVVNfREVCVUcoUHJpbnRmLCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgIkZS
T05URU5EOiBDYXBzICAgIDogJXMlcyVzJXMlcyVzXG4iLAotICAgICAgICAgICAgICAgICBGcm9u
dGVuZC0+Q2Fwcy5Db25uZWN0ZWQgPyAiQ09OTkVDVEVEICIgOiAiIiwKLSAgICAgICAgICAgICAg
ICAgRnJvbnRlbmQtPkNhcHMuUmVtb3ZhYmxlID8gIlJFTU9WQUJMRSAiIDogIiIsCi0gICAgICAg
ICAgICAgICAgIEZyb250ZW5kLT5DYXBzLlN1cnByaXNlUmVtb3ZhYmxlID8gIlNVUlBSSVNFICIg
OiAiIiwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuUGFnaW5nID8gIlBBR0lORyAi
IDogIiIsCi0gICAgICAgICAgICAgICAgIEZyb250ZW5kLT5DYXBzLkhpYmVybmF0aW9uID8gIkhJ
QkVSICIgOiAiIiwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuRHVtcEZpbGUgPyAi
RFVNUCAiIDogIiIpOwotCi0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWcsCi0gICAgICAg
ICAgICAgICAgICJGUk9OVEVORDogRmVhdHVyZXM6ICVzJXMlcyVzJXNcbiIsCi0gICAgICAgICAg
ICAgICAgIEZyb250ZW5kLT5GZWF0dXJlcy5QZXJzaXN0ZW50ID8gIlBFUlNJU1RFTlQgIiA6ICIi
LAotICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RmVhdHVyZXMuSW5kaXJlY3QgPiAwID8gIklO
RElSRUNUICIgOiAiIiwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLkJhcnJp
ZXIgPyAiQkFSUklFUiAiIDogIiIsCi0gICAgICAgICAgICAgICAgIEZyb250ZW5kLT5EaXNrSW5m
by5GbHVzaENhY2hlID8gIkZMVVNIICIgOiAiIiwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQt
PkRpc2tJbmZvLkRpc2NhcmQgPyAiRElTQ0FSRCAiIDogIiIpOwotCi0gICAgaWYgKEZyb250ZW5k
LT5GZWF0dXJlcy5JbmRpcmVjdCA+IDApIHsKLSAgICAgICAgWEVOQlVTX0RFQlVHKFByaW50Ziwg
RGVidWcsCi0gICAgICAgICAgICAgICAgICAgICAiRlJPTlRFTkQ6IElORElSRUNUICV4XG4iLAot
ICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkZlYXR1cmVzLkluZGlyZWN0KTsKLSAgICB9
Ci0gICAgaWYgKEZyb250ZW5kLT5EaXNrSW5mby5EaXNjYXJkKSB7Ci0gICAgICAgIFhFTkJVU19E
RUJVRyhQcmludGYsIERlYnVnLAotICAgICAgICAgICAgICAgICAgICAgIkZST05URU5EOiBESVND
QVJEICVzJXgvJXhcbiIsCi0gICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0luZm8u
RGlzY2FyZFNlY3VyZSA/ICJTRUNVUkUgIiA6ICIiLAotICAgICAgICAgICAgICAgICAgICAgRnJv
bnRlbmQtPkRpc2tJbmZvLkRpc2NhcmRBbGlnbm1lbnQsCi0gICAgICAgICAgICAgICAgICAgICBG
cm9udGVuZC0+RGlza0luZm8uRGlzY2FyZEdyYW51bGFyaXR5KTsKLSAgICB9Ci0KLSAgICBYRU5C
VVNfREVCVUcoUHJpbnRmLCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgIkZST05URU5EOiBEaXNr
SW5mbzogJWxsdSBAICV1ICgldSkgJTA4eFxuIiwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQt
PkRpc2tJbmZvLlNlY3RvckNvdW50LAotICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0lu
Zm8uU2VjdG9yU2l6ZSwKLSAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLlBoeXNT
ZWN0b3JTaXplLAotICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RGlza0luZm8uRGlza0luZm8p
OwotCi0gICAgR3JhbnRlckRlYnVnQ2FsbGJhY2soRnJvbnRlbmQtPkdyYW50ZXIsIERlYnVnKTsK
LX0KLQogI2RlZmluZSBGUk9OVEVORF9HRVRfUFJPUEVSVFkoX25hbWUsIF90eXBlKSAgICAgXAog
c3RhdGljIEZPUkNFSU5MSU5FIF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgXAogX19Gcm9u
dGVuZEdldCAjIyBfbmFtZSAjIyAoICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEv
c3JjL3hlbnZiZC9mcm9udGVuZC5oIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5oCmluZGV4IGQ2MDhm
ZWYuLjY2OTc5NTYgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQuaAorKysgYi9zcmMv
eGVudmJkL2Zyb250ZW5kLmgKQEAgLTMyLDggKzMyLDcgQEAKICNpZm5kZWYgX1hFTlZCRF9GUk9O
VEVORF9ICiAjZGVmaW5lIF9YRU5WQkRfRlJPTlRFTkRfSAogCi0jaW5jbHVkZSAidGFyZ2V0Lmgi
Ci0jaW5jbHVkZSA8ZGVidWdfaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8bnRkZGsuaD4KIAogdHlw
ZWRlZiBlbnVtIF9YRU5WQkRfU1RBVEUgewogICAgIFhFTlZCRF9TVEFURV9JTlZBTElELApAQCAt
NzQsNiArNzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0RJU0tJTkZPIHsKIAogdHlwZWRl
ZiBzdHJ1Y3QgX1hFTlZCRF9GUk9OVEVORCBYRU5WQkRfRlJPTlRFTkQsICpQWEVOVkJEX0ZST05U
RU5EOwogCisjaW5jbHVkZSAidGFyZ2V0LmgiCisKIGV4dGVybiBWT0lECiBGcm9udGVuZFJlbW92
ZUZlYXR1cmUoCiAgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5kLApAQCAt
MTA4LDI1ICsxMDksMjQgQEAgRnJvbnRlbmRXcml0ZVVzYWdlKAogICAgIF9faW4gIFBYRU5WQkRf
RlJPTlRFTkQgICAgICAgIEZyb250ZW5kCiAgICAgKTsKIAotLy8gSW5pdC9UZXJtCiBfX2NoZWNr
UmV0dXJuCiBfX2Rydl9tYXhJUlFMKERJU1BBVENIX0xFVkVMKQogZXh0ZXJuIE5UU1RBVFVTCiBG
cm9udGVuZEQzVG9EMCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVu
ZAorICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKTsKIAogX19kcnZf
bWF4SVJRTChESVNQQVRDSF9MRVZFTCkKIGV4dGVybiBWT0lECiBGcm9udGVuZEQwVG9EMygKLSAg
ICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZAorICAgIElOICBQWEVOVkJE
X0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKTsKIAogX19jaGVja1JldHVybgogZXh0ZXJuIE5U
U1RBVFVTCiBGcm9udGVuZFNldFN0YXRlKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAg
ICAgIEZyb250ZW5kLAotICAgIF9faW4gIFhFTlZCRF9TVEFURSAgICAgICAgICAgIFN0YXRlCisg
ICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQsCisgICAgSU4gIFhFTlZCRF9TVEFU
RSAgICAgICAgU3RhdGUKICAgICApOwogCiBleHRlcm4gTlRTVEFUVVMKQEAgLTEzNiwyMiArMTM2
LDE1IEBAIEZyb250ZW5kUmVzZXQoCiAKIGV4dGVybiBOVFNUQVRVUwogRnJvbnRlbmRDcmVhdGUo
Ci0gICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgICAgIFRhcmdldCwKLSAgICBJTiAgUENIQVIg
ICAgICAgICAgICAgICAgICAgRGV2aWNlSWQsCi0gICAgSU4gIFVMT05HICAgICAgICAgICAgICAg
ICAgIFRhcmdldElkLAotICAgIE9VVCBQWEVOVkJEX0ZST05URU5EKiAgICAgICBfRnJvbnRlbmQK
KyAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgICBUYXJnZXQsCisgICAgSU4gIFBDSEFSICAgICAg
ICAgICAgICAgRGV2aWNlSWQsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAgVGFyZ2V0SWQs
CisgICAgT1VUIFBYRU5WQkRfRlJPTlRFTkQqICAgX0Zyb250ZW5kCiAgICAgKTsKIAogZXh0ZXJu
IFZPSUQKIEZyb250ZW5kRGVzdHJveSgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAg
ICBGcm9udGVuZAotICAgICk7Ci0KLS8vIERlYnVnCi1leHRlcm4gVk9JRAotRnJvbnRlbmREZWJ1
Z0NhbGxiYWNrKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5kLAot
ICAgIF9faW4gIFBYRU5CVVNfREVCVUdfSU5URVJGQUNFIERlYnVnCisgICAgSU4gIFBYRU5WQkRf
RlJPTlRFTkQgICAgRnJvbnRlbmQKICAgICApOwogCiAjZGVmaW5lIEZST05URU5EX0dFVF9QUk9Q
RVJUWShfbmFtZSwgX3R5cGUpICAgICBcCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL3RhcmdldC5j
IGIvc3JjL3hlbnZiZC90YXJnZXQuYwppbmRleCAyZTMwODYwLi5jZDU1YjBmIDEwMDY0NAotLS0g
YS9zcmMveGVudmJkL3RhcmdldC5jCisrKyBiL3NyYy94ZW52YmQvdGFyZ2V0LmMKQEAgLTEwMTAs
OSArMTAxMCw2IEBAIFRhcmdldERlYnVnQ2FsbGJhY2soCiAgICAgICAgICAgICAgICAgICZUYXJn
ZXQtPkRlYnVnSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAiVEFSR0VUOiAlc1xuIiwKICAg
ICAgICAgICAgICAgICAgVGFyZ2V0LT5NaXNzaW5nID8gVGFyZ2V0LT5SZWFzb24gOiAiTm90IE1p
c3NpbmciKTsKLQotICAgIEZyb250ZW5kRGVidWdDYWxsYmFjayhUYXJnZXQtPkZyb250ZW5kLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAmVGFyZ2V0LT5EZWJ1Z0ludGVyZmFjZSk7CiB9CiAK
IHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECi0tIAoyLjguMwoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:59:03 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:59:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhOx-000208-H6; Wed, 20 Sep 2017 15:59:03 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhOw-0001za-3D
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:59:02 +0000
Received: from [85.158.137.68] by server-2.bemta-3.messagelabs.com id
 1E/FE-02041-54092C95; Wed, 20 Sep 2017 15:59:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrEIsWRWlGSWpSXmKPExsXitHRDpK7zhEO
 RBmd7rCz+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxtIJ09gKGv+yVKw8N4O5gfHrXuYuRk4OCQF/
 iZt75zKB2GwCshIfV34Gi4sIqEvs+7wVLM4soCZxfX8XaxcjB4ewgLXEz/WsIGEWAVWJO3fWs
 4HYvAKWEms/LGSDGCknMXnxJUYQm1PASuLxjBnMIK1CQDXvj/mChIUElCS+LX7BDNEqKHFy5h
 MWiE0SEgdfvGCewMg7C0lqFpLUAkamVYwaxalFZalFuobmeklFmekZJbmJmTm6hgbGermpxcW
 J6ak5iUnFesn5uZsYgaHDAAQ7GF+e9jzEKMnBpCTKa77kYKQQX1J+SmVGYnFGfFFpTmrxIUYZ
 Dg4lCd6CZUA5waLU9NSKtMwcYBDDpCU4eJREeB1B0rzFBYm5xZnpEKlTjPYcxzZd/sPE0XHzL
 pDcBCY3fH/wh0mIJS8/L1VKnNcGpE0ApC2jNA9uKCzqLjHKSgnzMgKdKcRTkFqUm1mCKv+KUZ
 yDUUmYtw1kCk9mXgnc7ldAZzEBnZW94QDIWSWJCCmpBsb7rm+2iKvnrDPY/OFGitpNk3kF9mf
 Ps3xKfnqgoubrHWeZF8Yf+dpfPH0W8PjLg6022b4v/rGK/D/mJvUitM0tgmHRkh/G9olXA2c0
 7MrsOl7vVMa5+R377qm9hV1nBQvX13D9uvxkfuNPx7OLs6oPn1dOfbDuRVHC0oA+00eBR6b5u
 xZr/29RYinOSDTUYi4qTgQAW62G/LUCAAA=
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1505923136!84799745!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63877 invoked from network); 20 Sep 2017 15:58:59 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:58:59 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="440535935"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:19 +0100
Message-ID: <20170920155325.5860-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/7] Merge Notifier and BlockRing into Ring
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKUmVtb3ZlIHRoZSBzZXBl
cmF0aW9uIGJldHdlZW4gdGhlIGV2ZW50IGNoYW5uZWwgYW5kIHNoYXJlZCByaW5nLgpGaXhlcyB0
aGUgZGVidWcgY2FsbGJhY2sgYW5kIGFkZHMgbW9yZSBlcnJvciBtZXNzYWdlcy4KClNpZ25lZC1v
ZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVudmJk
L2Jsb2NrcmluZy5jICAgICAgIHwgNTk3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy
Yy94ZW52YmQvYmxvY2tyaW5nLmggICAgICAgfCAgOTcgLS0tLS0KIHNyYy94ZW52YmQvZnJvbnRl
bmQuYyAgICAgICAgfCAxMjkgKysrLS0tCiBzcmMveGVudmJkL2Zyb250ZW5kLmggICAgICAgIHwg
IDM2ICstCiBzcmMveGVudmJkL25vdGlmaWVyLmMgICAgICAgIHwgMzkwIC0tLS0tLS0tLS0tLS0t
LS0tLQogc3JjL3hlbnZiZC9ub3RpZmllci5oICAgICAgICB8IDEwMSAtLS0tLQogc3JjL3hlbnZi
ZC9yaW5nLmMgICAgICAgICAgICB8IDkxMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBzcmMveGVudmJkL3JpbmcuaCAgICAgICAgICAgIHwgMTAzICsrKysrCiBz
cmMveGVudmJkL3RhcmdldC5jICAgICAgICAgIHwgIDI3ICstCiB2czIwMTUveGVudmJkL3hlbnZi
ZC52Y3hwcm9qIHwgICAzICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMTEwIGluc2VydGlvbnMoKyks
IDEyODQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9ibG9ja3Jp
bmcuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvYmxvY2tyaW5nLmgKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBzcmMveGVudmJkL25vdGlmaWVyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVudmJkL25vdGlmaWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVudmJkL3JpbmcuYwog
Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW52YmQvcmluZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL3hl
bnZiZC9ibG9ja3JpbmcuYyBiL3NyYy94ZW52YmQvYmxvY2tyaW5nLmMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNmMTVhNmYuLjAwMDAwMDAKLS0tIGEvc3JjL3hlbnZiZC9ibG9ja3Jp
bmcuYworKysgL2Rldi9udWxsCkBAIC0xLDU5NyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIENp
dHJpeCBTeXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICogTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBEQU1B
R0UuCi0gKi8gCi0KLSNpbmNsdWRlICJibG9ja3JpbmcuaCIKLSNpbmNsdWRlICJmcm9udGVuZC5o
IgotI2luY2x1ZGUgInRhcmdldC5oIgotI2luY2x1ZGUgImFkYXB0ZXIuaCIKLSNpbmNsdWRlICJ1
dGlsLmgiCi0jaW5jbHVkZSAiZGVidWcuaCIKLSNpbmNsdWRlICJzcmJleHQuaCIKLSNpbmNsdWRl
ICJkcml2ZXIuaCIKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx4ZW52YmQtbnRzdHJz
YWZlLmg+Ci0KLSNkZWZpbmUgVEFHX0hFQURFUiAgICAgICAgICAgICAgICAgICdnYVRYJwotI2Rl
ZmluZSBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUiAgKDQpCi0jZGVmaW5lIFhFTlZCRF9NQVhf
UklOR19QQUdFUyAgICAgICAoMSA8PCBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUikKLQotc3Ry
dWN0IF9YRU5WQkRfQkxPQ0tSSU5HIHsKLSAgICBQWEVOVkJEX0ZST05URU5EICAgICAgICAgICAg
ICAgIEZyb250ZW5kOwotICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVj
dGVkOwotICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDsKLQotICAg
IFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UgICAgICAgICAgU3RvcmVJbnRlcmZhY2U7Ci0KLSAgICBL
U1BJTl9MT0NLICAgICAgICAgICAgICAgICAgICAgIExvY2s7Ci0gICAgUE1ETCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZGw7Ci0gICAgYmxraWZfc3JpbmdfdCogICAgICAgICAgICAgICAg
ICBTaGFyZWRSaW5nOwotICAgIGJsa2lmX2Zyb250X3JpbmdfdCAgICAgICAgICAgICAgRnJvbnRS
aW5nOwotICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSWQ7Ci0gICAg
VUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlcjsKLSAgICBQVk9JRCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdyYW50c1tYRU5WQkRfTUFYX1JJTkdfUEFHRVNdOwotICAgIFVM
T05HICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0dGVkOwotICAgIFVMT05HICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVjZWl2ZWQ7Ci19OwotCi0jZGVmaW5lIE1BWF9OQU1FX0xF
TiAgICAgICAgICAgICAgICA2NAotI2RlZmluZSBCTE9DS1JJTkdfUE9PTF9UQUcgICAgICAgICAg
J2duUlgnCi0KLSNkZWZpbmUgWEVOX0lPX1BST1RPX0FCSSAgICAieDg2XzY0LWFiaSIKLQotc3Rh
dGljIEZPUkNFSU5MSU5FIFBWT0lECi1fX0Jsb2NrUmluZ0FsbG9jYXRlKAotICAgIElOICBVTE9O
RyAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoCi0gICAgKQotewotICAgIHJldHVybiBfX0Fs
bG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLCBMZW5ndGgsIEJMT0NLUklOR19QT09MX1RB
Ryk7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0Jsb2NrUmluZ0ZyZWUoCi0gICAg
SU4gIFBWT0lEICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIKLSAgICApCi17Ci0gICAgaWYg
KEJ1ZmZlcikKLSAgICAgICAgX19GcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBCTE9DS1JJTkdfUE9P
TF9UQUcpOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAoteGVuX21iKCkKLXsKLSAgICBL
ZU1lbW9yeUJhcnJpZXIoKTsKLSAgICBfUmVhZFdyaXRlQmFycmllcigpOwotfQotCi1zdGF0aWMg
Rk9SQ0VJTkxJTkUgVk9JRAoteGVuX3dtYigpCi17Ci0gICAgS2VNZW1vcnlCYXJyaWVyKCk7Ci0g
ICAgX1dyaXRlQmFycmllcigpOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgUEZOX05VTUJFUgot
X19QZm4oCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgICAgICAgVmlydEFkZHIKLSAgICAp
Ci17Ci0gICAgcmV0dXJuIChQRk5fTlVNQkVSKShVTE9OR19QVFIpKE1tR2V0UGh5c2ljYWxBZGRy
ZXNzKFZpcnRBZGRyKS5RdWFkUGFydCA+PiBQQUdFX1NISUZUKTsKLX0KLQotc3RhdGljIEZPUkNF
SU5MSU5FIFVMT05HNjQKLV9fQmxvY2tSaW5nR2V0VGFnKAotICAgIElOICBQWEVOVkJEX0JMT0NL
UklORyAgICAgICAgICAgQmxvY2tSaW5nLAotICAgIElOICBQWEVOVkJEX1JFUVVFU1QgICAgICAg
ICAgICAgUmVxdWVzdAotICAgICkKLXsKLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEJsb2Nr
UmluZyk7Ci0gICAgcmV0dXJuICgoVUxPTkc2NClUQUdfSEVBREVSIDw8IDMyKSB8IChVTE9ORzY0
KVJlcXVlc3QtPklkOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgotX19CbG9ja1Jp
bmdQdXRUYWcoCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1Jpbmcs
Ci0gICAgSU4gIFVMT05HNjQgICAgICAgICAgICAgICAgICAgICBJZCwKLSAgICBPVVQgUFVMT05H
ICAgICAgICAgICAgICAgICAgICAgIFRhZwotICAgICkKLXsKLSAgICBVTE9ORyAgIEhlYWRlciA9
IChVTE9ORykoKElkID4+IDMyKSAmIDB4RkZGRkZGRkYpOwotCi0gICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihCbG9ja1JpbmcpOwotCi0gICAgKlRhZyAgICA9IChVTE9ORykoSWQgJiAweEZGRkZG
RkZGKTsKLSAgICBpZiAoSGVhZGVyICE9IFRBR19IRUFERVIpIHsKLSAgICAgICAgRXJyb3IoIlBV
VF9UQUcgKCVsbHgpIFRBR19IRUFERVIgKCUwOHglMDh4KVxuIiwgSWQsIEhlYWRlciwgKlRhZyk7
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQot
c3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKLV9fQmxvY2tSaW5nSW5zZXJ0KAotICAgIElOICBQWEVO
VkJEX0JMT0NLUklORyAgICAgICAgICAgQmxvY2tSaW5nLAotICAgIElOICBQWEVOVkJEX1JFUVVF
U1QgICAgICAgICAgICAgUmVxdWVzdCwKLSAgICBJTiAgYmxraWZfcmVxdWVzdF90KiAgICAgICAg
ICAgIHJlcQotICAgICkKLXsKLSAgICBQWEVOVkJEX0dSQU5URVIgICAgICAgICAgICAgICAgIEdy
YW50ZXIgPSBGcm9udGVuZEdldEdyYW50ZXIoQmxvY2tSaW5nLT5Gcm9udGVuZCk7Ci0KLSAgICBz
d2l0Y2ggKFJlcXVlc3QtPk9wZXJhdGlvbikgewotICAgIGNhc2UgQkxLSUZfT1BfUkVBRDoKLSAg
ICBjYXNlIEJMS0lGX09QX1dSSVRFOgotICAgICAgICBpZiAoUmVxdWVzdC0+TnJTZWdtZW50cyA+
IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCkgewotICAgICAgICAgICAgLy8gSW5kaXJl
Y3QKLSAgICAgICAgICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBQYWdlSWR4OwotICAg
ICAgICAgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIFNlZ0lkeDsKLSAgICAgICAgICAg
IFBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICBQYWdlRW50cnk7Ci0gICAgICAgICAgICBQTElT
VF9FTlRSWSAgICAgICAgICAgICAgICAgU2VnRW50cnk7Ci0gICAgICAgICAgICBibGtpZl9yZXF1
ZXN0X2luZGlyZWN0X3QqICAgcmVxX2luZGlyZWN0OwotCi0gICAgICAgICAgICByZXFfaW5kaXJl
Y3QgPSAoYmxraWZfcmVxdWVzdF9pbmRpcmVjdF90KilyZXE7Ci0gICAgICAgICAgICByZXFfaW5k
aXJlY3QtPm9wZXJhdGlvbiAgICAgICAgID0gQkxLSUZfT1BfSU5ESVJFQ1Q7Ci0gICAgICAgICAg
ICByZXFfaW5kaXJlY3QtPmluZGlyZWN0X29wICAgICAgID0gUmVxdWVzdC0+T3BlcmF0aW9uOwot
ICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5ucl9zZWdtZW50cyAgICAgICA9IFJlcXVlc3QtPk5y
U2VnbWVudHM7Ci0gICAgICAgICAgICByZXFfaW5kaXJlY3QtPmlkICAgICAgICAgICAgICAgID0g
X19CbG9ja1JpbmdHZXRUYWcoQmxvY2tSaW5nLCBSZXF1ZXN0KTsKLSAgICAgICAgICAgIHJlcV9p
bmRpcmVjdC0+c2VjdG9yX251bWJlciAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKLSAgICAg
ICAgICAgIHJlcV9pbmRpcmVjdC0+aGFuZGxlICAgICAgICAgICAgPSAoVVNIT1JUKUJsb2NrUmlu
Zy0+RGV2aWNlSWQ7Ci0KLSAgICAgICAgICAgIGZvciAoUGFnZUlkeCA9IDAsCi0gICAgICAgICAg
ICAgICAgIFBhZ2VFbnRyeSA9IFJlcXVlc3QtPkluZGlyZWN0cy5GbGluaywKLSAgICAgICAgICAg
ICAgICAgU2VnRW50cnkgPSBSZXF1ZXN0LT5TZWdtZW50cy5GbGluazsKLSAgICAgICAgICAgICAg
ICAgICAgUGFnZUlkeCA8IEJMS0lGX01BWF9JTkRJUkVDVF9QQUdFU19QRVJfUkVRVUVTVCAmJgot
ICAgICAgICAgICAgICAgICAgICBQYWdlRW50cnkgIT0gJlJlcXVlc3QtPkluZGlyZWN0cyAmJgot
ICAgICAgICAgICAgICAgICAgICBTZWdFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICArK1BhZ2VJZHgsIFBhZ2VFbnRyeSA9IFBhZ2VFbnRyeS0+Rmxp
bmspIHsKLSAgICAgICAgICAgICAgICBQWEVOVkJEX0lORElSRUNUIFBhZ2UgPSBDT05UQUlOSU5H
X1JFQ09SRChQYWdlRW50cnksIFhFTlZCRF9JTkRJUkVDVCwgRW50cnkpOwotCi0gICAgICAgICAg
ICAgICAgcmVxX2luZGlyZWN0LT5pbmRpcmVjdF9ncmVmc1tQYWdlSWR4XSA9IEdyYW50ZXJSZWZl
cmVuY2UoR3JhbnRlciwgUGFnZS0+R3JhbnQpOwotCi0gICAgICAgICAgICAgICAgZm9yIChTZWdJ
ZHggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgU2VnSWR4IDwgWEVOVkJEX01BWF9TRUdN
RU5UU19QRVJfUEFHRSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgU2VnRW50cnkgIT0gJlJl
cXVlc3QtPlNlZ21lbnRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrU2VnSWR4LCBT
ZWdFbnRyeSA9IFNlZ0VudHJ5LT5GbGluaykgewotICAgICAgICAgICAgICAgICAgICBQWEVOVkJE
X1NFR01FTlQgU2VnbWVudCA9IENPTlRBSU5JTkdfUkVDT1JEKFNlZ0VudHJ5LCBYRU5WQkRfU0VH
TUVOVCwgRW50cnkpOwotCi0gICAgICAgICAgICAgICAgICAgIFBhZ2UtPlBhZ2VbU2VnSWR4XS5H
cmFudFJlZiA9IEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgU2VnbWVudC0+R3JhbnQpOwotICAg
ICAgICAgICAgICAgICAgICBQYWdlLT5QYWdlW1NlZ0lkeF0uRmlyc3QgICAgPSBTZWdtZW50LT5G
aXJzdFNlY3RvcjsKLSAgICAgICAgICAgICAgICAgICAgUGFnZS0+UGFnZVtTZWdJZHhdLkxhc3Qg
ICAgID0gU2VnbWVudC0+TGFzdFNlY3RvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBEaXJlY3QKLSAgICAgICAgICAg
IFVMT05HICAgICAgICAgICBJbmRleDsKLSAgICAgICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRy
eTsKLQotICAgICAgICAgICAgcmVxLT5vcGVyYXRpb24gICAgICAgICAgICAgICAgICA9IFJlcXVl
c3QtPk9wZXJhdGlvbjsKLSAgICAgICAgICAgIHJlcS0+bnJfc2VnbWVudHMgICAgICAgICAgICAg
ICAgPSAoVUNIQVIpUmVxdWVzdC0+TnJTZWdtZW50czsKLSAgICAgICAgICAgIHJlcS0+aGFuZGxl
ICAgICAgICAgICAgICAgICAgICAgPSAoVVNIT1JUKUJsb2NrUmluZy0+RGV2aWNlSWQ7Ci0gICAg
ICAgICAgICByZXEtPmlkICAgICAgICAgICAgICAgICAgICAgICAgID0gX19CbG9ja1JpbmdHZXRU
YWcoQmxvY2tSaW5nLCBSZXF1ZXN0KTsKLSAgICAgICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAg
ICAgICAgICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKLQotICAgICAgICAgICAgZm9yIChJ
bmRleCA9IDAsIEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMuRmxpbms7Ci0gICAgICAgICAgICAg
ICAgICAgIEluZGV4IDwgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICYmCi0gICAgICAg
ICAgICAgICAgICAgIEVudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICsrSW5kZXgsIEVudHJ5ID0gRW50cnktPkZsaW5rKSB7Ci0gICAgICAgICAgICAg
ICAgUFhFTlZCRF9TRUdNRU5UIFNlZ21lbnQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVO
VkJEX1NFR01FTlQsIEVudHJ5KTsKLSAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0uZ3Jl
ZiAgICAgICAgPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFNlZ21lbnQtPkdyYW50KTsKLSAg
ICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0uZmlyc3Rfc2VjdCAgPSBTZWdtZW50LT5GaXJz
dFNlY3RvcjsKLSAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0ubGFzdF9zZWN0ICAgPSBT
ZWdtZW50LT5MYXN0U2VjdG9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBCTEtJRl9PUF9XUklURV9CQVJSSUVSOgotICAgIGNhc2UgQkxLSUZf
T1BfRkxVU0hfRElTS0NBQ0hFOgotICAgICAgICByZXEtPm9wZXJhdGlvbiAgICAgICAgICAgICAg
ICAgID0gUmVxdWVzdC0+T3BlcmF0aW9uOwotICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAg
ICAgICAgICAgID0gMDsKLSAgICAgICAgcmVxLT5oYW5kbGUgICAgICAgICAgICAgICAgICAgICA9
IChVU0hPUlQpQmxvY2tSaW5nLT5EZXZpY2VJZDsKLSAgICAgICAgcmVxLT5pZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IF9fQmxvY2tSaW5nR2V0VGFnKEJsb2NrUmluZywgUmVxdWVzdCk7Ci0g
ICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNl
Y3RvcjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEJMS0lGX09QX0RJU0NBUkQ6IHsKLSAg
ICAgICAgYmxraWZfcmVxdWVzdF9kaXNjYXJkX3QqICAgICAgICByZXFfZGlzY2FyZDsKLSAgICAg
ICAgcmVxX2Rpc2NhcmQgPSAoYmxraWZfcmVxdWVzdF9kaXNjYXJkX3QqKXJlcTsKLSAgICAgICAg
cmVxX2Rpc2NhcmQtPm9wZXJhdGlvbiAgICAgICAgICA9IEJMS0lGX09QX0RJU0NBUkQ7Ci0gICAg
ICAgIHJlcV9kaXNjYXJkLT5mbGFnICAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5GbGFnczsKLSAg
ICAgICAgcmVxX2Rpc2NhcmQtPmhhbmRsZSAgICAgICAgICAgICA9IChVU0hPUlQpQmxvY2tSaW5n
LT5EZXZpY2VJZDsKLSAgICAgICAgcmVxX2Rpc2NhcmQtPmlkICAgICAgICAgICAgICAgICA9IF9f
QmxvY2tSaW5nR2V0VGFnKEJsb2NrUmluZywgUmVxdWVzdCk7Ci0gICAgICAgIHJlcV9kaXNjYXJk
LT5zZWN0b3JfbnVtYmVyICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKLSAgICAgICAgcmVx
X2Rpc2NhcmQtPm5yX3NlY3RvcnMgICAgICAgICA9IFJlcXVlc3QtPk5yU2VjdG9yczsKLSAgICAg
ICAgfSBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChGQUxTRSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICArK0Jsb2NrUmluZy0+U3VibWl0dGVkOwotfQotCi1OVFNU
QVRVUwotQmxvY2tSaW5nQ3JlYXRlKAotICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgICAgICAg
ICAgRnJvbnRlbmQsCi0gICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VJ
ZCwKLSAgICBPVVQgUFhFTlZCRF9CTE9DS1JJTkcqICAgICAgICAgIEJsb2NrUmluZwotICAgICkK
LXsKLSAgICAqQmxvY2tSaW5nID0gX19CbG9ja1JpbmdBbGxvY2F0ZShzaXplb2YoWEVOVkJEX0JM
T0NLUklORykpOwotICAgIGlmICgqQmxvY2tSaW5nID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFp
bDE7Ci0KLSAgICAoKkJsb2NrUmluZyktPkZyb250ZW5kID0gRnJvbnRlbmQ7Ci0gICAgKCpCbG9j
a1JpbmcpLT5EZXZpY2VJZCA9IERldmljZUlkOwotICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCYo
KkJsb2NrUmluZyktPkxvY2spOwotCi0gICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwotCi1mYWls
MToKLSAgICByZXR1cm4gU1RBVFVTX05PX01FTU9SWTsKLX0KLQotVk9JRAotQmxvY2tSaW5nRGVz
dHJveSgKLSAgICBJTiAgUFhFTlZCRF9CTE9DS1JJTkcgICAgICAgICAgIEJsb2NrUmluZwotICAg
ICkKLXsKLSAgICBCbG9ja1JpbmctPkZyb250ZW5kID0gTlVMTDsKLSAgICBCbG9ja1JpbmctPkRl
dmljZUlkID0gMDsKLSAgICBSdGxaZXJvTWVtb3J5KCZCbG9ja1JpbmctPkxvY2ssIHNpemVvZihL
U1BJTl9MT0NLKSk7Ci0gICAgCi0gICAgQVNTRVJUKElzWmVyb01lbW9yeShCbG9ja1JpbmcsIHNp
emVvZihYRU5WQkRfQkxPQ0tSSU5HKSkpOwotICAgIAotICAgIF9fQmxvY2tSaW5nRnJlZShCbG9j
a1JpbmcpOwotfQotCi1OVFNUQVRVUwotQmxvY2tSaW5nQ29ubmVjdCgKLSAgICBJTiAgUFhFTlZC
RF9CTE9DS1JJTkcgICAgICAgICAgIEJsb2NrUmluZwotICAgICkKLXsKLSAgICBOVFNUQVRVUyAg
ICAgICAgc3RhdHVzOwotICAgIFBDSEFSICAgICAgICAgICBWYWx1ZTsKLSAgICBVTE9ORyAgICAg
ICAgICAgSW5kZXgsIFJpbmdQYWdlczsKLSAgICBQWEVOVkJEX0FEQVBURVIgICAgIEFkYXB0ZXIg
PSBUYXJnZXRHZXRBZGFwdGVyKEZyb250ZW5kR2V0VGFyZ2V0KEJsb2NrUmluZy0+RnJvbnRlbmQp
KTsKLSAgICBQWEVOVkJEX0dSQU5URVIgR3JhbnRlciA9IEZyb250ZW5kR2V0R3JhbnRlcihCbG9j
a1JpbmctPkZyb250ZW5kKTsKLQotICAgIEFTU0VSVChCbG9ja1JpbmctPkNvbm5lY3RlZCA9PSBG
QUxTRSk7Ci0KLSAgICBBZGFwdGVyR2V0U3RvcmVJbnRlcmZhY2UoQWRhcHRlciwgJkJsb2NrUmlu
Zy0+U3RvcmVJbnRlcmZhY2UpOwotCi0gICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKEFjcXVpcmUs
ICZCbG9ja1JpbmctPlN0b3JlSW50ZXJmYWNlKTsKLSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKLSAgICAgICAgZ290byBmYWlsMTsKLQotICAgIHN0YXR1cyA9IEZyb250ZW5kU3RvcmVSZWFk
QmFja2VuZChCbG9ja1JpbmctPkZyb250ZW5kLCAibWF4LXJpbmctcGFnZS1vcmRlciIsICZWYWx1
ZSk7Ci0gICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICBCbG9ja1JpbmctPk9y
ZGVyID0gX19taW4oc3RydG91bChWYWx1ZSwgTlVMTCwgMTApLCBYRU5WQkRfTUFYX1JJTkdfUEFH
RV9PUkRFUik7Ci0gICAgICAgIEZyb250ZW5kU3RvcmVGcmVlKEJsb2NrUmluZy0+RnJvbnRlbmQs
IFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBCbG9ja1JpbmctPk9yZGVyID0gMDsKLSAg
ICB9Ci0KLSAgICBCbG9ja1JpbmctPk1kbCA9IF9fQWxsb2NhdGVQYWdlcygxIDw8IEJsb2NrUmlu
Zy0+T3JkZXIpOwotCi0gICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKLSAgICBpZiAoQmxv
Y2tSaW5nLT5NZGwgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMjsKLQotICAgIEJsb2NrUmlu
Zy0+U2hhcmVkUmluZyA9IE1tR2V0U3lzdGVtQWRkcmVzc0Zvck1kbFNhZmUoQmxvY2tSaW5nLT5N
ZGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOb3JtYWxQYWdlUHJpb3JpdHkpOwotICAgIEFTU0VSVChCbG9ja1JpbmctPlNoYXJlZFJp
bmcgIT0gTlVMTCk7Ci0KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6IDQzMDUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMxMSkKLSAgICBTSEFSRURf
UklOR19JTklUKEJsb2NrUmluZy0+U2hhcmVkUmluZyk7Ci0gICAgRlJPTlRfUklOR19JTklUKCZC
bG9ja1JpbmctPkZyb250UmluZywgQmxvY2tSaW5nLT5TaGFyZWRSaW5nLCBQQUdFX1NJWkUgPDwg
QmxvY2tSaW5nLT5PcmRlcik7Ci0jcHJhZ21hIHdhcm5pbmcocG9wKQotCi0gICAgUmluZ1BhZ2Vz
ID0gKDEgPDwgQmxvY2tSaW5nLT5PcmRlcik7Ci0gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwg
UmluZ1BhZ2VzOyArK0luZGV4KSB7Ci0gICAgICAgIHN0YXR1cyA9IEdyYW50ZXJHZXQoR3JhbnRl
ciwgX19QZm4oKFBVQ0hBUilCbG9ja1JpbmctPlNoYXJlZFJpbmcgKyAoSW5kZXggKiBQQUdFX1NJ
WkUpKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAmQmxvY2tSaW5n
LT5HcmFudHNbSW5kZXhdKTsKLSAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCi0gICAg
ICAgICAgICBnb3RvIGZhaWwzOwotICAgIH0KLQotICAgIEJsb2NrUmluZy0+Q29ubmVjdGVkID0g
VFJVRTsKLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Ci0KLWZhaWwzOgotICAgIGZvciAoSW5k
ZXggPSAwOyBJbmRleCA8IFhFTlZCRF9NQVhfUklOR19QQUdFUzsgKytJbmRleCkgewotICAgICAg
ICBpZiAoQmxvY2tSaW5nLT5HcmFudHNbSW5kZXhdKQotICAgICAgICAgICAgR3JhbnRlclB1dChH
cmFudGVyLCBCbG9ja1JpbmctPkdyYW50c1tJbmRleF0pOwotICAgICAgICBCbG9ja1JpbmctPkdy
YW50c1tJbmRleF0gPSAwOwotICAgIH0KLQotICAgIFJ0bFplcm9NZW1vcnkoJkJsb2NrUmluZy0+
RnJvbnRSaW5nLCBzaXplb2YoQmxvY2tSaW5nLT5Gcm9udFJpbmcpKTsKLSAgICBfX0ZyZWVQYWdl
cyhCbG9ja1JpbmctPk1kbCk7Ci0gICAgQmxvY2tSaW5nLT5TaGFyZWRSaW5nID0gTlVMTDsKLSAg
ICBCbG9ja1JpbmctPk1kbCA9IE5VTEw7Ci0KLWZhaWwyOgotZmFpbDE6Ci0gICAgcmV0dXJuIHN0
YXR1czsKLX0KLQotTlRTVEFUVVMKLUJsb2NrUmluZ1N0b3JlV3JpdGUoCi0gICAgSU4gIFBYRU5W
QkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1JpbmcsCi0gICAgSU4gIFBYRU5CVVNfU1RPUkVf
VFJBTlNBQ1RJT04gICBUcmFuc2FjdGlvbiwKLSAgICBJTiAgUENIQVIgICAgICAgICAgICAgICAg
ICAgICAgIEZyb250ZW5kUGF0aAotICAgICkKLXsKLSAgICBQWEVOVkJEX0dSQU5URVIgICAgICAg
ICAgICAgICAgIEdyYW50ZXIgPSBGcm9udGVuZEdldEdyYW50ZXIoQmxvY2tSaW5nLT5Gcm9udGVu
ZCk7Ci0gICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM7Ci0KLSAgICBp
ZiAoQmxvY2tSaW5nLT5PcmRlciA9PSAwKSB7Ci0gICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9S
RShQcmludGYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkJsb2NrUmluZy0+U3Rv
cmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbiwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicmluZy1yZWYiLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIldSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhbnRlclJlZmVy
ZW5jZShHcmFudGVyLCBCbG9ja1JpbmctPkdyYW50c1swXSkpOwotICAgICAgICBpZiAoIU5UX1NV
Q0NFU1Moc3RhdHVzKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgVUxPTkcgICBJbmRleCwgUmluZ1BhZ2VzOwotCi0gICAgICAgIHN0YXR1cyA9IFhF
TkJVU19TVE9SRShQcmludGYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkJsb2Nr
UmluZy0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2FjdGlvbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFBhdGgsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJpbmctcGFnZS1vcmRlciIsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCbG9ja1JpbmctPk9yZGVyKTsKLSAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdHVzOwotCi0gICAgICAgIFJpbmdQYWdlcyA9ICgxIDw8
IEJsb2NrUmluZy0+T3JkZXIpOwotICAgICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBSaW5n
UGFnZXM7ICsrSW5kZXgpIHsKLSAgICAgICAgICAgIENIQVIgICAgTmFtZVtNQVhfTkFNRV9MRU4r
MV07Ci0gICAgICAgICAgICBzdGF0dXMgPSBSdGxTdHJpbmdDY2hQcmludGZBKE5hbWUsIE1BWF9O
QU1FX0xFTiwgInJpbmctcmVmJXUiLCBJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIU5UX1NVQ0NF
U1Moc3RhdHVzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgICAgICAg
c3RhdHVzID0gWEVOQlVTX1NUT1JFKFByaW50ZiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkJsb2NrUmluZy0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHJhbnNhY3Rpb24sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyb250ZW5kUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YW1lLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUiLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIEJsb2Nr
UmluZy0+R3JhbnRzW0luZGV4XSkpOwotICAgICAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQmxvY2tSaW5nLT5TdG9yZUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHJhbnNhY3Rpb24sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFBhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJwcm90b2NvbCIsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBYRU5fSU9fUFJPVE9fQUJJKTsKLSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLQotICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
LX0KLQotVk9JRAotQmxvY2tSaW5nRW5hYmxlKAotICAgIElOICBQWEVOVkJEX0JMT0NLUklORyAg
ICAgICAgICAgQmxvY2tSaW5nCi0gICAgKQotewotICAgIEFTU0VSVChCbG9ja1JpbmctPkVuYWJs
ZWQgPT0gRkFMU0UpOwotCi0gICAgQmxvY2tSaW5nLT5FbmFibGVkID0gVFJVRTsKLX0KLQotVk9J
RAotQmxvY2tSaW5nRGlzYWJsZSgKLSAgICBJTiAgUFhFTlZCRF9CTE9DS1JJTkcgICAgICAgICAg
IEJsb2NrUmluZwotICAgICkKLXsKLSAgICBBU1NFUlQoQmxvY2tSaW5nLT5FbmFibGVkID09IFRS
VUUpOwotCi0gICAgQmxvY2tSaW5nLT5FbmFibGVkID0gRkFMU0U7Ci19Ci0KLVZPSUQKLUJsb2Nr
UmluZ0Rpc2Nvbm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9j
a1JpbmcKLSAgICApCi17Ci0gICAgVUxPTkcgICAgICAgICAgIEluZGV4OwotICAgIFBYRU5WQkRf
R1JBTlRFUiBHcmFudGVyID0gRnJvbnRlbmRHZXRHcmFudGVyKEJsb2NrUmluZy0+RnJvbnRlbmQp
OwotCi0gICAgQVNTRVJUKEJsb2NrUmluZy0+Q29ubmVjdGVkID09IFRSVUUpOwotCi0gICAgQmxv
Y2tSaW5nLT5TdWJtaXR0ZWQgPSAwOwotICAgIEJsb2NrUmluZy0+UmVjZWl2ZWQgPSAwOwotCi0g
ICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgWEVOVkJEX01BWF9SSU5HX1BBR0VTOyArK0luZGV4
KSB7Ci0gICAgICAgIGlmIChCbG9ja1JpbmctPkdyYW50c1tJbmRleF0pIHsKLSAgICAgICAgICAg
IEdyYW50ZXJQdXQoR3JhbnRlciwgQmxvY2tSaW5nLT5HcmFudHNbSW5kZXhdKTsKLSAgICAgICAg
fQotICAgICAgICBCbG9ja1JpbmctPkdyYW50c1tJbmRleF0gPSAwOwotICAgIH0KLQotICAgIFJ0
bFplcm9NZW1vcnkoJkJsb2NrUmluZy0+RnJvbnRSaW5nLCBzaXplb2YoQmxvY2tSaW5nLT5Gcm9u
dFJpbmcpKTsKLSAgICBfX0ZyZWVQYWdlcyhCbG9ja1JpbmctPk1kbCk7Ci0gICAgQmxvY2tSaW5n
LT5TaGFyZWRSaW5nID0gTlVMTDsKLSAgICBCbG9ja1JpbmctPk1kbCA9IE5VTEw7Ci0KLSAgICBC
bG9ja1JpbmctPk9yZGVyID0gMDsKLQotICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmQmxvY2tS
aW5nLT5TdG9yZUludGVyZmFjZSk7Ci0gICAgUnRsWmVyb01lbW9yeSgmQmxvY2tSaW5nLT5TdG9y
ZUludGVyZmFjZSwgc2l6ZW9mKFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpKTsKLQotICAgIEJsb2Nr
UmluZy0+Q29ubmVjdGVkID0gRkFMU0U7Ci19Ci0KLVZPSUQKLUJsb2NrUmluZ0RlYnVnQ2FsbGJh
Y2soCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1JpbmcsCi0gICAg
SU4gIFBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICBEZWJ1ZwotICAgICkKLXsKLSAgICBVTE9O
RyAgICAgICAgICAgSW5kZXg7Ci0gICAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIgPSBGcm9udGVu
ZEdldEdyYW50ZXIoQmxvY2tSaW5nLT5Gcm9udGVuZCk7Ci0KLSAgICBYRU5CVVNfREVCVUcoUHJp
bnRmLCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgIkJMT0NLUklORzogUmVxdWVzdHMgIDogJWQg
LyAlZFxuIiwKLSAgICAgICAgICAgICAgICAgQmxvY2tSaW5nLT5TdWJtaXR0ZWQsCi0gICAgICAg
ICAgICAgICAgIEJsb2NrUmluZy0+UmVjZWl2ZWQpOwotCi0gICAgWEVOQlVTX0RFQlVHKFByaW50
ZiwgRGVidWcsCi0gICAgICAgICAgICAgICAgICJCTE9DS1JJTkc6IFNoYXJlZFJpbmcgOiAweCVw
XG4iLCAKLSAgICAgICAgICAgICAgICAgQmxvY2tSaW5nLT5TaGFyZWRSaW5nKTsKLQotICAgIGlm
IChCbG9ja1JpbmctPlNoYXJlZFJpbmcpIHsKLSAgICAgICAgWEVOQlVTX0RFQlVHKFByaW50Ziwg
RGVidWcsCi0gICAgICAgICAgICAgICAgICAgICAiQkxPQ0tSSU5HOiBTaGFyZWRSaW5nIDogJWQg
LyAlZCAtICVkIC8gJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICBCbG9ja1JpbmctPlNoYXJl
ZFJpbmctPnJlcV9wcm9kLAotICAgICAgICAgICAgICAgICAgICAgQmxvY2tSaW5nLT5TaGFyZWRS
aW5nLT5yZXFfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICBCbG9ja1JpbmctPlNoYXJlZFJp
bmctPnJzcF9wcm9kLAotICAgICAgICAgICAgICAgICAgICAgQmxvY2tSaW5nLT5TaGFyZWRSaW5n
LT5yc3BfZXZlbnQpOwotICAgIH0KLQotICAgIFhFTkJVU19ERUJVRyhQcmludGYsIERlYnVnLAot
ICAgICAgICAgICAgICAgICAiQkxPQ0tSSU5HOiBGcm9udFJpbmcgIDogJWQgLyAlZCAoJWQpXG4i
LAotICAgICAgICAgICAgICAgICBCbG9ja1JpbmctPkZyb250UmluZy5yZXFfcHJvZF9wdnQsCi0g
ICAgICAgICAgICAgICAgIEJsb2NrUmluZy0+RnJvbnRSaW5nLnJzcF9jb25zLAotICAgICAgICAg
ICAgICAgICBCbG9ja1JpbmctPkZyb250UmluZy5ucl9lbnRzKTsKLQotICAgIFhFTkJVU19ERUJV
RyhQcmludGYsIERlYnVnLAotICAgICAgICAgICAgICAgICAiQkxPQ0tSSU5HOiBPcmRlciAgICAg
IDogJWRcbiIsCi0gICAgICAgICAgICAgICAgIEJsb2NrUmluZy0+T3JkZXIpOwotICAgIGZvciAo
SW5kZXggPSAwOyBJbmRleCA8ICgxdWwgPDwgQmxvY2tSaW5nLT5PcmRlcik7ICsrSW5kZXgpIHsK
LSAgICAgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWcsCi0gICAgICAgICAgICAgICAgICAg
ICAiQkxPQ0tSSU5HOiBHcmFudHNbJS0yZF0gOiAweCVwICgldSlcbiIsIAotICAgICAgICAgICAg
ICAgICAgICAgSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICBCbG9ja1JpbmctPkdyYW50c1tJ
bmRleF0sCi0gICAgICAgICAgICAgICAgICAgICBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIEJs
b2NrUmluZy0+R3JhbnRzW0luZGV4XSkpOwotICAgIH0KLQotICAgIEJsb2NrUmluZy0+U3VibWl0
dGVkID0gQmxvY2tSaW5nLT5SZWNlaXZlZCA9IDA7Ci19Ci0KLUJPT0xFQU4KLUJsb2NrUmluZ1Bv
bGwoCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1JpbmcKLSAgICAp
Ci17Ci0gICAgUFhFTlZCRF9UQVJHRVQgVGFyZ2V0ID0gRnJvbnRlbmRHZXRUYXJnZXQoQmxvY2tS
aW5nLT5Gcm9udGVuZCk7Ci0gICAgQk9PTEVBTiAgICAgICAgUmV0cnkgPSBGQUxTRTsKLQotICAg
IEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIERJU1BBVENIX0xFVkVMKTsKLSAgICBL
ZUFjcXVpcmVTcGluTG9ja0F0RHBjTGV2ZWwoJkJsb2NrUmluZy0+TG9jayk7Ci0KLSAgICAvLyBH
dWFyZCBhZ2FpbnN0IHRoaXMgbG9ja2VkIHJlZ2lvbiBiZWluZyBjYWxsZWQgYWZ0ZXIgdGhlIAot
ICAgIC8vIGxvY2sgb24gRnJvbnRlbmRTZXRTdGF0ZQotICAgIGlmIChCbG9ja1JpbmctPkVuYWJs
ZWQgPT0gRkFMU0UpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGZvciAoOzspIHsKLSAgICAg
ICAgVUxPTkcgICByc3BfcHJvZDsKLSAgICAgICAgVUxPTkcgICByc3BfY29uczsKLQotICAgICAg
ICBLZU1lbW9yeUJhcnJpZXIoKTsKLQotICAgICAgICByc3BfcHJvZCA9IEJsb2NrUmluZy0+U2hh
cmVkUmluZy0+cnNwX3Byb2Q7Ci0gICAgICAgIHJzcF9jb25zID0gQmxvY2tSaW5nLT5Gcm9udFJp
bmcucnNwX2NvbnM7Ci0KLSAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7Ci0KLSAgICAgICAgaWYg
KHJzcF9jb25zID09IHJzcF9wcm9kIHx8IFJldHJ5KQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgd2hpbGUgKHJzcF9jb25zICE9IHJzcF9wcm9kICYmICFSZXRyeSkgewotICAgICAgICAg
ICAgYmxraWZfcmVzcG9uc2VfdCogICBSZXNwb25zZTsKLSAgICAgICAgICAgIFVMT05HICAgICAg
ICAgICAgICAgVGFnOwotCi0gICAgICAgICAgICBSZXNwb25zZSA9IFJJTkdfR0VUX1JFU1BPTlNF
KCZCbG9ja1JpbmctPkZyb250UmluZywgcnNwX2NvbnMpOwotICAgICAgICAgICAgKytyc3BfY29u
czsKLQotICAgICAgICAgICAgaWYgKF9fQmxvY2tSaW5nUHV0VGFnKEJsb2NrUmluZywgUmVzcG9u
c2UtPmlkLCAmVGFnKSkgewotICAgICAgICAgICAgICAgICsrQmxvY2tSaW5nLT5SZWNlaXZlZDsK
LSAgICAgICAgICAgICAgICBUYXJnZXRDb21wbGV0ZVJlc3BvbnNlKFRhcmdldCwgVGFnLCBSZXNw
b25zZS0+c3RhdHVzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUnRsWmVyb01lbW9y
eShSZXNwb25zZSwgc2l6ZW9mKHVuaW9uIGJsa2lmX3NyaW5nX2VudHJ5KSk7Ci0KLSAgICAgICAg
ICAgIGlmIChyc3BfY29ucyAtIEJsb2NrUmluZy0+RnJvbnRSaW5nLnJzcF9jb25zID4gUklOR19T
SVpFKCZCbG9ja1JpbmctPkZyb250UmluZykgLyA0KQotICAgICAgICAgICAgICAgIFJldHJ5ID0g
VFJVRTsKLSAgICAgICAgfQotCi0gICAgICAgIEtlTWVtb3J5QmFycmllcigpOwotCi0gICAgICAg
IEJsb2NrUmluZy0+RnJvbnRSaW5nLnJzcF9jb25zID0gcnNwX2NvbnM7Ci0gICAgICAgIEJsb2Nr
UmluZy0+U2hhcmVkUmluZy0+cnNwX2V2ZW50ID0gcnNwX2NvbnMgKyAxOwotICAgIH0KLQotZG9u
ZToKLSAgICBLZVJlbGVhc2VTcGluTG9ja0Zyb21EcGNMZXZlbCgmQmxvY2tSaW5nLT5Mb2NrKTsK
LQotICAgIHJldHVybiBSZXRyeTsKLX0KLQotQk9PTEVBTgotQmxvY2tSaW5nU3VibWl0KAotICAg
IElOICBQWEVOVkJEX0JMT0NLUklORyAgICAgICAgICAgQmxvY2tSaW5nLAotICAgIElOICBQWEVO
VkJEX1JFUVVFU1QgICAgICAgICAgICAgUmVxdWVzdAotICAgICkKLXsKLSAgICBLSVJRTCAgICAg
ICAgICAgICAgIElycWw7Ci0gICAgYmxraWZfcmVxdWVzdF90KiAgICByZXE7Ci0gICAgQk9PTEVB
TiAgICAgICAgICAgICBOb3RpZnk7Ci0KLSAgICBLZUFjcXVpcmVTcGluTG9jaygmQmxvY2tSaW5n
LT5Mb2NrLCAmSXJxbCk7Ci0gICAgaWYgKFJJTkdfRlVMTCgmQmxvY2tSaW5nLT5Gcm9udFJpbmcp
KSB7Ci0gICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZCbG9ja1JpbmctPkxvY2ssIElycWwpOwot
ICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgcmVxID0gUklOR19HRVRfUkVRVUVT
VCgmQmxvY2tSaW5nLT5Gcm9udFJpbmcsIEJsb2NrUmluZy0+RnJvbnRSaW5nLnJlcV9wcm9kX3B2
dCk7Ci0gICAgX19CbG9ja1JpbmdJbnNlcnQoQmxvY2tSaW5nLCBSZXF1ZXN0LCByZXEpOwotICAg
IEtlTWVtb3J5QmFycmllcigpOwotICAgICsrQmxvY2tSaW5nLT5Gcm9udFJpbmcucmVxX3Byb2Rf
cHZ0OwotCi0gICAgUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkoJkJsb2NrUmlu
Zy0+RnJvbnRSaW5nLCBOb3RpZnkpOwotICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZCbG9ja1Jpbmct
PkxvY2ssIElycWwpOwotCi0gICAgaWYgKE5vdGlmeSkKLSAgICAgICAgTm90aWZpZXJTZW5kKEZy
b250ZW5kR2V0Tm90aWZpZXIoQmxvY2tSaW5nLT5Gcm9udGVuZCkpOwotCi0gICAgcmV0dXJuIFRS
VUU7Ci19CmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2Jsb2NrcmluZy5oIGIvc3JjL3hlbnZiZC9i
bG9ja3JpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmZTI3OC4uMDAwMDAw
MAotLS0gYS9zcmMveGVudmJkL2Jsb2NrcmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAs
MCBAQAotLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCi0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCAKLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgCi0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgotICogCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogKiAgIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCi0gKiAg
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKLSAq
ICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgCi0gKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIAotICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgCi0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiAKLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIAotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKLSAqIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKLSAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCi0gKiBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
Ci0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIAotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiAKLSAqIFNVQ0ggREFNQUdFLgotICovIAotCi0jaWZuZGVmIF9YRU5WQkRfQkxP
Q0tSSU5HX0gKLSNkZWZpbmUgX1hFTlZCRF9CTE9DS1JJTkdfSAotCi10eXBlZGVmIHN0cnVjdCBf
WEVOVkJEX0JMT0NLUklORyBYRU5WQkRfQkxPQ0tSSU5HLCAqUFhFTlZCRF9CTE9DS1JJTkc7Ci0K
LSNpbmNsdWRlICJmcm9udGVuZC5oIgotI2luY2x1ZGUgPGRlYnVnX2ludGVyZmFjZS5oPgotI2lu
Y2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgotCi1leHRlcm4gTlRTVEFUVVMKLUJsb2NrUmluZ0Ny
ZWF0ZSgKLSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgICAgIEZyb250ZW5kLAotICAg
IElOICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSWQsCi0gICAgT1VUIFBYRU5W
QkRfQkxPQ0tSSU5HKiAgICAgICAgICBCbG9ja1JpbmcKLSAgICApOwotCi1leHRlcm4gVk9JRAot
QmxvY2tSaW5nRGVzdHJveSgKLSAgICBJTiAgUFhFTlZCRF9CTE9DS1JJTkcgICAgICAgICAgIEJs
b2NrUmluZwotICAgICk7Ci0KLWV4dGVybiBOVFNUQVRVUwotQmxvY2tSaW5nQ29ubmVjdCgKLSAg
ICBJTiAgUFhFTlZCRF9CTE9DS1JJTkcgICAgICAgICAgIEJsb2NrUmluZwotICAgICk7Ci0KLWV4
dGVybiBOVFNUQVRVUwotQmxvY2tSaW5nU3RvcmVXcml0ZSgKLSAgICBJTiAgUFhFTlZCRF9CTE9D
S1JJTkcgICAgICAgICAgIEJsb2NrUmluZywKLSAgICBJTiAgUFhFTkJVU19TVE9SRV9UUkFOU0FD
VElPTiAgIFRyYW5zYWN0aW9uLAotICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAg
RnJvbnRlbmRQYXRoCi0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLUJsb2NrUmluZ0VuYWJsZSgKLSAg
ICBJTiAgUFhFTlZCRF9CTE9DS1JJTkcgICAgICAgICAgIEJsb2NrUmluZwotICAgICk7Ci0KLWV4
dGVybiBWT0lECi1CbG9ja1JpbmdEaXNhYmxlKAotICAgIElOICBQWEVOVkJEX0JMT0NLUklORyAg
ICAgICAgICAgQmxvY2tSaW5nCi0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLUJsb2NrUmluZ0Rpc2Nv
bm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1JpbmcKLSAg
ICApOwotCi1leHRlcm4gVk9JRAotQmxvY2tSaW5nRGVidWdDYWxsYmFjaygKLSAgICBJTiAgUFhF
TlZCRF9CTE9DS1JJTkcgICAgICAgICAgIEJsb2NrUmluZywKLSAgICBJTiAgUFhFTkJVU19ERUJV
R19JTlRFUkZBQ0UgICAgIERlYnVnCi0gICAgKTsKLQotZXh0ZXJuIEJPT0xFQU4KLUJsb2NrUmlu
Z1BvbGwoCi0gICAgSU4gIFBYRU5WQkRfQkxPQ0tSSU5HICAgICAgICAgICBCbG9ja1JpbmcKLSAg
ICApOwotCi1leHRlcm4gQk9PTEVBTgotQmxvY2tSaW5nU3VibWl0KAotICAgIElOICBQWEVOVkJE
X0JMT0NLUklORyAgICAgICAgICAgQmxvY2tSaW5nLAotICAgIElOICBQWEVOVkJEX1JFUVVFU1Qg
ICAgICAgICAgICAgUmVxdWVzdAotICAgICk7Ci0KLSNlbmRpZiAvLyBfWEVOVkJEX0JMT0NLUklO
R19ICmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2Zyb250ZW5kLmMgYi9zcmMveGVudmJkL2Zyb250
ZW5kLmMKaW5kZXggMWUyYjAyNi4uMGIyM2I3MCAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9mcm9u
dGVuZC5jCisrKyBiL3NyYy94ZW52YmQvZnJvbnRlbmQuYwpAQCAtMzksOCArMzksNyBAQAogI2lu
Y2x1ZGUgImFzc2VydC5oIgogI2luY2x1ZGUgInV0aWwuaCIKICNpbmNsdWRlICJuYW1lcy5oIgot
I2luY2x1ZGUgIm5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiYmxvY2tyaW5nLmgiCisjaW5jbHVkZSAi
cmluZy5oIgogI2luY2x1ZGUgImdyYW50ZXIuaCIKICNpbmNsdWRlICJ0aHJlYWQuaCIKICNpbmNs
dWRlIDxzdG9yZV9pbnRlcmZhY2UuaD4KQEAgLTczLDggKzcyLDcgQEAgc3RydWN0IF9YRU5WQkRf
RlJPTlRFTkQgewogICAgIFBYRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kTGF0ZUNh
bGxiYWNrOwogCiAgICAgLy8gUmluZwotICAgIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBO
b3RpZmllcjsKLSAgICBQWEVOVkJEX0JMT0NLUklORyAgICAgICAgICAgQmxvY2tSaW5nOworICAg
IFBYRU5WQkRfUklORyAgICAgICAgICAgICAgICBSaW5nOwogICAgIFBYRU5WQkRfR1JBTlRFUiAg
ICAgICAgICAgICBHcmFudGVyOwogCiAgICAgLy8gQmFja2VuZCBTdGF0ZSBXYXRjaApAQCAtMTI3
LDYgKzEyNSwzOCBAQCBfX0Zyb250ZW5kRnJlZSgKIAogLy89PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog
Ly8gQWNjZXNzb3JzCitVTE9ORworRnJvbnRlbmRHZXREZXZpY2VJZCgKKyAgICBJTiAgUFhFTlZC
RF9GUk9OVEVORCAgICBGcm9udGVuZAorICAgICkKK3sKKyAgICByZXR1cm4gRnJvbnRlbmQtPkRl
dmljZUlkOworfQorCitVTE9ORworRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKAorICAgIElOICBQ
WEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kCisgICAgKQoreworICAgIHJldHVybiBGcm9udGVu
ZC0+QmFja2VuZElkOworfQorCitQQ0hBUgorRnJvbnRlbmRHZXRCYWNrZW5kUGF0aCgKKyAgICBJ
TiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAorICAgICkKK3sKKyAgICByZXR1cm4gRnJv
bnRlbmQtPkJhY2tlbmRQYXRoOworfQorCitQQ0hBUgorRnJvbnRlbmRHZXRGcm9udGVuZFBhdGgo
CisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgcmV0
dXJuIEZyb250ZW5kLT5Gcm9udGVuZFBhdGg7Cit9CisKIFZPSUQKIEZyb250ZW5kUmVtb3ZlRmVh
dHVyZSgKICAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQsCkBAIC0xODIs
MTMgKzIxMiw2IEBAIEZyb250ZW5kR2V0VGFyZ2V0SWQoCiB7CiAgICAgcmV0dXJuIEZyb250ZW5k
LT5UYXJnZXRJZDsKIH0KLVVMT05HCi1Gcm9udGVuZEdldERldmljZUlkKAotICAgIF9faW4gIFBY
RU5WQkRfRlJPTlRFTkQgICAgICBGcm9udGVuZAotICAgICkKLXsKLSAgICAgcmV0dXJuIEZyb250
ZW5kLT5EZXZpY2VJZDsKLX0KIFBWT0lECiBGcm9udGVuZEdldElucXVpcnkoCiAgICAgX19pbiAg
UFhFTlZCRF9GUk9OVEVORCAgICAgIEZyb250ZW5kCkBAIC0yMDMsMTkgKzIyNiwxMiBAQCBGcm9u
dGVuZEdldFRhcmdldCgKIHsKICAgICByZXR1cm4gRnJvbnRlbmQtPlRhcmdldDsKIH0KLVBYRU5W
QkRfQkxPQ0tSSU5HCi1Gcm9udGVuZEdldEJsb2NrUmluZygKLSAgICBfX2luICBQWEVOVkJEX0ZS
T05URU5EICAgICAgRnJvbnRlbmQKLSAgICApCi17Ci0gICAgcmV0dXJuIEZyb250ZW5kLT5CbG9j
a1Jpbmc7Ci19Ci1QWEVOVkJEX05PVElGSUVSCi1Gcm9udGVuZEdldE5vdGlmaWVyKAorUFhFTlZC
RF9SSU5HCitGcm9udGVuZEdldFJpbmcoCiAgICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAg
IEZyb250ZW5kCiAgICAgKQogewotICAgIHJldHVybiBGcm9udGVuZC0+Tm90aWZpZXI7CisgICAg
cmV0dXJuIEZyb250ZW5kLT5SaW5nOwogfQogUFhFTlZCRF9HUkFOVEVSCiBGcm9udGVuZEdldEdy
YW50ZXIoCkBAIC0zMzMsNyArMzQ5LDcgQEAgRnJvbnRlbmROb3RpZnlSZXNwb25zZXMoCiB7CiAg
ICAgQk9PTEVBTiAgICAgUmV0cnkgPSBGQUxTRTsKIAotICAgIFJldHJ5IHw9IEJsb2NrUmluZ1Bv
bGwoRnJvbnRlbmQtPkJsb2NrUmluZyk7CisgICAgUmV0cnkgfD0gUmluZ1BvbGwoRnJvbnRlbmQt
PlJpbmcpOwogICAgIFJldHJ5IHw9IFRhcmdldFN1Ym1pdFJlcXVlc3RzKEZyb250ZW5kLT5UYXJn
ZXQpOwogCiAgICAgcmV0dXJuIFJldHJ5OwpAQCAtMTE0NiwxNCArMTE2MiwxMCBAQCBGcm9udGVu
ZENvbm5lY3QoCiAgICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFp
bDE7CiAKLSAgICBTdGF0dXMgPSBCbG9ja1JpbmdDb25uZWN0KEZyb250ZW5kLT5CbG9ja1Jpbmcp
OworICAgIFN0YXR1cyA9IFJpbmdDb25uZWN0KEZyb250ZW5kLT5SaW5nKTsKICAgICBpZiAoIU5U
X1NVQ0NFU1MoU3RhdHVzKSkKICAgICAgICAgZ290byBmYWlsMjsKIAotICAgIFN0YXR1cyA9IE5v
dGlmaWVyQ29ubmVjdChGcm9udGVuZC0+Tm90aWZpZXIsIEZyb250ZW5kLT5CYWNrZW5kSWQpOwot
ICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwzOwotCiAgICAg
Ly8gd3JpdGUgZXZ0Y2huL2dudHRhYiBkZXRhaWxzIGluIHhlbnN0b3JlCiAgICAgZm9yICg7Oykg
ewogICAgICAgICBQWEVOQlVTX1NUT1JFX1RSQU5TQUNUSU9OICAgVHJhbnNhY3Rpb247CkBAIC0x
MTY0LDExICsxMTc2LDcgQEAgRnJvbnRlbmRDb25uZWN0KAogICAgICAgICBpZiAoIU5UX1NVQ0NF
U1MoU3RhdHVzKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0YXR1cyA9IE5vdGlm
aWVyU3RvcmVXcml0ZShGcm9udGVuZC0+Tm90aWZpZXIsIFRyYW5zYWN0aW9uLCBGcm9udGVuZC0+
RnJvbnRlbmRQYXRoKTsKLSAgICAgICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgICAg
ICAgICBnb3RvIGFib3J0OwotCi0gICAgICAgIFN0YXR1cyA9IEJsb2NrUmluZ1N0b3JlV3JpdGUo
RnJvbnRlbmQtPkJsb2NrUmluZywgVHJhbnNhY3Rpb24sIEZyb250ZW5kLT5Gcm9udGVuZFBhdGgp
OworICAgICAgICBTdGF0dXMgPSBSaW5nU3RvcmVXcml0ZShGcm9udGVuZC0+UmluZywgVHJhbnNh
Y3Rpb24pOwogICAgICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKICAgICAgICAgICAgIGdv
dG8gYWJvcnQ7CiAKQEAgLTEyMjMsMjUgKzEyMzEsMjUgQEAgYWJvcnQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWls
NDsKKyAgICAgICAgZ290byBmYWlsMzsKIAogICAgIC8vIEZyb250ZW5kOiAtPiBJTklUSUFMSVpF
RAogICAgIFN0YXR1cyA9IF9fX1NldFN0YXRlKEZyb250ZW5kLCBYZW5idXNTdGF0ZUluaXRpYWxp
c2VkKTsKICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsNTsK
KyAgICAgICAgZ290byBmYWlsNDsKIAogICAgIC8vIEJhY2tlbmQgOiAtPiBDT05ORUNURUQKICAg
ICBCYWNrZW5kU3RhdGUgPSBYZW5idXNTdGF0ZVVua25vd247CiAgICAgZG8gewogICAgICAgICBT
dGF0dXMgPSBfX1dhaXRTdGF0ZShGcm9udGVuZCwgJkJhY2tlbmRTdGF0ZSk7CiAgICAgICAgIGlm
ICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICAgICAgZ290byBmYWlsNjsKKyAgICAgICAg
ICAgIGdvdG8gZmFpbDU7CiAgICAgfSB3aGlsZSAoQmFja2VuZFN0YXRlID09IFhlbmJ1c1N0YXRl
SW5pdFdhaXQgfHwKICAgICAgICAgICAgICBCYWNrZW5kU3RhdGUgPT0gWGVuYnVzU3RhdGVJbml0
aWFsaXNpbmcgfHwKICAgICAgICAgICAgICBCYWNrZW5kU3RhdGUgPT0gWGVuYnVzU3RhdGVJbml0
aWFsaXNlZCk7CiAgICAgU3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsKICAgICBpZiAoQmFj
a2VuZFN0YXRlICE9IFhlbmJ1c1N0YXRlQ29ubmVjdGVkKQotICAgICAgICBnb3RvIGZhaWw3Owor
ICAgICAgICBnb3RvIGZhaWw2OwogCiAgICAgLy8gcmVhZCBkaXNrIGluZm8KICAgICBfX1JlYWRE
aXNrSW5mbyhGcm9udGVuZCk7CkBAIC0xMjUzLDEyICsxMjYxLDEwIEBAIGFib3J0OgogICAgIC8v
IEZyb250ZW5kOiAtPiBDT05ORUNURUQKICAgICBTdGF0dXMgPSBfX19TZXRTdGF0ZShGcm9udGVu
ZCwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOwogICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQot
ICAgICAgICBnb3RvIGZhaWw4OworICAgICAgICBnb3RvIGZhaWw3OwogCiAgICAgcmV0dXJuIFNU
QVRVU19TVUNDRVNTOwogCi1mYWlsODoKLSAgICBFcnJvcigiRmFpbDhcbiIpOwogZmFpbDc6CiAg
ICAgRXJyb3IoIkZhaWw3XG4iKTsKIGZhaWw2OgpAQCAtMTI2NywxMCArMTI3Myw5IEBAIGZhaWw1
OgogICAgIEVycm9yKCJGYWlsNVxuIik7CiBmYWlsNDoKICAgICBFcnJvcigiRmFpbDRcbiIpOwot
ICAgIE5vdGlmaWVyRGlzY29ubmVjdChGcm9udGVuZC0+Tm90aWZpZXIpOwogZmFpbDM6CiAgICAg
RXJyb3IoIkZhaWwzXG4iKTsKLSAgICBCbG9ja1JpbmdEaXNjb25uZWN0KEZyb250ZW5kLT5CbG9j
a1JpbmcpOworICAgIFJpbmdEaXNjb25uZWN0KEZyb250ZW5kLT5SaW5nKTsKIGZhaWwyOgogICAg
IEVycm9yKCJGYWlsMlxuIik7CiAgICAgR3JhbnRlckRpc2Nvbm5lY3QoRnJvbnRlbmQtPkdyYW50
ZXIpOwpAQCAtMTI4NCw4ICsxMjg5LDcgQEAgRnJvbnRlbmREaXNjb25uZWN0KAogICAgIF9faW4g
IFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIE5vdGlmaWVy
RGlzY29ubmVjdChGcm9udGVuZC0+Tm90aWZpZXIpOwotICAgIEJsb2NrUmluZ0Rpc2Nvbm5lY3Qo
RnJvbnRlbmQtPkJsb2NrUmluZyk7CisgICAgUmluZ0Rpc2Nvbm5lY3QoRnJvbnRlbmQtPlJpbmcp
OwogICAgIEdyYW50ZXJEaXNjb25uZWN0KEZyb250ZW5kLT5HcmFudGVyKTsKIH0KIF9fZHJ2X3Jl
cXVpcmVzSVJRTChESVNQQVRDSF9MRVZFTCkKQEAgLTEyOTgsOCArMTMwMiw3IEBAIEZyb250ZW5k
RW5hYmxlKAogICAgIEtlTWVtb3J5QmFycmllcigpOwogCiAgICAgR3JhbnRlckVuYWJsZShGcm9u
dGVuZC0+R3JhbnRlcik7Ci0gICAgQmxvY2tSaW5nRW5hYmxlKEZyb250ZW5kLT5CbG9ja1Jpbmcp
OwotICAgIE5vdGlmaWVyRW5hYmxlKEZyb250ZW5kLT5Ob3RpZmllcik7CisgICAgUmluZ0VuYWJs
ZShGcm9udGVuZC0+UmluZyk7CiB9CiBfX2Rydl9yZXF1aXJlc0lSUUwoRElTUEFUQ0hfTEVWRUwp
CiBzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRApAQCAtMTMwOSw4ICsxMzEyLDcgQEAgRnJvbnRlbmRE
aXNhYmxlKAogewogICAgIEZyb250ZW5kLT5DYXBzLkNvbm5lY3RlZCA9IEZBTFNFOwogCi0gICAg
Tm90aWZpZXJEaXNhYmxlKEZyb250ZW5kLT5Ob3RpZmllcik7Ci0gICAgQmxvY2tSaW5nRGlzYWJs
ZShGcm9udGVuZC0+QmxvY2tSaW5nKTsKKyAgICBSaW5nRGlzYWJsZShGcm9udGVuZC0+UmluZyk7
CiAgICAgR3JhbnRlckRpc2FibGUoRnJvbnRlbmQtPkdyYW50ZXIpOwogfQogCkBAIC0xNTA1LDcg
KzE1MDcsNyBAQCBGcm9udGVuZFN1c3BlbmRMYXRlQ2FsbGJhY2soCiAgICAgICAgIEFTU0VSVChG
QUxTRSk7CiAgICAgfQogCi0gICAgTm90aWZpZXJUcmlnZ2VyKEZyb250ZW5kLT5Ob3RpZmllcik7
CisgICAgUmluZ1RyaWdnZXIoRnJvbnRlbmQtPlJpbmcpOwogCiAgICAgVmVyYm9zZSgiVGFyZ2V0
WyVkXSA6IDw9PT0gcmVzdG9yZWQgJXNcbiIsIEZyb250ZW5kLT5UYXJnZXRJZCwgX19YZW52YmRT
dGF0ZU5hbWUoRnJvbnRlbmQtPlN0YXRlKSk7CiB9CkBAIC0xNjk0LDIxICsxNjk2LDE3IEBAIEZy
b250ZW5kQ3JlYXRlKAogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3Rv
IGZhaWwzOwogCi0gICAgc3RhdHVzID0gTm90aWZpZXJDcmVhdGUoRnJvbnRlbmQsICZGcm9udGVu
ZC0+Tm90aWZpZXIpOworICAgIHN0YXR1cyA9IFJpbmdDcmVhdGUoRnJvbnRlbmQsICZGcm9udGVu
ZC0+UmluZyk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFp
bDQ7CiAKLSAgICBzdGF0dXMgPSBCbG9ja1JpbmdDcmVhdGUoRnJvbnRlbmQsIEZyb250ZW5kLT5E
ZXZpY2VJZCwgJkZyb250ZW5kLT5CbG9ja1JpbmcpOwotICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQotICAgICAgICBnb3RvIGZhaWw1OwotCiAgICAgc3RhdHVzID0gR3JhbnRlckNyZWF0ZShG
cm9udGVuZCwgJkZyb250ZW5kLT5HcmFudGVyKTsKICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKLSAgICAgICAgZ290byBmYWlsNjsKKyAgICAgICAgZ290byBmYWlsNTsKIAogICAgIHN0YXR1
cyA9IFRocmVhZENyZWF0ZShGcm9udGVuZEJhY2tlbmQsIEZyb250ZW5kLCAmRnJvbnRlbmQtPkJh
Y2tlbmRUaHJlYWQpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3Rv
IGZhaWw3OworICAgICAgICBnb3RvIGZhaWw2OwogCiAgICAgLy8ga2VybmVsIG9iamVjdHMKICAg
ICBLZUluaXRpYWxpemVTcGluTG9jaygmRnJvbnRlbmQtPlN0YXRlTG9jayk7CkBAIC0xNzE3LDE4
ICsxNzE1LDE0IEBAIEZyb250ZW5kQ3JlYXRlKAogICAgICpfRnJvbnRlbmQgPSBGcm9udGVuZDsK
ICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CiAKLWZhaWw3OgotICAgIEVycm9yKCJmYWlsN1xu
Iik7Ci0gICAgR3JhbnRlckRlc3Ryb3koRnJvbnRlbmQtPkdyYW50ZXIpOwotICAgIEZyb250ZW5k
LT5HcmFudGVyID0gTlVMTDsKIGZhaWw2OgogICAgIEVycm9yKCJmYWlsNlxuIik7Ci0gICAgQmxv
Y2tSaW5nRGVzdHJveShGcm9udGVuZC0+QmxvY2tSaW5nKTsKLSAgICBGcm9udGVuZC0+QmxvY2tS
aW5nID0gTlVMTDsKKyAgICBHcmFudGVyRGVzdHJveShGcm9udGVuZC0+R3JhbnRlcik7CisgICAg
RnJvbnRlbmQtPkdyYW50ZXIgPSBOVUxMOwogZmFpbDU6CiAgICAgRXJyb3IoImZhaWw1XG4iKTsK
LSAgICBOb3RpZmllckRlc3Ryb3koRnJvbnRlbmQtPk5vdGlmaWVyKTsKLSAgICBGcm9udGVuZC0+
Tm90aWZpZXIgPSBOVUxMOworICAgIFJpbmdEZXN0cm95KEZyb250ZW5kLT5SaW5nKTsKKyAgICBG
cm9udGVuZC0+UmluZyA9IE5VTEw7CiBmYWlsNDoKICAgICBFcnJvcigiZmFpbDRcbiIpOwogZmFp
bDM6CkBAIC0xNzYxLDExICsxNzU1LDggQEAgRnJvbnRlbmREZXN0cm95KAogICAgIEdyYW50ZXJE
ZXN0cm95KEZyb250ZW5kLT5HcmFudGVyKTsKICAgICBGcm9udGVuZC0+R3JhbnRlciA9IE5VTEw7
CiAKLSAgICBCbG9ja1JpbmdEZXN0cm95KEZyb250ZW5kLT5CbG9ja1JpbmcpOwotICAgIEZyb250
ZW5kLT5CbG9ja1JpbmcgPSBOVUxMOwotCi0gICAgTm90aWZpZXJEZXN0cm95KEZyb250ZW5kLT5O
b3RpZmllcik7Ci0gICAgRnJvbnRlbmQtPk5vdGlmaWVyID0gTlVMTDsKKyAgICBSaW5nRGVzdHJv
eShGcm9udGVuZC0+UmluZyk7CisgICAgRnJvbnRlbmQtPlJpbmcgPSBOVUxMOwogCiAgICAgQVNT
RVJUM1AoRnJvbnRlbmQtPkJhY2tlbmRQYXRoLCA9PSwgTlVMTCk7CiAgICAgQVNTRVJUM1AoRnJv
bnRlbmQtPklucXVpcnksID09LCBOVUxMKTsKQEAgLTE4NDAsNyArMTgzMSw1IEBAIEZyb250ZW5k
RGVidWdDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLkRpc2tJ
bmZvKTsKIAogICAgIEdyYW50ZXJEZWJ1Z0NhbGxiYWNrKEZyb250ZW5kLT5HcmFudGVyLCBEZWJ1
Zyk7Ci0gICAgQmxvY2tSaW5nRGVidWdDYWxsYmFjayhGcm9udGVuZC0+QmxvY2tSaW5nLCBEZWJ1
Zyk7Ci0gICAgTm90aWZpZXJEZWJ1Z0NhbGxiYWNrKEZyb250ZW5kLT5Ob3RpZmllciwgRGVidWcp
OwogfQogCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2Zyb250ZW5kLmggYi9zcmMveGVudmJkL2Zy
b250ZW5kLmgKaW5kZXggNDQ5MGFlYi4uNTEzYWNlNCAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9m
cm9udGVuZC5oCisrKyBiL3NyYy94ZW52YmQvZnJvbnRlbmQuaApAQCAtNzQsNyArNzQsMjYgQEAg
dHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9ESVNLSU5GTyB7CiAKIHR5cGVkZWYgc3RydWN0IF9YRU5W
QkRfRlJPTlRFTkQgWEVOVkJEX0ZST05URU5ELCAqUFhFTlZCRF9GUk9OVEVORDsKIAotLy8gQWNj
ZXNzb3JzCitleHRlcm4gVUxPTkcKK0Zyb250ZW5kR2V0RGV2aWNlSWQoCisgICAgSU4gIFBYRU5W
QkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKKyAgICApOworCitleHRlcm4gVUxPTkcKK0Zyb250ZW5k
R2V0QmFja2VuZERvbWFpbigKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAor
ICAgICk7CisKK2V4dGVybiBQQ0hBUgorRnJvbnRlbmRHZXRCYWNrZW5kUGF0aCgKKyAgICBJTiAg
UFhFTlZCRF9GUk9OVEVORCAgICBGcm9udGVuZAorICAgICk7CisKK2V4dGVybiBQQ0hBUgorRnJv
bnRlbmRHZXRGcm9udGVuZFBhdGgoCisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRl
bmQKKyAgICApOworCiBleHRlcm4gVk9JRAogRnJvbnRlbmRSZW1vdmVGZWF0dXJlKAogICAgIElO
ICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZCwKQEAgLTk2LDEwICsxMTUsNiBAQCBl
eHRlcm4gVUxPTkcKIEZyb250ZW5kR2V0VGFyZ2V0SWQoCiAgICAgX19pbiAgUFhFTlZCRF9GUk9O
VEVORCAgICAgIEZyb250ZW5kCiAgICAgKTsKLWV4dGVybiBVTE9ORwotRnJvbnRlbmRHZXREZXZp
Y2VJZCgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQKLSAgICApOwog
ZXh0ZXJuIFBWT0lECiBGcm9udGVuZEdldElucXVpcnkoCiAgICAgX19pbiAgUFhFTlZCRF9GUk9O
VEVORCAgICAgIEZyb250ZW5kCkBAIC0xMDgsMTQgKzEyMyw5IEBAIGV4dGVybiBQWEVOVkJEX1RB
UkdFVAogRnJvbnRlbmRHZXRUYXJnZXQoCiAgICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAg
IEZyb250ZW5kCiAgICAgKTsKLSNpbmNsdWRlICJibG9ja3JpbmcuaCIKLWV4dGVybiBQWEVOVkJE
X0JMT0NLUklORwotRnJvbnRlbmRHZXRCbG9ja1JpbmcoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9O
VEVORCAgICAgIEZyb250ZW5kCi0gICAgKTsKLSNpbmNsdWRlICJub3RpZmllci5oIgotZXh0ZXJu
IFBYRU5WQkRfTk9USUZJRVIKLUZyb250ZW5kR2V0Tm90aWZpZXIoCisjaW5jbHVkZSAicmluZy5o
IgorZXh0ZXJuIFBYRU5WQkRfUklORworRnJvbnRlbmRHZXRSaW5nKAogICAgIF9faW4gIFBYRU5W
QkRfRlJPTlRFTkQgICAgICBGcm9udGVuZAogICAgICk7CiAjaW5jbHVkZSAiZ3JhbnRlci5oIgpk
aWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9ub3RpZmllci5jIGIvc3JjL3hlbnZiZC9ub3RpZmllci5j
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmJmZTAwLi4wMDAwMDAwCi0tLSBhL3Ny
Yy94ZW52YmQvbm90aWZpZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDM5MCArMCwwIEBACi0vKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIAotICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCAKLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IAotICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgCi0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCAKLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIAotICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiAKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IAotICogU1VDSCBEQU1BR0UuCi0gKi8gCi0KLSNpbmNsdWRlICJub3RpZmllci5oIgotI2luY2x1
ZGUgImZyb250ZW5kLmgiCi0jaW5jbHVkZSAidGFyZ2V0LmgiCi0jaW5jbHVkZSAiYWRhcHRlci5o
IgotI2luY2x1ZGUgInV0aWwuaCIKLSNpbmNsdWRlICJkZWJ1Zy5oIgotI2luY2x1ZGUgPGV2dGNo
bl9pbnRlcmZhY2UuaD4KLQotc3RydWN0IF9YRU5WQkRfTk9USUZJRVIgewotICAgIFBYRU5WQkRf
RlJPTlRFTkQgICAgICAgICAgICAgICAgRnJvbnRlbmQ7Ci0gICAgQk9PTEVBTiAgICAgICAgICAg
ICAgICAgICAgICAgICBDb25uZWN0ZWQ7Ci0gICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAg
ICAgICBFbmFibGVkOwotCi0gICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAgICAgICBTdG9y
ZUludGVyZmFjZTsKLSAgICBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSAgICAgICAgIEV2dGNobklu
dGVyZmFjZTsKLQotICAgIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwgICAgICAgICAgQ2hhbm5lbDsK
LSAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQ7Ci0gICAgVUxPTkcgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOdW1JbnRzOwotICAgIFVMT05HICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTnVtRHBjczsKLSAgICBLRFBDICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERwYzsKLSAgICBLRFBDICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVyRHBjOwotICAg
IEtUSU1FUiAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXI7Ci19OwotCi0jZGVmaW5lIE5P
VElGSUVSX1BPT0xfVEFHICAgICAgICAgICAneWZOWCcKLQotc3RhdGljIEZPUkNFSU5MSU5FIFBW
T0lECi1fX05vdGlmaWVyQWxsb2NhdGUoCi0gICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAg
ICAgICBMZW5ndGgKLSAgICApCi17Ci0gICAgcmV0dXJuIF9fQWxsb2NhdGVQb29sV2l0aFRhZyhO
b25QYWdlZFBvb2wsIExlbmd0aCwgTk9USUZJRVJfUE9PTF9UQUcpOwotfQotCi1zdGF0aWMgRk9S
Q0VJTkxJTkUgVk9JRAotX19Ob3RpZmllckZyZWUoCi0gICAgSU4gIFBWT0lEICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXIKLSAgICApCi17Ci0gICAgaWYgKEJ1ZmZlcikKLSAgICAgICAgX19G
cmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBOT1RJRklFUl9QT09MX1RBRyk7Ci19Ci0KLUtTRVJWSUNF
X1JPVVRJTkUgTm90aWZpZXJJbnRlcnJ1cHQ7Ci0KLUJPT0xFQU4KLU5vdGlmaWVySW50ZXJydXB0
KAotICAgIF9faW4gIFBLSU5URVJSVVBUICAgICAgICAgICAgICAgSW50ZXJydXB0LAotICAgIF9J
bl9vcHRfIFBWT0lEICAgICAgICAgICAgICAgICAgQ29udGV4dAotICAgICkKLXsKLSAgICBQWEVO
VkJEX05PVElGSUVSICAgIE5vdGlmaWVyID0gQ29udGV4dDsKLSAgICAKLSAgICBVTlJFRkVSRU5D
RURfUEFSQU1FVEVSKEludGVycnVwdCk7Ci0KLSAgICBBU1NFUlQoTm90aWZpZXIgIT0gTlVMTCk7
Ci0KLQkrK05vdGlmaWVyLT5OdW1JbnRzOwotCWlmIChOb3RpZmllci0+Q29ubmVjdGVkKSB7Ci0J
CWlmIChLZUluc2VydFF1ZXVlRHBjKCZOb3RpZmllci0+RHBjLCBOVUxMLCBOVUxMKSkgewotCQkJ
KytOb3RpZmllci0+TnVtRHBjczsKLSAgICAgICAgfQotCX0KLQotICAgIHJldHVybiBUUlVFOwot
fQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgotX19Ob3RpZmllckRwY1RpbWVvdXQoCi0g
ICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgIE5vdGlmaWVyCi0gICAgKQotewotICAgIEtE
UENfV0FUQ0hET0dfSU5GT1JNQVRJT04gICBXYXRjaGRvZzsKLSAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzOwotCi0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihOb3RpZmll
cik7Ci0KLSAgICBSdGxaZXJvTWVtb3J5KCZXYXRjaGRvZywgc2l6ZW9mIChXYXRjaGRvZykpOwot
Ci0gICAgc3RhdHVzID0gS2VRdWVyeURwY1dhdGNoZG9nSW5mb3JtYXRpb24oJldhdGNoZG9nKTsK
LSAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgIGlmIChXYXRjaGRvZy5EcGNU
aW1lTGltaXQgPT0gMCB8fAotICAgICAgICBXYXRjaGRvZy5EcGNXYXRjaGRvZ0xpbWl0ID09IDAp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQotICAgIGlmIChXYXRjaGRvZy5EcGNUaW1lQ291bnQg
PiAoV2F0Y2hkb2cuRHBjVGltZUxpbWl0IC8gMikgJiYKLSAgICAgICAgV2F0Y2hkb2cuRHBjV2F0
Y2hkb2dDb3VudCA+IChXYXRjaGRvZy5EcGNXYXRjaGRvZ0xpbWl0IC8gMikpCi0gICAgICAgIHJl
dHVybiBGQUxTRTsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi0jZGVmaW5lIFRJTUVfVVMoX3Vz
KSAgICAgICAgKChfdXMpICogMTApCi0jZGVmaW5lIFRJTUVfTVMoX21zKSAgICAgICAgKFRJTUVf
VVMoKF9tcykgKiAxMDAwKSkKLSNkZWZpbmUgVElNRV9TKF9zKSAgICAgICAgICAoVElNRV9NUygo
X3MpICogMTAwMCkpCi0jZGVmaW5lIFRJTUVfUkVMQVRJVkUoX3QpICAgKC0oX3QpKQotCi1LREVG
RVJSRURfUk9VVElORSBOb3RpZmllckRwYzsKLQotVk9JRCAKLU5vdGlmaWVyRHBjKAotICAgIF9f
aW4gIFBLRFBDICAgICAgICAgICAgICAgICAgICAgRHBjLAotICAgIF9faW5fb3B0IFBWT0lEICAg
ICAgICAgICAgICAgICAgQ29udGV4dCwKLSAgICBfX2luX29wdCBQVk9JRCAgICAgICAgICAgICAg
ICAgIEFyZzEsCi0gICAgX19pbl9vcHQgUFZPSUQgICAgICAgICAgICAgICAgICBBcmcyCi0gICAg
KQotewotICAgIFBYRU5WQkRfTk9USUZJRVIgICAgTm90aWZpZXIgPSBDb250ZXh0OwotCi0gICAg
VU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEcGMpOwotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
QXJnMSk7Ci0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihBcmcyKTsKLQotICAgIEFTU0VSVChO
b3RpZmllciAhPSBOVUxMKTsKLQotICAgIGlmICghTm90aWZpZXItPkNvbm5lY3RlZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBpZiAoIUZyb250ZW5kTm90aWZ5
UmVzcG9uc2VzKE5vdGlmaWVyLT5Gcm9udGVuZCkpIHsKLSAgICAgICAgICAgIFhFTkJVU19FVlRD
SE4oVW5tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmTm90aWZpZXItPkV2dGNobklu
dGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpZXItPkNoYW5uZWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChfX05vdGlmaWVyRHBjVGltZW91dChOb3RpZmllcikpIHsKLSAg
ICAgICAgICAgIExBUkdFX0lOVEVHRVIgICBEZWxheTsKLQotICAgICAgICAgICAgRGVsYXkuUXVh
ZFBhcnQgPSBUSU1FX1JFTEFUSVZFKFRJTUVfVVMoMTAwKSk7Ci0KLSAgICAgICAgICAgIEtlU2V0
VGltZXIoJk5vdGlmaWVyLT5UaW1lciwKLSAgICAgICAgICAgICAgICAgICAgICAgRGVsYXksCi0g
ICAgICAgICAgICAgICAgICAgICAgICZOb3RpZmllci0+VGltZXJEcGMpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLU5UU1RBVFVTCi1Ob3RpZmllckNyZWF0ZSgK
LSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgICAgIEZyb250ZW5kLAotICAgIE9VVCBQ
WEVOVkJEX05PVElGSUVSKiAgICAgICAgICAgTm90aWZpZXIKLSAgICApCi17Ci0gICAgKk5vdGlm
aWVyID0gX19Ob3RpZmllckFsbG9jYXRlKHNpemVvZihYRU5WQkRfTk9USUZJRVIpKTsKLSAgICBp
ZiAoKk5vdGlmaWVyID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDE7Ci0KLSAgICAoKk5vdGlm
aWVyKS0+RnJvbnRlbmQgPSBGcm9udGVuZDsKLSAgICBLZUluaXRpYWxpemVEcGMoJigqTm90aWZp
ZXIpLT5EcGMsIE5vdGlmaWVyRHBjLCAqTm90aWZpZXIpOwotICAgIEtlSW5pdGlhbGl6ZURwYygm
KCpOb3RpZmllciktPlRpbWVyRHBjLCBOb3RpZmllckRwYywgKk5vdGlmaWVyKTsKLSAgICBLZUlu
aXRpYWxpemVUaW1lcigmKCpOb3RpZmllciktPlRpbWVyKTsKLQotICAgIHJldHVybiBTVEFUVVNf
U1VDQ0VTUzsKLQotZmFpbDE6Ci0gICAgcmV0dXJuIFNUQVRVU19OT19NRU1PUlk7Ci19Ci0KLVZP
SUQKLU5vdGlmaWVyRGVzdHJveSgKLSAgICBJTiAgUFhFTlZCRF9OT1RJRklFUiAgICAgICAgICAg
IE5vdGlmaWVyCi0gICAgKQotewotICAgIE5vdGlmaWVyLT5Gcm9udGVuZCA9IE5VTEw7Ci0gICAg
UnRsWmVyb01lbW9yeSgmTm90aWZpZXItPkRwYywgc2l6ZW9mKEtEUEMpKTsKLSAgICBSdGxaZXJv
TWVtb3J5KCZOb3RpZmllci0+VGltZXJEcGMsIHNpemVvZihLRFBDKSk7Ci0gICAgUnRsWmVyb01l
bW9yeSgmTm90aWZpZXItPlRpbWVyLCBzaXplb2YoS1RJTUVSKSk7Ci0KLSAgICBBU1NFUlQoSXNa
ZXJvTWVtb3J5KE5vdGlmaWVyLCBzaXplb2YoWEVOVkJEX05PVElGSUVSKSkpOwotICAgIAotICAg
IF9fTm90aWZpZXJGcmVlKE5vdGlmaWVyKTsKLX0KLQotTlRTVEFUVVMKLU5vdGlmaWVyQ29ubmVj
dCgKLSAgICBJTiAgUFhFTlZCRF9OT1RJRklFUiAgICAgICAgICAgIE5vdGlmaWVyLAotICAgIElO
ICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZERvbWFpbgotICAgICkKLXsKLSAg
ICBQWEVOVkJEX0FEQVBURVIgQWRhcHRlciA9IFRhcmdldEdldEFkYXB0ZXIoRnJvbnRlbmRHZXRU
YXJnZXQoTm90aWZpZXItPkZyb250ZW5kKSk7Ci0gICAgTlRTVEFUVVMgICAgc3RhdHVzOwotCi0g
ICAgQVNTRVJUKE5vdGlmaWVyLT5Db25uZWN0ZWQgPT0gRkFMU0UpOwotCi0gICAgQWRhcHRlckdl
dFN0b3JlSW50ZXJmYWNlKEFkYXB0ZXIsICZOb3RpZmllci0+U3RvcmVJbnRlcmZhY2UpOwotICAg
IEFkYXB0ZXJHZXRFdnRjaG5JbnRlcmZhY2UoQWRhcHRlciwgJk5vdGlmaWVyLT5FdnRjaG5JbnRl
cmZhY2UpOwotCi0gICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKEFjcXVpcmUsICZOb3RpZmllci0+
U3RvcmVJbnRlcmZhY2UpOwotICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBn
b3RvIGZhaWwxOwotCi0gICAgc3RhdHVzID0gWEVOQlVTX0VWVENITihBY3F1aXJlLCAmTm90aWZp
ZXItPkV2dGNobkludGVyZmFjZSk7Ci0gICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCi0gICAg
ICAgIGdvdG8gZmFpbDI7Ci0KLSAgICBOb3RpZmllci0+Q2hhbm5lbCA9IFhFTkJVU19FVlRDSE4o
T3BlbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZOb3RpZmllci0+
RXZ0Y2huSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY
RU5CVVNfRVZUQ0hOX1RZUEVfVU5CT1VORCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vdGlmaWVySW50ZXJydXB0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOb3RpZmllciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJhY2tlbmREb21haW4sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUUlVFKTsKLQotICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7Ci0gICAgaWYgKE5vdGlm
aWVyLT5DaGFubmVsID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDM7Ci0KLSAgICBOb3RpZmll
ci0+UG9ydCA9IFhFTkJVU19FVlRDSE4oR2V0UG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJk5vdGlmaWVyLT5FdnRjaG5JbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vdGlmaWVyLT5DaGFubmVsKTsKLQotICAgIFhFTkJVU19FVlRD
SE4oVW5tYXNrLAotICAgICAgICAgICAgICAgICAgJk5vdGlmaWVyLT5FdnRjaG5JbnRlcmZhY2Us
Ci0gICAgICAgICAgICAgICAgICBOb3RpZmllci0+Q2hhbm5lbCwKLSAgICAgICAgICAgICAgICAg
IEZBTFNFKTsKLQotICAgIE5vdGlmaWVyLT5Db25uZWN0ZWQgPSBUUlVFOwotICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKLQotZmFpbDM6Ci0gICAgWEVOQlVTX0VWVENITihSZWxlYXNlLCAmTm90
aWZpZXItPkV2dGNobkludGVyZmFjZSk7Ci0gICAgUnRsWmVyb01lbW9yeSgmTm90aWZpZXItPkV2
dGNobkludGVyZmFjZSwgc2l6ZW9mKFhFTkJVU19FVlRDSE5fSU5URVJGQUNFKSk7Ci0KLWZhaWwy
OgotICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmTm90aWZpZXItPlN0b3JlSW50ZXJmYWNlKTsK
LSAgICBSdGxaZXJvTWVtb3J5KCZOb3RpZmllci0+U3RvcmVJbnRlcmZhY2UsIHNpemVvZihYRU5C
VVNfU1RPUkVfSU5URVJGQUNFKSk7Ci0KLWZhaWwxOgotICAgIHJldHVybiBzdGF0dXM7Ci19Ci0K
LU5UU1RBVFVTCi1Ob3RpZmllclN0b3JlV3JpdGUoCi0gICAgSU4gIFBYRU5WQkRfTk9USUZJRVIg
ICAgICAgICAgICBOb3RpZmllciwKLSAgICBJTiAgUFhFTkJVU19TVE9SRV9UUkFOU0FDVElPTiAg
IFRyYW5zYWN0aW9uLAotICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRl
bmRQYXRoCi0gICAgKQotewotICAgIHJldHVybiBYRU5CVVNfU1RPUkUoUHJpbnRmLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICZOb3RpZmllci0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2FjdGlvbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGcm9u
dGVuZFBhdGgsIAotICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50LWNoYW5uZWwiLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICIldSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgTm90
aWZpZXItPlBvcnQpOwotfQotCi1WT0lECi1Ob3RpZmllckVuYWJsZSgKLSAgICBJTiAgUFhFTlZC
RF9OT1RJRklFUiAgICAgICAgICAgIE5vdGlmaWVyCi0gICAgKQotewotICAgIEFTU0VSVChOb3Rp
Zmllci0+RW5hYmxlZCA9PSBGQUxTRSk7Ci0KLSAgICBYRU5CVVNfRVZUQ0hOKFRyaWdnZXIsCi0g
ICAgICAgICAgICAgICAgICAmTm90aWZpZXItPkV2dGNobkludGVyZmFjZSwKLSAgICAgICAgICAg
ICAgICAgIE5vdGlmaWVyLT5DaGFubmVsKTsKLQotICAgIE5vdGlmaWVyLT5FbmFibGVkID0gVFJV
RTsKLX0KLQotVk9JRAotTm90aWZpZXJEaXNhYmxlKAotICAgIElOICBQWEVOVkJEX05PVElGSUVS
ICAgICAgICAgICAgTm90aWZpZXIKLSAgICApCi17Ci0gICAgQVNTRVJUKE5vdGlmaWVyLT5FbmFi
bGVkID09IFRSVUUpOwotCi0gICAgTm90aWZpZXItPkVuYWJsZWQgPSBGQUxTRTsKLQotICAgIC8v
Ci0gICAgLy8gTm8gbmV3IHRpbWVycyBjYW4gYmUgc2NoZWR1bGVkIG9uY2UgRW5hYmxlZCBnb2Vz
IHRvIEZBTFNFLgotICAgIC8vIENhbmNlbCBhbnkgZXhpc3Rpbmcgb25lcy4KLSAgICAvLwotICAg
IChWT0lEKSBLZUNhbmNlbFRpbWVyKCZOb3RpZmllci0+VGltZXIpOwotfQotCi1WT0lECi1Ob3Rp
ZmllckRpc2Nvbm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3Rp
ZmllcgotICAgICkKLXsKLSAgICBBU1NFUlQoTm90aWZpZXItPkNvbm5lY3RlZCA9PSBUUlVFKTsK
LQotICAgIFhFTkJVU19FVlRDSE4oQ2xvc2UsCi0gICAgICAgICAgICAgICAgICAmTm90aWZpZXIt
PkV2dGNobkludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIE5vdGlmaWVyLT5DaGFubmVsKTsK
LSAgICBOb3RpZmllci0+Q2hhbm5lbCA9IE5VTEw7Ci0gICAgTm90aWZpZXItPlBvcnQgPSAwOwot
Ci0gICAgWEVOQlVTX0VWVENITihSZWxlYXNlLCAmTm90aWZpZXItPkV2dGNobkludGVyZmFjZSk7
Ci0gICAgUnRsWmVyb01lbW9yeSgmTm90aWZpZXItPkV2dGNobkludGVyZmFjZSwgc2l6ZW9mKFhF
TkJVU19FVlRDSE5fSU5URVJGQUNFKSk7Ci0KLSAgICBYRU5CVVNfU1RPUkUoUmVsZWFzZSwgJk5v
dGlmaWVyLT5TdG9yZUludGVyZmFjZSk7Ci0gICAgUnRsWmVyb01lbW9yeSgmTm90aWZpZXItPlN0
b3JlSW50ZXJmYWNlLCBzaXplb2YoWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSkpOwotCi0gICAgTm90
aWZpZXItPk51bUludHMgPSBOb3RpZmllci0+TnVtRHBjcyA9IDA7Ci0KLSAgICBOb3RpZmllci0+
Q29ubmVjdGVkID0gRkFMU0U7Ci19Ci0KLVZPSUQKLU5vdGlmaWVyRGVidWdDYWxsYmFjaygKLSAg
ICBJTiAgUFhFTlZCRF9OT1RJRklFUiAgICAgICAgICAgIE5vdGlmaWVyLAotICAgIElOICBQWEVO
QlVTX0RFQlVHX0lOVEVSRkFDRSAgICAgRGVidWcKLSAgICApCi17Ci0gICAgWEVOQlVTX0RFQlVH
KFByaW50ZiwgRGVidWcsCi0gICAgICAgICAgICAgICAgICJOT1RJRklFUjogSW50IC8gRFBDIDog
JWQgLyAlZFxuIiwKLSAgICAgICAgICAgICAgICAgTm90aWZpZXItPk51bUludHMsIE5vdGlmaWVy
LT5OdW1EcGNzKTsKLQotICAgIGlmIChOb3RpZmllci0+Q2hhbm5lbCkgewotICAgICAgICBYRU5C
VVNfREVCVUcoUHJpbnRmLCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgICAgICJOT1RJRklFUjog
Q2hhbm5lbCA6ICVwICglZClcbiIsIAotICAgICAgICAgICAgICAgICAgICAgTm90aWZpZXItPkNo
YW5uZWwsIE5vdGlmaWVyLT5Qb3J0KTsKLSAgICB9Ci0KLSAgICBOb3RpZmllci0+TnVtSW50cyA9
IDA7Ci0gICAgTm90aWZpZXItPk51bURwY3MgPSAwOwotfQotCi1WT0lECi1Ob3RpZmllcktpY2so
Ci0gICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmllcgotICAgICkKLXsK
LSAgICBpZiAoTm90aWZpZXItPkVuYWJsZWQpIHsKLQkJaWYgKEtlSW5zZXJ0UXVldWVEcGMoJk5v
dGlmaWVyLT5EcGMsIE5VTEwsIE5VTEwpKSB7Ci0JCQkrK05vdGlmaWVyLT5OdW1EcGNzOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1WT0lECi1Ob3RpZmllclRyaWdnZXIoCi0gICAgSU4gIFBYRU5W
QkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmllcgotICAgICkKLXsKLSAgICBpZiAoTm90aWZp
ZXItPkVuYWJsZWQpCi0gICAgICAgIFhFTkJVU19FVlRDSE4oVHJpZ2dlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAmTm90aWZpZXItPkV2dGNobkludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBOb3RpZmllci0+Q2hhbm5lbCk7Ci19Ci0KLVZPSUQKLU5vdGlmaWVyU2VuZCgKLSAgICBJ
TiAgUFhFTlZCRF9OT1RJRklFUiAgICAgICAgICAgIE5vdGlmaWVyCi0gICAgKQotewotICAgIGlm
IChOb3RpZmllci0+RW5hYmxlZCkKLSAgICAgICAgWEVOQlVTX0VWVENITihTZW5kLAotICAgICAg
ICAgICAgICAgICAgICAgICZOb3RpZmllci0+RXZ0Y2huSW50ZXJmYWNlLAotICAgICAgICAgICAg
ICAgICAgICAgIE5vdGlmaWVyLT5DaGFubmVsKTsKLX0KLQpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZi
ZC9ub3RpZmllci5oIGIvc3JjL3hlbnZiZC9ub3RpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0Y2YzNWU3Li4wMDAwMDAwCi0tLSBhL3NyYy94ZW52YmQvbm90aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBT
eXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0aCBvciB3aXRo
b3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICogTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBEQU1BR0UuCi0g
Ki8gCi0KLSNpZm5kZWYgX1hFTlZCRF9OT1RJRklFUl9ICi0jZGVmaW5lIF9YRU5WQkRfTk9USUZJ
RVJfSAotCi10eXBlZGVmIHN0cnVjdCBfWEVOVkJEX05PVElGSUVSIFhFTlZCRF9OT1RJRklFUiwg
KlBYRU5WQkRfTk9USUZJRVI7Ci0KLSNpbmNsdWRlICJmcm9udGVuZC5oIgotI2luY2x1ZGUgPGRl
YnVnX2ludGVyZmFjZS5oPgotI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgotCi1leHRlcm4g
TlRTVEFUVVMKLU5vdGlmaWVyQ3JlYXRlKAotICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgICAg
ICAgICAgRnJvbnRlbmQsCi0gICAgT1VUIFBYRU5WQkRfTk9USUZJRVIqICAgICAgICAgICBOb3Rp
ZmllcgotICAgICk7Ci0KLWV4dGVybiBWT0lECi1Ob3RpZmllckRlc3Ryb3koCi0gICAgSU4gIFBY
RU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmllcgotICAgICk7Ci0KLWV4dGVybiBOVFNU
QVRVUwotTm90aWZpZXJDb25uZWN0KAotICAgIElOICBQWEVOVkJEX05PVElGSUVSICAgICAgICAg
ICAgTm90aWZpZXIsCi0gICAgSU4gIFVTSE9SVCAgICAgICAgICAgICAgICAgICAgICBCYWNrZW5k
RG9tYWluCi0gICAgKTsKLQotZXh0ZXJuIE5UU1RBVFVTCi1Ob3RpZmllclN0b3JlV3JpdGUoCi0g
ICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmllciwKLSAgICBJTiAgUFhF
TkJVU19TVE9SRV9UUkFOU0FDVElPTiAgIFRyYW5zYWN0aW9uLAotICAgIElOICBQQ0hBUiAgICAg
ICAgICAgICAgICAgICAgICAgRnJvbnRlbmRQYXRoCi0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLU5v
dGlmaWVyRW5hYmxlKAotICAgIElOICBQWEVOVkJEX05PVElGSUVSICAgICAgICAgICAgTm90aWZp
ZXIKLSAgICApOwotCi1leHRlcm4gVk9JRAotTm90aWZpZXJEaXNhYmxlKAotICAgIElOICBQWEVO
VkJEX05PVElGSUVSICAgICAgICAgICAgTm90aWZpZXIKLSAgICApOwotCi1leHRlcm4gVk9JRAot
Tm90aWZpZXJEaXNjb25uZWN0KAotICAgIElOICBQWEVOVkJEX05PVElGSUVSICAgICAgICAgICAg
Tm90aWZpZXIKLSAgICApOwotCi1leHRlcm4gVk9JRAotTm90aWZpZXJEZWJ1Z0NhbGxiYWNrKAot
ICAgIElOICBQWEVOVkJEX05PVElGSUVSICAgICAgICAgICAgTm90aWZpZXIsCi0gICAgSU4gIFBY
RU5CVVNfREVCVUdfSU5URVJGQUNFICAgICBEZWJ1ZwotICAgICk7Ci0KLWV4dGVybiBWT0lECi1O
b3RpZmllcktpY2soCi0gICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmll
cgotICAgICk7Ci0KLWV4dGVybiBWT0lECi1Ob3RpZmllclRyaWdnZXIoCi0gICAgSU4gIFBYRU5W
QkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmllcgotICAgICk7Ci0KLWV4dGVybiBWT0lECi1O
b3RpZmllclNlbmQoCi0gICAgSU4gIFBYRU5WQkRfTk9USUZJRVIgICAgICAgICAgICBOb3RpZmll
cgotICAgICk7Ci0KLSNlbmRpZiAvLyBfWEVOVkJEX05PVElGSUVSX0gKZGlmZiAtLWdpdCBhL3Ny
Yy94ZW52YmQvcmluZy5jIGIvc3JjL3hlbnZiZC9yaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMC4uZWI1ZmNjNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy94ZW52YmQvcmlu
Zy5jCkBAIC0wLDAgKzEsOTExIEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAor
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNp
bmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPG50c3Ryc2Fm
ZS5oPgorCisjaW5jbHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8ZXZ0Y2huX2lu
dGVyZmFjZS5oPgorI2luY2x1ZGUgPGRlYnVnX2ludGVyZmFjZS5oPgorCisjaW5jbHVkZSAicmlu
Zy5oIgorI2luY2x1ZGUgImZyb250ZW5kLmgiCisjaW5jbHVkZSAidGFyZ2V0LmgiCisjaW5jbHVk
ZSAiYWRhcHRlci5oIgorI2luY2x1ZGUgInNyYmV4dC5oIgorI2luY2x1ZGUgImRyaXZlci5oIgor
I2luY2x1ZGUgImdyYW50ZXIuaCIKKworI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJkZWJ1
Zy5oIgorI2luY2x1ZGUgImFzc2VydC5oIgorCisjZGVmaW5lIFRBR19IRUFERVIgICAgICAgICAg
ICAgICAgICAnZ2FUWCcKKyNkZWZpbmUgWEVOVkJEX01BWF9SSU5HX1BBR0VfT1JERVIgICg0KQor
I2RlZmluZSBYRU5WQkRfTUFYX1JJTkdfUEFHRVMgICAgICAgKDEgPDwgWEVOVkJEX01BWF9SSU5H
X1BBR0VfT1JERVIpCisKK3N0cnVjdCBfWEVOVkJEX1JJTkcgeworICAgIFBYRU5WQkRfRlJPTlRF
TkQgICAgICAgICAgICAgICAgRnJvbnRlbmQ7CisgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAg
ICAgICAgICBDb25uZWN0ZWQ7CisgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBF
bmFibGVkOworCisgICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAgICAgICBTdG9yZUludGVy
ZmFjZTsKKyAgICBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSAgICAgICAgIEV2dGNobkludGVyZmFj
ZTsKKyAgICBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICAgICAgIERlYnVnSW50ZXJmYWNlOwor
CisgICAgUFhFTkJVU19ERUJVR19DQUxMQkFDSyAgICAgICAgICBEZWJ1Z0NhbGxiYWNrOworCisg
ICAgS1NQSU5fTE9DSyAgICAgICAgICAgICAgICAgICAgICBMb2NrOworICAgIFBNREwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWRsOworICAgIGJsa2lmX3NyaW5nX3QqICAgICAgICAgICAg
ICAgICAgU2hhcmVkOworICAgIGJsa2lmX2Zyb250X3JpbmdfdCAgICAgICAgICAgICAgRnJvbnQ7
CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlcjsKKyAgICBQVk9JRCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdyYW50c1tYRU5WQkRfTUFYX1JJTkdfUEFHRVNdOwor
ICAgIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwgICAgICAgICAgQ2hhbm5lbDsKKyAgICBLRFBDICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERwYzsKKyAgICBLRFBDICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRpbWVyRHBjOworICAgIEtUSU1FUiAgICAgICAgICAgICAgICAgICAgICAgICAg
VGltZXI7CisKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdHRlZDsK
KyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2VpdmVkOworICAgIFVMT05H
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzOworICAgIFVMT05HICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRHBjczsKK307CisKKyNkZWZpbmUgTUFYX05BTUVfTEVOICAgICAgICAg
ICAgICAgIDY0CisjZGVmaW5lIFJJTkdfUE9PTF9UQUcgICAgICAgICAgICAgICAnZ25SWCcKKyNk
ZWZpbmUgWEVOX0lPX1BST1RPX0FCSSAgICAgICAgICAgICJ4ODZfNjQtYWJpIgorCitzdGF0aWMg
Rk9SQ0VJTkxJTkUgUFZPSUQKK19fUmluZ0FsbG9jYXRlKAorICAgIElOICBVTE9ORyAgICAgICAg
ICAgICAgICAgICAgICAgTGVuZ3RoCisgICAgKQoreworICAgIHJldHVybiBfX0FsbG9jYXRlUG9v
bFdpdGhUYWcoTm9uUGFnZWRQb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUklOR19QT09MX1RBRyk7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1JpbmdGcmVlKAorICAgIElOICBQVk9J
RCAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyCisgICAgKQoreworICAgIGlmIChCdWZmZXIp
CisgICAgICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgUklOR19QT09MX1RBRyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECit4ZW5f
bWIoKQoreworICAgIEtlTWVtb3J5QmFycmllcigpOworICAgIF9SZWFkV3JpdGVCYXJyaWVyKCk7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECit4ZW5fd21iKCkKK3sKKyAgICBLZU1lbW9y
eUJhcnJpZXIoKTsKKyAgICBfV3JpdGVCYXJyaWVyKCk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElO
RSBQRk5fTlVNQkVSCitfX1BmbigKKyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICAgICAgICBW
aXJ0QWRkcgorICAgICkKK3sKKyAgICByZXR1cm4gKFBGTl9OVU1CRVIpKFVMT05HX1BUUikoTW1H
ZXRQaHlzaWNhbEFkZHJlc3MoVmlydEFkZHIpLlF1YWRQYXJ0ID4+IFBBR0VfU0hJRlQpOworfQor
CitzdGF0aWMgRk9SQ0VJTkxJTkUgVUxPTkc2NAorX19SaW5nR2V0VGFnKAorICAgIElOICBQWEVO
VkJEX1JJTkcgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3QKKyAgICAp
Cit7CisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihSaW5nKTsKKyAgICByZXR1cm4gKChVTE9O
RzY0KVRBR19IRUFERVIgPDwgMzIpIHwgKFVMT05HNjQpUmVxdWVzdC0+SWQ7Cit9CisKK3N0YXRp
YyBGT1JDRUlOTElORSBCT09MRUFOCitfX1JpbmdQdXRUYWcoCisgICAgSU4gIFBYRU5WQkRfUklO
RyAgICBSaW5nLAorICAgIElOICBVTE9ORzY0ICAgICAgICAgSWQsCisgICAgT1VUIFBVTE9ORyAg
ICAgICAgICBUYWcKKyAgICApCit7CisgICAgVUxPTkcgICBIZWFkZXIgPSAoVUxPTkcpKChJZCA+
PiAzMikgJiAweEZGRkZGRkZGKTsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoUmluZyk7
CisKKyAgICAqVGFnICAgID0gKFVMT05HKShJZCAmIDB4RkZGRkZGRkYpOworICAgIGlmIChIZWFk
ZXIgIT0gVEFHX0hFQURFUikgeworICAgICAgICBFcnJvcigiUFVUX1RBRyAoJWxseCkgVEFHX0hF
QURFUiAoJTA4eCUwOHgpXG4iLCBJZCwgSGVhZGVyLCAqVGFnKTsKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUg
Vk9JRAorX19SaW5nSW5zZXJ0KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgICAgIFJpbmcsCisg
ICAgSU4gIFBYRU5WQkRfUkVRVUVTVCAgICAgUmVxdWVzdCwKKyAgICBJTiAgYmxraWZfcmVxdWVz
dF90KiAgICByZXEKKyAgICApCit7CisgICAgUFhFTlZCRF9HUkFOVEVSICAgICAgICAgR3JhbnRl
ciA9IEZyb250ZW5kR2V0R3JhbnRlcihSaW5nLT5Gcm9udGVuZCk7CisKKyAgICBzd2l0Y2ggKFJl
cXVlc3QtPk9wZXJhdGlvbikgeworICAgIGNhc2UgQkxLSUZfT1BfUkVBRDoKKyAgICBjYXNlIEJM
S0lGX09QX1dSSVRFOgorICAgICAgICBpZiAoUmVxdWVzdC0+TnJTZWdtZW50cyA+IEJMS0lGX01B
WF9TRUdNRU5UU19QRVJfUkVRVUVTVCkgeworICAgICAgICAgICAgLy8gSW5kaXJlY3QKKyAgICAg
ICAgICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBQYWdlSWR4OworICAgICAgICAgICAg
VUxPTkcgICAgICAgICAgICAgICAgICAgICAgIFNlZ0lkeDsKKyAgICAgICAgICAgIFBMSVNUX0VO
VFJZICAgICAgICAgICAgICAgICBQYWdlRW50cnk7CisgICAgICAgICAgICBQTElTVF9FTlRSWSAg
ICAgICAgICAgICAgICAgU2VnRW50cnk7CisgICAgICAgICAgICBibGtpZl9yZXF1ZXN0X2luZGly
ZWN0X3QqICAgcmVxX2luZGlyZWN0OworCisgICAgICAgICAgICByZXFfaW5kaXJlY3QgPSAoYmxr
aWZfcmVxdWVzdF9pbmRpcmVjdF90KilyZXE7CisgICAgICAgICAgICByZXFfaW5kaXJlY3QtPm9w
ZXJhdGlvbiAgICAgICAgID0gQkxLSUZfT1BfSU5ESVJFQ1Q7CisgICAgICAgICAgICByZXFfaW5k
aXJlY3QtPmluZGlyZWN0X29wICAgICAgID0gUmVxdWVzdC0+T3BlcmF0aW9uOworICAgICAgICAg
ICAgcmVxX2luZGlyZWN0LT5ucl9zZWdtZW50cyAgICAgICA9IFJlcXVlc3QtPk5yU2VnbWVudHM7
CisgICAgICAgICAgICByZXFfaW5kaXJlY3QtPmlkICAgICAgICAgICAgICAgID0gX19SaW5nR2V0
VGFnKFJpbmcsIFJlcXVlc3QpOworICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5zZWN0b3JfbnVt
YmVyICAgICA9IFJlcXVlc3QtPkZpcnN0U2VjdG9yOworICAgICAgICAgICAgcmVxX2luZGlyZWN0
LT5oYW5kbGUgICAgICAgICAgICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5G
cm9udGVuZCk7CisKKyAgICAgICAgICAgIGZvciAoUGFnZUlkeCA9IDAsCisgICAgICAgICAgICAg
ICAgIFBhZ2VFbnRyeSA9IFJlcXVlc3QtPkluZGlyZWN0cy5GbGluaywKKyAgICAgICAgICAgICAg
ICAgU2VnRW50cnkgPSBSZXF1ZXN0LT5TZWdtZW50cy5GbGluazsKKyAgICAgICAgICAgICAgICAg
ICAgUGFnZUlkeCA8IEJMS0lGX01BWF9JTkRJUkVDVF9QQUdFU19QRVJfUkVRVUVTVCAmJgorICAg
ICAgICAgICAgICAgICAgICBQYWdlRW50cnkgIT0gJlJlcXVlc3QtPkluZGlyZWN0cyAmJgorICAg
ICAgICAgICAgICAgICAgICBTZWdFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7CisgICAgICAg
ICAgICAgICAgICAgICAgICArK1BhZ2VJZHgsIFBhZ2VFbnRyeSA9IFBhZ2VFbnRyeS0+Rmxpbmsp
IHsKKyAgICAgICAgICAgICAgICBQWEVOVkJEX0lORElSRUNUIFBhZ2UgPSBDT05UQUlOSU5HX1JF
Q09SRChQYWdlRW50cnksIFhFTlZCRF9JTkRJUkVDVCwgRW50cnkpOworCisgICAgICAgICAgICAg
ICAgcmVxX2luZGlyZWN0LT5pbmRpcmVjdF9ncmVmc1tQYWdlSWR4XSA9IEdyYW50ZXJSZWZlcmVu
Y2UoR3JhbnRlciwgUGFnZS0+R3JhbnQpOworCisgICAgICAgICAgICAgICAgZm9yIChTZWdJZHgg
PSAwOworICAgICAgICAgICAgICAgICAgICAgICAgU2VnSWR4IDwgWEVOVkJEX01BWF9TRUdNRU5U
U19QRVJfUEFHRSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgU2VnRW50cnkgIT0gJlJlcXVl
c3QtPlNlZ21lbnRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrU2VnSWR4LCBTZWdF
bnRyeSA9IFNlZ0VudHJ5LT5GbGluaykgeworICAgICAgICAgICAgICAgICAgICBQWEVOVkJEX1NF
R01FTlQgU2VnbWVudCA9IENPTlRBSU5JTkdfUkVDT1JEKFNlZ0VudHJ5LCBYRU5WQkRfU0VHTUVO
VCwgRW50cnkpOworCisgICAgICAgICAgICAgICAgICAgIFBhZ2UtPlBhZ2VbU2VnSWR4XS5HcmFu
dFJlZiA9IEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgU2VnbWVudC0+R3JhbnQpOworICAgICAg
ICAgICAgICAgICAgICBQYWdlLT5QYWdlW1NlZ0lkeF0uRmlyc3QgICAgPSBTZWdtZW50LT5GaXJz
dFNlY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgUGFnZS0+UGFnZVtTZWdJZHhdLkxhc3QgICAg
ID0gU2VnbWVudC0+TGFzdFNlY3RvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBEaXJlY3QKKyAgICAgICAgICAgIFVM
T05HICAgICAgICAgICBJbmRleDsKKyAgICAgICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeTsK
KworICAgICAgICAgICAgcmVxLT5vcGVyYXRpb24gICAgICAgICAgICAgICAgICA9IFJlcXVlc3Qt
Pk9wZXJhdGlvbjsKKyAgICAgICAgICAgIHJlcS0+bnJfc2VnbWVudHMgICAgICAgICAgICAgICAg
PSAoVUNIQVIpUmVxdWVzdC0+TnJTZWdtZW50czsKKyAgICAgICAgICAgIHJlcS0+aGFuZGxlICAg
ICAgICAgICAgICAgICAgICAgPSAoVVNIT1JUKUZyb250ZW5kR2V0RGV2aWNlSWQoUmluZy0+RnJv
bnRlbmQpOworICAgICAgICAgICAgcmVxLT5pZCAgICAgICAgICAgICAgICAgICAgICAgICA9IF9f
UmluZ0dldFRhZyhSaW5nLCBSZXF1ZXN0KTsKKyAgICAgICAgICAgIHJlcS0+c2VjdG9yX251bWJl
ciAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKKworICAgICAgICAgICAgZm9y
IChJbmRleCA9IDAsIEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMuRmxpbms7CisgICAgICAgICAg
ICAgICAgICAgIEluZGV4IDwgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICYmCisgICAg
ICAgICAgICAgICAgICAgIEVudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrSW5kZXgsIEVudHJ5ID0gRW50cnktPkZsaW5rKSB7CisgICAgICAgICAg
ICAgICAgUFhFTlZCRF9TRUdNRU5UIFNlZ21lbnQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwg
WEVOVkJEX1NFR01FTlQsIEVudHJ5KTsKKyAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0u
Z3JlZiAgICAgICAgPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFNlZ21lbnQtPkdyYW50KTsK
KyAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0uZmlyc3Rfc2VjdCAgPSBTZWdtZW50LT5G
aXJzdFNlY3RvcjsKKyAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0ubGFzdF9zZWN0ICAg
PSBTZWdtZW50LT5MYXN0U2VjdG9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBCTEtJRl9PUF9XUklURV9CQVJSSUVSOgorICAgIGNhc2UgQkxL
SUZfT1BfRkxVU0hfRElTS0NBQ0hFOgorICAgICAgICByZXEtPm9wZXJhdGlvbiAgICAgICAgICAg
ICAgICAgID0gUmVxdWVzdC0+T3BlcmF0aW9uOworICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAg
ICAgICAgICAgICAgID0gMDsKKyAgICAgICAgcmVxLT5oYW5kbGUgICAgICAgICAgICAgICAgICAg
ICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5Gcm9udGVuZCk7CisgICAgICAg
IHJlcS0+aWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVx
dWVzdCk7CisgICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAgICAgICAgICAgICAgPSBSZXF1ZXN0
LT5GaXJzdFNlY3RvcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEJMS0lGX09QX0RJU0NB
UkQ6IHsKKyAgICAgICAgYmxraWZfcmVxdWVzdF9kaXNjYXJkX3QqICAgICAgICByZXFfZGlzY2Fy
ZDsKKyAgICAgICAgcmVxX2Rpc2NhcmQgPSAoYmxraWZfcmVxdWVzdF9kaXNjYXJkX3QqKXJlcTsK
KyAgICAgICAgcmVxX2Rpc2NhcmQtPm9wZXJhdGlvbiAgICAgICAgICA9IEJMS0lGX09QX0RJU0NB
UkQ7CisgICAgICAgIHJlcV9kaXNjYXJkLT5mbGFnICAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5G
bGFnczsKKyAgICAgICAgcmVxX2Rpc2NhcmQtPmhhbmRsZSAgICAgICAgICAgICA9IChVU0hPUlQp
RnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5Gcm9udGVuZCk7CisgICAgICAgIHJlcV9kaXNjYXJk
LT5pZCAgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7CisgICAg
ICAgIHJlcV9kaXNjYXJkLT5zZWN0b3JfbnVtYmVyICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3Rv
cjsKKyAgICAgICAgcmVxX2Rpc2NhcmQtPm5yX3NlY3RvcnMgICAgICAgICA9IFJlcXVlc3QtPk5y
U2VjdG9yczsKKyAgICAgICAgfSBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VChGQUxTRSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICArK1JpbmctPlN1Ym1pdHRlZDsK
K30KKworS1NFUlZJQ0VfUk9VVElORSAgICBSaW5nSW50ZXJydXB0OworCitCT09MRUFOCitSaW5n
SW50ZXJydXB0KAorICAgIElOICBQS0lOVEVSUlVQVCBJbnRlcnJ1cHQsCisgICAgSU4gIFBWT0lE
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTlZCRF9SSU5HICAgIFJpbmcgPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihJbnRlcnJ1cHQpOworCisgICAgQVNT
RVJUKFJpbmcgIT0gTlVMTCk7CisKKyAgICArK1JpbmctPkV2ZW50czsKKyAgICBpZiAoIVJpbmct
PkNvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBpZiAoS2VJbnNlcnRRdWV1
ZURwYygmUmluZy0+RHBjLCBOVUxMLCBOVUxMKSkKKyAgICAgICAgKytSaW5nLT5EcGNzOworCisg
ICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitfX1JpbmdE
cGNUaW1lb3V0KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgICAgICAgICBSaW5nCisgICAgKQor
eworICAgIEtEUENfV0FUQ0hET0dfSU5GT1JNQVRJT04gICBXYXRjaGRvZzsKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRF
UihSaW5nKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJldhdGNoZG9nLCBzaXplb2YgKFdhdGNoZG9n
KSk7CisKKyAgICBzdGF0dXMgPSBLZVF1ZXJ5RHBjV2F0Y2hkb2dJbmZvcm1hdGlvbigmV2F0Y2hk
b2cpOworICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOworCisgICAgaWYgKFdhdGNoZG9n
LkRwY1RpbWVMaW1pdCA9PSAwIHx8CisgICAgICAgIFdhdGNoZG9nLkRwY1dhdGNoZG9nTGltaXQg
PT0gMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKFdhdGNoZG9nLkRwY1RpbWVD
b3VudCA+IChXYXRjaGRvZy5EcGNUaW1lTGltaXQgLyAyKSAmJgorICAgICAgICBXYXRjaGRvZy5E
cGNXYXRjaGRvZ0NvdW50ID4gKFdhdGNoZG9nLkRwY1dhdGNoZG9nTGltaXQgLyAyKSkKKyAgICAg
ICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKyNkZWZpbmUgVElNRV9V
UyhfdXMpICAgICAgICAoKF91cykgKiAxMCkKKyNkZWZpbmUgVElNRV9NUyhfbXMpICAgICAgICAo
VElNRV9VUygoX21zKSAqIDEwMDApKQorI2RlZmluZSBUSU1FX1MoX3MpICAgICAgICAgIChUSU1F
X01TKChfcykgKiAxMDAwKSkKKyNkZWZpbmUgVElNRV9SRUxBVElWRShfdCkgICAoLShfdCkpCisK
K0tERUZFUlJFRF9ST1VUSU5FIFJpbmdEcGM7CisKK1ZPSUQgCitSaW5nRHBjKAorICAgIF9faW4g
IFBLRFBDICAgICBEcGMsCisgICAgX19pbl9vcHQgUFZPSUQgIENvbnRleHQsCisgICAgX19pbl9v
cHQgUFZPSUQgIEFyZzEsCisgICAgX19pbl9vcHQgUFZPSUQgIEFyZzIKKyAgICApCit7CisgICAg
UFhFTlZCRF9SSU5HICAgIFJpbmcgPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFN
RVRFUihEcGMpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQXJnMSk7CisgICAgVU5SRUZF
UkVOQ0VEX1BBUkFNRVRFUihBcmcyKTsKKworICAgIEFTU0VSVChSaW5nICE9IE5VTEwpOworCisg
ICAgaWYgKCFSaW5nLT5Db25uZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoOzsp
IHsKKyAgICAgICAgaWYgKCFGcm9udGVuZE5vdGlmeVJlc3BvbnNlcyhSaW5nLT5Gcm9udGVuZCkp
IHsKKyAgICAgICAgICAgIFhFTkJVU19FVlRDSE4oVW5tYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBSaW5nLT5DaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoX19SaW5nRHBjVGltZW91dChS
aW5nKSkgeworICAgICAgICAgICAgTEFSR0VfSU5URUdFUiAgIERlbGF5OworCisgICAgICAgICAg
ICBEZWxheS5RdWFkUGFydCA9IFRJTUVfUkVMQVRJVkUoVElNRV9VUygxMDApKTsKKworICAgICAg
ICAgICAgS2VTZXRUaW1lcigmUmluZy0+VGltZXIsCisgICAgICAgICAgICAgICAgICAgICAgIERl
bGF5LAorICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+VGltZXJEcGMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBWT0lECitSaW5nRGVidWdDYWxsYmFjaygKKyAgICBJTiAgUFZPSUQgICAgICAgQXJndW1lbnQs
CisgICAgSU4gIEJPT0xFQU4gICAgIENyYXNoaW5nCisgICAgKQoreworICAgIFBYRU5WQkRfUklO
RyAgICBSaW5nID0gQXJndW1lbnQ7CisgICAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIgPSBGcm9u
dGVuZEdldEdyYW50ZXIoUmluZy0+RnJvbnRlbmQpOworICAgIFVMT05HICAgICAgICAgICBJbmRl
eDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3Jhc2hpbmcpOworCisgICAgWEVOQlVT
X0RFQlVHKFByaW50ZiwKKyAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAiU3VibWl0dGVkOiAldSBSZWNlaXZlZDogJXVcbiIsCisgICAgICAg
ICAgICAgICAgIFJpbmctPlN1Ym1pdHRlZCwKKyAgICAgICAgICAgICAgICAgUmluZy0+UmVjZWl2
ZWQpOworCisgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAgICAgICAgICAgICAgJlJpbmct
PkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAiRXZlbnRzOiAldSBEcGNzOiAldVxu
IiwKKyAgICAgICAgICAgICAgICAgUmluZy0+RXZlbnRzLCAKKyAgICAgICAgICAgICAgICAgUmlu
Zy0+RHBjcyk7CisKKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAm
UmluZy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJTaGFyZWQgOiAweCVwXG4i
LCAKKyAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkKTsKKworICAgIGlmIChSaW5nLT5TaGFy
ZWQpIHsKKyAgICAgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICJTaGFyZWQ6ICVk
IC8gJWQgLSAlZCAvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkLT5y
ZXFfcHJvZCwKKyAgICAgICAgICAgICAgICAgICAgIFJpbmctPlNoYXJlZC0+cmVxX2V2ZW50LAor
ICAgICAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkLT5yc3BfcHJvZCwKKyAgICAgICAgICAg
ICAgICAgICAgIFJpbmctPlNoYXJlZC0+cnNwX2V2ZW50KTsKKyAgICB9CisKKyAgICBYRU5CVVNf
REVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICJGcm9udDogJWQgLyAlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAg
ICBSaW5nLT5Gcm9udC5yZXFfcHJvZF9wdnQsCisgICAgICAgICAgICAgICAgIFJpbmctPkZyb250
LnJzcF9jb25zLAorICAgICAgICAgICAgICAgICBSaW5nLT5Gcm9udC5ucl9lbnRzKTsKKworICAg
IFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVy
ZmFjZSwKKyAgICAgICAgICAgICAgICAgIk9yZGVyOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAg
UmluZy0+T3JkZXIpOworCisgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKDF1bCA8PCBSaW5n
LT5PcmRlcik7ICsrSW5kZXgpIHsKKyAgICAgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAg
ICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICJHcmFudHNbJS0yZF06IDB4JXAgKCV1KVxuIiwgCisgICAgICAgICAgICAgICAgICAgICBJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgIFJpbmctPkdyYW50c1tJbmRleF0sCisgICAgICAg
ICAgICAgICAgICAgICBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFJpbmctPkdyYW50c1tJbmRl
eF0pKTsKKyAgICB9CisKKyAgICBpZiAoUmluZy0+Q2hhbm5lbCkgeworICAgICAgICBVTE9ORyAg
ICAgICBQb3J0ID0gWEVOQlVTX0VWVENITihHZXRQb3J0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsKTsKKworICAgICAgICBY
RU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50
ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIkNoYW5uZWwgOiAlcCAoJWQpXG4iLCAKKyAg
ICAgICAgICAgICAgICAgICAgIFJpbmctPkNoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICBQ
b3J0KTsKKyAgICB9Cit9CisKK05UU1RBVFVTCitSaW5nQ3JlYXRlKAorICAgIElOICBQWEVOVkJE
X0ZST05URU5EICAgIEZyb250ZW5kLAorICAgIE9VVCBQWEVOVkJEX1JJTkcqICAgICAgIFJpbmcK
KyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgKlJp
bmcgPSBfX1JpbmdBbGxvY2F0ZShzaXplb2YoWEVOVkJEX1JJTkcpKTsKKworICAgIHN0YXR1cyA9
IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYgKCpSaW5nID09IE5VTEwpCisgICAgICAgIGdvdG8g
ZmFpbDE7CisKKyAgICAoKlJpbmcpLT5Gcm9udGVuZCA9IEZyb250ZW5kOworICAgIEtlSW5pdGlh
bGl6ZVNwaW5Mb2NrKCYoKlJpbmcpLT5Mb2NrKTsKKyAgICBLZUluaXRpYWxpemVEcGMoJigqUmlu
ZyktPkRwYywgUmluZ0RwYywgKlJpbmcpOworICAgIEtlSW5pdGlhbGl6ZURwYygmKCpSaW5nKS0+
VGltZXJEcGMsIFJpbmdEcGMsICpSaW5nKTsKKyAgICBLZUluaXRpYWxpemVUaW1lcigmKCpSaW5n
KS0+VGltZXIpOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMToKKyAgICBF
cnJvcigiZmFpbDEgJTA4eFxuIiwgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitW
T0lECitSaW5nRGVzdHJveSgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKKyAgICApCit7
CisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+VGltZXIsIHNpemVvZihLVElNRVIpKTsKKyAgICBS
dGxaZXJvTWVtb3J5KCZSaW5nLT5UaW1lckRwYywgc2l6ZW9mKEtEUEMpKTsKKyAgICBSdGxaZXJv
TWVtb3J5KCZSaW5nLT5EcGMsIHNpemVvZihLRFBDKSk7CisgICAgUnRsWmVyb01lbW9yeSgmUmlu
Zy0+TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsKKyAgICBSaW5nLT5Gcm9udGVuZCA9IE5VTEw7
CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KFJpbmcsIHNpemVvZihYRU5WQkRfUklORykpKTsK
KyAgICBfX1JpbmdGcmVlKFJpbmcpOworfQorCitOVFNUQVRVUworUmluZ0Nvbm5lY3QoCisgICAg
SU4gIFBYRU5WQkRfUklORyAgICBSaW5nCisgICAgKQoreworICAgIFBYRU5WQkRfVEFSR0VUICAg
ICAgVGFyZ2V0ID0gRnJvbnRlbmRHZXRUYXJnZXQoUmluZy0+RnJvbnRlbmQpOworICAgIFBYRU5W
QkRfQURBUFRFUiAgICAgQWRhcHRlciA9IFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KTsKKyAgICBQ
WEVOVkJEX0dSQU5URVIgICAgIEdyYW50ZXIgPSBGcm9udGVuZEdldEdyYW50ZXIoUmluZy0+RnJv
bnRlbmQpOworICAgIFBDSEFSICAgICAgICAgICAgICAgQnVmZmVyOworICAgIFVMT05HICAgICAg
ICAgICAgICAgSW5kZXg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBB
U1NFUlQoUmluZy0+Q29ubmVjdGVkID09IEZBTFNFKTsKKworICAgIEFkYXB0ZXJHZXRTdG9yZUlu
dGVyZmFjZShBZGFwdGVyLCAmUmluZy0+U3RvcmVJbnRlcmZhY2UpOworICAgIEFkYXB0ZXJHZXRF
dnRjaG5JbnRlcmZhY2UoQWRhcHRlciwgJlJpbmctPkV2dGNobkludGVyZmFjZSk7CisgICAgQWRh
cHRlckdldERlYnVnSW50ZXJmYWNlKEFkYXB0ZXIsICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSk7CisK
KyAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoQWNxdWlyZSwgJlJpbmctPlN0b3JlSW50ZXJmYWNl
KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKwor
ICAgIHN0YXR1cyA9IFhFTkJVU19FVlRDSE4oQWNxdWlyZSwgJlJpbmctPkV2dGNobkludGVyZmFj
ZSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDI7CisK
KyAgICBzdGF0dXMgPSBYRU5CVVNfREVCVUcoQWNxdWlyZSwgJlJpbmctPkRlYnVnSW50ZXJmYWNl
KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMzsKKwor
ICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAmUmluZy0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kR2V0QmFja2VuZFBhdGgoUmluZy0+
RnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4LXJpbmctcGFnZS1vcmRl
ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZCdWZmZXIpOworICAgIGlmIChOVF9TVUND
RVNTKHN0YXR1cykpIHsKKyAgICAgICAgUmluZy0+T3JkZXIgPSBzdHJ0b3VsKEJ1ZmZlciwgTlVM
TCwgMTApOworICAgICAgICBpZiAoUmluZy0+T3JkZXIgPiBYRU5WQkRfTUFYX1JJTkdfUEFHRV9P
UkRFUikKKyAgICAgICAgICAgIFJpbmctPk9yZGVyID0gWEVOVkJEX01BWF9SSU5HX1BBR0VfT1JE
RVI7CisKKyAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsCisgICAgICAgICAgICAgICAgICAgICAm
UmluZy0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICBCdWZmZXIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIFJpbmctPk9yZGVyID0gMDsKKyAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgIFJpbmctPk1kbCA9IF9fQWxsb2NhdGVQYWdlcygxIDw8IFJpbmct
Pk9yZGVyKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYgKFJpbmct
Pk1kbCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw0OworCisgICAgUmluZy0+U2hhcmVkID0g
TW1HZXRTeXN0ZW1BZGRyZXNzRm9yTWRsU2FmZShSaW5nLT5NZGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxQYWdlUHJpb3JpdHkpOworICAg
IEFTU0VSVChSaW5nLT5TaGFyZWQgIT0gTlVMTCk7CisKKyNwcmFnbWEgd2FybmluZyhwdXNoKQor
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMDUpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
NDMxMSkgLy8gJ3R5cGUgY2FzdCcgcG9pbnRlciB0cnVuY2F0aW9uIGZyb20gJ2Jsa2lmX3NyaW5n
X2VudHJ5WzFdJyB0byAnbG9uZycKKyAgICBTSEFSRURfUklOR19JTklUKFJpbmctPlNoYXJlZCk7
CisgICAgRlJPTlRfUklOR19JTklUKCZSaW5nLT5Gcm9udCwgUmluZy0+U2hhcmVkLCBQQUdFX1NJ
WkUgPDwgUmluZy0+T3JkZXIpOworI3ByYWdtYSB3YXJuaW5nKHBvcCkKKworICAgIGZvciAoSW5k
ZXggPSAwOyBJbmRleCA8ICgxdWwgPDwgUmluZy0+T3JkZXIpOyArK0luZGV4KSB7CisgICAgICAg
IHN0YXR1cyA9IEdyYW50ZXJHZXQoR3JhbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNbUdldE1kbFBmbkFycmF5KFJpbmctPk1kbClbSW5kZXhdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5HcmFu
dHNbSW5kZXhdKTsKKyAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgICAg
ICBnb3RvIGZhaWw1OworICAgIH0KKworICAgIFJpbmctPkNoYW5uZWwgPSBYRU5CVVNfRVZUQ0hO
KE9wZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkV2dGNobklu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5CVVNfRVZUQ0hO
X1RZUEVfVU5CT1VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nSW50
ZXJydXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKFJpbmct
PkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAg
ICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChSaW5nLT5DaGFubmVsID09IE5V
TEwpCisgICAgICAgIGdvdG8gZmFpbDY7CisKKyAgICBYRU5CVVNfRVZUQ0hOKFVubWFzaywKKyAg
ICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAg
ICBSaW5nLT5DaGFubmVsLAorICAgICAgICAgICAgICAgICAgRkFMU0UpOworCisgICAgc3RhdHVz
ID0gWEVOQlVTX0RFQlVHKFJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUmlu
Zy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fTU9EVUxFX18i
fFJJTkciLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nRGVidWdDYWxsYmFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JlJpbmctPkRlYnVnQ2FsbGJhY2spOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAg
ICAgICBnb3RvIGZhaWw3OworCisgICAgUmluZy0+Q29ubmVjdGVkID0gVFJVRTsKKyAgICByZXR1
cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWw3OgorICAgIEVycm9yKCJmYWlsN1xuIik7CisgICAg
WEVOQlVTX0VWVENITihDbG9zZSwKKyAgICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRl
cmZhY2UsCisgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsKTsKKyAgICBSaW5nLT5DaGFu
bmVsID0gTlVMTDsKK2ZhaWw2OgorICAgIEVycm9yKCJmYWlsNlxuIik7CitmYWlsNToKKyAgICBF
cnJvcigiZmFpbDVcbiIpOworICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8ICgxdWwgPDwgUmlu
Zy0+T3JkZXIpOyArK0luZGV4KSB7CisgICAgICAgIGlmIChSaW5nLT5HcmFudHNbSW5kZXhdID09
IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHcmFudGVyUHV0KEdyYW50
ZXIsIFJpbmctPkdyYW50c1tJbmRleF0pOworICAgICAgICBSaW5nLT5HcmFudHNbSW5kZXhdID0g
TlVMTDsKKyAgICB9CisKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5Gcm9udCwgc2l6ZW9mKGJs
a2lmX2Zyb250X3JpbmdfdCkpOworICAgIAorICAgIF9fRnJlZVBhZ2VzKFJpbmctPk1kbCk7Cisg
ICAgUmluZy0+U2hhcmVkID0gTlVMTDsKKyAgICBSaW5nLT5NZGwgPSBOVUxMOworCisgICAgUmlu
Zy0+T3JkZXIgPSAwOworZmFpbDQ6CisgICAgRXJyb3IoImZhaWw0XG4iKTsKKyAgICBYRU5CVVNf
REVCVUcoUmVsZWFzZSwgJlJpbmctPkRlYnVnSW50ZXJmYWNlKTsKK2ZhaWwzOgorICAgIEVycm9y
KCJmYWlsM1xuIik7CisgICAgWEVOQlVTX0VWVENITihSZWxlYXNlLCAmUmluZy0+RXZ0Y2huSW50
ZXJmYWNlKTsKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7CisgICAgWEVOQlVTX1NUT1JF
KFJlbGVhc2UsICZSaW5nLT5TdG9yZUludGVyZmFjZSk7CitmYWlsMToKKyAgICBFcnJvcigiZmFp
bDEgJTA4eFxuIiwgc3RhdHVzKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkRlYnVnSW50
ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19ERUJVR19JTlRFUkZBQ0Up
KTsKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5FdnRjaG5JbnRlcmZhY2UsCisgICAgICAgICAg
ICAgICAgICBzaXplb2YoWEVOQlVTX0VWVENITl9JTlRFUkZBQ0UpKTsKKyAgICBSdGxaZXJvTWVt
b3J5KCZSaW5nLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5C
VVNfU1RPUkVfSU5URVJGQUNFKSk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRV
UworUmluZ1N0b3JlV3JpdGUoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nLAorICAgIElO
ICBQVk9JRCAgICAgICAgICAgVHJhbnNhY3Rpb24KKyAgICApCit7CisgICAgUFhFTlZCRF9HUkFO
VEVSICAgICBHcmFudGVyID0gRnJvbnRlbmRHZXRHcmFudGVyKFJpbmctPkZyb250ZW5kKTsKKyAg
ICBVTE9ORyAgICAgICAgICAgICAgIFBvcnQ7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0
dXM7CisKKyAgICBpZiAoUmluZy0+T3JkZXIgPT0gMCkgeworICAgICAgICBzdGF0dXMgPSBYRU5C
VVNfU1RPUkUoUHJpbnRmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5T
dG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9u
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kR2V0RnJvbnRlbmRQYXRo
KFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyaW5nLXJl
ZiIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFJpbmctPkdyYW50c1sw
XSkpOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGF0dXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVUxPTkcgICAgICAgICAgIEluZGV4Owor
CisgICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJlJpbmctPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHJhbnNhY3Rpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RnJvbnRlbmRHZXRGcm9udGVuZFBhdGgoUmluZy0+RnJvbnRlbmQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJpbmctcGFnZS1vcmRlciIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiV1IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5PcmRl
cik7CisgICAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXR1czsKKworICAgICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCAoMXVsIDw8IFJpbmct
Pk9yZGVyKTsgKytJbmRleCkgeworICAgICAgICAgICAgQ0hBUiAgICAgICAgTmFtZVtNQVhfTkFN
RV9MRU4rMV07CisKKyAgICAgICAgICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NjaFByaW50ZkEoTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX05BTUVfTEVO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmluZy1yZWYldSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4KTsKKyAgICAg
ICAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0dXM7CisKKyAgICAgICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5TdG9yZUludGVyZmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbiwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRGcm9udGVuZFBhdGgoUmluZy0+RnJv
bnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIldSIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgUmluZy0+R3JhbnRzW0luZGV4
XSkpOworICAgICAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXR1cyA9IFhFTkJV
U19TVE9SRShQcmludGYsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+U3RvcmVJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9uLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRGcm9udGVuZFBhdGgoUmluZy0+RnJvbnRl
bmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdG9jb2wiLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgWEVOX0lPX1BST1RPX0FCSSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpCisgICAgICAgIHJldHVybiBzdGF0dXM7CisKKyAgICBQb3J0ID0gWEVOQlVTX0VWVENI
TihHZXRQb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCk7CisKKyAgICBzdGF0
dXMgPSBYRU5CVVNfU1RPUkUoUHJpbnRmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlJp
bmctPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlv
biwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kR2V0RnJvbnRlbmRQYXRoKFJp
bmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50LWNoYW5uZWwi
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgUG9ydCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVy
biBzdGF0dXM7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK1ZPSUQKK1JpbmdF
bmFibGUoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nCisgICAgKQoreworICAgIEFTU0VS
VChSaW5nLT5FbmFibGVkID09IEZBTFNFKTsKKyAgICBSaW5nLT5FbmFibGVkID0gVFJVRTsKKwor
ICAgIFhFTkJVU19FVlRDSE4oVHJpZ2dlciwKKyAgICAgICAgICAgICAgICAgICZSaW5nLT5FdnRj
aG5JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsKTsKK30KKworVk9J
RAorUmluZ0Rpc2FibGUoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nCisgICAgKQorewor
ICAgIEFTU0VSVChSaW5nLT5FbmFibGVkID09IFRSVUUpOworICAgIFJpbmctPkVuYWJsZWQgPSBG
QUxTRTsKKworICAgIC8vCisgICAgLy8gTm8gbmV3IHRpbWVycyBjYW4gYmUgc2NoZWR1bGVkIG9u
Y2UgRW5hYmxlZCBnb2VzIHRvIEZBTFNFLgorICAgIC8vIENhbmNlbCBhbnkgZXhpc3Rpbmcgb25l
cy4KKyAgICAvLworICAgIChWT0lEKSBLZUNhbmNlbFRpbWVyKCZSaW5nLT5UaW1lcik7Cit9CisK
K1ZPSUQKK1JpbmdEaXNjb25uZWN0KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAg
ICkKK3sKKyAgICBQWEVOVkJEX0dSQU5URVIgICAgIEdyYW50ZXIgPSBGcm9udGVuZEdldEdyYW50
ZXIoUmluZy0+RnJvbnRlbmQpOworICAgIFVMT05HICAgICAgICAgICAgICAgSW5kZXg7CisKKyAg
ICBBU1NFUlQzVShSaW5nLT5TdWJtaXR0ZWQsID09LCBSaW5nLT5SZWNlaXZlZCk7CisgICAgQVNT
RVJUKFJpbmctPkNvbm5lY3RlZCk7CisgICAgUmluZy0+Q29ubmVjdGVkID0gRkFMU0U7CisKKyAg
ICBYRU5CVVNfREVCVUcoRGVyZWdpc3RlciwKKyAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVn
SW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICBSaW5nLT5EZWJ1Z0NhbGxiYWNrKTsKKyAgICBS
aW5nLT5EZWJ1Z0NhbGxiYWNrID0gTlVMTDsKKworICAgIFhFTkJVU19FVlRDSE4oQ2xvc2UsCisg
ICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAg
ICAgUmluZy0+Q2hhbm5lbCk7CisgICAgUmluZy0+Q2hhbm5lbCA9IE5VTEw7CisKKyAgICBmb3Ig
KEluZGV4ID0gMDsgSW5kZXggPCAoMXVsIDw8IFJpbmctPk9yZGVyKTsgKytJbmRleCkgeworICAg
ICAgICBpZiAoUmluZy0+R3JhbnRzW0luZGV4XSA9PSBOVUxMKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgR3JhbnRlclB1dChHcmFudGVyLCBSaW5nLT5HcmFudHNbSW5kZXhdKTsK
KyAgICAgICAgUmluZy0+R3JhbnRzW0luZGV4XSA9IE5VTEw7CisgICAgfQorCisgICAgUnRsWmVy
b01lbW9yeSgmUmluZy0+RnJvbnQsIHNpemVvZihibGtpZl9mcm9udF9yaW5nX3QpKTsKKyAgICAK
KyAgICBfX0ZyZWVQYWdlcyhSaW5nLT5NZGwpOworICAgIFJpbmctPlNoYXJlZCA9IE5VTEw7Cisg
ICAgUmluZy0+TWRsID0gTlVMTDsKKworICAgIFJpbmctPk9yZGVyID0gMDsKKworICAgIFhFTkJV
U19ERUJVRyhSZWxlYXNlLCAmUmluZy0+RGVidWdJbnRlcmZhY2UpOworICAgIFhFTkJVU19FVlRD
SE4oUmVsZWFzZSwgJlJpbmctPkV2dGNobkludGVyZmFjZSk7CisgICAgWEVOQlVTX1NUT1JFKFJl
bGVhc2UsICZSaW5nLT5TdG9yZUludGVyZmFjZSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5n
LT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdf
SU5URVJGQUNFKSk7CisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19FVlRDSE5fSU5URVJGQUNFKSk7CisgICAg
UnRsWmVyb01lbW9yeSgmUmluZy0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBz
aXplb2YoWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSkpOworCisgICAgUmluZy0+RXZlbnRzID0gMDsK
KyAgICBSaW5nLT5EcGNzID0gMDsKKyAgICBSaW5nLT5TdWJtaXR0ZWQgPSAwOworICAgIFJpbmct
PlJlY2VpdmVkID0gMDsKK30KKworQk9PTEVBTgorUmluZ1BvbGwoCisgICAgSU4gIFBYRU5WQkRf
UklORyAgICBSaW5nCisgICAgKQoreworICAgIFBYRU5WQkRfVEFSR0VUICAgICAgVGFyZ2V0ID0g
RnJvbnRlbmRHZXRUYXJnZXQoUmluZy0+RnJvbnRlbmQpOworICAgIEJPT0xFQU4gICAgICAgICAg
ICAgUmV0cnkgPSBGQUxTRTsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0s
IERJU1BBVENIX0xFVkVMKTsKKyAgICBLZUFjcXVpcmVTcGluTG9ja0F0RHBjTGV2ZWwoJlJpbmct
PkxvY2spOworCisgICAgLy8gR3VhcmQgYWdhaW5zdCB0aGlzIGxvY2tlZCByZWdpb24gYmVpbmcg
Y2FsbGVkIGFmdGVyIHRoZSAKKyAgICAvLyBsb2NrIG9uIEZyb250ZW5kU2V0U3RhdGUKKyAgICBp
ZiAoUmluZy0+RW5hYmxlZCA9PSBGQUxTRSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgZm9y
ICg7OykgeworICAgICAgICBVTE9ORyAgIHJzcF9wcm9kOworICAgICAgICBVTE9ORyAgIHJzcF9j
b25zOworCisgICAgICAgIEtlTWVtb3J5QmFycmllcigpOworCisgICAgICAgIHJzcF9wcm9kID0g
UmluZy0+U2hhcmVkLT5yc3BfcHJvZDsKKyAgICAgICAgcnNwX2NvbnMgPSBSaW5nLT5Gcm9udC5y
c3BfY29uczsKKworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgICAgICBpZiAocnNw
X2NvbnMgPT0gcnNwX3Byb2QgfHwgUmV0cnkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICB3aGlsZSAocnNwX2NvbnMgIT0gcnNwX3Byb2QgJiYgIVJldHJ5KSB7CisgICAgICAgICAgICBi
bGtpZl9yZXNwb25zZV90KiAgIFJlc3BvbnNlOworICAgICAgICAgICAgVUxPTkcgICAgICAgICAg
ICAgICBUYWc7CisKKyAgICAgICAgICAgIFJlc3BvbnNlID0gUklOR19HRVRfUkVTUE9OU0UoJlJp
bmctPkZyb250LCByc3BfY29ucyk7CisgICAgICAgICAgICArK3JzcF9jb25zOworCisgICAgICAg
ICAgICBpZiAoX19SaW5nUHV0VGFnKFJpbmcsIFJlc3BvbnNlLT5pZCwgJlRhZykpIHsKKyAgICAg
ICAgICAgICAgICArK1JpbmctPlJlY2VpdmVkOworICAgICAgICAgICAgICAgIFRhcmdldENvbXBs
ZXRlUmVzcG9uc2UoVGFyZ2V0LCBUYWcsIFJlc3BvbnNlLT5zdGF0dXMpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBSdGxaZXJvTWVtb3J5KFJlc3BvbnNlLCBzaXplb2YodW5pb24gYmxr
aWZfc3JpbmdfZW50cnkpKTsKKworICAgICAgICAgICAgaWYgKHJzcF9jb25zIC0gUmluZy0+RnJv
bnQucnNwX2NvbnMgPiBSSU5HX1NJWkUoJlJpbmctPkZyb250KSAvIDQpCisgICAgICAgICAgICAg
ICAgUmV0cnkgPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7
CisKKyAgICAgICAgUmluZy0+RnJvbnQucnNwX2NvbnMgPSByc3BfY29uczsKKyAgICAgICAgUmlu
Zy0+U2hhcmVkLT5yc3BfZXZlbnQgPSByc3BfY29ucyArIDE7CisgICAgfQorCitkb25lOgorICAg
IEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZSaW5nLT5Mb2NrKTsKKworICAgIHJldHVy
biBSZXRyeTsKK30KKworQk9PTEVBTgorUmluZ1N1Ym1pdCgKKyAgICBJTiAgUFhFTlZCRF9SSU5H
ICAgIFJpbmcsCisgICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0CisgICAgKQoreworICAg
IEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKKyAgICBibGtpZl9yZXF1ZXN0X3QqICAgIHJlcTsK
KyAgICBCT09MRUFOICAgICAgICAgICAgIE5vdGlmeTsKKworICAgIEtlQWNxdWlyZVNwaW5Mb2Nr
KCZSaW5nLT5Mb2NrLCAmSXJxbCk7CisgICAgaWYgKFJJTkdfRlVMTCgmUmluZy0+RnJvbnQpKSB7
CisgICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZSaW5nLT5Mb2NrLCBJcnFsKTsKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJlcSA9IFJJTkdfR0VUX1JFUVVFU1QoJlJpbmct
PkZyb250LCBSaW5nLT5Gcm9udC5yZXFfcHJvZF9wdnQpOworICAgIF9fUmluZ0luc2VydChSaW5n
LCBSZXF1ZXN0LCByZXEpOworICAgIEtlTWVtb3J5QmFycmllcigpOworICAgICsrUmluZy0+RnJv
bnQucmVxX3Byb2RfcHZ0OworCisgICAgUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJ
RlkoJlJpbmctPkZyb250LCBOb3RpZnkpOworICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZSaW5nLT5M
b2NrLCBJcnFsKTsKKworICAgIGlmIChOb3RpZnkpCisgICAgICAgIFJpbmdTZW5kKFJpbmcpOwor
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK1ZPSUQKK1JpbmdLaWNrKAorICAgIElOICBQWEVOVkJE
X1JJTkcgICAgUmluZworICAgICkKK3sKKyAgICBpZiAoIVJpbmctPkVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChLZUluc2VydFF1ZXVlRHBjKCZSaW5nLT5EcGMsIE5VTEwsIE5V
TEwpKQorCSAgICArK1JpbmctPkRwY3M7Cit9CisKK1ZPSUQKK1JpbmdUcmlnZ2VyKAorICAgIElO
ICBQWEVOVkJEX1JJTkcgICAgUmluZworICAgICkKK3sKKyAgICBpZiAoIVJpbmctPkVuYWJsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIFhFTkJVU19FVlRDSE4oVHJpZ2dlciwKKyAgICAgICAg
ICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBSaW5n
LT5DaGFubmVsKTsKK30KKworVk9JRAorUmluZ1NlbmQoCisgICAgSU4gIFBYRU5WQkRfUklORyAg
ICBSaW5nCisgICAgKQoreworICAgIGlmICghUmluZy0+RW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgWEVOQlVTX0VWVENITihTZW5kLAorICAgICAgICAgICAgICAgICAgJlJpbmctPkV2
dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIFJpbmctPkNoYW5uZWwpOworfQpkaWZm
IC0tZ2l0IGEvc3JjL3hlbnZiZC9yaW5nLmggYi9zcmMveGVudmJkL3JpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWMxYzcxCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj
L3hlbnZiZC9yaW5nLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4
IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywgCisgKiB3aXRoIG9yIHdp
dGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIAorICogdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAgIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisgKiBTVUNIIERBTUFHRS4K
KyAqLyAKKworI2lmbmRlZiBfWEVOVkJEX1JJTkdfSAorI2RlZmluZSBfWEVOVkJEX1JJTkdfSAor
Cit0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX1JJTkcgWEVOVkJEX1JJTkcsICpQWEVOVkJEX1JJTkc7
CisKKyNpbmNsdWRlICJmcm9udGVuZC5oIgorI2luY2x1ZGUgInNyYmV4dC5oIgorCitleHRlcm4g
TlRTVEFUVVMKK1JpbmdDcmVhdGUoCisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRl
bmQsCisgICAgT1VUIFBYRU5WQkRfUklORyogICAgICAgUmluZworICAgICk7CisKK2V4dGVybiBW
T0lECitSaW5nRGVzdHJveSgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKKyAgICApOwor
CitleHRlcm4gTlRTVEFUVVMKK1JpbmdDb25uZWN0KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAg
UmluZworICAgICk7CisKK2V4dGVybiBOVFNUQVRVUworUmluZ1N0b3JlV3JpdGUoCisgICAgSU4g
IFBYRU5WQkRfUklORyAgICBSaW5nLAorICAgIElOICBQVk9JRCAgICAgICAgICAgVHJhbnNhY3Rp
b24KKyAgICApOworCitleHRlcm4gVk9JRAorUmluZ0VuYWJsZSgKKyAgICBJTiAgUFhFTlZCRF9S
SU5HICAgIFJpbmcKKyAgICApOworCitleHRlcm4gVk9JRAorUmluZ0Rpc2FibGUoCisgICAgSU4g
IFBYRU5WQkRfUklORyAgICBSaW5nCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK1JpbmdEaXNjb25u
ZWN0KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAgICk7CisKK2V4dGVybiBCT09M
RUFOCitSaW5nUG9sbCgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKKyAgICApOworCitl
eHRlcm4gQk9PTEVBTgorUmluZ1N1Ym1pdCgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcs
CisgICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0CisgICAgKTsKKworZXh0ZXJuIFZPSUQK
K1JpbmdLaWNrKAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAgICk7CisKK2V4dGVy
biBWT0lECitSaW5nVHJpZ2dlcigKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKKyAgICAp
OworCitleHRlcm4gVk9JRAorUmluZ1NlbmQoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5n
CisgICAgKTsKKworI2VuZGlmIC8vIF9YRU5WQkRfUklOR19ICmRpZmYgLS1naXQgYS9zcmMveGVu
dmJkL3RhcmdldC5jIGIvc3JjL3hlbnZiZC90YXJnZXQuYwppbmRleCA2OTdmMzA5Li5jMGZhNGU5
IDEwMDY0NAotLS0gYS9zcmMveGVudmJkL3RhcmdldC5jCisrKyBiL3NyYy94ZW52YmQvdGFyZ2V0
LmMKQEAgLTEwNjMsOCArMTA2Myw3IEBAIF9fVGFyZ2V0UGF1c2VEYXRhUGF0aCgKICAgICBLSVJR
TCAgICAgICAgICAgICAgIElycWw7CiAgICAgVUxPTkcgICAgICAgICAgICAgICBSZXF1ZXN0czsK
ICAgICBVTE9ORyAgICAgICAgICAgICAgIENvdW50ID0gMDsKLSAgICBQWEVOVkJEX05PVElGSUVS
ICAgIE5vdGlmaWVyID0gRnJvbnRlbmRHZXROb3RpZmllcihUYXJnZXQtPkZyb250ZW5kKTsKLSAg
ICBQWEVOVkJEX0JMT0NLUklORyAgIEJsb2NrUmluZyA9IEZyb250ZW5kR2V0QmxvY2tSaW5nKFRh
cmdldC0+RnJvbnRlbmQpOworICAgIFBYRU5WQkRfUklORyAgICAgICAgUmluZyA9IEZyb250ZW5k
R2V0UmluZyhUYXJnZXQtPkZyb250ZW5kKTsKIAogICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZUYXJn
ZXQtPkxvY2ssICZJcnFsKTsKICAgICArK1RhcmdldC0+UGF1c2VkOwpAQCAtMTA4MCw5ICsxMDc5
LDkgQEAgX19UYXJnZXRQYXVzZURhdGFQYXRoKAogICAgICAgICBpZiAoVGltZW91dCAmJiBDb3Vu
dCA+IDE4MDAwMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBLZVJhaXNlSXJxbChESVNQ
QVRDSF9MRVZFTCwgJklycWwpOwotICAgICAgICBCbG9ja1JpbmdQb2xsKEJsb2NrUmluZyk7Cisg
ICAgICAgIFJpbmdQb2xsKFJpbmcpOwogICAgICAgICBLZUxvd2VySXJxbChJcnFsKTsKLSAgICAg
ICAgTm90aWZpZXJTZW5kKE5vdGlmaWVyKTsgICAgICAgICAvLyBsZXQgYmFja2VuZCBrbm93IGl0
IG5lZWRzIHRvIGRvIHNvbWUgd29yaworICAgICAgICBSaW5nU2VuZChSaW5nKTsgICAgICAgICAv
LyBsZXQgYmFja2VuZCBrbm93IGl0IG5lZWRzIHRvIGRvIHNvbWUgd29yawogICAgICAgICBTdG9y
UG9ydFN0YWxsRXhlY3V0aW9uKDEwMDApOyAgIC8vIDEwMDAgbWljcm8tc2Vjb25kcwogICAgICAg
ICArK0NvdW50OwogICAgIH0KQEAgLTExODAsNyArMTE3OSw3IEBAIFRhcmdldFN1Ym1pdFByZXBh
cmVkKAogICAgIF9faW4gUFhFTlZCRF9UQVJHRVQgICAgICAgICAgICAgVGFyZ2V0CiAgICAgKQog
ewotICAgIFBYRU5WQkRfQkxPQ0tSSU5HICAgQmxvY2tSaW5nID0gRnJvbnRlbmRHZXRCbG9ja1Jp
bmcoVGFyZ2V0LT5Gcm9udGVuZCk7CisgICAgUFhFTlZCRF9SSU5HICAgUmluZyA9IEZyb250ZW5k
R2V0UmluZyhUYXJnZXQtPkZyb250ZW5kKTsKICAgICBpZiAoVGFyZ2V0SXNQYXVzZWQoVGFyZ2V0
KSkgewogICAgICAgICBpZiAoUXVldWVDb3VudCgmVGFyZ2V0LT5QcmVwYXJlZFJlcXMpKQogICAg
ICAgICAgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6IFBhdXNlZCwgbm90IHN1Ym1pdHRpbmcgbmV3
IHJlcXVlc3RzICgldSlcbiIsCkBAIC0xMjAyLDcgKzEyMDEsNyBAQCBUYXJnZXRTdWJtaXRQcmVw
YXJlZCgKICAgICAgICAgUXVldWVBcHBlbmQoJlRhcmdldC0+U3VibWl0dGVkUmVxcywgJlJlcXVl
c3QtPkVudHJ5KTsKICAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7CiAKLSAgICAgICAgaWYgKEJs
b2NrUmluZ1N1Ym1pdChCbG9ja1JpbmcsIFJlcXVlc3QpKQorICAgICAgICBpZiAoUmluZ1N1Ym1p
dChSaW5nLCBSZXF1ZXN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFF1ZXVl
UmVtb3ZlKCZUYXJnZXQtPlN1Ym1pdHRlZFJlcXMsICZSZXF1ZXN0LT5FbnRyeSk7CkBAIC0xMzkz
LDcgKzEzOTIsNyBAQCBUYXJnZXRSZWFkV3JpdGUoCiB7CiAgICAgUFhFTlZCRF9ESVNLSU5GTyAg
ICBEaXNrSW5mbyA9IEZyb250ZW5kR2V0RGlza0luZm8oVGFyZ2V0LT5Gcm9udGVuZCk7CiAgICAg
UFhFTlZCRF9TUkJFWFQgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoU3JiKTsKLSAgICBQWEVOVkJE
X05PVElGSUVSICAgIE5vdGlmaWVyID0gRnJvbnRlbmRHZXROb3RpZmllcihUYXJnZXQtPkZyb250
ZW5kKTsKKyAgICBQWEVOVkJEX1JJTkcgICAgICAgIFJpbmcgPSBGcm9udGVuZEdldFJpbmcoVGFy
Z2V0LT5Gcm9udGVuZCk7CiAKICAgICBpZiAoRnJvbnRlbmRHZXRDYXBzKFRhcmdldC0+RnJvbnRl
bmQpLT5Db25uZWN0ZWQgPT0gRkFMU0UpIHsKICAgICAgICAgVHJhY2UoIlRhcmdldFslZF0gOiBO
b3QgUmVhZHksIGZhaWwgU1JCXG4iLCBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpKTsKQEAgLTE0
MDksNyArMTQwOCw3IEBAIFRhcmdldFJlYWRXcml0ZSgKICAgICB9CiAKICAgICBRdWV1ZUFwcGVu
ZCgmVGFyZ2V0LT5GcmVzaFNyYnMsICZTcmJFeHQtPkVudHJ5KTsKLSAgICBOb3RpZmllcktpY2so
Tm90aWZpZXIpOworICAgIFJpbmdLaWNrKFJpbmcpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpA
QCAtMTQyMiw3ICsxNDIxLDcgQEAgVGFyZ2V0U3luY0NhY2hlKAogICAgICkKIHsKICAgICBQWEVO
VkJEX1NSQkVYVCAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOwotICAgIFBYRU5WQkRfTk9U
SUZJRVIgICAgTm90aWZpZXIgPSBGcm9udGVuZEdldE5vdGlmaWVyKFRhcmdldC0+RnJvbnRlbmQp
OworICAgIFBYRU5WQkRfUklORyAgICAgICAgUmluZyA9IEZyb250ZW5kR2V0UmluZyhUYXJnZXQt
PkZyb250ZW5kKTsKIAogICAgIGlmIChGcm9udGVuZEdldENhcHMoVGFyZ2V0LT5Gcm9udGVuZCkt
PkNvbm5lY3RlZCA9PSBGQUxTRSkgewogICAgICAgICBUcmFjZSgiVGFyZ2V0WyVkXSA6IE5vdCBS
ZWFkeSwgZmFpbCBTUkJcbiIsIFRhcmdldEdldFRhcmdldElkKFRhcmdldCkpOwpAQCAtMTQzOSw3
ICsxNDM4LDcgQEAgVGFyZ2V0U3luY0NhY2hlKAogICAgIH0KIAogICAgIFF1ZXVlQXBwZW5kKCZU
YXJnZXQtPkZyZXNoU3JicywgJlNyYkV4dC0+RW50cnkpOwotICAgIE5vdGlmaWVyS2ljayhOb3Rp
Zmllcik7CisgICAgUmluZ0tpY2soUmluZyk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0x
NDUyLDcgKzE0NTEsNyBAQCBUYXJnZXRVbm1hcCgKICAgICApCiB7CiAgICAgUFhFTlZCRF9TUkJF
WFQgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoU3JiKTsKLSAgICBQWEVOVkJEX05PVElGSUVSICAg
IE5vdGlmaWVyID0gRnJvbnRlbmRHZXROb3RpZmllcihUYXJnZXQtPkZyb250ZW5kKTsKKyAgICBQ
WEVOVkJEX1JJTkcgICAgICAgIFJpbmcgPSBGcm9udGVuZEdldFJpbmcoVGFyZ2V0LT5Gcm9udGVu
ZCk7CiAKICAgICBpZiAoRnJvbnRlbmRHZXRDYXBzKFRhcmdldC0+RnJvbnRlbmQpLT5Db25uZWN0
ZWQgPT0gRkFMU0UpIHsKICAgICAgICAgVHJhY2UoIlRhcmdldFslZF0gOiBOb3QgUmVhZHksIGZh
aWwgU1JCXG4iLCBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpKTsKQEAgLTE0NjgsNyArMTQ2Nyw3
IEBAIFRhcmdldFVubWFwKAogICAgIH0KIAogICAgIFF1ZXVlQXBwZW5kKCZUYXJnZXQtPkZyZXNo
U3JicywgJlNyYkV4dC0+RW50cnkpOwotICAgIE5vdGlmaWVyS2ljayhOb3RpZmllcik7CisgICAg
UmluZ0tpY2soUmluZyk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0xODkzLDcgKzE4OTIs
NyBAQCBUYXJnZXRGbHVzaCgKICAgICApCiB7CiAgICAgUXVldWVBcHBlbmQoJlRhcmdldC0+U2h1
dGRvd25TcmJzLCAmU3JiRXh0LT5FbnRyeSk7Ci0gICAgTm90aWZpZXJLaWNrKEZyb250ZW5kR2V0
Tm90aWZpZXIoVGFyZ2V0LT5Gcm9udGVuZCkpOworICAgIFJpbmdLaWNrKEZyb250ZW5kR2V0Umlu
ZyhUYXJnZXQtPkZyb250ZW5kKSk7CiB9CiAKIFZPSUQKQEAgLTE5MDMsNyArMTkwMiw3IEBAIFRh
cmdldFNodXRkb3duKAogICAgICkKIHsKICAgICBRdWV1ZUFwcGVuZCgmVGFyZ2V0LT5TaHV0ZG93
blNyYnMsICZTcmJFeHQtPkVudHJ5KTsKLSAgICBOb3RpZmllcktpY2soRnJvbnRlbmRHZXROb3Rp
ZmllcihUYXJnZXQtPkZyb250ZW5kKSk7CisgICAgUmluZ0tpY2soRnJvbnRlbmRHZXRSaW5nKFRh
cmdldC0+RnJvbnRlbmQpKTsKIH0KIAogVk9JRApkaWZmIC0tZ2l0IGEvdnMyMDE1L3hlbnZiZC94
ZW52YmQudmN4cHJvaiBiL3ZzMjAxNS94ZW52YmQveGVudmJkLnZjeHByb2oKaW5kZXggZjViOWNm
Ny4uODI3NDlhZCAxMDA2NDQKLS0tIGEvdnMyMDE1L3hlbnZiZC94ZW52YmQudmN4cHJvagorKysg
Yi92czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9qCkBAIC03Myw4ICs3Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL3Bkb2lucXVpcnkuYyIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW52YmQvcXVldWUuYyIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW52YmQvdGhyZWFkLmMiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL25vdGlmaWVyLmMiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL2Jsb2NrcmluZy5jIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbnZiZC9yaW5nLmMiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL2dyYW50ZXIuYyIgLz4KICAgPC9JdGVtR3JvdXA+
CiAgIDxJdGVtR3JvdXA+Ci0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJp
bi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:59:04 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:59:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhOy-00020w-Js; Wed, 20 Sep 2017 15:59:04 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhOw-0001zg-Nm
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:59:02 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 E6/B0-03414-64092C95; Wed, 20 Sep 2017 15:59:02 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprMIsWRWlGSWpSXmKPExsXitHRDpK7rhEO
 RBlNfylr8WZzowOhx+MMVlgDGKNbMvKT8igTWjEPrLzAW/E+puHnvFVsD413XLkYODgkBf4mX
 /YVdjJwcbAKyEh9XfmYGsUUE1CX2fd7KBGIzC6hJXN/fxQpiCwsYSny/upsJpJVFQFWi+7cYS
 JhXwFLixPZOsFYJATmJyYsvMYLYnAJWEo9nzGAGKRcCqnl/zBckLCSgJPFt8QtmiFZBiZMzn7
 BAbJKQOPjiBfMERt5ZSFKzkKQWMDKtYtQoTi0qSy3SNTTWSyrKTM8oyU3MzNE1NDDTy00tLk5
 MT81JTCrWS87P3cQIDBoGINjB+GVZwCFGSQ4mJVHe6uMHI4X4kvJTKjMSizPii0pzUosPMcpw
 cChJ8D4+D5QTLEpNT61Iy8wBhi9MWoKDR0mEl/MCUJq3uCAxtzgzHSJ1itGY413TjT9MHB037
 /5hEmLJy89LlRLnPQgySQCkNKM0D24QLK4uMcpKCfMyAp0mxFOQWpSbWYIq/4pRnINRSZiXC2
 QhT2ZeCdy+V0CnMAGdkr3hAMgpJYkIKakGRt6NeaHXL2bKZoZOnxTOveIE99trXALHkrifflf
 3ulIUfd6Pu32yeNDn9j8MafNfOy1Mu3w2xenYIjs9pVcXQw40HnNenBhwb/6fHdFK819t/7ZZ
 PPz5iVDGmK2H0kwerZm/pti2Oy8z56Rpi5Qc+9t1v98wSK2uebJk0WrD6HDjZ0divoVYpiuxF
 GckGmoxFxUnAgAHwDngpgIAAA==
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-15.tower-21.messagelabs.com!1505923139!83660921!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5989 invoked from network); 20 Sep 2017 15:59:00 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-15.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:59:00 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="440535937"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:23 +0100
Message-ID: <20170920155325.5860-6-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 5/7] Tidy up GranterDebugCallback
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKRG9udCBjaGFpbiBkZWJ1
ZyBjYWxsYmFjayBmcm9tIEZyb250ZW5kRGVidWdDYWxsYmFjaywKcmVnaXN0ZXIgYSBkZWJ1ZyBj
YWxsYmFjayBpbnRlcm5hbGx5IHRvIHRoZSBHcmFudGVyCgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQogc3JjL3hlbnZiZC9mcm9udGVuZC5jIHwg
ICA2ICstLQogc3JjL3hlbnZiZC9ncmFudGVyLmMgIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMveGVudmJkL2dyYW50ZXIuaCAgfCAg
NDYgKysrKysrKy0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwg
ODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3Jj
L3hlbnZiZC9mcm9udGVuZC5jCmluZGV4IGJmZmUzZDcuLjMzZGZkMTggMTAwNjQ0Ci0tLSBhL3Ny
Yy94ZW52YmQvZnJvbnRlbmQuYworKysgYi9zcmMveGVudmJkL2Zyb250ZW5kLmMKQEAgLTEwNjcs
NyArMTA2Nyw3IEBAIEZyb250ZW5kQ29ubmVjdCgKICAgICBYZW5idXNTdGF0ZSAgICAgQmFja2Vu
ZFN0YXRlOwogCiAgICAgLy8gQWxsb2MgUmluZywgQ3JlYXRlIEV2dGNobiwgR250dGFiIG1hcAot
ICAgIFN0YXR1cyA9IEdyYW50ZXJDb25uZWN0KEZyb250ZW5kLT5HcmFudGVyLCBGcm9udGVuZC0+
QmFja2VuZERvbWFpbik7CisgICAgU3RhdHVzID0gR3JhbnRlckNvbm5lY3QoRnJvbnRlbmQtPkdy
YW50ZXIpOwogICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQogICAgICAgICBnb3RvIGZhaWwx
OwogCkBAIC0xMDg5LDcgKzEwODksNyBAQCBGcm9udGVuZENvbm5lY3QoCiAgICAgICAgIGlmICgh
TlRfU1VDQ0VTUyhTdGF0dXMpKQogICAgICAgICAgICAgZ290byBhYm9ydDsKIAotICAgICAgICBT
dGF0dXMgPSBHcmFudGVyU3RvcmVXcml0ZShGcm9udGVuZC0+R3JhbnRlciwgVHJhbnNhY3Rpb24s
IEZyb250ZW5kLT5Gcm9udGVuZFBhdGgpOworICAgICAgICBTdGF0dXMgPSBHcmFudGVyU3RvcmVX
cml0ZShGcm9udGVuZC0+R3JhbnRlciwgVHJhbnNhY3Rpb24pOwogICAgICAgICBpZiAoIU5UX1NV
Q0NFU1MoU3RhdHVzKSkKICAgICAgICAgICAgIGdvdG8gYWJvcnQ7CiAKQEAgLTE0OTUsOCArMTQ5
NSw2IEBAIEZyb250ZW5kRGVidWdDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgRnJvbnRlbmQt
PkRpc2tJbmZvLlNlY3RvclNpemUsCiAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5EaXNrSW5m
by5QaHlzU2VjdG9yU2l6ZSwKICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRpc2tJbmZvLkRp
c2tJbmZvKTsKLQotICAgIEdyYW50ZXJEZWJ1Z0NhbGxiYWNrKEZyb250ZW5kLT5HcmFudGVyLCAm
RnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlKTsKIH0KIAogX19jaGVja1JldHVybgpkaWZmIC0tZ2l0
IGEvc3JjL3hlbnZiZC9ncmFudGVyLmMgYi9zcmMveGVudmJkL2dyYW50ZXIuYwppbmRleCBmZjdh
NTc1Li44OTA0MGFjIDEwMDY0NAotLS0gYS9zcmMveGVudmJkL2dyYW50ZXIuYworKysgYi9zcmMv
eGVudmJkL2dyYW50ZXIuYwpAQCAtMjksMjUgKzI5LDMyIEBACiAgKiBTVUNIIERBTUFHRS4KICAq
LyAKIAorI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVkZSA8bnRzdHJzYWZlLmg+CisKKyNpbmNs
dWRlIDxkZWJ1Z19pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxnbnR0YWJfaW50ZXJmYWNlLmg+CisK
KyNpbmNsdWRlICJncmFudGVyLmgiCiAjaW5jbHVkZSAiZnJvbnRlbmQuaCIKICNpbmNsdWRlICJ0
YXJnZXQuaCIKICNpbmNsdWRlICJhZGFwdGVyLmgiCisKICNpbmNsdWRlICJ1dGlsLmgiCiAjaW5j
bHVkZSAiZGVidWcuaCIKLSNpbmNsdWRlICJ0aHJlYWQuaCIKLSNpbmNsdWRlIDxnbnR0YWJfaW50
ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8bnRzdHJzYWZlLmg+CisjaW5jbHVkZSAiYXNzZXJ0LmgiCiAK
IHN0cnVjdCBfWEVOVkJEX0dSQU5URVIgewogICAgIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgICAg
ICAgICAgRnJvbnRlbmQ7CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBDb25u
ZWN0ZWQ7CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVkOwogCisg
ICAgWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSAgICAgICAgICBEZWJ1Z0ludGVyZmFjZTsKICAgICBY
RU5CVVNfR05UVEFCX0lOVEVSRkFDRSAgICAgICAgIEdudHRhYkludGVyZmFjZTsKKyAgICBQWEVO
QlVTX0RFQlVHX0NBTExCQUNLICAgICAgICAgIERlYnVnQ2FsbGJhY2s7CiAgICAgUFhFTkJVU19H
TlRUQUJfQ0FDSEUgICAgICAgICAgICBDYWNoZTsKICAgICBLU1BJTl9MT0NLICAgICAgICAgICAg
ICAgICAgICAgIExvY2s7CiAKLSAgICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAgICAgIEJh
Y2tlbmREb21haW47CiAgICAgTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50
OwogICAgIExPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4aW11bTsKIH07CkBAIC01
NSw3ICs2Miw3IEBAIHN0cnVjdCBfWEVOVkJEX0dSQU5URVIgewogCiBzdGF0aWMgRk9SQ0VJTkxJ
TkUgUFZPSUQKIF9fR3JhbnRlckFsbG9jYXRlKAotICAgIElOICBVTE9ORyAgICAgICAgICAgICAg
ICAgICAgICAgTGVuZ3RoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCiAgICAgKQogewogICAgIHJl
dHVybiBfX0FsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLCBMZW5ndGgsIEdSQU5URVJf
UE9PTF9UQUcpOwpAQCAtNjMsNyArNzAsNyBAQCBfX0dyYW50ZXJBbGxvY2F0ZSgKIAogc3RhdGlj
IEZPUkNFSU5MSU5FIFZPSUQKIF9fR3JhbnRlckZyZWUoCi0gICAgSU4gIFBWT0lEICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXIKKyAgICBJTiAgUFZPSUQgICBCdWZmZXIKICAgICApCiB7CiAg
ICAgaWYgKEJ1ZmZlcikKQEAgLTcyLDExICs3OSwxMSBAQCBfX0dyYW50ZXJGcmVlKAogCiBOVFNU
QVRVUwogR3JhbnRlckNyZWF0ZSgKLSAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgICAg
IEZyb250ZW5kLAotICAgIE9VVCBQWEVOVkJEX0dSQU5URVIqICAgICAgICAgICAgR3JhbnRlcgor
ICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kLAorICAgIE9VVCBQWEVOVkJEX0dS
QU5URVIgICAgICpHcmFudGVyCiAgICAgKQogewotICAgIE5UU1RBVFVTICAgIHN0YXR1czsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CiAKICAgICBzdGF0dXMgPSBTVEFUVVNf
Tk9fTUVNT1JZOwogICAgICpHcmFudGVyID0gX19HcmFudGVyQWxsb2NhdGUoc2l6ZW9mKFhFTlZC
RF9HUkFOVEVSKSk7CkBAIC05NCw3ICsxMDEsNyBAQCBmYWlsMToKIAogVk9JRAogR3JhbnRlckRl
c3Ryb3koCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFudGVyCisgICAg
SU4gIFBYRU5WQkRfR1JBTlRFUiBHcmFudGVyCiAgICAgKQogewogICAgIEdyYW50ZXItPkZyb250
ZW5kID0gTlVMTDsKQEAgLTEwOCwxMCArMTE1LDEwIEBAIEdyYW50ZXJEZXN0cm95KAogc3RhdGlj
IFZPSUQKIF9fZHJ2X3JlcXVpcmVzSVJRTChESVNQQVRDSF9MRVZFTCkKIEdyYW50ZXJBY3F1aXJl
TG9jaygKLSAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICBBcmd1bWVudAorICAgIElOICBQVk9J
RCAgICAgICBBcmd1bWVudAogICAgICkKIHsKLSAgICBQWEVOVkJEX0dSQU5URVIgICAgICAgICBH
cmFudGVyID0gQXJndW1lbnQ7CisgICAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIgPSBBcmd1bWVu
dDsKIAogICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIERJU1BBVENIX0xFVkVM
KTsKIApAQCAtMTIxLDEwICsxMjgsMTAgQEAgR3JhbnRlckFjcXVpcmVMb2NrKAogc3RhdGljIFZP
SUQKIF9fZHJ2X3JlcXVpcmVzSVJRTChESVNQQVRDSF9MRVZFTCkKIEdyYW50ZXJSZWxlYXNlTG9j
aygKLSAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICBBcmd1bWVudAorICAgIElOICBQVk9JRCAg
ICAgICBBcmd1bWVudAogICAgICkKIHsKLSAgICBQWEVOVkJEX0dSQU5URVIgICAgICAgICBHcmFu
dGVyID0gQXJndW1lbnQ7CisgICAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIgPSBBcmd1bWVudDsK
IAogICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIERJU1BBVENIX0xFVkVMKTsK
IApAQCAtMTMyLDM0ICsxMzksNjAgQEAgR3JhbnRlclJlbGVhc2VMb2NrKAogICAgIEtlUmVsZWFz
ZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZHcmFudGVyLT5Mb2NrKTsKIH0KIAorc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIFZPSUQKK0dyYW50ZXJEZWJ1Z0NhbGxiYWNrKAorICAgIElOICBQVk9JRCAg
ICAgICBBcmd1bWVudCwKKyAgICBJTiAgQk9PTEVBTiAgICAgQ3Jhc2hpbmcKKyAgICApCit7Cisg
ICAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIgPSBBcmd1bWVudDsKKworICAgIFVOUkVGRVJFTkNF
RF9QQVJBTUVURVIoQ3Jhc2hpbmcpOworCisgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAg
ICAgICAgICAgICAgJkdyYW50ZXItPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAi
JXMgJXNcbiIsIAorICAgICAgICAgICAgICAgICBHcmFudGVyLT5Db25uZWN0ZWQgPyAiQ09OTkVD
VEVEIiA6ICJESVNDT05ORUNURUQiLAorICAgICAgICAgICAgICAgICBHcmFudGVyLT5FbmFibGVk
ID8gIkVOQUJMRUQiIDogIkRJU0FCTEVEIik7CisgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAg
ICAgICAgICAgICAgICAgJkdyYW50ZXItPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAg
ICAiJWQgLyAlZFxuIiwKKyAgICAgICAgICAgICAgICAgR3JhbnRlci0+Q3VycmVudCwKKyAgICAg
ICAgICAgICAgICAgR3JhbnRlci0+TWF4aW11bSk7CisKKyAgICBHcmFudGVyLT5NYXhpbXVtID0g
R3JhbnRlci0+Q3VycmVudDsKK30KKwogI2RlZmluZSBNQVhOQU1FTEVOICAzMgogCiBOVFNUQVRV
UwogR3JhbnRlckNvbm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBH
cmFudGVyLAotICAgIElOICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZERvbWFp
bgorICAgIElOICBQWEVOVkJEX0dSQU5URVIgR3JhbnRlcgogICAgICkKIHsKLSAgICBQWEVOVkJE
X0FEQVBURVIgQWRhcHRlciA9IFRhcmdldEdldEFkYXB0ZXIoRnJvbnRlbmRHZXRUYXJnZXQoR3Jh
bnRlci0+RnJvbnRlbmQpKTsKLSAgICBDSEFSICAgICAgICBOYW1lW01BWE5BTUVMRU5dOwotICAg
IE5UU1RBVFVTICAgIHN0YXR1czsKKyAgICBQWEVOVkJEX0FEQVBURVIgICAgIEFkYXB0ZXIgPSBU
YXJnZXRHZXRBZGFwdGVyKEZyb250ZW5kR2V0VGFyZ2V0KEdyYW50ZXItPkZyb250ZW5kKSk7Cisg
ICAgQ0hBUiAgICAgICAgICAgICAgICBOYW1lW01BWE5BTUVMRU5dOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOwogCiAgICAgQVNTRVJUKEdyYW50ZXItPkNvbm5lY3RlZCA9PSBGQUxT
RSk7CiAKICAgICBBZGFwdGVyR2V0R250dGFiSW50ZXJmYWNlKEFkYXB0ZXIsICZHcmFudGVyLT5H
bnR0YWJJbnRlcmZhY2UpOworICAgIEFkYXB0ZXJHZXREZWJ1Z0ludGVyZmFjZShBZGFwdGVyLCAm
R3JhbnRlci0+RGVidWdJbnRlcmZhY2UpOwogCiAgICAgc3RhdHVzID0gWEVOQlVTX0dOVFRBQihB
Y3F1aXJlLCAmR3JhbnRlci0+R250dGFiSW50ZXJmYWNlKTsKICAgICBpZiAoIU5UX1NVQ0NFU1Mo
c3RhdHVzKSkKICAgICAgICAgZ290byBmYWlsMTsKIAotICAgIEdyYW50ZXItPkJhY2tlbmREb21h
aW4gPSBCYWNrZW5kRG9tYWluOworICAgIHN0YXR1cyA9IFhFTkJVU19ERUJVRyhBY3F1aXJlLCAm
R3JhbnRlci0+RGVidWdJbnRlcmZhY2UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQor
ICAgICAgICBnb3RvIGZhaWwyOwogCiAgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZBKE5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoTmFtZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrXyV1IiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRUYXJnZXRJZChHcmFudGVyLT5Gcm9udGVuZCkpOwog
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwyOworICAgICAg
ICBnb3RvIGZhaWwzOwogCiAgICAgc3RhdHVzID0gWEVOQlVTX0dOVFRBQihDcmVhdGVDYWNoZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFudGVyLT5HbnR0YWJJbnRlcmZhY2UsCkBA
IC0xNzAsMzcgKzIwMyw1OCBAQCBHcmFudGVyQ29ubmVjdCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdyYW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhbnRlci0+Q2Fj
aGUpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwzOwor
ICAgICAgICBnb3RvIGZhaWw0OworCisgICAgc3RhdHVzID0gWEVOQlVTX0RFQlVHKFJlZ2lzdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhbnRlci0+RGVidWdJbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fTU9EVUxFX18ifEdSQU5URVIiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHcmFudGVyRGVidWdDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3JhbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkdyYW50ZXItPkRl
YnVnQ2FsbGJhY2spOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3Rv
IGZhaWw1OwogCiAgICAgR3JhbnRlci0+Q29ubmVjdGVkID0gVFJVRTsKICAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7CiAKK2ZhaWw1OgorICAgIEVycm9yKCJmYWlsNVxuIik7CisgICAgWEVOQlVT
X0dOVFRBQihEZXN0cm95Q2FjaGUsCisgICAgICAgICAgICAgICAgICAmR3JhbnRlci0+R250dGFi
SW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgR3JhbnRlci0+Q2FjaGUpOworICAgIEdyYW50
ZXItPkNhY2hlID0gTlVMTDsKK2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CiBmYWlsMzoK
KyAgICBFcnJvcigiZmFpbDNcbiIpOworICAgIFhFTkJVU19ERUJVRyhSZWxlYXNlLCAmR3JhbnRl
ci0+RGVidWdJbnRlcmZhY2UpOwogZmFpbDI6Ci0gICAgR3JhbnRlci0+QmFja2VuZERvbWFpbiA9
IDA7CisgICAgRXJyb3IoImZhaWwyXG4iKTsKICAgICBYRU5CVVNfR05UVEFCKFJlbGVhc2UsICZH
cmFudGVyLT5HbnR0YWJJbnRlcmZhY2UpOwotICAgIFJ0bFplcm9NZW1vcnkoJkdyYW50ZXItPkdu
dHRhYkludGVyZmFjZSwgc2l6ZW9mKFhFTkJVU19HTlRUQUJfSU5URVJGQUNFKSk7CiBmYWlsMToK
KyAgICBFcnJvcigiZmFpbDEgJTA4eFxuIiwgc3RhdHVzKTsKKworICAgIFJ0bFplcm9NZW1vcnko
JkdyYW50ZXItPkRlYnVnSW50ZXJmYWNlLCBzaXplb2YoWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSkp
OworICAgIFJ0bFplcm9NZW1vcnkoJkdyYW50ZXItPkdudHRhYkludGVyZmFjZSwgc2l6ZW9mKFhF
TkJVU19HTlRUQUJfSU5URVJGQUNFKSk7CisKICAgICByZXR1cm4gc3RhdHVzOwogfQogCiBOVFNU
QVRVUwogR3JhbnRlclN0b3JlV3JpdGUoCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAg
ICAgICBHcmFudGVyLAotICAgIElOICBQWEVOQlVTX1NUT1JFX1RSQU5TQUNUSU9OICAgVHJhbnNh
Y3Rpb24sCi0gICAgSU4gIFBDSEFSICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFBhdGgK
KyAgICBJTiAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIsCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICBUcmFuc2FjdGlvbgogICAgICkKIHsKICAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEdyYW50
ZXIpOwogICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoVHJhbnNhY3Rpb24pOwotICAgIFVOUkVG
RVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmRQYXRoKTsKIAogICAgIHJldHVybiBTVEFUVVNfU1VD
Q0VTUzsKIH0KIAogVk9JRAogR3JhbnRlckVuYWJsZSgKLSAgICBJTiAgUFhFTlZCRF9HUkFOVEVS
ICAgICAgICAgICAgIEdyYW50ZXIKKyAgICBJTiAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIKICAg
ICApCiB7CiAgICAgQVNTRVJUKEdyYW50ZXItPkVuYWJsZWQgPT0gRkFMU0UpOwpAQCAtMjEwLDcg
KzI2NCw3IEBAIEdyYW50ZXJFbmFibGUoCiAKIFZPSUQKIEdyYW50ZXJEaXNhYmxlKAotICAgIElO
ICBQWEVOVkJEX0dSQU5URVIgICAgICAgICAgICAgR3JhbnRlcgorICAgIElOICBQWEVOVkJEX0dS
QU5URVIgR3JhbnRlcgogICAgICkKIHsKICAgICBBU1NFUlQoR3JhbnRlci0+RW5hYmxlZCA9PSBU
UlVFKTsKQEAgLTIyMCw3ICsyNzQsNyBAQCBHcmFudGVyRGlzYWJsZSgKIAogVk9JRAogR3JhbnRl
ckRpc2Nvbm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFudGVy
CisgICAgSU4gIFBYRU5WQkRfR1JBTlRFUiBHcmFudGVyCiAgICAgKQogewogICAgIEFTU0VSVChH
cmFudGVyLT5Db25uZWN0ZWQgPT0gVFJVRSk7CkBAIC0yMjgsMzUgKzI4MiwyNSBAQCBHcmFudGVy
RGlzY29ubmVjdCgKICAgICBBU1NFUlQzUyhHcmFudGVyLT5DdXJyZW50LCA9PSwgMCk7CiAgICAg
R3JhbnRlci0+TWF4aW11bSA9IDA7CiAKKyAgICBYRU5CVVNfREVCVUcoRGVyZWdpc3RlciwKKyAg
ICAgICAgICAgICAgICAgJkdyYW50ZXItPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAg
ICBHcmFudGVyLT5EZWJ1Z0NhbGxiYWNrKTsKKyAgICBHcmFudGVyLT5EZWJ1Z0NhbGxiYWNrID0g
TlVMTDsKKwogICAgIFhFTkJVU19HTlRUQUIoRGVzdHJveUNhY2hlLAogICAgICAgICAgICAgICAg
ICAgJkdyYW50ZXItPkdudHRhYkludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgIEdyYW50ZXIt
PkNhY2hlKTsKICAgICBHcmFudGVyLT5DYWNoZSA9IE5VTEw7CiAKKyAgICBYRU5CVVNfREVCVUco
UmVsZWFzZSwgJkdyYW50ZXItPkRlYnVnSW50ZXJmYWNlKTsKICAgICBYRU5CVVNfR05UVEFCKFJl
bGVhc2UsICZHcmFudGVyLT5HbnR0YWJJbnRlcmZhY2UpOworCisgICAgUnRsWmVyb01lbW9yeSgm
R3JhbnRlci0+RGVidWdJbnRlcmZhY2UsIHNpemVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7
CiAgICAgUnRsWmVyb01lbW9yeSgmR3JhbnRlci0+R250dGFiSW50ZXJmYWNlLCBzaXplb2YoWEVO
QlVTX0dOVFRBQl9JTlRFUkZBQ0UpKTsKIAotICAgIEdyYW50ZXItPkJhY2tlbmREb21haW4gPSAw
OwogICAgIEdyYW50ZXItPkNvbm5lY3RlZCA9IEZBTFNFOwogfQogCi1WT0lECi1HcmFudGVyRGVi
dWdDYWxsYmFjaygKLSAgICBJTiAgUFhFTlZCRF9HUkFOVEVSICAgICAgICAgICAgIEdyYW50ZXIs
Ci0gICAgSU4gIFBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICBEZWJ1ZwotICAgICkKLXsKLSAg
ICBYRU5CVVNfREVCVUcoUHJpbnRmLCBEZWJ1ZywKLSAgICAgICAgICAgICAgICAgIkdSQU5URVI6
ICVzICVzXG4iLCAKLSAgICAgICAgICAgICAgICAgR3JhbnRlci0+Q29ubmVjdGVkID8gIkNPTk5F
Q1RFRCIgOiAiRElTQ09OTkVDVEVEIiwKLSAgICAgICAgICAgICAgICAgR3JhbnRlci0+RW5hYmxl
ZCA/ICJFTkFCTEVEIiA6ICJESVNBQkxFRCIpOwotICAgIFhFTkJVU19ERUJVRyhQcmludGYsIERl
YnVnLAotICAgICAgICAgICAgICAgICAiR1JBTlRFUjogJWQgLyAlZFxuIiwKLSAgICAgICAgICAg
ICAgICAgR3JhbnRlci0+Q3VycmVudCwKLSAgICAgICAgICAgICAgICAgR3JhbnRlci0+TWF4aW11
bSk7Ci0gICAgR3JhbnRlci0+TWF4aW11bSA9IEdyYW50ZXItPkN1cnJlbnQ7Ci19Ci0KIE5UU1RB
VFVTCiBHcmFudGVyR2V0KAogICAgIElOICBQWEVOVkJEX0dSQU5URVIgICAgIEdyYW50ZXIsCkBA
IC0yNzcsNyArMzIxLDcgQEAgR3JhbnRlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZHcmFudGVyLT5HbnR0YWJJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
cmFudGVyLT5DYWNoZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR3JhbnRlci0+QmFja2VuZERvbWFpbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChVU0hPUlQpRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKEdyYW50ZXIt
PkZyb250ZW5kKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBmbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJkVu
dHJ5KTsKQEAgLTI5Miw3ICszMzYsOSBAQCBHcmFudGVyR2V0KAogICAgIHJldHVybiBTVEFUVVNf
U1VDQ0VTUzsKIAogZmFpbDI6CisgICAgRXJyb3IoImZhaWwyXG4iKTsKIGZhaWwxOgorICAgIEVy
cm9yKCJmYWlsMSAlMDh4XG4iLCBzdGF0dXMpOwogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKZGlm
ZiAtLWdpdCBhL3NyYy94ZW52YmQvZ3JhbnRlci5oIGIvc3JjL3hlbnZiZC9ncmFudGVyLmgKaW5k
ZXggZGU3NzAxYy4uYjg0MGMxMyAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9ncmFudGVyLmgKKysr
IGIvc3JjL3hlbnZiZC9ncmFudGVyLmgKQEAgLTMyLDc1ICszMiw2NyBAQAogI2lmbmRlZiBfWEVO
VkJEX0dSQU5URVJfSAogI2RlZmluZSBfWEVOVkJEX0dSQU5URVJfSAogCisjaW5jbHVkZSA8bnRk
ZGsuaD4KKwogdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9HUkFOVEVSIFhFTlZCRF9HUkFOVEVSLCAq
UFhFTlZCRF9HUkFOVEVSOwogCi0jaW5jbHVkZSA8ZGVidWdfaW50ZXJmYWNlLmg+Ci0jaW5jbHVk
ZSA8c3RvcmVfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSAiZnJvbnRlbmQuaCIKIAogZXh0ZXJuIE5U
U1RBVFVTCiBHcmFudGVyQ3JlYXRlKAotICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgICAgICAg
ICAgRnJvbnRlbmQsCi0gICAgT1VUIFBYRU5WQkRfR1JBTlRFUiogICAgICAgICAgICBHcmFudGVy
CisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQsCisgICAgT1VUIFBYRU5WQkRf
R1JBTlRFUiAgICAgKkdyYW50ZXIKICAgICApOwogCiBleHRlcm4gVk9JRAogR3JhbnRlckRlc3Ry
b3koCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFudGVyCisgICAgSU4g
IFBYRU5WQkRfR1JBTlRFUiAgICAgR3JhbnRlcgogICAgICk7CiAKIGV4dGVybiBOVFNUQVRVUwog
R3JhbnRlckNvbm5lY3QoCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFu
dGVyLAotICAgIElOICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZERvbWFpbgor
ICAgIElOICBQWEVOVkJEX0dSQU5URVIgICAgIEdyYW50ZXIKICAgICApOwogCiBleHRlcm4gTlRT
VEFUVVMKIEdyYW50ZXJTdG9yZVdyaXRlKAotICAgIElOICBQWEVOVkJEX0dSQU5URVIgICAgICAg
ICAgICAgR3JhbnRlciwKLSAgICBJTiAgUFhFTkJVU19TVE9SRV9UUkFOU0FDVElPTiAgIFRyYW5z
YWN0aW9uLAotICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRQYXRo
CisgICAgSU4gIFBYRU5WQkRfR1JBTlRFUiBHcmFudGVyLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgVHJhbnNhY3Rpb24KICAgICApOwogCiBleHRlcm4gVk9JRAogR3JhbnRlckVuYWJsZSgKLSAg
ICBJTiAgUFhFTlZCRF9HUkFOVEVSICAgICAgICAgICAgIEdyYW50ZXIKKyAgICBJTiAgUFhFTlZC
RF9HUkFOVEVSIEdyYW50ZXIKICAgICApOwogCiBleHRlcm4gVk9JRAogR3JhbnRlckRpc2FibGUo
Ci0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFudGVyCisgICAgSU4gIFBY
RU5WQkRfR1JBTlRFUiBHcmFudGVyCiAgICAgKTsKIAogZXh0ZXJuIFZPSUQKIEdyYW50ZXJEaXNj
b25uZWN0KAotICAgIElOICBQWEVOVkJEX0dSQU5URVIgICAgICAgICAgICAgR3JhbnRlcgotICAg
ICk7Ci0KLWV4dGVybiBWT0lECi1HcmFudGVyRGVidWdDYWxsYmFjaygKLSAgICBJTiAgUFhFTlZC
RF9HUkFOVEVSICAgICAgICAgICAgIEdyYW50ZXIsCi0gICAgSU4gIFBYRU5CVVNfREVCVUdfSU5U
RVJGQUNFICAgICBEZWJ1ZworICAgIElOICBQWEVOVkJEX0dSQU5URVIgR3JhbnRlcgogICAgICk7
CiAKIGV4dGVybiBOVFNUQVRVUwogR3JhbnRlckdldCgKLSAgICBJTiAgUFhFTlZCRF9HUkFOVEVS
ICAgICAgICAgICAgIEdyYW50ZXIsCi0gICAgSU4gIFBGTl9OVU1CRVIgICAgICAgICAgICAgICAg
ICBQZm4sCi0gICAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBSZWFkT25seSwKLSAg
ICBPVVQgUFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpIYW5kbGUKKyAgICBJTiAgUFhFTlZC
RF9HUkFOVEVSIEdyYW50ZXIsCisgICAgSU4gIFBGTl9OVU1CRVIgICAgICBQZm4sCisgICAgSU4g
IEJPT0xFQU4gICAgICAgICBSZWFkT25seSwKKyAgICBPVVQgUFZPSUQgICAgICAgICAgICpIYW5k
bGUKICAgICApOwogCiBleHRlcm4gVk9JRAogR3JhbnRlclB1dCgKLSAgICBJTiAgUFhFTlZCRF9H
UkFOVEVSICAgICAgICAgICAgIEdyYW50ZXIsCi0gICAgSU4gIFBWT0lEICAgICAgICAgICAgICAg
ICAgICAgICBIYW5kbGUKKyAgICBJTiAgUFhFTlZCRF9HUkFOVEVSIEdyYW50ZXIsCisgICAgSU4g
IFBWT0lEICAgICAgICAgICBIYW5kbGUKICAgICApOwogCiBleHRlcm4gVUxPTkcKIEdyYW50ZXJS
ZWZlcmVuY2UoCi0gICAgSU4gIFBYRU5WQkRfR1JBTlRFUiAgICAgICAgICAgICBHcmFudGVyLAot
ICAgIElOICBQVk9JRCAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlCisgICAgSU4gIFBYRU5W
QkRfR1JBTlRFUiBHcmFudGVyLAorICAgIElOICBQVk9JRCAgICAgICAgICAgSGFuZGxlCiAgICAg
KTsKIAogI2VuZGlmIC8vIF9YRU5WQkRfR1JBTlRFUl9ICi0tIAoyLjguMwoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:59:04 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:59:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhOy-00021E-LM; Wed, 20 Sep 2017 15:59:04 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhOx-0001zj-7K
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:59:03 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
 3A/7D-02048-64092C95; Wed, 20 Sep 2017 15:59:02 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRWlGSWpSXmKPExsXitHRDpK7ThEO
 RBhenq1v8WZzowOhx+MMVlgDGKNbMvKT8igTWjK0HP7MUrN7EVLHx4nfmBsa9Dxi7GDk5JAT8
 Jfb8mQRmswnISnxc+ZkZxBYRUJfY93krE4jNLKAmcX1/FyuILSxgIbFr4yewehYBVYnZs9eA1
 fMKWErcfPwXaqacxOTFl8BsTgEricczZgDVcHAIAdW8P+YLEhYSUJL4tvgFVKugxMmZT1ggVk
 lIHHzxgnkCI+8sJKlZSFILGJlWMWoUpxaVpRbpGprrJRVlpmeU5CZm5ugaGhjr5aYWFyemp+Y
 kJhXrJefnbmIEBg8DEOxgfHna8xCjJAeTkiiv+ZKDkUJ8SfkplRmJxRnxRaU5qcWHGGU4OJQk
 eAuWAeUEi1LTUyvSMnOAYQyTluDgURLhdQRJ8xYXJOYWZ6ZDpE4x2nMc23T5DxNHx827QHITm
 Nzw/cEfJiGWvPy8VClxXhuQNgGQtozSPLihsLi7xCgrJczLCHSmEE9BalFuZgmq/CtGcQ5GJW
 HeNpApPJl5JXC7XwGdxQR0VvaGAyBnlSQipKQaGLXZrJIsDNfb69lc5tj+9+muuv5gWY7aRR1
 2TMIvr1mpWfAl6ds1WO55aPy+RNtfXU3nccTBinnZTt53y/56OHMl7dbcpDMj72Dnc2u59lLt
 fXkKrG6du525dG0lBax3Z7B2Xp/e5C4RuTrj5P1prEyPb1UWH1wb3Pn+3+4DXiJHTFn0zuQqs
 RRnJBpqMRcVJwIAmecDo7YCAAA=
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1505923136!84799745!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63562 invoked from network); 20 Sep 2017 15:58:57 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:58:57 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="440535942"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:24 +0100
Message-ID: <20170920155325.5860-7-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 6/7] Move Inquiry handling into target.c
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKUmVtb3ZlcyBwZG9pbnF1
aXJ5IGFuZCBpdHMgb3BhcXVlIGlucXVpcnkgcG9pbnRlciBpbiBmYXZvdXIgb2YKbWFraW5nIHRh
cmdldC5jIHRoZSBsb2NhdGlvbiBvZiBhbGwgdGFyZ2V0IFNSQiBoYW5kbGVycy4KUmVtb3ZlcyBh
IFhlblNlcnZlciBzcGVjaWZpYyBleHRlbnNpb24gdG8gdGhlIHBhZ2U4MyBpbnF1aXJ5IGRhdGEu
CgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQog
c3JjL3hlbnZiZC9iYXNlNjQuYyAgICAgICAgICB8IDE3NCArKysrKysrKysrKysrKwogc3JjL3hl
bnZiZC9iYXNlNjQuaCAgICAgICAgICB8ICA1MCArKysrCiBzcmMveGVudmJkL2Zyb250ZW5kLmMg
ICAgICAgIHwgIDk1ICsrKysrKy0tCiBzcmMveGVudmJkL2Zyb250ZW5kLmggICAgICAgIHwgICA2
ICstCiBzcmMveGVudmJkL3Bkb2lucXVpcnkuYyAgICAgIHwgNTMwIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy94ZW52YmQvcGRvaW5xdWlyeS5oICAgICAg
fCAgNjQgLS0tLS0tCiBzcmMveGVudmJkL3RhcmdldC5jICAgICAgICAgIHwgMTk3ICsrKysrKysr
KysrKysrKy0KIHZzMjAxNS94ZW52YmQveGVudmJkLnZjeHByb2ogfCAgIDIgKy0KIDggZmlsZXMg
Y2hhbmdlZCwgNDk2IGluc2VydGlvbnMoKyksIDYyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDc1NSBzcmMveGVudmJkL2Jhc2U2NC5jCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbnZi
ZC9iYXNlNjQuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvcGRvaW5xdWlyeS5jCiBk
ZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9wZG9pbnF1aXJ5LmgKCmRpZmYgLS1naXQgYS9z
cmMveGVudmJkL2Jhc2U2NC5jIGIvc3JjL3hlbnZiZC9iYXNlNjQuYwpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwLi5jZWIzMmE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbnZi
ZC9iYXNlNjQuYwpAQCAtMCwwICsxLDE3NCBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lz
dGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICov
IAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKworI2luY2x1ZGUgImJhc2U2NC5oIgorCisjaW5jbHVk
ZSAidXRpbC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKKyNk
ZWZpbmUgQkFTRTY0X1BPT0xfVEFHICc0NkJYJworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQK
K0Jhc2U2NEFsbG9jYXRlKAorICAgIElOICBVTE9ORyAgIFNpemUKKyAgICApCit7CisgICAgUFZP
SUQgICAgICAgQnVmZmVyOworCisgICAgQnVmZmVyID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5v
blBhZ2VkUG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFTRTY0X1BPT0xfVEFHKTsKKyAgICBp
ZiAoQnVmZmVyKQorICAgICAgICBSdGxaZXJvTWVtb3J5KEJ1ZmZlciwgU2l6ZSk7CisKKyAgICBy
ZXR1cm4gQnVmZmVyOworfQorCitWT0lECitCYXNlNjRGcmVlKAorICAgIElOICBQVk9JRCAgIEJ1
ZmZlcgorICAgICkKK3sKKyAgICBFeEZyZWVQb29sV2l0aFRhZyhCdWZmZXIsIEJBU0U2NF9QT09M
X1RBRyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBVQ0hBUgorX19EZWNvZGVDaGFyKAorICAg
IElOICBDSEFSICAgIENoYXIKKyAgICApCit7CisgICAgaWYgKENoYXIgPj0gJ0EnICYmIENoYXIg
PD0gJ1onKSByZXR1cm4gQ2hhciAtICdBJzsKKyAgICBpZiAoQ2hhciA+PSAnYScgJiYgQ2hhciA8
PSAneicpIHJldHVybiBDaGFyIC0gJ2EnICsgMjY7CisgICAgaWYgKENoYXIgPj0gJzAnICYmIENo
YXIgPD0gJzknKSByZXR1cm4gQ2hhciAtICcwJyArIDUyOworICAgIGlmIChDaGFyID09ICcrJykg
ICAgICAgICAgICAgICAgcmV0dXJuIDYyOworICAgIGlmIChDaGFyID09ICcvJykgICAgICAgICAg
ICAgICAgcmV0dXJuIDYzOworICAgIGlmIChDaGFyID09ICc9JykgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIDB4RkY7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBD
SEFSCitfX0RlY29kZSgKKyAgICBJTiAgUFVDSEFSICBEc3QsCisgICAgSU4gIFBDSEFSICAgU3Jj
LAorICAgIElOICBVTE9ORyAgIExlZnQKKyAgICApCit7CisgICAgVUNIQVIgICBWYWx1ZXNbNF07
IAorCisgICAgaWYgKExlZnQgPCA0KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvLyB0YWtl
IDQgU3JjIGNoYXJzIC0+IDEsIDIsIG9yIDMgRGVzdCBieXRlcworICAgIFZhbHVlc1swXSA9IF9f
RGVjb2RlQ2hhcihTcmNbMF0pOworICAgIFZhbHVlc1sxXSA9IF9fRGVjb2RlQ2hhcihTcmNbMV0p
OworICAgIFZhbHVlc1syXSA9IF9fRGVjb2RlQ2hhcihTcmNbMl0pOworICAgIFZhbHVlc1szXSA9
IF9fRGVjb2RlQ2hhcihTcmNbM10pOworCisgICAgLy8gc2FuaXR5IGNoZWNrcworICAgIGlmICgo
U3JjWzBdID09ICc9JyB8fCBTcmNbMV0gPT0gJz0nKSB8fAorICAgICAgICAoU3JjWzJdID09ICc9
JyAmJiBTcmNbM10gIT0gJz0nKSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChWYWx1ZXNb
MF0gPT0gMHhGRiB8fCBWYWx1ZXNbMV0gPT0gMHhGRiB8fAorICAgICAgICBWYWx1ZXNbMl0gPT0g
MHhGRiB8fCBWYWx1ZXNbM10gPT0gMHhGRikKKyAgICAgICAgcmV0dXJuIC0zOworCisgICAgLy8g
Y29udmVydAorICAgIERzdFswXSA9IChWYWx1ZXNbMV0gPj4gNCkgfCAoVmFsdWVzWzBdIDw8IDIp
OworICAgIGlmIChTcmNbMl0gPT0gJz0nKQorICAgICAgICByZXR1cm4gMjsKKworICAgIERzdFsx
XSA9IChWYWx1ZXNbMl0gPj4gMikgfCAoVmFsdWVzWzFdIDw8IDQpOworICAgIGlmIChTcmNbM10g
PT0gJz0nKQorICAgICAgICByZXR1cm4gMTsKKworICAgIERzdFsyXSA9IChWYWx1ZXNbM10gICAg
ICkgfCAoVmFsdWVzWzJdIDw8IDYpOworICAgIHJldHVybiAwOworfQorCitOVFNUQVRVUworQmFz
ZTY0RGVjb2RlKAorICAgIElOICBQQ0hBUiAgIFN0cmluZywKKyAgICBPVVQgUFZPSUQgICAqQmlu
YXJ5LAorICAgIE9VVCBQVUxPTkcgIExlbmd0aAorICAgICkKK3sKKyAgICBVTE9ORyAgICAgICBT
dHJpbmdMZW5ndGg7CisgICAgVUxPTkcgICAgICAgQmxvY2tDb3VudDsKKyAgICBVTE9ORyAgICAg
ICBJbmRleDsKKyAgICBQVUNIQVIgICAgICBCdWZmZXI7CisgICAgQ0hBUiAgICAgICAgUGFkZGlu
ZzsKKyAgICBOVFNUQVRVUyAgICBzdGF0dXM7CisKKyAgICBTdHJpbmdMZW5ndGggPSAoVUxPTkcp
c3RybGVuKFN0cmluZyk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7
CisgICAgaWYgKFN0cmluZ0xlbmd0aCAlIDQgIT0gMCkKKyAgICAgICAgZ290byBmYWlsMTsKKwor
ICAgIEJsb2NrQ291bnQgPSBTdHJpbmdMZW5ndGggLyA0OworICAgIEJ1ZmZlciA9IEJhc2U2NEFs
bG9jYXRlKEJsb2NrQ291bnQgKiAzKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7
CisgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgUGFk
ZGluZyA9IDA7CisgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOworICAgIGZv
ciAoSW5kZXggPSAwOyBJbmRleCA8IEJsb2NrQ291bnQ7ICsrSW5kZXgpIHsKKyAgICAgICAgaWYg
KFBhZGRpbmcgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDM7CisgICAgICAgIFBhZGRpbmcg
PSBfX0RlY29kZSgmQnVmZmVyW0luZGV4ICogM10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmU3RyaW5nW0luZGV4ICogNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdM
ZW5ndGggLSAoSW5kZXggKiA0KSk7CisgICAgICAgIGlmIChQYWRkaW5nIDwgMCB8fCBQYWRkaW5n
ID4gMikKKyAgICAgICAgICAgIGdvdG8gZmFpbDQ7CisgICAgfQorCisgICAgKkxlbmd0aCA9IChC
bG9ja0NvdW50ICogMykgLSBQYWRkaW5nOworICAgICpCaW5hcnkgPSBCdWZmZXI7CisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsNDoKKyAgICBFcnJvcigiZmFpbDRcbiIpOworZmFp
bDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7
CisgICAgQmFzZTY0RnJlZShCdWZmZXIpOworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICUwOHhc
biIsIHN0YXR1cyk7CisgICAgKkJpbmFyeSA9IE5VTEw7CisgICAgKkxlbmd0aCA9IDA7CisgICAg
cmV0dXJuIHN0YXR1czsKK30KZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvYmFzZTY0LmggYi9zcmMv
eGVudmJkL2Jhc2U2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiZTcy
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVudmJkL2Jhc2U2NC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3JtcywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
KyAqIAorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAg
ICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IAorICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCAKKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgCisgKiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVOVkJEX0JBU0U2
NF9ICisjZGVmaW5lIF9YRU5WQkRfQkFTRTY0X0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisKK2V4
dGVybiBWT0lECitCYXNlNjRGcmVlKAorICAgIElOICBQVk9JRCAgIEJ1ZmZlcgorICAgICk7CisK
K2V4dGVybiBOVFNUQVRVUworQmFzZTY0RGVjb2RlKAorICAgIElOICBQQ0hBUiAgIFN0cmluZywK
KyAgICBPVVQgUFZPSUQgICAqQmluYXJ5LAorICAgIE9VVCBQVUxPTkcgIExlbmd0aAorICAgICk7
CisKKyNlbmRpZiAvLyBfWEVOVkJEX0JBU0U2NF9ICisKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQv
ZnJvbnRlbmQuYyBiL3NyYy94ZW52YmQvZnJvbnRlbmQuYwppbmRleCAzM2RmZDE4Li40MmVhYTBi
IDEwMDY0NAotLS0gYS9zcmMveGVudmJkL2Zyb250ZW5kLmMKKysrIGIvc3JjL3hlbnZiZC9mcm9u
dGVuZC5jCkBAIC00MSwxNyArNDEsMjIgQEAKICNpbmNsdWRlICJyZWdpc3RyeS5oIgogI2luY2x1
ZGUgImRyaXZlci5oIgogI2luY2x1ZGUgImFkYXB0ZXIuaCIKLSNpbmNsdWRlICJwZG9pbnF1aXJ5
LmgiCiAjaW5jbHVkZSAic3JiZXh0LmgiCiAjaW5jbHVkZSAibmFtZXMuaCIKICNpbmNsdWRlICJy
aW5nLmgiCiAjaW5jbHVkZSAiZ3JhbnRlci5oIgogI2luY2x1ZGUgInRocmVhZC5oIgorI2luY2x1
ZGUgImJhc2U2NC5oIgogCiAjaW5jbHVkZSAiZGVidWcuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIK
ICNpbmNsdWRlICJ1dGlsLmgiCiAKK3R5cGVkZWYgc3RydWN0IF9YRU5WQkRfUEFHRSB7CisgICAg
UFZPSUQgICBEYXRhOworICAgIFVMT05HICAgU2l6ZTsKK30gWEVOVkJEX1BBR0UsICpQWEVOVkJE
X1BBR0U7CisKIHN0cnVjdCBfWEVOVkJEX0ZST05URU5EIHsKICAgICAvLyBGcm9udGVuZAogICAg
IFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgICBUYXJnZXQ7CkBAIC02Nyw3ICs3Miw4IEBAIHN0
cnVjdCBfWEVOVkJEX0ZST05URU5EIHsKICAgICBYRU5WQkRfQ0FQUyAgICAgICAgICAgICAgICAg
Q2FwczsKICAgICBYRU5WQkRfRkVBVFVSRVMgICAgICAgICAgICAgRmVhdHVyZXM7CiAgICAgWEVO
VkJEX0RJU0tJTkZPICAgICAgICAgICAgIERpc2tJbmZvOwotICAgIFBWT0lEICAgICAgICAgICAg
ICAgICAgICAgICBJbnF1aXJ5OworICAgIFhFTlZCRF9QQUdFICAgICAgICAgICAgICAgICBQYWdl
ODA7CisgICAgWEVOVkJEX1BBR0UgICAgICAgICAgICAgICAgIFBhZ2U4MzsKIAogICAgIC8vIElu
dGVyZmFjZXMgdG8gWGVuQnVzCiAgICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAgIFN0b3Jl
SW50ZXJmYWNlOwpAQCAtMTU4LDExICsxNjQsMjMgQEAgRnJvbnRlbmRSZW1vdmVGZWF0dXJlKAog
fQogCiBQVk9JRAotRnJvbnRlbmRHZXRJbnF1aXJ5KAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRF
TkQgICAgICBGcm9udGVuZAorRnJvbnRlbmRHZXRJbnF1aXJ5T3ZlcnJpZGUoCisgICAgSU4gIFBY
RU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQsCisgICAgSU4gIFVDSEFSICAgICAgICAgICAgICAg
UGFnZUNvZGUsCisgICAgT1VUIFBVTE9ORyAgICAgICAgICAgICAgTGVuZ3RoCiAgICAgKQogewot
ICAgIHJldHVybiBGcm9udGVuZC0+SW5xdWlyeTsKKyAgICBzd2l0Y2ggKFBhZ2VDb2RlKSB7Cisg
ICAgY2FzZSAweDgwOgorICAgICAgICAqTGVuZ3RoID0gRnJvbnRlbmQtPlBhZ2U4MC5TaXplOwor
ICAgICAgICByZXR1cm4gRnJvbnRlbmQtPlBhZ2U4MC5EYXRhOworICAgIGNhc2UgMHg4MzoKKyAg
ICAgICAgKkxlbmd0aCA9IEZyb250ZW5kLT5QYWdlODMuU2l6ZTsKKyAgICAgICAgcmV0dXJuIEZy
b250ZW5kLT5QYWdlODMuRGF0YTsKKyAgICBkZWZhdWx0OgorICAgICAgICAqTGVuZ3RoID0gMDsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogfQogCiBOVFNUQVRVUwpAQCAtODg5LDYgKzkw
Nyw0NyBAQCBGcm9udGVuZFJlYWREaXNrSW5mbygKICAgICB9CiB9CiAKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitGcm9udGVuZFJlYWRJbnF1aXJ5T3ZlcnJpZGVzKAorICAgIElOICBQWEVOVkJE
X0ZST05URU5EICAgIEZyb250ZW5kCisgICAgKQoreworICAgIFBDSEFSICAgICAgICAgICAgICAg
ICAgIEJ1ZmZlcjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBz
dGF0dXMgPSBYRU5CVVNfU1RPUkUoUmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkZy
b250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmRQYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAic20tZGF0YS9zY3NpLzB4MTIvMHg4MCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICZCdWZmZXIpOworICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsK
KyAgICAgICAgKFZPSUQpIEJhc2U2NERlY29kZShCdWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkZyb250ZW5kLT5QYWdlODAuRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmRnJvbnRlbmQtPlBhZ2U4MC5TaXplKTsKKworICAgICAgICBYRU5CVVNfU1RPUkUoRnJl
ZSwKKyAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXIpOworICAgIH0KKworICAgIHN0YXR1cyA9IFhFTkJVU19T
VE9SRShSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50
ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcm9udGVuZC0+QmFja2VuZFBhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzbS1kYXRhL3Njc2kvMHgxMi8weDgzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JkJ1ZmZlcik7CisgICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAoVk9JRCkg
QmFzZTY0RGVjb2RlKEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRl
bmQtPlBhZ2U4My5EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+
UGFnZTgzLlNpemUpOworCisgICAgICAgIFhFTkJVU19TVE9SRShGcmVlLAorICAgICAgICAgICAg
ICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
IEJ1ZmZlcik7CisgICAgfQorfQorCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBfX2Rydl9yZXF1
aXJlc0lSUUwoRElTUEFUQ0hfTEVWRUwpCiBzdGF0aWMgTlRTVEFUVVMKQEAgLTEwMjAsMTEgKzEw
NzksNiBAQCBGcm9udGVuZFByZXBhcmUoCiAgICAgaWYgKEJhY2tlbmRTdGF0ZSAhPSBYZW5idXNT
dGF0ZUluaXRXYWl0KQogICAgICAgICBnb3RvIGZhaWw4OwogCi0gICAgLy8gcmVhZCBpbnF1aXJ5
IGRhdGEKLSAgICBpZiAoRnJvbnRlbmQtPklucXVpcnkgPT0gTlVMTCkKLSAgICAgICAgUGRvUmVh
ZElucXVpcnlEYXRhKEZyb250ZW5kLCAmRnJvbnRlbmQtPklucXVpcnkpOwotICAgIFBkb1VwZGF0
ZUlucXVpcnlEYXRhKEZyb250ZW5kLCBGcm9udGVuZC0+SW5xdWlyeSk7Ci0KICAgICAvLyByZWFk
IGZlYXR1cmVzIGFuZCBjYXBzIChyZW1vdmFibGUsIHJpbmctb3JkZXIsIC4uLikKICAgICBWZXJi
b3NlKCJUYXJnZXRbJWRdIDogQmFja2VuZElkICVkICglcylcbiIsCiAgICAgICAgICAgICBGcm9u
dGVuZC0+VGFyZ2V0SWQsCkBAIC0xMTY0LDYgKzEyMTgsOSBAQCBhYm9ydDoKICAgICBfX1JlYWRE
aXNrSW5mbyhGcm9udGVuZCk7CiAgICAgRnJvbnRlbmRSZWFkRGlza0luZm8oRnJvbnRlbmQpOwog
CisgICAgLy8gcmVhZCBpbnF1aXJ5IGRhdGEKKyAgICBGcm9udGVuZFJlYWRJbnF1aXJ5T3ZlcnJp
ZGVzKEZyb250ZW5kKTsKKwogICAgIC8vIGJsa2JhY2sgZG9lc250IHdyaXRlIGZlYXR1cmVzIGJl
Zm9yZSBJbml0V2FpdCwgYmxrYmFjayB3cml0ZXMgZmVhdHVyZXMgYmVmb3JlIENvbm5lY3RlZCEK
ICAgICBGcm9udGVuZFJlYWRGZWF0dXJlcyhGcm9udGVuZCk7CiAKQEAgLTEyMDAsNiArMTI1Nywx
NCBAQCBGcm9udGVuZERpc2Nvbm5lY3QoCiB7CiAgICAgUmluZ0Rpc2Nvbm5lY3QoRnJvbnRlbmQt
PlJpbmcpOwogICAgIEdyYW50ZXJEaXNjb25uZWN0KEZyb250ZW5kLT5HcmFudGVyKTsKKworICAg
IEJhc2U2NEZyZWUoRnJvbnRlbmQtPlBhZ2U4MC5EYXRhKTsKKyAgICBGcm9udGVuZC0+UGFnZTgw
LkRhdGEgPSBOVUxMOworICAgIEZyb250ZW5kLT5QYWdlODAuU2l6ZSA9IDA7CisKKyAgICBCYXNl
NjRGcmVlKEZyb250ZW5kLT5QYWdlODMuRGF0YSk7CisgICAgRnJvbnRlbmQtPlBhZ2U4My5EYXRh
ID0gTlVMTDsKKyAgICBGcm9udGVuZC0+UGFnZTgzLlNpemUgPSAwOwogfQogX19kcnZfcmVxdWly
ZXNJUlFMKERJU1BBVENIX0xFVkVMKQogc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKQEAgLTE3ODEs
OCArMTg0NiwxMyBAQCBGcm9udGVuZERlc3Ryb3koCiAKICAgICBUcmFjZSgiVGFyZ2V0WyVkXSBA
ICglZCkgPT09PT0+XG4iLCBUYXJnZXRJZCwgS2VHZXRDdXJyZW50SXJxbCgpKTsKIAotICAgIFBk
b0ZyZWVJbnF1aXJ5RGF0YShGcm9udGVuZC0+SW5xdWlyeSk7Ci0gICAgRnJvbnRlbmQtPklucXVp
cnkgPSBOVUxMOworICAgIEJhc2U2NEZyZWUoRnJvbnRlbmQtPlBhZ2U4MC5EYXRhKTsKKyAgICBG
cm9udGVuZC0+UGFnZTgwLkRhdGEgPSBOVUxMOworICAgIEZyb250ZW5kLT5QYWdlODAuU2l6ZSA9
IDA7CisKKyAgICBCYXNlNjRGcmVlKEZyb250ZW5kLT5QYWdlODMuRGF0YSk7CisgICAgRnJvbnRl
bmQtPlBhZ2U4My5EYXRhID0gTlVMTDsKKyAgICBGcm9udGVuZC0+UGFnZTgzLlNpemUgPSAwOwog
CiAgICAgVGhyZWFkQWxlcnQoRnJvbnRlbmQtPkJhY2tlbmRUaHJlYWQpOwogICAgIFRocmVhZEpv
aW4oRnJvbnRlbmQtPkJhY2tlbmRUaHJlYWQpOwpAQCAtMTc5NSw3ICsxODY1LDYgQEAgRnJvbnRl
bmREZXN0cm95KAogICAgIEZyb250ZW5kLT5SaW5nID0gTlVMTDsKIAogICAgIEFTU0VSVDNQKEZy
b250ZW5kLT5CYWNrZW5kUGF0aCwgPT0sIE5VTEwpOwotICAgIEFTU0VSVDNQKEZyb250ZW5kLT5J
bnF1aXJ5LCA9PSwgTlVMTCk7CiAgICAgQVNTRVJUM1AoRnJvbnRlbmQtPkJhY2tlbmRXYXRjaCwg
PT0sIE5VTEwpOwogCiAgICAgX19Gcm9udGVuZEZyZWUoRnJvbnRlbmQpOwpkaWZmIC0tZ2l0IGEv
c3JjL3hlbnZiZC9mcm9udGVuZC5oIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5oCmluZGV4IDY2OTc5
NTYuLjA5MzE5MTQgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQuaAorKysgYi9zcmMv
eGVudmJkL2Zyb250ZW5kLmgKQEAgLTgyLDggKzgyLDEwIEBAIEZyb250ZW5kUmVtb3ZlRmVhdHVy
ZSgKICAgICApOwogCiBleHRlcm4gUFZPSUQKLUZyb250ZW5kR2V0SW5xdWlyeSgKLSAgICBfX2lu
ICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQKK0Zyb250ZW5kR2V0SW5xdWlyeU92ZXJy
aWRlKAorICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgIEZyb250ZW5kLAorICAgIElOICBVQ0hB
UiAgICAgICAgICAgICAgIFBhZ2VDb2RlLAorICAgIE9VVCBQVUxPTkcgICAgICAgICAgICAgIExl
bmd0aAogICAgICk7CiAKIGV4dGVybiBOVFNUQVRVUwpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9w
ZG9pbnF1aXJ5LmMgYi9zcmMveGVudmJkL3Bkb2lucXVpcnkuYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDg5Y2M0MC4uMDAwMDAwMAotLS0gYS9zcmMveGVudmJkL3Bkb2lucXVpcnku
YworKysgL2Rldi9udWxsCkBAIC0xLDUzMCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIENpdHJp
eCBTeXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0aCBvciB3
aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICogTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBEQU1BR0Uu
Ci0gKi8gCi0KLSNpbmNsdWRlICJwZG9pbnF1aXJ5LmgiCi0jaW5jbHVkZSAiZHJpdmVyLmgiCi0j
aW5jbHVkZSAiZGVidWcuaCIKLSNpbmNsdWRlICJhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dGlsLmgi
Ci0jaW5jbHVkZSA8eGVuY2RiLmg+Ci0jaW5jbHVkZSA8eGVudmJkLW50c3Ryc2FmZS5oPgotI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgotCi0vLyAiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAw
MDAwIgotI2RlZmluZSBHVUlEX0xFTkdUSCAgICAgMzYgCi0KLS8vIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwICJYRU5TUkMgIDAwMDAwMDAwIgotI2RlZmluZSBQQUdFODNfTUlOX1NJWkUgKDQgKyA0
ICsgMTYpCi0KLS8vIDAwIDAwIDAwIDAwICsgR1VJRF9MRU5HVEgKLSNkZWZpbmUgVkRJX0lEX0xF
TkdUSCAgICg0ICsgR1VJRF9MRU5HVEgpCi0KLSNkZWZpbmUgSU5RVUlSWV9QT09MX1RBRyAncW5J
WCcKLQotdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9QQUdFIHsKLSAgICBQQ0hBUiAgIERhdGE7Ci0g
ICAgVUxPTkcgICBMZW5ndGg7Ci19IFhFTlZCRF9QQUdFLCAqUFhFTlZCRF9QQUdFOwotCi10eXBl
ZGVmIHN0cnVjdCBfWEVOVkJEX0lOUVVJUlkgewotICAgIFhFTlZCRF9QQUdFIFBhZ2U4MDsKLSAg
ICBYRU5WQkRfUEFHRSBQYWdlODM7Ci0gICAgQ0hBUiAgICAgICAgVmRpVXVpZFtHVUlEX0xFTkdU
SCArIDFdOwotfSBYRU5WQkRfSU5RVUlSWSwgKlBYRU5WQkRfSU5RVUlSWTsKLQotc3RhdGljIEZP
UkNFSU5MSU5FIFVMT05HCi1fX01pbjMoCi0gICAgX19pbiBVTE9ORyAgQSwKLSAgICBfX2luIFVM
T05HICBCLAotICAgIF9faW4gVUxPTkcgIEMKLSAgICApCi17Ci0gICAgcmV0dXJuIEEgPCBCID8g
X19taW4oQSwgQykgOiBfX21pbihCLCBDKTsKLX0KLQotX19jaGVja1JldHVybgotX19kcnZfYWxs
b2NhdGVzTWVtKG1lbSkKLV9fYmNvdW50KFNpemUpCi1zdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQg
Ci0jcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6IDI4MTk1KQotX19JbnF1aXJ5QWxsb2MoCi0gICAg
X19pbiBTSVpFX1QgU2l6ZQotICAgICkKLXsKLSAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRo
VGFnKE5vblBhZ2VkUG9vbCwgU2l6ZSwgSU5RVUlSWV9QT09MX1RBRyk7Ci19Ci0KLXN0YXRpYyBG
T1JDRUlOTElORSBWT0lECi0jcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6IDI4MTk3KQotX19JbnF1
aXJ5RnJlZSgKLSAgICBfX2luIF9fZHJ2X2ZyZWVzTWVtKG1lbSkgUFZPSUQgQnVmZmVyCi0gICAg
KQotewotICAgIGlmIChCdWZmZXIgIT0gTlVMTCkKLSAgICAgICAgX19GcmVlUG9vbFdpdGhUYWco
QnVmZmVyLCBJTlFVSVJZX1BPT0xfVEFHKTsKLX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFVDSEFS
Ci1fX0RlY29kZUNoYXIoCi0gICAgX19pbiBDSEFSICAgIENoYXIKLSAgICApCi17Ci0gICAgaWYg
KENoYXIgPj0gJ0EnICYmIENoYXIgPD0gJ1onKSByZXR1cm4gQ2hhciAtICdBJzsKLSAgICBpZiAo
Q2hhciA+PSAnYScgJiYgQ2hhciA8PSAneicpIHJldHVybiBDaGFyIC0gJ2EnICsgMjY7Ci0gICAg
aWYgKENoYXIgPj0gJzAnICYmIENoYXIgPD0gJzknKSByZXR1cm4gQ2hhciAtICcwJyArIDUyOwot
ICAgIGlmIChDaGFyID09ICcrJykgICAgICAgICAgICAgICAgcmV0dXJuIDYyOwotICAgIGlmIChD
aGFyID09ICcvJykgICAgICAgICAgICAgICAgcmV0dXJuIDYzOwotICAgIGlmIChDaGFyID09ICc9
JykgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDB4RkY7Ci19Ci1zdGF0aWMg
REVDTFNQRUNfTk9JTkxJTkUgVUNIQVIKLV9fRGVjb2RlKAotICAgIF9faW4gUFVDSEFSICBEZXN0
LAotICAgIF9faW4gUENIQVIgICBTcmMsCi0gICAgX19pbiBVTE9ORyAgIFJlbWFpbmluZ0NoYXJz
Ci0gICAgKQotewotICAgIFVDSEFSICAgVmFsdWVzWzRdOyAKLQotICAgIGlmIChSZW1haW5pbmdD
aGFycyA8IDQpCi0gICAgICAgIHJldHVybiAweEZGOwotCi0gICAgLy8gdGFrZSA0IFNyYyBjaGFy
cyAtPiAxLCAyLCBvciAzIERlc3QgYnl0ZXMKLSAgICBWYWx1ZXNbMF0gPSBfX0RlY29kZUNoYXIo
U3JjWzBdKTsKLSAgICBWYWx1ZXNbMV0gPSBfX0RlY29kZUNoYXIoU3JjWzFdKTsKLSAgICBWYWx1
ZXNbMl0gPSBfX0RlY29kZUNoYXIoU3JjWzJdKTsKLSAgICBWYWx1ZXNbM10gPSBfX0RlY29kZUNo
YXIoU3JjWzNdKTsKLQotICAgIC8vIHNhbml0eSBjaGVja3MKLSAgICBpZiAoKFNyY1swXSA9PSAn
PScgfHwgU3JjWzFdID09ICc9JykgfHwKLSAgICAgICAgKFNyY1syXSA9PSAnPScgJiYgU3JjWzNd
ICE9ICc9JykpCi0gICAgICAgIHJldHVybiAweEZGOwotICAgIGlmIChWYWx1ZXNbMF0gPT0gMHhG
RiB8fCBWYWx1ZXNbMV0gPT0gMHhGRiB8fAotICAgICAgICBWYWx1ZXNbMl0gPT0gMHhGRiB8fCBW
YWx1ZXNbM10gPT0gMHhGRikKLSAgICAgICAgcmV0dXJuIDB4RkY7Ci0KLSAgICAvLyBjb252ZXJ0
Ci0gICAgRGVzdFswXSA9IChWYWx1ZXNbMV0gPj4gNCkgfCAoVmFsdWVzWzBdIDw8IDIpOwotICAg
IGlmIChTcmNbMl0gPT0gJz0nKSAgcmV0dXJuIDI7Ci0gICAgRGVzdFsxXSA9IChWYWx1ZXNbMl0g
Pj4gMikgfCAoVmFsdWVzWzFdIDw8IDQpOwotICAgIGlmIChTcmNbM10gPT0gJz0nKSAgcmV0dXJu
IDE7Ci0gICAgRGVzdFsyXSA9IChWYWx1ZXNbM10gICAgICkgfCAoVmFsdWVzWzJdIDw8IDYpOwot
ICAgIHJldHVybiAwOwotfQotX19jaGVja1JldHVybgotc3RhdGljIE5UU1RBVFVTCi1fX0RlY29k
ZUJhc2U2NCgKLSAgICBfX2luICBQQ0hBUiAgIEJhc2U2NCwKLSAgICBfX2luICBVTE9ORyAgIEJh
c2U2NExlbmd0aCwKLSAgICBfX291dCBQVk9JRCAgICpfQnVmZmVyLAotICAgIF9fb3V0IFBVTE9O
RyAgQnVmZmVyTGVuZ3RoCi0gICAgKQotewotICAgIC8vIGNvbnZlcnQgQmFzZTY0KDRjaGFycykg
aW50byBCdWZmZXIoM2J5dGVzKQotICAgIFBVQ0hBUiAgICAgIEJ1ZmZlcjsKLSAgICBVTE9ORyAg
ICAgICBOdW1CbG9ja3M7Ci0gICAgVUxPTkcgICAgICAgaTsKLSAgICBVQ0hBUiAgICAgICBQYWQg
PSAwOwotCi0gICAgTnVtQmxvY2tzID0gQmFzZTY0TGVuZ3RoIC8gNDsKLQotICAgIEJ1ZmZlciA9
IChQVUNIQVIpX19JbnF1aXJ5QWxsb2MoTnVtQmxvY2tzICogMyk7Ci0gICAgaWYgKEJ1ZmZlciA9
PSBOVUxMKSB7Ci0gICAgICAgIEVycm9yKCJfX0lucXVpcnlBbGxvYyAoU1RBVFVTX0lOU1VGRklD
SUVOVF9SRVNPVVJDRVMpXG4iKTsKLSAgICAgICAgZ290byBmYWlsMTsKLSAgICB9Ci0KLSAgICBm
b3IgKGkgPSAwOyBpIDwgTnVtQmxvY2tzOyArK2kpIHsKLSAgICAgICAgaWYgKFBhZCkgICAgICAg
IGdvdG8gaW52YWxpZF9iYXNlNjQ7Ci0gICAgICAgIFBhZCA9IF9fRGVjb2RlKEJ1ZmZlciArIChp
ICogMyksIEJhc2U2NCArIChpICogNCksIEJhc2U2NExlbmd0aCAtIChpICogNCkpOwotICAgICAg
ICBpZiAoUGFkID4gMikgICAgZ290byBpbnZhbGlkX2Jhc2U2NDsKLSAgICB9Ci0KLSAgICAqQnVm
ZmVyTGVuZ3RoID0gKE51bUJsb2NrcyAqIDMpIC0gUGFkOwotICAgICpfQnVmZmVyID0gQnVmZmVy
OwotICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKLQotaW52YWxpZF9iYXNlNjQ6Ci0gICAgRXJy
b3IoIkludmFsaWQgQkFTRTY0IGVuY29kaW5nXG4iKTsKLSAgICBfX0lucXVpcnlGcmVlKChQVk9J
RClCdWZmZXIpOwotICAgIHJldHVybiBTVEFUVVNfVU5TVUNDRVNTRlVMOwotCi1mYWlsMToKLSAg
ICByZXR1cm4gU1RBVFVTX0lOU1VGRklDSUVOVF9SRVNPVVJDRVM7Ci19Ci1zdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgQk9PTEVBTiAKLV9fUmVhZFBhZ2UoCi0gICAgX19pbiBQWEVOVkJEX0ZST05U
RU5EICAgICAgIEZyb250ZW5kLAotICAgIF9faW4gUFhFTlZCRF9QQUdFICAgICAgICAgICBQYWdl
LAotICAgIF9faW4gUENIQVIgICAgICAgICAgICAgICAgICBQYXRoCi0gICAgKQotewotICAgIE5U
U1RBVFVTICAgIFN0YXR1czsKLSAgICBQQ0hBUiAgICAgICBWYWx1ZTsKLQotICAgIFN0YXR1cyA9
IEZyb250ZW5kU3RvcmVSZWFkQmFja2VuZChGcm9udGVuZCwgUGF0aCwgJlZhbHVlKTsKLSAgICBp
ZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsMTsKLQotICAgIFN0YXR1
cyA9IF9fRGVjb2RlQmFzZTY0KFZhbHVlLCAoVUxPTkcpc3RybGVuKFZhbHVlKSwgKFBWT0lEKikm
UGFnZS0+RGF0YSwgJlBhZ2UtPkxlbmd0aCk7Ci0gICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykp
Ci0gICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICBGcm9udGVuZFN0b3JlRnJlZShGcm9udGVuZCwg
VmFsdWUpOwotICAgIHJldHVybiBUUlVFOwotCi1mYWlsMjoKLSAgICBGcm9udGVuZFN0b3JlRnJl
ZShGcm9udGVuZCwgVmFsdWUpOwotZmFpbDE6Ci0gICAgUGFnZS0+RGF0YSA9IE5VTEw7Ci0gICAg
UGFnZS0+TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBGT1JDRUlO
TElORSBCT09MRUFOCi1fX0hhbmRsZVBhZ2VTdGQoCi0gICAgX19pbiBQU0NTSV9SRVFVRVNUX0JM
T0NLICAgICAgICBTcmIKLSAgICApCi17Ci0gICAgUElOUVVJUllEQVRBICAgIERhdGEgPSAoUElO
UVVJUllEQVRBKVNyYi0+RGF0YUJ1ZmZlcjsKLSAgICBVTE9ORyAgICAgICAgICAgTGVuZ3RoID0g
U3JiLT5EYXRhVHJhbnNmZXJMZW5ndGg7Ci0KLSAgICBpZiAoTGVuZ3RoIDwgSU5RVUlSWURBVEFC
VUZGRVJTSVpFKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICBEYXRhLT5EZXZpY2VUeXBl
ICAgICAgICAgICAgPSBESVJFQ1RfQUNDRVNTX0RFVklDRTsKLSAgICBEYXRhLT5EZXZpY2VUeXBl
UXVhbGlmaWVyICAgPSBERVZJQ0VfQ09OTkVDVEVEOwotICAgIERhdGEtPlZlcnNpb25zICAgICAg
ICAgICAgICA9IDQ7Ci0gICAgRGF0YS0+UmVzcG9uc2VEYXRhRm9ybWF0ICAgID0gMjsKLSAgICBE
YXRhLT5BZGRpdGlvbmFsTGVuZ3RoICAgICAgPSBJTlFVSVJZREFUQUJVRkZFUlNJWkUgLSA0Owot
ICAgIERhdGEtPkNvbW1hbmRRdWV1ZSAgICAgICAgICA9IDE7Ci0gICAgUnRsQ29weU1lbW9yeShE
YXRhLT5WZW5kb3JJZCwgICAgICAgICAgICAgICAiWEVOU1JDICAiLCA4KTsKLSAgICBSdGxDb3B5
TWVtb3J5KERhdGEtPlByb2R1Y3RJZCwgICAgICAgICAgICAgICJQVkRJU0sgICAgICAgICAgIiwg
MTYpOwotICAgIFJ0bENvcHlNZW1vcnkoRGF0YS0+UHJvZHVjdFJldmlzaW9uTGV2ZWwsICAgIjIu
MCAiLCA0KTsKLQotICAgIFNyYi0+RGF0YVRyYW5zZmVyTGVuZ3RoID0gSU5RVUlSWURBVEFCVUZG
RVJTSVpFOwotICAgIHJldHVybiBUUlVFOwotfQotc3RhdGljIEZPUkNFSU5MSU5FIEJPT0xFQU4K
LV9fSGFuZGxlUGFnZTAwKAotICAgIF9faW4gUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgICAgU3Ji
Ci0gICAgKQotewotICAgIFBDSEFSICAgRGF0YSA9IChQQ0hBUilTcmItPkRhdGFCdWZmZXI7Ci0g
ICAgVUxPTkcgICBMZW5ndGggPSBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aDsKLQotICAgIGlmIChM
ZW5ndGggPCA3KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgUnRsWmVyb01lbW9yeShEYXRh
LCBMZW5ndGgpOwotCi0gICAgLy8gMDAgMDAgMDAgTnVtUGFnZXMrMSAwMCBbUGFnZSBbLi4uXV0K
LSAgICBEYXRhWzNdID0gMzsKLSAgICBEYXRhWzRdID0gMHgwMDsKLSAgICBEYXRhWzVdID0gMHg4
MDsKLSAgICBEYXRhWzZdID0gMHg4MzsKLSAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCA9IDc7
Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLXN0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCi1fX0hh
bmRsZVBhZ2U4MCgKLSAgICBfX2luIFVMT05HICAgICAgICAgICAgICAgICAgICAgIFRhcmdldElk
LAotICAgIF9faW4gUFhFTlZCRF9JTlFVSVJZICAgICAgICAgICAgSW5xdWlyeSwKLSAgICBfX2lu
IFBTQ1NJX1JFUVVFU1RfQkxPQ0sgICAgICAgIFNyYgotICAgICkKLXsKLSAgICBQQ0hBUiAgIERh
dGEgPSAoUENIQVIpU3JiLT5EYXRhQnVmZmVyOwotICAgIFVMT05HICAgTGVuZ3RoID0gU3JiLT5E
YXRhVHJhbnNmZXJMZW5ndGg7Ci0KLQlSdGxaZXJvTWVtb3J5KERhdGEsIExlbmd0aCk7Ci0JaWYg
KElucXVpcnkgPT0gTlVMTCB8fAotICAgICAgICBJbnF1aXJ5LT5QYWdlODAuRGF0YSA9PSBOVUxM
IHx8IAotICAgICAgICBJbnF1aXJ5LT5QYWdlODAuTGVuZ3RoID09IDApIHsKLSAgICAgICAgLy8g
Z2VuZXJhdGUgdGhlIHNlcmlhbCBudW1iZXIgcGFnZQotICAgICAgICBQVlBEX1NFUklBTF9OVU1C
RVJfUEFHRSBTZXJpYWw7Ci0gICAgICAgIGlmIChMZW5ndGggPCBzaXplb2YoVlBEX1NFUklBTF9O
VU1CRVJfUEFHRSkgKyA0KQotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgICAgIFNl
cmlhbCA9IChQVlBEX1NFUklBTF9OVU1CRVJfUEFHRSlEYXRhOwotICAgICAgICBTZXJpYWwtPlBh
Z2VDb2RlICAgICAgICA9IDB4ODA7Ci0gICAgICAgIFNlcmlhbC0+UGFnZUxlbmd0aCAgICAgID0g
NDsKLSAgICAgICAgKFZPSUQpIFJ0bFN0cmluZ0NjaFByaW50ZkEoKFBDSEFSKVNlcmlhbC0+U2Vy
aWFsTnVtYmVyLCA1LCAiJTA0dSIsIFRhcmdldElkKTsKLQotICAgICAgICBWZXJib3NlKCJUYXJn
ZXRbJXVdIDogSU5RVUlSWSBVc2luZyBGYWtlIFBhZ2U4MCBEYXRhXG4iLCBUYXJnZXRJZCk7Ci0K
LSAgICAgICAgU3JiLT5EYXRhVHJhbnNmZXJMZW5ndGggPSBzaXplb2YoVlBEX1NFUklBTF9OVU1C
RVJfUEFHRSkgKyA0OyAKLSAgICAgICAgLy8gVlBEX1NFUklBTF9OVU1CRVJfUEFHRSBpbmNsdWRl
cyAxIGNoYXIgYWxyZWFkeQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChMZW5ndGggPCBJbnF1
aXJ5LT5QYWdlODAuTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0JCVJ0bENv
cHlNZW1vcnkoRGF0YSwgSW5xdWlyeS0+UGFnZTgwLkRhdGEsIElucXVpcnktPlBhZ2U4MC5MZW5n
dGgpOwotICAgICAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCA9IElucXVpcnktPlBhZ2U4MC5M
ZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gaWYgcG9zc2libGUsIGFwcGVuZCBhZGRpdGlvbmFsIGRh
dGEKLSAgICAvL2lmIChJbnF1aXJ5ICYmIExlbmd0aCA+PSBTcmItPkRhdGFUcmFuc2Zlckxlbmd0
aCArIEFERElUSU9OQUxfTEVOR1RIKSB7Ci0gICAgLy8gICAgU3JiLT5EYXRhVHJhbnNmZXJMZW5n
dGggKz0gQURESVRJT05BTF9MRU5HVEg7Ci0gICAgLy99Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci1z
dGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgotX19IYW5kbGVQYWdlODMoCi0gICAgX19pbiBVTE9O
RyAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRJZCwKLSAgICBfX2luIFBYRU5WQkRfSU5RVUlS
WSAgICAgICAgICAgIElucXVpcnksCi0gICAgX19pbiBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICAg
ICBTcmIKLSAgICApCi17Ci0gICAgUENIQVIgICBEYXRhID0gKFBDSEFSKVNyYi0+RGF0YUJ1ZmZl
cjsKLSAgICBVTE9ORyAgIExlbmd0aCA9IFNyYi0+RGF0YVRyYW5zZmVyTGVuZ3RoOwotCi0gICAg
UnRsWmVyb01lbW9yeShEYXRhLCBMZW5ndGgpOwotICAgIGlmIChJbnF1aXJ5ID09IE5VTEwgfHwK
LSAgICAgICAgSW5xdWlyeS0+UGFnZTgzLkRhdGEgPT0gTlVMTCB8fCAKLSAgICAgICAgSW5xdWly
eS0+UGFnZTgzLkxlbmd0aCA9PSAwKSB7Ci0gICAgICAgIC8vIGdlbmVyYXRlIHRoZSBpZCBwYWdl
IGRhdGEKLSAgICAgICAgUFZQRF9JREVOVElGSUNBVElPTl9ERVNDUklQVE9SICBJZDsKLSAgICAg
ICAgQ0hBUiAgICBCdWZmZXJbMTddOwotCi0gICAgICAgIGlmIChMZW5ndGggPCBQQUdFODNfTUlO
X1NJWkUpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICAgICAgRGF0YVsxXSAgICAg
ICAgICAgICAgICAgPSAweDgzOwotICAgICAgICBEYXRhWzNdICAgICAgICAgICAgICAgICA9IDE2
OwotCi0gICAgICAgIElkID0gKFBWUERfSURFTlRJRklDQVRJT05fREVTQ1JJUFRPUikoRGF0YSAr
IDQpOwotICAgICAgICBJZC0+Q29kZVNldCAgICAgICAgICAgICA9IFZwZENvZGVTZXRBc2NpaTsK
LSAgICAgICAgSWQtPklkZW50aWZpZXJUeXBlICAgICAgPSBWcGRJZGVudGlmaWVyVHlwZVZlbmRv
cklkOwotICAgICAgICBJZC0+SWRlbnRpZmllckxlbmd0aCAgICA9IDE2OwotICAgICAgICAoVk9J
RClSdGxTdHJpbmdDY2hQcmludGZBKEJ1ZmZlciwgMTcsICJYRU5TUkMgICUwOHUiLCBUYXJnZXRJ
ZCk7Ci0gICAgICAgIFJ0bENvcHlNZW1vcnkoKFBDSEFSKUlkLT5JZGVudGlmaWVyLCBCdWZmZXIs
IDE2KTsKLQotICAgICAgICBWZXJib3NlKCJUYXJnZXRbJXVdIDogSU5RVUlSWSBVc2luZyBGYWtl
IFBhZ2U4MyBEYXRhXG4iLCBUYXJnZXRJZCk7Ci0KLSAgICAgICAgU3JiLT5EYXRhVHJhbnNmZXJM
ZW5ndGggPSBQQUdFODNfTUlOX1NJWkU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKExlbmd0
aCA8IElucXVpcnktPlBhZ2U4My5MZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0K
LSAgICAgICAgUnRsQ29weU1lbW9yeShEYXRhLCBJbnF1aXJ5LT5QYWdlODMuRGF0YSwgSW5xdWly
eS0+UGFnZTgzLkxlbmd0aCk7Ci0gICAgICAgIFNyYi0+RGF0YVRyYW5zZmVyTGVuZ3RoID0gSW5x
dWlyeS0+UGFnZTgzLkxlbmd0aDsKLSAgICB9Ci0KLSAgICAvLyBpZiBwb3NzaWJsZSwgYXBwZW5k
IHZkaS11dWlkIGFzIFZlbmRvclNwZWNpZmljCi0gICAgaWYgKElucXVpcnkgJiYgTGVuZ3RoID49
IFNyYi0+RGF0YVRyYW5zZmVyTGVuZ3RoICsgVkRJX0lEX0xFTkdUSCkgewotICAgICAgICBQVlBE
X0lERU5USUZJQ0FUSU9OX0RFU0NSSVBUT1IgSWQ7Ci0gICAgICAgIAotICAgICAgICAvLyB1cGRh
dGUgaW50ZXJuYWwgc2l6ZQotICAgICAgICAqKERhdGEgKyAzKSArPSBWRElfSURfTEVOR1RIOwot
Ci0gICAgICAgIC8vIGNvcHkgbmV3IGRhdGEKLSAgICAgICAgSWQgPSAoUFZQRF9JREVOVElGSUNB
VElPTl9ERVNDUklQVE9SKShEYXRhICsgU3JiLT5EYXRhVHJhbnNmZXJMZW5ndGgpOwotICAgICAg
ICBJZC0+Q29kZVNldCAgICAgICAgICAgICA9IFZwZENvZGVTZXRBc2NpaTsKLSAgICAgICAgSWQt
PklkZW50aWZpZXJUeXBlICAgICAgPSBWcGRJZGVudGlmaWVyVHlwZVZlbmRvclNwZWNpZmljOwot
ICAgICAgICBJZC0+SWRlbnRpZmllckxlbmd0aCAgICA9IEdVSURfTEVOR1RIOwotICAgICAgICBS
dGxDb3B5TWVtb3J5KElkLT5JZGVudGlmaWVyLCBJbnF1aXJ5LT5WZGlVdWlkLCBHVUlEX0xFTkdU
SCk7ICAgICAgICAKLSAKLSAgICAgICAgU3JiLT5EYXRhVHJhbnNmZXJMZW5ndGggKz0gVkRJX0lE
X0xFTkdUSDsKLSAgICB9Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLSNkZWZpbmUgTUFYX0JVRkZF
UiAgICAgIDY0Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX1RyYWNlUGFnZTgwKAotICAg
IF9faW4gVUxPTkcgICAgICAgICAgICAgICAgICAgIFRhcmdldElkLAotICAgIF9faW4gUFhFTlZC
RF9JTlFVSVJZICAgICAgICAgIElucXVpcnkKLSAgICApCi17Ci0gICAgVUxPTkcgICAgICAgICAg
IExlbmd0aDsKLSAgICBDSEFSICAgICAgICAgICAgQnVmZmVyW01BWF9CVUZGRVIrMV07Ci0KLSAg
ICBMZW5ndGggPSBfX01pbjMoSW5xdWlyeS0+UGFnZTgwLkRhdGFbM10sIE1BWF9CVUZGRVIsIElu
cXVpcnktPlBhZ2U4MC5MZW5ndGggLSA0KTsKLSAgICBSdGxDb3B5TWVtb3J5KEJ1ZmZlciwgSW5x
dWlyeS0+UGFnZTgwLkRhdGEgKyA0LCBMZW5ndGgpOwotICAgIEJ1ZmZlcltMZW5ndGhdID0gMDsK
LSAgICBWZXJib3NlKCJUYXJnZXRbJXVdIDogU2VyaWFsTnVtYmVyID0gXCIlc1wiXG4iLCBUYXJn
ZXRJZCwgQnVmZmVyKTsKLX0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX1RyYWNlUGFnZTgz
KAotICAgIF9faW4gVUxPTkcgICAgICAgICAgICAgICAgICAgIFRhcmdldElkLAotICAgIF9faW4g
UFhFTlZCRF9JTlFVSVJZICAgICAgICAgIElucXVpcnkKLSAgICApCi17Ci0gICAgVUxPTkcgICAg
ICAgICAgIExlbmd0aDsKLSAgICBVTE9ORyAgICAgICAgICAgSW5kZXg7Ci0gICAgQ0hBUiAgICAg
ICAgICAgIEJ1ZmZlcltNQVhfQlVGRkVSKzFdOwotCi0gICAgZm9yIChJbmRleCA9IDQ7IEluZGV4
IDwgSW5xdWlyeS0+UGFnZTgzLkxlbmd0aDsgKSB7Ci0gICAgICAgIFBWUERfSURFTlRJRklDQVRJ
T05fREVTQ1JJUFRPUiBJZGVudGlmaWVyID0gKFBWUERfSURFTlRJRklDQVRJT05fREVTQ1JJUFRP
UikmSW5xdWlyeS0+UGFnZTgzLkRhdGFbSW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAoSWRlbnRp
Zmllci0+Q29kZVNldCkgewotICAgICAgICBjYXNlIFZwZENvZGVTZXRBc2NpaToKLSAgICAgICAg
ICAgIExlbmd0aCA9IF9fTWluMyhJZGVudGlmaWVyLT5JZGVudGlmaWVyTGVuZ3RoLCBNQVhfQlVG
RkVSLCBJbnF1aXJ5LT5QYWdlODMuTGVuZ3RoIC0gSW5kZXggLSA0KTsKLSAgICAgICAgICAgIFJ0
bENvcHlNZW1vcnkoQnVmZmVyLCBJZGVudGlmaWVyLT5JZGVudGlmaWVyLCBMZW5ndGgpOwotICAg
ICAgICAgICAgQnVmZmVyW0xlbmd0aF0gPSAwOwotICAgICAgICAgICAgVmVyYm9zZSgiVGFyZ2V0
WyV1XSA6IElkZW50aWZpZXIgKEFTQ0lJLCBUeXBlICUwMngsIFwiJXNcIilcbiIsIAotICAgICAg
ICAgICAgICAgICAgICBUYXJnZXRJZCwgSWRlbnRpZmllci0+SWRlbnRpZmllclR5cGUsIEJ1ZmZl
cik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
VmVyYm9zZSgiVGFyZ2V0WyV1XSA6IElkZW50aWZpZXIgKENvZGVTZXQgJTAyeCwgVHlwZSAlMDJ4
LCBMZW5ndGggJTAyeClcbiIsIAotICAgICAgICAgICAgICAgICAgICBUYXJnZXRJZCwgSWRlbnRp
Zmllci0+Q29kZVNldCwgSWRlbnRpZmllci0+SWRlbnRpZmllclR5cGUsIElkZW50aWZpZXItPklk
ZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAg
ICBJbmRleCArPSAoNCArIElkZW50aWZpZXItPklkZW50aWZpZXJMZW5ndGgpOwotICAgIH0KLX0K
LQotVk9JRAotI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOiAyODE5NSkKLVBkb1JlYWRJbnF1aXJ5
RGF0YSgKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZCwKLSAgICBf
X291dCBfX2Rydl9hbGxvY2F0ZXNNZW0obWVtKSBQVk9JRCogX0lucXVpcnkKLSAgICApCi17Ci0g
ICAgUFhFTlZCRF9JTlFVSVJZIElucXVpcnk7Ci0gICAgY29uc3QgQ0hBUiAgICAgIEd1aWROdWxs
W10gPSAiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIjsKLSAgICBjb25zdCBV
TE9ORyAgICAgVGFyZ2V0SWQgPSBGcm9udGVuZEdldFRhcmdldElkKEZyb250ZW5kKTsKLSAgICAK
LSAgICAqX0lucXVpcnkgPSBOVUxMOwotICAgIElucXVpcnkgPSAoUFhFTlZCRF9JTlFVSVJZKV9f
SW5xdWlyeUFsbG9jKHNpemVvZihYRU5WQkRfSU5RVUlSWSkpOwotICAgIGlmIChJbnF1aXJ5ID09
IE5VTEwpIHsKLSAgICAgICAgRXJyb3IoIlRhcmdldFslZF0gOiBNZW1vcnkgYWxsb2NhdGlvbiBn
ZXR0aW5nIElOUVVJUlkgZGF0YSAoJWQgYnl0ZXMgZmFpbGVkKVxuIiwgCi0gICAgICAgICAgICAg
ICAgVGFyZ2V0SWQsIHNpemVvZihYRU5WQkRfSU5RVUlSWSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIGluaXRpYWxpemUgVkRJLVVVSUQKLSAgICBSdGxDb3B5TWVtb3J5
KElucXVpcnktPlZkaVV1aWQsIEd1aWROdWxsLCBHVUlEX0xFTkdUSCk7Ci0gICAgSW5xdWlyeS0+
VmRpVXVpZFtHVUlEX0xFTkdUSF0gPSAwOwotCi0gICAgLy8gcmVhZCBwYWdlODAKLSAgICBpZiAo
IV9fUmVhZFBhZ2UoRnJvbnRlbmQsICZJbnF1aXJ5LT5QYWdlODAsICJzbS1kYXRhL3Njc2kvMHgx
Mi8weDgwIikpIHsKLSAgICAgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6IEZhaWxlZCB0byBnZXQg
UGFnZTgwIGRhdGFcbiIsIFRhcmdldElkKTsKLSAgICB9IGVsc2UgewotICAgICAgICBfX1RyYWNl
UGFnZTgwKFRhcmdldElkLCBJbnF1aXJ5KTsKLSAgICB9Ci0KLSAgICAvLyByZWFkIHBhZ2U4Mwot
ICAgIGlmICghX19SZWFkUGFnZShGcm9udGVuZCwgJklucXVpcnktPlBhZ2U4MywgInNtLWRhdGEv
c2NzaS8weDEyLzB4ODMiKSkgewotICAgICAgICBXYXJuaW5nKCJUYXJnZXRbJWRdIDogRmFpbGVk
IHRvIGdldCBQYWdlODMgZGF0YVxuIiwgVGFyZ2V0SWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IF9fVHJhY2VQYWdlODMoVGFyZ2V0SWQsIElucXVpcnkpOwotICAgIH0KLQotICAgICpfSW5xdWly
eSA9IElucXVpcnk7Ci19Ci0KLVZPSUQKLVBkb0ZyZWVJbnF1aXJ5RGF0YSgKLSAgICBfX2luIF9f
ZHJ2X2ZyZWVzTWVtKG1lbSkgUFZPSUQgX0lucXVpcnkKLSAgICApCi17Ci0gICAgUFhFTlZCRF9J
TlFVSVJZIElucXVpcnkgPSAoUFhFTlZCRF9JTlFVSVJZKV9JbnF1aXJ5OwotCi0gICAgaWYgKF9J
bnF1aXJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9fSW5xdWlyeUZyZWUoKFBW
T0lEKUlucXVpcnktPlBhZ2U4MC5EYXRhKTsKLSAgICBfX0lucXVpcnlGcmVlKChQVk9JRClJbnF1
aXJ5LT5QYWdlODMuRGF0YSk7Ci0gICAgX19JbnF1aXJ5RnJlZSgoUFZPSUQpSW5xdWlyeSk7Ci19
Ci0KLVZPSUQKLVBkb1VwZGF0ZUlucXVpcnlEYXRhKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRF
TkQgICAgICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgICAgICBfSW5x
dWlyeQotICAgICkKLXsKLSAgICBQWEVOVkJEX0lOUVVJUlkgSW5xdWlyeSA9IChQWEVOVkJEX0lO
UVVJUlkpX0lucXVpcnk7Ci0gICAgTlRTVEFUVVMgICAgICAgIFN0YXR1czsKLSAgICBQQ0hBUiAg
ICAgICAgICAgVmFsdWU7Ci0gICAgVUxPTkcgICAgICAgICAgIExlbmd0aDsKLSAgICBjb25zdCBD
SEFSICAgICAgR3VpZE51bGxbXSA9ICIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAw
MDAiOwotCi0gICAgaWYgKF9JbnF1aXJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJ0bENvcHlNZW1vcnkoSW5xdWlyeS0+VmRpVXVpZCwgR3VpZE51bGwsIEdVSURfTEVOR1RIKTsK
LSAgICBJbnF1aXJ5LT5WZGlVdWlkW0dVSURfTEVOR1RIXSA9IDA7Ci0KLSAgICBTdGF0dXMgPSBG
cm9udGVuZFN0b3JlUmVhZEJhY2tlbmQoRnJvbnRlbmQsICJzbS1kYXRhL3ZkaS11dWlkIiwgJlZh
bHVlKTsKLSAgICBpZiAoTlRfU1VDQ0VTUyhTdGF0dXMpKSB7Ci0gICAgICAgIExlbmd0aCA9IChV
TE9ORylzdHJsZW4oVmFsdWUpOwotCi0gICAgICAgIGlmIChMZW5ndGggPT0gR1VJRF9MRU5HVEgp
IHsKLSAgICAgICAgICAgIFJ0bENvcHlNZW1vcnkoSW5xdWlyeS0+VmRpVXVpZCwgVmFsdWUsIExl
bmd0aCk7Ci0gICAgICAgICAgICBJbnF1aXJ5LT5WZGlVdWlkW0dVSURfTEVOR1RIXSA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBGcm9udGVuZFN0b3JlRnJlZShGcm9udGVuZCwgVmFsdWUpOwot
ICAgIH0KLQotICAgIFZlcmJvc2UoIlRhcmdldFsldV0gOiBWREktVVVJRCA9IHslc31cbiIsIEZy
b250ZW5kR2V0VGFyZ2V0SWQoRnJvbnRlbmQpLCBJbnF1aXJ5LT5WZGlVdWlkKTsKLX0KLQotVk9J
RAotUGRvSW5xdWlyeSgKLSAgICBfX2luIFVMT05HICAgICAgICAgICAgICAgICAgIFRhcmdldElk
LAotICAgIF9faW4gUFZPSUQgICAgICAgICAgICAgICAgICAgSW5xdWlyeSwKLSAgICBfX2luIFBT
Q1NJX1JFUVVFU1RfQkxPQ0sgICAgIFNyYgotICAgICkKLXsKLSAgICBCT09MRUFOICAgICAgICAg
U3VjY2VzczsKLSAgICBjb25zdCBVQ0hBUiAgICAgRXZwZCA9IENkYl9FVlBEKFNyYik7Ci0gICAg
Y29uc3QgVUNIQVIgICAgIFBhZ2VDb2RlID0gQ2RiX1BhZ2VDb2RlKFNyYik7Ci0KLSAgICBUcmFj
ZSgiVGFyZ2V0WyVkXSA6IElOUVVJUlkgJTAyeCVzXG4iLCBUYXJnZXRJZCwgUGFnZUNvZGUsIEV2
cGQgPyAiIEVWUEQiIDogIiIpOwotICAgIGlmIChFdnBkKSB7Ci0gICAgICAgIHN3aXRjaCAoUGFn
ZUNvZGUpIHsKLSAgICAgICAgY2FzZSAweDAwOiAgU3VjY2VzcyA9IF9fSGFuZGxlUGFnZTAwKFNy
Yik7ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDB4ODA6ICBTdWNj
ZXNzID0gX19IYW5kbGVQYWdlODAoVGFyZ2V0SWQsIChQWEVOVkJEX0lOUVVJUlkpSW5xdWlyeSwg
U3JiKTsgICBicmVhazsKLSAgICAgICAgY2FzZSAweDgzOiAgU3VjY2VzcyA9IF9fSGFuZGxlUGFn
ZTgzKFRhcmdldElkLCAoUFhFTlZCRF9JTlFVSVJZKUlucXVpcnksIFNyYik7ICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6ICAgIFN1Y2Nlc3MgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3
aXRjaCAoUGFnZUNvZGUpIHsKLSAgICAgICAgY2FzZSAweDAwOiAgU3VjY2VzcyA9IF9fSGFuZGxl
UGFnZVN0ZChTcmIpOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OiAgICBTdWNjZXNzID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoU3VjY2VzcykgewotICAgICAgICBT
cmItPlNjc2lTdGF0dXMgPSAwOyAvKiBTVUNDRVNTICovCi0gICAgICAgIFNyYi0+U3JiU3RhdHVz
ID0gU1JCX1NUQVRVU19TVUNDRVNTOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEVycm9yKCJUYXJn
ZXRbJWRdIDogSU5RVUlSWSBmYWlsZWQgJTAyeCVzXG4iLCBUYXJnZXRJZCwgUGFnZUNvZGUsIEV2
cGQgPyAiIEVWUEQiIDogIiIpOwotICAgICAgICBTcmItPlNjc2lTdGF0dXMgPSAweDAyOyAvKiBD
SEVDS19DT05ESVRJT04gKi8KLSAgICAgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX0VS
Uk9SOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvcGRvaW5xdWlyeS5oIGIvc3Jj
L3hlbnZiZC9wZG9pbnF1aXJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Y2Ix
NTUuLjAwMDAwMDAKLS0tIGEvc3JjL3hlbnZiZC9wZG9pbnF1aXJ5LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KLSAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAotICogQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAotICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBEQU1BR0UuCi0gKi8gCi0KLSNpZm5kZWYg
X1hFTlZCRF9QRE9fSU5RVUlSWV9ICi0jZGVmaW5lIF9YRU5WQkRfUERPX0lOUVVJUllfSAotCi0j
aW5jbHVkZSA8bnRkZGsuaD4KLSNpbmNsdWRlIDx4ZW52YmQtc3RvcnBvcnQuaD4KLSNpbmNsdWRl
ICJmcm9udGVuZC5oIgotCi1leHRlcm4gVk9JRAotUGRvUmVhZElucXVpcnlEYXRhKAotICAgIF9f
aW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5kLAotICAgIF9fb3V0IF9fZHJ2X2Fs
bG9jYXRlc01lbShtZW0pIFBWT0lEKiBfSW5xdWlyeQotICAgICk7Ci0KLWV4dGVybiBWT0lECi1Q
ZG9GcmVlSW5xdWlyeURhdGEoCi0gICAgX19pbiBfX2Rydl9mcmVlc01lbShtZW0pIFBWT0lEIElu
cXVpcnkKLSAgICApOwotCi1leHRlcm4gVk9JRAotUGRvVXBkYXRlSW5xdWlyeURhdGEoCi0gICAg
X19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICBGcm9udGVuZCwKLSAgICBfX2luICBQVk9JRCAg
ICAgICAgICAgICAgICAgIF9JbnF1aXJ5Ci0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLVBkb0lucXVp
cnkoCi0gICAgX19pbiBVTE9ORyAgICAgICAgICAgICAgICAgICBUYXJnZXRJZCwKLSAgICBfX2lu
IFBWT0lEICAgICAgICAgICAgICAgICAgIElucXVpcnksCi0gICAgX19pbiBQU0NTSV9SRVFVRVNU
X0JMT0NLICAgICBTcmIKLSAgICApOwotCi0jZW5kaWYgLy8gX1hFTlZCRF9QRE9fSU5RVUlSWV9I
Ci0KZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvdGFyZ2V0LmMgYi9zcmMveGVudmJkL3RhcmdldC5j
CmluZGV4IGNkNTViMGYuLmNlY2ZjZjUgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvdGFyZ2V0LmMK
KysrIGIvc3JjL3hlbnZiZC90YXJnZXQuYwpAQCAtMjksNiArMjksMTkgQEAKICAqIFNVQ0ggREFN
QUdFLgogICovCiAKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgPG50c3Ryc2FmZS5oPgor
I2luY2x1ZGUgPHN0b3Jwb3J0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDx4
ZW5jZGIuaD4KKyNpbmNsdWRlIDxuYW1lcy5oPgorI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5o
PgorI2luY2x1ZGUgPGV2dGNobl9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxnbnR0YWJfaW50ZXJm
YWNlLmg+CisjaW5jbHVkZSA8ZGVidWdfaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8c3VzcGVuZF9p
bnRlcmZhY2UuaD4KKwogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgImRyaXZlci5oIgog
I2luY2x1ZGUgImFkYXB0ZXIuaCIKQEAgLTM2LDE4ICs0OSwxMCBAQAogI2luY2x1ZGUgInF1ZXVl
LmgiCiAjaW5jbHVkZSAic3JiZXh0LmgiCiAjaW5jbHVkZSAiYnVmZmVyLmgiCi0jaW5jbHVkZSAi
cGRvaW5xdWlyeS5oIgorCiAjaW5jbHVkZSAiZGVidWcuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIK
ICNpbmNsdWRlICJ1dGlsLmgiCi0jaW5jbHVkZSA8eGVuY2RiLmg+Ci0jaW5jbHVkZSA8bmFtZXMu
aD4KLSNpbmNsdWRlIDxzdG9yZV9pbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxldnRjaG5faW50ZXJm
YWNlLmg+Ci0jaW5jbHVkZSA8Z250dGFiX2ludGVyZmFjZS5oPgotI2luY2x1ZGUgPGRlYnVnX2lu
dGVyZmFjZS5oPgotI2luY2x1ZGUgPHN1c3BlbmRfaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8c3Rk
bGliLmg+CiAKICNkZWZpbmUgVEFSR0VUX1NJR05BVFVSRSAgICAgICAgICAgJ29kcFgnCiAKQEAg
LTU4Niw2ICs1OTEsMTc2IEBAIFRhcmdldFJlYWRDYXBhY2l0eTE2KAogICAgIFNyYi0+U3JiU3Rh
dHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOwogfQogCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAor
VGFyZ2V0SW5xdWlyeVN0ZCgKKyAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgICBUYXJnZXQsCisg
ICAgSU4gIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgU3JiCisgICAgKQoreworICAgIFBJTlFVSVJZREFU
QSAgICAgICAgICAgIERhdGEgPSBTcmItPkRhdGFCdWZmZXI7CisgICAgVUxPTkcgICAgICAgICAg
ICAgICAgICAgTGVuZ3RoID0gU3JiLT5EYXRhVHJhbnNmZXJMZW5ndGg7CisKKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKFRhcmdldCk7CisKKyAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFU
VVNfRVJST1I7CisgICAgaWYgKExlbmd0aCA8IElOUVVJUllEQVRBQlVGRkVSU0laRSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUnRsWmVyb01lbW9yeShEYXRhLCBMZW5ndGgpOworICAgIERhdGEt
PkRldmljZVR5cGUgICAgICAgICAgICA9IERJUkVDVF9BQ0NFU1NfREVWSUNFOworICAgIERhdGEt
PkRldmljZVR5cGVRdWFsaWZpZXIgICA9IERFVklDRV9DT05ORUNURUQ7CisgICAgRGF0YS0+VmVy
c2lvbnMgICAgICAgICAgICAgID0gNDsKKyAgICBEYXRhLT5SZXNwb25zZURhdGFGb3JtYXQgICAg
PSAyOworICAgIERhdGEtPkFkZGl0aW9uYWxMZW5ndGggICAgICA9IElOUVVJUllEQVRBQlVGRkVS
U0laRSAtIDQ7CisgICAgRGF0YS0+Q29tbWFuZFF1ZXVlICAgICAgICAgID0gMTsKKyAgICBSdGxD
b3B5TWVtb3J5KERhdGEtPlZlbmRvcklkLCAgICAgICAgICAgICAgICJYRU5TUkMgICIsIDgpOwor
ICAgIFJ0bENvcHlNZW1vcnkoRGF0YS0+UHJvZHVjdElkLCAgICAgICAgICAgICAgIlBWRElTSyAg
ICAgICAgICAiLCAxNik7CisgICAgUnRsQ29weU1lbW9yeShEYXRhLT5Qcm9kdWN0UmV2aXNpb25M
ZXZlbCwgICAiMi4wICIsIDQpOworCisgICAgU3JiLT5EYXRhVHJhbnNmZXJMZW5ndGggPSBJTlFV
SVJZREFUQUJVRkZFUlNJWkU7CisgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitUYXJnZXRJbnF1aXJ5MDAoCisgICAg
SU4gIFBYRU5WQkRfVEFSR0VUICAgICAgICAgIFRhcmdldCwKKyAgICBJTiAgUFNDU0lfUkVRVUVT
VF9CTE9DSyAgICAgU3JiCisgICAgKQoreworICAgIFBWUERfU1VQUE9SVEVEX1BBR0VTX1BBR0Ug
ICBEYXRhID0gU3JiLT5EYXRhQnVmZmVyOworICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAg
ICBMZW5ndGggPSBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aDsKKworICAgIFVOUkVGRVJFTkNFRF9Q
QVJBTUVURVIoVGFyZ2V0KTsKKworICAgIFJ0bFplcm9NZW1vcnkoRGF0YSwgTGVuZ3RoKTsKKwor
ICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19FUlJPUjsKKyAgICBpZiAoTGVuZ3RoIDwg
NykKKyAgICAgICAgcmV0dXJuOworCisgICAgRGF0YS0+UGFnZUxlbmd0aCA9IDM7CisgICAgRGF0
YS0+U3VwcG9ydGVkUGFnZUxpc3RbMF0gPSAweDAwOworICAgIERhdGEtPlN1cHBvcnRlZFBhZ2VM
aXN0WzFdID0gMHg4MDsKKyAgICBEYXRhLT5TdXBwb3J0ZWRQYWdlTGlzdFsyXSA9IDB4ODM7CisK
KyAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCA9IDc7CisgICAgU3JiLT5TcmJTdGF0dXMgPSBT
UkJfU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitUYXJnZXRJ
bnF1aXJ5ODAoCisgICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgVGFyZ2V0LAorICAgIElOICBQ
U0NTSV9SRVFVRVNUX0JMT0NLIFNyYgorICAgICkKK3sKKyAgICBQVlBEX1NFUklBTF9OVU1CRVJf
UEFHRSBEYXRhID0gU3JiLT5EYXRhQnVmZmVyOworICAgIFVMT05HICAgICAgICAgICAgICAgICAg
IExlbmd0aCA9IFNyYi0+RGF0YVRyYW5zZmVyTGVuZ3RoOworICAgIFBWT0lEICAgICAgICAgICAg
ICAgICAgIFBhZ2U7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgU2l6ZTsKKworICAgIFBh
Z2UgPSBGcm9udGVuZEdldElucXVpcnlPdmVycmlkZShUYXJnZXQtPkZyb250ZW5kLCAweDgwLCAm
U2l6ZSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KERhdGEsIExlbmd0aCk7CisKKyAgICBTcmItPlNy
YlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7CisgICAgaWYgKFBhZ2UgJiYgU2l6ZSkgeworICAg
ICAgICBpZiAoTGVuZ3RoIDwgU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBS
dGxDb3B5TWVtb3J5KERhdGEsIFBhZ2UsIFNpemUpOworCisgICAgICAgIFNyYi0+RGF0YVRyYW5z
ZmVyTGVuZ3RoID0gU2l6ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBDSEFSICAgICAgICAgICAg
ICAgIFNlcmlhbFs1XTsKKworICAgICAgICBpZiAoTGVuZ3RoIDwgc2l6ZW9mKFZQRF9TRVJJQUxf
TlVNQkVSX1BBR0UpICsgNCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXRhLT5Q
YWdlQ29kZSAgICAgID0gMHg4MDsKKyAgICAgICAgRGF0YS0+UGFnZUxlbmd0aCAgICA9IDQ7Cisg
ICAgICAgIChWT0lEKSBSdGxTdHJpbmdDYlByaW50ZkEoU2VyaWFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVvZihTZXJpYWwpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIlMDR1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
YXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpKTsKKyAgICAgICAgUnRsQ29weU1lbW9yeShEYXRhLT5T
ZXJpYWxOdW1iZXIsIFNlcmlhbCwgNCk7CisKKyAgICAgICAgU3JiLT5EYXRhVHJhbnNmZXJMZW5n
dGggPSBzaXplb2YoVlBEX1NFUklBTF9OVU1CRVJfUEFHRSkgKyA0OworICAgIH0KKworICAgIFNy
Yi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorVGFyZ2V0SW5xdWlyeTgzKAorICAgIElOICBQWEVOVkJEX1RBUkdFVCAgICAgICAg
ICBUYXJnZXQsCisgICAgSU4gIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgICAgIFNyYgorICAgICkKK3sK
KyAgICBQVlBEX0lERU5USUZJQ0FUSU9OX1BBR0UgICAgRGF0YSA9IFNyYi0+RGF0YUJ1ZmZlcjsK
KyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoID0gU3JiLT5EYXRhVHJhbnNm
ZXJMZW5ndGg7CisgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgICAgIFBhZ2U7CisgICAgVUxP
TkcgICAgICAgICAgICAgICAgICAgICAgIFNpemU7CisKKyAgICBQYWdlID0gRnJvbnRlbmRHZXRJ
bnF1aXJ5T3ZlcnJpZGUoVGFyZ2V0LT5Gcm9udGVuZCwgMHg4MywgJlNpemUpOworCisgICAgUnRs
WmVyb01lbW9yeShEYXRhLCBMZW5ndGgpOworCisgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RB
VFVTX0VSUk9SOworICAgIGlmIChQYWdlICYmIFNpemUpIHsKKyAgICAgICAgaWYgKExlbmd0aCA8
IFNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUnRsQ29weU1lbW9yeShEYXRh
LCBQYWdlLCBTaXplKTsKKworICAgICAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCA9IFNpemU7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgUFZQRF9JREVOVElGSUNBVElPTl9ERVNDUklQVE9SICBJ
ZCA9IChQVlBEX0lERU5USUZJQ0FUSU9OX0RFU0NSSVBUT1IpJkRhdGEtPkRlc2NyaXB0b3JzWzBd
OworICAgICAgICBDSEFSICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXJbMTdd
OworCisgICAgICAgIGlmIChMZW5ndGggPCBzaXplb2YoVlBEX0lERU5USUZJQ0FUSU9OX1BBR0Up
ICsKKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihWUERfSURFTlRJRklDQVRJT05fREVTQ1JJ
UFRPUikgKyAxNikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXRhLT5QYWdlQ29k
ZSA9IDB4ODM7CisgICAgICAgIERhdGEtPlBhZ2VMZW5ndGggPSBzaXplb2YoVlBEX0lERU5USUZJ
Q0FUSU9OX0RFU0NSSVBUT1IpICsgMTY7CisKKyAgICAgICAgSWQtPkNvZGVTZXQgICAgICAgICA9
IFZwZENvZGVTZXRBc2NpaTsKKyAgICAgICAgSWQtPklkZW50aWZpZXJUeXBlICA9IFZwZElkZW50
aWZpZXJUeXBlVmVuZG9ySWQ7CisgICAgICAgIElkLT5JZGVudGlmaWVyTGVuZ3RoID0gMTY7Cisg
ICAgICAgIChWT0lEKSBSdGxTdHJpbmdDYlByaW50ZkEoSWRlbnRpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSWRlbnRpZmllciksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlhFTlNSQyAgJTA4dSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSk7CisgICAgICAgIFJ0bENv
cHlNZW1vcnkoSWQtPklkZW50aWZpZXIsIElkZW50aWZpZXIsIDE2KTsKKworICAgICAgICBTcmIt
PkRhdGFUcmFuc2Zlckxlbmd0aCA9IHNpemVvZihWUERfSURFTlRJRklDQVRJT05fUEFHRSkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihWUERfSURFTlRJRklDQVRJ
T05fREVTQ1JJUFRPUikgKyAxNjsKKyAgICB9CisKKyAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9T
VEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQKK1Rhcmdl
dElucXVpcnkoCisgICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgVGFyZ2V0LAorICAgIElOICBQ
U0NTSV9SRVFVRVNUX0JMT0NLIFNyYgorICAgICkKK3sKKyAgICBpZiAoQ2RiX0VWUEQoU3JiKSkg
eworICAgICAgICBzd2l0Y2ggKENkYl9QYWdlQ29kZShTcmIpKSB7CisgICAgICAgIGNhc2UgMHgw
MDogIFRhcmdldElucXVpcnkwMChUYXJnZXQsIFNyYik7ICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDB4ODA6ICBUYXJnZXRJbnF1aXJ5ODAoVGFyZ2V0LCBTcmIpOyAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAweDgzOiAgVGFyZ2V0SW5xdWlyeTgzKFRhcmdldCwgU3JiKTsgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6ICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19FUlJP
UjsgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChDZGJf
UGFnZUNvZGUoU3JiKSkgeworICAgICAgICBjYXNlIDB4MDA6ICBUYXJnZXRJbnF1aXJ5U3RkKFRh
cmdldCwgU3JiKTsgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDogICAgU3JiLT5TcmJTdGF0
dXMgPSBTUkJfU1RBVFVTX0VSUk9SOyAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0
YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCiBfX1ZhbGlkYXRlU3JiRm9yVGFyZ2V0KAogICAgIElO
ICBQWEVOVkJEX1RBUkdFVCAgICAgIFRhcmdldCwKQEAgLTY4Miw5ICs4NTcsNyBAQCBUYXJnZXRT
dGFydElvKAogICAgIGNhc2UgU0NTSU9QX0lOUVVJUlk6CiAgICAgICAgIEFkYXB0ZXJTZXREZXZp
Y2VRdWV1ZURlcHRoKFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSk7Ci0gICAgICAgIFBk
b0lucXVpcnkoVGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSwKLSAgICAgICAgICAgICAgICAgICBG
cm9udGVuZEdldElucXVpcnkoVGFyZ2V0LT5Gcm9udGVuZCksCi0gICAgICAgICAgICAgICAgICAg
U3JiKTsKKyAgICAgICAgVGFyZ2V0SW5xdWlyeShUYXJnZXQsIFNyYik7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBTQ1NJT1BfTU9ERV9TRU5TRToKZGlmZiAtLWdpdCBhL3ZzMjAxNS94ZW52
YmQveGVudmJkLnZjeHByb2ogYi92czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9qCmluZGV4IDgy
NzQ5YWQuLmQ1YjgxMmIgMTAwNjQ0Ci0tLSBhL3ZzMjAxNS94ZW52YmQveGVudmJkLnZjeHByb2oK
KysrIGIvdnMyMDE1L3hlbnZiZC94ZW52YmQudmN4cHJvagpAQCAtNzAsNyArNzAsNyBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbnZiZC9hZGFwdGVyLmMiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL2Zyb250ZW5kLmMiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL3RhcmdldC5jIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbnZiZC9wZG9pbnF1aXJ5LmMiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVudmJkL2Jhc2U2NC5jIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbnZiZC9xdWV1ZS5jIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbnZiZC90aHJlYWQuYyIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW52YmQvcmluZy5jIiAvPgotLSAKMi44LjMKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 20 15:59:06 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Sep 2017 15:59:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1duhP0-00022S-OZ; Wed, 20 Sep 2017 15:59:06 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=429c8a50c=owen.smith@citrix.com>)
 id 1duhOy-00020r-QU
 for win-pv-devel@lists.xenproject.org; Wed, 20 Sep 2017 15:59:05 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
 C9/A8-27708-84092C95; Wed, 20 Sep 2017 15:59:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAIsWRWlGSWpSXmKPExsXitHRDpK7bhEO
 RBmdOKFj8WZzowOhx+MMVlgDGKNbMvKT8igTWjO6NhQWLf7NWnL7+iLGBccYEli5GDg4JAX+J
 R00hXYycHGwCshIfV35mBrFFBNQl9n3eygRiMwuoSVzf38UKYgsLWEqc3vuHEcRmEVCVmP1uD
 zuIzQsUf7/rJguILSEgJzF58SWwGk4BK4nHM2Ywg6wSAqk55gsSFhJQkvi2+AUzRKugxMmZT1
 ggVklIHHzxgnkCI+8sJKlZSFILGJlWMaoXpxaVpRbpGuklFWWmZ5TkJmbm6BoamOrlphYXJ6a
 n5iQmFesl5+duYgSGDQMQ7GD8/sfpEKMkB5OSKG/18YORQnxJ+SmVGYnFGfFFpTmpxYcYZTg4
 lCR4H1wAygkWpaanVqRl5gADGCYtwcGjJMLLchEozVtckJhbnJkOkTrFaM+x7NylP0wcHTfvA
 slNYHLD9wd/mIRY8vLzUqXEea+CTBUAacsozYMbCou4S4yyUsK8jEBnCvEUpBblZpagyr9iFO
 dgVBLm5QBZzpOZVwK3+xXQWUxAZ2VvOAByVkkiQkqqgXF205OssJOpiy/VHL9z53Pjv0tzVy6
 vvXRf45/X9+3+Sa8Vj95dmDxV+gbbE41Gkem3onmLwrk9O1/qsx8RemHvlipQWz/zh9LmMM6I
 TI0330+uj0sOClWP4VHb5tAdde/c7+oFU+U/PypgNzLJ+mUU0qkunnVGM6Bp/8wrP7kuXY0vk
 LoRoKvEUpyRaKjFXFScCAC/Pg/RswIAAA==
X-Env-Sender: prvs=429c8a50c=owen.smith@citrix.com
X-Msg-Ref: server-16.tower-206.messagelabs.com!1505923138!92468364!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1523 invoked from network); 20 Sep 2017 15:59:01 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-16.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 20 Sep 2017 15:59:00 -0000
X-IronPort-AV: E=Sophos;i="5.42,421,1500940800"; d="scan'208";a="440535941"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Wed, 20 Sep 2017 16:53:21 +0100
Message-ID: <20170920155325.5860-4-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
References: <20170920155325.5860-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/7] Move request prepare/cleanup to ring
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKS2VlcCB0aGUgYmxraWYg
cHJvdG9jb2wgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIHJpbmcgY29kZSwgYW5kCmtlZXAgdGhl
IHRhcmdldCBjb2RlIHJlbGF0ZWQgdG8gU0NTSSBvcGVyYXRpb25zCgpTaWduZWQtb2ZmLWJ5OiBP
d2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQogc3JjL3hlbnZiZC9mcm9udGVu
ZC5jIHwgICA0MiArLQogc3JjL3hlbnZiZC9mcm9udGVuZC5oIHwgICAxMiArLQogc3JjL3hlbnZi
ZC9yaW5nLmMgICAgIHwgMTU1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLS0tLS0tCiBzcmMveGVudmJkL3JpbmcuaCAgICAgfCAgIDIyICstCiBzcmMveGVudmJk
L3RhcmdldC5jICAgfCAxMjgxICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIHNyYy94ZW52YmQvdGFyZ2V0LmggICB8ICAgMTIgLQogNiBmaWxlcyBjaGFuZ2VkLCAxNDM0
IGluc2VydGlvbnMoKyksIDE0ODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZi
ZC9mcm9udGVuZC5jIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5jCmluZGV4IGZjYTM2MGEuLjUwMTQ1
OTMgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQuYworKysgYi9zcmMveGVudmJkL2Zy
b250ZW5kLmMKQEAgLTI2MCwyMSArMjYwLDYgQEAgb3V0OgogCiAvLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CiBfX2Rydl9yZXF1aXJlc0lSUUwoRElTUEFUQ0hfTEVWRUwpCi1CT09MRUFOCi1Gcm9udGVu
ZE5vdGlmeVJlc3BvbnNlcygKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9u
dGVuZAotICAgICkKLXsKLSAgICBCT09MRUFOICAgICBSZXRyeSA9IEZBTFNFOwotCi0gICAgUmV0
cnkgfD0gUmluZ1BvbGwoRnJvbnRlbmQtPlJpbmcpOwotICAgIFJldHJ5IHw9IFRhcmdldFN1Ym1p
dFJlcXVlc3RzKEZyb250ZW5kLT5UYXJnZXQpOwotCi0gICAgcmV0dXJuIFJldHJ5OwotfQotCi0v
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci1fX2Rydl9yZXF1aXJlc0lSUUwoRElTUEFUQ0hfTEVWRUwp
CiBzdGF0aWMgTlRTVEFUVVMKIF9fVXBkYXRlQmFja2VuZFBhdGgoCiAgICAgX19pbiAgUFhFTlZC
RF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQKQEAgLTE1NzQsNiArMTU1OSwzMyBAQCBGcm9udGVu
ZEJhY2tlbmQoCiB9CiAKIE5UU1RBVFVTCitGcm9udGVuZFJlc2V0KAorICAgIElOICBQWEVOVkJE
X0ZST05URU5EICAgIEZyb250ZW5kCisgICAgKQoreworICAgIFhFTlZCRF9TVEFURSAgICAgICAg
ICAgIFByZXZpb3VzU3RhdGUgPSBGcm9udGVuZC0+U3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgaWYgKFByZXZpb3VzU3RhdGUgIT0gWEVOVkJEX0VOQUJM
RUQpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIHN0YXR1cyA9IEZyb250ZW5kU2V0U3RhdGUo
RnJvbnRlbmQsIFhFTlZCRF9DTE9TRUQpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQor
ICAgICAgICBnb3RvIGZhaWwxOworCisgICAgc3RhdHVzID0gRnJvbnRlbmRTZXRTdGF0ZShGcm9u
dGVuZCwgUHJldmlvdXNTdGF0ZSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAg
ICAgIGdvdG8gZmFpbDI7CisKK2RvbmU6CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitm
YWlsMjoKK2ZhaWwxOgorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK05UU1RBVFVTCiBGcm9udGVu
ZENyZWF0ZSgKICAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgICAgICAgVGFyZ2V0LAogICAgIElO
ICBQQ0hBUiAgICAgICAgICAgICAgICAgICBEZXZpY2VJZCwKZGlmZiAtLWdpdCBhL3NyYy94ZW52
YmQvZnJvbnRlbmQuaCBiL3NyYy94ZW52YmQvZnJvbnRlbmQuaAppbmRleCA0OWMxMjFjLi5kNjA4
ZmVmIDEwMDY0NAotLS0gYS9zcmMveGVudmJkL2Zyb250ZW5kLmgKKysrIGIvc3JjL3hlbnZiZC9m
cm9udGVuZC5oCkBAIC0xMDgsMTMgKzEwOCw2IEBAIEZyb250ZW5kV3JpdGVVc2FnZSgKICAgICBf
X2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBGcm9udGVuZAogICAgICk7CiAKLS8vIFJpbmcK
LV9fZHJ2X3JlcXVpcmVzSVJRTChESVNQQVRDSF9MRVZFTCkKLWV4dGVybiBCT09MRUFOCi1Gcm9u
dGVuZE5vdGlmeVJlc3BvbnNlcygKLSAgICBfX2luICBQWEVOVkJEX0ZST05URU5EICAgICAgICBG
cm9udGVuZAotICAgICk7Ci0KIC8vIEluaXQvVGVybQogX19jaGVja1JldHVybgogX19kcnZfbWF4
SVJRTChESVNQQVRDSF9MRVZFTCkKQEAgLTEzNyw2ICsxMzAsMTEgQEAgRnJvbnRlbmRTZXRTdGF0
ZSgKICAgICApOwogCiBleHRlcm4gTlRTVEFUVVMKK0Zyb250ZW5kUmVzZXQoCisgICAgSU4gIFBY
RU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKKyAgICApOworCitleHRlcm4gTlRTVEFUVVMKIEZy
b250ZW5kQ3JlYXRlKAogICAgIElOICBQWEVOVkJEX1RBUkdFVCAgICAgICAgICBUYXJnZXQsCiAg
ICAgSU4gIFBDSEFSICAgICAgICAgICAgICAgICAgIERldmljZUlkLApkaWZmIC0tZ2l0IGEvc3Jj
L3hlbnZiZC9yaW5nLmMgYi9zcmMveGVudmJkL3JpbmcuYwppbmRleCBlYjVmY2M3Li5mZmQyNzFk
IDEwMDc1NQotLS0gYS9zcmMveGVudmJkL3JpbmcuYworKysgYi9zcmMveGVudmJkL3JpbmcuYwpA
QCAtMzAsOSArMzAsMTEgQEAKICAqLyAKIAogI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVkZSA8
c3RvcnBvcnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxudHN0cnNhZmUuaD4K
IAorI2luY2x1ZGUgPHhlbmNkYi5oPgogI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgogI2lu
Y2x1ZGUgPGV2dGNobl9pbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxkZWJ1Z19pbnRlcmZhY2UuaD4K
QEAgLTQ0LDYgKzQ2LDggQEAKICNpbmNsdWRlICJzcmJleHQuaCIKICNpbmNsdWRlICJkcml2ZXIu
aCIKICNpbmNsdWRlICJncmFudGVyLmgiCisjaW5jbHVkZSAicXVldWUuaCIKKyNpbmNsdWRlICJi
dWZmZXIuaCIKIAogI2luY2x1ZGUgInV0aWwuaCIKICNpbmNsdWRlICJkZWJ1Zy5oIgpAQCAtNTMs
NiArNTcsMTQgQEAKICNkZWZpbmUgWEVOVkJEX01BWF9SSU5HX1BBR0VfT1JERVIgICg0KQogI2Rl
ZmluZSBYRU5WQkRfTUFYX1JJTkdfUEFHRVMgICAgICAgKDEgPDwgWEVOVkJEX01BWF9SSU5HX1BB
R0VfT1JERVIpCiAKK3R5cGVkZWYgc3RydWN0IF9YRU5WQkRfTE9PS0FTSURFIHsKKyAgICBMT05H
ICAgICAgICAgICAgICAgICAgICAgICAgVXNlZDsKKyAgICBMT05HICAgICAgICAgICAgICAgICAg
ICAgICAgTWF4OworICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBGYWlsZWQ7CisgICAg
VUxPTkcgICAgICAgICAgICAgICAgICAgICAgIFNpemU7CisgICAgTlBBR0VEX0xPT0tBU0lERV9M
SVNUICAgICAgIExpc3Q7Cit9IFhFTlZCRF9MT09LQVNJREUsICpQWEVOVkJEX0xPT0tBU0lERTsK
Kwogc3RydWN0IF9YRU5WQkRfUklORyB7CiAgICAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgICAg
ICAgICBGcm9udGVuZDsKICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5l
Y3RlZDsKQEAgLTc1LDE2ICs4NywxMTIgQEAgc3RydWN0IF9YRU5WQkRfUklORyB7CiAgICAgS0RQ
QyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lckRwYzsKICAgICBLVElNRVIgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVyOwogCisgICAgWEVOVkJEX0xPT0tBU0lERSAgICAgICAg
ICAgICAgICBSZXF1ZXN0TGlzdDsKKyAgICBYRU5WQkRfTE9PS0FTSURFICAgICAgICAgICAgICAg
IFNlZ21lbnRMaXN0OworICAgIFhFTlZCRF9MT09LQVNJREUgICAgICAgICAgICAgICAgSW5kaXJl
Y3RMaXN0OworICAgIFhFTlZCRF9RVUVVRSAgICAgICAgICAgICAgICAgICAgRnJlc2hTcmJzOwor
ICAgIFhFTlZCRF9RVUVVRSAgICAgICAgICAgICAgICAgICAgUHJlcGFyZWRSZXFzOworICAgIFhF
TlZCRF9RVUVVRSAgICAgICAgICAgICAgICAgICAgU3VibWl0dGVkUmVxczsKKyAgICBYRU5WQkRf
UVVFVUUgICAgICAgICAgICAgICAgICAgIFNodXRkb3duU3JiczsKKyAgICBVTE9ORyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5leHRUYWc7CisKICAgICBVTE9ORyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN1Ym1pdHRlZDsKICAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlY2VpdmVkOwogICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzOwog
ICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgRHBjczsKKyAgICBVTE9ORyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJsa09wUmVhZDsKKyAgICBVTE9ORyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJsa09wV3JpdGU7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCbGtPcEluZGlyZWN0UmVhZDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJsa09wSW5kaXJlY3RXcml0ZTsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJsa09wQmFycmllcjsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJs
a09wRGlzY2FyZDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsa09wRmx1
c2g7CisgICAgVUxPTkc2NCAgICAgICAgICAgICAgICAgICAgICAgICBTZWdzR3JhbnRlZDsKKyAg
ICBVTE9ORzY0ICAgICAgICAgICAgICAgICAgICAgICAgIFNlZ3NCb3VuY2VkOwogfTsKIAogI2Rl
ZmluZSBNQVhfTkFNRV9MRU4gICAgICAgICAgICAgICAgNjQKICNkZWZpbmUgUklOR19QT09MX1RB
RyAgICAgICAgICAgICAgICdnblJYJworI2RlZmluZSBSRVFVRVNUX1BPT0xfVEFHICAgICAgICAg
ICAgJ3FlUlgnCisjZGVmaW5lIFNFR01FTlRfUE9PTF9UQUcgICAgICAgICAgICAnZ2VTWCcKKyNk
ZWZpbmUgSU5ESVJFQ1RfUE9PTF9UQUcgICAgICAgICAgICdkbklYJwogI2RlZmluZSBYRU5fSU9f
UFJPVE9fQUJJICAgICAgICAgICAgIng4Nl82NC1hYmkiCiAKK3N0YXRpYyBGT1JDRUlOTElORSBW
T0lECitfX0xvb2thc2lkZUluaXQoCisgICAgSU4gT1VUICBQWEVOVkJEX0xPT0tBU0lERSAgIExv
b2thc2lkZSwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgU2l6ZSwKKyAgICBJTiAg
VUxPTkcgICAgICAgICAgICAgICAgICAgVGFnCisgICAgKQoreworICAgIFJ0bFplcm9NZW1vcnko
TG9va2FzaWRlLCBzaXplb2YoWEVOVkJEX0xPT0tBU0lERSkpOworICAgIExvb2thc2lkZS0+U2l6
ZSA9IFNpemU7CisgICAgRXhJbml0aWFsaXplTlBhZ2VkTG9va2FzaWRlTGlzdCgmTG9va2FzaWRl
LT5MaXN0LCBOVUxMLCBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2l6ZSwgVGFnLCAwKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fTG9va2Fz
aWRlVGVybSgKKyAgICBJTiAgUFhFTlZCRF9MT09LQVNJREUgICAgICAgTG9va2FzaWRlCisgICAg
KQoreworICAgIEFTU0VSVDNVKExvb2thc2lkZS0+VXNlZCwgPT0sIDApOworICAgIEV4RGVsZXRl
TlBhZ2VkTG9va2FzaWRlTGlzdCgmTG9va2FzaWRlLT5MaXN0KTsKKyAgICBSdGxaZXJvTWVtb3J5
KExvb2thc2lkZSwgc2l6ZW9mKFhFTlZCRF9MT09LQVNJREUpKTsKK30KKworc3RhdGljIEZPUkNF
SU5MSU5FIFBWT0lECitfX0xvb2thc2lkZUFsbG9jKAorICAgIElOICBQWEVOVkJEX0xPT0tBU0lE
RSAgICAgICBMb29rYXNpZGUKKyAgICApCit7CisgICAgTE9ORyAgICBSZXN1bHQ7CisgICAgUFZP
SUQgICBCdWZmZXI7CisKKyAgICBCdWZmZXIgPSBFeEFsbG9jYXRlRnJvbU5QYWdlZExvb2thc2lk
ZUxpc3QoJkxvb2thc2lkZS0+TGlzdCk7CisgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7CisgICAg
ICAgICsrTG9va2FzaWRlLT5GYWlsZWQ7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor
ICAgIFJ0bFplcm9NZW1vcnkoQnVmZmVyLCBMb29rYXNpZGUtPlNpemUpOworICAgIFJlc3VsdCA9
IEludGVybG9ja2VkSW5jcmVtZW50KCZMb29rYXNpZGUtPlVzZWQpOworICAgIEFTU0VSVDNTKFJl
c3VsdCwgPiwgMCk7CisgICAgaWYgKFJlc3VsdCA+IExvb2thc2lkZS0+TWF4KQorICAgICAgICBM
b29rYXNpZGUtPk1heCA9IFJlc3VsdDsKKworICAgIHJldHVybiBCdWZmZXI7Cit9CisKK3N0YXRp
YyBGT1JDRUlOTElORSBWT0lECitfX0xvb2thc2lkZUZyZWUoCisgICAgSU4gIFBYRU5WQkRfTE9P
S0FTSURFICAgICAgIExvb2thc2lkZSwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICAgICAg
QnVmZmVyCisgICAgKQoreworICAgIExPTkcgICAgICAgICAgICBSZXN1bHQ7CisKKyAgICBFeEZy
ZWVUb05QYWdlZExvb2thc2lkZUxpc3QoJkxvb2thc2lkZS0+TGlzdCwgQnVmZmVyKTsKKyAgICBS
ZXN1bHQgPSBJbnRlcmxvY2tlZERlY3JlbWVudCgmTG9va2FzaWRlLT5Vc2VkKTsKKyAgICBBU1NF
UlQzUyhSZXN1bHQsID49LCAwKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fTG9v
a2FzaWRlRGVidWcoCisgICAgSU4gIFBYRU5WQkRfTE9PS0FTSURFICAgICAgICAgICBMb29rYXNp
ZGUsCisgICAgSU4gIFBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICBEZWJ1ZywKKyAgICBJTiAg
UENIQVIgICAgICAgICAgICAgICAgICAgICAgIE5hbWUKKyAgICApCit7CisgICAgWEVOQlVTX0RF
QlVHKFByaW50ZiwgRGVidWcsCisgICAgICAgICAgICAgICAgICJMT09LQVNJREU6ICVzOiAldSAv
ICV1ICgldSBmYWlsZWQpXG4iLAorICAgICAgICAgICAgICAgICBOYW1lLCBMb29rYXNpZGUtPlVz
ZWQsCisgICAgICAgICAgICAgICAgIExvb2thc2lkZS0+TWF4LCBMb29rYXNpZGUtPkZhaWxlZCk7
CisKKyAgICBMb29rYXNpZGUtPk1heCA9IExvb2thc2lkZS0+VXNlZDsKKyAgICBMb29rYXNpZGUt
PkZhaWxlZCA9IDA7Cit9CisKIHN0YXRpYyBGT1JDRUlOTElORSBQVk9JRAogX19SaW5nQWxsb2Nh
dGUoCiAgICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgKQEAgLTE3Nyw4
NCArMjg1LDExMDEgQEAgX19SaW5nSW5zZXJ0KAogICAgICAgICAgICAgUExJU1RfRU5UUlkgICAg
ICAgICAgICAgICAgIFNlZ0VudHJ5OwogICAgICAgICAgICAgYmxraWZfcmVxdWVzdF9pbmRpcmVj
dF90KiAgIHJlcV9pbmRpcmVjdDsKIAotICAgICAgICAgICAgcmVxX2luZGlyZWN0ID0gKGJsa2lm
X3JlcXVlc3RfaW5kaXJlY3RfdCopcmVxOwotICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5vcGVy
YXRpb24gICAgICAgICA9IEJMS0lGX09QX0lORElSRUNUOwotICAgICAgICAgICAgcmVxX2luZGly
ZWN0LT5pbmRpcmVjdF9vcCAgICAgICA9IFJlcXVlc3QtPk9wZXJhdGlvbjsKLSAgICAgICAgICAg
IHJlcV9pbmRpcmVjdC0+bnJfc2VnbWVudHMgICAgICAgPSBSZXF1ZXN0LT5OclNlZ21lbnRzOwot
ICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5pZCAgICAgICAgICAgICAgICA9IF9fUmluZ0dldFRh
ZyhSaW5nLCBSZXF1ZXN0KTsKLSAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+c2VjdG9yX251bWJl
ciAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKLSAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+
aGFuZGxlICAgICAgICAgICAgPSAoVVNIT1JUKUZyb250ZW5kR2V0RGV2aWNlSWQoUmluZy0+RnJv
bnRlbmQpOworICAgICAgICAgICAgcmVxX2luZGlyZWN0ID0gKGJsa2lmX3JlcXVlc3RfaW5kaXJl
Y3RfdCopcmVxOworICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5vcGVyYXRpb24gICAgICAgICA9
IEJMS0lGX09QX0lORElSRUNUOworICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5pbmRpcmVjdF9v
cCAgICAgICA9IFJlcXVlc3QtPk9wZXJhdGlvbjsKKyAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+
bnJfc2VnbWVudHMgICAgICAgPSBSZXF1ZXN0LT5OclNlZ21lbnRzOworICAgICAgICAgICAgcmVx
X2luZGlyZWN0LT5pZCAgICAgICAgICAgICAgICA9IF9fUmluZ0dldFRhZyhSaW5nLCBSZXF1ZXN0
KTsKKyAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+c2VjdG9yX251bWJlciAgICAgPSBSZXF1ZXN0
LT5GaXJzdFNlY3RvcjsKKyAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+aGFuZGxlICAgICAgICAg
ICAgPSAoVVNIT1JUKUZyb250ZW5kR2V0RGV2aWNlSWQoUmluZy0+RnJvbnRlbmQpOworCisgICAg
ICAgICAgICBmb3IgKFBhZ2VJZHggPSAwLAorICAgICAgICAgICAgICAgICBQYWdlRW50cnkgPSBS
ZXF1ZXN0LT5JbmRpcmVjdHMuRmxpbmssCisgICAgICAgICAgICAgICAgIFNlZ0VudHJ5ID0gUmVx
dWVzdC0+U2VnbWVudHMuRmxpbms7CisgICAgICAgICAgICAgICAgICAgIFBhZ2VJZHggPCBCTEtJ
Rl9NQVhfSU5ESVJFQ1RfUEFHRVNfUEVSX1JFUVVFU1QgJiYKKyAgICAgICAgICAgICAgICAgICAg
UGFnZUVudHJ5ICE9ICZSZXF1ZXN0LT5JbmRpcmVjdHMgJiYKKyAgICAgICAgICAgICAgICAgICAg
U2VnRW50cnkgIT0gJlJlcXVlc3QtPlNlZ21lbnRzOworICAgICAgICAgICAgICAgICAgICAgICAg
KytQYWdlSWR4LCBQYWdlRW50cnkgPSBQYWdlRW50cnktPkZsaW5rKSB7CisgICAgICAgICAgICAg
ICAgUFhFTlZCRF9JTkRJUkVDVCBQYWdlID0gQ09OVEFJTklOR19SRUNPUkQoUGFnZUVudHJ5LCBY
RU5WQkRfSU5ESVJFQ1QsIEVudHJ5KTsKKworICAgICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+
aW5kaXJlY3RfZ3JlZnNbUGFnZUlkeF0gPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFBhZ2Ut
PkdyYW50KTsKKworICAgICAgICAgICAgICAgIGZvciAoU2VnSWR4ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFNlZ0lkeCA8IFhFTlZCRF9NQVhfU0VHTUVOVFNfUEVSX1BBR0UgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFNlZ0VudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArK1NlZ0lkeCwgU2VnRW50cnkgPSBTZWdFbnRyeS0+
RmxpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgUFhFTlZCRF9TRUdNRU5UIFNlZ21lbnQgPSBD
T05UQUlOSU5HX1JFQ09SRChTZWdFbnRyeSwgWEVOVkJEX1NFR01FTlQsIEVudHJ5KTsKKworICAg
ICAgICAgICAgICAgICAgICBQYWdlLT5QYWdlW1NlZ0lkeF0uR3JhbnRSZWYgPSBHcmFudGVyUmVm
ZXJlbmNlKEdyYW50ZXIsIFNlZ21lbnQtPkdyYW50KTsKKyAgICAgICAgICAgICAgICAgICAgUGFn
ZS0+UGFnZVtTZWdJZHhdLkZpcnN0ICAgID0gU2VnbWVudC0+Rmlyc3RTZWN0b3I7CisgICAgICAg
ICAgICAgICAgICAgIFBhZ2UtPlBhZ2VbU2VnSWR4XS5MYXN0ICAgICA9IFNlZ21lbnQtPkxhc3RT
ZWN0b3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gRGlyZWN0CisgICAgICAgICAgICBVTE9ORyAgICAgICAgICAgSW5k
ZXg7CisgICAgICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnk7CisKKyAgICAgICAgICAgIHJl
cS0+b3BlcmF0aW9uICAgICAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5PcGVyYXRpb247CisgICAg
ICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAgICAgICAgICAgID0gKFVDSEFSKVJlcXVlc3Qt
Pk5yU2VnbWVudHM7CisgICAgICAgICAgICByZXEtPmhhbmRsZSAgICAgICAgICAgICAgICAgICAg
ID0gKFVTSE9SVClGcm9udGVuZEdldERldmljZUlkKFJpbmctPkZyb250ZW5kKTsKKyAgICAgICAg
ICAgIHJlcS0+aWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywg
UmVxdWVzdCk7CisgICAgICAgICAgICByZXEtPnNlY3Rvcl9udW1iZXIgICAgICAgICAgICAgID0g
UmVxdWVzdC0+Rmlyc3RTZWN0b3I7CisKKyAgICAgICAgICAgIGZvciAoSW5kZXggPSAwLCBFbnRy
eSA9IFJlcXVlc3QtPlNlZ21lbnRzLkZsaW5rOworICAgICAgICAgICAgICAgICAgICBJbmRleCA8
IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCAmJgorICAgICAgICAgICAgICAgICAgICBF
bnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7CisgICAgICAgICAgICAgICAgICAgICAgICArK0lu
ZGV4LCBFbnRyeSA9IEVudHJ5LT5GbGluaykgeworICAgICAgICAgICAgICAgIFBYRU5WQkRfU0VH
TUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TRUdNRU5ULCBF
bnRyeSk7CisgICAgICAgICAgICAgICAgcmVxLT5zZWdbSW5kZXhdLmdyZWYgICAgICAgID0gR3Jh
bnRlclJlZmVyZW5jZShHcmFudGVyLCBTZWdtZW50LT5HcmFudCk7CisgICAgICAgICAgICAgICAg
cmVxLT5zZWdbSW5kZXhdLmZpcnN0X3NlY3QgID0gU2VnbWVudC0+Rmlyc3RTZWN0b3I7CisgICAg
ICAgICAgICAgICAgcmVxLT5zZWdbSW5kZXhdLmxhc3Rfc2VjdCAgID0gU2VnbWVudC0+TGFzdFNl
Y3RvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQkxLSUZfT1BfV1JJVEVfQkFSUklFUjoKKyAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tD
QUNIRToKKyAgICAgICAgcmVxLT5vcGVyYXRpb24gICAgICAgICAgICAgICAgICA9IFJlcXVlc3Qt
Pk9wZXJhdGlvbjsKKyAgICAgICAgcmVxLT5ucl9zZWdtZW50cyAgICAgICAgICAgICAgICA9IDA7
CisgICAgICAgIHJlcS0+aGFuZGxlICAgICAgICAgICAgICAgICAgICAgPSAoVVNIT1JUKUZyb250
ZW5kR2V0RGV2aWNlSWQoUmluZy0+RnJvbnRlbmQpOworICAgICAgICByZXEtPmlkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gX19SaW5nR2V0VGFnKFJpbmcsIFJlcXVlc3QpOworICAgICAgICBy
ZXEtPnNlY3Rvcl9udW1iZXIgICAgICAgICAgICAgID0gUmVxdWVzdC0+Rmlyc3RTZWN0b3I7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBCTEtJRl9PUF9ESVNDQVJEOiB7CisgICAgICAgIGJs
a2lmX3JlcXVlc3RfZGlzY2FyZF90KiAgICAgICAgcmVxX2Rpc2NhcmQ7CisgICAgICAgIHJlcV9k
aXNjYXJkID0gKGJsa2lmX3JlcXVlc3RfZGlzY2FyZF90KilyZXE7CisgICAgICAgIHJlcV9kaXNj
YXJkLT5vcGVyYXRpb24gICAgICAgICAgPSBCTEtJRl9PUF9ESVNDQVJEOworICAgICAgICByZXFf
ZGlzY2FyZC0+ZmxhZyAgICAgICAgICAgICAgID0gUmVxdWVzdC0+RmxhZ3M7CisgICAgICAgIHJl
cV9kaXNjYXJkLT5oYW5kbGUgICAgICAgICAgICAgPSAoVVNIT1JUKUZyb250ZW5kR2V0RGV2aWNl
SWQoUmluZy0+RnJvbnRlbmQpOworICAgICAgICByZXFfZGlzY2FyZC0+aWQgICAgICAgICAgICAg
ICAgID0gX19SaW5nR2V0VGFnKFJpbmcsIFJlcXVlc3QpOworICAgICAgICByZXFfZGlzY2FyZC0+
c2VjdG9yX251bWJlciAgICAgID0gUmVxdWVzdC0+Rmlyc3RTZWN0b3I7CisgICAgICAgIHJlcV9k
aXNjYXJkLT5ucl9zZWN0b3JzICAgICAgICAgPSBSZXF1ZXN0LT5OclNlY3RvcnM7CisgICAgICAg
IH0gYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgKytSaW5nLT5TdWJtaXR0ZWQ7Cit9CisKK3N0YXRpYyBQWEVO
VkJEX0lORElSRUNUCitSaW5nR2V0SW5kaXJlY3QoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBS
aW5nCisgICAgKQoreworICAgIFBYRU5WQkRfSU5ESVJFQ1QgICAgSW5kaXJlY3Q7CisgICAgTlRT
VEFUVVMgICAgICAgICAgICBzdGF0dXM7CisgICAgUFhFTlZCRF9HUkFOVEVSICAgICBHcmFudGVy
ID0gRnJvbnRlbmRHZXRHcmFudGVyKFJpbmctPkZyb250ZW5kKTsKKworICAgIEluZGlyZWN0ID0g
X19Mb29rYXNpZGVBbGxvYygmUmluZy0+SW5kaXJlY3RMaXN0KTsKKyAgICBpZiAoSW5kaXJlY3Qg
PT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIFJ0bFplcm9NZW1vcnkoSW5kaXJl
Y3QsIHNpemVvZihYRU5WQkRfSU5ESVJFQ1QpKTsKKworICAgIEluZGlyZWN0LT5NZGwgPSBfX0Fs
bG9jYXRlUGFnZSgpOworICAgIGlmIChJbmRpcmVjdC0+TWRsID09IE5VTEwpCisgICAgICAgIGdv
dG8gZmFpbDI7CisKKyAgICBJbmRpcmVjdC0+UGFnZSA9IE1tR2V0U3lzdGVtQWRkcmVzc0Zvck1k
bFNhZmUoSW5kaXJlY3QtPk1kbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTm9ybWFsUGFnZVByaW9yaXR5KTsKKworICAgIHN0YXR1cyA9IEdyYW50
ZXJHZXQoR3JhbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1tR2V0TWRsUGZuQXJyYXko
SW5kaXJlY3QtPk1kbClbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJkluZGlyZWN0LT5HcmFudCk7CisgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDM7CisKKyAgICByZXR1cm4gSW5kaXJlY3Q7CisK
K2ZhaWwzOgorICAgIF9fRnJlZVBhZ2UoSW5kaXJlY3QtPk1kbCk7CitmYWlsMjoKKyAgICBfX0xv
b2thc2lkZUZyZWUoJlJpbmctPkluZGlyZWN0TGlzdCwgSW5kaXJlY3QpOworZmFpbDE6CisgICAg
cmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBWT0lECitSaW5nUHV0SW5kaXJlY3QoCisgICAgSU4g
IFBYRU5WQkRfUklORyAgICAgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9JTkRJUkVDVCAgICBJ
bmRpcmVjdAorICAgICkKK3sKKyAgICBQWEVOVkJEX0dSQU5URVIgICAgICAgICBHcmFudGVyID0g
RnJvbnRlbmRHZXRHcmFudGVyKFJpbmctPkZyb250ZW5kKTsKKworICAgIGlmIChJbmRpcmVjdC0+
R3JhbnQpCisgICAgICAgIEdyYW50ZXJQdXQoR3JhbnRlciwgSW5kaXJlY3QtPkdyYW50KTsKKyAg
ICBpZiAoSW5kaXJlY3QtPlBhZ2UpCisgICAgICAgIF9fRnJlZVBhZ2UoSW5kaXJlY3QtPk1kbCk7
CisKKyAgICBSdGxaZXJvTWVtb3J5KEluZGlyZWN0LCBzaXplb2YoWEVOVkJEX0lORElSRUNUKSk7
CisgICAgX19Mb29rYXNpZGVGcmVlKCZSaW5nLT5JbmRpcmVjdExpc3QsIEluZGlyZWN0KTsKK30K
Kworc3RhdGljIFBYRU5WQkRfU0VHTUVOVAorUmluZ0dldFNlZ21lbnQoCisgICAgSU4gIFBYRU5W
QkRfUklORyAgICBSaW5nCisgICAgKQoreworICAgIFBYRU5WQkRfU0VHTUVOVCAgICAgU2VnbWVu
dDsKKworICAgIFNlZ21lbnQgPSBfX0xvb2thc2lkZUFsbG9jKCZSaW5nLT5TZWdtZW50TGlzdCk7
CisgICAgaWYgKFNlZ21lbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIFJ0
bFplcm9NZW1vcnkoU2VnbWVudCwgc2l6ZW9mKFhFTlZCRF9TRUdNRU5UKSk7CisgICAgcmV0dXJu
IFNlZ21lbnQ7CisKK2ZhaWwxOgorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgVk9JRAor
UmluZ1B1dFNlZ21lbnQoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nLAorICAgIElOICBQ
WEVOVkJEX1NFR01FTlQgU2VnbWVudAorICAgICkKK3sKKyAgICBQWEVOVkJEX0dSQU5URVIgICAg
IEdyYW50ZXIgPSBGcm9udGVuZEdldEdyYW50ZXIoUmluZy0+RnJvbnRlbmQpOworCisgICAgaWYg
KFNlZ21lbnQtPkdyYW50KQorICAgICAgICBHcmFudGVyUHV0KEdyYW50ZXIsIFNlZ21lbnQtPkdy
YW50KTsKKworICAgIGlmIChTZWdtZW50LT5CdWZmZXJJZCkKKyAgICAgICAgQnVmZmVyUHV0KFNl
Z21lbnQtPkJ1ZmZlcklkKTsKKworICAgIGlmIChTZWdtZW50LT5CdWZmZXIpCisgICAgICAgIE1t
VW5tYXBMb2NrZWRQYWdlcyhTZWdtZW50LT5CdWZmZXIsICZTZWdtZW50LT5NZGwpOworCisgICAg
UnRsWmVyb01lbW9yeShTZWdtZW50LCBzaXplb2YoWEVOVkJEX1NFR01FTlQpKTsKKyAgICBfX0xv
b2thc2lkZUZyZWUoJlJpbmctPlNlZ21lbnRMaXN0LCBTZWdtZW50KTsKK30KKworc3RhdGljIFBY
RU5WQkRfUkVRVUVTVAorUmluZ0dldFJlcXVlc3QoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBS
aW5nCisgICAgKQoreworICAgIFBYRU5WQkRfUkVRVUVTVCAgICAgUmVxdWVzdDsKKworICAgIFJl
cXVlc3QgPSBfX0xvb2thc2lkZUFsbG9jKCZSaW5nLT5SZXF1ZXN0TGlzdCk7CisgICAgaWYgKFJl
cXVlc3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIFJ0bFplcm9NZW1vcnko
UmVxdWVzdCwgc2l6ZW9mKFhFTlZCRF9SRVFVRVNUKSk7CisgICAgUmVxdWVzdC0+SWQgPSAoVUxP
TkcpSW50ZXJsb2NrZWRJbmNyZW1lbnQoKFBMT05HKSZSaW5nLT5OZXh0VGFnKTsKKyAgICBJbml0
aWFsaXplTGlzdEhlYWQoJlJlcXVlc3QtPlNlZ21lbnRzKTsKKyAgICBJbml0aWFsaXplTGlzdEhl
YWQoJlJlcXVlc3QtPkluZGlyZWN0cyk7CisKKyAgICByZXR1cm4gUmVxdWVzdDsKKworZmFpbDE6
CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBWT0lECitSaW5nUHV0UmVxdWVzdCgKKyAg
ICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCisgICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1
ZXN0CisgICAgKQoreworICAgIFBMSVNUX0VOVFJZICAgICAgICAgRW50cnk7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50OworCisgICAgICAgIEVudHJ5
ID0gUmVtb3ZlSGVhZExpc3QoJlJlcXVlc3QtPlNlZ21lbnRzKTsKKyAgICAgICAgaWYgKEVudHJ5
ID09ICZSZXF1ZXN0LT5TZWdtZW50cykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBTZWdt
ZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7Cisg
ICAgICAgIFJpbmdQdXRTZWdtZW50KFJpbmcsIFNlZ21lbnQpOworICAgIH0KKworICAgIGZvciAo
OzspIHsKKyAgICAgICAgUFhFTlZCRF9JTkRJUkVDVCAgICBJbmRpcmVjdDsKKworICAgICAgICBF
bnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZSZXF1ZXN0LT5JbmRpcmVjdHMpOworICAgICAgICBpZiAo
RW50cnkgPT0gJlJlcXVlc3QtPkluZGlyZWN0cykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBJbmRpcmVjdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfSU5ESVJFQ1QsIEVu
dHJ5KTsKKyAgICAgICAgUmluZ1B1dEluZGlyZWN0KFJpbmcsIEluZGlyZWN0KTsKKyAgICB9CisK
KyAgICBSdGxaZXJvTWVtb3J5KFJlcXVlc3QsIHNpemVvZihYRU5WQkRfUkVRVUVTVCkpOworICAg
IF9fTG9va2FzaWRlRnJlZSgmUmluZy0+UmVxdWVzdExpc3QsIFJlcXVlc3QpOworfQorCitzdGF0
aWMgRk9SQ0VJTkxJTkUgUFhFTlZCRF9SRVFVRVNUCitSaW5nUmVxdWVzdEZyb21UYWcoCisgICAg
SU4gIFBYRU5WQkRfUklORyAgICBSaW5nLAorICAgIElOICBVTE9ORyAgICAgICAgICAgVGFnCisg
ICAgKQoreworICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKKyAgICBQTElTVF9FTlRSWSAg
ICAgICAgIEVudHJ5OworICAgIFBYRU5WQkRfUVVFVUUgICAgICAgUXVldWUgPSAmUmluZy0+U3Vi
bWl0dGVkUmVxczsKKworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZRdWV1ZS0+TG9jaywgJklycWwp
OworCisgICAgZm9yIChFbnRyeSA9IFF1ZXVlLT5MaXN0LkZsaW5rOyBFbnRyeSAhPSAmUXVldWUt
Pkxpc3Q7IEVudHJ5ID0gRW50cnktPkZsaW5rKSB7CisgICAgICAgIFBYRU5WQkRfUkVRVUVTVCBS
ZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9SRVFVRVNULCBFbnRyeSk7
CisgICAgICAgIGlmIChSZXF1ZXN0LT5JZCA9PSBUYWcpIHsKKyAgICAgICAgICAgIFJlbW92ZUVu
dHJ5TGlzdCgmUmVxdWVzdC0+RW50cnkpOworICAgICAgICAgICAgLS1RdWV1ZS0+Q3VycmVudDsK
KyAgICAgICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZRdWV1ZS0+TG9jaywgSXJxbCk7CisgICAg
ICAgICAgICByZXR1cm4gUmVxdWVzdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEtlUmVsZWFz
ZVNwaW5Mb2NrKCZRdWV1ZS0+TG9jaywgSXJxbCk7CisgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6
IFRhZyAleCBub3QgZm91bmQgaW4gc3VibWl0dGVkIGxpc3QgKCV1IGl0ZW1zKVxuIiwKKyAgICAg
ICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRlbmQpLAorICAgICAgICAgICAg
VGFnLAorICAgICAgICAgICAgUXVldWVDb3VudChRdWV1ZSkpOworICAgIHJldHVybiBOVUxMOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19SaW5nSW5jQmxraWZPcENvdW50KAorICAg
IElOICBQWEVOVkJEX1JJTkcgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9SRVFVRVNUIFJlcXVl
c3QKKyAgICApCit7CisgICAgc3dpdGNoIChSZXF1ZXN0LT5PcGVyYXRpb24pIHsKKyAgICBjYXNl
IEJMS0lGX09QX1JFQUQ6CisgICAgICAgIGlmIChSZXF1ZXN0LT5OclNlZ21lbnRzID4gQkxLSUZf
TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUKQorICAgICAgICAgICAgKytSaW5nLT5CbGtPcEluZGly
ZWN0UmVhZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKytSaW5nLT5CbGtPcFJlYWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6CisgICAgICAgIGlmIChSZXF1
ZXN0LT5OclNlZ21lbnRzID4gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUKQorICAgICAg
ICAgICAgKytSaW5nLT5CbGtPcEluZGlyZWN0V3JpdGU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICsrUmluZy0+QmxrT3BXcml0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCTEtJRl9P
UF9XUklURV9CQVJSSUVSOgorICAgICAgICArK1JpbmctPkJsa09wQmFycmllcjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBCTEtJRl9PUF9ESVNDQVJEOgorICAgICAgICArK1JpbmctPkJsa09w
RGlzY2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FD
SEU6CisgICAgICAgICsrUmluZy0+QmxrT3BGbHVzaDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CitzdGF0aWMgRk9SQ0VJTkxJTkUgVUxPTkcKK19fUmluZ1NlY3RvcnNQZXJQYWdlKAorICAgIElO
ICBVTE9ORyAgIFNlY3RvclNpemUKKyAgICApCit7CisgICAgQVNTRVJUM1UoU2VjdG9yU2l6ZSwg
IT0sIDApOworICAgIHJldHVybiBQQUdFX1NJWkUgLyBTZWN0b3JTaXplOworfQorCitzdGF0aWMg
Rk9SQ0VJTkxJTkUgVk9JRAorX19SaW5nT3BlcmF0aW9uKAorICAgIElOICBVQ0hBUiAgICAgICBD
ZGJPcCwKKyAgICBPVVQgUFVDSEFSICAgICAgUmluZ09wLAorICAgIE9VVCBQQk9PTEVBTiAgICBS
ZWFkT25seQorICAgICkKK3sKKyAgICBzd2l0Y2ggKENkYk9wKSB7CisgICAgY2FzZSBTQ1NJT1Bf
UkVBRDoKKyAgICAgICAgKlJpbmdPcCAgICAgPSBCTEtJRl9PUF9SRUFEOworICAgICAgICAqUmVh
ZE9ubHkgICA9IEZBTFNFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNDU0lPUF9XUklURToK
KyAgICAgICAgKlJpbmdPcCAgICAgPSBCTEtJRl9PUF9XUklURTsKKyAgICAgICAgKlJlYWRPbmx5
ICAgPSBUUlVFOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQo
RkFMU0UpOworICAgIH0KK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE1NX1BBR0VfUFJJT1JJVFkK
K19fUmluZ1ByaW9yaXR5KAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAgICkKK3sK
KyAgICBQWEVOVkJEX0NBUFMgICAgICAgIENhcHMgPSBGcm9udGVuZEdldENhcHMoUmluZy0+RnJv
bnRlbmQpOworICAgIGlmICghKENhcHMtPlBhZ2luZyB8fAorICAgICAgICAgIENhcHMtPkhpYmVy
bmF0aW9uIHx8CisgICAgICAgICAgQ2Fwcy0+RHVtcEZpbGUpKQorICAgICAgICByZXR1cm4gTm9y
bWFsUGFnZVByaW9yaXR5OworCisgICAgcmV0dXJuIEhpZ2hQYWdlUHJpb3JpdHk7Cit9CisKK3N0
YXRpYyBGT1JDRUlOTElORSBWT0lECitSaW5nUmVxdWVzdENvcHlPdXRwdXQoCisgICAgSU4gIFBY
RU5WQkRfUkVRVUVTVCBSZXF1ZXN0CisgICAgKQoreworICAgIFBMSVNUX0VOVFJZICAgICAgICAg
RW50cnk7CisKKyAgICBpZiAoUmVxdWVzdC0+T3BlcmF0aW9uICE9IEJMS0lGX09QX1JFQUQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoRW50cnkgPSBSZXF1ZXN0LT5TZWdtZW50cy5GbGlu
azsKKyAgICAgICAgICAgIEVudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKKyAgICAgICAgICAg
IEVudHJ5ID0gRW50cnktPkZsaW5rKSB7CisgICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50
ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7CisKKyAg
ICAgICAgaWYgKFNlZ21lbnQtPkJ1ZmZlcklkKQorICAgICAgICAgICAgQnVmZmVyQ29weU91dChT
ZWdtZW50LT5CdWZmZXJJZCwgU2VnbWVudC0+QnVmZmVyLCBTZWdtZW50LT5MZW5ndGgpOworICAg
IH0KK30KKworc3RhdGljIEJPT0xFQU4KK1JpbmdQcmVwYXJlU2VnbWVudCgKKyAgICBJTiAgUFhF
TlZCRF9SSU5HICAgIFJpbmcsCisgICAgSU4gIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50LAorICAg
IElOICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0LAorICAgIElOICBCT09MRUFOICAgICAgICAgUmVh
ZE9ubHksCisgICAgSU4gIFVMT05HICAgICAgICAgICBTZWN0b3JzTGVmdCwKKyAgICBPVVQgUFVM
T05HICAgICAgICAgIFNlY3RvcnNOb3cKKyAgICApCit7CisgICAgUEZOX05VTUJFUiAgICAgICAg
ICBQZm47CisgICAgVUxPTkcgICAgICAgICAgICAgICBPZmZzZXQ7CisgICAgVUxPTkcgICAgICAg
ICAgICAgICBMZW5ndGg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBTdGF0dXM7CisgICAgUFhF
TlZCRF9HUkFOVEVSICAgICBHcmFudGVyID0gRnJvbnRlbmRHZXRHcmFudGVyKFJpbmctPkZyb250
ZW5kKTsKKyAgICBjb25zdCBVTE9ORyAgICAgICAgIFNlY3RvclNpemUgPSBGcm9udGVuZEdldERp
c2tJbmZvKFJpbmctPkZyb250ZW5kKS0+U2VjdG9yU2l6ZTsKKyAgICBjb25zdCBVTE9ORyAgICAg
ICAgIFNlY3RvcnNQZXJQYWdlID0gX19SaW5nU2VjdG9yc1BlclBhZ2UoU2VjdG9yU2l6ZSk7Cisg
ICAgUFhFTlZCRF9UQVJHRVQgICAgICBUYXJnZXQgPSBGcm9udGVuZEdldFRhcmdldChSaW5nLT5G
cm9udGVuZCk7CisKKyAgICBQZm4gPSBBZGFwdGVyR2V0TmV4dFNHRW50cnkoVGFyZ2V0R2V0QWRh
cHRlcihUYXJnZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcmJFeHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMZW5n
dGgpOworICAgIGlmICgoT2Zmc2V0ICYgKFNlY3RvclNpemUgLSAxKSkgPT0gMCAmJgorICAgICAg
ICAoTGVuZ3RoICYgKFNlY3RvclNpemUgLSAxKSkgPT0gMCkgeworICAgICAgICArK1JpbmctPlNl
Z3NHcmFudGVkOworICAgICAgICAvLyBnZXQgZmlyc3Qgc2VjdG9yLCBsYXN0IHNlY3RvciBhbmQg
Y291bnQKKyAgICAgICAgU2VnbWVudC0+Rmlyc3RTZWN0b3IgICAgPSAoVUNIQVIpKChPZmZzZXQg
KyBTZWN0b3JTaXplIC0gMSkgLyBTZWN0b3JTaXplKTsKKyAgICAgICAgKlNlY3RvcnNOb3cgICAg
ICAgICAgICAgPSBfX21pbihTZWN0b3JzTGVmdCwgU2VjdG9yc1BlclBhZ2UgLSBTZWdtZW50LT5G
aXJzdFNlY3Rvcik7CisgICAgICAgIFNlZ21lbnQtPkxhc3RTZWN0b3IgICAgID0gKFVDSEFSKShT
ZWdtZW50LT5GaXJzdFNlY3RvciArICpTZWN0b3JzTm93IC0gMSk7CisgICAgICAgIFNlZ21lbnQt
PkJ1ZmZlcklkICAgICAgID0gTlVMTDsgLy8gZ3JhbnRlZCwgZW5zdXJlIGl0cyBudWxsCisgICAg
ICAgIFNlZ21lbnQtPkJ1ZmZlciAgICAgICAgID0gTlVMTDsgLy8gZ3JhbnRlZCwgZW5zdXJlIGl0
cyBudWxsCisgICAgICAgIFNlZ21lbnQtPkxlbmd0aCAgICAgICAgID0gMDsgICAgLy8gZ3JhbnRl
ZCwgZW5zdXJlIGl0cyAwCisKKyAgICAgICAgQVNTRVJUM1UoKExlbmd0aCAvIFNlY3RvclNpemUp
LCA9PSwgKlNlY3RvcnNOb3cpOworICAgIH0gZWxzZSB7CisgICAgICAgIFBNREwgICAgICAgIE1k
bDsKKworICAgICAgICArK1JpbmctPlNlZ3NCb3VuY2VkOworICAgICAgICAvLyBnZXQgZmlyc3Qg
c2VjdG9yLCBsYXN0IHNlY3RvciBhbmQgY291bnQKKyAgICAgICAgU2VnbWVudC0+Rmlyc3RTZWN0
b3IgICAgPSAwOworICAgICAgICAqU2VjdG9yc05vdyAgICAgICAgICAgICA9IF9fbWluKFNlY3Rv
cnNMZWZ0LCBTZWN0b3JzUGVyUGFnZSk7CisgICAgICAgIFNlZ21lbnQtPkxhc3RTZWN0b3IgICAg
ID0gKFVDSEFSKSgqU2VjdG9yc05vdyAtIDEpOworCisgICAgICAgIC8vIG1hcCBTR0xpc3QgdG8g
VmlydHVhbCBBZGRyZXNzLiBQb3B1bGF0ZXMgU2VnbWVudC0+QnVmZmVyIGFuZCBTZWdtZW50LT5M
ZW5ndGgKKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6Mjgx
NDUpCisgICAgICAgIE1kbCA9ICZTZWdtZW50LT5NZGw7CisgICAgICAgIE1kbC0+TmV4dCAgICAg
ICAgICAgPSBOVUxMOworICAgICAgICBNZGwtPlNpemUgICAgICAgICAgID0gKFNIT1JUKShzaXpl
b2YoTURMKSArIHNpemVvZihQRk5fTlVNQkVSKSk7CisgICAgICAgIE1kbC0+TWRsRmxhZ3MgICAg
ICAgPSBNRExfUEFHRVNfTE9DS0VEOworICAgICAgICBNZGwtPlByb2Nlc3MgICAgICAgID0gTlVM
TDsKKyAgICAgICAgTWRsLT5NYXBwZWRTeXN0ZW1WYSA9IE5VTEw7CisgICAgICAgIE1kbC0+U3Rh
cnRWYSAgICAgICAgPSBOVUxMOworICAgICAgICBNZGwtPkJ5dGVDb3VudCAgICAgID0gTGVuZ3Ro
OworICAgICAgICBNZGwtPkJ5dGVPZmZzZXQgICAgID0gT2Zmc2V0OworICAgICAgICBTZWdtZW50
LT5QZm5bMF0gICAgID0gUGZuOworCisgICAgICAgIGlmIChMZW5ndGggPCAqU2VjdG9yc05vdyAq
IFNlY3RvclNpemUpIHsKKyAgICAgICAgICAgIFBmbiA9IEFkYXB0ZXJHZXROZXh0U0dFbnRyeShU
YXJnZXRHZXRBZGFwdGVyKFRhcmdldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3JiRXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmT2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMZW5ndGgpOworICAg
ICAgICAgICAgTWRsLT5TaXplICAgICAgICs9IHNpemVvZihQRk5fTlVNQkVSKTsKKyAgICAgICAg
ICAgIE1kbC0+Qnl0ZUNvdW50ICA9IE1kbC0+Qnl0ZUNvdW50ICsgTGVuZ3RoOworICAgICAgICAg
ICAgU2VnbWVudC0+UGZuWzFdID0gUGZuOworICAgICAgICB9CisjcHJhZ21hIHdhcm5pbmcocG9w
KQorCisgICAgICAgIEFTU0VSVCgoTWRsLT5CeXRlQ291bnQgJiAoU2VjdG9yU2l6ZSAtIDEpKSA9
PSAwKTsKKyAgICAgICAgQVNTRVJUM1UoTWRsLT5CeXRlQ291bnQsIDw9LCBQQUdFX1NJWkUpOwor
ICAgICAgICBBU1NFUlQzVSgqU2VjdG9yc05vdywgPT0sIChNZGwtPkJ5dGVDb3VudCAvIFNlY3Rv
clNpemUpKTsKKworICAgICAgICBTZWdtZW50LT5MZW5ndGggPSBfX21pbihNZGwtPkJ5dGVDb3Vu
dCwgUEFHRV9TSVpFKTsKKyAgICAgICAgU2VnbWVudC0+QnVmZmVyID0gTW1NYXBMb2NrZWRQYWdl
c1NwZWNpZnlDYWNoZShNZGwsIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1tQ2FjaGVkLCBOVUxMLCBGQUxTRSwgX19SaW5nUHJpb3JpdHkoUmluZykpOworICAg
ICAgICBpZiAoIVNlZ21lbnQtPkJ1ZmZlcikKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICAgICAgQVNTRVJUM1AoTW1HZXRNZGxQZm5BcnJheShNZGwpWzBdLCA9PSwgU2VnbWVudC0+UGZu
WzBdKTsKKyAgICAgICAgQVNTRVJUM1AoTW1HZXRNZGxQZm5BcnJheShNZGwpWzFdLCA9PSwgU2Vn
bWVudC0+UGZuWzFdKTsKKworICAgICAgICAvLyBnZXQgYSBidWZmZXIKKyAgICAgICAgaWYgKCFC
dWZmZXJHZXQoU2VnbWVudCwgJlNlZ21lbnQtPkJ1ZmZlcklkLCAmUGZuKSkKKyAgICAgICAgICAg
IGdvdG8gZmFpbDI7CisKKyAgICAgICAgLy8gY29weSBjb250ZW50cyBpbgorICAgICAgICBpZiAo
UmVhZE9ubHkpIHsgLy8gT3BlcmF0aW9uID09IEJMS0lGX09QX1dSSVRFCisgICAgICAgICAgICBC
dWZmZXJDb3B5SW4oU2VnbWVudC0+QnVmZmVySWQsIFNlZ21lbnQtPkJ1ZmZlciwgU2VnbWVudC0+
TGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEdyYW50IHNlZ21lbnQncyBwYWdl
CisgICAgU3RhdHVzID0gR3JhbnRlckdldChHcmFudGVyLCBQZm4sIFJlYWRPbmx5LCAmU2VnbWVu
dC0+R3JhbnQpOworICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQorICAgICAgICBnb3RvIGZh
aWwzOworCisgICAgcmV0dXJuIFRSVUU7CisKK2ZhaWwzOgorZmFpbDI6CitmYWlsMToKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBCT09MRUFOCitSaW5nUHJlcGFyZUJsa2lmUmVhZFdy
aXRlKAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9SRVFV
RVNUIFJlcXVlc3QsCisgICAgSU4gIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQsCisgICAgSU4gIFVM
T05HICAgICAgICAgICBNYXhTZWdtZW50cywKKyAgICBJTiAgVUxPTkc2NCAgICAgICAgIFNlY3Rv
clN0YXJ0LAorICAgIElOICBVTE9ORyAgICAgICAgICAgU2VjdG9yc0xlZnQsCisgICAgT1VUIFBV
TE9ORyAgICAgICAgICBTZWN0b3JzRG9uZQorICAgICkKK3sKKyAgICBVQ0hBUiAgICAgICAgICAg
ICAgIE9wZXJhdGlvbjsKKyAgICBCT09MRUFOICAgICAgICAgICAgIFJlYWRPbmx5OworICAgIFVM
T05HICAgICAgICAgICAgICAgSW5kZXg7CisgICAgX19SaW5nT3BlcmF0aW9uKENkYl9PcGVyYXRp
b25FeChSZXF1ZXN0LT5TcmIpLCAmT3BlcmF0aW9uLCAmUmVhZE9ubHkpOworCisgICAgUmVxdWVz
dC0+T3BlcmF0aW9uICA9IE9wZXJhdGlvbjsKKyAgICBSZXF1ZXN0LT5OclNlZ21lbnRzID0gMDsK
KyAgICBSZXF1ZXN0LT5GaXJzdFNlY3RvciA9IFNlY3RvclN0YXJ0OworCisgICAgZm9yIChJbmRl
eCA9IDA7CisgICAgICAgICAgICAgICAgSW5kZXggPCBNYXhTZWdtZW50cyAmJgorICAgICAgICAg
ICAgICAgIFNlY3RvcnNMZWZ0ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrSW5kZXgp
IHsKKyAgICAgICAgUFhFTlZCRF9TRUdNRU5UIFNlZ21lbnQ7CisgICAgICAgIFVMT05HICAgICAg
ICAgICBTZWN0b3JzTm93OworCisgICAgICAgIFNlZ21lbnQgPSBSaW5nR2V0U2VnbWVudChSaW5n
KTsKKyAgICAgICAgaWYgKFNlZ21lbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICAgICAgSW5zZXJ0VGFpbExpc3QoJlJlcXVlc3QtPlNlZ21lbnRzLCAmU2VnbWVudC0+
RW50cnkpOworICAgICAgICArK1JlcXVlc3QtPk5yU2VnbWVudHM7CisKKyAgICAgICAgaWYgKCFS
aW5nUHJlcGFyZVNlZ21lbnQoUmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JiRXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkT25seSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VjdG9yc0xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZTZWN0b3JzTm93KSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICAgICAgKlNlY3Rv
cnNEb25lICs9IFNlY3RvcnNOb3c7CisgICAgICAgIFNlY3RvcnNMZWZ0ICAtPSBTZWN0b3JzTm93
OworICAgIH0KKyAgICBBU1NFUlQzVShSZXF1ZXN0LT5OclNlZ21lbnRzLCA+LCAwKTsKKyAgICBB
U1NFUlQzVShSZXF1ZXN0LT5OclNlZ21lbnRzLCA8PSwgTWF4U2VnbWVudHMpOworCisgICAgcmV0
dXJuIFRSVUU7CisKK2ZhaWwyOgorZmFpbDE6CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0
aWMgQk9PTEVBTgorUmluZ1ByZXBhcmVCbGtpZkluZGlyZWN0KAorICAgIElOICBQWEVOVkJEX1JJ
TkcgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3QKKyAgICApCit7Cisg
ICAgVUxPTkcgICAgICAgICAgICAgICBJbmRleDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgIE5y
U2VnbWVudHMgPSAwOworCisgICAgZm9yIChJbmRleCA9IDA7CisgICAgICAgICAgICBJbmRleCA8
IEJMS0lGX01BWF9JTkRJUkVDVF9QQUdFU19QRVJfUkVRVUVTVCAmJgorICAgICAgICAgICAgTnJT
ZWdtZW50cyA8IFJlcXVlc3QtPk5yU2VnbWVudHM7CisgICAgICAgICAgICAgICAgKytJbmRleCkg
eworICAgICAgICBQWEVOVkJEX0lORElSRUNUICAgIEluZGlyZWN0OworCisgICAgICAgIEluZGly
ZWN0ID0gUmluZ0dldEluZGlyZWN0KFJpbmcpOworICAgICAgICBpZiAoSW5kaXJlY3QgPT0gTlVM
TCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7CisgICAgICAgIEluc2VydFRhaWxMaXN0KCZSZXF1
ZXN0LT5JbmRpcmVjdHMsICZJbmRpcmVjdC0+RW50cnkpOworCisgICAgICAgIE5yU2VnbWVudHMg
Kz0gWEVOVkJEX01BWF9TRUdNRU5UU19QRVJfUEFHRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJV
RTsKKworZmFpbDE6CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUg
VUxPTkcKK1JpbmdVc2VJbmRpcmVjdCgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCisg
ICAgSU4gIFVMT05HICAgICAgICAgICBTZWN0b3JzTGVmdAorICAgICkKK3sKKyAgICBjb25zdCBV
TE9ORyBTZWN0b3JzUGVyUGFnZSA9IF9fUmluZ1NlY3RvcnNQZXJQYWdlKEZyb250ZW5kR2V0RGlz
a0luZm8oUmluZy0+RnJvbnRlbmQpLT5TZWN0b3JTaXplKTsKKyAgICBjb25zdCBVTE9ORyBNYXhJ
bmRpcmVjdFNlZ3MgPSBGcm9udGVuZEdldEZlYXR1cmVzKFJpbmctPkZyb250ZW5kKS0+SW5kaXJl
Y3Q7CisKKyAgICBpZiAoTWF4SW5kaXJlY3RTZWdzIDw9IEJMS0lGX01BWF9TRUdNRU5UU19QRVJf
UkVRVUVTVCkKKyAgICAgICAgcmV0dXJuIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsg
Ly8gbm90IHN1cHBvcnRlZAorCisgICAgaWYgKFNlY3RvcnNMZWZ0IDwgQkxLSUZfTUFYX1NFR01F
TlRTX1BFUl9SRVFVRVNUICogU2VjdG9yc1BlclBhZ2UpCisgICAgICAgIHJldHVybiBCTEtJRl9N
QVhfU0VHTUVOVFNfUEVSX1JFUVVFU1Q7IC8vIGZpcnN0IGludG8gYSBzaW5nbGUgQkxLSUZfT1Bf
e1JFQUQvV1JJVEV9CisKKyAgICByZXR1cm4gTWF4SW5kaXJlY3RTZWdzOworfQorCitzdGF0aWMg
Rk9SQ0VJTkxJTkUgVUxPTkcKK1JpbmdRdWV1ZVJlcXVlc3RMaXN0KAorICAgIElOICBQWEVOVkJE
X1JJTkcgICAgUmluZywKKyAgICBJTiAgUExJU1RfRU5UUlkgICAgIExpc3QKKyAgICApCit7Cisg
ICAgVUxPTkcgICAgICAgICAgICAgICBDb3VudCA9IDA7CisgICAgZm9yICg7OykgeworICAgICAg
ICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKKyAgICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5
OworCisgICAgICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoTGlzdCk7CisgICAgICAgIGlmIChF
bnRyeSA9PSBMaXN0KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgKytDb3VudDsKKyAg
ICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVTVCwg
RW50cnkpOworICAgICAgICBfX1JpbmdJbmNCbGtpZk9wQ291bnQoUmluZywgUmVxdWVzdCk7Cisg
ICAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5QcmVwYXJlZFJlcXMsICZSZXF1ZXN0LT5FbnRyeSk7
CisgICAgfQorICAgIHJldHVybiBDb3VudDsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQK
K1JpbmdDYW5jZWxSZXF1ZXN0TGlzdCgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCisg
ICAgSU4gIFBMSVNUX0VOVFJZICAgICBMaXN0CisgICAgKQoreworICAgIGZvciAoOzspIHsKKyAg
ICAgICAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3Q7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICBF
bnRyeTsKKworICAgICAgICBFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KExpc3QpOworICAgICAgICBp
ZiAoRW50cnkgPT0gTGlzdCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFJlcXVlc3Qg
PSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsKKyAgICAg
ICAgUmluZ1B1dFJlcXVlc3QoUmluZywgUmVxdWVzdCk7CisgICAgfQorfQorCitzdGF0aWMgQk9P
TEVBTgorUmluZ1ByZXBhcmVSZWFkV3JpdGUoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICAgICAg
UmluZywKKyAgICBJTiAgUFNDU0lfUkVRVUVTVF9CTE9DSyBTcmIKKyAgICApCit7CisgICAgUFhF
TlZCRF9TUkJFWFQgICAgICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFNyYik7CisgICAgVUxPTkc2
NCAgICAgICAgICAgICAgICAgU2VjdG9yU3RhcnQgPSBDZGJfTG9naWNhbEJsb2NrKFNyYik7Cisg
ICAgVUxPTkcgICAgICAgICAgICAgICAgICAgU2VjdG9yc0xlZnQgPSBDZGJfVHJhbnNmZXJCbG9j
ayhTcmIpOworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3Q7CisgICAgVUxPTkcgICAg
ICAgICAgICAgICAgICAgRGVidWdDb3VudDsKKworICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NU
QVRVU19QRU5ESU5HOworCisgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsKKyAgICBTcmJF
eHQtPkNvdW50ID0gMDsKKworICAgIHdoaWxlIChTZWN0b3JzTGVmdCA+IDApIHsKKyAgICAgICAg
VUxPTkcgICAgICAgICAgIE1heFNlZ21lbnRzOworICAgICAgICBVTE9ORyAgICAgICAgICAgU2Vj
dG9yc0RvbmUgPSAwOworICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKKworICAgICAg
ICBSZXF1ZXN0ID0gUmluZ0dldFJlcXVlc3QoUmluZyk7CisgICAgICAgIGlmIChSZXF1ZXN0ID09
IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWwxOworICAgICAgICBJbnNlcnRUYWlsTGlzdCgm
TGlzdCwgJlJlcXVlc3QtPkVudHJ5KTsKKyAgICAgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNy
YkV4dC0+Q291bnQpOworCisgICAgICAgIFJlcXVlc3QtPlNyYiAgICA9IFNyYjsKKyAgICAgICAg
TWF4U2VnbWVudHMgPSBSaW5nVXNlSW5kaXJlY3QoUmluZywgU2VjdG9yc0xlZnQpOworCisgICAg
ICAgIGlmICghUmluZ1ByZXBhcmVCbGtpZlJlYWRXcml0ZShSaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNyYkV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1heFNlZ21lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2VjdG9yU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZWN0b3JzTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN0
b3JzRG9uZSkpCisgICAgICAgICAgICBnb3RvIGZhaWwyOworCisgICAgICAgIGlmIChNYXhTZWdt
ZW50cyA+IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCkgeworICAgICAgICAgICAgaWYg
KCFSaW5nUHJlcGFyZUJsa2lmSW5kaXJlY3QoUmluZywgUmVxdWVzdCkpCisgICAgICAgICAgICAg
ICAgZ290byBmYWlsMzsKKyAgICAgICAgfQorCisgICAgICAgIFNlY3RvcnNMZWZ0IC09IFNlY3Rv
cnNEb25lOworICAgICAgICBTZWN0b3JTdGFydCArPSBTZWN0b3JzRG9uZTsKKyAgICB9CisKKyAg
ICBEZWJ1Z0NvdW50ID0gUmluZ1F1ZXVlUmVxdWVzdExpc3QoUmluZywgJkxpc3QpOworICAgIGlm
IChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJFeHQtPkNvdW50KSB7CisgICAgICAgIFRyYWNlKCJb
JXVdICVkICE9ICV1XG4iLAorICAgICAgICAgICAgICBGcm9udGVuZEdldFRhcmdldElkKFJpbmct
PkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgU3JiRXh0LT5Db3VudCwKKyAgICAgICAgICAgICAg
RGVidWdDb3VudCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworCitmYWlsMzoKK2ZhaWwyOgor
ZmFpbDE6CisgICAgUmluZ0NhbmNlbFJlcXVlc3RMaXN0KFJpbmcsICZMaXN0KTsKKyAgICBTcmJF
eHQtPkNvdW50ID0gMDsKKyAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7Cisg
ICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgQk9PTEVBTgorUmluZ1ByZXBhcmVTeW5jQ2Fj
aGUoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICAgICAgUmluZywKKyAgICBJTiAgUFNDU0lfUkVR
VUVTVF9CTE9DSyBTcmIKKyAgICApCit7CisgICAgUFhFTlZCRF9TUkJFWFQgICAgICAgICAgU3Ji
RXh0ID0gR2V0U3JiRXh0KFNyYik7CisgICAgUFhFTlZCRF9SRVFVRVNUICAgICAgICAgUmVxdWVz
dDsKKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0OworICAgIFVDSEFSICAgICAgICAg
ICAgICAgICAgIE9wZXJhdGlvbjsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBEZWJ1Z0Nv
dW50OworCisgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1BFTkRJTkc7CisKKyAgICBp
ZiAoRnJvbnRlbmRHZXREaXNrSW5mbyhSaW5nLT5Gcm9udGVuZCktPkZsdXNoQ2FjaGUpCisgICAg
ICAgIE9wZXJhdGlvbiA9IEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRTsKKyAgICBlbHNlCisgICAg
ICAgIE9wZXJhdGlvbiA9IEJMS0lGX09QX1dSSVRFX0JBUlJJRVI7CisKKyAgICBJbml0aWFsaXpl
TGlzdEhlYWQoJkxpc3QpOworICAgIFNyYkV4dC0+Q291bnQgPSAwOworCisgICAgUmVxdWVzdCA9
IFJpbmdHZXRSZXF1ZXN0KFJpbmcpOworICAgIGlmIChSZXF1ZXN0ID09IE5VTEwpCisgICAgICAg
IGdvdG8gZmFpbDE7CisgICAgSW5zZXJ0VGFpbExpc3QoJkxpc3QsICZSZXF1ZXN0LT5FbnRyeSk7
CisgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+Q291bnQpOworCisgICAgUmVxdWVz
dC0+U3JiICAgICAgICA9IFNyYjsKKyAgICBSZXF1ZXN0LT5PcGVyYXRpb24gID0gT3BlcmF0aW9u
OworICAgIFJlcXVlc3QtPkZpcnN0U2VjdG9yID0gQ2RiX0xvZ2ljYWxCbG9jayhTcmIpOworCisg
ICAgRGVidWdDb3VudCA9IFJpbmdRdWV1ZVJlcXVlc3RMaXN0KFJpbmcsICZMaXN0KTsKKyAgICBp
ZiAoRGVidWdDb3VudCAhPSAoVUxPTkcpU3JiRXh0LT5Db3VudCkgeworICAgICAgICBUcmFjZSgi
WyV1XSAlZCAhPSAldVxuIiwKKyAgICAgICAgICAgICAgRnJvbnRlbmRHZXRUYXJnZXRJZChSaW5n
LT5Gcm9udGVuZCksCisgICAgICAgICAgICAgIFNyYkV4dC0+Q291bnQsCisgICAgICAgICAgICAg
IERlYnVnQ291bnQpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKKworZmFpbDE6CisgICAgUmlu
Z0NhbmNlbFJlcXVlc3RMaXN0KFJpbmcsICZMaXN0KTsKKyAgICBTcmJFeHQtPkNvdW50ID0gMDsK
KyAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7CisgICAgcmV0dXJuIEZBTFNF
OworfQorCitzdGF0aWMgQk9PTEVBTgorUmluZ1ByZXBhcmVVbm1hcCgKKyAgICBJTiAgUFhFTlZC
RF9SSU5HICAgICAgICBSaW5nLAorICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLIFNyYgorICAg
ICkKK3sKKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoU3Ji
KTsKKyAgICBQVU5NQVBfTElTVF9IRUFERVIgICAgICBVbm1hcCA9IFNyYi0+RGF0YUJ1ZmZlcjsK
KwlVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudCA9IF9ieXRlc3dhcF91c2hvcnQoKihQVVNI
T1JUKVVubWFwLT5CbG9ja0Rlc2NyRGF0YUxlbmd0aCkgLyBzaXplb2YoVU5NQVBfQkxPQ0tfREVT
Q1JJUFRPUik7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgSW5kZXg7CisgICAgTElTVF9F
TlRSWSAgICAgICAgICAgICAgTGlzdDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBEZWJ1
Z0NvdW50OworCisgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1BFTkRJTkc7CisKKyAg
ICBJbml0aWFsaXplTGlzdEhlYWQoJkxpc3QpOworICAgIFNyYkV4dC0+Q291bnQgPSAwOworCisg
ICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ291bnQ7ICsrSW5kZXgpIHsKKyAgICAgICAgUFVO
TUFQX0JMT0NLX0RFU0NSSVBUT1IgRGVzY3IgPSAmVW5tYXAtPkRlc2NyaXB0b3JzW0luZGV4XTsK
KyAgICAgICAgUFhFTlZCRF9SRVFVRVNUICAgICAgICAgUmVxdWVzdDsKKworICAgICAgICBSZXF1
ZXN0ID0gUmluZ0dldFJlcXVlc3QoUmluZyk7CisgICAgICAgIGlmIChSZXF1ZXN0ID09IE5VTEwp
CisgICAgICAgICAgICBnb3RvIGZhaWwxOworICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwg
JlJlcXVlc3QtPkVudHJ5KTsKKyAgICAgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+
Q291bnQpOworCisgICAgICAgIFJlcXVlc3QtPlNyYiAgICAgICAgICAgID0gU3JiOworICAgICAg
ICBSZXF1ZXN0LT5PcGVyYXRpb24gICAgICA9IEJMS0lGX09QX0RJU0NBUkQ7CisgICAgICAgIFJl
cXVlc3QtPkZpcnN0U2VjdG9yICAgID0gX2J5dGVzd2FwX3VpbnQ2NCgqKFBVTE9ORzY0KURlc2Ny
LT5TdGFydGluZ0xiYSk7CisgICAgICAgIFJlcXVlc3QtPk5yU2VjdG9ycyAgICAgID0gX2J5dGVz
d2FwX3Vsb25nKCooUFVMT05HKURlc2NyLT5MYmFDb3VudCk7CisgICAgICAgIFJlcXVlc3QtPkZs
YWdzICAgICAgICAgID0gMDsKKyAgICB9CisKKyAgICBEZWJ1Z0NvdW50ID0gUmluZ1F1ZXVlUmVx
dWVzdExpc3QoUmluZywgJkxpc3QpOworICAgIGlmIChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJF
eHQtPkNvdW50KSB7CisgICAgICAgIFRyYWNlKCJbJXVdICVkICE9ICV1XG4iLAorICAgICAgICAg
ICAgICBGcm9udGVuZEdldFRhcmdldElkKFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgICAg
U3JiRXh0LT5Db3VudCwKKyAgICAgICAgICAgICAgRGVidWdDb3VudCk7CisgICAgfQorICAgIHJl
dHVybiBUUlVFOworCitmYWlsMToKKyAgICBSaW5nQ2FuY2VsUmVxdWVzdExpc3QoUmluZywgJkxp
c3QpOworICAgIFNyYkV4dC0+Q291bnQgPSAwOworICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NU
QVRVU19FUlJPUjsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBC
T09MRUFOCitSaW5nUHJlcGFyZUZyZXNoKAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZwor
ICAgICkKK3sKKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dDsKKyAgICBQTElTVF9FTlRS
WSAgICAgICAgIEVudHJ5OworCisgICAgRW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+RnJlc2hTcmJz
KTsKKyAgICBpZiAoRW50cnkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOyAgIC8vIGZy
ZXNoIHF1ZXVlIGlzIGVtcHR5CisKKyAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRy
eSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOworCisgICAgc3dpdGNoIChDZGJfT3BlcmF0aW9uRXgo
U3JiRXh0LT5TcmIpKSB7CisgICAgY2FzZSBTQ1NJT1BfUkVBRDoKKyAgICBjYXNlIFNDU0lPUF9X
UklURToKKyAgICAgICAgaWYgKFJpbmdQcmVwYXJlUmVhZFdyaXRlKFJpbmcsIFNyYkV4dC0+U3Ji
KSkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOyAgICAvLyBwcmVwYXJlZCB0aGlzIFNSQgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNDU0lPUF9TWU5DSFJPTklaRV9DQUNIRToKKyAgICAgICAg
aWYgKFJpbmdQcmVwYXJlU3luY0NhY2hlKFJpbmcsIFNyYkV4dC0+U3JiKSkKKyAgICAgICAgICAg
IHJldHVybiBUUlVFOyAgICAvLyBwcmVwYXJlZCB0aGlzIFNSQgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNDU0lPUF9VTk1BUDoKKyAgICAgICAgaWYgKFJpbmdQcmVwYXJlVW5tYXAoUmluZywg
U3JiRXh0LT5TcmIpKQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7ICAgIC8vIHByZXBhcmVkIHRo
aXMgU1JCCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChGQUxT
RSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBRdWV1ZVVuUG9wKCZSaW5nLT5GcmVzaFNy
YnMsICZTcmJFeHQtPkVudHJ5KTsKKworICAgIHJldHVybiBGQUxTRTsgICAgICAgLy8gcHJlcGFy
ZSBmYWlsZWQKK30KKworc3RhdGljIEJPT0xFQU4KK1JpbmdTdWJtaXQoCisgICAgSU4gIFBYRU5W
QkRfUklORyAgICBSaW5nLAorICAgIElOICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdAorICAgICkK
K3sKKyAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7CisgICAgYmxraWZfcmVxdWVzdF90KiAg
ICByZXE7CisgICAgQk9PTEVBTiAgICAgICAgICAgICBOb3RpZnk7CisKKyAgICBLZUFjcXVpcmVT
cGluTG9jaygmUmluZy0+TG9jaywgJklycWwpOworICAgIGlmIChSSU5HX0ZVTEwoJlJpbmctPkZy
b250KSkgeworICAgICAgICBLZVJlbGVhc2VTcGluTG9jaygmUmluZy0+TG9jaywgSXJxbCk7Cisg
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXEgPSBSSU5HX0dFVF9SRVFVRVNU
KCZSaW5nLT5Gcm9udCwgUmluZy0+RnJvbnQucmVxX3Byb2RfcHZ0KTsKKyAgICBfX1JpbmdJbnNl
cnQoUmluZywgUmVxdWVzdCwgcmVxKTsKKyAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKyAgICArK1Jp
bmctPkZyb250LnJlcV9wcm9kX3B2dDsKKworICAgIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hF
Q0tfTk9USUZZKCZSaW5nLT5Gcm9udCwgTm90aWZ5KTsKKyAgICBLZVJlbGVhc2VTcGluTG9jaygm
UmluZy0+TG9jaywgSXJxbCk7CisKKyAgICBpZiAoTm90aWZ5KSB7CisgICAgICAgIGlmICghUmlu
Zy0+RW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAgICAgIFhFTkJVU19F
VlRDSE4oU2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNl
LAorICAgICAgICAgICAgICAgICAgICAgIFJpbmctPkNoYW5uZWwpOworICAgIH0KKworICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgorUmluZ1N1Ym1pdFBy
ZXBhcmVkKAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAgICkKK3sKKyAgICBpZiAo
IVJpbmctPkVuYWJsZWQpIHsKKyAgICAgICAgaWYgKFF1ZXVlQ291bnQoJlJpbmctPlByZXBhcmVk
UmVxcykpCisgICAgICAgICAgICBXYXJuaW5nKCJUYXJnZXRbJWRdIDogUGF1c2VkLCBub3Qgc3Vi
bWl0dGluZyBuZXcgcmVxdWVzdHMgKCV1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgRnJvbnRl
bmRHZXRUYXJnZXRJZChSaW5nLT5Gcm9udGVuZCksCisgICAgICAgICAgICAgICAgICAgIFF1ZXVl
Q291bnQoJlJpbmctPlByZXBhcmVkUmVxcykpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
fQorCisgICAgZm9yICg7OykgeworICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKKyAg
ICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5OworCisgICAgICAgIEVudHJ5ID0gUXVldWVQb3Ao
JlJpbmctPlByZXBhcmVkUmVxcyk7CisgICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5
LCBYRU5WQkRfUkVRVUVTVCwgRW50cnkpOworCisgICAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5T
dWJtaXR0ZWRSZXFzLCAmUmVxdWVzdC0+RW50cnkpOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIo
KTsKKworICAgICAgICBpZiAoUmluZ1N1Ym1pdChSaW5nLCBSZXF1ZXN0KSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIFF1ZXVlUmVtb3ZlKCZSaW5nLT5TdWJtaXR0ZWRSZXFzLCAm
UmVxdWVzdC0+RW50cnkpOworICAgICAgICBRdWV1ZVVuUG9wKCZSaW5nLT5QcmVwYXJlZFJlcXMs
ICZSZXF1ZXN0LT5FbnRyeSk7CisgICAgICAgIHJldHVybiBGQUxTRTsgICAvLyByaW5nIGZ1bGwK
KyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQK
K1JpbmdDb21wbGV0ZVNodXRkb3duKAorICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworICAg
ICkKK3sKKyAgICBQWEVOVkJEX1RBUkdFVCAgICAgIFRhcmdldDsKKyAgICBQWEVOVkJEX0FEQVBU
RVIgICAgIEFkYXB0ZXI7CisKKyAgICBpZiAoUXVldWVDb3VudCgmUmluZy0+U2h1dGRvd25TcmJz
KSA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoUXVldWVDb3VudCgmUmluZy0+RnJl
c2hTcmJzKSB8fAorICAgICAgICBRdWV1ZUNvdW50KCZSaW5nLT5QcmVwYXJlZFJlcXMpIHx8Cisg
ICAgICAgIFF1ZXVlQ291bnQoJlJpbmctPlN1Ym1pdHRlZFJlcXMpKQorICAgICAgICByZXR1cm47
CisKKyAgICBUYXJnZXQgPSBGcm9udGVuZEdldFRhcmdldChSaW5nLT5Gcm9udGVuZCk7CisgICAg
QWRhcHRlciA9IFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KTsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQ7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRy
eSA9IFF1ZXVlUG9wKCZSaW5nLT5TaHV0ZG93blNyYnMpOworICAgICAgICBpZiAoRW50cnkgPT0g
TlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JF
Q09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOworICAgICAgICBTcmJFeHQtPlNyYi0+
U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOworICAgICAgICBBZGFwdGVyQ29tcGxldGVT
cmIoQWRhcHRlciwgU3JiRXh0KTsKKyAgICB9Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQQ0hB
UgorX19CbGtpZk9wZXJhdGlvbk5hbWUoCisgICAgSU4gIFVDSEFSICAgT3BlcmF0aW9uCisgICAg
KQoreworICAgIHN3aXRjaCAoT3BlcmF0aW9uKSB7CisgICAgY2FzZSBCTEtJRl9PUF9SRUFEOiAg
ICAgICAgICAgICByZXR1cm4gIlJFQUQiOworICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6ICAgICAg
ICAgICAgcmV0dXJuICJXUklURSI7CisgICAgY2FzZSBCTEtJRl9PUF9XUklURV9CQVJSSUVSOiAg
ICByZXR1cm4gIldSSVRFX0JBUlJJRVIiOworICAgIGNhc2UgQkxLSUZfT1BfRkxVU0hfRElTS0NB
Q0hFOiAgcmV0dXJuICJGTFVTSF9ESVNLQ0FDSEUiOworICAgIGNhc2UgQkxLSUZfT1BfUkVTRVJW
RURfMTogICAgICAgcmV0dXJuICJSRVNFUlZFRF8xIjsKKyAgICBjYXNlIEJMS0lGX09QX0RJU0NB
UkQ6ICAgICAgICAgIHJldHVybiAiRElTQ0FSRCI7CisgICAgY2FzZSBCTEtJRl9PUF9JTkRJUkVD
VDogICAgICAgICByZXR1cm4gIklORElSRUNUIjsKKyAgICBkZWZhdWx0OiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAiPHVua25vd24+IjsKKyAgICB9Cit9CisKK3N0YXRpYyBCT09MRUFO
CitSaW5nU3VibWl0UmVxdWVzdHMoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nCisgICAg
KQoreworICAgIEJPT0xFQU4gICAgICAgICAgICAgUmV0cnkgPSBGQUxTRTsKKworICAgIGZvciAo
OzspIHsKKyAgICAgICAgLy8gc3VibWl0IGFsbCBwcmVwYXJlZCByZXF1ZXN0cyAoMCBvciBtb3Jl
IHJlcXVlc3RzKQorICAgICAgICAvLyByZXR1cm4gVFJVRSBpZiBzdWJtaXR0ZWQgMCBvciBtb3Jl
IHJlcXVlc3RzIGZyb20gcHJlcGFyZWQgcXVldWUKKyAgICAgICAgLy8gcmV0dXJuIEZBTFNFIGlm
ZiByaW5nIGlzIGZ1bGwKKyAgICAgICAgaWYgKCFSaW5nU3VibWl0UHJlcGFyZWQoUmluZykpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBwcmVwYXJlIGEgc2luZ2xlIFNSQiAoaW50
byAxIG9yIG1vcmUgcmVxdWVzdHMpCisgICAgICAgIC8vIHJldHVybiBUUlVFIGlmIHByZXBhcmUg
c3VjY2VlZGVkCisgICAgICAgIC8vIHJldHVybiBGQUxTRSBpZiBwcmVwYXJlIGZhaWxlZCBvciBm
cmVzaCBxdWV1ZSBlbXB0eQorICAgICAgICBpZiAoIVJpbmdQcmVwYXJlRnJlc2goUmluZykpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBiYWNrIG9mZiwgY2hlY2sgRFBDIHRpbWVv
dXQgYW5kIHRyeSBhZ2FpbgorICAgICAgICBSZXRyeSA9IFRSVUU7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIC8vIGlmIG5vIHJlcXVlc3RzL1NSQnMgb3V0c3RhbmRpbmcsIGNvbXBsZXRl
IGFueSBzaHV0ZG93biBTUkJzCisgICAgaWYgKCFSZXRyeSkKKyAgICAgICAgUmluZ0NvbXBsZXRl
U2h1dGRvd24oUmluZyk7CisKKyAgICByZXR1cm4gUmV0cnk7Cit9CisKK3N0YXRpYyBWT0lECitS
aW5nQ29tcGxldGVSZXNwb25zZSgKKyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCisgICAg
SU4gIFVMT05HICAgICAgICAgICBUYWcsCisgICAgSU4gIFNIT1JUICAgICAgICAgICBTdGF0dXMK
KyAgICApCit7CisgICAgUFhFTlZCRF9SRVFVRVNUICAgICBSZXF1ZXN0OworICAgIFBTQ1NJX1JF
UVVFU1RfQkxPQ0sgU3JiOworICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0OworCisgICAg
UmVxdWVzdCA9IFJpbmdSZXF1ZXN0RnJvbVRhZyhSaW5nLCBUYWcpOworICAgIGlmIChSZXF1ZXN0
ID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIFNyYiAgICAgPSBSZXF1ZXN0LT5TcmI7
CisgICAgU3JiRXh0ICA9IEdldFNyYkV4dChTcmIpOworICAgIEFTU0VSVDNQKFNyYkV4dCwgIT0s
IE5VTEwpOworCisgICAgc3dpdGNoIChTdGF0dXMpIHsKKyAgICBjYXNlIEJMS0lGX1JTUF9PS0FZ
OgorICAgICAgICBSaW5nUmVxdWVzdENvcHlPdXRwdXQoUmVxdWVzdCk7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBCTEtJRl9SU1BfRU9QTk9UU1VQUDoKKyAgICAgICAgLy8gUmVtb3ZlIGFw
cHJvcHJpYXRlIGZlYXR1cmUgc3VwcG9ydAorICAgICAgICBGcm9udGVuZFJlbW92ZUZlYXR1cmUo
UmluZy0+RnJvbnRlbmQsIFJlcXVlc3QtPk9wZXJhdGlvbik7CisgICAgICAgIC8vIFN1Y2NlZWQg
dGhpcyBTUkIsIHN1YnNpcXVlbnQgU1JCcyB3aWxsIGJlIHN1Y2NlZWRlZCBpbnN0ZWFkIG9mIGJl
aW5nIHBhc3NlZCB0byB0aGUgYmFja2VuZC4KKyAgICAgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJf
U1RBVFVTX1NVQ0NFU1M7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBCTEtJRl9SU1BfRVJS
T1I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6ICVzIEJMS0lG
X1JTUF9FUlJPUiAoVGFnICV4KVxuIiwKKyAgICAgICAgICAgICAgICBGcm9udGVuZEdldFRhcmdl
dElkKFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICBfX0Jsa2lmT3BlcmF0aW9uTmFt
ZShSZXF1ZXN0LT5PcGVyYXRpb24pLAorICAgICAgICAgICAgICAgIFRhZyk7CisgICAgICAgIFNy
Yi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19FUlJPUjsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgUmluZ1B1dFJlcXVlc3QoUmluZywgUmVxdWVzdCk7CisKKyAgICAvLyBjb21wbGV0ZSBz
cmIKKyAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDApIHsK
KyAgICAgICAgUFhFTlZCRF9UQVJHRVQgIFRhcmdldCA9IEZyb250ZW5kR2V0VGFyZ2V0KFJpbmct
PkZyb250ZW5kKTsKKyAgICAgICAgUFhFTlZCRF9BREFQVEVSIEFkYXB0ZXIgPSBUYXJnZXRHZXRB
ZGFwdGVyKFRhcmdldCk7CisKKyAgICAgICAgaWYgKFNyYi0+U3JiU3RhdHVzID09IFNSQl9TVEFU
VVNfUEVORElORykgeworICAgICAgICAgICAgLy8gU1JCIGhhcyBub3QgaGl0IGEgZmFpbHVyZSBj
b25kaXRpb24gKEJMS0lGX1JTUF9FUlJPUiB8IEJMS0lGX1JTUF9FT1BOT1RTVVBQKQorICAgICAg
ICAgICAgLy8gZnJvbSBhbnkgb2YgaXRzIHJlc3BvbnNlcy4gU1JCIG11c3QgaGF2ZSBzdWNjZWVk
ZWQKKyAgICAgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOworICAg
ICAgICAgICAgU3JiLT5TY3NpU3RhdHVzID0gMHgwMDsgLy8gU0NTSV9HT09ECisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBTcmItPlNyYlN0YXR1cyBoYXMgYWxyZWFkeSBiZWVuIHNl
dCBieSAxIG9yIG1vcmUgcmVxdWVzdHMgd2l0aCBTdGF0dXMgIT0gQkxLSUZfUlNQX09LQVkKKyAg
ICAgICAgICAgIFNyYi0+U2NzaVN0YXR1cyA9IDB4NDA7IC8vIFNDU0lfQUJPUlRFRAorICAgICAg
ICB9CisKKyAgICAgICAgQWRhcHRlckNvbXBsZXRlU3JiKEFkYXB0ZXIsIFNyYkV4dCk7CisgICAg
fQorfQorCitzdGF0aWMgQk9PTEVBTgorUmluZ1BvbGwoCisgICAgSU4gIFBYRU5WQkRfUklORyAg
ICBSaW5nCisgICAgKQoreworICAgIEJPT0xFQU4gICAgICAgICAgICAgUmV0cnkgPSBGQUxTRTsK
KworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIERJU1BBVENIX0xFVkVMKTsK
KyAgICBLZUFjcXVpcmVTcGluTG9ja0F0RHBjTGV2ZWwoJlJpbmctPkxvY2spOworCisgICAgLy8g
R3VhcmQgYWdhaW5zdCB0aGlzIGxvY2tlZCByZWdpb24gYmVpbmcgY2FsbGVkIGFmdGVyIHRoZSAK
KyAgICAvLyBsb2NrIG9uIEZyb250ZW5kU2V0U3RhdGUKKyAgICBpZiAoUmluZy0+RW5hYmxlZCA9
PSBGQUxTRSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgZm9yICg7OykgeworICAgICAgICBV
TE9ORyAgIHJzcF9wcm9kOworICAgICAgICBVTE9ORyAgIHJzcF9jb25zOworCisgICAgICAgIEtl
TWVtb3J5QmFycmllcigpOworCisgICAgICAgIHJzcF9wcm9kID0gUmluZy0+U2hhcmVkLT5yc3Bf
cHJvZDsKKyAgICAgICAgcnNwX2NvbnMgPSBSaW5nLT5Gcm9udC5yc3BfY29uczsKKworICAgICAg
ICBLZU1lbW9yeUJhcnJpZXIoKTsKIAotICAgICAgICAgICAgZm9yIChQYWdlSWR4ID0gMCwKLSAg
ICAgICAgICAgICAgICAgUGFnZUVudHJ5ID0gUmVxdWVzdC0+SW5kaXJlY3RzLkZsaW5rLAotICAg
ICAgICAgICAgICAgICBTZWdFbnRyeSA9IFJlcXVlc3QtPlNlZ21lbnRzLkZsaW5rOwotICAgICAg
ICAgICAgICAgICAgICBQYWdlSWR4IDwgQkxLSUZfTUFYX0lORElSRUNUX1BBR0VTX1BFUl9SRVFV
RVNUICYmCi0gICAgICAgICAgICAgICAgICAgIFBhZ2VFbnRyeSAhPSAmUmVxdWVzdC0+SW5kaXJl
Y3RzICYmCi0gICAgICAgICAgICAgICAgICAgIFNlZ0VudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50
czsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrUGFnZUlkeCwgUGFnZUVudHJ5ID0gUGFnZUVu
dHJ5LT5GbGluaykgewotICAgICAgICAgICAgICAgIFBYRU5WQkRfSU5ESVJFQ1QgUGFnZSA9IENP
TlRBSU5JTkdfUkVDT1JEKFBhZ2VFbnRyeSwgWEVOVkJEX0lORElSRUNULCBFbnRyeSk7CisgICAg
ICAgIGlmIChyc3BfY29ucyA9PSByc3BfcHJvZCB8fCBSZXRyeSkKKyAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5pbmRpcmVjdF9ncmVmc1tQYWdlSWR4
XSA9IEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgUGFnZS0+R3JhbnQpOworICAgICAgICB3aGls
ZSAocnNwX2NvbnMgIT0gcnNwX3Byb2QgJiYgIVJldHJ5KSB7CisgICAgICAgICAgICBibGtpZl9y
ZXNwb25zZV90KiAgIFJlc3BvbnNlOworICAgICAgICAgICAgVUxPTkcgICAgICAgICAgICAgICBU
YWc7CiAKLSAgICAgICAgICAgICAgICBmb3IgKFNlZ0lkeCA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBTZWdJZHggPCBYRU5WQkRfTUFYX1NFR01FTlRTX1BFUl9QQUdFICYmCi0gICAgICAg
ICAgICAgICAgICAgICAgICBTZWdFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKytTZWdJZHgsIFNlZ0VudHJ5ID0gU2VnRW50cnktPkZsaW5r
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJ
TklOR19SRUNPUkQoU2VnRW50cnksIFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7CisgICAgICAgICAg
ICBSZXNwb25zZSA9IFJJTkdfR0VUX1JFU1BPTlNFKCZSaW5nLT5Gcm9udCwgcnNwX2NvbnMpOwor
ICAgICAgICAgICAgKytyc3BfY29uczsKIAotICAgICAgICAgICAgICAgICAgICBQYWdlLT5QYWdl
W1NlZ0lkeF0uR3JhbnRSZWYgPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsIFNlZ21lbnQtPkdy
YW50KTsKLSAgICAgICAgICAgICAgICAgICAgUGFnZS0+UGFnZVtTZWdJZHhdLkZpcnN0ICAgID0g
U2VnbWVudC0+Rmlyc3RTZWN0b3I7Ci0gICAgICAgICAgICAgICAgICAgIFBhZ2UtPlBhZ2VbU2Vn
SWR4XS5MYXN0ICAgICA9IFNlZ21lbnQtPkxhc3RTZWN0b3I7Ci0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKF9fUmluZ1B1dFRhZyhSaW5nLCBSZXNwb25zZS0+aWQsICZUYWcpKSB7
CisgICAgICAgICAgICAgICAgKytSaW5nLT5SZWNlaXZlZDsKKyAgICAgICAgICAgICAgICBSaW5n
Q29tcGxldGVSZXNwb25zZShSaW5nLCBUYWcsIFJlc3BvbnNlLT5zdGF0dXMpOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRGlyZWN0Ci0gICAgICAgICAg
ICBVTE9ORyAgICAgICAgICAgSW5kZXg7Ci0gICAgICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50
cnk7CiAKLSAgICAgICAgICAgIHJlcS0+b3BlcmF0aW9uICAgICAgICAgICAgICAgICAgPSBSZXF1
ZXN0LT5PcGVyYXRpb247Ci0gICAgICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAgICAgICAg
ICAgID0gKFVDSEFSKVJlcXVlc3QtPk5yU2VnbWVudHM7Ci0gICAgICAgICAgICByZXEtPmhhbmRs
ZSAgICAgICAgICAgICAgICAgICAgID0gKFVTSE9SVClGcm9udGVuZEdldERldmljZUlkKFJpbmct
PkZyb250ZW5kKTsKLSAgICAgICAgICAgIHJlcS0+aWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7Ci0gICAgICAgICAgICByZXEtPnNlY3Rvcl9u
dW1iZXIgICAgICAgICAgICAgID0gUmVxdWVzdC0+Rmlyc3RTZWN0b3I7CisgICAgICAgICAgICBS
dGxaZXJvTWVtb3J5KFJlc3BvbnNlLCBzaXplb2YodW5pb24gYmxraWZfc3JpbmdfZW50cnkpKTsK
IAotICAgICAgICAgICAgZm9yIChJbmRleCA9IDAsIEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMu
Rmxpbms7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4IDwgQkxLSUZfTUFYX1NFR01FTlRTX1BF
Ul9SRVFVRVNUICYmCi0gICAgICAgICAgICAgICAgICAgIEVudHJ5ICE9ICZSZXF1ZXN0LT5TZWdt
ZW50czsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrSW5kZXgsIEVudHJ5ID0gRW50cnktPkZs
aW5rKSB7Ci0gICAgICAgICAgICAgICAgUFhFTlZCRF9TRUdNRU5UIFNlZ21lbnQgPSBDT05UQUlO
SU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NFR01FTlQsIEVudHJ5KTsKLSAgICAgICAgICAgICAg
ICByZXEtPnNlZ1tJbmRleF0uZ3JlZiAgICAgICAgPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIs
IFNlZ21lbnQtPkdyYW50KTsKLSAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0uZmlyc3Rf
c2VjdCAgPSBTZWdtZW50LT5GaXJzdFNlY3RvcjsKLSAgICAgICAgICAgICAgICByZXEtPnNlZ1tJ
bmRleF0ubGFzdF9zZWN0ICAgPSBTZWdtZW50LT5MYXN0U2VjdG9yOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHJzcF9jb25zIC0gUmluZy0+RnJvbnQucnNwX2NvbnMgPiBSSU5HX1NJ
WkUoJlJpbmctPkZyb250KSAvIDQpCisgICAgICAgICAgICAgICAgUmV0cnkgPSBUUlVFOwogICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBCTEtJRl9PUF9XUklURV9CQVJSSUVS
OgotICAgIGNhc2UgQkxLSUZfT1BfRkxVU0hfRElTS0NBQ0hFOgotICAgICAgICByZXEtPm9wZXJh
dGlvbiAgICAgICAgICAgICAgICAgID0gUmVxdWVzdC0+T3BlcmF0aW9uOwotICAgICAgICByZXEt
Pm5yX3NlZ21lbnRzICAgICAgICAgICAgICAgID0gMDsKLSAgICAgICAgcmVxLT5oYW5kbGUgICAg
ICAgICAgICAgICAgICAgICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5Gcm9u
dGVuZCk7Ci0gICAgICAgIHJlcS0+aWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBfX1JpbmdH
ZXRUYWcoUmluZywgUmVxdWVzdCk7Ci0gICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAgICAgICAg
ICAgICAgPSBSZXF1ZXN0LT5GaXJzdFNlY3RvcjsKLSAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IEJMS0lGX09QX0RJU0NBUkQ6IHsKLSAgICAgICAgYmxraWZfcmVxdWVzdF9kaXNjYXJkX3QqICAg
ICAgICByZXFfZGlzY2FyZDsKLSAgICAgICAgcmVxX2Rpc2NhcmQgPSAoYmxraWZfcmVxdWVzdF9k
aXNjYXJkX3QqKXJlcTsKLSAgICAgICAgcmVxX2Rpc2NhcmQtPm9wZXJhdGlvbiAgICAgICAgICA9
IEJMS0lGX09QX0RJU0NBUkQ7Ci0gICAgICAgIHJlcV9kaXNjYXJkLT5mbGFnICAgICAgICAgICAg
ICAgPSBSZXF1ZXN0LT5GbGFnczsKLSAgICAgICAgcmVxX2Rpc2NhcmQtPmhhbmRsZSAgICAgICAg
ICAgICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5Gcm9udGVuZCk7Ci0gICAg
ICAgIHJlcV9kaXNjYXJkLT5pZCAgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywg
UmVxdWVzdCk7Ci0gICAgICAgIHJlcV9kaXNjYXJkLT5zZWN0b3JfbnVtYmVyICAgICAgPSBSZXF1
ZXN0LT5GaXJzdFNlY3RvcjsKLSAgICAgICAgcmVxX2Rpc2NhcmQtPm5yX3NlY3RvcnMgICAgICAg
ICA9IFJlcXVlc3QtPk5yU2VjdG9yczsKLSAgICAgICAgfSBicmVhazsKKyAgICAgICAgS2VNZW1v
cnlCYXJyaWVyKCk7CiAKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoRkFMU0UpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgUmluZy0+RnJvbnQucnNwX2NvbnMgPSByc3BfY29uczsKKyAg
ICAgICAgUmluZy0+U2hhcmVkLT5yc3BfZXZlbnQgPSByc3BfY29ucyArIDE7CiAgICAgfQotICAg
ICsrUmluZy0+U3VibWl0dGVkOworCitkb25lOgorICAgIEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURw
Y0xldmVsKCZSaW5nLT5Mb2NrKTsKKworICAgIHJldHVybiBSZXRyeTsKK30KKworX19kcnZfcmVx
dWlyZXNJUlFMKERJU1BBVENIX0xFVkVMKQorc3RhdGljIEJPT0xFQU4KK1JpbmdOb3RpZnlSZXNw
b25zZXMoCisgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nCisgICAgKQoreworICAgIEJPT0xF
QU4gICAgICAgICAgICAgUmV0cnkgPSBGQUxTRTsKKworICAgIFJldHJ5IHw9IFJpbmdQb2xsKFJp
bmcpOworICAgIFJldHJ5IHw9IFJpbmdTdWJtaXRSZXF1ZXN0cyhSaW5nKTsKKworICAgIHJldHVy
biBSZXRyeTsKIH0KIAogS1NFUlZJQ0VfUk9VVElORSAgICBSaW5nSW50ZXJydXB0OwpAQCAtMzM0
LDcgKzE0NTksNyBAQCBSaW5nRHBjKAogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKDs7KSB7
Ci0gICAgICAgIGlmICghRnJvbnRlbmROb3RpZnlSZXNwb25zZXMoUmluZy0+RnJvbnRlbmQpKSB7
CisgICAgICAgIGlmICghUmluZ05vdGlmeVJlc3BvbnNlcyhSaW5nKSkgewogICAgICAgICAgICAg
WEVOQlVTX0VWVENITihVbm1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5F
dnRjaG5JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmctPkNoYW5uZWws
CkBAIC00MjUsNiArMTU1MCw1MSBAQCBSaW5nRGVidWdDYWxsYmFjaygKICAgICAgICAgICAgICAg
ICAgICAgIFJpbmctPkNoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICBQb3J0KTsKICAgICB9
CisKKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAmUmluZy0+RGVi
dWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJUQVJHRVQ6IEJMS0lGX09QczogUkVBRD0l
dSBXUklURT0ldVxuIiwKKyAgICAgICAgICAgICAgICAgUmluZy0+QmxrT3BSZWFkLAorICAgICAg
ICAgICAgICAgICBSaW5nLT5CbGtPcFdyaXRlKTsKKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAor
ICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAg
ICJUQVJHRVQ6IEJMS0lGX09QczogSU5ESVJFQ1RfUkVBRD0ldSBJTkRJUkVDVF9XUklURT0ldVxu
IiwKKyAgICAgICAgICAgICAgICAgUmluZy0+QmxrT3BJbmRpcmVjdFJlYWQsCisgICAgICAgICAg
ICAgICAgIFJpbmctPkJsa09wSW5kaXJlY3RXcml0ZSk7CisgICAgWEVOQlVTX0RFQlVHKFByaW50
ZiwKKyAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAgICAg
ICAgICAiVEFSR0VUOiBCTEtJRl9PUHM6IEJBUlJJRVI9JXUgRElTQ0FSRD0ldSBGTFVTSD0ldVxu
IiwKKyAgICAgICAgICAgICAgICAgUmluZy0+QmxrT3BCYXJyaWVyLAorICAgICAgICAgICAgICAg
ICBSaW5nLT5CbGtPcERpc2NhcmQsCisgICAgICAgICAgICAgICAgIFJpbmctPkJsa09wRmx1c2gp
OworICAgIFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1
Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIlRBUkdFVDogU2VnbWVudHMgR3JhbnRlZD0l
bGx1IEJvdW5jZWQ9JWxsdVxuIiwKKyAgICAgICAgICAgICAgICAgUmluZy0+U2Vnc0dyYW50ZWQs
CisgICAgICAgICAgICAgICAgIFJpbmctPlNlZ3NCb3VuY2VkKTsKKworICAgIF9fTG9va2FzaWRl
RGVidWcoJlJpbmctPlJlcXVlc3RMaXN0LAorICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkRl
YnVnSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIlJFUVVFU1RzIik7CisgICAgX19M
b29rYXNpZGVEZWJ1ZygmUmluZy0+U2VnbWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAm
UmluZy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAiU0VHTUVOVHMiKTsK
KyAgICBfX0xvb2thc2lkZURlYnVnKCZSaW5nLT5JbmRpcmVjdExpc3QsCisgICAgICAgICAgICAg
ICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAiSU5E
SVJFQ1RzIik7CisKKyAgICBRdWV1ZURlYnVnQ2FsbGJhY2soJlJpbmctPkZyZXNoU3JicywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIkZyZXNoICAgICIsCisgICAgICAgICAgICAgICAgICAgICAg
ICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSk7CisgICAgUXVldWVEZWJ1Z0NhbGxiYWNrKCZSaW5nLT5Q
cmVwYXJlZFJlcXMsCisgICAgICAgICAgICAgICAgICAgICAgICJQcmVwYXJlZCAiLAorICAgICAg
ICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UpOworICAgIFF1ZXVlRGVidWdD
YWxsYmFjaygmUmluZy0+U3VibWl0dGVkUmVxcywKKyAgICAgICAgICAgICAgICAgICAgICAgIlN1
Ym1pdHRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSk7
CisgICAgUXVldWVEZWJ1Z0NhbGxiYWNrKCZSaW5nLT5TaHV0ZG93blNyYnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICJTaHV0ZG93biAiLAorICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+
RGVidWdJbnRlcmZhY2UpOwogfQogCiBOVFNUQVRVUwpAQCAtNDQ3LDYgKzE2MTcsMTQgQEAgUmlu
Z0NyZWF0ZSgKICAgICBLZUluaXRpYWxpemVEcGMoJigqUmluZyktPlRpbWVyRHBjLCBSaW5nRHBj
LCAqUmluZyk7CiAgICAgS2VJbml0aWFsaXplVGltZXIoJigqUmluZyktPlRpbWVyKTsKIAorICAg
IFF1ZXVlSW5pdCgmKCpSaW5nKS0+RnJlc2hTcmJzKTsKKyAgICBRdWV1ZUluaXQoJigqUmluZykt
PlByZXBhcmVkUmVxcyk7CisgICAgUXVldWVJbml0KCYoKlJpbmcpLT5TdWJtaXR0ZWRSZXFzKTsK
KyAgICBRdWV1ZUluaXQoJigqUmluZyktPlNodXRkb3duU3Jicyk7CisgICAgX19Mb29rYXNpZGVJ
bml0KCYoKlJpbmcpLT5SZXF1ZXN0TGlzdCwgc2l6ZW9mKFhFTlZCRF9SRVFVRVNUKSwgUkVRVUVT
VF9QT09MX1RBRyk7CisgICAgX19Mb29rYXNpZGVJbml0KCYoKlJpbmcpLT5TZWdtZW50TGlzdCwg
c2l6ZW9mKFhFTlZCRF9TRUdNRU5UKSwgU0VHTUVOVF9QT09MX1RBRyk7CisgICAgX19Mb29rYXNp
ZGVJbml0KCYoKlJpbmcpLT5JbmRpcmVjdExpc3QsIHNpemVvZihYRU5WQkRfSU5ESVJFQ1QpLCBJ
TkRJUkVDVF9QT09MX1RBRyk7CisKICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CiAKIGZhaWwx
OgpAQCAtNDU5LDYgKzE2MzcsMTQgQEAgUmluZ0Rlc3Ryb3koCiAgICAgSU4gIFBYRU5WQkRfUklO
RyAgICBSaW5nCiAgICAgKQogeworICAgIF9fTG9va2FzaWRlVGVybSgmUmluZy0+SW5kaXJlY3RM
aXN0KTsKKyAgICBfX0xvb2thc2lkZVRlcm0oJlJpbmctPlNlZ21lbnRMaXN0KTsKKyAgICBfX0xv
b2thc2lkZVRlcm0oJlJpbmctPlJlcXVlc3RMaXN0KTsKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5n
LT5GcmVzaFNyYnMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZS
aW5nLT5QcmVwYXJlZFJlcXMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsKKyAgICBSdGxaZXJvTWVt
b3J5KCZSaW5nLT5TdWJtaXR0ZWRSZXFzLCBzaXplb2YoWEVOVkJEX1FVRVVFKSk7CisgICAgUnRs
WmVyb01lbW9yeSgmUmluZy0+U2h1dGRvd25TcmJzLCBzaXplb2YoWEVOVkJEX1FVRVVFKSk7CisK
ICAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5UaW1lciwgc2l6ZW9mKEtUSU1FUikpOwogICAgIFJ0
bFplcm9NZW1vcnkoJlJpbmctPlRpbWVyRHBjLCBzaXplb2YoS0RQQykpOwogICAgIFJ0bFplcm9N
ZW1vcnkoJlJpbmctPkRwYywgc2l6ZW9mKEtEUEMpKTsKQEAgLTcxNyw5ICsxOTAzLDY2IEBAIFJp
bmdEaXNhYmxlKAogICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZwogICAgICkKIHsKKyAgICBV
TE9ORyAgICAgICAgICAgICAgIENvdW50OworICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsK
KyAgICBQWEVOVkJEX1RBUkdFVCAgICAgIFRhcmdldCA9IEZyb250ZW5kR2V0VGFyZ2V0KFJpbmct
PkZyb250ZW5kKTsKKyAgICBQWEVOVkJEX0FEQVBURVIgICAgIEFkYXB0ZXIgPSBUYXJnZXRHZXRB
ZGFwdGVyKFRhcmdldCk7CisKICAgICBBU1NFUlQoUmluZy0+RW5hYmxlZCA9PSBUUlVFKTsKICAg
ICBSaW5nLT5FbmFibGVkID0gRkFMU0U7CiAKKyAgICAvLyBwb2xsIHJpbmcgYW5kIHNlbmQgZXZl
bnQgY2hhbm5lbCBub3RpZmljYXRpb24gZXZlcnkgMW1zIChmb3IgdXAgdG8gMyBtaW51dGVzKQor
ICAgIENvdW50ID0gMDsKKyAgICB3aGlsZSAoUXVldWVDb3VudCgmUmluZy0+U3VibWl0dGVkUmVx
cykpIHsKKyAgICAgICAgaWYgKENvdW50ID4gMTgwMDAwKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7CisgICAgICAgIFJpbmdQ
b2xsKFJpbmcpOworICAgICAgICBLZUxvd2VySXJxbChJcnFsKTsKKyAgICAgICAgWEVOQlVTX0VW
VENITihTZW5kLAorICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRlcmZhY2Us
CisgICAgICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCk7CisgICAgICAgIFN0b3JQb3J0
U3RhbGxFeGVjdXRpb24oMTAwMCk7ICAgLy8gMTAwMCBtaWNyby1zZWNvbmRzCisgICAgICAgICsr
Q291bnQ7CisgICAgfQorCisgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6ICV1IFN1Ym1pdHRlZCBy
ZXF1ZXN0cyBsZWZ0ICgldSBpdGVycmF0aW9ucylcbiIsCisgICAgICAgICAgICBGcm9udGVuZEdl
dFRhcmdldElkKFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgIFF1ZXVlQ291bnQoJlJpbmct
PlN1Ym1pdHRlZFJlcXMpLAorICAgICAgICAgICAgQ291bnQpOworCisgICAgLy8gQWJvcnQgRnJl
c2ggU1JCcworICAgIGZvciAoOzspIHsKKyAgICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsK
KyAgICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPkZyZXNoU3Ji
cyk7CisgICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIFNyYkV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfU1JCRVhULCBFbnRy
eSk7CisKKyAgICAgICAgU3JiRXh0LT5TcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfQUJPUlRF
RDsKKyAgICAgICAgU3JiRXh0LT5TcmItPlNjc2lTdGF0dXMgPSAweDQwOyAvLyBTQ1NJX0FCT1JU
RUQ7CisgICAgICAgIEFkYXB0ZXJDb21wbGV0ZVNyYihBZGFwdGVyLCBTcmJFeHQpOworICAgIH0K
KworICAgIC8vIEZhaWwgUHJlcGFyZWRSZXFzCisgICAgZm9yICg7OykgeworICAgICAgICBQWEVO
VkJEX1NSQkVYVCAgU3JiRXh0OworICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKKyAg
ICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPlByZXBhcmVkUmVx
cyk7CisgICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVu
dHJ5KTsKKyAgICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFJlcXVlc3QtPlNyYik7CisKKyAgICAg
ICAgU3JiRXh0LT5TcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfQUJPUlRFRDsKKyAgICAgICAg
UmluZ1B1dFJlcXVlc3QoUmluZywgUmVxdWVzdCk7CisKKyAgICAgICAgaWYgKEludGVybG9ja2Vk
RGVjcmVtZW50KCZTcmJFeHQtPkNvdW50KSA9PSAwKSB7CisgICAgICAgICAgICBTcmJFeHQtPlNy
Yi0+U2NzaVN0YXR1cyA9IDB4NDA7IC8vIFNDU0lfQUJPUlRFRAorICAgICAgICAgICAgQWRhcHRl
ckNvbXBsZXRlU3JiKEFkYXB0ZXIsIFNyYkV4dCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAv
LwogICAgIC8vIE5vIG5ldyB0aW1lcnMgY2FuIGJlIHNjaGVkdWxlZCBvbmNlIEVuYWJsZWQgZ29l
cyB0byBGQUxTRS4KICAgICAvLyBDYW5jZWwgYW55IGV4aXN0aW5nIG9uZXMuCkBAIC03ODIsMTAx
ICsyMDI1LDI4IEBAIFJpbmdEaXNjb25uZWN0KAogICAgIFJpbmctPlJlY2VpdmVkID0gMDsKIH0K
IAotQk9PTEVBTgotUmluZ1BvbGwoCitWT0lECitSaW5nVHJpZ2dlcigKICAgICBJTiAgUFhFTlZC
RF9SSU5HICAgIFJpbmcKICAgICApCiB7Ci0gICAgUFhFTlZCRF9UQVJHRVQgICAgICBUYXJnZXQg
PSBGcm9udGVuZEdldFRhcmdldChSaW5nLT5Gcm9udGVuZCk7Ci0gICAgQk9PTEVBTiAgICAgICAg
ICAgICBSZXRyeSA9IEZBTFNFOwotCi0gICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9
PSwgRElTUEFUQ0hfTEVWRUwpOwotICAgIEtlQWNxdWlyZVNwaW5Mb2NrQXREcGNMZXZlbCgmUmlu
Zy0+TG9jayk7Ci0KLSAgICAvLyBHdWFyZCBhZ2FpbnN0IHRoaXMgbG9ja2VkIHJlZ2lvbiBiZWlu
ZyBjYWxsZWQgYWZ0ZXIgdGhlIAotICAgIC8vIGxvY2sgb24gRnJvbnRlbmRTZXRTdGF0ZQotICAg
IGlmIChSaW5nLT5FbmFibGVkID09IEZBTFNFKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBm
b3IgKDs7KSB7Ci0gICAgICAgIFVMT05HICAgcnNwX3Byb2Q7Ci0gICAgICAgIFVMT05HICAgcnNw
X2NvbnM7Ci0KLSAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7Ci0KLSAgICAgICAgcnNwX3Byb2Qg
PSBSaW5nLT5TaGFyZWQtPnJzcF9wcm9kOwotICAgICAgICByc3BfY29ucyA9IFJpbmctPkZyb250
LnJzcF9jb25zOwotCi0gICAgICAgIEtlTWVtb3J5QmFycmllcigpOwotCi0gICAgICAgIGlmIChy
c3BfY29ucyA9PSByc3BfcHJvZCB8fCBSZXRyeSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIHdoaWxlIChyc3BfY29ucyAhPSByc3BfcHJvZCAmJiAhUmV0cnkpIHsKLSAgICAgICAgICAg
IGJsa2lmX3Jlc3BvbnNlX3QqICAgUmVzcG9uc2U7Ci0gICAgICAgICAgICBVTE9ORyAgICAgICAg
ICAgICAgIFRhZzsKLQotICAgICAgICAgICAgUmVzcG9uc2UgPSBSSU5HX0dFVF9SRVNQT05TRSgm
UmluZy0+RnJvbnQsIHJzcF9jb25zKTsKLSAgICAgICAgICAgICsrcnNwX2NvbnM7Ci0KLSAgICAg
ICAgICAgIGlmIChfX1JpbmdQdXRUYWcoUmluZywgUmVzcG9uc2UtPmlkLCAmVGFnKSkgewotICAg
ICAgICAgICAgICAgICsrUmluZy0+UmVjZWl2ZWQ7Ci0gICAgICAgICAgICAgICAgVGFyZ2V0Q29t
cGxldGVSZXNwb25zZShUYXJnZXQsIFRhZywgUmVzcG9uc2UtPnN0YXR1cyk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIFJ0bFplcm9NZW1vcnkoUmVzcG9uc2UsIHNpemVvZih1bmlvbiBi
bGtpZl9zcmluZ19lbnRyeSkpOwotCi0gICAgICAgICAgICBpZiAocnNwX2NvbnMgLSBSaW5nLT5G
cm9udC5yc3BfY29ucyA+IFJJTkdfU0laRSgmUmluZy0+RnJvbnQpIC8gNCkKLSAgICAgICAgICAg
ICAgICBSZXRyeSA9IFRSVUU7Ci0gICAgICAgIH0KLQotICAgICAgICBLZU1lbW9yeUJhcnJpZXIo
KTsKLQotICAgICAgICBSaW5nLT5Gcm9udC5yc3BfY29ucyA9IHJzcF9jb25zOwotICAgICAgICBS
aW5nLT5TaGFyZWQtPnJzcF9ldmVudCA9IHJzcF9jb25zICsgMTsKLSAgICB9Ci0KLWRvbmU6Ci0g
ICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBjTGV2ZWwoJlJpbmctPkxvY2spOworICAgIGlmICgh
UmluZy0+RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgcmV0dXJuIFJldHJ5OworICAg
IFhFTkJVU19FVlRDSE4oVHJpZ2dlciwKKyAgICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5J
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsKTsKIH0KIAotQk9PTEVB
TgotUmluZ1N1Ym1pdCgKK1ZPSUQKK1JpbmdRdWV1ZVJlcXVlc3QoCiAgICAgSU4gIFBYRU5WQkRf
UklORyAgICBSaW5nLAotICAgIElOICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdAorICAgIElOICBQ
WEVOVkJEX1NSQkVYVCAgU3JiRXh0CiAgICAgKQogewotICAgIEtJUlFMICAgICAgICAgICAgICAg
SXJxbDsKLSAgICBibGtpZl9yZXF1ZXN0X3QqICAgIHJlcTsKLSAgICBCT09MRUFOICAgICAgICAg
ICAgIE5vdGlmeTsKLQotICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZSaW5nLT5Mb2NrLCAmSXJxbCk7
Ci0gICAgaWYgKFJJTkdfRlVMTCgmUmluZy0+RnJvbnQpKSB7Ci0gICAgICAgIEtlUmVsZWFzZVNw
aW5Mb2NrKCZSaW5nLT5Mb2NrLCBJcnFsKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0K
LQotICAgIHJlcSA9IFJJTkdfR0VUX1JFUVVFU1QoJlJpbmctPkZyb250LCBSaW5nLT5Gcm9udC5y
ZXFfcHJvZF9wdnQpOwotICAgIF9fUmluZ0luc2VydChSaW5nLCBSZXF1ZXN0LCByZXEpOwotICAg
IEtlTWVtb3J5QmFycmllcigpOwotICAgICsrUmluZy0+RnJvbnQucmVxX3Byb2RfcHZ0OwotCi0g
ICAgUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkoJlJpbmctPkZyb250LCBOb3Rp
ZnkpOwotICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZSaW5nLT5Mb2NrLCBJcnFsKTsKLQotICAgIGlm
IChOb3RpZnkpCi0gICAgICAgIFJpbmdTZW5kKFJpbmcpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19
CisgICAgUXVldWVBcHBlbmQoJlJpbmctPkZyZXNoU3JicywKKyAgICAgICAgICAgICAgICAmU3Ji
RXh0LT5FbnRyeSk7CiAKLVZPSUQKLVJpbmdLaWNrKAotICAgIElOICBQWEVOVkJEX1JJTkcgICAg
UmluZwotICAgICkKLXsKICAgICBpZiAoIVJpbmctPkVuYWJsZWQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtODg1LDI3ICsyMDU1LDc5IEBAIFJpbmdLaWNrKAogfQogCiBWT0lECi1SaW5nVHJpZ2dl
cigKLSAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKK1JpbmdRdWV1ZVNodXRkb3duKAorICAg
IElOICBQWEVOVkJEX1JJTkcgICAgUmluZywKKyAgICBJTiAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4
dAogICAgICkKIHsKKyAgICBRdWV1ZUFwcGVuZCgmUmluZy0+U2h1dGRvd25TcmJzLAorICAgICAg
ICAgICAgICAgICZTcmJFeHQtPkVudHJ5KTsKKwogICAgIGlmICghUmluZy0+RW5hYmxlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgWEVOQlVTX0VWVENITihUcmlnZ2VyLAotICAgICAgICAgICAg
ICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIFJpbmctPkNo
YW5uZWwpOworICAgIGlmIChLZUluc2VydFF1ZXVlRHBjKCZSaW5nLT5EcGMsIE5VTEwsIE5VTEwp
KQorCSAgICArK1JpbmctPkRwY3M7CiB9CiAKIFZPSUQKLVJpbmdTZW5kKAorUmluZ1JlUXVldWVS
ZXF1ZXN0cygKICAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKICAgICApCiB7Ci0gICAgaWYg
KCFSaW5nLT5FbmFibGVkKQotICAgICAgICByZXR1cm47CisgICAgTElTVF9FTlRSWSAgICAgIExp
c3Q7CiAKLSAgICBYRU5CVVNfRVZUQ0hOKFNlbmQsCi0gICAgICAgICAgICAgICAgICAmUmluZy0+
RXZ0Y2huSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCk7CisgICAg
SW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsKKworICAgIC8vIHBvcCBhbGwgc3VibWl0dGVkIHJl
cXVlc3RzLCBjbGVhbnVwIGFuZCBhZGQgYXNzb2NpYXRlZCBTUkIgdG8gYSBsaXN0CisgICAgZm9y
ICg7OykgeworICAgICAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0OworICAgICAgICBQWEVOVkJE
X1JFUVVFU1QgUmVxdWVzdDsKKyAgICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUXVldWVQ
b3AoJlJpbmctPlN1Ym1pdHRlZFJlcXMpOworICAgICAgICBpZiAoRW50cnkgPT0gTlVMTCkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50
cnksIFhFTlZCRF9SRVFVRVNULCBFbnRyeSk7CisgICAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChS
ZXF1ZXN0LT5TcmIpOworCisgICAgICAgIFJpbmdQdXRSZXF1ZXN0KFJpbmcsIFJlcXVlc3QpOwor
CisgICAgICAgIGlmIChJbnRlcmxvY2tlZERlY3JlbWVudCgmU3JiRXh0LT5Db3VudCkgPT0gMCkg
eworICAgICAgICAgICAgSW5zZXJ0VGFpbExpc3QoJkxpc3QsICZTcmJFeHQtPkVudHJ5KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIHBvcCBhbGwgcHJlcGFyZWQgcmVxdWVzdHMsIGNsZWFu
dXAgYW5kIGFkZCBhc3NvY2lhdGVkIFNSQiB0byBhIGxpc3QKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQ7CisgICAgICAgIFBYRU5WQkRfUkVRVUVTVCBSZXF1
ZXN0OworICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+UHJl
cGFyZWRSZXFzKTsKKyAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVR
VUVTVCwgRW50cnkpOworICAgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoUmVxdWVzdC0+U3JiKTsK
KworICAgICAgICBSaW5nUHV0UmVxdWVzdChSaW5nLCBSZXF1ZXN0KTsKKworICAgICAgICBpZiAo
SW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDApIHsKKyAgICAgICAgICAg
IEluc2VydFRhaWxMaXN0KCZMaXN0LCAmU3JiRXh0LT5FbnRyeSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBmb3JlYWNoIFNSQiBpbiBsaXN0LCBwdXQgb24gc3RhcnQgb2YgRnJlc2hTcmJz
CisgICAgZm9yICg7OykgeworICAgICAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0OworICAgICAg
ICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBSZW1vdmVUYWlsTGlzdCgmTGlzdCk7CisgICAgICAg
IGlmIChFbnRyeSA9PSAmTGlzdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBTcmJFeHQg
PSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOworCisgICAg
ICAgIFF1ZXVlVW5Qb3AoJlJpbmctPkZyZXNoU3JicywgJlNyYkV4dC0+RW50cnkpOworICAgIH0K
KworICAgIC8vIG5vdyB0aGUgZmlyc3Qgc2V0IG9mIHJlcXVlc3RzIHBvcHBlZCBvZmYgc3VibWl0
dGVkIGxpc3QgaXMgdGhlIG5leHQgU1JCCisgICAgLy8gdG8gYmUgcG9wcGVkIG9mZiB0aGUgZnJl
c2ggbGlzdAorCisgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6ICVkIEZyZXNoIFNSQnNcbiIsCisg
ICAgICAgICAgICBGcm9udGVuZEdldFRhcmdldElkKFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAg
ICAgIFF1ZXVlQ291bnQoJlJpbmctPkZyZXNoU3JicykpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3hl
bnZiZC9yaW5nLmggYi9zcmMveGVudmJkL3JpbmcuaAppbmRleCAzYWMxYzcxLi5hMzlkMzE3IDEw
MDc1NQotLS0gYS9zcmMveGVudmJkL3JpbmcuaAorKysgYi9zcmMveGVudmJkL3JpbmcuaApAQCAt
NzQsMjkgKzc0LDI1IEBAIFJpbmdEaXNjb25uZWN0KAogICAgIElOICBQWEVOVkJEX1JJTkcgICAg
UmluZwogICAgICk7CiAKLWV4dGVybiBCT09MRUFOCi1SaW5nUG9sbCgKK2V4dGVybiBWT0lECitS
aW5nVHJpZ2dlcigKICAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKICAgICApOwogCi1leHRl
cm4gQk9PTEVBTgotUmluZ1N1Ym1pdCgKLSAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCi0g
ICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0Ci0gICAgKTsKLQogZXh0ZXJuIFZPSUQKLVJp
bmdLaWNrKAotICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZworUmluZ1F1ZXVlUmVxdWVzdCgK
KyAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCisgICAgSU4gIFBYRU5WQkRfU1JCRVhUICBT
cmJFeHQKICAgICApOwogCiBleHRlcm4gVk9JRAotUmluZ1RyaWdnZXIoCi0gICAgSU4gIFBYRU5W
QkRfUklORyAgICBSaW5nCitSaW5nUXVldWVTaHV0ZG93bigKKyAgICBJTiAgUFhFTlZCRF9SSU5H
ICAgIFJpbmcsCisgICAgSU4gIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQKICAgICApOwogCiBleHRl
cm4gVk9JRAotUmluZ1NlbmQoCitSaW5nUmVRdWV1ZVJlcXVlc3RzKAogICAgIElOICBQWEVOVkJE
X1JJTkcgICAgUmluZwogICAgICk7CiAKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvdGFyZ2V0LmMg
Yi9zcmMveGVudmJkL3RhcmdldC5jCmluZGV4IGMwZmE0ZTkuLjJlMzA4NjAgMTAwNjQ0Ci0tLSBh
L3NyYy94ZW52YmQvdGFyZ2V0LmMKKysrIGIvc3JjL3hlbnZiZC90YXJnZXQuYwpAQCAtNTEsMTUg
KzUxLDYgQEAKIAogI2RlZmluZSBUQVJHRVRfU0lHTkFUVVJFICAgICAgICAgICAnb2RwWCcKIAot
dHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9MT09LQVNJREUgewotICAgIEtFVkVOVCAgICAgICAgICAg
ICAgICAgICAgICBFbXB0eTsKLSAgICBMT05HICAgICAgICAgICAgICAgICAgICAgICAgVXNlZDsK
LSAgICBMT05HICAgICAgICAgICAgICAgICAgICAgICAgTWF4OwotICAgIFVMT05HICAgICAgICAg
ICAgICAgICAgICAgICBGYWlsZWQ7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIFNp
emU7Ci0gICAgTlBBR0VEX0xPT0tBU0lERV9MSVNUICAgICAgIExpc3Q7Ci19IFhFTlZCRF9MT09L
QVNJREUsICpQWEVOVkJEX0xPT0tBU0lERTsKLQogc3RydWN0IF9YRU5WQkRfVEFSR0VUIHsKICAg
ICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOwogICAgIFBYRU5WQkRfQURB
UFRFUiAgICAgICAgICAgICAgICAgQWRhcHRlcjsKQEAgLTc2LDQ4ICs2NywxNiBAQCBzdHJ1Y3Qg
X1hFTlZCRF9UQVJHRVQgewogICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJBQ0sgICAgICBEZWJ1Z0Nh
bGxiYWNrOwogICAgIFBYRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJhY2s7
CiAKLSAgICAvLyBTdGF0ZQotICAgIExPTkcgICAgICAgICAgICAgICAgICAgICAgICBQYXVzZWQ7
Ci0KICAgICAvLyBFamVjdAogICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBXcml0dGVu
RWplY3RlZDsKICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgRWplY3RSZXF1ZXN0ZWQ7
CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIEVqZWN0UGVuZGluZzsKICAgICBCT09M
RUFOICAgICAgICAgICAgICAgICAgICAgTWlzc2luZzsKICAgICBjb25zdCBDSEFSKiAgICAgICAg
ICAgICAgICAgUmVhc29uOwotCi0gICAgLy8gU1JCcwotICAgIFhFTlZCRF9MT09LQVNJREUgICAg
ICAgICAgICBSZXF1ZXN0TGlzdDsKLSAgICBYRU5WQkRfTE9PS0FTSURFICAgICAgICAgICAgU2Vn
bWVudExpc3Q7Ci0gICAgWEVOVkJEX0xPT0tBU0lERSAgICAgICAgICAgIEluZGlyZWN0TGlzdDsK
LSAgICBYRU5WQkRfUVVFVUUgICAgICAgICAgICAgICAgRnJlc2hTcmJzOwotICAgIFhFTlZCRF9R
VUVVRSAgICAgICAgICAgICAgICBQcmVwYXJlZFJlcXM7Ci0gICAgWEVOVkJEX1FVRVVFICAgICAg
ICAgICAgICAgIFN1Ym1pdHRlZFJlcXM7Ci0gICAgWEVOVkJEX1FVRVVFICAgICAgICAgICAgICAg
IFNodXRkb3duU3JiczsKLSAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgTmV4dFRhZzsK
LQotICAgIC8vIFN0YXRzIC0gU1JCIENvdW50cyBieSBCTEtJRl9PUF8KLSAgICBVTE9ORyAgICAg
ICAgICAgICAgICAgICAgICAgQmxrT3BSZWFkOwotICAgIFVMT05HICAgICAgICAgICAgICAgICAg
ICAgICBCbGtPcFdyaXRlOwotICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBCbGtPcElu
ZGlyZWN0UmVhZDsKLSAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgQmxrT3BJbmRpcmVj
dFdyaXRlOwotICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBCbGtPcEJhcnJpZXI7Ci0g
ICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIEJsa09wRGlzY2FyZDsKLSAgICBVTE9ORyAg
ICAgICAgICAgICAgICAgICAgICAgQmxrT3BGbHVzaDsKLSAgICAvLyBTdGF0cyAtIEZhaWx1cmVz
Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIEZhaWxlZE1hcHM7Ci0gICAgVUxPTkcg
ICAgICAgICAgICAgICAgICAgICAgIEZhaWxlZEJvdW5jZXM7Ci0gICAgVUxPTkcgICAgICAgICAg
ICAgICAgICAgICAgIEZhaWxlZEdyYW50czsKLSAgICAvLyBTdGF0cyAtIFNlZ21lbnRzCi0gICAg
VUxPTkc2NCAgICAgICAgICAgICAgICAgICAgIFNlZ3NHcmFudGVkOwotICAgIFVMT05HNjQgICAg
ICAgICAgICAgICAgICAgICBTZWdzQm91bmNlZDsKIH07CiAKIC8vPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KICNkZWZpbmUgVEFSR0VUX1BPT0xfVEFHICAgICAgICAgICAgJ29kUFgnCi0jZGVmaW5lIFJF
UVVFU1RfUE9PTF9UQUcgICAgICAgICdxZVJYJwotI2RlZmluZSBTRUdNRU5UX1BPT0xfVEFHICAg
ICAgICAnZ2VTWCcKLSNkZWZpbmUgSU5ESVJFQ1RfUE9PTF9UQUcgICAgICAgJ2RuSVgnCiAKIF9f
Y2hlY2tSZXR1cm4KIF9fZHJ2X2FsbG9jYXRlc01lbShtZW0pCkBAIC0xNDIsODkgKzEwMSw2IEBA
IF9fVGFyZ2V0RnJlZSgKIH0KIAogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gTG9va2FzaWRl
cwotc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKLV9fTG9va2FzaWRlSW5pdCgKLSAgICBJTiBPVVQg
IFBYRU5WQkRfTE9PS0FTSURFICAgTG9va2FzaWRlLAotICAgIElOICBVTE9ORyAgICAgICAgICAg
ICAgICAgICBTaXplLAotICAgIElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBUYWcKLSAgICAp
Ci17Ci0gICAgUnRsWmVyb01lbW9yeShMb29rYXNpZGUsIHNpemVvZihYRU5WQkRfTE9PS0FTSURF
KSk7Ci0gICAgTG9va2FzaWRlLT5TaXplID0gU2l6ZTsKLSAgICBLZUluaXRpYWxpemVFdmVudCgm
TG9va2FzaWRlLT5FbXB0eSwgU3luY2hyb25pemF0aW9uRXZlbnQsIFRSVUUpOwotICAgIEV4SW5p
dGlhbGl6ZU5QYWdlZExvb2thc2lkZUxpc3QoJkxvb2thc2lkZS0+TGlzdCwgTlVMTCwgTlVMTCwg
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUsIFRhZywgMCk7Ci19
Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0xvb2thc2lkZVRlcm0oCi0gICAgSU4gIFBY
RU5WQkRfTE9PS0FTSURFICAgICAgIExvb2thc2lkZQotICAgICkKLXsKLSAgICBBU1NFUlQzVShM
b29rYXNpZGUtPlVzZWQsID09LCAwKTsKLSAgICBFeERlbGV0ZU5QYWdlZExvb2thc2lkZUxpc3Qo
Jkxvb2thc2lkZS0+TGlzdCk7Ci0gICAgUnRsWmVyb01lbW9yeShMb29rYXNpZGUsIHNpemVvZihY
RU5WQkRfTE9PS0FTSURFKSk7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBQVk9JRAotX19Mb29r
YXNpZGVBbGxvYygKLSAgICBJTiAgUFhFTlZCRF9MT09LQVNJREUgICAgICAgTG9va2FzaWRlCi0g
ICAgKQotewotICAgIExPTkcgICAgUmVzdWx0OwotICAgIFBWT0lEICAgQnVmZmVyOwotCi0gICAg
QnVmZmVyID0gRXhBbGxvY2F0ZUZyb21OUGFnZWRMb29rYXNpZGVMaXN0KCZMb29rYXNpZGUtPkxp
c3QpOwotICAgIGlmIChCdWZmZXIgPT0gTlVMTCkgewotICAgICAgICArK0xvb2thc2lkZS0+RmFp
bGVkOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBSdGxaZXJvTWVtb3J5KEJ1
ZmZlciwgTG9va2FzaWRlLT5TaXplKTsKLSAgICBSZXN1bHQgPSBJbnRlcmxvY2tlZEluY3JlbWVu
dCgmTG9va2FzaWRlLT5Vc2VkKTsKLSAgICBBU1NFUlQzUyhSZXN1bHQsID4sIDApOwotICAgIGlm
IChSZXN1bHQgPiBMb29rYXNpZGUtPk1heCkKLSAgICAgICAgTG9va2FzaWRlLT5NYXggPSBSZXN1
bHQ7Ci0gICAgS2VDbGVhckV2ZW50KCZMb29rYXNpZGUtPkVtcHR5KTsKLQotICAgIHJldHVybiBC
dWZmZXI7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0xvb2thc2lkZUZyZWUoCi0g
ICAgSU4gIFBYRU5WQkRfTE9PS0FTSURFICAgICAgIExvb2thc2lkZSwKLSAgICBJTiAgUFZPSUQg
ICAgICAgICAgICAgICAgICAgQnVmZmVyCi0gICAgKQotewotICAgIExPTkcgICAgICAgICAgICBS
ZXN1bHQ7Ci0KLSAgICBFeEZyZWVUb05QYWdlZExvb2thc2lkZUxpc3QoJkxvb2thc2lkZS0+TGlz
dCwgQnVmZmVyKTsKLSAgICBSZXN1bHQgPSBJbnRlcmxvY2tlZERlY3JlbWVudCgmTG9va2FzaWRl
LT5Vc2VkKTsKLSAgICBBU1NFUlQzUyhSZXN1bHQsID49LCAwKTsKLQotICAgIGlmIChSZXN1bHQg
PT0gMCkgewotICAgICAgICBLZVNldEV2ZW50KCZMb29rYXNpZGUtPkVtcHR5LCBJT19OT19JTkNS
RU1FTlQsIEZBTFNFKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0xv
b2thc2lkZURlYnVnKAotICAgIElOICBQWEVOVkJEX0xPT0tBU0lERSAgICAgICAgICAgTG9va2Fz
aWRlLAotICAgIElOICBQWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSAgICAgRGVidWcsCi0gICAgSU4g
IFBDSEFSICAgICAgICAgICAgICAgICAgICAgICBOYW1lCi0gICAgKQotewotICAgIFhFTkJVU19E
RUJVRyhQcmludGYsIERlYnVnLAotICAgICAgICAgICAgICAgICAiTE9PS0FTSURFOiAlczogJXUg
LyAldSAoJXUgZmFpbGVkKVxuIiwKLSAgICAgICAgICAgICAgICAgTmFtZSwgTG9va2FzaWRlLT5V
c2VkLAotICAgICAgICAgICAgICAgICBMb29rYXNpZGUtPk1heCwgTG9va2FzaWRlLT5GYWlsZWQp
OwotCi0gICAgTG9va2FzaWRlLT5NYXggPSBMb29rYXNpZGUtPlVzZWQ7Ci0gICAgTG9va2FzaWRl
LT5GYWlsZWQgPSAwOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBEZWJ1Zwogc3Rh
dGljIEZPUkNFSU5MSU5FIFBDSEFSCiBfX1BucFN0YXRlTmFtZSgKQEAgLTMzNywxMDExICsyMTMs
NiBAQCBUYXJnZXRTZXREZXZpY2VPYmplY3QoCiAgICAgVGFyZ2V0LT5EZXZpY2VPYmplY3QgPSBE
ZXZpY2VPYmplY3Q7CiB9CiAKLXN0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCi1UYXJnZXRJc1Bh
dXNlZCgKLSAgICBJTiAgUFhFTlZCRF9UQVJHRVQgIFRhcmdldAotICAgICkKLXsKLSAgICBCT09M
RUFOICAgICAgICAgICAgIFBhdXNlZDsKLSAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7Ci0K
LSAgICBLZUFjcXVpcmVTcGluTG9jaygmVGFyZ2V0LT5Mb2NrLCAmSXJxbCk7Ci0gICAgUGF1c2Vk
ID0gKFRhcmdldC0+UGF1c2VkID4gMCk7Ci0gICAgS2VSZWxlYXNlU3BpbkxvY2soJlRhcmdldC0+
TG9jaywgSXJxbCk7Ci0KLSAgICByZXR1cm4gUGF1c2VkOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJ
TkUgVUxPTkcKLVRhcmdldFNlY3RvclNpemUoCi0gICAgX19pbiBQWEVOVkJEX1RBUkdFVCAgICAg
ICAgICAgICBUYXJnZXQKLSAgICApCi17Ci0gICAgcmV0dXJuIEZyb250ZW5kR2V0RGlza0luZm8o
VGFyZ2V0LT5Gcm9udGVuZCktPlNlY3RvclNpemU7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLXN0YXRpYyBQWEVOVkJEX0lORElSRUNUCi1UYXJnZXRHZXRJbmRpcmVjdCgKLSAgICBJTiAg
UFhFTlZCRF9UQVJHRVQgICAgICAgICAgICAgVGFyZ2V0Ci0gICAgKQotewotICAgIFBYRU5WQkRf
SU5ESVJFQ1QgICAgSW5kaXJlY3Q7Ci0gICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7Ci0g
ICAgUFhFTlZCRF9HUkFOVEVSICAgICBHcmFudGVyID0gRnJvbnRlbmRHZXRHcmFudGVyKFRhcmdl
dC0+RnJvbnRlbmQpOwotCi0gICAgSW5kaXJlY3QgPSBfX0xvb2thc2lkZUFsbG9jKCZUYXJnZXQt
PkluZGlyZWN0TGlzdCk7Ci0gICAgaWYgKEluZGlyZWN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8g
ZmFpbDE7Ci0KLSAgICBSdGxaZXJvTWVtb3J5KEluZGlyZWN0LCBzaXplb2YoWEVOVkJEX0lORElS
RUNUKSk7Ci0KLSAgICBJbmRpcmVjdC0+TWRsID0gX19BbGxvY2F0ZVBhZ2UoKTsKLSAgICBpZiAo
SW5kaXJlY3QtPk1kbCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWwyOwotCi0gICAgSW5kaXJl
Y3QtPlBhZ2UgPSBNbUdldFN5c3RlbUFkZHJlc3NGb3JNZGxTYWZlKEluZGlyZWN0LT5NZGwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbFBh
Z2VQcmlvcml0eSk7Ci0KLSAgICBzdGF0dXMgPSBHcmFudGVyR2V0KEdyYW50ZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBNbUdldE1kbFBmbkFycmF5KEluZGlyZWN0LT5NZGwpWzBdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZJbmRp
cmVjdC0+R3JhbnQpOwotICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3Rv
IGZhaWwzOwotCi0gICAgcmV0dXJuIEluZGlyZWN0OwotCi1mYWlsMzoKLSAgICBfX0ZyZWVQYWdl
KEluZGlyZWN0LT5NZGwpOwotZmFpbDI6Ci0gICAgX19Mb29rYXNpZGVGcmVlKCZUYXJnZXQtPklu
ZGlyZWN0TGlzdCwgSW5kaXJlY3QpOwotZmFpbDE6Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0
YXRpYyBWT0lECi1UYXJnZXRQdXRJbmRpcmVjdCgKLSAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAg
ICAgICAgICAgVGFyZ2V0LAotICAgIElOICBQWEVOVkJEX0lORElSRUNUICAgICAgICBJbmRpcmVj
dAotICAgICkKLXsKLSAgICBQWEVOVkJEX0dSQU5URVIgR3JhbnRlciA9IEZyb250ZW5kR2V0R3Jh
bnRlcihUYXJnZXQtPkZyb250ZW5kKTsKLQotICAgIGlmIChJbmRpcmVjdC0+R3JhbnQpCi0gICAg
ICAgIEdyYW50ZXJQdXQoR3JhbnRlciwgSW5kaXJlY3QtPkdyYW50KTsKLSAgICBpZiAoSW5kaXJl
Y3QtPlBhZ2UpCi0gICAgICAgIF9fRnJlZVBhZ2UoSW5kaXJlY3QtPk1kbCk7Ci0KLSAgICBSdGxa
ZXJvTWVtb3J5KEluZGlyZWN0LCBzaXplb2YoWEVOVkJEX0lORElSRUNUKSk7Ci0gICAgX19Mb29r
YXNpZGVGcmVlKCZUYXJnZXQtPkluZGlyZWN0TGlzdCwgSW5kaXJlY3QpOwotfQotCi1zdGF0aWMg
UFhFTlZCRF9TRUdNRU5UCi1UYXJnZXRHZXRTZWdtZW50KAotICAgIElOICBQWEVOVkJEX1RBUkdF
VCAgICAgICAgICAgICBUYXJnZXQKLSAgICApCi17Ci0gICAgUFhFTlZCRF9TRUdNRU5UICAgICAg
ICAgICAgIFNlZ21lbnQ7Ci0KLSAgICBTZWdtZW50ID0gX19Mb29rYXNpZGVBbGxvYygmVGFyZ2V0
LT5TZWdtZW50TGlzdCk7Ci0gICAgaWYgKFNlZ21lbnQgPT0gTlVMTCkKLSAgICAgICAgZ290byBm
YWlsMTsKLQotICAgIFJ0bFplcm9NZW1vcnkoU2VnbWVudCwgc2l6ZW9mKFhFTlZCRF9TRUdNRU5U
KSk7Ci0gICAgcmV0dXJuIFNlZ21lbnQ7Ci0KLWZhaWwxOgotICAgIHJldHVybiBOVUxMOwotfQot
Ci1zdGF0aWMgVk9JRAotVGFyZ2V0UHV0U2VnbWVudCgKLSAgICBJTiAgUFhFTlZCRF9UQVJHRVQg
ICAgICAgICAgICAgVGFyZ2V0LAotICAgIElOICBQWEVOVkJEX1NFR01FTlQgICAgICAgICBTZWdt
ZW50Ci0gICAgKQotewotICAgIFBYRU5WQkRfR1JBTlRFUiBHcmFudGVyID0gRnJvbnRlbmRHZXRH
cmFudGVyKFRhcmdldC0+RnJvbnRlbmQpOwotCi0gICAgaWYgKFNlZ21lbnQtPkdyYW50KQotICAg
ICAgICBHcmFudGVyUHV0KEdyYW50ZXIsIFNlZ21lbnQtPkdyYW50KTsKLQotICAgIGlmIChTZWdt
ZW50LT5CdWZmZXJJZCkKLSAgICAgICAgQnVmZmVyUHV0KFNlZ21lbnQtPkJ1ZmZlcklkKTsKLQot
ICAgIGlmIChTZWdtZW50LT5CdWZmZXIpCi0gICAgICAgIE1tVW5tYXBMb2NrZWRQYWdlcyhTZWdt
ZW50LT5CdWZmZXIsICZTZWdtZW50LT5NZGwpOwotCi0gICAgUnRsWmVyb01lbW9yeShTZWdtZW50
LCBzaXplb2YoWEVOVkJEX1NFR01FTlQpKTsKLSAgICBfX0xvb2thc2lkZUZyZWUoJlRhcmdldC0+
U2VnbWVudExpc3QsIFNlZ21lbnQpOwotfQotCi1zdGF0aWMgUFhFTlZCRF9SRVFVRVNUCi1UYXJn
ZXRHZXRSZXF1ZXN0KAotICAgIElOICBQWEVOVkJEX1RBUkdFVCAgICAgICAgICAgICBUYXJnZXQK
LSAgICApCi17Ci0gICAgUFhFTlZCRF9SRVFVRVNUICAgICAgICAgICAgIFJlcXVlc3Q7Ci0KLSAg
ICBSZXF1ZXN0ID0gX19Mb29rYXNpZGVBbGxvYygmVGFyZ2V0LT5SZXF1ZXN0TGlzdCk7Ci0gICAg
aWYgKFJlcXVlc3QgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMTsKLQotICAgIFJ0bFplcm9N
ZW1vcnkoUmVxdWVzdCwgc2l6ZW9mKFhFTlZCRF9SRVFVRVNUKSk7Ci0gICAgUmVxdWVzdC0+SWQg
PSAoVUxPTkcpSW50ZXJsb2NrZWRJbmNyZW1lbnQoKFBMT05HKSZUYXJnZXQtPk5leHRUYWcpOwot
ICAgIEluaXRpYWxpemVMaXN0SGVhZCgmUmVxdWVzdC0+U2VnbWVudHMpOwotICAgIEluaXRpYWxp
emVMaXN0SGVhZCgmUmVxdWVzdC0+SW5kaXJlY3RzKTsKLQotICAgIHJldHVybiBSZXF1ZXN0Owot
Ci1mYWlsMToKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFZPSUQKLVRhcmdldFB1dFJl
cXVlc3QoCi0gICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwKLSAgICBJ
TiAgUFhFTlZCRF9SRVFVRVNUICAgICAgICAgUmVxdWVzdAotICAgICkKLXsKLSAgICBQTElTVF9F
TlRSWSAgICAgRW50cnk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFBYRU5WQkRfU0VHTUVO
VCBTZWdtZW50OwotCi0gICAgICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJlJlcXVlc3QtPlNl
Z21lbnRzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09ICZSZXF1ZXN0LT5TZWdtZW50cykKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnks
IFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7Ci0gICAgICAgIFRhcmdldFB1dFNlZ21lbnQoVGFyZ2V0
LCBTZWdtZW50KTsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFBYRU5WQkRfSU5E
SVJFQ1QgICAgSW5kaXJlY3Q7Ci0KLSAgICAgICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdCgmUmVx
dWVzdC0+SW5kaXJlY3RzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09ICZSZXF1ZXN0LT5JbmRpcmVj
dHMpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgSW5kaXJlY3QgPSBDT05UQUlOSU5HX1JF
Q09SRChFbnRyeSwgWEVOVkJEX0lORElSRUNULCBFbnRyeSk7Ci0gICAgICAgIFRhcmdldFB1dElu
ZGlyZWN0KFRhcmdldCwgSW5kaXJlY3QpOwotICAgIH0KLQotICAgIFJ0bFplcm9NZW1vcnkoUmVx
dWVzdCwgc2l6ZW9mKFhFTlZCRF9SRVFVRVNUKSk7Ci0gICAgX19Mb29rYXNpZGVGcmVlKCZUYXJn
ZXQtPlJlcXVlc3RMaXN0LCBSZXF1ZXN0KTsKLX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFBYRU5W
QkRfUkVRVUVTVAotVGFyZ2V0UmVxdWVzdEZyb21UYWcoCi0gICAgSU4gIFBYRU5WQkRfVEFSR0VU
ICAgICAgICAgICAgIFRhcmdldCwKLSAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgVGFn
Ci0gICAgKQotewotICAgIEtJUlFMICAgICAgICAgICBJcnFsOwotICAgIFBMSVNUX0VOVFJZICAg
ICBFbnRyeTsKLSAgICBQWEVOVkJEX1FVRVVFICAgUXVldWUgPSAmVGFyZ2V0LT5TdWJtaXR0ZWRS
ZXFzOwotCi0gICAgS2VBY3F1aXJlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCAmSXJxbCk7Ci0KLSAg
ICBmb3IgKEVudHJ5ID0gUXVldWUtPkxpc3QuRmxpbms7IEVudHJ5ICE9ICZRdWV1ZS0+TGlzdDsg
RW50cnkgPSBFbnRyeS0+RmxpbmspIHsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3Qg
PSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsKLSAgICAg
ICAgaWYgKFJlcXVlc3QtPklkID09IFRhZykgewotICAgICAgICAgICAgUmVtb3ZlRW50cnlMaXN0
KCZSZXF1ZXN0LT5FbnRyeSk7Ci0gICAgICAgICAgICAtLVF1ZXVlLT5DdXJyZW50OwotICAgICAg
ICAgICAgS2VSZWxlYXNlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsKLSAgICAgICAgICAg
IHJldHVybiBSZXF1ZXN0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgS2VSZWxlYXNlU3Bpbkxv
Y2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsKLSAgICBXYXJuaW5nKCJUYXJnZXRbJWRdIDogVGFnICV4
IG5vdCBmb3VuZCBpbiBzdWJtaXR0ZWQgbGlzdCAoJXUgaXRlbXMpXG4iLAotICAgICAgICAgICAg
VGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSwgVGFnLCBRdWV1ZUNvdW50KFF1ZXVlKSk7Ci0gICAg
cmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX1RhcmdldEluY0Js
a2lmT3BDb3VudCgKLSAgICBfX2luIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwK
LSAgICBfX2luIFBYRU5WQkRfUkVRVUVTVCAgICAgICAgIFJlcXVlc3QKLSAgICApCi17Ci0gICAg
c3dpdGNoIChSZXF1ZXN0LT5PcGVyYXRpb24pIHsKLSAgICBjYXNlIEJMS0lGX09QX1JFQUQ6Ci0g
ICAgICAgIGlmIChSZXF1ZXN0LT5OclNlZ21lbnRzID4gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9S
RVFVRVNUKQotICAgICAgICAgICAgKytUYXJnZXQtPkJsa09wSW5kaXJlY3RSZWFkOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICArK1RhcmdldC0+QmxrT3BSZWFkOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgotICAgICAgICBpZiAoUmVxdWVzdC0+TnJTZWdtZW50
cyA+IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCkKLSAgICAgICAgICAgICsrVGFyZ2V0
LT5CbGtPcEluZGlyZWN0V3JpdGU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICsrVGFyZ2V0
LT5CbGtPcFdyaXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJMS0lGX09QX1dSSVRFX0JB
UlJJRVI6Ci0gICAgICAgICsrVGFyZ2V0LT5CbGtPcEJhcnJpZXI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQkxLSUZfT1BfRElTQ0FSRDoKLSAgICAgICAgKytUYXJnZXQtPkJsa09wRGlzY2Fy
ZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEU6Ci0g
ICAgICAgICsrVGFyZ2V0LT5CbGtPcEZsdXNoOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlQoRkFMU0UpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0
YXRpYyBGT1JDRUlOTElORSBVTE9ORwotX19TZWN0b3JzUGVyUGFnZSgKLSAgICBfX2luIFVMT05H
ICAgICAgICAgICAgICAgICAgIFNlY3RvclNpemUKLSAgICApCi17Ci0gICAgQVNTRVJUM1UoU2Vj
dG9yU2l6ZSwgIT0sIDApOwotICAgIHJldHVybiBQQUdFX1NJWkUgLyBTZWN0b3JTaXplOwotfQot
Ci1zdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAotX19PcGVyYXRpb24oCi0gICAgX19pbiBVQ0hBUiAg
ICAgICAgICAgICAgICAgICBDZGJPcCwKLSAgICBfX291dCBQVUNIQVIgICAgICAgICAgICAgICAg
IFJpbmdPcCwKLSAgICBfX291dCBQQk9PTEVBTiAgICAgICAgICAgICAgIFJlYWRPbmx5Ci0gICAg
KQotewotICAgIHN3aXRjaCAoQ2RiT3ApIHsKLSAgICBjYXNlIFNDU0lPUF9SRUFEOgotICAgICAg
ICAqUmluZ09wICAgICA9IEJMS0lGX09QX1JFQUQ7Ci0gICAgICAgICpSZWFkT25seSAgID0gRkFM
U0U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0NTSU9QX1dSSVRFOgotICAgICAgICAqUmlu
Z09wICAgICA9IEJMS0lGX09QX1dSSVRFOwotICAgICAgICAqUmVhZE9ubHkgICA9IFRSVUU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChGQUxTRSk7Ci0gICAg
fQotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgTU1fUEFHRV9QUklPUklUWQotX19UYXJnZXRQcmlv
cml0eSgKLSAgICBfX2luIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldAotICAgICkK
LXsKLSAgICBQWEVOVkJEX0NBUFMgICBDYXBzID0gRnJvbnRlbmRHZXRDYXBzKFRhcmdldC0+RnJv
bnRlbmQpOwotICAgIGlmICghKENhcHMtPlBhZ2luZyB8fAotICAgICAgICAgIENhcHMtPkhpYmVy
bmF0aW9uIHx8Ci0gICAgICAgICAgQ2Fwcy0+RHVtcEZpbGUpKQotICAgICAgICByZXR1cm4gTm9y
bWFsUGFnZVByaW9yaXR5OwotCi0gICAgcmV0dXJuIEhpZ2hQYWdlUHJpb3JpdHk7Ci19Ci0KLXN0
YXRpYyBGT1JDRUlOTElORSBWT0lECi1SZXF1ZXN0Q29weU91dHB1dCgKLSAgICBfX2luIFBYRU5W
QkRfUkVRVUVTVCAgICAgICAgIFJlcXVlc3QKLSAgICApCi17Ci0gICAgUExJU1RfRU5UUlkgICAg
IEVudHJ5OwotCi0gICAgaWYgKFJlcXVlc3QtPk9wZXJhdGlvbiAhPSBCTEtJRl9PUF9SRUFEKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMuRmxp
bms7Ci0gICAgICAgICAgICBFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7Ci0gICAgICAgICAg
ICBFbnRyeSA9IEVudHJ5LT5GbGluaykgewotICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVu
dCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfU0VHTUVOVCwgRW50cnkpOwotCi0g
ICAgICAgIGlmIChTZWdtZW50LT5CdWZmZXJJZCkKLSAgICAgICAgICAgIEJ1ZmZlckNvcHlPdXQo
U2VnbWVudC0+QnVmZmVySWQsIFNlZ21lbnQtPkJ1ZmZlciwgU2VnbWVudC0+TGVuZ3RoKTsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBCT09MRUFOCi1QcmVwYXJlU2VnbWVudCgKLSAgICBJTiAgUFhFTlZC
RF9UQVJHRVQgICAgICAgICAgVGFyZ2V0LAotICAgIElOICBQWEVOVkJEX1NFR01FTlQgICAgICAg
ICBTZWdtZW50LAotICAgIElOICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQsCi0gICAg
SU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgIFJlYWRPbmx5LAotICAgIElOICBVTE9ORyAgICAg
ICAgICAgICAgICAgICBTZWN0b3JzTGVmdCwKLSAgICBPVVQgUFVMT05HICAgICAgICAgICAgICAg
ICAgU2VjdG9yc05vdwotICAgICkKLXsKLSAgICBQRk5fTlVNQkVSICAgICAgUGZuOwotICAgIFVM
T05HICAgICAgICAgICBPZmZzZXQ7Ci0gICAgVUxPTkcgICAgICAgICAgIExlbmd0aDsKLSAgICBO
VFNUQVRVUyAgICAgICAgU3RhdHVzOwotICAgIFBYRU5WQkRfR1JBTlRFUiBHcmFudGVyID0gRnJv
bnRlbmRHZXRHcmFudGVyKFRhcmdldC0+RnJvbnRlbmQpOwotICAgIGNvbnN0IFVMT05HICAgICBT
ZWN0b3JTaXplID0gVGFyZ2V0U2VjdG9yU2l6ZShUYXJnZXQpOwotICAgIGNvbnN0IFVMT05HICAg
ICBTZWN0b3JzUGVyUGFnZSA9IF9fU2VjdG9yc1BlclBhZ2UoU2VjdG9yU2l6ZSk7Ci0KLSAgICBQ
Zm4gPSBBZGFwdGVyR2V0TmV4dFNHRW50cnkoVGFyZ2V0R2V0QWRhcHRlcihUYXJnZXQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcmJFeHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMZW5ndGgpOwotICAgIGlmICgoT2Zm
c2V0ICYgKFNlY3RvclNpemUgLSAxKSkgPT0gMCAmJgotICAgICAgICAoTGVuZ3RoICYgKFNlY3Rv
clNpemUgLSAxKSkgPT0gMCkgewotICAgICAgICArK1RhcmdldC0+U2Vnc0dyYW50ZWQ7Ci0gICAg
ICAgIC8vIGdldCBmaXJzdCBzZWN0b3IsIGxhc3Qgc2VjdG9yIGFuZCBjb3VudAotICAgICAgICBT
ZWdtZW50LT5GaXJzdFNlY3RvciAgICA9IChVQ0hBUikoKE9mZnNldCArIFNlY3RvclNpemUgLSAx
KSAvIFNlY3RvclNpemUpOwotICAgICAgICAqU2VjdG9yc05vdyAgICAgICAgICAgICA9IF9fbWlu
KFNlY3RvcnNMZWZ0LCBTZWN0b3JzUGVyUGFnZSAtIFNlZ21lbnQtPkZpcnN0U2VjdG9yKTsKLSAg
ICAgICAgU2VnbWVudC0+TGFzdFNlY3RvciAgICAgPSAoVUNIQVIpKFNlZ21lbnQtPkZpcnN0U2Vj
dG9yICsgKlNlY3RvcnNOb3cgLSAxKTsKLSAgICAgICAgU2VnbWVudC0+QnVmZmVySWQgICAgICAg
PSBOVUxMOyAvLyBncmFudGVkLCBlbnN1cmUgaXRzIG51bGwKLSAgICAgICAgU2VnbWVudC0+QnVm
ZmVyICAgICAgICAgPSBOVUxMOyAvLyBncmFudGVkLCBlbnN1cmUgaXRzIG51bGwKLSAgICAgICAg
U2VnbWVudC0+TGVuZ3RoICAgICAgICAgPSAwOyAgICAvLyBncmFudGVkLCBlbnN1cmUgaXRzIDAK
LQotICAgICAgICBBU1NFUlQzVSgoTGVuZ3RoIC8gU2VjdG9yU2l6ZSksID09LCAqU2VjdG9yc05v
dyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUE1ETCAgICAgICAgTWRsOwotCi0gICAgICAgICsr
VGFyZ2V0LT5TZWdzQm91bmNlZDsKLSAgICAgICAgLy8gZ2V0IGZpcnN0IHNlY3RvciwgbGFzdCBz
ZWN0b3IgYW5kIGNvdW50Ci0gICAgICAgIFNlZ21lbnQtPkZpcnN0U2VjdG9yICAgID0gMDsKLSAg
ICAgICAgKlNlY3RvcnNOb3cgICAgICAgICAgICAgPSBfX21pbihTZWN0b3JzTGVmdCwgU2VjdG9y
c1BlclBhZ2UpOwotICAgICAgICBTZWdtZW50LT5MYXN0U2VjdG9yICAgICA9IChVQ0hBUikoKlNl
Y3RvcnNOb3cgLSAxKTsKLQotICAgICAgICAvLyBtYXAgU0dMaXN0IHRvIFZpcnR1YWwgQWRkcmVz
cy4gUG9wdWxhdGVzIFNlZ21lbnQtPkJ1ZmZlciBhbmQgU2VnbWVudC0+TGVuZ3RoCi0jcHJhZ21h
IHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjI4MTQ1KQotICAgICAgICBN
ZGwgPSAmU2VnbWVudC0+TWRsOwotICAgICAgICBNZGwtPk5leHQgICAgICAgICAgID0gTlVMTDsK
LSAgICAgICAgTWRsLT5TaXplICAgICAgICAgICA9IChTSE9SVCkoc2l6ZW9mKE1ETCkgKyBzaXpl
b2YoUEZOX05VTUJFUikpOwotICAgICAgICBNZGwtPk1kbEZsYWdzICAgICAgID0gTURMX1BBR0VT
X0xPQ0tFRDsKLSAgICAgICAgTWRsLT5Qcm9jZXNzICAgICAgICA9IE5VTEw7Ci0gICAgICAgIE1k
bC0+TWFwcGVkU3lzdGVtVmEgPSBOVUxMOwotICAgICAgICBNZGwtPlN0YXJ0VmEgICAgICAgID0g
TlVMTDsKLSAgICAgICAgTWRsLT5CeXRlQ291bnQgICAgICA9IExlbmd0aDsKLSAgICAgICAgTWRs
LT5CeXRlT2Zmc2V0ICAgICA9IE9mZnNldDsKLSAgICAgICAgU2VnbWVudC0+UGZuWzBdICAgICA9
IFBmbjsKLQotICAgICAgICBpZiAoTGVuZ3RoIDwgKlNlY3RvcnNOb3cgKiBTZWN0b3JTaXplKSB7
Ci0gICAgICAgICAgICBQZm4gPSBBZGFwdGVyR2V0TmV4dFNHRW50cnkoVGFyZ2V0R2V0QWRhcHRl
cihUYXJnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNyYkV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTGVuZ3RoKTsKLSAgICAgICAgICAgIE1kbC0+
U2l6ZSAgICAgICArPSBzaXplb2YoUEZOX05VTUJFUik7Ci0gICAgICAgICAgICBNZGwtPkJ5dGVD
b3VudCAgPSBNZGwtPkJ5dGVDb3VudCArIExlbmd0aDsKLSAgICAgICAgICAgIFNlZ21lbnQtPlBm
blsxXSA9IFBmbjsKLSAgICAgICAgfQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLQotICAgICAgICBB
U1NFUlQoKE1kbC0+Qnl0ZUNvdW50ICYgKFNlY3RvclNpemUgLSAxKSkgPT0gMCk7Ci0gICAgICAg
IEFTU0VSVDNVKE1kbC0+Qnl0ZUNvdW50LCA8PSwgUEFHRV9TSVpFKTsKLSAgICAgICAgQVNTRVJU
M1UoKlNlY3RvcnNOb3csID09LCAoTWRsLT5CeXRlQ291bnQgLyBTZWN0b3JTaXplKSk7Ci0KLSAg
ICAgICAgU2VnbWVudC0+TGVuZ3RoID0gX19taW4oTWRsLT5CeXRlQ291bnQsIFBBR0VfU0laRSk7
Ci0gICAgICAgIFNlZ21lbnQtPkJ1ZmZlciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5Q2FjaGUo
TWRsLCBLZXJuZWxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNbUNhY2hl
ZCwgTlVMTCwgRkFMU0UsIF9fVGFyZ2V0UHJpb3JpdHkoVGFyZ2V0KSk7Ci0gICAgICAgIGlmICgh
U2VnbWVudC0+QnVmZmVyKSB7Ci0gICAgICAgICAgICArK1RhcmdldC0+RmFpbGVkTWFwczsKLSAg
ICAgICAgICAgIGdvdG8gZmFpbDE7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQzUChNbUdl
dE1kbFBmbkFycmF5KE1kbClbMF0sID09LCBTZWdtZW50LT5QZm5bMF0pOwotICAgICAgICBBU1NF
UlQzUChNbUdldE1kbFBmbkFycmF5KE1kbClbMV0sID09LCBTZWdtZW50LT5QZm5bMV0pOwotCi0g
ICAgICAgIC8vIGdldCBhIGJ1ZmZlcgotICAgICAgICBpZiAoIUJ1ZmZlckdldChTZWdtZW50LCAm
U2VnbWVudC0+QnVmZmVySWQsICZQZm4pKSB7Ci0gICAgICAgICAgICArK1RhcmdldC0+RmFpbGVk
Qm91bmNlczsKLSAgICAgICAgICAgIGdvdG8gZmFpbDI7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBjb3B5IGNvbnRlbnRzIGluCi0gICAgICAgIGlmIChSZWFkT25seSkgeyAvLyBPcGVyYXRpb24g
PT0gQkxLSUZfT1BfV1JJVEUKLSAgICAgICAgICAgIEJ1ZmZlckNvcHlJbihTZWdtZW50LT5CdWZm
ZXJJZCwgU2VnbWVudC0+QnVmZmVyLCBTZWdtZW50LT5MZW5ndGgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gR3JhbnQgc2VnbWVudCdzIHBhZ2UKLSAgICBTdGF0dXMgPSBHcmFudGVyR2V0
KEdyYW50ZXIsIFBmbiwgUmVhZE9ubHksICZTZWdtZW50LT5HcmFudCk7Ci0gICAgaWYgKCFOVF9T
VUNDRVNTKFN0YXR1cykpIHsKLSAgICAgICAgKytUYXJnZXQtPkZhaWxlZEdyYW50czsKLSAgICAg
ICAgZ290byBmYWlsMzsKLSAgICB9Ci0KLSAgICByZXR1cm4gVFJVRTsKLQotZmFpbDM6Ci1mYWls
MjoKLWZhaWwxOgotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIEJPT0xFQU4KLVByZXBh
cmVCbGtpZlJlYWRXcml0ZSgKLSAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgICAgICAgVGFyZ2V0
LAotICAgIElOICBQWEVOVkJEX1JFUVVFU1QgICAgICAgICBSZXF1ZXN0LAotICAgIElOICBQWEVO
VkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQsCi0gICAgSU4gIFVMT05HICAgICAgICAgICAgICAg
ICAgIE1heFNlZ21lbnRzLAotICAgIElOICBVTE9ORzY0ICAgICAgICAgICAgICAgICBTZWN0b3JT
dGFydCwKLSAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgU2VjdG9yc0xlZnQsCi0gICAg
T1VUIFBVTE9ORyAgICAgICAgICAgICAgICAgIFNlY3RvcnNEb25lCi0gICAgKQotewotICAgIFVD
SEFSICAgICAgICAgICBPcGVyYXRpb247Ci0gICAgQk9PTEVBTiAgICAgICAgIFJlYWRPbmx5Owot
ICAgIFVMT05HICAgICAgICAgICBJbmRleDsKLSAgICBfX09wZXJhdGlvbihDZGJfT3BlcmF0aW9u
RXgoUmVxdWVzdC0+U3JiKSwgJk9wZXJhdGlvbiwgJlJlYWRPbmx5KTsKLQotICAgIFJlcXVlc3Qt
Pk9wZXJhdGlvbiAgPSBPcGVyYXRpb247Ci0gICAgUmVxdWVzdC0+TnJTZWdtZW50cyA9IDA7Ci0g
ICAgUmVxdWVzdC0+Rmlyc3RTZWN0b3IgPSBTZWN0b3JTdGFydDsKLQotICAgIGZvciAoSW5kZXgg
PSAwOwotICAgICAgICAgICAgICAgIEluZGV4IDwgTWF4U2VnbWVudHMgJiYKLSAgICAgICAgICAg
ICAgICBTZWN0b3JzTGVmdCA+IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK0luZGV4KSB7
Ci0gICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50OwotICAgICAgICBVTE9ORyAgICAgICAg
ICAgU2VjdG9yc05vdzsKLQotICAgICAgICBTZWdtZW50ID0gVGFyZ2V0R2V0U2VnbWVudChUYXJn
ZXQpOwotICAgICAgICBpZiAoU2VnbWVudCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWls
MTsKLQotICAgICAgICBJbnNlcnRUYWlsTGlzdCgmUmVxdWVzdC0+U2VnbWVudHMsICZTZWdtZW50
LT5FbnRyeSk7Ci0gICAgICAgICsrUmVxdWVzdC0+TnJTZWdtZW50czsKLQotICAgICAgICBpZiAo
IVByZXBhcmVTZWdtZW50KFRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWdt
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNyYkV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkT25seSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWN0
b3JzTGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdG9yc05vdykpCi0gICAg
ICAgICAgICBnb3RvIGZhaWwyOwotCi0gICAgICAgICpTZWN0b3JzRG9uZSArPSBTZWN0b3JzTm93
OwotICAgICAgICBTZWN0b3JzTGVmdCAgLT0gU2VjdG9yc05vdzsKLSAgICB9Ci0gICAgQVNTRVJU
M1UoUmVxdWVzdC0+TnJTZWdtZW50cywgPiwgMCk7Ci0gICAgQVNTRVJUM1UoUmVxdWVzdC0+TnJT
ZWdtZW50cywgPD0sIE1heFNlZ21lbnRzKTsKLQotICAgIHJldHVybiBUUlVFOwotCi1mYWlsMjoK
LWZhaWwxOgotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIEJPT0xFQU4KLVByZXBhcmVC
bGtpZkluZGlyZWN0KAotICAgIElOICBQWEVOVkJEX1RBUkdFVCAgICAgICAgICAgICBUYXJnZXQs
Ci0gICAgSU4gIFBYRU5WQkRfUkVRVUVTVCAgICAgICAgIFJlcXVlc3QKLSAgICApCi17Ci0gICAg
VUxPTkcgICAgICAgICAgIEluZGV4OwotICAgIFVMT05HICAgICAgICAgICBOclNlZ21lbnRzID0g
MDsKLQotICAgIGZvciAoSW5kZXggPSAwOwotICAgICAgICAgICAgSW5kZXggPCBCTEtJRl9NQVhf
SU5ESVJFQ1RfUEFHRVNfUEVSX1JFUVVFU1QgJiYKLSAgICAgICAgICAgIE5yU2VnbWVudHMgPCBS
ZXF1ZXN0LT5OclNlZ21lbnRzOwotICAgICAgICAgICAgICAgICsrSW5kZXgpIHsKLSAgICAgICAg
UFhFTlZCRF9JTkRJUkVDVCAgICBJbmRpcmVjdDsKLQotICAgICAgICBJbmRpcmVjdCA9IFRhcmdl
dEdldEluZGlyZWN0KFRhcmdldCk7Ci0gICAgICAgIGlmIChJbmRpcmVjdCA9PSBOVUxMKQotICAg
ICAgICAgICAgZ290byBmYWlsMTsKLSAgICAgICAgSW5zZXJ0VGFpbExpc3QoJlJlcXVlc3QtPklu
ZGlyZWN0cywgJkluZGlyZWN0LT5FbnRyeSk7Ci0KLSAgICAgICAgTnJTZWdtZW50cyArPSBYRU5W
QkRfTUFYX1NFR01FTlRTX1BFUl9QQUdFOwotICAgIH0KLQotICAgIHJldHVybiBUUlVFOwotCi1m
YWlsMToKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBVTE9ORwot
VXNlSW5kaXJlY3QoCi0gICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwK
LSAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgU2VjdG9yc0xlZnQKLSAgICApCi17Ci0g
ICAgY29uc3QgVUxPTkcgU2VjdG9yc1BlclBhZ2UgPSBfX1NlY3RvcnNQZXJQYWdlKFRhcmdldFNl
Y3RvclNpemUoVGFyZ2V0KSk7Ci0gICAgY29uc3QgVUxPTkcgTWF4SW5kaXJlY3RTZWdzID0gRnJv
bnRlbmRHZXRGZWF0dXJlcyhUYXJnZXQtPkZyb250ZW5kKS0+SW5kaXJlY3Q7Ci0KLSAgICBpZiAo
TWF4SW5kaXJlY3RTZWdzIDw9IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCkKLSAgICAg
ICAgcmV0dXJuIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsgLy8gbm90IHN1cHBvcnRl
ZAotCi0gICAgaWYgKFNlY3RvcnNMZWZ0IDwgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNU
ICogU2VjdG9yc1BlclBhZ2UpCi0gICAgICAgIHJldHVybiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVS
X1JFUVVFU1Q7IC8vIGZpcnN0IGludG8gYSBzaW5nbGUgQkxLSUZfT1Bfe1JFQUQvV1JJVEV9Ci0K
LSAgICByZXR1cm4gTWF4SW5kaXJlY3RTZWdzOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgVUxP
TkcKLVRhcmdldFF1ZXVlUmVxdWVzdExpc3QoCi0gICAgSU4gIFBYRU5WQkRfVEFSR0VUICAgICBU
YXJnZXQsCi0gICAgSU4gIFBMSVNUX0VOVFJZICAgICBMaXN0Ci0gICAgKQotewotICAgIFVMT05H
ICAgICAgICAgICAgICAgQ291bnQgPSAwOwotICAgIGZvciAoOzspIHsKLSAgICAgICAgUFhFTlZC
RF9SRVFVRVNUIFJlcXVlc3Q7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeTsKLQotICAg
ICAgICBFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KExpc3QpOwotICAgICAgICBpZiAoRW50cnkgPT0g
TGlzdCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICsrQ291bnQ7Ci0gICAgICAgIFJl
cXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsK
LSAgICAgICAgX19UYXJnZXRJbmNCbGtpZk9wQ291bnQoVGFyZ2V0LCBSZXF1ZXN0KTsKLSAgICAg
ICAgUXVldWVBcHBlbmQoJlRhcmdldC0+UHJlcGFyZWRSZXFzLCAmUmVxdWVzdC0+RW50cnkpOwot
ICAgIH0KLSAgICByZXR1cm4gQ291bnQ7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1U
YXJnZXRDYW5jZWxSZXF1ZXN0TGlzdCgKLSAgICBJTiAgUFhFTlZCRF9UQVJHRVQgICAgIFRhcmdl
dCwKLSAgICBJTiAgUExJU1RfRU5UUlkgICAgIExpc3QKLSAgICApCi17Ci0gICAgZm9yICg7Oykg
ewotICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKLSAgICAgICAgUExJU1RfRU5UUlkg
ICAgIEVudHJ5OwotCi0gICAgICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoTGlzdCk7Ci0gICAg
ICAgIGlmIChFbnRyeSA9PSBMaXN0KQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgUmVx
dWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVTVCwgRW50cnkpOwot
ICAgICAgICBUYXJnZXRQdXRSZXF1ZXN0KFRhcmdldCwgUmVxdWVzdCk7Ci0gICAgfQotfQotCi1f
X2NoZWNrUmV0dXJuCi1zdGF0aWMgQk9PTEVBTgotUHJlcGFyZVJlYWRXcml0ZSgKLSAgICBfX2lu
IFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwKLSAgICBfX2luIFBTQ1NJX1JFUVVF
U1RfQkxPQ0sgICAgIFNyYgotICAgICkKLXsKLSAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0ID0g
R2V0U3JiRXh0KFNyYik7Ci0gICAgVUxPTkc2NCAgICAgICAgIFNlY3RvclN0YXJ0ID0gQ2RiX0xv
Z2ljYWxCbG9jayhTcmIpOwotICAgIFVMT05HICAgICAgICAgICBTZWN0b3JzTGVmdCA9IENkYl9U
cmFuc2ZlckJsb2NrKFNyYik7Ci0gICAgTElTVF9FTlRSWSAgICAgIExpc3Q7Ci0gICAgVUxPTkcg
ICAgICAgICAgIERlYnVnQ291bnQ7Ci0KLSAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNf
UEVORElORzsKLQotICAgIEluaXRpYWxpemVMaXN0SGVhZCgmTGlzdCk7Ci0gICAgU3JiRXh0LT5D
b3VudCA9IDA7Ci0KLSAgICB3aGlsZSAoU2VjdG9yc0xlZnQgPiAwKSB7Ci0gICAgICAgIFVMT05H
ICAgICAgICAgICBNYXhTZWdtZW50czsKLSAgICAgICAgVUxPTkcgICAgICAgICAgIFNlY3RvcnNE
b25lID0gMDsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3Q7Ci0KLSAgICAgICAgUmVx
dWVzdCA9IFRhcmdldEdldFJlcXVlc3QoVGFyZ2V0KTsKLSAgICAgICAgaWYgKFJlcXVlc3QgPT0g
TlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDE7Ci0gICAgICAgIEluc2VydFRhaWxMaXN0KCZM
aXN0LCAmUmVxdWVzdC0+RW50cnkpOwotICAgICAgICBJbnRlcmxvY2tlZEluY3JlbWVudCgmU3Ji
RXh0LT5Db3VudCk7Ci0KLSAgICAgICAgUmVxdWVzdC0+U3JiICAgID0gU3JiOwotICAgICAgICBN
YXhTZWdtZW50cyA9IFVzZUluZGlyZWN0KFRhcmdldCwgU2VjdG9yc0xlZnQpOwotCi0gICAgICAg
IGlmICghUHJlcGFyZUJsa2lmUmVhZFdyaXRlKFRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3JiRXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhTZWdtZW50
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VjdG9yU3RhcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3RvcnNMZWZ0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmU2VjdG9yc0RvbmUpKQotICAgICAgICAgICAgZ290byBm
YWlsMjsKLQotICAgICAgICBpZiAoTWF4U2VnbWVudHMgPiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVS
X1JFUVVFU1QpIHsKLSAgICAgICAgICAgIGlmICghUHJlcGFyZUJsa2lmSW5kaXJlY3QoVGFyZ2V0
LCBSZXF1ZXN0KSkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWwzOwotICAgICAgICB9Ci0KLSAg
ICAgICAgU2VjdG9yc0xlZnQgLT0gU2VjdG9yc0RvbmU7Ci0gICAgICAgIFNlY3RvclN0YXJ0ICs9
IFNlY3RvcnNEb25lOwotICAgIH0KLQotICAgIERlYnVnQ291bnQgPSBUYXJnZXRRdWV1ZVJlcXVl
c3RMaXN0KFRhcmdldCwgJkxpc3QpOwotICAgIGlmIChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJF
eHQtPkNvdW50KSB7Ci0gICAgICAgIFRyYWNlKCJbJXVdICVkICE9ICV1XG4iLCBUYXJnZXRHZXRU
YXJnZXRJZChUYXJnZXQpLCBTcmJFeHQtPkNvdW50LCBEZWJ1Z0NvdW50KTsKLSAgICB9Ci0gICAg
cmV0dXJuIFRSVUU7Ci0KLWZhaWwzOgotZmFpbDI6Ci1mYWlsMToKLSAgICBUYXJnZXRDYW5jZWxS
ZXF1ZXN0TGlzdChUYXJnZXQsICZMaXN0KTsKLSAgICBTcmJFeHQtPkNvdW50ID0gMDsKLSAgICBT
cmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQot
Ci1fX2NoZWNrUmV0dXJuCi1zdGF0aWMgQk9PTEVBTgotUHJlcGFyZVN5bmNDYWNoZSgKLSAgICBf
X2luIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwKLSAgICBfX2luIFBTQ1NJX1JF
UVVFU1RfQkxPQ0sgICAgIFNyYgotICAgICkKLXsKLSAgICBQWEVOVkJEX1NSQkVYVCAgICAgIFNy
YkV4dCA9IEdldFNyYkV4dChTcmIpOwotICAgIFBYRU5WQkRfUkVRVUVTVCAgICAgUmVxdWVzdDsK
LSAgICBMSVNUX0VOVFJZICAgICAgICAgIExpc3Q7Ci0gICAgVUNIQVIgICAgICAgICAgICAgICBP
cGVyYXRpb247Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBEZWJ1Z0NvdW50OwotCi0gICAgU3Ji
LT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1BFTkRJTkc7Ci0KLSAgICBpZiAoRnJvbnRlbmRHZXRE
aXNrSW5mbyhUYXJnZXQtPkZyb250ZW5kKS0+Rmx1c2hDYWNoZSkKLSAgICAgICAgT3BlcmF0aW9u
ID0gQkxLSUZfT1BfRkxVU0hfRElTS0NBQ0hFOwotICAgIGVsc2UKLSAgICAgICAgT3BlcmF0aW9u
ID0gQkxLSUZfT1BfV1JJVEVfQkFSUklFUjsKLQotICAgIEluaXRpYWxpemVMaXN0SGVhZCgmTGlz
dCk7Ci0gICAgU3JiRXh0LT5Db3VudCA9IDA7Ci0KLSAgICBSZXF1ZXN0ID0gVGFyZ2V0R2V0UmVx
dWVzdChUYXJnZXQpOwotICAgIGlmIChSZXF1ZXN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFp
bDE7Ci0gICAgSW5zZXJ0VGFpbExpc3QoJkxpc3QsICZSZXF1ZXN0LT5FbnRyeSk7Ci0gICAgSW50
ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+Q291bnQpOwotCi0gICAgUmVxdWVzdC0+U3JiICAg
ICAgICA9IFNyYjsKLSAgICBSZXF1ZXN0LT5PcGVyYXRpb24gID0gT3BlcmF0aW9uOwotICAgIFJl
cXVlc3QtPkZpcnN0U2VjdG9yID0gQ2RiX0xvZ2ljYWxCbG9jayhTcmIpOwotCi0gICAgRGVidWdD
b3VudCA9IFRhcmdldFF1ZXVlUmVxdWVzdExpc3QoVGFyZ2V0LCAmTGlzdCk7Ci0gICAgaWYgKERl
YnVnQ291bnQgIT0gKFVMT05HKVNyYkV4dC0+Q291bnQpIHsKLSAgICAgICAgVHJhY2UoIlsldV0g
JWQgIT0gJXVcbiIsIFRhcmdldEdldFRhcmdldElkKFRhcmdldCksIFNyYkV4dC0+Q291bnQsIERl
YnVnQ291bnQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLQotZmFpbDE6Ci0gICAgVGFyZ2V0
Q2FuY2VsUmVxdWVzdExpc3QoVGFyZ2V0LCAmTGlzdCk7Ci0gICAgU3JiRXh0LT5Db3VudCA9IDA7
Ci0gICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX0VSUk9SOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQotX19jaGVja1JldHVybgotc3RhdGljIEJPT0xFQU4KLVByZXBhcmVVbm1hcCgKLSAg
ICBfX2luIFBYRU5WQkRfVEFSR0VUICAgICAgICAgICAgIFRhcmdldCwKLSAgICBfX2luIFBTQ1NJ
X1JFUVVFU1RfQkxPQ0sgICAgIFNyYgotICAgICkKLXsKLSAgICBQWEVOVkJEX1NSQkVYVCAgICAg
IFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOwotICAgIFBVTk1BUF9MSVNUX0hFQURFUiAgVW5tYXAg
PSBTcmItPkRhdGFCdWZmZXI7Ci0JVUxPTkcgICAgICAgICAgICAgICBDb3VudCA9IF9ieXRlc3dh
cF91c2hvcnQoKihQVVNIT1JUKVVubWFwLT5CbG9ja0Rlc2NyRGF0YUxlbmd0aCkgLyBzaXplb2Yo
VU5NQVBfQkxPQ0tfREVTQ1JJUFRPUik7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBJbmRleDsK
LSAgICBMSVNUX0VOVFJZICAgICAgICAgIExpc3Q7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBE
ZWJ1Z0NvdW50OwotCi0gICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1BFTkRJTkc7Ci0K
LSAgICBJbml0aWFsaXplTGlzdEhlYWQoJkxpc3QpOwotICAgIFNyYkV4dC0+Q291bnQgPSAwOwot
Ci0gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ291bnQ7ICsrSW5kZXgpIHsKLSAgICAgICAg
UFVOTUFQX0JMT0NLX0RFU0NSSVBUT1IgRGVzY3IgPSAmVW5tYXAtPkRlc2NyaXB0b3JzW0luZGV4
XTsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUICAgICAgICAgUmVxdWVzdDsKLQotICAgICAgICBS
ZXF1ZXN0ID0gVGFyZ2V0R2V0UmVxdWVzdChUYXJnZXQpOwotICAgICAgICBpZiAoUmVxdWVzdCA9
PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWlsMTsKLSAgICAgICAgSW5zZXJ0VGFpbExpc3Qo
Jkxpc3QsICZSZXF1ZXN0LT5FbnRyeSk7Ci0gICAgICAgIEludGVybG9ja2VkSW5jcmVtZW50KCZT
cmJFeHQtPkNvdW50KTsKLQotICAgICAgICBSZXF1ZXN0LT5TcmIgICAgICAgICAgICA9IFNyYjsK
LSAgICAgICAgUmVxdWVzdC0+T3BlcmF0aW9uICAgICAgPSBCTEtJRl9PUF9ESVNDQVJEOwotICAg
ICAgICBSZXF1ZXN0LT5GaXJzdFNlY3RvciAgICA9IF9ieXRlc3dhcF91aW50NjQoKihQVUxPTkc2
NClEZXNjci0+U3RhcnRpbmdMYmEpOwotICAgICAgICBSZXF1ZXN0LT5OclNlY3RvcnMgICAgICA9
IF9ieXRlc3dhcF91bG9uZygqKFBVTE9ORylEZXNjci0+TGJhQ291bnQpOwotICAgICAgICBSZXF1
ZXN0LT5GbGFncyAgICAgICAgICA9IDA7Ci0gICAgfQotCi0gICAgRGVidWdDb3VudCA9IFRhcmdl
dFF1ZXVlUmVxdWVzdExpc3QoVGFyZ2V0LCAmTGlzdCk7Ci0gICAgaWYgKERlYnVnQ291bnQgIT0g
KFVMT05HKVNyYkV4dC0+Q291bnQpIHsKLSAgICAgICAgVHJhY2UoIlsldV0gJWQgIT0gJXVcbiIs
IFRhcmdldEdldFRhcmdldElkKFRhcmdldCksIFNyYkV4dC0+Q291bnQsIERlYnVnQ291bnQpOwot
ICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLQotZmFpbDE6Ci0gICAgVGFyZ2V0Q2FuY2VsUmVxdWVz
dExpc3QoVGFyZ2V0LCAmTGlzdCk7Ci0gICAgU3JiRXh0LT5Db3VudCA9IDA7Ci0gICAgU3JiLT5T
cmJTdGF0dXMgPSBTUkJfU1RBVFVTX0VSUk9SOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8gUXVldWUtUmVsYXRlZAotc3RhdGljIEZPUkNFSU5MSU5F
IFZPSUQKLV9fVGFyZ2V0UGF1c2VEYXRhUGF0aCgKLSAgICBfX2luIFBYRU5WQkRfVEFSR0VUICAg
ICAgICAgICAgIFRhcmdldCwKLSAgICBfX2luIEJPT0xFQU4gICAgICAgICAgICAgICAgIFRpbWVv
dXQKLSAgICApCi17Ci0gICAgS0lSUUwgICAgICAgICAgICAgICBJcnFsOwotICAgIFVMT05HICAg
ICAgICAgICAgICAgUmVxdWVzdHM7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBDb3VudCA9IDA7
Ci0gICAgUFhFTlZCRF9SSU5HICAgICAgICBSaW5nID0gRnJvbnRlbmRHZXRSaW5nKFRhcmdldC0+
RnJvbnRlbmQpOwotCi0gICAgS2VBY3F1aXJlU3BpbkxvY2soJlRhcmdldC0+TG9jaywgJklycWwp
OwotICAgICsrVGFyZ2V0LT5QYXVzZWQ7Ci0gICAgS2VSZWxlYXNlU3BpbkxvY2soJlRhcmdldC0+
TG9jaywgSXJxbCk7Ci0KLSAgICBSZXF1ZXN0cyA9IFF1ZXVlQ291bnQoJlRhcmdldC0+U3VibWl0
dGVkUmVxcyk7Ci0gICAgS2VNZW1vcnlCYXJyaWVyKCk7Ci0KLSAgICBWZXJib3NlKCJUYXJnZXRb
JWRdIDogV2FpdGluZyBmb3IgJWQgU3VibWl0dGVkIHJlcXVlc3RzXG4iLCBUYXJnZXRHZXRUYXJn
ZXRJZChUYXJnZXQpLCBSZXF1ZXN0cyk7Ci0KLSAgICAvLyBwb2xsIHJpbmcgYW5kIHNlbmQgZXZl
bnQgY2hhbm5lbCBub3RpZmljYXRpb24gZXZlcnkgMW1zIChmb3IgdXAgdG8gMyBtaW51dGVzKQot
ICAgIHdoaWxlIChRdWV1ZUNvdW50KCZUYXJnZXQtPlN1Ym1pdHRlZFJlcXMpKSB7Ci0gICAgICAg
IGlmIChUaW1lb3V0ICYmIENvdW50ID4gMTgwMDAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7Ci0gICAgICAgIFJpbmdQb2xs
KFJpbmcpOwotICAgICAgICBLZUxvd2VySXJxbChJcnFsKTsKLSAgICAgICAgUmluZ1NlbmQoUmlu
Zyk7ICAgICAgICAgLy8gbGV0IGJhY2tlbmQga25vdyBpdCBuZWVkcyB0byBkbyBzb21lIHdvcmsK
LSAgICAgICAgU3RvclBvcnRTdGFsbEV4ZWN1dGlvbigxMDAwKTsgICAvLyAxMDAwIG1pY3JvLXNl
Y29uZHMKLSAgICAgICAgKytDb3VudDsKLSAgICB9Ci0KLSAgICBWZXJib3NlKCJUYXJnZXRbJWRd
IDogJXUvJXUgU3VibWl0dGVkIHJlcXVlc3RzIGxlZnQgKCV1IGl0ZXJyYXRpb25zKVxuIiwKLSAg
ICAgICAgICAgIFRhcmdldEdldFRhcmdldElkKFRhcmdldCksIFF1ZXVlQ291bnQoJlRhcmdldC0+
U3VibWl0dGVkUmVxcyksIFJlcXVlc3RzLCBDb3VudCk7Ci0KLSAgICAvLyBBYm9ydCBGcmVzaCBT
UkJzCi0gICAgZm9yICg7OykgewotICAgICAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0OwotICAg
ICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBRdWV1ZVBvcCgmVGFyZ2V0LT5GcmVzaFNyYnMp
OwotICAgICAgICBpZiAoRW50cnkgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwgRW50cnkp
OwotCi0gICAgICAgIFZlcmJvc2UoIlRhcmdldFslZF0gOiBGcmVzaFNyYiAweCVwIC0+IFNDU0lf
QUJPUlRFRFxuIiwgVGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSwgU3JiRXh0LT5TcmIpOwotICAg
ICAgICBTcmJFeHQtPlNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19BQk9SVEVEOwotICAgICAg
ICBTcmJFeHQtPlNyYi0+U2NzaVN0YXR1cyA9IDB4NDA7IC8vIFNDU0lfQUJPUlRFRDsKLSAgICAg
ICAgQWRhcHRlckNvbXBsZXRlU3JiKFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KSwgU3JiRXh0KTsK
LSAgICB9Ci0KLSAgICAvLyBGYWlsIFByZXBhcmVkUmVxcwotICAgIGZvciAoOzspIHsKLSAgICAg
ICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUIFJlcXVl
c3Q7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeSA9IFF1ZXVlUG9wKCZUYXJnZXQtPlBy
ZXBhcmVkUmVxcyk7Ci0gICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JF
UVVFU1QsIEVudHJ5KTsKLSAgICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFJlcXVlc3QtPlNyYik7
Ci0KLSAgICAgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6IFByZXBhcmVkUmVxIDB4JXAgLT4gRkFJ
TEVEXG4iLCBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpLCBSZXF1ZXN0KTsKLQotICAgICAgICBT
cmJFeHQtPlNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19BQk9SVEVEOwotICAgICAgICBUYXJn
ZXRQdXRSZXF1ZXN0KFRhcmdldCwgUmVxdWVzdCk7Ci0KLSAgICAgICAgaWYgKEludGVybG9ja2Vk
RGVjcmVtZW50KCZTcmJFeHQtPkNvdW50KSA9PSAwKSB7Ci0gICAgICAgICAgICBTcmJFeHQtPlNy
Yi0+U2NzaVN0YXR1cyA9IDB4NDA7IC8vIFNDU0lfQUJPUlRFRAotICAgICAgICAgICAgQWRhcHRl
ckNvbXBsZXRlU3JiKFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KSwgU3JiRXh0KTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKLV9fVGFyZ2V0VW5wYXVzZURh
dGFQYXRoKAotICAgIF9faW4gUFhFTlZCRF9UQVJHRVQgICAgICAgICAgICAgVGFyZ2V0Ci0gICAg
KQotewotICAgIEtJUlFMICAgSXJxbDsKLQotICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZUYXJnZXQt
PkxvY2ssICZJcnFsKTsKLSAgICAtLVRhcmdldC0+UGF1c2VkOwotICAgIEtlUmVsZWFzZVNwaW5M
b2NrKCZUYXJnZXQtPkxvY2ssIElycWwpOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVB
TgotVGFyZ2V0UHJlcGFyZUZyZXNoKAotICAgIElOICBQWEVOVkJEX1RBUkdFVCAgICAgICAgIFRh
cmdldAotICAgICkKLXsKLSAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0OwotICAgIFBMSVNUX0VO
VFJZICAgICBFbnRyeTsKLQotICAgIEVudHJ5ID0gUXVldWVQb3AoJlRhcmdldC0+RnJlc2hTcmJz
KTsKLSAgICBpZiAoRW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOyAgIC8vIGZy
ZXNoIHF1ZXVlIGlzIGVtcHR5Ci0KLSAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRy
eSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOwotCi0gICAgc3dpdGNoIChDZGJfT3BlcmF0aW9uRXgo
U3JiRXh0LT5TcmIpKSB7Ci0gICAgY2FzZSBTQ1NJT1BfUkVBRDoKLSAgICBjYXNlIFNDU0lPUF9X
UklURToKLSAgICAgICAgaWYgKFByZXBhcmVSZWFkV3JpdGUoVGFyZ2V0LCBTcmJFeHQtPlNyYikp
Ci0gICAgICAgICAgICByZXR1cm4gVFJVRTsgICAgLy8gcHJlcGFyZWQgdGhpcyBTUkIKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTQ1NJT1BfU1lOQ0hST05JWkVfQ0FDSEU6Ci0gICAgICAgIGlm
IChQcmVwYXJlU3luY0NhY2hlKFRhcmdldCwgU3JiRXh0LT5TcmIpKQotICAgICAgICAgICAgcmV0
dXJuIFRSVUU7ICAgIC8vIHByZXBhcmVkIHRoaXMgU1JCCi0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU0NTSU9QX1VOTUFQOgotICAgICAgICBpZiAoUHJlcGFyZVVubWFwKFRhcmdldCwgU3JiRXh0
LT5TcmIpKQotICAgICAgICAgICAgcmV0dXJuIFRSVUU7ICAgIC8vIHByZXBhcmVkIHRoaXMgU1JC
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChGQUxTRSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBRdWV1ZVVuUG9wKCZUYXJnZXQtPkZyZXNoU3Jicywg
JlNyYkV4dC0+RW50cnkpOwotCi0gICAgcmV0dXJuIEZBTFNFOyAgICAgICAvLyBwcmVwYXJlIGZh
aWxlZAotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgotVGFyZ2V0U3VibWl0UHJlcGFy
ZWQoCi0gICAgX19pbiBQWEVOVkJEX1RBUkdFVCAgICAgICAgICAgICBUYXJnZXQKLSAgICApCi17
Ci0gICAgUFhFTlZCRF9SSU5HICAgUmluZyA9IEZyb250ZW5kR2V0UmluZyhUYXJnZXQtPkZyb250
ZW5kKTsKLSAgICBpZiAoVGFyZ2V0SXNQYXVzZWQoVGFyZ2V0KSkgewotICAgICAgICBpZiAoUXVl
dWVDb3VudCgmVGFyZ2V0LT5QcmVwYXJlZFJlcXMpKQotICAgICAgICAgICAgV2FybmluZygiVGFy
Z2V0WyVkXSA6IFBhdXNlZCwgbm90IHN1Ym1pdHRpbmcgbmV3IHJlcXVlc3RzICgldSlcbiIsCi0g
ICAgICAgICAgICAgICAgICAgIFRhcmdldEdldFRhcmdldElkKFRhcmdldCksCi0gICAgICAgICAg
ICAgICAgICAgIFF1ZXVlQ291bnQoJlRhcmdldC0+UHJlcGFyZWRSZXFzKSk7Ci0gICAgICAgIHJl
dHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFBYRU5WQkRfUkVR
VUVTVCBSZXF1ZXN0OwotICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnk7Ci0KLSAgICAgICAg
RW50cnkgPSBRdWV1ZVBvcCgmVGFyZ2V0LT5QcmVwYXJlZFJlcXMpOwotICAgICAgICBpZiAoRW50
cnkgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFJlcXVlc3QgPSBDT05U
QUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsKLQotICAgICAgICBR
dWV1ZUFwcGVuZCgmVGFyZ2V0LT5TdWJtaXR0ZWRSZXFzLCAmUmVxdWVzdC0+RW50cnkpOwotICAg
ICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKLQotICAgICAgICBpZiAoUmluZ1N1Ym1pdChSaW5nLCBS
ZXF1ZXN0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFF1ZXVlUmVtb3ZlKCZU
YXJnZXQtPlN1Ym1pdHRlZFJlcXMsICZSZXF1ZXN0LT5FbnRyeSk7Ci0gICAgICAgIFF1ZXVlVW5Q
b3AoJlRhcmdldC0+UHJlcGFyZWRSZXFzLCAmUmVxdWVzdC0+RW50cnkpOwotICAgICAgICByZXR1
cm4gRkFMU0U7ICAgLy8gcmluZyBmdWxsCi0gICAgfQotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0K
LXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1UYXJnZXRDb21wbGV0ZVNodXRkb3duKAotICAgIF9f
aW4gUFhFTlZCRF9UQVJHRVQgICAgICAgICAgICAgVGFyZ2V0Ci0gICAgKQotewotICAgIGlmIChR
dWV1ZUNvdW50KCZUYXJnZXQtPlNodXRkb3duU3JicykgPT0gMCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKFF1ZXVlQ291bnQoJlRhcmdldC0+RnJlc2hTcmJzKSB8fAotICAgICAgICBRdWV1
ZUNvdW50KCZUYXJnZXQtPlByZXBhcmVkUmVxcykgfHwKLSAgICAgICAgUXVldWVDb3VudCgmVGFy
Z2V0LT5TdWJtaXR0ZWRSZXFzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICg7Oykgewot
ICAgICAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0OwotICAgICAgICBQTElTVF9FTlRSWSAgICAg
RW50cnkgPSBRdWV1ZVBvcCgmVGFyZ2V0LT5TaHV0ZG93blNyYnMpOwotICAgICAgICBpZiAoRW50
cnkgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBTcmJFeHQgPSBDT05UQUlO
SU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOwotICAgICAgICBTcmJFeHQt
PlNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOwotICAgICAgICBBZGFwdGVyQ29t
cGxldGVTcmIoVGFyZ2V0R2V0QWRhcHRlcihUYXJnZXQpLCBTcmJFeHQpOwotICAgIH0KLX0KLQot
c3RhdGljIEZPUkNFSU5MSU5FIFBDSEFSCi1CbGtpZk9wZXJhdGlvbk5hbWUoCi0gICAgSU4gIFVD
SEFSICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbgotICAgICkKLXsKLSAgICBzd2l0Y2ggKE9w
ZXJhdGlvbikgewotICAgIGNhc2UgQkxLSUZfT1BfUkVBRDogICAgICAgICAgICAgcmV0dXJuICJS
RUFEIjsKLSAgICBjYXNlIEJMS0lGX09QX1dSSVRFOiAgICAgICAgICAgIHJldHVybiAiV1JJVEUi
OwotICAgIGNhc2UgQkxLSUZfT1BfV1JJVEVfQkFSUklFUjogICAgcmV0dXJuICJXUklURV9CQVJS
SUVSIjsKLSAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRTogIHJldHVybiAiRkxVU0hf
RElTS0NBQ0hFIjsKLSAgICBjYXNlIEJMS0lGX09QX1JFU0VSVkVEXzE6ICAgICAgIHJldHVybiAi
UkVTRVJWRURfMSI7Ci0gICAgY2FzZSBCTEtJRl9PUF9ESVNDQVJEOiAgICAgICAgICByZXR1cm4g
IkRJU0NBUkQiOwotICAgIGNhc2UgQkxLSUZfT1BfSU5ESVJFQ1Q6ICAgICAgICAgcmV0dXJuICJJ
TkRJUkVDVCI7Ci0gICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIjx1
bmtub3duPiI7Ci0gICAgfQotfQotCi1CT09MRUFOCi1UYXJnZXRTdWJtaXRSZXF1ZXN0cygKLSAg
ICBJTiAgUFhFTlZCRF9UQVJHRVQgIFRhcmdldAotICAgICkKLXsKLSAgICBCT09MRUFOICAgICAg
ICAgICAgIFJldHJ5ID0gRkFMU0U7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIC8vIHN1Ym1p
dCBhbGwgcHJlcGFyZWQgcmVxdWVzdHMgKDAgb3IgbW9yZSByZXF1ZXN0cykKLSAgICAgICAgLy8g
cmV0dXJuIFRSVUUgaWYgc3VibWl0dGVkIDAgb3IgbW9yZSByZXF1ZXN0cyBmcm9tIHByZXBhcmVk
IHF1ZXVlCi0gICAgICAgIC8vIHJldHVybiBGQUxTRSBpZmYgcmluZyBpcyBmdWxsCi0gICAgICAg
IGlmICghVGFyZ2V0U3VibWl0UHJlcGFyZWQoVGFyZ2V0KSkKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIC8vIHByZXBhcmUgYSBzaW5nbGUgU1JCIChpbnRvIDEgb3IgbW9yZSByZXF1ZXN0
cykKLSAgICAgICAgLy8gcmV0dXJuIFRSVUUgaWYgcHJlcGFyZSBzdWNjZWVkZWQKLSAgICAgICAg
Ly8gcmV0dXJuIEZBTFNFIGlmIHByZXBhcmUgZmFpbGVkIG9yIGZyZXNoIHF1ZXVlIGVtcHR5Ci0g
ICAgICAgIGlmICghVGFyZ2V0UHJlcGFyZUZyZXNoKFRhcmdldCkpCi0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAvLyBiYWNrIG9mZiwgY2hlY2sgRFBDIHRpbWVvdXQgYW5kIHRyeSBhZ2Fp
bgotICAgICAgICBSZXRyeSA9IFRSVUU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIC8v
IGlmIG5vIHJlcXVlc3RzL1NSQnMgb3V0c3RhbmRpbmcsIGNvbXBsZXRlIGFueSBzaHV0ZG93biBT
UkJzCi0gICAgaWYgKCFSZXRyeSkKLSAgICAgICAgVGFyZ2V0Q29tcGxldGVTaHV0ZG93bihUYXJn
ZXQpOwotCi0gICAgcmV0dXJuIFJldHJ5OwotfQotCi1WT0lECi1UYXJnZXRDb21wbGV0ZVJlc3Bv
bnNlKAotICAgIElOICBQWEVOVkJEX1RBUkdFVCAgVGFyZ2V0LAotICAgIElOICBVTE9ORyAgICAg
ICAgICAgVGFnLAotICAgIElOICBTSE9SVCAgICAgICAgICAgU3RhdHVzCi0gICAgKQotewotICAg
IFBYRU5WQkRfUkVRVUVTVCAgICAgUmVxdWVzdDsKLSAgICBQU0NTSV9SRVFVRVNUX0JMT0NLIFNy
YjsKLSAgICBQWEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dDsKLQotICAgIFJlcXVlc3QgPSBUYXJn
ZXRSZXF1ZXN0RnJvbVRhZyhUYXJnZXQsIFRhZyk7Ci0gICAgaWYgKFJlcXVlc3QgPT0gTlVMTCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgU3JiICAgICA9IFJlcXVlc3QtPlNyYjsKLSAgICBTcmJF
eHQgID0gR2V0U3JiRXh0KFNyYik7Ci0gICAgQVNTRVJUM1AoU3JiRXh0LCAhPSwgTlVMTCk7Ci0K
LSAgICBzd2l0Y2ggKFN0YXR1cykgewotICAgIGNhc2UgQkxLSUZfUlNQX09LQVk6Ci0gICAgICAg
IFJlcXVlc3RDb3B5T3V0cHV0KFJlcXVlc3QpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
QkxLSUZfUlNQX0VPUE5PVFNVUFA6Ci0gICAgICAgIC8vIFJlbW92ZSBhcHByb3ByaWF0ZSBmZWF0
dXJlIHN1cHBvcnQKLSAgICAgICAgRnJvbnRlbmRSZW1vdmVGZWF0dXJlKFRhcmdldC0+RnJvbnRl
bmQsIFJlcXVlc3QtPk9wZXJhdGlvbik7Ci0gICAgICAgIC8vIFN1Y2NlZWQgdGhpcyBTUkIsIHN1
YnNpcXVlbnQgU1JCcyB3aWxsIGJlIHN1Y2NlZWRlZCBpbnN0ZWFkIG9mIGJlaW5nIHBhc3NlZCB0
byB0aGUgYmFja2VuZC4KLSAgICAgICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX1NVQ0NF
U1M7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBCTEtJRl9SU1BfRVJST1I6Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6ICVzIEJMS0lGX1JTUF9FUlJPUiAo
VGFnICV4KVxuIiwKLSAgICAgICAgICAgICAgICBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpLCBC
bGtpZk9wZXJhdGlvbk5hbWUoUmVxdWVzdC0+T3BlcmF0aW9uKSwgVGFnKTsKLSAgICAgICAgU3Ji
LT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBUYXJnZXRQdXRSZXF1ZXN0KFRhcmdldCwgUmVxdWVzdCk7Ci0KLSAgICAvLyBjb21wbGV0
ZSBzcmIKLSAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDAp
IHsKLSAgICAgICAgaWYgKFNyYi0+U3JiU3RhdHVzID09IFNSQl9TVEFUVVNfUEVORElORykgewot
ICAgICAgICAgICAgLy8gU1JCIGhhcyBub3QgaGl0IGEgZmFpbHVyZSBjb25kaXRpb24gKEJMS0lG
X1JTUF9FUlJPUiB8IEJMS0lGX1JTUF9FT1BOT1RTVVBQKQotICAgICAgICAgICAgLy8gZnJvbSBh
bnkgb2YgaXRzIHJlc3BvbnNlcy4gU1JCIG11c3QgaGF2ZSBzdWNjZWVkZWQKLSAgICAgICAgICAg
IFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOwotICAgICAgICAgICAgU3JiLT5T
Y3NpU3RhdHVzID0gMHgwMDsgLy8gU0NTSV9HT09ECi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBTcmItPlNyYlN0YXR1cyBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSAxIG9yIG1vcmUg
cmVxdWVzdHMgd2l0aCBTdGF0dXMgIT0gQkxLSUZfUlNQX09LQVkKLSAgICAgICAgICAgIFNyYi0+
U2NzaVN0YXR1cyA9IDB4NDA7IC8vIFNDU0lfQUJPUlRFRAotICAgICAgICB9Ci0KLSAgICAgICAg
QWRhcHRlckNvbXBsZXRlU3JiKFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KSwgU3JiRXh0KTsKLSAg
ICB9Ci19Ci0KIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFNSQnMKIF9fY2hlY2tSZXR1cm4K
QEAgLTE0MDcsOSArMjc4LDcgQEAgVGFyZ2V0UmVhZFdyaXRlKAogICAgICAgICByZXR1cm4gVFJV
RTsgLy8gQ29tcGxldGUgbm93CiAgICAgfQogCi0gICAgUXVldWVBcHBlbmQoJlRhcmdldC0+RnJl
c2hTcmJzLCAmU3JiRXh0LT5FbnRyeSk7Ci0gICAgUmluZ0tpY2soUmluZyk7Ci0KKyAgICBSaW5n
UXVldWVSZXF1ZXN0KFJpbmcsIFNyYkV4dCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC0x
NDM3LDkgKzMwNiw3IEBAIFRhcmdldFN5bmNDYWNoZSgKICAgICAgICAgcmV0dXJuIFRSVUU7CiAg
ICAgfQogCi0gICAgUXVldWVBcHBlbmQoJlRhcmdldC0+RnJlc2hTcmJzLCAmU3JiRXh0LT5FbnRy
eSk7Ci0gICAgUmluZ0tpY2soUmluZyk7Ci0KKyAgICBSaW5nUXVldWVSZXF1ZXN0KFJpbmcsIFNy
YkV4dCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC0xNDY2LDkgKzMzMyw3IEBAIFRhcmdl
dFVubWFwKAogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKLSAgICBRdWV1ZUFwcGVuZCgm
VGFyZ2V0LT5GcmVzaFNyYnMsICZTcmJFeHQtPkVudHJ5KTsKLSAgICBSaW5nS2ljayhSaW5nKTsK
LQorICAgIFJpbmdRdWV1ZVJlcXVlc3QoUmluZywgU3JiRXh0KTsKICAgICByZXR1cm4gRkFMU0U7
CiB9CiAKQEAgLTE4NzIsMTUgKzczNyw3IEBAIFRhcmdldFJlc2V0KAogewogICAgIFZlcmJvc2Uo
IlsldV0gPT09PT0+XG4iLCBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpKTsKIAotICAgIF9fVGFy
Z2V0UGF1c2VEYXRhUGF0aChUYXJnZXQsIFRSVUUpOwotCi0gICAgaWYgKFF1ZXVlQ291bnQoJlRh
cmdldC0+U3VibWl0dGVkUmVxcykpIHsKLSAgICAgICAgRXJyb3IoIlRhcmdldFslZF0gOiBiYWNr
ZW5kIGhhcyAldSBvdXRzdGFuZGluZyByZXF1ZXN0cyBhZnRlciBhIFRhcmdldFJlc2V0XG4iLAot
ICAgICAgICAgICAgICBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpLAotICAgICAgICAgICAgICBR
dWV1ZUNvdW50KCZUYXJnZXQtPlN1Ym1pdHRlZFJlcXMpKTsKLSAgICB9Ci0KLSAgICBfX1Rhcmdl
dFVucGF1c2VEYXRhUGF0aChUYXJnZXQpOworICAgIEZyb250ZW5kUmVzZXQoVGFyZ2V0LT5Gcm9u
dGVuZCk7CiAKICAgICBWZXJib3NlKCJbJXVdIDw9PT09PVxuIiwgVGFyZ2V0R2V0VGFyZ2V0SWQo
VGFyZ2V0KSk7CiB9CkBAIC0xODkxLDggKzc0OCw3IEBAIFRhcmdldEZsdXNoKAogICAgIElOICBQ
WEVOVkJEX1NSQkVYVCAgU3JiRXh0CiAgICAgKQogewotICAgIFF1ZXVlQXBwZW5kKCZUYXJnZXQt
PlNodXRkb3duU3JicywgJlNyYkV4dC0+RW50cnkpOwotICAgIFJpbmdLaWNrKEZyb250ZW5kR2V0
UmluZyhUYXJnZXQtPkZyb250ZW5kKSk7CisgICAgUmluZ1F1ZXVlU2h1dGRvd24oRnJvbnRlbmRH
ZXRSaW5nKFRhcmdldC0+RnJvbnRlbmQpLCBTcmJFeHQpOwogfQogCiBWT0lECkBAIC0xOTAxLDgg
Kzc1Nyw3IEBAIFRhcmdldFNodXRkb3duKAogICAgIElOICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0
CiAgICAgKQogewotICAgIFF1ZXVlQXBwZW5kKCZUYXJnZXQtPlNodXRkb3duU3JicywgJlNyYkV4
dC0+RW50cnkpOwotICAgIFJpbmdLaWNrKEZyb250ZW5kR2V0UmluZyhUYXJnZXQtPkZyb250ZW5k
KSk7CisgICAgUmluZ1F1ZXVlU2h1dGRvd24oRnJvbnRlbmRHZXRSaW5nKFRhcmdldC0+RnJvbnRl
bmQpLCBTcmJFeHQpOwogfQogCiBWT0lECkBAIC0yMTU2LDU4ICsxMDExLDggQEAgVGFyZ2V0RGVi
dWdDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgIlRBUkdFVDogJXNcbiIsCiAgICAgICAgICAg
ICAgICAgIFRhcmdldC0+TWlzc2luZyA/IFRhcmdldC0+UmVhc29uIDogIk5vdCBNaXNzaW5nIik7
CiAKLSAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAotICAgICAgICAgICAgICAgICAmVGFyZ2V0LT5E
ZWJ1Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIlRBUkdFVDogQkxLSUZfT1BzOiBSRUFE
PSV1IFdSSVRFPSV1XG4iLAotICAgICAgICAgICAgICAgICBUYXJnZXQtPkJsa09wUmVhZCwgVGFy
Z2V0LT5CbGtPcFdyaXRlKTsKLSAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAotICAgICAgICAgICAg
ICAgICAmVGFyZ2V0LT5EZWJ1Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIlRBUkdFVDog
QkxLSUZfT1BzOiBJTkRJUkVDVF9SRUFEPSV1IElORElSRUNUX1dSSVRFPSV1XG4iLAotICAgICAg
ICAgICAgICAgICBUYXJnZXQtPkJsa09wSW5kaXJlY3RSZWFkLCBUYXJnZXQtPkJsa09wSW5kaXJl
Y3RXcml0ZSk7Ci0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKLSAgICAgICAgICAgICAgICAgJlRh
cmdldC0+RGVidWdJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICJUQVJHRVQ6IEJMS0lGX09Q
czogQkFSUklFUj0ldSBESVNDQVJEPSV1IEZMVVNIPSV1XG4iLAotICAgICAgICAgICAgICAgICBU
YXJnZXQtPkJsa09wQmFycmllciwgVGFyZ2V0LT5CbGtPcERpc2NhcmQsIFRhcmdldC0+QmxrT3BG
bHVzaCk7Ci0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKLSAgICAgICAgICAgICAgICAgJlRhcmdl
dC0+RGVidWdJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICJUQVJHRVQ6IEZhaWxlZDogTWFw
cz0ldSBCb3VuY2VzPSV1IEdyYW50cz0ldVxuIiwKLSAgICAgICAgICAgICAgICAgVGFyZ2V0LT5G
YWlsZWRNYXBzLCBUYXJnZXQtPkZhaWxlZEJvdW5jZXMsIFRhcmdldC0+RmFpbGVkR3JhbnRzKTsK
LSAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAotICAgICAgICAgICAgICAgICAmVGFyZ2V0LT5EZWJ1
Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIlRBUkdFVDogU2VnbWVudHMgR3JhbnRlZD0l
bGx1IEJvdW5jZWQ9JWxsdVxuIiwKLSAgICAgICAgICAgICAgICAgVGFyZ2V0LT5TZWdzR3JhbnRl
ZCwgVGFyZ2V0LT5TZWdzQm91bmNlZCk7Ci0KLSAgICBfX0xvb2thc2lkZURlYnVnKCZUYXJnZXQt
PlJlcXVlc3RMaXN0LAotICAgICAgICAgICAgICAgICAgICAgJlRhcmdldC0+RGVidWdJbnRlcmZh
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAiUkVRVUVTVHMiKTsKLSAgICBfX0xvb2thc2lkZURl
YnVnKCZUYXJnZXQtPlNlZ21lbnRMaXN0LAotICAgICAgICAgICAgICAgICAgICAgJlRhcmdldC0+
RGVidWdJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAiU0VHTUVOVHMiKTsKLSAgICBf
X0xvb2thc2lkZURlYnVnKCZUYXJnZXQtPkluZGlyZWN0TGlzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICZUYXJnZXQtPkRlYnVnSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgIklORElS
RUNUcyIpOwotCi0gICAgUXVldWVEZWJ1Z0NhbGxiYWNrKCZUYXJnZXQtPkZyZXNoU3JicywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIkZyZXNoICAgICIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICZUYXJnZXQtPkRlYnVnSW50ZXJmYWNlKTsKLSAgICBRdWV1ZURlYnVnQ2FsbGJhY2soJlRhcmdl
dC0+UHJlcGFyZWRSZXFzLAotICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZWQgIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgJlRhcmdldC0+RGVidWdJbnRlcmZhY2UpOwotICAgIFF1ZXVl
RGVidWdDYWxsYmFjaygmVGFyZ2V0LT5TdWJtaXR0ZWRSZXFzLAotICAgICAgICAgICAgICAgICAg
ICAgICAiU3VibWl0dGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgJlRhcmdldC0+RGVidWdJ
bnRlcmZhY2UpOwotICAgIFF1ZXVlRGVidWdDYWxsYmFjaygmVGFyZ2V0LT5TaHV0ZG93blNyYnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICJTaHV0ZG93biAiLAotICAgICAgICAgICAgICAgICAg
ICAgICAmVGFyZ2V0LT5EZWJ1Z0ludGVyZmFjZSk7Ci0KICAgICBGcm9udGVuZERlYnVnQ2FsbGJh
Y2soVGFyZ2V0LT5Gcm9udGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRhcmdldC0+
RGVidWdJbnRlcmZhY2UpOwotCi0gICAgVGFyZ2V0LT5CbGtPcFJlYWQgPSBUYXJnZXQtPkJsa09w
V3JpdGUgPSAwOwotICAgIFRhcmdldC0+QmxrT3BJbmRpcmVjdFJlYWQgPSBUYXJnZXQtPkJsa09w
SW5kaXJlY3RXcml0ZSA9IDA7Ci0gICAgVGFyZ2V0LT5CbGtPcEJhcnJpZXIgPSBUYXJnZXQtPkJs
a09wRGlzY2FyZCA9IFRhcmdldC0+QmxrT3BGbHVzaCA9IDA7Ci0gICAgVGFyZ2V0LT5GYWlsZWRN
YXBzID0gVGFyZ2V0LT5GYWlsZWRCb3VuY2VzID0gVGFyZ2V0LT5GYWlsZWRHcmFudHMgPSAwOwot
ICAgIFRhcmdldC0+U2Vnc0dyYW50ZWQgPSBUYXJnZXQtPlNlZ3NCb3VuY2VkID0gMDsKIH0KIAog
c3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQKQEAgLTIyMTYsNjEgKzEwMjEsOCBAQCBUYXJn
ZXRTdXNwZW5kQ2FsbGJhY2soCiAgICAgKQogewogICAgIFBYRU5WQkRfVEFSR0VUICBUYXJnZXQg
PSBBcmd1bWVudDsKLSAgICBMSVNUX0VOVFJZICAgICAgTGlzdDsKLQotICAgIEluaXRpYWxpemVM
aXN0SGVhZCgmTGlzdCk7Ci0KLSAgICAvLyBwb3AgYWxsIHN1Ym1pdHRlZCByZXF1ZXN0cywgY2xl
YW51cCBhbmQgYWRkIGFzc29jaWF0ZWQgU1JCIHRvIGEgbGlzdAotICAgIGZvciAoOzspIHsKLSAg
ICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUIFJl
cXVlc3Q7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeSA9IFF1ZXVlUG9wKCZUYXJnZXQt
PlN1Ym1pdHRlZFJlcXMpOwotICAgICAgICBpZiAoRW50cnkgPT0gTlVMTCkKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZC
RF9SRVFVRVNULCBFbnRyeSk7Ci0gICAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChSZXF1ZXN0LT5T
cmIpOwotCi0gICAgICAgIFRhcmdldFB1dFJlcXVlc3QoVGFyZ2V0LCBSZXF1ZXN0KTsKLQotICAg
ICAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDApIHsKLSAg
ICAgICAgICAgIEluc2VydFRhaWxMaXN0KCZMaXN0LCAmU3JiRXh0LT5FbnRyeSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBwb3AgYWxsIHByZXBhcmVkIHJlcXVlc3RzLCBjbGVhbnVwIGFu
ZCBhZGQgYXNzb2NpYXRlZCBTUkIgdG8gYSBsaXN0Ci0gICAgZm9yICg7OykgewotICAgICAgICBQ
WEVOVkJEX1NSQkVYVCAgU3JiRXh0OwotICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsK
LSAgICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUXVldWVQb3AoJlRhcmdldC0+UHJlcGFy
ZWRSZXFzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVT
VCwgRW50cnkpOwotICAgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoUmVxdWVzdC0+U3JiKTsKLQot
ICAgICAgICBUYXJnZXRQdXRSZXF1ZXN0KFRhcmdldCwgUmVxdWVzdCk7Ci0KLSAgICAgICAgaWYg
KEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJFeHQtPkNvdW50KSA9PSAwKSB7Ci0gICAgICAgICAg
ICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlNyYkV4dC0+RW50cnkpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gZm9yZWFjaCBTUkIgaW4gbGlzdCwgcHV0IG9uIHN0YXJ0IG9mIEZyZXNoU3Ji
cwotICAgIGZvciAoOzspIHsKLSAgICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAg
ICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUmVtb3ZlVGFpbExpc3QoJkxpc3QpOwotICAgICAg
ICBpZiAoRW50cnkgPT0gJkxpc3QpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgU3JiRXh0
ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TUkJFWFQsIEVudHJ5KTsKIAotICAg
ICAgICBRdWV1ZVVuUG9wKCZUYXJnZXQtPkZyZXNoU3JicywgJlNyYkV4dC0+RW50cnkpOwotICAg
IH0KLQotICAgIC8vIG5vdyB0aGUgZmlyc3Qgc2V0IG9mIHJlcXVlc3RzIHBvcHBlZCBvZmYgc3Vi
bWl0dGVkIGxpc3QgaXMgdGhlIG5leHQgU1JCCi0gICAgLy8gdG8gYmUgcG9wcGVkIG9mZiB0aGUg
ZnJlc2ggbGlzdAotCi0gICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6ICVkIEZyZXNoIFNSQnNcbiIs
Ci0gICAgICAgICAgICBUYXJnZXRHZXRUYXJnZXRJZChUYXJnZXQpLAotICAgICAgICAgICAgUXVl
dWVDb3VudCgmVGFyZ2V0LT5GcmVzaFNyYnMpKTsKKyAgICBSaW5nUmVRdWV1ZVJlcXVlc3RzKEZy
b250ZW5kR2V0UmluZyhUYXJnZXQtPkZyb250ZW5kKSk7CiAKICAgICBWZXJib3NlKCJUYXJnZXRb
JWRdIDogJXMgKCVzKVxuIiwKICAgICAgICAgICAgIFRhcmdldEdldFRhcmdldElkKFRhcmdldCks
CkBAIC0yMzMyLDggKzEwODQsNiBAQCBUYXJnZXREM1RvRDAoCiAgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFpbDY7CiAKLSAgICBfX1RhcmdldFVucGF1c2VEYXRh
UGF0aChUYXJnZXQpOwotCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogCiBmYWlsNjoKQEAg
LTIzODgsOCArMTEzOCw2IEBAIFRhcmdldEQwVG9EMygKIAogICAgIFZlcmJvc2UoIlRhcmdldFsl
ZF0gOiBEMC0+RDNcbiIsIFRhcmdldElkKTsKIAotICAgIF9fVGFyZ2V0UGF1c2VEYXRhUGF0aChU
YXJnZXQsIEZBTFNFKTsKLQogICAgIChWT0lEKSBGcm9udGVuZFNldFN0YXRlKFRhcmdldC0+RnJv
bnRlbmQsIFhFTlZCRF9DTE9TRUQpOwogCiAgICAgRnJvbnRlbmREMFRvRDMoVGFyZ2V0LT5Gcm9u
dGVuZCk7CkBAIC0yNDcxLDE4ICsxMjE5LDEwIEBAIFRhcmdldENyZWF0ZSgKICAgICBUYXJnZXQt
PlNpZ25hdHVyZSAgICAgICA9IFRBUkdFVF9TSUdOQVRVUkU7CiAgICAgVGFyZ2V0LT5BZGFwdGVy
ICAgICAgICAgPSBBZGFwdGVyOwogICAgIFRhcmdldC0+RGV2aWNlT2JqZWN0ICAgID0gTlVMTDsg
Ly8gZmlsbGVkIGluIGxhdGVyCi0gICAgVGFyZ2V0LT5QYXVzZWQgICAgICAgICAgPSAxOyAvLyBQ
YXVzZWQgdW50aWwgRDMtPkQwIHRyYW5zaXRpb24KICAgICBUYXJnZXQtPkRldmljZVBucFN0YXRl
ICA9IFByZXNlbnQ7CiAgICAgVGFyZ2V0LT5EZXZpY2VQb3dlclN0YXRlID0gUG93ZXJEZXZpY2VE
MzsKIAogICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZUYXJnZXQtPkxvY2spOwotICAgIFF1ZXVl
SW5pdCgmVGFyZ2V0LT5GcmVzaFNyYnMpOwotICAgIFF1ZXVlSW5pdCgmVGFyZ2V0LT5QcmVwYXJl
ZFJlcXMpOwotICAgIFF1ZXVlSW5pdCgmVGFyZ2V0LT5TdWJtaXR0ZWRSZXFzKTsKLSAgICBRdWV1
ZUluaXQoJlRhcmdldC0+U2h1dGRvd25TcmJzKTsKLSAgICBfX0xvb2thc2lkZUluaXQoJlRhcmdl
dC0+UmVxdWVzdExpc3QsIHNpemVvZihYRU5WQkRfUkVRVUVTVCksIFJFUVVFU1RfUE9PTF9UQUcp
OwotICAgIF9fTG9va2FzaWRlSW5pdCgmVGFyZ2V0LT5TZWdtZW50TGlzdCwgc2l6ZW9mKFhFTlZC
RF9TRUdNRU5UKSwgU0VHTUVOVF9QT09MX1RBRyk7Ci0gICAgX19Mb29rYXNpZGVJbml0KCZUYXJn
ZXQtPkluZGlyZWN0TGlzdCwgc2l6ZW9mKFhFTlZCRF9JTkRJUkVDVCksIElORElSRUNUX1BPT0xf
VEFHKTsKIAogICAgIHN0YXR1cyA9IEZyb250ZW5kQ3JlYXRlKFRhcmdldCwgRGV2aWNlSWQsIFRh
cmdldElkLCAmVGFyZ2V0LT5Gcm9udGVuZCk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
CkBAIC0yNTA0LDkgKzEyNDQsNiBAQCBmYWlsMzoKIAogZmFpbDI6CiAgICAgRXJyb3IoIkZhaWwy
XG4iKTsKLSAgICBfX0xvb2thc2lkZVRlcm0oJlRhcmdldC0+SW5kaXJlY3RMaXN0KTsKLSAgICBf
X0xvb2thc2lkZVRlcm0oJlRhcmdldC0+U2VnbWVudExpc3QpOwotICAgIF9fTG9va2FzaWRlVGVy
bSgmVGFyZ2V0LT5SZXF1ZXN0TGlzdCk7CiAgICAgX19UYXJnZXRGcmVlKFRhcmdldCk7CiAKIGZh
aWwxOgpAQCAtMjUzMCwxMCArMTI2Nyw2IEBAIFRhcmdldERlc3Ryb3koCiAgICAgRnJvbnRlbmRE
ZXN0cm95KFRhcmdldC0+RnJvbnRlbmQpOwogICAgIFRhcmdldC0+RnJvbnRlbmQgPSBOVUxMOwog
Ci0gICAgX19Mb29rYXNpZGVUZXJtKCZUYXJnZXQtPkluZGlyZWN0TGlzdCk7Ci0gICAgX19Mb29r
YXNpZGVUZXJtKCZUYXJnZXQtPlNlZ21lbnRMaXN0KTsKLSAgICBfX0xvb2thc2lkZVRlcm0oJlRh
cmdldC0+UmVxdWVzdExpc3QpOwotCiAgICAgUnRsWmVyb01lbW9yeShUYXJnZXQsIHNpemVvZihY
RU5WQkRfVEFSR0VUKSk7CiAgICAgX19UYXJnZXRGcmVlKFRhcmdldCk7CiAKZGlmZiAtLWdpdCBh
L3NyYy94ZW52YmQvdGFyZ2V0LmggYi9zcmMveGVudmJkL3RhcmdldC5oCmluZGV4IGI3OTBlYjQu
LmRkMzYwZjUgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvdGFyZ2V0LmgKKysrIGIvc3JjL3hlbnZi
ZC90YXJnZXQuaApAQCAtOTMsMTggKzkzLDYgQEAgVGFyZ2V0U2V0RGV2aWNlT2JqZWN0KAogICAg
IElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0CiAgICAgKTsKIAotZXh0ZXJuIEJPT0xF
QU4KLVRhcmdldFN1Ym1pdFJlcXVlc3RzKAotICAgIElOICBQWEVOVkJEX1RBUkdFVCAgVGFyZ2V0
Ci0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLVRhcmdldENvbXBsZXRlUmVzcG9uc2UoCi0gICAgSU4g
IFBYRU5WQkRfVEFSR0VUICBUYXJnZXQsCi0gICAgSU4gIFVMT05HICAgICAgICAgICBUYWcsCi0g
ICAgSU4gIFNIT1JUICAgICAgICAgICBTdGF0dXMKLSAgICApOwotCiBleHRlcm4gVk9JRAogVGFy
Z2V0UHJlcGFyZUlvKAogICAgIElOICBQWEVOVkJEX1RBUkdFVCAgVGFyZ2V0LAotLSAKMi44LjMK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYt
ZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYt
ZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 21 15:34:06 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Sep 2017 15:34:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dv3UK-0001mc-C8; Thu, 21 Sep 2017 15:34:04 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4303071cb=owen.smith@citrix.com>)
 id 1dv3UJ-0001mW-Hx
 for win-pv-devel@lists.xenproject.org; Thu, 21 Sep 2017 15:34:03 +0000
Received: from [85.158.137.68] by server-2.bemta-3.messagelabs.com id
 D8/18-02041-AEBD3C95; Thu, 21 Sep 2017 15:34:02 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRWlGSWpSXmKPExsXitHSDve6r24c
 jDZ4s5Lb4szjRgdHj8IcrLAGMUayZeUn5FQmsGX8ubmQq2BdYsf/pLLYGxnfGXYycHBIC/hI7
 rp1nArHZBGQlPq78zAxiiwioS+z7vBUsziygJnF9fxcriC0s4CQxZ9V7sBoWAVWJm59+s4HYv
 AJWEut//GCDmCknMXnxJUYQW0hASeLb4hfMEDWCEidnPmGBmCkhcfDFC+YJjNyzkKRmIUktYG
 RaxahRnFpUllqka2Ssl1SUmZ5RkpuYmaNraGCsl5taXJyYnpqTmFSsl5yfu4kRGAr1DAyMOxj
 79vodYpTkYFIS5Q2/cjhSiC8pP6UyI7E4I76oNCe1+BCjDAeHkgTvr1tAOcGi1PTUirTMHGBQ
 wqQlOHiURHjXg6R5iwsSc4sz0yFSpxh1OTpu3v3DJMSSl5+XKiXO+xOkSACkKKM0D24ELEIuM
 cpKCfMyMjAwCPEUpBblZpagyr9iFOdgVBLm5QLGmxBPZl4J3KZXQEcwAR2RveEAyBEliQgpqQ
 ZGtWleIkKndAUPsLOph7gy18587dVwhf2/McvPs2rqMznZTa1qlZOfOi01t3bq/LjVOcn4dMl
 84TqLZiV5tqOz/5qxRrGKbI746lg5d6bB3Kwbu1YcP935YV5vfUHw36klm9ZxRmku2DBBnDtC
 v76f9ybPtY8fHr7Vv+fJtXpRZeT+e8Y/n6xVYinOSDTUYi4qTgQAw9HyHosCAAA=
X-Env-Sender: prvs=4303071cb=owen.smith@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1506008039!108367491!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48240 invoked from network); 21 Sep 2017 15:34:01 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 21 Sep 2017 15:34:01 -0000
X-IronPort-AV: E=Sophos;i="5.42,425,1500940800"; d="scan'208";a="448721126"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 21 Sep 2017 16:33:37 +0100
Message-ID: <20170921153337.16796-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 7/7 vs] Remove generic store accessors in
	frontend
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKUmVwbGFjZSB3aXRoIHNw
ZWNpZmljIHVzZSBmdW5jdGlvbnMuCgoqIEFkZCBtaXNzaW5nIHBhcmFtZXRlciB0byBWZXJib3Nl
KCkgaW4gRnJvbnRlbmRTZXREZXZpY2VVc2FnZSgpCgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRo
IDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQogc3JjL3hlbnZiZC9mcm9udGVuZC5jIHwgMTU0
ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMv
eGVudmJkL2Zyb250ZW5kLmggfCAgMzAgKysrKy0tLS0tLQogc3JjL3hlbnZiZC90YXJnZXQuYyAg
IHwgIDM1ICsrLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAx
NDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3Jj
L3hlbnZiZC9mcm9udGVuZC5jCmluZGV4IDQyZWFhMGIuLmQ3ZmZmODkgMTAwNjQ0Ci0tLSBhL3Ny
Yy94ZW52YmQvZnJvbnRlbmQuYworKysgYi9zcmMveGVudmJkL2Zyb250ZW5kLmMKQEAgLTE4Mywx
MDMgKzE4Myw3MCBAQCBGcm9udGVuZEdldElucXVpcnlPdmVycmlkZSgKICAgICB9CiB9CiAKLU5U
U1RBVFVTCi1Gcm9udGVuZFN0b3JlV3JpdGVGcm9udGVuZCgKLSAgICBfX2luICBQWEVOVkJEX0ZS
T05URU5EICAgICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUENIQVIgICAgICAgICAgICAgICAgIE5h
bWUsCi0gICAgX19pbiAgUENIQVIgICAgICAgICAgICAgICAgIFZhbHVlCitWT0lECitGcm9udGVu
ZFNldEVqZWN0ZWQoCisgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKICAgICAp
CiB7Ci0gICAgcmV0dXJuIFhFTkJVU19TVE9SRShQcmludGYsCisgICAgKFZPSUQpIFhFTkJVU19T
VE9SRShQcmludGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50
ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyb250ZW5kLT5Gcm9udGVuZFBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgImVqZWN0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIjEiKTsKIH0KLU5UU1RB
VFVTCi1Gcm9udGVuZFN0b3JlUmVhZEJhY2tlbmQoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVO
RCAgICAgIEZyb250ZW5kLAotICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgICAgICBOYW1lLAot
ICAgIF9fb3V0IFBDSEFSKiAgICAgICAgICAgICAgICBWYWx1ZQotICAgICkKLXsKLSAgICBOVFNU
QVRVUyAgICBTdGF0dXM7Ci0KLSAgICBTdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7
Ci0gICAgaWYgKEZyb250ZW5kLT5CYWNrZW5kUGF0aCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZh
aWwxOwotCi0gICAgU3RhdHVzID0gWEVOQlVTX1NUT1JFKFJlYWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5CYWNrZW5k
UGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUpOwotICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBn
b3RvIGZhaWwyOwogCi0gICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwotCi1mYWlsMjoKLWZhaWwx
OgotICAgIHJldHVybiBTdGF0dXM7Ci19CiBWT0lECi1Gcm9udGVuZFN0b3JlRnJlZSgKLSAgICBf
X2luICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUENIQVIgICAg
ICAgICAgICAgICAgIFZhbHVlCitGcm9udGVuZFNldEVqZWN0RmFpbGVkKAorICAgIElOICBQWEVO
VkJEX0ZST05URU5EICAgIEZyb250ZW5kCiAgICAgKQogewotICAgIFhFTkJVU19TVE9SRShGcmVl
LAotICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAotICAgICAgICAg
ICAgICAgICBWYWx1ZSk7CisgICAgKFZPSUQpIFhFTkJVU19TVE9SRShQcmludGYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5Gcm9u
dGVuZFBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIlVucGx1ZyBmYWlsZWQgZHVlIHRvIG9wZW4gaGFuZGxlKHMpISIpOwogfQot
X19kcnZfbWF4SVJRTChESVNQQVRDSF9MRVZFTCkKLU5UU1RBVFVTCi1Gcm9udGVuZFdyaXRlVXNh
Z2UoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAgRnJvbnRlbmQKKworVk9JRAor
RnJvbnRlbmRTZXREZXZpY2VVc2FnZSgKKyAgICBJTiAgUFhFTlZCRF9GUk9OVEVORCAgICAgICAg
ICAgICAgICBGcm9udGVuZCwKKyAgICBJTiAgREVWSUNFX1VTQUdFX05PVElGSUNBVElPTl9UWVBF
ICBUeXBlLAorICAgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlCiAg
ICAgKQogewotICAgIE5UU1RBVFVTICAgIFN0YXR1czsKKyAgICBQQ0hBUiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVc2FnZU5hbWU7CiAKLSAgICBTdGF0dXMgPSBYRU5CVVNfU1RPUkUo
UHJpbnRmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJm
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBGcm9udGVuZC0+VGFyZ2V0UGF0aCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYWdpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fwcy5QYWdpbmcpOwotICAgIGlmICghTlRfU1VDQ0VT
UyhTdGF0dXMpKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIFN0YXR1cyA9IFhFTkJVU19TVE9S
RShQcmludGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRl
cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIEZyb250ZW5kLT5UYXJnZXRQYXRoLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgImhpYmVybmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMuSGliZXJuYXRpb24pOwotICAgIGlm
ICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIFN0YXR1cyA9
IFhFTkJVU19TVE9SRShQcmludGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVu
ZC0+U3RvcmVJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5UYXJnZXRQYXRoLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImR1bXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fwcy5EdW1wRmlsZSk7Ci0gICAg
aWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgICAgIGdvdG8gb3V0OworICAgIHN3aXRjaCAo
VHlwZSkgeworICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlUGFnaW5nOgorICAgICAgICBVc2FnZU5h
bWUgPSAicGFnaW5nIjsKKyAgICAgICAgRnJvbnRlbmQtPkNhcHMuUGFnaW5nID0gVmFsdWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRGV2aWNlVXNhZ2VUeXBlSGliZXJuYXRpb246CisgICAg
ICAgIFVzYWdlTmFtZSA9ICJoaWJlcm5hdGlvbiI7CisgICAgICAgIEZyb250ZW5kLT5DYXBzLkhp
YmVybmF0aW9uID0gVmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGV2aWNlVXNhZ2VU
eXBlRHVtcEZpbGU6CisgICAgICAgIFVzYWdlTmFtZSA9ICJkdW1wIjsKKyAgICAgICAgRnJvbnRl
bmQtPkNhcHMuRHVtcEZpbGUgPSBWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFZlcmJvc2UoIlRhcmdldFslZF0gOiAlcyAl
cyAlc1xuIiwgRnJvbnRlbmQtPlRhcmdldElkLAotICAgICAgICAgICAgRnJvbnRlbmQtPkNhcHMu
RHVtcEZpbGUgPyAiRFVNUCIgOiAiTk9UX0RVTVAiLCAKLSAgICAgICAgICAgIEZyb250ZW5kLT5D
YXBzLkhpYmVybmF0aW9uID8gIkhJQkVSIiA6ICJOT1RfSElCRVIiLAotICAgICAgICAgICAgRnJv
bnRlbmQtPkNhcHMuUGFnaW5nID8gIlBBR0UiIDogIk5PVF9QQUdFIik7CisgICAgKFZPSUQpIFhF
TkJVU19TVE9SRShQcmludGYsCisgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0
b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEZyb250ZW5kLT5UYXJnZXRQYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgVXNhZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKTsKIAotb3V0OgotICAgIHJldHVybiBTdGF0dXM7CisgICAgVmVy
Ym9zZSgiVGFyZ2V0WyV1XSAlcyAlc1xuIiwKKyAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0
SWQoRnJvbnRlbmQpLAorICAgICAgICAgICAgVmFsdWUgPyAiQURESU5HIiA6ICJSRU1PVklORyIs
CisgICAgICAgICAgICBVc2FnZU5hbWUpOwogfQogCiAvLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBA
IC0xMDM3LDEwICsxMDA0LDE1IEBAIEZyb250ZW5kUHJlcGFyZSgKICAgICBpZiAoIU5UX1NVQ0NF
U1MoU3RhdHVzKSkKICAgICAgICAgZ290byBmYWlsMjsKIAotICAgIC8vIHdyaXRlIHRhcmdldHBh
dGgKLSAgICBTdGF0dXMgPSBGcm9udGVuZFdyaXRlVXNhZ2UoRnJvbnRlbmQpOwotICAgIGlmICgh
TlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwzOworICAgIEZyb250ZW5kU2V0
RGV2aWNlVXNhZ2UoRnJvbnRlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VV
c2FnZVR5cGVQYWdpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+Q2Fw
cy5QYWdpbmcpOworICAgIEZyb250ZW5kU2V0RGV2aWNlVXNhZ2UoRnJvbnRlbmQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZXZpY2VVc2FnZVR5cGVIaWJlcm5hdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5DYXBzLkhpYmVybmF0aW9uKTsKKyAgICBGcm9u
dGVuZFNldERldmljZVVzYWdlKEZyb250ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGV2aWNlVXNhZ2VUeXBlRHVtcEZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9u
dGVuZC0+Q2Fwcy5EdW1wRmlsZSk7CiAKICAgICBTdGF0dXMgPSBYRU5CVVNfU1RPUkUoUHJpbnRm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLApA
QCAtMTA1MCw3ICsxMDIyLDcgQEAgRnJvbnRlbmRQcmVwYXJlKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+RnJvbnRl
bmRQYXRoKTsKICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWls
NDsKKyAgICAgICAgZ290byBmYWlsMzsKIAogICAgIFN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmlu
dGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2Us
CkBAIC0xMDYwLDI0ICsxMDMyLDI0IEBAIEZyb250ZW5kUHJlcGFyZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiV1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRl
dmljZUlkKTsKICAgICBpZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgZ290byBmYWls
NTsKKyAgICAgICAgZ290byBmYWlsNDsKIAogICAgIC8vIEZyb250ZW5kOiAtPiBJTklUSUFMSVpJ
TkcKICAgICBTdGF0dXMgPSBfX19TZXRTdGF0ZShGcm9udGVuZCwgWGVuYnVzU3RhdGVJbml0aWFs
aXNpbmcpOwogICAgIGlmICghTlRfU1VDQ0VTUyhTdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWw2
OworICAgICAgICBnb3RvIGZhaWw1OwogCiAgICAgLy8gQmFja2VuZCA6IC0+IElOSVRXQUlUCiAg
ICAgQmFja2VuZFN0YXRlID0gWGVuYnVzU3RhdGVVbmtub3duOwogICAgIGRvIHsKICAgICAgICAg
U3RhdHVzID0gX19XYWl0U3RhdGUoRnJvbnRlbmQsICZCYWNrZW5kU3RhdGUpOwogICAgICAgICBp
ZiAoIU5UX1NVQ0NFU1MoU3RhdHVzKSkKLSAgICAgICAgICAgIGdvdG8gZmFpbDc7CisgICAgICAg
ICAgICBnb3RvIGZhaWw2OwogICAgIH0gd2hpbGUgKEJhY2tlbmRTdGF0ZSA9PSBYZW5idXNTdGF0
ZUNsb3NlZCB8fCAKICAgICAgICAgICAgICBCYWNrZW5kU3RhdGUgPT0gWGVuYnVzU3RhdGVJbml0
aWFsaXNpbmcpOwogICAgIFN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7CiAgICAgaWYgKEJh
Y2tlbmRTdGF0ZSAhPSBYZW5idXNTdGF0ZUluaXRXYWl0KQotICAgICAgICBnb3RvIGZhaWw4Owor
ICAgICAgICBnb3RvIGZhaWw3OwogCiAgICAgLy8gcmVhZCBmZWF0dXJlcyBhbmQgY2FwcyAocmVt
b3ZhYmxlLCByaW5nLW9yZGVyLCAuLi4pCiAgICAgVmVyYm9zZSgiVGFyZ2V0WyVkXSA6IEJhY2tl
bmRJZCAlZCAoJXMpXG4iLApAQCAtMTA4OSw4ICsxMDYxLDYgQEAgRnJvbnRlbmRQcmVwYXJlKAog
ICAgIAogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKIAotZmFpbDg6Ci0gICAgRXJyb3IoIkZh
aWw4XG4iKTsKIGZhaWw3OgogICAgIEVycm9yKCJGYWlsN1xuIik7CiBmYWlsNjoKZGlmZiAtLWdp
dCBhL3NyYy94ZW52YmQvZnJvbnRlbmQuaCBiL3NyYy94ZW52YmQvZnJvbnRlbmQuaAppbmRleCAw
OTMxOTE0Li40NmYyZTM5IDEwMDY0NAotLS0gYS9zcmMveGVudmJkL2Zyb250ZW5kLmgKKysrIGIv
c3JjL3hlbnZiZC9mcm9udGVuZC5oCkBAIC04OCwyNyArODgsMjEgQEAgRnJvbnRlbmRHZXRJbnF1
aXJ5T3ZlcnJpZGUoCiAgICAgT1VUIFBVTE9ORyAgICAgICAgICAgICAgTGVuZ3RoCiAgICAgKTsK
IAotZXh0ZXJuIE5UU1RBVFVTCi1Gcm9udGVuZFN0b3JlV3JpdGVGcm9udGVuZCgKLSAgICBfX2lu
ICBQWEVOVkJEX0ZST05URU5EICAgICAgRnJvbnRlbmQsCi0gICAgX19pbiAgUENIQVIgICAgICAg
ICAgICAgICAgIE5hbWUsCi0gICAgX19pbiAgUENIQVIgICAgICAgICAgICAgICAgIFZhbHVlCitl
eHRlcm4gVk9JRAorRnJvbnRlbmRTZXRFamVjdGVkKAorICAgIElOICBQWEVOVkJEX0ZST05URU5E
ICAgIEZyb250ZW5kCiAgICAgKTsKLWV4dGVybiBOVFNUQVRVUwotRnJvbnRlbmRTdG9yZVJlYWRC
YWNrZW5kKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICBGcm9udGVuZCwKLSAgICBf
X2luICBQQ0hBUiAgICAgICAgICAgICAgICAgTmFtZSwKLSAgICBfX291dCBQQ0hBUiogICAgICAg
ICAgICAgICAgVmFsdWUKKworZXh0ZXJuIFZPSUQKK0Zyb250ZW5kU2V0RWplY3RGYWlsZWQoCisg
ICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJvbnRlbmQKICAgICApOworCiBleHRlcm4gVk9J
RAotRnJvbnRlbmRTdG9yZUZyZWUoCi0gICAgX19pbiAgUFhFTlZCRF9GUk9OVEVORCAgICAgIEZy
b250ZW5kLAotICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgICAgICBWYWx1ZQotICAgICk7ICAg
IAotX19kcnZfbWF4SVJRTChESVNQQVRDSF9MRVZFTCkKLWV4dGVybiBOVFNUQVRVUwotRnJvbnRl
bmRXcml0ZVVzYWdlKAotICAgIF9faW4gIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgIEZyb250ZW5k
CitGcm9udGVuZFNldERldmljZVVzYWdlKAorICAgIElOICBQWEVOVkJEX0ZST05URU5EICAgICAg
ICAgICAgICAgIEZyb250ZW5kLAorICAgIElOICBERVZJQ0VfVVNBR0VfTk9USUZJQ0FUSU9OX1RZ
UEUgIFR5cGUsCisgICAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUK
ICAgICApOwogCiBfX2NoZWNrUmV0dXJuCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL3RhcmdldC5j
IGIvc3JjL3hlbnZiZC90YXJnZXQuYwppbmRleCBjZWNmY2Y1Li5mZDg2MjFkIDEwMDY0NAotLS0g
YS9zcmMveGVudmJkL3RhcmdldC5jCisrKyBiL3NyYy94ZW52YmQvdGFyZ2V0LmMKQEAgLTk1Nyw5
ICs5NTcsNyBAQCBUYXJnZXRJc3N1ZURldmljZUVqZWN0KAogICAgICAgICAgICAgUmVhc29uKTsK
ICAgICBpZiAoIVRhcmdldC0+V3JpdHRlbkVqZWN0ZWQpIHsKICAgICAgICAgVGFyZ2V0LT5Xcml0
dGVuRWplY3RlZCA9IFRSVUU7Ci0gICAgICAgIEZyb250ZW5kU3RvcmVXcml0ZUZyb250ZW5kKFRh
cmdldC0+RnJvbnRlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlamVj
dGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKTsKKyAgICAgICAg
RnJvbnRlbmRTZXRFamVjdGVkKFRhcmdldC0+RnJvbnRlbmQpOwogICAgIH0KICAgICBpZiAoRG9F
amVjdCkgewogICAgICAgICBWZXJib3NlKCJUYXJnZXRbJWRdIDogSW9SZXF1ZXN0RGV2aWNlRWpl
Y3QoMHglcClcbiIsCkBAIC05ODIsMzUgKzk4MCwxNCBAQCBfX1RhcmdldERldmljZVVzYWdlTm90
aWZpY2F0aW9uKAogICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgICAgICAgICAgU3RhY2tMb2Nh
dGlvbjsKICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlOwogICAgIERF
VklDRV9VU0FHRV9OT1RJRklDQVRJT05fVFlQRSAgVHlwZTsKLSAgICBQWEVOVkJEX0NBUFMgICAg
ICAgICAgICAgICAgICAgIENhcHMgPSBGcm9udGVuZEdldENhcHMoVGFyZ2V0LT5Gcm9udGVuZCk7
CiAKICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnAp
OwogICAgIFZhbHVlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Vc2FnZU5vdGlmaWNhdGlv
bi5JblBhdGg7CiAgICAgVHlwZSAgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlVzYWdlTm90
aWZpY2F0aW9uLlR5cGU7CiAKLSAgICBzd2l0Y2ggKFR5cGUpIHsKLSAgICBjYXNlIERldmljZVVz
YWdlVHlwZVBhZ2luZzoKLSAgICAgICAgaWYgKENhcHMtPlBhZ2luZyA9PSBWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgQ2Fwcy0+UGFnaW5nID0gVmFsdWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBEZXZpY2VVc2FnZVR5cGVIaWJlcm5hdGlvbjoKLSAgICAgICAgaWYg
KENhcHMtPkhpYmVybmF0aW9uID09IFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBDYXBzLT5IaWJlcm5hdGlvbiA9IFZhbHVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
RGV2aWNlVXNhZ2VUeXBlRHVtcEZpbGU6Ci0gICAgICAgIGlmIChDYXBzLT5EdW1wRmlsZSA9PSBW
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQ2Fwcy0+RHVtcEZpbGUgPSBWYWx1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIEZyb250ZW5kV3JpdGVVc2FnZShUYXJnZXQtPkZyb250ZW5kKTsKKyAgICBGcm9udGVu
ZFNldERldmljZVVzYWdlKFRhcmdldC0+RnJvbnRlbmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUpOwogfQogCiBzdGF0
aWMgRk9SQ0VJTkxJTkUgVk9JRApAQCAtMTA1NSw5ICsxMDMyLDcgQEAgX19UYXJnZXRDaGVja0Vq
ZWN0RmFpbGVkKAogICAgIGlmIChFamVjdEZhaWxlZCkgewogICAgICAgICBFcnJvcigiVGFyZ2V0
WyVkXSA6IFVucGx1ZyBmYWlsZWQgZHVlIHRvIG9wZW4gaGFuZGxlKHMpIVxuIiwKICAgICAgICAg
ICAgICAgVGFyZ2V0R2V0VGFyZ2V0SWQoVGFyZ2V0KSk7Ci0gICAgICAgIEZyb250ZW5kU3RvcmVX
cml0ZUZyb250ZW5kKFRhcmdldC0+RnJvbnRlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJV
bnBsdWcgZmFpbGVkIGR1ZSB0byBvcGVuIGhhbmRsZShzKSEiKTsKKyAgICAgICAgRnJvbnRlbmRT
ZXRFamVjdEZhaWxlZChUYXJnZXQtPkZyb250ZW5kKTsKICAgICB9CiB9CiAKLS0gCjIuOC4zCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 22 12:39:52 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Sep 2017 12:39:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dvNFG-0001CZ-Od; Fri, 22 Sep 2017 12:39:50 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4319057ad=Paul.Durrant@citrix.com>)
 id 1dvNFF-0001CP-2u
 for win-pv-devel@lists.xenproject.org; Fri, 22 Sep 2017 12:39:49 +0000
Received: from [85.158.139.211] by server-12.bemta-5.messagelabs.com id
 B0/A7-30935-49405C95; Fri, 22 Sep 2017 12:39:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQncyy9F
 Ig70HtCz+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxuUDt5gLLshULGpfxdTAuECmi5GTQ0LAT2La
 37NsIDabgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCAsYSi5ueskPUmEjsed3ICmEbS
 bROPglWzyKgKjFlXj9YDa+Au8SlKw9Zuhg5OIQELCXeH/MFCXMKWEk8njEDrJxRQFbiS+NqqF
 XiEreeQJwgISAgsWTPeWYIW1Ti5eN/rBC2gcTWpfvARjILaEqs36UP0aooMaX7IdRWQYmTM5+
 wTGAUnoVk6iyEjllIOmYh6VjAyLKKUaM4tagstUjXyEgvqSgzPaMkNzEzR9fQwFQvN7W4ODE9
 NScxqVgvOT93EyMw6OsZGBh3MO5p9zvEKMnBpCTKq/v/SKQQX1J+SmVGYnFGfFFpTmrxIUYZD
 g4lCd4C5qORQoJFqempFWmZOcD4g0lLcPAoifD+AknzFhck5hZnpkOkTjFachzbdPkPE8eMm3
 eB5JNr8/4yCbHk5eelSonz9oE0CIA0ZJTmwY2DpYhLjLJSwryMDAwMQjwFqUW5mSWo8q8YxTk
 YlYR5ZUCm8GTmlcBtfQV0EBPQQeWrj4AcVJKIkJJqYJw8fdmlhx2dLxmu1DBbzwhIXSrrwLru
 /8VV4rG2Yj+sGFO/3WdlP/Ng+nzrkhW3d80PKluWfWDqtX0Hrx0Q+R2uJbVmRmpmg7PkJds38
 g0HZxkYCuRMjbo19djbVr0EIe/fefO8gi/cYHFd++hNI2P0zL1OU8238Tlx5ddYlUlpF1c0M0
 +cukiJpTgj0VCLuag4EQDihg28DAMAAA==
X-Env-Sender: prvs=4319057ad=Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-206.messagelabs.com!1506083987!109922507!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 61749 invoked from network); 22 Sep 2017 12:39:47 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-7.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Sep 2017 12:39:47 -0000
X-IronPort-AV: E=Sophos;i="5.42,427,1500940800"; d="scan'208";a="53307239"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 0/7] Refactoring
Thread-Index: AQHTMinH+ygd0ku+MEy0qIfnpKX9N6LA2u6Q
Date: Fri, 22 Sep 2017 12:38:32 +0000
Message-ID: <bb170917ca4b4f6ea5569d52169ac513@AMSPEX02CL03.citrite.net>
References: <20170920155325.5860-1-owen.smith@citrix.com>
In-Reply-To: <20170920155325.5860-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 0/7] Refactoring
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMCBTZXB0ZW1iZXIgMjAxNyAxNjo1
Mw0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAwLzddIFJlZmFjdG9yaW5nDQo+IA0KPiBGcm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRo
QGNpdHJpeC5jb20+DQo+IA0KPiBUaGlzIHNlcmllcyBhdHRlbXB0cyB0byByZWxvY2F0ZSBjb2Rl
IHRvIHRoZSBjb3JyY3Qgc291cmNlIGZpbGUNCj4gKiB0YXJnZXQuYyBzaG91bGQgY29udGFpbiBT
UkIgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHRoYXQgYXJlIG5vdA0KPiAgIHBhc3NlZCB0byB0aGUg
YmFja2VuZC4NCj4gKiBmcm9udGVuZC5jIHNob3VsZCBjb250YWluIHRoZSBzdGF0ZSBtb2RlbCBh
bmQgbm9uLWJsb2NrIHByb3RvY29sDQo+ICAgYWNjZXNzIHRvIHhlbnN0b3JlLg0KPiAqIHJpbmcu
YyBzaG91bGQgY29udGFpbiBhbGwgU1JCIGhhbmRsaW5nIGFuZCB0aGUgYmxvY2sgcHJvdG9jb2wN
Cj4gICBpbXBsZW1lbnRhdGlvbi4NCj4gRWFjaCBzb3VyY2UgZmlsZSBzaG91bGQgY29udGFpbiBp
dHMgb3duIGRlYnVnIGNhbGxiYWNrIGhhbmRsZXINCj4gDQo+IE93ZW4gU21pdGggKDcpOg0KPiAg
IE1lcmdlIE5vdGlmaWVyIGFuZCBCbG9ja1JpbmcgaW50byBSaW5nDQo+ICAgVXNlIG1hY3JvcyBm
b3IgRnJvbnRlbmQgZGF0YSBhY2Nlc3NvcnMNCj4gICBNb3ZlIHJlcXVlc3QgcHJlcGFyZS9jbGVh
bnVwIHRvIHJpbmcNCj4gICBUaWR5IHVwIEZyb250ZW5kRGVidWdDYWxsYmFjaw0KPiAgIFRpZHkg
dXAgR3JhbnRlckRlYnVnQ2FsbGJhY2sNCj4gICBNb3ZlIElucXVpcnkgaGFuZGxpbmcgaW50byB0
YXJnZXQuYw0KPiAgIFJlbW92ZSBnZW5lcmljIHN0b3JlIGFjY2Vzc29ycyBpbiBmcm9udGVuZA0K
DQpBbGw6DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t
Pg0KDQo+IA0KPiAgc3JjL3hlbnZiZC9iYXNlNjQuYyAgICAgICAgICB8ICAxNzQgKysrKw0KPiAg
c3JjL3hlbnZiZC9iYXNlNjQuaCAgICAgICAgICB8ICAgNTAgKw0KPiAgc3JjL3hlbnZiZC9ibG9j
a3JpbmcuYyAgICAgICB8ICA1OTcgLS0tLS0tLS0tLS0tDQo+ICBzcmMveGVudmJkL2Jsb2Nrcmlu
Zy5oICAgICAgIHwgICA5NyAtLQ0KPiAgc3JjL3hlbnZiZC9mcm9udGVuZC5jICAgICAgICB8ICA4
MTggKysrKysrKystLS0tLS0tLQ0KPiAgc3JjL3hlbnZiZC9mcm9udGVuZC5oICAgICAgICB8ICAx
MzYgKystDQo+ICBzcmMveGVudmJkL2dyYW50ZXIuYyAgICAgICAgIHwgIDE0NiArKy0NCj4gIHNy
Yy94ZW52YmQvZ3JhbnRlci5oICAgICAgICAgfCAgIDQ2ICstDQo+ICBzcmMveGVudmJkL25vdGlm
aWVyLmMgICAgICAgIHwgIDM5MCAtLS0tLS0tLQ0KPiAgc3JjL3hlbnZiZC9ub3RpZmllci5oICAg
ICAgICB8ICAxMDEgLS0NCj4gIHNyYy94ZW52YmQvcGRvaW5xdWlyeS5jICAgICAgfCAgNTMwIC0t
LS0tLS0tLS0tDQo+ICBzcmMveGVudmJkL3Bkb2lucXVpcnkuaCAgICAgIHwgICA2NCAtLQ0KPiAg
c3JjL3hlbnZiZC9yaW5nLmMgICAgICAgICAgICB8IDIxMzMNCj4gKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMveGVudmJkL3JpbmcuaCAgICAgICAgICAg
IHwgICA5OSArKw0KPiAgc3JjL3hlbnZiZC90YXJnZXQuYyAgICAgICAgICB8IDE2NTEgKysrKysr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHNyYy94ZW52YmQvdGFyZ2V0LmggICAgICAg
ICAgfCAgIDEyIC0NCj4gIHZzMjAxNS94ZW52YmQveGVudmJkLnZjeHByb2ogfCAgICA1ICstDQo+
ICAxNyBmaWxlcyBjaGFuZ2VkLCAzMzIyIGluc2VydGlvbnMoKyksIDM3MjcgZGVsZXRpb25zKC0p
DQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbnZiZC9iYXNlNjQuYw0KPiAgY3JlYXRlIG1v
ZGUgMTAwNzU1IHNyYy94ZW52YmQvYmFzZTY0LmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVudmJkL2Jsb2NrcmluZy5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9ibG9j
a3JpbmcuaA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvbm90aWZpZXIuYw0KPiAg
ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvbm90aWZpZXIuaA0KPiAgZGVsZXRlIG1vZGUg
MTAwNjQ0IHNyYy94ZW52YmQvcGRvaW5xdWlyeS5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj
L3hlbnZiZC9wZG9pbnF1aXJ5LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVudmJkL3Jp
bmcuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW52YmQvcmluZy5oDQo+IA0KPiAtLQ0K
PiAyLjguMw0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJp
bi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 22 13:28:55 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Sep 2017 13:28:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dvO0k-00069L-NU; Fri, 22 Sep 2017 13:28:54 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1dvO0j-00068u-Hz
 for win-pv-devel@lists.xenproject.org; Fri, 22 Sep 2017 13:28:53 +0000
Date: Fri, 22 Sep 2017 13:28:36 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <24643098.3.1506086921989.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_2_10958239.1506086916302"
X-Jenkins-Job: XENVBD-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENVBD-master - Build #100 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_2_10958239.1506086916302
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #100.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENVBD-master/100/console to view the results.
------=_Part_2_10958239.1506086916302
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

------=_Part_2_10958239.1506086916302--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 25 08:45:06 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Sep 2017 08:45:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwP0i-0004vv-MB; Mon, 25 Sep 2017 08:45:04 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=434d55f45=owen.smith@citrix.com>)
 id 1dwP0i-0004vn-2I
 for win-pv-devel@lists.xenproject.org; Mon, 25 Sep 2017 08:45:04 +0000
Received: from [85.158.139.211] by server-12.bemta-5.messagelabs.com id
 B8/2D-30935-F02C8C95; Mon, 25 Sep 2017 08:45:03 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrLLMWRWlGSWpSXmKPExsXitHSDvS7/oRO
 RBh/XM1n8WZzowOhx+MMVlgDGKNbMvKT8igTWjMkT57MULGCp2HX8P1sD42LmLkZODgkBf4m/
 sx4ygthsArISH1d+BouLCKhL7Pu8lQnEZhZQk7i+v4sVxBYWMJP4cHk+WJxFQFXi08S3YDavg
 IVE28q5rBAz5SQmL74ENlNIQEni2+IXzBA1ghInZz5hgZgpIXHwxQvmCYzcs5CkZiFJLWBkWs
 WoXpxaVJZapGuil1SUmZ5RkpuYmaNraGCql5taXJyYnpqTmFSsl5yfu4kRGAgMQLCD8Vaf8yF
 GSQ4mJVHeu3wnIoX4kvJTKjMSizPii0pzUosPMcpwcChJ8M49AJQTLEpNT61Iy8wBhiRMWoKD
 R0mEN2I/UJq3uCAxtzgzHSJ1itGY48bD63+YODpu3v3DJMSSl5+XKiXOuxVkkgBIaUZpHtwgW
 KxcYpSVEuZlBDpNiKcgtSg3swRV/hWjOAejkjDvYZApPJl5JXD7XgGdwgR0Su9UsFNKEhFSUg
 2M/GKZLkIbrmbuNGUsf3BVVUtMJ9DrMvPlo3s2BAaJumdNX7Phrs231O6QFtY1G/keCKbMmXj
 69SQ9hucLp745d5VhyQo9Jpv1r/b8ZE+wPXk+SZqzcW26xdn7QVMvqlZMY95m0/f98eXdtjxP
 Erc/Y1okwez978JTg6tO5zyUHzO4HJGwdxFbq8RSnJFoqMVcVJwIACj4D/+QAgAA
X-Env-Sender: prvs=434d55f45=owen.smith@citrix.com
X-Msg-Ref: server-16.tower-206.messagelabs.com!1506329101!93063000!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 44452 invoked from network); 25 Sep 2017 08:45:02 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-16.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 25 Sep 2017 08:45:02 -0000
X-IronPort-AV: E=Sophos;i="5.42,435,1500940800"; d="scan'208";a="449058134"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 25 Sep 2017 09:44:47 +0100
Message-ID: <20170925084447.720-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH] Add missing Verbose() format argument
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW52YmQvZnJvbnRl
bmQuYyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEv
c3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5jCmluZGV4IDliMGM4
NmEuLmQ3ZmZmODkgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvZnJvbnRlbmQuYworKysgYi9zcmMv
eGVudmJkL2Zyb250ZW5kLmMKQEAgLTI0NCw2ICsyNDQsNyBAQCBGcm9udGVuZFNldERldmljZVVz
YWdlKAogICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUpOwogCiAgICAgVmVyYm9zZSgiVGFy
Z2V0WyV1XSAlcyAlc1xuIiwKKyAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoRnJvbnRl
bmQpLAogICAgICAgICAgICAgVmFsdWUgPyAiQURESU5HIiA6ICJSRU1PVklORyIsCiAgICAgICAg
ICAgICBVc2FnZU5hbWUpOwogfQotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Nn
aS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 25 08:55:49 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Sep 2017 08:55:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwPB6-0005kQ-NK; Mon, 25 Sep 2017 08:55:48 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=434731b58=Paul.Durrant@citrix.com>)
 id 1dwPB5-0005kK-Gu
 for win-pv-devel@lists.xenproject.org; Mon, 25 Sep 2017 08:55:47 +0000
Received: from [193.109.254.147] by server-8.bemta-6.messagelabs.com id
 99/81-17770-294C8C95; Mon, 25 Sep 2017 08:55:46 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQnfSkRO
 RBuu6hC3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxu83V5gKjvJUnH9xgaWBcQNPFyMnh4SAn8Sp
 W2fYQWw2AR2JpUfnM4HYIgIFEt/fz2MGsZkF1CSu7+9iBbGFBTwlHhxYyQJR4yVx+Pw7oF4OI
 NtI4uFfQZAwi4CqxPrnp5hAwrwC7hINn0pBwkICFhKn1rxiBLE5BSwlvk9bBDadUUBW4kvjaq
 hN4hK3nkBcICEgILFkz3lmCFtU4uXjf6wQtoHE1qX7WEDGMwtoSqzfpQ/Rqigxpfsh2CO8AoI
 SJ2c+YZnAKDwLydRZCB2zkHTMQtKxgJFlFaNGcWpRWWqRrpGhXlJRZnpGSW5iZo6uoYGZXm5q
 cXFiempOYlKxXnJ+7iZGYMgzAMEOxj/LAg4xSnIwKYny3uU7ESnEl5SfUpmRWJwRX1Sak1p8i
 FGGg0NJgrfoMFBOsCg1PbUiLTMHGH0waQkOHiURXmmQNG9xQWJucWY6ROoUoyXHsU2X/zBxzL
 h5F0g+uTbvL5MQS15+XqqUOG8VSIMASENGaR7cOFiCuMQoKyXMywh0oBBPQWpRbmYJqvwrRnE
 ORiVh3giQKTyZeSVwW18BHcQEdFDvVLCDShIRUlINjEXbDjg+7K9a0eww89jK0pfaxjva2AT2
 /5vgGbzyKPPmrDATVaHVwsVhRT+mvHlwTmjlismq86LSBdln6RdveVd/QUn8ZumC0jNT/6ma9
 AbEvrzS+uBzsvtLye/cfy+sW8n5geX69QyPR9y7r8Rd8f+y7K7wj8qlwa2s4Z9WxZhe42pyeP
 3r9iIlluKMREMt5qLiRAB03xfmCwMAAA==
X-Env-Sender: prvs=434731b58=Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1506329746!118019566!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14786 invoked from network); 25 Sep 2017 08:55:46 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 25 Sep 2017 08:55:46 -0000
X-IronPort-AV: E=Sophos;i="5.42,435,1500940800"; d="scan'208";a="53399542"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Add missing Verbose() format argument
Thread-Index: AQHTNdqciLaw3ymi6UaqVEHy5Hu+AqLFTFaQ
Date: Mon, 25 Sep 2017 08:55:45 +0000
Message-ID: <74fa783942d84b768be72d551774a127@AMSPEX02CL03.citrite.net>
References: <20170925084447.720-1-owen.smith@citrix.com>
In-Reply-To: <20170925084447.720-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] Add missing Verbose() format argument
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNSBTZXB0ZW1iZXIgMjAxNyAwOTo0
NQ0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSF0gQWRkIG1pc3NpbmcgVmVyYm9zZSgpIGZvcm1hdCBhcmd1bWVudA0KPiANCj4gRnJvbTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiANCj4gU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpBY2tlZC1ieTogUGF1bCBEdXJy
YW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy94ZW52YmQvZnJv
bnRlbmQuYyB8IDEgKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspDQo+IA0KPiBk
aWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9mcm9udGVuZC5jIGIvc3JjL3hlbnZiZC9mcm9udGVuZC5j
DQo+IGluZGV4IDliMGM4NmEuLmQ3ZmZmODkgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW52YmQvZnJv
bnRlbmQuYw0KPiArKysgYi9zcmMveGVudmJkL2Zyb250ZW5kLmMNCj4gQEAgLTI0NCw2ICsyNDQs
NyBAQCBGcm9udGVuZFNldERldmljZVVzYWdlKA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUpOw0KPiANCj4gICAgICBWZXJib3NlKCJUYXJnZXRbJXVdICVzICVzXG4iLA0KPiArICAg
ICAgICAgICAgRnJvbnRlbmRHZXRUYXJnZXRJZChGcm9udGVuZCksDQo+ICAgICAgICAgICAgICBW
YWx1ZSA/ICJBRERJTkciIDogIlJFTU9WSU5HIiwNCj4gICAgICAgICAgICAgIFVzYWdlTmFtZSk7
DQo+ICB9DQo+IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 25 09:58:29 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Sep 2017 09:58:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwQ9j-0001a2-LE; Mon, 25 Sep 2017 09:58:27 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1dwQ9i-0001ZA-Bm
 for win-pv-devel@lists.xenproject.org; Mon, 25 Sep 2017 09:58:26 +0000
Date: Mon, 25 Sep 2017 09:58:23 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <20598616.5.1506333508623.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_4_32269316.1506333503373"
X-Jenkins-Job: XENVBD-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENVBD-master - Build #101 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_4_32269316.1506333503373
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #101.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENVBD-master/101/console to view the results.
------=_Part_4_32269316.1506333503373
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

------=_Part_4_32269316.1506333503373--


From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:50:39 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:50:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqFx-0002K7-8P; Tue, 26 Sep 2017 13:50:37 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqFv-0002Jv-N0
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:50:35 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
 9A/36-02226-A2B5AC95; Tue, 26 Sep 2017 13:50:34 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCIsWRWlGSWpSXmKPExsXitHRDpK569Kl
 Ig2NfRS3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxr05rxkLFghVdN93bmC8ztvFyMkhIeAvMbvn
 NwuIzSYgK/Fx5WdmEFtEQF1i3+etTCA2s4CaxPX9XawgtrCAmcS+GwfAbBYBVYmf008wgti8A
 lYSt+/8YIGYKScxefEloDgHB6eAtcSW+0YgYSGgkgN/XrJA2EoS3xa/YIZoFZQ4OfMJC8QqCY
 mDL14wT2DknYUkNQtJagEj0ypGjeLUorLUIl0jQ72kosz0jJLcxMwcXUMDY73c1OLixPTUnMS
 kYr3k/NxNjMCwqWdgYNzB2LPX7xCjJAeTkiivotypSCG+pPyUyozE4oz4otKc1OJDjDIcHEoS
 vBJRQDnBotT01Iq0zBxgAMOkJTh4lER4jSOB0rzFBYm5xZnpEKlTjMYc75pu/GHi6Lh59w+TE
 Etefl6qlDivPcgkAZDSjNI8uEGwyLrEKCslzMvIwMAgxFOQWpSbWYIq/4pRnINRSZj3L8hCns
 y8Erh9r4BOYQI6pXfqCZBTShIRUlINjF1dIZN/nJBj3NP6ZpWVs9He2bd1CjwWhQjfNj725AH
 3tvN15TnL6rYXfrg09b91e3dIsXnS7J1r1HTWhNvY1SfunDdzK6fPzS2Z5xgX5C6R+BGZevUq
 Z85Jz4r/mkuc822mfzgxU4PFrZg948QRl9sX4wU1Nuj+a59lfd7Z5dj98+43XZ1lpJRYijMSD
 bWYi4oTAXCMZdynAgAA
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1506433829!109040831!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 57728 invoked from network); 26 Sep 2017 13:50:31 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:31 -0000
X-IronPort-AV: E=Sophos;i="5.42,440,1500940800"; d="scan'208";a="441247317"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:13 +0100
Message-ID: <20170926135015.17476-4-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
References: <20170926135015.17476-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/5] Add override for MaxRingPageOrder
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQWxsb3cgYSBXaW5kb3dz
IGFkbWluIHRvIGxpbWl0IHRoZSByaW5nIHBhZ2UgY291bnQgd2l0aG91dAphZmZlY3RpbmcgYW55
IG90aGVyIFZNcyBvbiB0aGUgaG9zdC4gVGhlIG92ZXJyaWRlIGNhbiBiZSB1c2VkCnRvIHJlc3Ry
aWN0IGJsa2JhY2sncyBnZW5lcm91cyAxNiBwYWdlIHJpbmcgdG8gYSBzbWFsbGVyIHZhbHVlLgoK
U2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNy
Yy94ZW52YmQvZHJpdmVyLmMgfCAgMyArKy0KIHNyYy94ZW52YmQvZHJpdmVyLmggfCAgMSArCiBz
cmMveGVudmJkL3JpbmcuYyAgIHwgMTIgKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDEz
IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9k
cml2ZXIuYyBiL3NyYy94ZW52YmQvZHJpdmVyLmMKaW5kZXggZTdhM2QzYS4uNTliMzgwYyAxMDA2
NDQKLS0tIGEvc3JjL3hlbnZiZC9kcml2ZXIuYworKysgYi9zcmMveGVudmJkL2RyaXZlci5jCkBA
IC0yNjYsNyArMjY2LDggQEAgX19Ecml2ZXJJbml0aWFsaXplT3ZlcnJpZGVzKAogICAgICAgICAg
ICAgICB7ICJkaXNjYXJkLWVuYWJsZSIsIEZlYXR1cmVEaXNjYXJkRW5hYmxlIH0sCiAgICAgICAg
ICAgICAgIHsgImRpc2NhcmQtc2VjdXJlIiwgRmVhdHVyZURpc2NhcmRTZWN1cmUgfSwKICAgICAg
ICAgICAgICAgeyAiZGlzY2FyZC1hbGlnbm1lbnQiLCBGZWF0dXJlRGlzY2FyZEFsaWdubWVudCB9
LAotICAgICAgICAgICAgICB7ICJkaXNjYXJkLWdyYW51bGFyaXR5IiwgRmVhdHVyZURpc2NhcmRH
cmFudWxhcml0eSB9CisgICAgICAgICAgICAgIHsgImRpc2NhcmQtZ3JhbnVsYXJpdHkiLCBGZWF0
dXJlRGlzY2FyZEdyYW51bGFyaXR5IH0sCisgICAgICAgICAgICAgIHsgIm1heC1yaW5nLXBhZ2Ut
b3JkZXIiLCBGZWF0dXJlTWF4UmluZ1BhZ2VPcmRlciB9CiAgICAgICAgICAgfTsKIAogICAgIGZv
ciAoSW5kZXggPSAwOyBJbmRleCA8IEFSUkFZU0laRShNYXBwaW5nKTsgSW5kZXgrKykgewpkaWZm
IC0tZ2l0IGEvc3JjL3hlbnZiZC9kcml2ZXIuaCBiL3NyYy94ZW52YmQvZHJpdmVyLmgKaW5kZXgg
OTQwOTY4ZS4uZDk5YzA5YSAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9kcml2ZXIuaAorKysgYi9z
cmMveGVudmJkL2RyaXZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHR5cGVkZWYgZW51bSBfWEVOVkJE
X0ZFQVRVUkUgewogICAgIEZlYXR1cmVEaXNjYXJkU2VjdXJlLAogICAgIEZlYXR1cmVEaXNjYXJk
QWxpZ25tZW50LAogICAgIEZlYXR1cmVEaXNjYXJkR3JhbnVsYXJpdHksCisgICAgRmVhdHVyZU1h
eFJpbmdQYWdlT3JkZXIsCiAKICAgICAvLyBBZGQgYW55IG5ldyBmZWF0dXJlcyBiZWZvcmUgdGhp
cyBlbnVtCiAgICAgTnVtYmVyT2ZGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9yaW5n
LmMgYi9zcmMveGVudmJkL3JpbmcuYwppbmRleCA3N2VlZTU0Li4wMzM5NzViIDEwMDY0NAotLS0g
YS9zcmMveGVudmJkL3JpbmcuYworKysgYi9zcmMveGVudmJkL3JpbmcuYwpAQCAtMTcxMSw5ICsx
NzExLDE3IEBAIFJpbmdDb25uZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4LXJp
bmctcGFnZS1vcmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZCdWZmZXIpOwogICAg
IGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgVUxPTkcgICAgICAgICAgIE1heE9y
ZGVyOworCisgICAgICAgIGlmIChEcml2ZXJHZXRGZWF0dXJlT3ZlcnJpZGUoRmVhdHVyZU1heFJp
bmdQYWdlT3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1heE9y
ZGVyKSkgeworICAgICAgICAgICAgTWF4T3JkZXIgPSBtaW4oTWF4T3JkZXIsIFhFTlZCRF9NQVhf
UklOR19QQUdFX09SREVSKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE1heE9yZGVy
ID0gWEVOVkJEX01BWF9SSU5HX1BBR0VfT1JERVI7CisgICAgICAgIH0KKwogICAgICAgICBSaW5n
LT5PcmRlciA9IHN0cnRvdWwoQnVmZmVyLCBOVUxMLCAxMCk7Ci0gICAgICAgIGlmIChSaW5nLT5P
cmRlciA+IFhFTlZCRF9NQVhfUklOR19QQUdFX09SREVSKQotICAgICAgICAgICAgUmluZy0+T3Jk
ZXIgPSBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUjsKKyAgICAgICAgUmluZy0+T3JkZXIgPSBt
aW4oUmluZy0+T3JkZXIsIE1heE9yZGVyKTsKIAogICAgICAgICBYRU5CVVNfU1RPUkUoRnJlZSwK
ICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5TdG9yZUludGVyZmFjZSwKLS0gCjIuOC4zCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:50:39 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:50:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqFx-0002KG-9Z; Tue, 26 Sep 2017 13:50:37 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqFv-0002Jw-LQ
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:50:35 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
 B1/E6-02225-A2B5AC95; Tue, 26 Sep 2017 13:50:34 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAIsWRWlGSWpSXmKPExsXitHRDpK5G9Kl
 Ig54VXBZ/Fic6MHoc/nCFJYAxijUzLym/IoE14+SSOSwFGz4zVmxbsZW5gfHPOsYuRk4OCQF/
 if1fvrCB2GwCshIfV35mBrFFBNQl9n3eygRiMwuoSVzf38UKYgsLWEtMfDSVBcRmEVCVOLGtD
 8jm4OAVsJLo2RoLMVJOYvLiS4wgYU6g8i33jUDCQkAVB/68ZIGwlSS+LX4BtolXQFDi5MwnLB
 CbJCQOvnjBPIGRdxaS1CwkqQWMTKsYNYpTi8pSi3SNDPWSijLTM0pyEzNzdA0NjPVyU4uLE9N
 TcxKTivWS83M3MQJDp56BgXEHY89ev0OMkhxMSqK8inKnIoX4kvJTKjMSizPii0pzUosPMcpw
 cChJ8EpEAeUEi1LTUyvSMnOAQQyTluDgURLhNY4ESvMWFyTmFmemQ6ROMepydNy8+4dJiCUvP
 y9VSpzXHmSGAEhRRmke3AhYRF1ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMz7F2QVT2ZeCd
 ymV0BHMAEd0Tv1BMgRJYkIKakGRmNb21naHQ8nvW7ap3eeyZfv1+RjSt5rz0z2FZ//6qtw2s8
 v31k0hWf/ufLNdvqBPB6zRxUsLJ9XP35mevdmdMimi51Gmyd3dnQXPOr77HNwBnNh03HWULtL
 z+Y1m0iGxSZrRR/xtzg6p+/x1p2+LFEXj12Iubpk6oVVSYL87pXZsWXilonZokosxRmJhlrMR
 cWJAAAWteujAgAA
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1506433829!109040831!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 57824 invoked from network); 26 Sep 2017 13:50:31 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:31 -0000
X-IronPort-AV: E=Sophos;i="5.42,440,1500940800"; d="scan'208";a="441247318"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:12 +0100
Message-ID: <20170926135015.17476-3-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
References: <20170926135015.17476-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/5] Use CACHE interface for bounce buffers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKV2hlbiB0aGUgaW5jb21t
aW5nIHJlYWQvd3JpdGUgYnVmZmVyIGlzIG5vdCBhbGlnbmVkLCB0aGUgZGF0YSBuZWVkcwpib3Vu
Y2luZyB2aWEgYSBwYWdlLWFsaWduZWQgYnVmZmVyLiBVc2UgdGhlIENBQ0hFIGludGVyZmFjZSB0
byBwcm92aWRlCnRoaXMgYnVmZmVyIGluc3RlYWQgb2YgYSBjdXN0b20gbG9va2FzaWRlIGNvbGxl
Y3Rpb24uIEFsc28gbW92ZXMgdGhlCnN0b3JhZ2UgZm9yIG1hcHBpbmcgdGhlIHNvdXJjZSBidWZm
ZXJzIHRvIHRoZSBib3VuY2UgYnVmZmVyIHN0cnVjdHVyZSwKd2hpY2ggd2lsbCByZWR1Y2UgdGhl
IGFsbG9jYXRpb24gc2l6ZSBvZiB0aGUgc2VnbWVudHMgdXNlZCBvbiB0aGUgZmFzdApwYXRoIChh
bGlnbmVkIGJ1ZmZlcnMpLiBUaGUgSW5kaXJlY3QgcGFnZXMgYXJlIGFsc28gcHJlLWFsbG9jYXRl
ZCBpbiB0aGUKb2JqZWN0IGNvbnN0cnVjdGlvbiwgYW5kIG5vdCBmb3IgZXZlcnkgb2JqZWN0IHJl
dHJpZXZhbCwgYW5kIGxpa2V3aXNlCmluZGlyZWN0IHBhZ2VzIGFyZSBvbmx5IGZyZWVkIG9uIG9i
amVjdCBkZXN0cnVjdGlvbiwgYW5kIG5vdCBmb3IgZXZlcnkKb2JqZWN0IHB1dC4KVGhpcyB3aWxs
IHJlbW92ZSB0aGUgbG9nIHNwYW0gY2F1c2VkIGJ5IHRoZSBjdXN0b20gaW1wbGVtZW50YXRpb24u
CgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQog
c3JjL3hlbnZiZC9hZGFwdGVyLmMgICAgICAgICB8IDEyOSArKysrKysrKysrKystCiBzcmMveGVu
dmJkL2FkYXB0ZXIuaCAgICAgICAgIHwgIDExICsrCiBzcmMveGVudmJkL2J1ZmZlci5jICAgICAg
ICAgIHwgNDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy
Yy94ZW52YmQvYnVmZmVyLmggICAgICAgICAgfCAgODAgLS0tLS0tLS0KIHNyYy94ZW52YmQvZHJp
dmVyLmMgICAgICAgICAgfCAgIDYgLQogc3JjL3hlbnZiZC9yaW5nLmMgICAgICAgICAgICB8ICA5
NyArKysrKystLS0tCiBzcmMveGVudmJkL3NyYmV4dC5oICAgICAgICAgIHwgIDEzICstCiBzcmMv
eGVudmJkL3RhcmdldC5jICAgICAgICAgIHwgICAxIC0KIHZzMjAxNS94ZW52YmQveGVudmJkLnZj
eHByb2ogfCAgIDEgLQogOSBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygrKSwgNTY0IGRl
bGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvYnVmZmVyLmMKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBzcmMveGVudmJkL2J1ZmZlci5oCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZi
ZC9hZGFwdGVyLmMgYi9zcmMveGVudmJkL2FkYXB0ZXIuYwppbmRleCA1OTcyNGJiLi40ZmI3NWI4
IDEwMDY0NAotLS0gYS9zcmMveGVudmJkL2FkYXB0ZXIuYworKysgYi9zcmMveGVudmJkL2FkYXB0
ZXIuYwpAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgInNy
YmV4dC5oIgogI2luY2x1ZGUgInRocmVhZC5oIgotI2luY2x1ZGUgImJ1ZmZlci5oIgogCiAjaW5j
bHVkZSAidXRpbC5oIgogI2luY2x1ZGUgImRlYnVnLmgiCkBAIC04MSw2ICs4MCw3IEBAIHN0cnVj
dCBfWEVOVkJEX0FEQVBURVIgewogICAgIFhFTkJVU19VTlBMVUdfSU5URVJGQUNFICAgICBVbnBs
dWdJbnRlcmZhY2U7CiAgICAgWEVORklMVF9FTVVMQVRFRF9JTlRFUkZBQ0UgIEVtdWxhdGVkSW50
ZXJmYWNlOwogCisgICAgUFhFTkJVU19DQUNIRSAgICAgICAgICAgICAgIEJvdW5jZUNhY2hlOwog
ICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJBQ0sgICAgICBEZWJ1Z0NhbGxiYWNrOwogICAgIFBYRU5C
VVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJhY2s7CiAKQEAgLTkxMCw4ICs5MTAs
NiBAQCBBZGFwdGVyRGVidWdDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgQWRhcHRlci0+QnVp
bGRJbywKICAgICAgICAgICAgICAgICAgQWRhcHRlci0+U3RhcnRJbywKICAgICAgICAgICAgICAg
ICAgQWRhcHRlci0+Q29tcGxldGVkKTsKLQotICAgIEJ1ZmZlckRlYnVnQ2FsbGJhY2soJkFkYXB0
ZXItPkRlYnVnSW50ZXJmYWNlKTsKIH0KIAogc3RhdGljIE5UU1RBVFVTCkBAIC0xMDk3LDYgKzEw
OTUsODkgQEAgQWRhcHRlckRldmljZVBvd2VyVGhyZWFkKAogICAgIHJldHVybiBTVEFUVVNfU1VD
Q0VTUzsKIH0KIAorUFhFTlZCRF9CT1VOQ0UKK0FkYXB0ZXJHZXRCb3VuY2UoCisgICAgSU4gIFBY
RU5WQkRfQURBUFRFUiBBZGFwdGVyCisgICAgKQoreworICAgIHJldHVybiBYRU5CVVNfQ0FDSEUo
R2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgJkFkYXB0ZXItPkNhY2hlSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRlci0+Qm91bmNlQ2FjaGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSk7Cit9CisKK1ZPSUQKK0FkYXB0ZXJQdXRCb3VuY2UoCisgICAg
SU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyLAorICAgIElOICBQWEVOVkJEX0JPVU5DRSAgQm91
bmNlCisgICAgKQoreworICAgIFhFTkJVU19DQUNIRShQdXQsCisgICAgICAgICAgICAgICAgICZB
ZGFwdGVyLT5DYWNoZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgQWRhcHRlci0+Qm91bmNl
Q2FjaGUsCisgICAgICAgICAgICAgICAgIEJvdW5jZSwKKyAgICAgICAgICAgICAgICAgRkFMU0Up
OworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0FkYXB0ZXJCb3VuY2VD
dG9yKAorICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudCwKKyAgICBJTiAgUFZPSUQgICAgICAg
T2JqZWN0CisgICAgKQoreworICAgIFBYRU5WQkRfQk9VTkNFICBCb3VuY2UgPSBPYmplY3Q7Cisg
ICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
QXJndW1lbnQpOworCisgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBCb3VuY2Ut
PkJvdW5jZU1kbCA9IF9fQWxsb2NhdGVQYWdlKCk7CisgICAgaWYgKEJvdW5jZS0+Qm91bmNlTWRs
ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBCb3VuY2UtPkJvdW5jZVB0ciA9
IE1tR2V0U3lzdGVtQWRkcmVzc0Zvck1kbFNhZmUoQm91bmNlLT5Cb3VuY2VNZGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbFBhZ2VQ
cmlvcml0eSk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMToKKyAgICBFcnJv
cigiZmFpbDFcbiIpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19O
T0lOTElORSBWT0lECitBZGFwdGVyQm91bmNlRHRvcigKKyAgICBJTiAgUFZPSUQgICAgICAgQXJn
dW1lbnQsCisgICAgSU4gIFBWT0lEICAgICAgIE9iamVjdAorICAgICkKK3sKKyAgICBQWEVOVkJE
X0JPVU5DRSAgQm91bmNlID0gT2JqZWN0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihB
cmd1bWVudCk7CisKKyAgICBCb3VuY2UtPkJvdW5jZVB0ciA9IE5VTEw7CisKKyAgICBfX0ZyZWVQ
YWdlcyhCb3VuY2UtPkJvdW5jZU1kbCk7CisgICAgQm91bmNlLT5Cb3VuY2VNZGwgPSBOVUxMOwor
fQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRAorQWRhcHRlckFjcXVpcmVMb2NrKAor
ICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudAorICAgICkKK3sKKyAgICBQWEVOVkJEX0FEQVBU
RVIgQWRhcHRlciA9IEFyZ3VtZW50OworICAgIEtlQWNxdWlyZVNwaW5Mb2NrQXREcGNMZXZlbCgm
QWRhcHRlci0+TG9jayk7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECitBZGFw
dGVyUmVsZWFzZUxvY2soCisgICAgSU4gIFBWT0lEICAgICAgIEFyZ3VtZW50CisgICAgKQorewor
ICAgIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyID0gQXJndW1lbnQ7CisgICAgS2VSZWxlYXNlU3Bp
bkxvY2tGcm9tRHBjTGV2ZWwoJkFkYXB0ZXItPkxvY2spOworfQorCiBfX2Rydl9yZXF1aXJlc0lS
UUwoUEFTU0lWRV9MRVZFTCkKIHN0YXRpYyBOVFNUQVRVUwogX19BZGFwdGVyUXVlcnlJbnRlcmZh
Y2UoCkBAIC0xMjU2LDI1ICsxMzM3LDUyIEBAIEFkYXB0ZXJJbml0aWFsaXplKAogICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3RvIGZhaWw4OwogCisgICAgc3RhdHVzID0g
WEVOQlVTX0NBQ0hFKEFjcXVpcmUsICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSk7CisgICAgaWYg
KCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDk7CisKKyAgICBzdGF0dXMg
PSBYRU5CVVNfQ0FDSEUoQ3JlYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmQWRhcHRl
ci0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YmRfYm91bmNl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTlZCRF9CT1VOQ0UpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWRh
cHRlckJvdW5jZUN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXJCb3VuY2VE
dG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBBZGFwdGVyQWNxdWlyZUxvY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXJSZWxlYXNlTG9jaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWRhcHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkFkYXB0ZXIt
PkJvdW5jZUNhY2hlKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290
byBmYWlsMTA7CisKICAgICBzdGF0dXMgPSBUaHJlYWRDcmVhdGUoQWRhcHRlclNjYW5UaHJlYWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZBZGFwdGVyLT5TY2FuVGhyZWFkKTsKICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKLSAgICAgICAgZ290byBmYWlsOTsKKyAgICAgICAgZ290byBmYWlsMTE7CiAKICAgICBzdGF0
dXMgPSBUaHJlYWRDcmVhdGUoQWRhcHRlckRldmljZVBvd2VyVGhyZWFkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBBZGFwdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmQWRhcHRl
ci0+RGV2aWNlUG93ZXJUaHJlYWQpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAg
ICAgICBnb3RvIGZhaWwxMDsKKyAgICAgICAgZ290byBmYWlsMTI7CiAKICAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7CiAKLWZhaWwxMDoKLSAgICBFcnJvcigiZmFpbDEwXG4iKTsKK2ZhaWwxMjoK
KyAgICBFcnJvcigiZmFpbDEyXG4iKTsKICAgICBUaHJlYWRBbGVydChBZGFwdGVyLT5TY2FuVGhy
ZWFkKTsKICAgICBUaHJlYWRKb2luKEFkYXB0ZXItPlNjYW5UaHJlYWQpOwogICAgIEFkYXB0ZXIt
PlNjYW5UaHJlYWQgPSBOVUxMOworZmFpbDExOgorICAgIEVycm9yKCJmYWlsMTFcbiIpOworICAg
IFhFTkJVU19DQUNIRShEZXN0cm95LAorICAgICAgICAgICAgICAgICAmQWRhcHRlci0+Q2FjaGVJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgIEFkYXB0ZXItPkJvdW5jZUNhY2hlKTsKKyAgICBB
ZGFwdGVyLT5Cb3VuY2VDYWNoZSA9IE5VTEw7CitmYWlsMTA6CisgICAgRXJyb3IoImZhaWwxMFxu
Iik7CisgICAgWEVOQlVTX0NBQ0hFKFJlbGVhc2UsICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSk7
CiBmYWlsOToKICAgICBFcnJvcigiZmFpbDlcbiIpOwogICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0
ZXItPkVtdWxhdGVkSW50ZXJmYWNlLApAQCAtMTM1Myw2ICsxNDYxLDEzIEBAIEFkYXB0ZXJUZWFy
ZG93bigKICAgICAgICAgVGFyZ2V0RGVzdHJveShUYXJnZXQpOwogICAgIH0KIAorICAgIFhFTkJV
U19DQUNIRShEZXN0cm95LAorICAgICAgICAgICAgICAgICAmQWRhcHRlci0+Q2FjaGVJbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgIEFkYXB0ZXItPkJvdW5jZUNhY2hlKTsKKyAgICBBZGFwdGVy
LT5Cb3VuY2VDYWNoZSA9IE5VTEw7CisKKyAgICBYRU5CVVNfQ0FDSEUoUmVsZWFzZSwgJkFkYXB0
ZXItPkNhY2hlSW50ZXJmYWNlKTsKKwogICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0ZXItPkVtdWxh
dGVkSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5GSUxUX0VNVUxBVEVE
X0lOVEVSRkFDRSkpOwogCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2FkYXB0ZXIuaCBiL3NyYy94
ZW52YmQvYWRhcHRlci5oCmluZGV4IDI1ZmViYzEuLjM1NDY5OWIgMTAwNjQ0Ci0tLSBhL3NyYy94
ZW52YmQvYWRhcHRlci5oCisrKyBiL3NyYy94ZW52YmQvYWRhcHRlci5oCkBAIC05Myw2ICs5Mywx
NyBAQCBBZGFwdGVyR2V0TmV4dFNHRW50cnkoCiAgICAgT1VUIFBVTE9ORyAgICAgICAgICBMZW5n
dGgKICAgICApOwogCitleHRlcm4gUFhFTlZCRF9CT1VOQ0UKK0FkYXB0ZXJHZXRCb3VuY2UoCisg
ICAgSU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK0Fk
YXB0ZXJQdXRCb3VuY2UoCisgICAgSU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyLAorICAgIElO
ICBQWEVOVkJEX0JPVU5DRSAgQm91bmNlCisgICAgKTsKKwogZXh0ZXJuIE5UU1RBVFVTCiBBZGFw
dGVyRGlzcGF0Y2hQbnAoCiAgICAgSU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyLApkaWZmIC0t
Z2l0IGEvc3JjL3hlbnZiZC9idWZmZXIuYyBiL3NyYy94ZW52YmQvYnVmZmVyLmMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZTc3OTIuLjAwMDAwMDAKLS0tIGEvc3JjL3hlbnZiZC9i
dWZmZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDQyNiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMp
IENpdHJpeCBTeXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICog
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiAKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBE
QU1BR0UuCi0gKi8gCi0KLSNpbmNsdWRlICJidWZmZXIuaCIKLSNpbmNsdWRlICJ0aHJlYWQuaCIK
LSNpbmNsdWRlICJkZWJ1Zy5oIgotI2luY2x1ZGUgImFzc2VydC5oIgotI2luY2x1ZGUgInV0aWwu
aCIKLQotI2RlZmluZSBCVUZGRVJfUE9PTF9UQUcgJ2Z1QlgnCi0KLSNkZWZpbmUgQlVGRkVSX01J
Tl9DT1VOVCAgICAgICAgIDMyCi0KLWV4dGVybiBQSFlTSUNBTF9BRERSRVNTIE1tR2V0UGh5c2lj
YWxBZGRyZXNzKFBWT0lEIEJhc2VBZGRyZXNzKTsKLQotdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9C
VUZGRVIgewotICAgIExJU1RfRU5UUlkgICAgICAgICAgRW50cnk7Ci0gICAgUE1ETCAgICAgICAg
ICAgICAgICBNZGw7Ci0gICAgUFZPSUQgICAgICAgICAgICAgICBWQWRkcjsKLSAgICBQRk5fTlVN
QkVSICAgICAgICAgIFBmbjsKLSAgICBQVk9JRCAgICAgICAgICAgICAgIENvbnRleHQ7Ci19IFhF
TlZCRF9CVUZGRVIsICpQWEVOVkJEX0JVRkZFUjsKLQotdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9C
T1VOQ0VfQlVGRkVSIHsKLSAgICBMSVNUX0VOVFJZICAgICAgICAgIEZyZWVMaXN0OwotICAgIExJ
U1RfRU5UUlkgICAgICAgICAgVXNlZExpc3Q7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBGcmVl
U2l6ZTsKLSAgICBVTE9ORyAgICAgICAgICAgICAgIFVzZWRTaXplOwotICAgIFVMT05HICAgICAg
ICAgICAgICAgRnJlZU1heFNpemU7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBVc2VkTWF4U2l6
ZTsKLSAgICBLU1BJTl9MT0NLICAgICAgICAgIExvY2s7Ci0gICAgUFhFTlZCRF9USFJFQUQgICAg
ICBUaHJlYWQ7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBSZWFwVGhyZWFkQ291bnQ7Ci0gICAg
VUxPTkcgICAgICAgICAgICAgICBSZWFwZWQ7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBBbGxv
Y2F0ZWQ7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICBGcmVlZDsKLX0gWEVOVkJEX0JPVU5DRV9C
VUZGRVIsICpQWEVOVkJEX0JPVU5DRV9CVUZGRVI7Ci0KLXN0YXRpYyBYRU5WQkRfQk9VTkNFX0JV
RkZFUiBfX0J1ZmZlcjsKLQotI2RlZmluZSBUSU1FX1VTKF91cykgICAgICAgICgoX3VzKSAqIDEw
KQotI2RlZmluZSBUSU1FX01TKF9tcykgICAgICAgIChUSU1FX1VTKChfbXMpICogMTAwMCkpCi0j
ZGVmaW5lIFRJTUVfUyhfcykgICAgICAgICAgKFRJTUVfTVMoKF9zKSAqIDEwMDApKQotI2RlZmlu
ZSBUSU1FX1JFTEFUSVZFKF90KSAgICgtKF90KSkKLQotc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IFBYRU5WQkRfQlVGRkVSCi1fX0J1ZmZlckFsbG9jKCkKLXsKLSAgICBQWEVOVkJEX0JVRkZFUiAg
QnVmZmVySWQ7Ci0KLSAgICBCdWZmZXJJZCA9IChQWEVOVkJEX0JVRkZFUilfX0FsbG9jYXRlUG9v
bFdpdGhUYWcoTm9uUGFnZWRQb29sLCBzaXplb2YoWEVOVkJEX0JVRkZFUiksIEJVRkZFUl9QT09M
X1RBRyk7Ci0gICAgaWYgKEJ1ZmZlcklkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDE7Ci0K
LSAgICBSdGxaZXJvTWVtb3J5KEJ1ZmZlcklkLCBzaXplb2YoWEVOVkJEX0JVRkZFUikpOwotICAg
IAotICAgIEJ1ZmZlcklkLT5NZGwgPSBfX0FsbG9jYXRlUGFnZSgpOwotICAgIGlmIChCdWZmZXJJ
ZC0+TWRsID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICBCdWZmZXJJZC0+VkFk
ZHIgPSBNbUdldFN5c3RlbUFkZHJlc3NGb3JNZGxTYWZlKEJ1ZmZlcklkLT5NZGwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxQYWdlUHJp
b3JpdHkpOwotCi0gICAgQnVmZmVySWQtPlBmbiA9IChQRk5fTlVNQkVSKShNbUdldFBoeXNpY2Fs
QWRkcmVzcyhCdWZmZXJJZC0+VkFkZHIpLlF1YWRQYXJ0ID4+IFBBR0VfU0hJRlQpOwotICAgIAot
ICAgICsrX19CdWZmZXIuQWxsb2NhdGVkOwotICAgIHJldHVybiBCdWZmZXJJZDsKLQotZmFpbDI6
Ci0gICAgX19GcmVlUG9vbFdpdGhUYWcoQnVmZmVySWQsIEJVRkZFUl9QT09MX1RBRyk7Ci1mYWls
MToKLSAgICByZXR1cm4gTlVMTDsKLX0KLXN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECi1f
X0J1ZmZlckZyZWUoCi0gICAgSU4gUFhFTlZCRF9CVUZGRVIgICAgICAgICAgIEJ1ZmZlcklkCi0g
ICAgKQotewotICAgIGlmIChCdWZmZXJJZCA9PSBOVUxMKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBfX0ZyZWVQYWdlKEJ1ZmZlcklkLT5NZGwpOwotICAgIF9fRnJlZVBvb2xXaXRoVGFnKChQVk9J
RClCdWZmZXJJZCwgQlVGRkVSX1BPT0xfVEFHKTsKLQotICAgICsrX19CdWZmZXIuRnJlZWQ7Ci19
Ci1zdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgQk9PTEVBTgotX19Jc09uTGlzdCgKLSAgICBJTiAg
UExJU1RfRU5UUlkgICAgICAgICAgICAgTGlzdEhlYWQsCi0gICAgSU4gIFBMSVNUX0VOVFJZICAg
ICAgICAgICAgIExpc3RJdGVtLAotICAgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICBMb2Nr
ZWQKLSAgICApCi17Ci0gICAgS0lSUUwgICAgICAgSXJxbCA9IEtlR2V0Q3VycmVudElycWwoKTsK
LSAgICBQTElTVF9FTlRSWSBFbnRyeTsKLSAgICBCT09MRUFOICAgICBGb3VuZCA9IEZBTFNFOwot
Ci0gICAgaWYgKCFMb2NrZWQpCi0gICAgICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZfX0J1ZmZlci5M
b2NrLCAmSXJxbCk7Ci0KLSAgICBBU1NFUlQzUChMaXN0SGVhZCwgIT0sIE5VTEwpOwotICAgIEFT
U0VSVDNQKExpc3RJdGVtLCAhPSwgTlVMTCk7Ci0gICAgQVNTRVJUM1AoTGlzdEhlYWQtPkZsaW5r
LCAhPSwgTlVMTCk7Ci0gICAgQVNTRVJUM1AoTGlzdEhlYWQsICE9LCBMaXN0SXRlbSk7Ci0gICAg
QVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgRElTUEFUQ0hfTEVWRUwpOwotCi0jcHJh
Z21hIHByZWZhc3Qoc3VwcHJlc3M6NjAxMSkKLSAgICBmb3IgKEVudHJ5ID0gTGlzdEhlYWQtPkZs
aW5rOyBFbnRyeSAhPSBMaXN0SGVhZDsgRW50cnkgPSBFbnRyeS0+RmxpbmspIHsKLSAgICAgICAg
QVNTRVJUM1AoRW50cnksICE9LCBOVUxMKTsKLSAgICAgICAgaWYgKEVudHJ5ID09IExpc3RJdGVt
KSB7Ci0gICAgICAgICAgICBGb3VuZCA9IFRSVUU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmICghTG9ja2VkKQotICAgICAgICBLZVJlbGVhc2VTcGluTG9j
aygmX19CdWZmZXIuTG9jaywgSXJxbCk7Ci0KLSAgICByZXR1cm4gRm91bmQ7Ci19Ci0KLSNpZmRl
ZiBEQkcKLSNkZWZpbmUgSXNPbkxpc3QoYSwgYiwgYykgIF9fSXNPbkxpc3QoYSwgYiwgYykKLSNl
bHNlCi0jZGVmaW5lIElzT25MaXN0KGEsIGIsIGMpICAoVFJVRSkKLSNlbmRpZgotCi1zdGF0aWMg
REVDTFNQRUNfTk9JTkxJTkUgVk9JRAotX19CdWZmZXJQdXNoRnJlZUxpc3QoCi0gICAgSU4gUFhF
TlZCRF9CVUZGRVIgICAgICAgICAgIEJ1ZmZlcklkCi0gICAgKQotewotICAgIEFTU0VSVDNQKEJ1
ZmZlcklkLT5FbnRyeS5GbGluaywgPT0sIE5VTEwpOwotICAgIEFTU0VSVDNQKEJ1ZmZlcklkLT5F
bnRyeS5CbGluaywgPT0sIE5VTEwpOwotCi0gICAgSW5zZXJ0SGVhZExpc3QoJl9fQnVmZmVyLkZy
ZWVMaXN0LCAmQnVmZmVySWQtPkVudHJ5KTsKLSAgICArK19fQnVmZmVyLkZyZWVTaXplOwotICAg
IGlmIChfX0J1ZmZlci5GcmVlU2l6ZSA+IF9fQnVmZmVyLkZyZWVNYXhTaXplKQotICAgICAgICBf
X0J1ZmZlci5GcmVlTWF4U2l6ZSA9IF9fQnVmZmVyLkZyZWVTaXplOwotfQotc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIFBYRU5WQkRfQlVGRkVSCi1fX0J1ZmZlclBvcEZyZWVMaXN0KAotICAgICkK
LXsKLSAgICBQTElTVF9FTlRSWSAgICAgRW50cnk7Ci0KLSAgICBFbnRyeSA9IFJlbW92ZUhlYWRM
aXN0KCZfX0J1ZmZlci5GcmVlTGlzdCk7Ci0gICAgaWYgKEVudHJ5ICYmIEVudHJ5ICE9ICZfX0J1
ZmZlci5GcmVlTGlzdCkgewotICAgICAgICBQWEVOVkJEX0JVRkZFUiBCdWZmZXJJZCA9IENPTlRB
SU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfQlVGRkVSLCBFbnRyeSk7Ci0gICAgICAgIEJ1ZmZl
cklkLT5FbnRyeS5GbGluayA9IE5VTEw7Ci0gICAgICAgIEJ1ZmZlcklkLT5FbnRyeS5CbGluayA9
IE5VTEw7Ci0gICAgICAgIC0tX19CdWZmZXIuRnJlZVNpemU7Ci0gICAgICAgIHJldHVybiBCdWZm
ZXJJZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLXN0YXRpYyBERUNMU1BFQ19OT0lO
TElORSBWT0lECi1fX0J1ZmZlclB1c2hVc2VkTGlzdCgKLSAgICBJTiBQWEVOVkJEX0JVRkZFUiAg
ICAgICAgICAgQnVmZmVySWQKLSAgICApCi17Ci0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5
LkZsaW5rLCA9PSwgTlVMTCk7Ci0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5LkJsaW5rLCA9
PSwgTlVMTCk7Ci0KLSAgICBJbnNlcnRIZWFkTGlzdCgmX19CdWZmZXIuVXNlZExpc3QsICZCdWZm
ZXJJZC0+RW50cnkpOwotICAgICsrX19CdWZmZXIuVXNlZFNpemU7Ci0gICAgaWYgKF9fQnVmZmVy
LlVzZWRTaXplID4gX19CdWZmZXIuVXNlZE1heFNpemUpCi0gICAgICAgIF9fQnVmZmVyLlVzZWRN
YXhTaXplID0gX19CdWZmZXIuVXNlZFNpemU7Ci19Ci1zdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUg
UFhFTlZCRF9CVUZGRVIKLV9fQnVmZmVyUG9wVXNlZExpc3QoCi0gICAgKQotewotICAgIFBMSVNU
X0VOVFJZICAgICBFbnRyeTsKLQotICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJl9fQnVmZmVy
LlVzZWRMaXN0KTsKLSAgICBpZiAoRW50cnkgJiYgRW50cnkgIT0gJl9fQnVmZmVyLlVzZWRMaXN0
KSB7Ci0gICAgICAgIFBYRU5WQkRfQlVGRkVSIEJ1ZmZlcklkID0gQ09OVEFJTklOR19SRUNPUkQo
RW50cnksIFhFTlZCRF9CVUZGRVIsIEVudHJ5KTsKLSAgICAgICAgQnVmZmVySWQtPkVudHJ5LkZs
aW5rID0gTlVMTDsKLSAgICAgICAgQnVmZmVySWQtPkVudHJ5LkJsaW5rID0gTlVMTDsKLSAgICAg
ICAgLS1fX0J1ZmZlci5Vc2VkU2l6ZTsKLSAgICAgICAgcmV0dXJuIEJ1ZmZlcklkOwotICAgIH0K
LQotICAgIHJldHVybiBOVUxMOwotfQotc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQKLV9f
QnVmZmVyUmVtb3ZlVXNlZExpc3QoCi0gICAgSU4gUFhFTlZCRF9CVUZGRVIgICAgICAgICAgIEJ1
ZmZlcklkCi0gICAgKQotewotICAgIEFTU0VSVDNQKEJ1ZmZlcklkLT5FbnRyeS5GbGluaywgIT0s
IE5VTEwpOwotICAgIEFTU0VSVDNQKEJ1ZmZlcklkLT5FbnRyeS5CbGluaywgIT0sIE5VTEwpOwot
ICAgIEFTU0VSVChJc09uTGlzdCgmX19CdWZmZXIuVXNlZExpc3QsICZCdWZmZXJJZC0+RW50cnks
IFRSVUUpKTsKLQotICAgIFJlbW92ZUVudHJ5TGlzdCgmQnVmZmVySWQtPkVudHJ5KTsKLSAgICBC
dWZmZXJJZC0+RW50cnkuRmxpbmsgPSBOVUxMOwotICAgIEJ1ZmZlcklkLT5FbnRyeS5CbGluayA9
IE5VTEw7Ci0gICAgLS1fX0J1ZmZlci5Vc2VkU2l6ZTsKLX0KLXN0YXRpYyBERUNMU1BFQ19OT0lO
TElORSBOVFNUQVRVUwotX19CdWZmZXJSZWFwZXJUaHJlYWQoCi0gICAgSU4gUFhFTlZCRF9USFJF
QUQgICAgICAgICAgIFRocmVhZCwKLSAgICBJTiBQVk9JRCAgICAgICAgICAgICAgICAgICAgQ29u
dGV4dAotICAgICkKLXsKLSAgICBLSVJRTCAgICAgICAgICAgSXJxbDsKLSAgICBQS0VWRU5UICAg
ICAgICAgRXZlbnQ7Ci0gICAgTEFSR0VfSU5URUdFUiAgIFRpbWVvdXQ7Ci0gICAgUFhFTlZCRF9C
VUZGRVIgIEJ1ZmZlcklkOwotCi0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihDb250ZXh0KTsK
LSAgICAKLSAgICBUaW1lb3V0LlF1YWRQYXJ0ID0gVElNRV9SRUxBVElWRShUSU1FX1MoMSkpOyAv
LyAxIFNlY29uZAotICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoVGhyZWFkKTsKLQotICAgIHdo
aWxlIChUUlVFKSB7Ci0gICAgICAgIEtlV2FpdEZvclNpbmdsZU9iamVjdChFdmVudCwgRXhlY3V0
aXZlLCBLZXJuZWxNb2RlLCBGQUxTRSwgJlRpbWVvdXQpOwotICAgICAgICBpZiAoVGhyZWFkSXNB
bGVydGVkKFRocmVhZCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBLZUFjcXVpcmVT
cGluTG9jaygmX19CdWZmZXIuTG9jaywgJklycWwpOwotICAgICAgICBpZiAoX19CdWZmZXIuRnJl
ZVNpemUgPiBCVUZGRVJfTUlOX0NPVU5UKSB7Ci0gICAgICAgICAgICBWZXJib3NlKCJSZWFwaW5n
IEJ1ZmZlcnMgKCVkID4gJWQpXG4iLCBfX0J1ZmZlci5GcmVlU2l6ZSwgQlVGRkVSX01JTl9DT1VO
VCk7Ci0gICAgICAgICAgICArK19fQnVmZmVyLlJlYXBUaHJlYWRDb3VudDsKLSAgICAgICAgfQot
ICAgICAgICB3aGlsZSAoX19CdWZmZXIuRnJlZVNpemUgPiBCVUZGRVJfTUlOX0NPVU5UKSB7Ci0g
ICAgICAgICAgICBCdWZmZXJJZCA9IF9fQnVmZmVyUG9wRnJlZUxpc3QoKTsKLSAgICAgICAgICAg
IGlmIChCdWZmZXJJZCkgewotICAgICAgICAgICAgICAgICsrX19CdWZmZXIuUmVhcGVkOwotICAg
ICAgICAgICAgICAgIF9fQnVmZmVyRnJlZShCdWZmZXJJZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgS2VSZWxlYXNlU3BpbkxvY2soJl9fQnVmZmVyLkxvY2ssIElycWwpOwot
ICAgIH0KLQotICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKLX0KLQotVk9JRAotQnVmZmVySW5p
dGlhbGl6ZSgKLSAgICApCi17Ci0gICAgVUxPTkcgICAgICAgICAgIGk7Ci0gICAgUFhFTlZCRF9C
VUZGRVIgIEJ1ZmZlcklkOwotCi0gICAgUnRsWmVyb01lbW9yeSgmX19CdWZmZXIsIHNpemVvZihY
RU5WQkRfQk9VTkNFX0JVRkZFUikpOwotICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZfX0J1ZmZl
ci5Mb2NrKTsKLSAgICBJbml0aWFsaXplTGlzdEhlYWQoJl9fQnVmZmVyLkZyZWVMaXN0KTsKLSAg
ICBJbml0aWFsaXplTGlzdEhlYWQoJl9fQnVmZmVyLlVzZWRMaXN0KTsKLQotICAgIGZvciAoaSA9
IDA7IGkgPCBCVUZGRVJfTUlOX0NPVU5UOyArK2kpIHsKLSAgICAgICAgQnVmZmVySWQgPSBfX0J1
ZmZlckFsbG9jKCk7Ci0gICAgICAgIGlmIChCdWZmZXJJZCkgewotICAgICAgICAgICAgX19CdWZm
ZXJQdXNoRnJlZUxpc3QoQnVmZmVySWQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKF9f
QnVmZmVyLlRocmVhZCA9PSBOVUxMKSB7Ci0gICAgICAgIChWT0lEKSBUaHJlYWRDcmVhdGUoX19C
dWZmZXJSZWFwZXJUaHJlYWQsIE5VTEwsICZfX0J1ZmZlci5UaHJlYWQpOwotICAgIH0KLX0KLQot
Vk9JRAotQnVmZmVyVGVybWluYXRlKAotICAgICkKLXsKLSAgICBQWEVOVkJEX0JVRkZFUiAgQnVm
ZmVySWQ7Ci0KLSAgICBpZiAoX19CdWZmZXIuVGhyZWFkKSB7Ci0gICAgICAgIFRocmVhZEFsZXJ0
KF9fQnVmZmVyLlRocmVhZCk7Ci0gICAgICAgIFRocmVhZEpvaW4oX19CdWZmZXIuVGhyZWFkKTsK
LSAgICAgICAgX19CdWZmZXIuVGhyZWFkID0gTlVMTDsKLSAgICB9Ci0KLSAgICB3aGlsZSAoKEJ1
ZmZlcklkID0gX19CdWZmZXJQb3BVc2VkTGlzdCgpKSAhPSBOVUxMKSB7Ci0gICAgICAgIFdhcm5p
bmcoIlBvdGVudGlhbGx5IGxlYWtpbmcgYnVmZmVyIEAgMHglcFxuIiwgQnVmZmVySWQtPlZBZGRy
KTsKLSAgICAgICAgX19CdWZmZXJQdXNoRnJlZUxpc3QoQnVmZmVySWQpOwotICAgIH0KLSAgICB3
aGlsZSAoKEJ1ZmZlcklkID0gX19CdWZmZXJQb3BGcmVlTGlzdCgpKSAhPSBOVUxMKSB7Ci0gICAg
ICAgIF9fQnVmZmVyRnJlZShCdWZmZXJJZCk7Ci0gICAgfQotfQotCi1fX2NoZWNrUmV0dXJuCi1C
T09MRUFOCi1CdWZmZXJHZXQoCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgX0NvbnRleHQs
Ci0gICAgX19vdXQgUFZPSUQqICAgICAgICAgICAgX0J1ZmZlcklkLAotICAgIF9fb3V0IFBGTl9O
VU1CRVIqICAgICAgIFBmbgotICAgICkKLXsKLSAgICBQWEVOVkJEX0JVRkZFUiAgQnVmZmVySWQ7
Ci0gICAgS0lSUUwgICAgICAgICAgIElycWw7Ci0gICAgQk9PTEVBTiAgICAgICAgIFJlc3VsdCA9
IEZBTFNFOwotCi0JKl9CdWZmZXJJZCA9IE5VTEw7Ci0JKlBmbiA9IDA7Ci0KLSAgICBLZUFjcXVp
cmVTcGluTG9jaygmX19CdWZmZXIuTG9jaywgJklycWwpOwotICAgIEJ1ZmZlcklkID0gX19CdWZm
ZXJQb3BGcmVlTGlzdCgpOwotICAgIGlmIChCdWZmZXJJZCA9PSBOVUxMKSB7Ci0gICAgICAgIEJ1
ZmZlcklkID0gX19CdWZmZXJBbGxvYygpOwotICAgIH0KLSAgICBpZiAoQnVmZmVySWQpIHsKLSAg
ICAgICAgX19CdWZmZXJQdXNoVXNlZExpc3QoQnVmZmVySWQpOwotCi0gICAgICAgIEJ1ZmZlcklk
LT5Db250ZXh0ID0gX0NvbnRleHQ7Ci0gICAgICAgICpfQnVmZmVySWQgPSBCdWZmZXJJZDsKLSAg
ICAgICAgKlBmbiA9IEJ1ZmZlcklkLT5QZm47IAotICAgICAgICBSZXN1bHQgPSBUUlVFOwotICAg
IH0gCi0gICAgS2VSZWxlYXNlU3BpbkxvY2soJl9fQnVmZmVyLkxvY2ssIElycWwpOwotICAgIAot
ICAgIHJldHVybiBSZXN1bHQ7Ci19Ci0KLVZPSUQKLUJ1ZmZlclB1dCgKLSAgICBfX2luIFBWT0lE
ICAgICAgICAgICAgICBfQnVmZmVySWQKLSAgICApCi17Ci0gICAgS0lSUUwgICAgICAgICAgIEly
cWw7Ci0gICAgUFhFTlZCRF9CVUZGRVIgIEJ1ZmZlcklkID0gKFBYRU5WQkRfQlVGRkVSKV9CdWZm
ZXJJZDsKLQotICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZfX0J1ZmZlci5Mb2NrLCAmSXJxbCk7Ci0g
ICAgX19CdWZmZXJSZW1vdmVVc2VkTGlzdChCdWZmZXJJZCk7Ci0gICAgQnVmZmVySWQtPkNvbnRl
eHQgPSBOVUxMOwotICAgIF9fQnVmZmVyUHVzaEZyZWVMaXN0KEJ1ZmZlcklkKTsKLSAgICBLZVJl
bGVhc2VTcGluTG9jaygmX19CdWZmZXIuTG9jaywgSXJxbCk7Ci19Ci0KLVZPSUQKLUJ1ZmZlckNv
cHlJbigKLSAgICBfX2luIFBWT0lEICAgICAgICAgICAgICBfQnVmZmVySWQsCi0gICAgX19pbiBQ
Vk9JRCAgICAgICAgICAgICAgSW5wdXQsCi0gICAgX19pbiBVTE9ORyAgICAgICAgICAgICAgTGVu
Z3RoCi0gICAgKQotewotICAgIFBYRU5WQkRfQlVGRkVSICBCdWZmZXJJZCA9IChQWEVOVkJEX0JV
RkZFUilfQnVmZmVySWQ7Ci0KLSAgICBBU1NFUlQzUChCdWZmZXJJZCwgIT0sIE5VTEwpOwotICAg
IEFTU0VSVDNQKElucHV0LCAhPSwgTlVMTCk7Ci0gICAgQVNTRVJUM1UoTGVuZ3RoLCA8PSwgUEFH
RV9TSVpFKTsKLQotICAgIEFTU0VSVDNQKEJ1ZmZlcklkLT5WQWRkciwgIT0sIE5VTEwpOwotICAg
IEFTU0VSVChJc09uTGlzdCgmX19CdWZmZXIuVXNlZExpc3QsICZCdWZmZXJJZC0+RW50cnksIEZB
TFNFKSk7Ci0gICAgUnRsQ29weU1lbW9yeShCdWZmZXJJZC0+VkFkZHIsIElucHV0LCBMZW5ndGgp
OwotfQotCi1WT0lECi1CdWZmZXJDb3B5T3V0KAotICAgIF9faW4gUFZPSUQgICAgICAgICAgICAg
IF9CdWZmZXJJZCwKLSAgICBfX2luIFBWT0lEICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgX19p
biBVTE9ORyAgICAgICAgICAgICAgTGVuZ3RoCi0gICAgKQotewotICAgIFBYRU5WQkRfQlVGRkVS
ICBCdWZmZXJJZCA9IChQWEVOVkJEX0JVRkZFUilfQnVmZmVySWQ7Ci0KLSAgICBBU1NFUlQzUChC
dWZmZXJJZCwgIT0sIE5VTEwpOwotICAgIEFTU0VSVDNQKE91dHB1dCwgIT0sIE5VTEwpOwotICAg
IEFTU0VSVDNVKExlbmd0aCwgPD0sIFBBR0VfU0laRSk7Ci0KLSAgICBBU1NFUlQzUChCdWZmZXJJ
ZC0+VkFkZHIsICE9LCBOVUxMKTsKLSAgICBBU1NFUlQoSXNPbkxpc3QoJl9fQnVmZmVyLlVzZWRM
aXN0LCAmQnVmZmVySWQtPkVudHJ5LCBGQUxTRSkpOwotICAgIFJ0bENvcHlNZW1vcnkoT3V0cHV0
LCBCdWZmZXJJZC0+VkFkZHIsIExlbmd0aCk7Ci19Ci0KLVZPSUQgCi1CdWZmZXJEZWJ1Z0NhbGxi
YWNrKAotICAgIF9faW4gUFhFTkJVU19ERUJVR19JTlRFUkZBQ0UgRGVidWdJbnRlcmZhY2UKLSAg
ICApCi17Ci0gICAgUExJU1RfRU5UUlkgRW50cnk7Ci0KLSAgICBYRU5CVVNfREVCVUcoUHJpbnRm
LCBEZWJ1Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIkJVRkZFUjogQWxsb2NhdGVkL0Zy
ZWVkIDogJWQgLyAlZFxuIiwKLSAgICAgICAgICAgICAgICAgX19CdWZmZXIuQWxsb2NhdGVkLCBf
X0J1ZmZlci5GcmVlZCk7Ci0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWdJbnRlcmZhY2Us
Ci0gICAgICAgICAgICAgICAgICJCVUZGRVI6IEZyZWUgKEN1ci9NYXgpICA6ICVkIC8gJWRcbiIs
Ci0gICAgICAgICAgICAgICAgIF9fQnVmZmVyLkZyZWVTaXplLCBfX0J1ZmZlci5GcmVlTWF4U2l6
ZSk7Ci0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWdJbnRlcmZhY2UsCi0gICAgICAgICAg
ICAgICAgICJCVUZGRVI6IFVzZWQgKEN1ci9NYXgpICA6ICVkIC8gJWRcbiIsCi0gICAgICAgICAg
ICAgICAgIF9fQnVmZmVyLlVzZWRTaXplLCBfX0J1ZmZlci5Vc2VkTWF4U2l6ZSk7Ci0KLSAgICBm
b3IgKEVudHJ5ID0gX19CdWZmZXIuVXNlZExpc3QuRmxpbms7IEVudHJ5ICE9ICZfX0J1ZmZlci5V
c2VkTGlzdDsgRW50cnkgPSBFbnRyeS0+RmxpbmspIHsKLSAgICAgICAgUFhFTlZCRF9CVUZGRVIg
QnVmZmVySWQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX0JVRkZFUiwgRW50cnkp
OwotCi0gICAgICAgIFhFTkJVU19ERUJVRyhQcmludGYsIERlYnVnSW50ZXJmYWNlLAotICAgICAg
ICAgICAgICAgICAgICAgIkJVRkZFUjogKFVzZWQpICAgICAgICAgIDogVkFERFI6MHglcCBQRk46
JXAgKFNSQiAweCVwKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklkLT5WQWRkciwg
KHZvaWQqKUJ1ZmZlcklkLT5QZm4sIEJ1ZmZlcklkLT5Db250ZXh0KTsKLSAgICB9Ci0KLSAgICBY
RU5CVVNfREVCVUcoUHJpbnRmLCBEZWJ1Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgIkJV
RkZFUjogUmVhcGVkICAgICAgICAgIDogJWQgLyAlZFxuIiwgCi0gICAgICAgICAgICAgICAgIF9f
QnVmZmVyLlJlYXBlZCwgX19CdWZmZXIuUmVhcFRocmVhZENvdW50KTsKLX0KZGlmZiAtLWdpdCBh
L3NyYy94ZW52YmQvYnVmZmVyLmggYi9zcmMveGVudmJkL2J1ZmZlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZGFjZTgwLi4wMDAwMDAwCi0tLSBhL3NyYy94ZW52YmQvYnVmZmVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIENpdHJp
eCBTeXN0ZW1zIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAotICogd2l0aCBvciB3
aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKLSAqIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKiAKLSAqICogICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAotICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCi0gKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKLSAqICAgICBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCi0gKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKLSAqIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAotICogTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCAKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIAotICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIAotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyAKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCAKLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAotICogU1VDSCBEQU1BR0Uu
Ci0gKi8gCi0KLSNpZm5kZWYgX1hFTlZCRF9CVUZGRVJfSAotI2RlZmluZSBfWEVOVkJEX0JVRkZF
Ul9ICi0KLSNpbmNsdWRlIDx3ZG0uaD4KLSNpbmNsdWRlIDx4ZW52YmQtc3RvcnBvcnQuaD4KLSNp
bmNsdWRlIDxkZWJ1Z19pbnRlcmZhY2UuaD4KLQotZXh0ZXJuIFZPSUQKLUJ1ZmZlckluaXRpYWxp
emUoCi0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLUJ1ZmZlclRlcm1pbmF0ZSgKLSAgICApOwotCi1f
X2NoZWNrUmV0dXJuCi1leHRlcm4gQk9PTEVBTgotQnVmZmVyR2V0KAotICAgIF9faW4gIFBWT0lE
ICAgICAgICAgICAgIENvbnRleHQsCi0gICAgX19vdXQgUFZPSUQqICAgICAgICAgICAgQnVmZmVy
SWQsCi0gICAgX19vdXQgUEZOX05VTUJFUiogICAgICAgUGZuCi0gICAgKTsKLQotZXh0ZXJuIFZP
SUQKLUJ1ZmZlclB1dCgKLSAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBCdWZmZXJJZAotICAg
ICk7Ci0KLWV4dGVybiBWT0lECi1CdWZmZXJDb3B5SW4oCi0gICAgX19pbiAgUFZPSUQgICAgICAg
ICAgICAgQnVmZmVySWQsCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgSW5wdXQsCi0gICAg
X19pbiAgVUxPTkcgICAgICAgICAgICAgTGVuZ3RoCi0gICAgKTsKLQotZXh0ZXJuIFZPSUQKLUJ1
ZmZlckNvcHlPdXQoCi0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVySWQsCi0gICAg
X19pbiAgUFZPSUQgICAgICAgICAgICAgT3V0cHV0LAotICAgIF9faW4gIFVMT05HICAgICAgICAg
ICAgIExlbmd0aAotICAgICk7Ci0KLWV4dGVybiBWT0lEIAotQnVmZmVyRGVidWdDYWxsYmFjaygK
LSAgICBfX2luIFBYRU5CVVNfREVCVUdfSU5URVJGQUNFIERlYnVnSW50ZXJmYWNlCi0gICAgKTsK
LQotICAgCi0jZW5kaWYgLy8gX1hFTlZCRF9CVUZGRVJfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbnZi
ZC9kcml2ZXIuYyBiL3NyYy94ZW52YmQvZHJpdmVyLmMKaW5kZXggNjc2YzQ0NS4uZTdhM2QzYSAx
MDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9kcml2ZXIuYworKysgYi9zcmMveGVudmJkL2RyaXZlci5j
CkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiYWRhcHRlci5oIgogI2luY2x1ZGUgInJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAic3JiZXh0LmgiCi0jaW5jbHVkZSAiYnVmZmVyLmgiCiAKICNpbmNs
dWRlICJ1dGlsLmgiCiAjaW5jbHVkZSAiZGVidWcuaCIKQEAgLTI0MCw4ICsyMzksNiBAQCBEcml2
ZXJVbmxvYWQoCiAgICAgRHJpdmVyLlN0b3JQb3J0RGlzcGF0Y2hQbnAgPSBOVUxMOwogICAgIERy
aXZlci5TdG9yUG9ydERpc3BhdGNoUG93ZXIgPSBOVUxMOwogCi0gICAgQnVmZmVyVGVybWluYXRl
KCk7Ci0KICAgICBSZWdpc3RyeUNsb3NlS2V5KERyaXZlci5QYXJhbWV0ZXJzS2V5KTsKICAgICBE
cml2ZXIuUGFyYW1ldGVyc0tleSA9IE5VTEw7CiAKQEAgLTM2Niw3ICszNjMsNiBAQCBEcml2ZXJF
bnRyeSgKIAogICAgIERyaXZlci5QYXJhbWV0ZXJzS2V5ID0gUGFyYW1ldGVyc0tleTsKICAgICBE
cml2ZXIuQWRhcHRlciA9IE5VTEw7Ci0gICAgQnVmZmVySW5pdGlhbGl6ZSgpOwogCiAgICAgX19E
cml2ZXJJbml0aWFsaXplT3ZlcnJpZGVzKCk7CiAKQEAgLTM5MSw4ICszODcsNiBAQCBEcml2ZXJF
bnRyeSgKIGZhaWw0OgogICAgIEVycm9yKCJmYWlsNFxuIik7CiAKLSAgICBCdWZmZXJUZXJtaW5h
dGUoKTsKLQogICAgIFJlZ2lzdHJ5Q2xvc2VLZXkoRHJpdmVyLlBhcmFtZXRlcnNLZXkpOwogICAg
IERyaXZlci5QYXJhbWV0ZXJzS2V5ID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9y
aW5nLmMgYi9zcmMveGVudmJkL3JpbmcuYwppbmRleCBiYTM4OWQ4Li43N2VlZTU0IDEwMDY0NAot
LS0gYS9zcmMveGVudmJkL3JpbmcuYworKysgYi9zcmMveGVudmJkL3JpbmcuYwpAQCAtNDcsNyAr
NDcsNiBAQAogI2luY2x1ZGUgImRyaXZlci5oIgogI2luY2x1ZGUgImdyYW50ZXIuaCIKICNpbmNs
dWRlICJxdWV1ZS5oIgotI2luY2x1ZGUgImJ1ZmZlci5oIgogCiAjaW5jbHVkZSAidXRpbC5oIgog
I2luY2x1ZGUgImRlYnVnLmgiCkBAIC00NDYsMTUgKzQ0NSwyNSBAQCBSaW5nUHV0U2VnbWVudCgK
ICAgICApCiB7CiAgICAgUFhFTlZCRF9HUkFOVEVSICAgICBHcmFudGVyID0gRnJvbnRlbmRHZXRH
cmFudGVyKFJpbmctPkZyb250ZW5kKTsKKyAgICBQWEVOVkJEX0JPVU5DRSAgICAgIEJvdW5jZSA9
IFNlZ21lbnQtPkJvdW5jZTsKIAogICAgIGlmIChTZWdtZW50LT5HcmFudCkKICAgICAgICAgR3Jh
bnRlclB1dChHcmFudGVyLCBTZWdtZW50LT5HcmFudCk7CiAKLSAgICBpZiAoU2VnbWVudC0+QnVm
ZmVySWQpCi0gICAgICAgIEJ1ZmZlclB1dChTZWdtZW50LT5CdWZmZXJJZCk7CisgICAgaWYgKEJv
dW5jZSkgeworICAgICAgICBpZiAoQm91bmNlLT5Tb3VyY2VQdHIpIHsKKyAgICAgICAgICAgIE1t
VW5tYXBMb2NrZWRQYWdlcyhCb3VuY2UtPlNvdXJjZVB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQm91bmNlLT5Tb3VyY2VNZGwpOworICAgICAgICB9CisgICAgICAgIFJ0bFpl
cm9NZW1vcnkoJkJvdW5jZS0+U291cmNlTWRsLCBzaXplb2YoTURMKSk7CisgICAgICAgIEJvdW5j
ZS0+U291cmNlUHRyID0gTlVMTDsKKyAgICAgICAgQm91bmNlLT5Tb3VyY2VQZm5bMF0gPSAwOwor
ICAgICAgICBCb3VuY2UtPlNvdXJjZVBmblsxXSA9IDA7CiAKLSAgICBpZiAoU2VnbWVudC0+QnVm
ZmVyKQotICAgICAgICBNbVVubWFwTG9ja2VkUGFnZXMoU2VnbWVudC0+QnVmZmVyLCAmU2VnbWVu
dC0+TWRsKTsKKyAgICAgICAgQWRhcHRlclB1dEJvdW5jZShUYXJnZXRHZXRBZGFwdGVyKEZyb250
ZW5kR2V0VGFyZ2V0KFJpbmctPkZyb250ZW5kKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
Qm91bmNlKTsKKyAgICB9CisgICAgU2VnbWVudC0+Qm91bmNlID0gTlVMTDsKIAogICAgIFJ0bFpl
cm9NZW1vcnkoU2VnbWVudCwgc2l6ZW9mKFhFTlZCRF9TRUdNRU5UKSk7CiAgICAgX19Mb29rYXNp
ZGVGcmVlKCZSaW5nLT5TZWdtZW50TGlzdCwgU2VnbWVudCk7CkBAIC02MzYsOSArNjQ1LDEzIEBA
IFJpbmdSZXF1ZXN0Q29weU91dHB1dCgKICAgICAgICAgICAgIEVudHJ5ICE9ICZSZXF1ZXN0LT5T
ZWdtZW50czsKICAgICAgICAgICAgIEVudHJ5ID0gRW50cnktPkZsaW5rKSB7CiAgICAgICAgIFBY
RU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9T
RUdNRU5ULCBFbnRyeSk7CisgICAgICAgIFBYRU5WQkRfQk9VTkNFICBCb3VuY2UgPSBTZWdtZW50
LT5Cb3VuY2U7CiAKLSAgICAgICAgaWYgKFNlZ21lbnQtPkJ1ZmZlcklkKQotICAgICAgICAgICAg
QnVmZmVyQ29weU91dChTZWdtZW50LT5CdWZmZXJJZCwgU2VnbWVudC0+QnVmZmVyLCBTZWdtZW50
LT5MZW5ndGgpOworICAgICAgICBpZiAoQm91bmNlKSB7CisgICAgICAgICAgICBSdGxDb3B5TWVt
b3J5KEJvdW5jZS0+U291cmNlUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuY2Ut
PkJvdW5jZVB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTW1HZXRNZGxCeXRlQ291bnQo
JkJvdW5jZS0+U291cmNlTWRsKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTY2MCw4ICs2
NzMsOSBAQCBSaW5nUHJlcGFyZVNlZ21lbnQoCiAgICAgY29uc3QgVUxPTkcgICAgICAgICBTZWN0
b3JTaXplID0gRnJvbnRlbmRHZXREaXNrSW5mbyhSaW5nLT5Gcm9udGVuZCktPlNlY3RvclNpemU7
CiAgICAgY29uc3QgVUxPTkcgICAgICAgICBTZWN0b3JzUGVyUGFnZSA9IF9fUmluZ1NlY3RvcnNQ
ZXJQYWdlKFNlY3RvclNpemUpOwogICAgIFBYRU5WQkRfVEFSR0VUICAgICAgVGFyZ2V0ID0gRnJv
bnRlbmRHZXRUYXJnZXQoUmluZy0+RnJvbnRlbmQpOworICAgIFBYRU5WQkRfQURBUFRFUiAgICAg
QWRhcHRlciA9IFRhcmdldEdldEFkYXB0ZXIoVGFyZ2V0KTsKIAotICAgIFBmbiA9IEFkYXB0ZXJH
ZXROZXh0U0dFbnRyeShUYXJnZXRHZXRBZGFwdGVyKFRhcmdldCksCisgICAgUGZuID0gQWRhcHRl
ckdldE5leHRTR0VudHJ5KEFkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNyYkV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJk9mZnNldCwKQEAgLTY3MywxMyArNjg3LDExIEBAIFJpbmdQ
cmVwYXJlU2VnbWVudCgKICAgICAgICAgU2VnbWVudC0+Rmlyc3RTZWN0b3IgICAgPSAoVUNIQVIp
KChPZmZzZXQgKyBTZWN0b3JTaXplIC0gMSkgLyBTZWN0b3JTaXplKTsKICAgICAgICAgKlNlY3Rv
cnNOb3cgICAgICAgICAgICAgPSBfX21pbihTZWN0b3JzTGVmdCwgU2VjdG9yc1BlclBhZ2UgLSBT
ZWdtZW50LT5GaXJzdFNlY3Rvcik7CiAgICAgICAgIFNlZ21lbnQtPkxhc3RTZWN0b3IgICAgID0g
KFVDSEFSKShTZWdtZW50LT5GaXJzdFNlY3RvciArICpTZWN0b3JzTm93IC0gMSk7Ci0gICAgICAg
IFNlZ21lbnQtPkJ1ZmZlcklkICAgICAgID0gTlVMTDsgLy8gZ3JhbnRlZCwgZW5zdXJlIGl0cyBu
dWxsCi0gICAgICAgIFNlZ21lbnQtPkJ1ZmZlciAgICAgICAgID0gTlVMTDsgLy8gZ3JhbnRlZCwg
ZW5zdXJlIGl0cyBudWxsCi0gICAgICAgIFNlZ21lbnQtPkxlbmd0aCAgICAgICAgID0gMDsgICAg
Ly8gZ3JhbnRlZCwgZW5zdXJlIGl0cyAwCiAKICAgICAgICAgQVNTRVJUM1UoKExlbmd0aCAvIFNl
Y3RvclNpemUpLCA9PSwgKlNlY3RvcnNOb3cpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFBNREwg
ICAgICAgIE1kbDsKKyAgICAgICAgUFhFTlZCRF9CT1VOQ0UgICAgICBCb3VuY2U7CisgICAgICAg
IFBNREwgICAgICAgICAgICAgICAgTWRsOwogCiAgICAgICAgICsrUmluZy0+U2Vnc0JvdW5jZWQ7
CiAgICAgICAgIC8vIGdldCBmaXJzdCBzZWN0b3IsIGxhc3Qgc2VjdG9yIGFuZCBjb3VudApAQCAt
Njg3LDI5ICs2OTksMzMgQEAgUmluZ1ByZXBhcmVTZWdtZW50KAogICAgICAgICAqU2VjdG9yc05v
dyAgICAgICAgICAgICA9IF9fbWluKFNlY3RvcnNMZWZ0LCBTZWN0b3JzUGVyUGFnZSk7CiAgICAg
ICAgIFNlZ21lbnQtPkxhc3RTZWN0b3IgICAgID0gKFVDSEFSKSgqU2VjdG9yc05vdyAtIDEpOwog
Ci0gICAgICAgIC8vIG1hcCBTR0xpc3QgdG8gVmlydHVhbCBBZGRyZXNzLiBQb3B1bGF0ZXMgU2Vn
bWVudC0+QnVmZmVyIGFuZCBTZWdtZW50LT5MZW5ndGgKKyAgICAgICAgQm91bmNlID0gQWRhcHRl
ckdldEJvdW5jZShBZGFwdGVyKTsKKyAgICAgICAgaWYgKEJvdW5jZSA9PSBOVUxMKQorICAgICAg
ICAgICAgZ290byBmYWlsMTsKKyAgICAgICAgU2VnbWVudC0+Qm91bmNlID0gQm91bmNlOworCiAj
cHJhZ21hIHdhcm5pbmcocHVzaCkKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjI4MTQ1KQotICAg
ICAgICBNZGwgPSAmU2VnbWVudC0+TWRsOwotICAgICAgICBNZGwtPk5leHQgICAgICAgICAgID0g
TlVMTDsKLSAgICAgICAgTWRsLT5TaXplICAgICAgICAgICA9IChTSE9SVCkoc2l6ZW9mKE1ETCkg
KyBzaXplb2YoUEZOX05VTUJFUikpOwotICAgICAgICBNZGwtPk1kbEZsYWdzICAgICAgID0gTURM
X1BBR0VTX0xPQ0tFRDsKLSAgICAgICAgTWRsLT5Qcm9jZXNzICAgICAgICA9IE5VTEw7Ci0gICAg
ICAgIE1kbC0+TWFwcGVkU3lzdGVtVmEgPSBOVUxMOwotICAgICAgICBNZGwtPlN0YXJ0VmEgICAg
ICAgID0gTlVMTDsKLSAgICAgICAgTWRsLT5CeXRlQ291bnQgICAgICA9IExlbmd0aDsKLSAgICAg
ICAgTWRsLT5CeXRlT2Zmc2V0ICAgICA9IE9mZnNldDsKLSAgICAgICAgU2VnbWVudC0+UGZuWzBd
ICAgICA9IFBmbjsKKyAgICAgICAgTWRsID0gJkJvdW5jZS0+U291cmNlTWRsOworICAgICAgICBN
ZGwtPk5leHQgICAgICAgICAgICAgICA9IE5VTEw7CisgICAgICAgIE1kbC0+U2l6ZSAgICAgICAg
ICAgICAgID0gKFNIT1JUKShzaXplb2YoTURMKSArIHNpemVvZihQRk5fTlVNQkVSKSk7CisgICAg
ICAgIE1kbC0+TWRsRmxhZ3MgICAgICAgICAgID0gTURMX1BBR0VTX0xPQ0tFRDsKKyAgICAgICAg
TWRsLT5Qcm9jZXNzICAgICAgICAgICAgPSBOVUxMOworICAgICAgICBNZGwtPk1hcHBlZFN5c3Rl
bVZhICAgICA9IE5VTEw7CisgICAgICAgIE1kbC0+U3RhcnRWYSAgICAgICAgICAgID0gTlVMTDsK
KyAgICAgICAgTWRsLT5CeXRlQ291bnQgICAgICAgICAgPSBMZW5ndGg7CisgICAgICAgIE1kbC0+
Qnl0ZU9mZnNldCAgICAgICAgID0gT2Zmc2V0OworICAgICAgICBCb3VuY2UtPlNvdXJjZVBmblsw
XSAgICA9IFBmbjsKIAogICAgICAgICBpZiAoTGVuZ3RoIDwgKlNlY3RvcnNOb3cgKiBTZWN0b3JT
aXplKSB7Ci0gICAgICAgICAgICBQZm4gPSBBZGFwdGVyR2V0TmV4dFNHRW50cnkoVGFyZ2V0R2V0
QWRhcHRlcihUYXJnZXQpLAorICAgICAgICAgICAgUGZuID0gQWRhcHRlckdldE5leHRTR0VudHJ5
KEFkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JiRXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmT2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMZW5ndGgpOwotICAgICAgICAgICAgTWRsLT5T
aXplICAgICAgICs9IHNpemVvZihQRk5fTlVNQkVSKTsKLSAgICAgICAgICAgIE1kbC0+Qnl0ZUNv
dW50ICA9IE1kbC0+Qnl0ZUNvdW50ICsgTGVuZ3RoOwotICAgICAgICAgICAgU2VnbWVudC0+UGZu
WzFdID0gUGZuOworICAgICAgICAgICAgTWRsLT5TaXplICAgICAgICAgICArPSBzaXplb2YoUEZO
X05VTUJFUik7CisgICAgICAgICAgICBNZGwtPkJ5dGVDb3VudCAgICAgICs9IExlbmd0aDsKKyAg
ICAgICAgICAgIEJvdW5jZS0+U291cmNlUGZuWzFdID0gUGZuOwogICAgICAgICB9CiAjcHJhZ21h
IHdhcm5pbmcocG9wKQogCkBAIC03MTcsMjMgKzczMywyNiBAQCBSaW5nUHJlcGFyZVNlZ21lbnQo
CiAgICAgICAgIEFTU0VSVDNVKE1kbC0+Qnl0ZUNvdW50LCA8PSwgUEFHRV9TSVpFKTsKICAgICAg
ICAgQVNTRVJUM1UoKlNlY3RvcnNOb3csID09LCAoTWRsLT5CeXRlQ291bnQgLyBTZWN0b3JTaXpl
KSk7CiAKLSAgICAgICAgU2VnbWVudC0+TGVuZ3RoID0gX19taW4oTWRsLT5CeXRlQ291bnQsIFBB
R0VfU0laRSk7Ci0gICAgICAgIFNlZ21lbnQtPkJ1ZmZlciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVj
aWZ5Q2FjaGUoTWRsLCBLZXJuZWxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNbUNhY2hlZCwgTlVMTCwgRkFMU0UsIF9fUmluZ1ByaW9yaXR5KFJpbmcpKTsKLSAgICAgICAg
aWYgKCFTZWdtZW50LT5CdWZmZXIpCi0gICAgICAgICAgICBnb3RvIGZhaWwxOwotCi0gICAgICAg
IEFTU0VSVDNQKE1tR2V0TWRsUGZuQXJyYXkoTWRsKVswXSwgPT0sIFNlZ21lbnQtPlBmblswXSk7
Ci0gICAgICAgIEFTU0VSVDNQKE1tR2V0TWRsUGZuQXJyYXkoTWRsKVsxXSwgPT0sIFNlZ21lbnQt
PlBmblsxXSk7Ci0KLSAgICAgICAgLy8gZ2V0IGEgYnVmZmVyCi0gICAgICAgIGlmICghQnVmZmVy
R2V0KFNlZ21lbnQsICZTZWdtZW50LT5CdWZmZXJJZCwgJlBmbikpCisgICAgICAgIEJvdW5jZS0+
U291cmNlUHRyID0gTW1NYXBMb2NrZWRQYWdlc1NwZWNpZnlDYWNoZShNZGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWxNb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTW1DYWNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1JpbmdQcmlvcml0eShSaW5nKSk7CisgICAg
ICAgIGlmIChCb3VuY2UtPlNvdXJjZVB0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWls
MjsKIAorICAgICAgICBBU1NFUlQzUChNbUdldE1kbFBmbkFycmF5KE1kbClbMF0sID09LCBCb3Vu
Y2UtPlNvdXJjZVBmblswXSk7CisgICAgICAgIEFTU0VSVDNQKE1tR2V0TWRsUGZuQXJyYXkoTWRs
KVsxXSwgPT0sIEJvdW5jZS0+U291cmNlUGZuWzFdKTsKKwogICAgICAgICAvLyBjb3B5IGNvbnRl
bnRzIGluCiAgICAgICAgIGlmIChSZWFkT25seSkgeyAvLyBPcGVyYXRpb24gPT0gQkxLSUZfT1Bf
V1JJVEUKLSAgICAgICAgICAgIEJ1ZmZlckNvcHlJbihTZWdtZW50LT5CdWZmZXJJZCwgU2VnbWVu
dC0+QnVmZmVyLCBTZWdtZW50LT5MZW5ndGgpOworICAgICAgICAgICAgUnRsQ29weU1lbW9yeShC
b3VuY2UtPkJvdW5jZVB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQm91bmNlLT5Tb3Vy
Y2VQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1tR2V0TWRsQnl0ZUNvdW50KCZCb3Vu
Y2UtPlNvdXJjZU1kbCkpOwogICAgICAgICB9CisKKyAgICAgICAgUGZuID0gTW1HZXRNZGxQZm5B
cnJheShCb3VuY2UtPkJvdW5jZU1kbClbMF07CiAgICAgfQogCiAgICAgLy8gR3JhbnQgc2VnbWVu
dCdzIHBhZ2UKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvc3JiZXh0LmggYi9zcmMveGVudmJkL3Ny
YmV4dC5oCmluZGV4IGM1ZWNkYjYuLjU0ZWMxMTkgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvc3Ji
ZXh0LmgKKysrIGIvc3JjL3hlbnZiZC9zcmJleHQuaApAQCAtMzcsNiArMzcsMTQgQEAKICNpbmNs
dWRlIDx4ZW4uaD4KICNpbmNsdWRlICJhc3NlcnQuaCIKIAordHlwZWRlZiBzdHJ1Y3QgX1hFTlZC
RF9CT1VOQ0UgeworICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEJvdW5jZVB0cjsKKyAgICBQ
TURMICAgICAgICAgICAgICAgICAgICBCb3VuY2VNZGw7CisgICAgUFZPSUQgICAgICAgICAgICAg
ICAgICAgU291cmNlUHRyOworICAgIE1ETCAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU1kbDsK
KyAgICBQRk5fTlVNQkVSICAgICAgICAgICAgICBTb3VyY2VQZm5bMl07Cit9IFhFTlZCRF9CT1VO
Q0UsICpQWEVOVkJEX0JPVU5DRTsKKwogI3ByYWdtYSBwYWNrKHB1c2gsIDEpCiB0eXBlZGVmIHN0
cnVjdCBfQkxLSUZfU0VHTUVOVCB7CiAgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgR3JhbnRS
ZWY7CkBAIC02MywxMCArNzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX1NFR01FTlQgewog
ICAgIFVDSEFSICAgICAgICAgICAgICAgICAgIEZpcnN0U2VjdG9yOwogICAgIFVDSEFSICAgICAg
ICAgICAgICAgICAgIExhc3RTZWN0b3I7CiAgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgTGVu
Z3RoOwotICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklkOwotICAgIFBWT0lEICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcjsgLy8gVmlydEFkZHIgbWFwcGVkIHRvIFBoeXNBZGRyKHMp
Ci0gICAgTURMICAgICAgICAgICAgICAgICAgICAgTWRsOwotICAgIFBGTl9OVU1CRVIgICAgICAg
ICAgICAgIFBmblsyXTsKKyAgICBQWEVOVkJEX0JPVU5DRSAgICAgICAgICBCb3VuY2U7CiB9IFhF
TlZCRF9TRUdNRU5ULCAqUFhFTlZCRF9TRUdNRU5UOwogCiAvLyBJbnRlcm5hbCByZXF1ZXN0IGNv
bnRleHQKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvdGFyZ2V0LmMgYi9zcmMveGVudmJkL3Rhcmdl
dC5jCmluZGV4IGZkODYyMWQuLjM3YjlhMmYgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvdGFyZ2V0
LmMKKysrIGIvc3JjL3hlbnZiZC90YXJnZXQuYwpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUg
ImZyb250ZW5kLmgiCiAjaW5jbHVkZSAicXVldWUuaCIKICNpbmNsdWRlICJzcmJleHQuaCIKLSNp
bmNsdWRlICJidWZmZXIuaCIKIAogI2luY2x1ZGUgImRlYnVnLmgiCiAjaW5jbHVkZSAiYXNzZXJ0
LmgiCmRpZmYgLS1naXQgYS92czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9qIGIvdnMyMDE1L3hl
bnZiZC94ZW52YmQudmN4cHJvagppbmRleCBkNWI4MTJiLi5hODVlNjViIDEwMDY0NAotLS0gYS92
czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9qCisrKyBiL3ZzMjAxNS94ZW52YmQveGVudmJkLnZj
eHByb2oKQEAgLTY0LDcgKzY0LDYgQEAKICAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iQChJ
bmYtPiclKENvcHlPdXRwdXQpJykiIENvbmRpdGlvbj0iJ0AoSW5mKSchPScnIiAvPgogICA8L0l0
ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3Ny
Yy94ZW52YmQvYnVmZmVyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMv
eGVudmJkL2RyaXZlci5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hl
bnZiZC9yZWdpc3RyeS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hl
bnZiZC9hZGFwdGVyLmMiIC8+Ci0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:50:51 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:50:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqGB-0002Lt-C2; Tue, 26 Sep 2017 13:50:51 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqGA-0002Lc-4X
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:50:50 +0000
Received: from [193.109.254.147] by server-3.bemta-6.messagelabs.com id
 89/F0-03093-93B5AC95; Tue, 26 Sep 2017 13:50:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRWlGSWpSXmKPExsXitHSDva5l9Kl
 Ig/6JzBZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y+K/VawFh3gqFvbdYW9gfMHZxcjJISHgL/Hu
 2kFmEJtNQFbi48rPYLaIgLrEvs9bmUBsZgE1iev7u1hBbGEBTYlvH1ezg9gsAqoSZ04uZgSxe
 QWsJK69fcEOMVNOYvLiS2BxIQEliW+LXzBD1AhKnJz5hAVipoTEwRcvmCcwcs9CkpqFJLWAkW
 kVo0ZxalFZapGuoYleUlFmekZJbmJmjq6hgZlebmpxcWJ6ak5iUrFecn7uJkZgKDAAwQ7G6xs
 DDjFKcjApifIqyp2KFOJLyk+pzEgszogvKs1JLT7EKMPBoSTBGxoFlBMsSk1PrUjLzAEGJUxa
 goNHSYQ3CiTNW1yQmFucmQ6ROsWoy9Fx8+4fJiGWvPy8VClxXnuQIgGQoozSPLgRsAi5xCgrJ
 czLCHSUEE9BalFuZgmq/CtGcQ5GJWFeG5ApPJl5JXCbXgEdwQR0RO/UEyBHlCQipKQaGGOF+n
 oiTyZHzok3vN9i7htW5Xp+5RLGTX5v/mw2ffB3ydSd2R414ZUrr0Q8XHw5vsQldHnBucxZTQf
 XPZhufmtOy9UzFrvUDqe4WHUYT9onHTbteqADT2SR067GMsbfvzu9fgau+X/w/Tu9K67P1q4y
 fuz9jr/YjVfa74fsM5ecyzeOGr/6O1eJpTgj0VCLuag4EQAHoOBuiwIAAA==
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1506433846!109085067!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14119 invoked from network); 26 Sep 2017 13:50:48 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:48 -0000
X-IronPort-AV: E=Sophos;i="5.42,441,1500940800"; d="scan'208";a="449258591"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:10 +0100
Message-ID: <20170926135015.17476-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/5] Ongoing Improvements
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKVGhpcyBzZXJpZXMgY2hh
bmdlcyB0aGUgYmVoYXZpb3VyIG9mIFhlblZiZCB0byBpbXByb3ZlIHRoZQpvdmVyYWxsIGRlc2ln
biBhbmQgaW1wbGVtZW50YXRpb24uCiogVXNlIHRoZSBDQUNIRSBpbnRlcmZhY2UgZm9yIGJvdW5j
ZSBidWZmZXJzLCB3aGljaCByZW1vdmVzIGEKICBsb2cgZW50cnkgd2hpY2ggY2FuIGJlIHRyaWdn
ZXJlZCBldmVyeSAxIHNlY29uZCBpZiB0aGUgdXNlcgogIGJ1ZmZlcnMgZm9yIElPIGFyZSBub3Qg
YWxpZ25lZCB0byBzZWN0b3Igc2l6ZXMuCiogQWRkcyBhIHVzZWZ1bCBvdmVycmlkZSBvbiBtYXgt
cmluZy1wYWdlLW9yZGVyLiBibGtiYWNrIHdpbGwKICBkZWZpbmUgbWF4LXJpbmctcGFnZS1vcmRl
ciB0byB1c2UgMTYgcGFnZXMgZm9yIGEgcmluZywgd2hpY2ggY2FuIGJlCiAgZXhjZXNzaXZlIGZv
ciBtb3N0IHVzZSBjYXNlcy4gVGhlIHhlbnZiZCBmcm9udGVuZCB3aWxsIHVzZSB0aGUKICBtYXhp
bXVtIG51bWJlciBvZiBwYWdlcyBwb3NzaWJsZSBmb3IgdGhlIHJpbmcuCiogVXNlIHRoZSBDQUNI
RSBpbnRlcmZhY2UgaW5zdGVhZCBvZiBsb29rYXNpZGUgbGlzdHMgZm9yIHRoZQogIFJFUVVFU1Qs
IFNFR01FTlQgYW5kIElORElSRUNUIHN0cnVjdHMuIFRoaXMgYWxsb3dzIG9uZSB0aW1lCiAgaW5p
dGlhbGl6YXRpb24vY2xlYW51cCwgd2hpY2ggd2lsbCBwcmV2ZW50IHhlbnZiZCBhbGxvY2F0aW5n
CiAgYSBwYWdlIGV2ZXJ5IHRpbWUgaXQgcmV0cmlldmVzIGEgY2FjaGVkIElORElSRUNULgoKT3dl
biBTbWl0aCAoNSk6CiAgUXVlcnkgZm9yIENBQ0hFIGludGVyZmFjZQogIFVzZSBDQUNIRSBpbnRl
cmZhY2UgZm9yIGJvdW5jZSBidWZmZXJzCiAgQWRkIG92ZXJyaWRlIGZvciBNYXhSaW5nUGFnZU9y
ZGVyCiAgVGlkeSB1cCBzcmJleHQuaAogIFVzZSBDQUNIRSBpbnRlcmZhY2UgZm9yIFJFUVVFU1Rz
LCBTRUdNRU5UcyBhbmQgSU5ESVJFQ1RzCgogc3JjL3hlbnZiZC9hZGFwdGVyLmMgICAgICAgICB8
IDE3NCArKysrKysrKy0KIHNyYy94ZW52YmQvYWRhcHRlci5oICAgICAgICAgfCAgMTMgKwogc3Jj
L3hlbnZiZC9idWZmZXIuYyAgICAgICAgICB8IDQyNiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy
Yy94ZW52YmQvYnVmZmVyLmggICAgICAgICAgfCAgODAgLS0tLQogc3JjL3hlbnZiZC9kcml2ZXIu
YyAgICAgICAgICB8ICAgOSArLQogc3JjL3hlbnZiZC9kcml2ZXIuaCAgICAgICAgICB8ICAgMSAr
CiBzcmMveGVudmJkL3JpbmcuYyAgICAgICAgICAgIHwgODgxICsrKysrKysrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy94ZW52YmQvc3JiZXh0LmggICAgICAgICAgfCAx
MDkgKystLS0tCiBzcmMveGVudmJkL3RhcmdldC5jICAgICAgICAgIHwgICA3ICstCiB2czIwMTUv
eGVudmJkL3hlbnZiZC52Y3hwcm9qIHwgICAxIC0KIDEwIGZpbGVzIGNoYW5nZWQsIDczMyBpbnNl
cnRpb25zKCspLCA5NjggZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZi
ZC9idWZmZXIuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvYnVmZmVyLmgKCi0tIAoy
LjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:50:52 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:50:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqGC-0002Ma-DC; Tue, 26 Sep 2017 13:50:52 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqGB-0002Ll-A2
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:50:51 +0000
Received: from [193.109.254.147] by server-7.bemta-6.messagelabs.com id
 A4/33-03610-A3B5AC95; Tue, 26 Sep 2017 13:50:50 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnkeJIrShJLcpLzFFi42JxWrrBXtcq+lS
 kwfUWDos/ixMdGD0Of7jCEsAYxZqZl5RfkcCasbJ1DWPB0Q7GilO7W5kaGPfFdDFycEgI+Ess
 Wa3RxcjJwSYgK/Fx5WdmEFtEQF1i3+etTCA2s4CaxPX9XawgtrCAr8TSc7/B4iwCqhLda2aCx
 XkFrCRu32kH65UQkJOYvPgSI8h4TgFriS33jUDCQkAlB/68ZIGwlSS+LX7BDNEqKHFy5hMWiF
 USEgdfvGCewMg7C0lqFpLUAkamVYwaxalFZalFuoYmeklFmekZJbmJmTm6hgZmermpxcWJ6ak
 5iUnFesn5uZsYgYHDAAQ7GK9vDDjEKMnBpCTKqyh3KlKILyk/pTIjsTgjvqg0J7X4EKMMB4eS
 BG9oFFBOsCg1PbUiLTMHGMIwaQkOHiUR3iiQNG9xQWJucWY6ROoUoy5Hx827f5iEWPLy81Klx
 HntQYoEQIoySvPgRsDi6RKjrJQwLyPQUUI8BalFuZklqPKvGMU5GJWEeW1ApvBk5pXAbXoFdA
 QT0BG9U0+AHFGSiJCSamBctku0xelle+7yZMZnp5sZKn7FymgyZHgsUhQTu+1j/lf4jnjA/7y
 fppvuvX41aXdlCd8tEbHHL+qu3SyIV27z8eCsOdawdbbqHB7DLs7y55evuvxyOODDonXqVKOG
 Z3Os+JmHydOvVhnvKLrtd7GmUHYjY/LCIx870rZ4uE28vPyAVnFJ1AslluKMREMt5qLiRABwW
 NtWogIAAA==
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1506433846!109085067!2
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14264 invoked from network); 26 Sep 2017 13:50:49 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:49 -0000
X-IronPort-AV: E=Sophos;i="5.42,441,1500940800"; d="scan'208";a="449258595"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:15 +0100
Message-ID: <20170926135015.17476-6-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
References: <20170926135015.17476-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 5/5] Use CACHE interface for REQUESTs,
	SEGMENTs and INDIRECTs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKUmVwbGFjZXMgdGhlIEV4
TG9va2FzaWRlTGlzdCogY2FsbHMgd2l0aCBDQUNIRSBpbnRlcmZhY2UuClRoaXMgYWxsb3dzIHRo
ZSBJTkRJUkVDVCBvYmplY3QgY29uc3RydWN0b3IgdG8gYWxsb2NhdGUgdGhlIGluZGlyZWN0CnBh
Z2UsIGFuZCBub3QgYWxsb2NhdGUgdGhlIGluZGlyZWN0IHBhZ2Ugb24gZXZlcnkgb2JqZWN0IHJl
dHJpZXZhbC4KQWxzbyBkZWZlcnMgdGhlIGluZGlyZWN0IHBhZ2UgZnJlZSB1bnRpbCB0aGUgb2Jq
ZWN0IGlzIGRlc3Ryb3llZCwgYW5kCm5vdCBvbiBldmVyeSBvYmplY3QgcHV0LgoKU2lnbmVkLW9m
Zi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW52YmQv
cmluZy5jIHwgNDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9yaW5nLmMgYi9zcmMveGVudmJkL3Jpbmcu
YwppbmRleCAzNzJmMGQ1Li5jYmI0MDhkIDEwMDY0NAotLS0gYS9zcmMveGVudmJkL3JpbmcuYwor
KysgYi9zcmMveGVudmJkL3JpbmcuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPG50c3Ry
c2FmZS5oPgogCiAjaW5jbHVkZSA8eGVuY2RiLmg+CisjaW5jbHVkZSA8Y2FjaGVfaW50ZXJmYWNl
Lmg+CiAjaW5jbHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8ZXZ0Y2huX2ludGVy
ZmFjZS5oPgogI2luY2x1ZGUgPGRlYnVnX2ludGVyZmFjZS5oPgpAQCAtNTUsMTkgKzU2LDEyIEBA
CiAjZGVmaW5lIFhFTlZCRF9NQVhfUklOR19QQUdFX09SREVSICAoNCkKICNkZWZpbmUgWEVOVkJE
X01BWF9SSU5HX1BBR0VTICAgICAgICgxIDw8IFhFTlZCRF9NQVhfUklOR19QQUdFX09SREVSKQog
Ci10eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0xPT0tBU0lERSB7Ci0gICAgTE9ORyAgICAgICAgICAg
ICAgICAgICAgICAgIFVzZWQ7Ci0gICAgTE9ORyAgICAgICAgICAgICAgICAgICAgICAgIE1heDsK
LSAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgRmFpbGVkOwotICAgIFVMT05HICAgICAg
ICAgICAgICAgICAgICAgICBTaXplOwotICAgIE5QQUdFRF9MT09LQVNJREVfTElTVCAgICAgICBM
aXN0OwotfSBYRU5WQkRfTE9PS0FTSURFLCAqUFhFTlZCRF9MT09LQVNJREU7Ci0KIHN0cnVjdCBf
WEVOVkJEX1JJTkcgewogICAgIFBYRU5WQkRfRlJPTlRFTkQgICAgICAgICAgICAgICAgRnJvbnRl
bmQ7CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWQ7CiAgICAg
Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVkOwogCisgICAgWEVOQlVTX0NB
Q0hFX0lOVEVSRkFDRSAgICAgICAgICBDYWNoZUludGVyZmFjZTsKICAgICBYRU5CVVNfU1RPUkVf
SU5URVJGQUNFICAgICAgICAgIFN0b3JlSW50ZXJmYWNlOwogICAgIFhFTkJVU19FVlRDSE5fSU5U
RVJGQUNFICAgICAgICAgRXZ0Y2huSW50ZXJmYWNlOwogICAgIFhFTkJVU19ERUJVR19JTlRFUkZB
Q0UgICAgICAgICAgRGVidWdJbnRlcmZhY2U7CkBAIC04NSw5ICs3OSw5IEBAIHN0cnVjdCBfWEVO
VkJEX1JJTkcgewogICAgIEtEUEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXJEcGM7
CiAgICAgS1RJTUVSICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lcjsKIAotICAgIFhFTlZC
RF9MT09LQVNJREUgICAgICAgICAgICAgICAgUmVxdWVzdExpc3Q7Ci0gICAgWEVOVkJEX0xPT0tB
U0lERSAgICAgICAgICAgICAgICBTZWdtZW50TGlzdDsKLSAgICBYRU5WQkRfTE9PS0FTSURFICAg
ICAgICAgICAgICAgIEluZGlyZWN0TGlzdDsKKyAgICBQWEVOQlVTX0NBQ0hFICAgICAgICAgICAg
ICAgICAgIFJlcXVlc3RDYWNoZTsKKyAgICBQWEVOQlVTX0NBQ0hFICAgICAgICAgICAgICAgICAg
IFNlZ21lbnRDYWNoZTsKKyAgICBQWEVOQlVTX0NBQ0hFICAgICAgICAgICAgICAgICAgIEluZGly
ZWN0Q2FjaGU7CiAgICAgWEVOVkJEX1FVRVVFICAgICAgICAgICAgICAgICAgICBGcmVzaFNyYnM7
CiAgICAgWEVOVkJEX1FVRVVFICAgICAgICAgICAgICAgICAgICBQcmVwYXJlZFJlcXM7CiAgICAg
WEVOVkJEX1FVRVVFICAgICAgICAgICAgICAgICAgICBTdWJtaXR0ZWRSZXFzOwpAQCAtMTEwLDg2
ICsxMDQsOCBAQCBzdHJ1Y3QgX1hFTlZCRF9SSU5HIHsKIAogI2RlZmluZSBNQVhfTkFNRV9MRU4g
ICAgICAgICAgICAgICAgNjQKICNkZWZpbmUgUklOR19QT09MX1RBRyAgICAgICAgICAgICAgICdn
blJYJwotI2RlZmluZSBSRVFVRVNUX1BPT0xfVEFHICAgICAgICAgICAgJ3FlUlgnCi0jZGVmaW5l
IFNFR01FTlRfUE9PTF9UQUcgICAgICAgICAgICAnZ2VTWCcKLSNkZWZpbmUgSU5ESVJFQ1RfUE9P
TF9UQUcgICAgICAgICAgICdkbklYJwogI2RlZmluZSBYRU5fSU9fUFJPVE9fQUJJICAgICAgICAg
ICAgIng4Nl82NC1hYmkiCiAKLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0xvb2thc2lkZUlu
aXQoCi0gICAgSU4gT1VUICBQWEVOVkJEX0xPT0tBU0lERSAgIExvb2thc2lkZSwKLSAgICBJTiAg
VUxPTkcgICAgICAgICAgICAgICAgICAgU2l6ZSwKLSAgICBJTiAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgVGFnCi0gICAgKQotewotICAgIFJ0bFplcm9NZW1vcnkoTG9va2FzaWRlLCBzaXplb2Yo
WEVOVkJEX0xPT0tBU0lERSkpOwotICAgIExvb2thc2lkZS0+U2l6ZSA9IFNpemU7Ci0gICAgRXhJ
bml0aWFsaXplTlBhZ2VkTG9va2FzaWRlTGlzdCgmTG9va2FzaWRlLT5MaXN0LCBOVUxMLCBOVUxM
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwgVGFnLCAwKTsK
LX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKLV9fTG9va2FzaWRlVGVybSgKLSAgICBJTiAg
UFhFTlZCRF9MT09LQVNJREUgICAgICAgTG9va2FzaWRlCi0gICAgKQotewotICAgIEFTU0VSVDNV
KExvb2thc2lkZS0+VXNlZCwgPT0sIDApOwotICAgIEV4RGVsZXRlTlBhZ2VkTG9va2FzaWRlTGlz
dCgmTG9va2FzaWRlLT5MaXN0KTsKLSAgICBSdGxaZXJvTWVtb3J5KExvb2thc2lkZSwgc2l6ZW9m
KFhFTlZCRF9MT09LQVNJREUpKTsKLX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFBWT0lECi1fX0xv
b2thc2lkZUFsbG9jKAotICAgIElOICBQWEVOVkJEX0xPT0tBU0lERSAgICAgICBMb29rYXNpZGUK
LSAgICApCi17Ci0gICAgTE9ORyAgICBSZXN1bHQ7Ci0gICAgUFZPSUQgICBCdWZmZXI7Ci0KLSAg
ICBCdWZmZXIgPSBFeEFsbG9jYXRlRnJvbU5QYWdlZExvb2thc2lkZUxpc3QoJkxvb2thc2lkZS0+
TGlzdCk7Ci0gICAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICsrTG9va2FzaWRlLT5G
YWlsZWQ7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFJ0bFplcm9NZW1vcnko
QnVmZmVyLCBMb29rYXNpZGUtPlNpemUpOwotICAgIFJlc3VsdCA9IEludGVybG9ja2VkSW5jcmVt
ZW50KCZMb29rYXNpZGUtPlVzZWQpOwotICAgIEFTU0VSVDNTKFJlc3VsdCwgPiwgMCk7Ci0gICAg
aWYgKFJlc3VsdCA+IExvb2thc2lkZS0+TWF4KQotICAgICAgICBMb29rYXNpZGUtPk1heCA9IFJl
c3VsdDsKLQotICAgIHJldHVybiBCdWZmZXI7Ci19Ci0KLXN0YXRpYyBGT1JDRUlOTElORSBWT0lE
Ci1fX0xvb2thc2lkZUZyZWUoCi0gICAgSU4gIFBYRU5WQkRfTE9PS0FTSURFICAgICAgIExvb2th
c2lkZSwKLSAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICAgICAgQnVmZmVyCi0gICAgKQotewot
ICAgIExPTkcgICAgICAgICAgICBSZXN1bHQ7Ci0KLSAgICBFeEZyZWVUb05QYWdlZExvb2thc2lk
ZUxpc3QoJkxvb2thc2lkZS0+TGlzdCwgQnVmZmVyKTsKLSAgICBSZXN1bHQgPSBJbnRlcmxvY2tl
ZERlY3JlbWVudCgmTG9va2FzaWRlLT5Vc2VkKTsKLSAgICBBU1NFUlQzUyhSZXN1bHQsID49LCAw
KTsKLX0KLQotc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKLV9fTG9va2FzaWRlRGVidWcoCi0gICAg
SU4gIFBYRU5WQkRfTE9PS0FTSURFICAgICAgICAgICBMb29rYXNpZGUsCi0gICAgSU4gIFBYRU5C
VVNfREVCVUdfSU5URVJGQUNFICAgICBEZWJ1ZywKLSAgICBJTiAgUENIQVIgICAgICAgICAgICAg
ICAgICAgICAgIE5hbWUKLSAgICApCi17Ci0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWcs
Ci0gICAgICAgICAgICAgICAgICJMT09LQVNJREU6ICVzOiAldSAvICV1ICgldSBmYWlsZWQpXG4i
LAotICAgICAgICAgICAgICAgICBOYW1lLCBMb29rYXNpZGUtPlVzZWQsCi0gICAgICAgICAgICAg
ICAgIExvb2thc2lkZS0+TWF4LCBMb29rYXNpZGUtPkZhaWxlZCk7Ci0KLSAgICBMb29rYXNpZGUt
Pk1heCA9IExvb2thc2lkZS0+VXNlZDsKLSAgICBMb29rYXNpZGUtPkZhaWxlZCA9IDA7Ci19Ci0K
IHN0YXRpYyBGT1JDRUlOTElORSBQVk9JRAogX19SaW5nQWxsb2NhdGUoCiAgICAgSU4gIFVMT05H
ICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgKQEAgLTM0MSwzMiArMjU3LDMwIEBAIFJpbmdH
ZXRJbmRpcmVjdCgKICAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKICAgICBQWEVOVkJE
X0dSQU5URVIgICAgIEdyYW50ZXIgPSBGcm9udGVuZEdldEdyYW50ZXIoUmluZy0+RnJvbnRlbmQp
OwogCi0gICAgSW5kaXJlY3QgPSBfX0xvb2thc2lkZUFsbG9jKCZSaW5nLT5JbmRpcmVjdExpc3Qp
OworICAgIEluZGlyZWN0ID0gWEVOQlVTX0NBQ0hFKEdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmluZy0+SW5kaXJlY3RDYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxT
RSk7CiAgICAgaWYgKEluZGlyZWN0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDE7CiAKLSAg
ICBSdGxaZXJvTWVtb3J5KEluZGlyZWN0LCBzaXplb2YoWEVOVkJEX0lORElSRUNUKSk7Ci0KLSAg
ICBJbmRpcmVjdC0+TWRsID0gX19BbGxvY2F0ZVBhZ2UoKTsKLSAgICBpZiAoSW5kaXJlY3QtPk1k
bCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWwyOwotCi0gICAgSW5kaXJlY3QtPlBhZ2UgPSBN
bUdldFN5c3RlbUFkZHJlc3NGb3JNZGxTYWZlKEluZGlyZWN0LT5NZGwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbFBhZ2VQcmlvcml0eSk7
Ci0KKyAgICBBU1NFUlQzUChJbmRpcmVjdC0+TWRsLCAhPSwgTlVMTCk7CisgICAgQVNTRVJUM1Ao
SW5kaXJlY3QtPlBhZ2UsICE9LCBOVUxMKTsKICAgICBzdGF0dXMgPSBHcmFudGVyR2V0KEdyYW50
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBNbUdldE1kbFBmbkFycmF5KEluZGlyZWN0LT5N
ZGwpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICZJbmRpcmVjdC0+R3JhbnQpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQot
ICAgICAgICBnb3RvIGZhaWwzOworICAgICAgICBnb3RvIGZhaWwyOwogCiAgICAgcmV0dXJuIElu
ZGlyZWN0OwogCi1mYWlsMzoKLSAgICBfX0ZyZWVQYWdlKEluZGlyZWN0LT5NZGwpOwogZmFpbDI6
Ci0gICAgX19Mb29rYXNpZGVGcmVlKCZSaW5nLT5JbmRpcmVjdExpc3QsIEluZGlyZWN0KTsKKyAg
ICBYRU5CVVNfQ0FDSEUoUHV0LAorICAgICAgICAgICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgIFJpbmctPkluZGlyZWN0Q2FjaGUsCisgICAgICAgICAgICAg
ICAgIEluZGlyZWN0LAorICAgICAgICAgICAgICAgICBGQUxTRSk7CiBmYWlsMToKICAgICByZXR1
cm4gTlVMTDsKIH0KQEAgLTM4MSwxMSArMjk1LDE1IEBAIFJpbmdQdXRJbmRpcmVjdCgKIAogICAg
IGlmIChJbmRpcmVjdC0+R3JhbnQpCiAgICAgICAgIEdyYW50ZXJQdXQoR3JhbnRlciwgSW5kaXJl
Y3QtPkdyYW50KTsKLSAgICBpZiAoSW5kaXJlY3QtPlBhZ2UpCi0gICAgICAgIF9fRnJlZVBhZ2Uo
SW5kaXJlY3QtPk1kbCk7CisgICAgSW5kaXJlY3QtPkdyYW50ID0gTlVMTDsKIAotICAgIFJ0bFpl
cm9NZW1vcnkoSW5kaXJlY3QsIHNpemVvZihYRU5WQkRfSU5ESVJFQ1QpKTsKLSAgICBfX0xvb2th
c2lkZUZyZWUoJlJpbmctPkluZGlyZWN0TGlzdCwgSW5kaXJlY3QpOworICAgIFJ0bFplcm9NZW1v
cnkoJkluZGlyZWN0LT5MaXN0RW50cnksIHNpemVvZihMSVNUX0VOVFJZKSk7CisKKyAgICBYRU5C
VVNfQ0FDSEUoUHV0LAorICAgICAgICAgICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgIFJpbmctPkluZGlyZWN0Q2FjaGUsCisgICAgICAgICAgICAgICAgIElu
ZGlyZWN0LAorICAgICAgICAgICAgICAgICBGQUxTRSk7CiB9CiAKIHN0YXRpYyBQWEVOVkJEX1NF
R01FTlQKQEAgLTM5MywxNyArMzExLDEwIEBAIFJpbmdHZXRTZWdtZW50KAogICAgIElOICBQWEVO
VkJEX1JJTkcgICAgUmluZwogICAgICkKIHsKLSAgICBQWEVOVkJEX1NFR01FTlQgICAgIFNlZ21l
bnQ7Ci0KLSAgICBTZWdtZW50ID0gX19Mb29rYXNpZGVBbGxvYygmUmluZy0+U2VnbWVudExpc3Qp
OwotICAgIGlmIChTZWdtZW50ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDE7Ci0KLSAgICBS
dGxaZXJvTWVtb3J5KFNlZ21lbnQsIHNpemVvZihYRU5WQkRfU0VHTUVOVCkpOwotICAgIHJldHVy
biBTZWdtZW50OwotCi1mYWlsMToKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gWEVOQlVT
X0NBQ0hFKEdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5DYWNoZUludGVyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJpbmctPlNlZ21lbnRDYWNoZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEZBTFNFKTsKIH0KIAogc3RhdGljIFZPSUQKQEAgLTQxNyw2ICszMjgs
NyBAQCBSaW5nUHV0U2VnbWVudCgKIAogICAgIGlmIChTZWdtZW50LT5HcmFudCkKICAgICAgICAg
R3JhbnRlclB1dChHcmFudGVyLCBTZWdtZW50LT5HcmFudCk7CisgICAgU2VnbWVudC0+R3JhbnQg
PSBOVUxMOwogCiAgICAgaWYgKEJvdW5jZSkgewogICAgICAgICBpZiAoQm91bmNlLT5Tb3VyY2VQ
dHIpIHsKQEAgLTQzMyw4ICszNDUsMTUgQEAgUmluZ1B1dFNlZ21lbnQoCiAgICAgfQogICAgIFNl
Z21lbnQtPkJvdW5jZSA9IE5VTEw7CiAKLSAgICBSdGxaZXJvTWVtb3J5KFNlZ21lbnQsIHNpemVv
ZihYRU5WQkRfU0VHTUVOVCkpOwotICAgIF9fTG9va2FzaWRlRnJlZSgmUmluZy0+U2VnbWVudExp
c3QsIFNlZ21lbnQpOworICAgIFNlZ21lbnQtPkZpcnN0U2VjdG9yID0gMDsKKyAgICBTZWdtZW50
LT5MYXN0U2VjdG9yID0gMDsKKyAgICBSdGxaZXJvTWVtb3J5KCZTZWdtZW50LT5MaXN0RW50cnks
IHNpemVvZihMSVNUX0VOVFJZKSk7CisKKyAgICBYRU5CVVNfQ0FDSEUoUHV0LAorICAgICAgICAg
ICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgIFJpbmctPlNl
Z21lbnRDYWNoZSwKKyAgICAgICAgICAgICAgICAgU2VnbWVudCwKKyAgICAgICAgICAgICAgICAg
RkFMU0UpOwogfQogCiBzdGF0aWMgUFhFTlZCRF9SRVFVRVNUCkBAIC00NDIsMjAgKzM2MSwxMCBA
QCBSaW5nR2V0UmVxdWVzdCgKICAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcKICAgICApCiB7
Ci0gICAgUFhFTlZCRF9SRVFVRVNUICAgICBSZXF1ZXN0OwotCi0gICAgUmVxdWVzdCA9IF9fTG9v
a2FzaWRlQWxsb2MoJlJpbmctPlJlcXVlc3RMaXN0KTsKLSAgICBpZiAoUmVxdWVzdCA9PSBOVUxM
KQotICAgICAgICBnb3RvIGZhaWwxOwotCi0gICAgUnRsWmVyb01lbW9yeShSZXF1ZXN0LCBzaXpl
b2YoWEVOVkJEX1JFUVVFU1QpKTsKLSAgICBJbml0aWFsaXplTGlzdEhlYWQoJlJlcXVlc3QtPlNl
Z21lbnRzKTsKLSAgICBJbml0aWFsaXplTGlzdEhlYWQoJlJlcXVlc3QtPkluZGlyZWN0cyk7Ci0K
LSAgICByZXR1cm4gUmVxdWVzdDsKLQotZmFpbDE6Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0
dXJuIFhFTkJVU19DQUNIRShHZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+Q2Fj
aGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5SZXF1ZXN0Q2FjaGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7CiB9CiAKIHN0YXRpYyBWT0lECkBAIC00
ODYsOCArMzk1LDE5IEBAIFJpbmdQdXRSZXF1ZXN0KAogICAgICAgICBSaW5nUHV0SW5kaXJlY3Qo
UmluZywgSW5kaXJlY3QpOwogICAgIH0KIAotICAgIFJ0bFplcm9NZW1vcnkoUmVxdWVzdCwgc2l6
ZW9mKFhFTlZCRF9SRVFVRVNUKSk7Ci0gICAgX19Mb29rYXNpZGVGcmVlKCZSaW5nLT5SZXF1ZXN0
TGlzdCwgUmVxdWVzdCk7CisgICAgUmVxdWVzdC0+U3JiRXh0ID0gTlVMTDsKKyAgICBSZXF1ZXN0
LT5PcGVyYXRpb24gPSAwOworICAgIFJlcXVlc3QtPkZsYWdzID0gMDsKKyAgICBSZXF1ZXN0LT5O
clNlZ21lbnRzID0gMDsKKyAgICBSZXF1ZXN0LT5GaXJzdFNlY3RvciA9IDA7CisgICAgUmVxdWVz
dC0+TnJTZWN0b3JzID0gMDsKKyAgICBSdGxaZXJvTWVtb3J5KCZSZXF1ZXN0LT5MaXN0RW50cnks
IHNpemVvZihMSVNUX0VOVFJZKSk7CisKKyAgICBYRU5CVVNfQ0FDSEUoUHV0LAorICAgICAgICAg
ICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgIFJpbmctPlJl
cXVlc3RDYWNoZSwKKyAgICAgICAgICAgICAgICAgUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
RkFMU0UpOwogfQogCiBzdGF0aWMgRk9SQ0VJTkxJTkUgUFhFTlZCRF9SRVFVRVNUCkBAIC0xNTYz
LDE2ICsxNDgzLDYgQEAgUmluZ0RlYnVnQ2FsbGJhY2soCiAgICAgICAgICAgICAgICAgIFJpbmct
PlNlZ3NHcmFudGVkLAogICAgICAgICAgICAgICAgICBSaW5nLT5TZWdzQm91bmNlZCk7CiAKLSAg
ICBfX0xvb2thc2lkZURlYnVnKCZSaW5nLT5SZXF1ZXN0TGlzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICJSRVFVRVNU
cyIpOwotICAgIF9fTG9va2FzaWRlRGVidWcoJlJpbmctPlNlZ21lbnRMaXN0LAotICAgICAgICAg
ICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAg
IlNFR01FTlRzIik7Ci0gICAgX19Mb29rYXNpZGVEZWJ1ZygmUmluZy0+SW5kaXJlY3RMaXN0LAot
ICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50ZXJmYWNlLAotICAgICAgICAgICAg
ICAgICAgICAgIklORElSRUNUcyIpOwotCiAgICAgUXVldWVEZWJ1Z0NhbGxiYWNrKCZSaW5nLT5G
cmVzaFNyYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICJGcmVzaCAgICAiLAogICAgICAgICAg
ICAgICAgICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UpOwpAQCAtMTU4NywxMiArMTQ5Nywx
MjEgQEAgUmluZ0RlYnVnQ2FsbGJhY2soCiAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5E
ZWJ1Z0ludGVyZmFjZSk7CiB9CiAKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECitSaW5n
QWNxdWlyZUxvY2soCisgICAgSU4gIFBWT0lEICAgICAgIEFyZ3VtZW50CisgICAgKQoreworICAg
IFBYRU5WQkRfUklORyAgICBSaW5nID0gQXJndW1lbnQ7CisgICAgS2VBY3F1aXJlU3BpbkxvY2tB
dERwY0xldmVsKCZSaW5nLT5Mb2NrKTsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZP
SUQKK1JpbmdSZWxlYXNlTG9jaygKKyAgICBJTiAgUFZPSUQgICAgICAgQXJndW1lbnQKKyAgICAp
Cit7CisgICAgUFhFTlZCRF9SSU5HICAgIFJpbmcgPSBBcmd1bWVudDsKKyAgICBLZVJlbGVhc2VT
cGluTG9ja0Zyb21EcGNMZXZlbCgmUmluZy0+TG9jayk7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19O
T0lOTElORSBOVFNUQVRVUworUmluZ1JlcXVlc3RDdG9yKAorICAgIElOICBQVk9JRCAgICAgICBB
cmd1bWVudCwKKyAgICBJTiAgUFZPSUQgICAgICAgT2JqZWN0CisgICAgKQoreworICAgIFBYRU5W
QkRfUkVRVUVTVCBSZXF1ZXN0ID0gT2JqZWN0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRF
UihBcmd1bWVudCk7CisKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJlJlcXVlc3QtPlNlZ21lbnRz
KTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJlJlcXVlc3QtPkluZGlyZWN0cyk7CisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRAor
UmluZ1JlcXVlc3REdG9yKAorICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudCwKKyAgICBJTiAg
UFZPSUQgICAgICAgT2JqZWN0CisgICAgKQoreworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
QXJndW1lbnQpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoT2JqZWN0KTsKK30KKworc3Rh
dGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitSaW5nU2VnbWVudEN0b3IoCisgICAgSU4g
IFBWT0lEICAgICAgIEFyZ3VtZW50LAorICAgIElOICBQVk9JRCAgICAgICBPYmplY3QKKyAgICAp
Cit7CisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihBcmd1bWVudCk7CisgICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihPYmplY3QpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKwor
c3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQKK1JpbmdTZWdtZW50RHRvcigKKyAgICBJTiAg
UFZPSUQgICAgICAgQXJndW1lbnQsCisgICAgSU4gIFBWT0lEICAgICAgIE9iamVjdAorICAgICkK
K3sKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEFyZ3VtZW50KTsKKyAgICBVTlJFRkVSRU5D
RURfUEFSQU1FVEVSKE9iamVjdCk7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNU
QVRVUworUmluZ0luZGlyZWN0Q3RvcigKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIEFyZ3VtZW50
LAorICAgIElOICBQVk9JRCAgICAgICAgICAgT2JqZWN0CisgICAgKQoreworICAgIFBYRU5WQkRf
SU5ESVJFQ1QgICAgSW5kaXJlY3QgPSBPYmplY3Q7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBz
dGF0dXM7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEFyZ3VtZW50KTsKKworICAgIHN0
YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAgSW5kaXJlY3QtPk1kbCA9IF9fQWxsb2NhdGVQ
YWdlKCk7CisgICAgaWYgKEluZGlyZWN0LT5NZGwgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWls
MTsKKworICAgIEluZGlyZWN0LT5QYWdlID0gTW1HZXRTeXN0ZW1BZGRyZXNzRm9yTWRsU2FmZShJ
bmRpcmVjdC0+TWRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb3JtYWxQYWdlUHJpb3JpdHkpOworICAgIEFTU0VSVChJbmRpcmVjdC0+UGFnZSk7
CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWls
MSAlMDh4XG4iLCBzdGF0dXMpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBERUNM
U1BFQ19OT0lOTElORSBWT0lECitSaW5nSW5kaXJlY3REdG9yKAorICAgIElOICBQVk9JRCAgICAg
ICBBcmd1bWVudCwKKyAgICBJTiAgUFZPSUQgICAgICAgT2JqZWN0CisgICAgKQoreworICAgIFBY
RU5WQkRfSU5ESVJFQ1QgICAgSW5kaXJlY3QgPSBPYmplY3Q7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKEFyZ3VtZW50KTsKKworICAgIF9fRnJlZVBhZ2VzKEluZGlyZWN0LT5NZGwpOwor
ICAgIEluZGlyZWN0LT5QYWdlID0gTlVMTDsKKyAgICBJbmRpcmVjdC0+TWRsID0gTlVMTDsKK30K
KwogTlRTVEFUVVMKIFJpbmdDcmVhdGUoCiAgICAgSU4gIFBYRU5WQkRfRlJPTlRFTkQgICAgRnJv
bnRlbmQsCiAgICAgT1VUIFBYRU5WQkRfUklORyogICAgICAgUmluZwogICAgICkKIHsKKyAgICBQ
WEVOVkJEX1RBUkdFVCAgICAgICAgICBUYXJnZXQgPSBGcm9udGVuZEdldFRhcmdldChGcm9udGVu
ZCk7CisgICAgUFhFTlZCRF9BREFQVEVSICAgICAgICAgQWRhcHRlciA9IFRhcmdldEdldEFkYXB0
ZXIoVGFyZ2V0KTsKKyAgICBDSEFSICAgICAgICAgICAgICAgICAgICBOYW1lW01BWF9OQU1FX0xF
Tl07CiAgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOwogCiAgICAgKlJpbmcgPSBf
X1JpbmdBbGxvY2F0ZShzaXplb2YoWEVOVkJEX1JJTkcpKTsKQEAgLTE2MTEsMTIgKzE2MzAsMTIw
IEBAIFJpbmdDcmVhdGUoCiAgICAgUXVldWVJbml0KCYoKlJpbmcpLT5QcmVwYXJlZFJlcXMpOwog
ICAgIFF1ZXVlSW5pdCgmKCpSaW5nKS0+U3VibWl0dGVkUmVxcyk7CiAgICAgUXVldWVJbml0KCYo
KlJpbmcpLT5TaHV0ZG93blNyYnMpOwotICAgIF9fTG9va2FzaWRlSW5pdCgmKCpSaW5nKS0+UmVx
dWVzdExpc3QsIHNpemVvZihYRU5WQkRfUkVRVUVTVCksIFJFUVVFU1RfUE9PTF9UQUcpOwotICAg
IF9fTG9va2FzaWRlSW5pdCgmKCpSaW5nKS0+U2VnbWVudExpc3QsIHNpemVvZihYRU5WQkRfU0VH
TUVOVCksIFNFR01FTlRfUE9PTF9UQUcpOwotICAgIF9fTG9va2FzaWRlSW5pdCgmKCpSaW5nKS0+
SW5kaXJlY3RMaXN0LCBzaXplb2YoWEVOVkJEX0lORElSRUNUKSwgSU5ESVJFQ1RfUE9PTF9UQUcp
OworCisgICAgQWRhcHRlckdldENhY2hlSW50ZXJmYWNlKEFkYXB0ZXIsICYoKlJpbmcpLT5DYWNo
ZUludGVyZmFjZSk7CisKKyAgICBzdGF0dXMgPSBYRU5CVVNfQ0FDSEUoQWNxdWlyZSwgJigqUmlu
ZyktPkNhY2hlSW50ZXJmYWNlKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAg
ICAgZ290byBmYWlsMjsKKworICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRmQShOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoTmFtZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ2YmRfJXVfcmVxIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRnJvbnRlbmRHZXRUYXJnZXRJZChGcm9udGVuZCkpOworICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgc3RhdHVzID0gWEVO
QlVTX0NBQ0hFKENyZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJigqUmluZyktPkNh
Y2hlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplb2YoWEVOVkJEX1JFUVVFU1QpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ1JlcXVlc3RDdG9y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nUmVxdWVzdER0b3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJpbmdBY3F1aXJlTG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmluZ1JlbGVhc2VMb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAqUmluZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJigqUmluZyktPlJlcXVlc3RDYWNoZSk7CisgICAgaWYg
KCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICBzdGF0dXMg
PSBSdGxTdHJpbmdDYlByaW50ZkEoTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKE5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmJkXyV1
X3NlZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0
SWQoRnJvbnRlbmQpKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290
byBmYWlsNTsKKworICAgIHN0YXR1cyA9IFhFTkJVU19DQUNIRShDcmVhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICYoKlJpbmcpLT5DYWNoZUludGVyZmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTlZC
RF9TRUdNRU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJpbmdTZWdtZW50Q3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
UmluZ1NlZ21lbnREdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQWNxdWlyZUxv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdSZWxlYXNlTG9jaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKlJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICYoKlJp
bmcpLT5TZWdtZW50Q2FjaGUpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICBnb3RvIGZhaWw2OworCisgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZBKE5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihOYW1lKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInZiZF8ldV9pbmQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcm9udGVuZEdldFRhcmdldElkKEZyb250ZW5kKSk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDc7CisKKyAgICBzdGF0dXMgPSBYRU5C
VVNfQ0FDSEUoQ3JlYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmKCpSaW5nKS0+Q2Fj
aGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVvZihYRU5WQkRfSU5ESVJFQ1QpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nSW5kaXJlY3RDdG9y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nSW5kaXJlY3REdG9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBSaW5nQWNxdWlyZUxvY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJpbmdSZWxlYXNlTG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKlJpbmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICYoKlJpbmcpLT5JbmRpcmVjdENhY2hlKTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsODsKIAogICAgIHJldHVy
biBTVEFUVVNfU1VDQ0VTUzsKIAorZmFpbDg6CisgICAgRXJyb3IoImZhaWw4XG4iKTsKK2ZhaWw3
OgorICAgIEVycm9yKCJmYWlsN1xuIik7CisgICAgWEVOQlVTX0NBQ0hFKERlc3Ryb3ksCisgICAg
ICAgICAgICAgICAgICYoKlJpbmcpLT5DYWNoZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
KCpSaW5nKS0+U2VnbWVudENhY2hlKTsKKyAgICAoKlJpbmcpLT5TZWdtZW50Q2FjaGUgPSBOVUxM
OworZmFpbDY6CisgICAgRXJyb3IoImZhaWw2XG4iKTsKK2ZhaWw1OgorICAgIEVycm9yKCJmYWls
NVxuIik7CisgICAgWEVOQlVTX0NBQ0hFKERlc3Ryb3ksCisgICAgICAgICAgICAgICAgICYoKlJp
bmcpLT5DYWNoZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgKCpSaW5nKS0+UmVxdWVzdENh
Y2hlKTsKKyAgICAoKlJpbmcpLT5SZXF1ZXN0Q2FjaGUgPSBOVUxMOworZmFpbDQ6CisgICAgRXJy
b3IoImZhaWw0XG4iKTsKK2ZhaWwzOgorICAgIEVycm9yKCJmYWlsM1xuIik7CisgICAgWEVOQlVT
X0NBQ0hFKFJlbGVhc2UsCisgICAgICAgICAgICAgICAgICYoKlJpbmcpLT5DYWNoZUludGVyZmFj
ZSk7CitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgUnRsWmVyb01lbW9yeSgm
KCpSaW5nKS0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YgKFhFTkJV
U19DQUNIRV9JTlRFUkZBQ0UpKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPkZyZXNo
U3Jicywgc2l6ZW9mKFhFTlZCRF9RVUVVRSkpOworICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZykt
PlByZXBhcmVkUmVxcywgc2l6ZW9mKFhFTlZCRF9RVUVVRSkpOworICAgIFJ0bFplcm9NZW1vcnko
JigqUmluZyktPlN1Ym1pdHRlZFJlcXMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsKKyAgICBSdGxa
ZXJvTWVtb3J5KCYoKlJpbmcpLT5TaHV0ZG93blNyYnMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsK
KworICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPlRpbWVyLCBzaXplb2YoS1RJTUVSKSk7Cisg
ICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+VGltZXJEcGMsIHNpemVvZihLRFBDKSk7CisgICAg
UnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+RHBjLCBzaXplb2YoS0RQQykpOworICAgIFJ0bFplcm9N
ZW1vcnkoJigqUmluZyktPkxvY2ssIHNpemVvZihLU1BJTl9MT0NLKSk7CisgICAgKCpSaW5nKS0+
RnJvbnRlbmQgPSBOVUxMOworCisgICAgQVNTRVJUKElzWmVyb01lbW9yeSgqUmluZywgc2l6ZW9m
KFhFTlZCRF9SSU5HKSkpOworICAgIF9fUmluZ0ZyZWUoKlJpbmcpOworICAgICpSaW5nID0gTlVM
TDsKIGZhaWwxOgogICAgIEVycm9yKCJmYWlsMSAlMDh4XG4iLCBzdGF0dXMpOwogICAgIHJldHVy
biBzdGF0dXM7CkBAIC0xNjI3LDkgKzE3NTQsMjcgQEAgUmluZ0Rlc3Ryb3koCiAgICAgSU4gIFBY
RU5WQkRfUklORyAgICBSaW5nCiAgICAgKQogewotICAgIF9fTG9va2FzaWRlVGVybSgmUmluZy0+
SW5kaXJlY3RMaXN0KTsKLSAgICBfX0xvb2thc2lkZVRlcm0oJlJpbmctPlNlZ21lbnRMaXN0KTsK
LSAgICBfX0xvb2thc2lkZVRlcm0oJlJpbmctPlJlcXVlc3RMaXN0KTsKKyAgICBYRU5CVVNfQ0FD
SEUoRGVzdHJveSwKKyAgICAgICAgICAgICAgICAgJlJpbmctPkNhY2hlSW50ZXJmYWNlLAorICAg
ICAgICAgICAgICAgICBSaW5nLT5JbmRpcmVjdENhY2hlKTsKKyAgICBSaW5nLT5JbmRpcmVjdENh
Y2hlID0gTlVMTDsKKworICAgIFhFTkJVU19DQUNIRShEZXN0cm95LAorICAgICAgICAgICAgICAg
ICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgIFJpbmctPlNlZ21lbnRD
YWNoZSk7CisgICAgUmluZy0+U2VnbWVudENhY2hlID0gTlVMTDsKKworICAgIFhFTkJVU19DQUNI
RShEZXN0cm95LAorICAgICAgICAgICAgICAgICAmUmluZy0+Q2FjaGVJbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgIFJpbmctPlJlcXVlc3RDYWNoZSk7CisgICAgUmluZy0+UmVxdWVzdENhY2hl
ID0gTlVMTDsKKworICAgIFhFTkJVU19DQUNIRShSZWxlYXNlLAorICAgICAgICAgICAgICAgICAm
UmluZy0+Q2FjaGVJbnRlcmZhY2UpOworCisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+Q2FjaGVJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YgKFhFTkJVU19DQUNIRV9JTlRFUkZB
Q0UpKTsKKwogICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkZyZXNoU3Jicywgc2l6ZW9mKFhFTlZC
RF9RVUVVRSkpOwogICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPlByZXBhcmVkUmVxcywgc2l6ZW9m
KFhFTlZCRF9RVUVVRSkpOwogICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPlN1Ym1pdHRlZFJlcXMs
IHNpemVvZihYRU5WQkRfUVVFVUUpKTsKLS0gCjIuOC4zCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4t
cHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:50:56 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:50:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqGG-0002NY-Ei; Tue, 26 Sep 2017 13:50:56 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqGF-0002NI-FR
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:50:55 +0000
Received: from [193.109.254.147] by server-4.bemta-6.messagelabs.com id
 BB/E2-03283-E3B5AC95; Tue, 26 Sep 2017 13:50:54 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDIsWRWlGSWpSXmKPExsXitHSDva519Kl
 Ig8Oz2Cz+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxutdS5gLuhuZKn7M+srWwHhvC2MXIyeHhIC/
 xJ83LawgNpuArMTHlZ+ZQWwRAXWJfZ+3MoHYzAJqEtf3d4HVCAuoSnza9gUszgJk95+7CDaHV
 8BK4uDeB6wQM+UkJi++BBTn4OAUsJbYct8IJCwEVHLgz0sWCFtJ4tviF8wQrYISJ2c+YYFYJS
 Fx8MUL5gmMvLOQpGYhSS1gZFrFqF6cWlSWWqRropdUlJmeUZKbmJmja2hgppebWlycmJ6ak5h
 UrJecn7uJERg6DECwg7H7sv8hRkkOJiVRXkW5U5FCfEn5KZUZicUZ8UWlOanFhxhlODiUJHgl
 ooBygkWp6akVaZk5wCCGSUtw8CiJ8EaBpHmLCxJzizPTIVKnGC05Om7e/cPEsQlMbvj+4A+TE
 Etefl6qlDivPUiDAEhDRmke3DhYpF1ilJUS5mUEOlCIpyC1KDezBFX+FaM4B6OSMK8NyBSezL
 wSuK2vgA5iAjqod+oJkINKEhFSUg2M/MxCs2+IbryaWtfx/ovIPe6etVYhye17al6xhLgfYnR
 Xe5nT4v9uJuOKZv11GhUz8nTXnkq+lj/lybMVR3xWczc+YpkVYBx5nUFsz4zrMhk350Uc3xW/
 Xb1XKlXV7cxCbfG5f8X1J3r/ddGQKTc0//z3xCa2Hyt2vYg6viAu8UmRZdnzO2onlFiKMxINt
 ZiLihMBA5gaEK8CAAA=
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1506433847!118300258!2
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20779 invoked from network); 26 Sep 2017 13:50:50 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:50 -0000
X-IronPort-AV: E=Sophos;i="5.42,441,1500940800"; d="scan'208";a="449258596"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:14 +0100
Message-ID: <20170926135015.17476-5-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
References: <20170926135015.17476-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 4/5] Tidy up srbext.h
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKKiByZW9yZGVycyBzdHJ1
Y3QgZGVmaW5pdGlvbnMKKiByZW1vdmUgaW5saW5lIGZ1bmN0aW9ucyBhbmQgdW5uZWNjZXNzYXJ5
IGhlYWRlcnMKKiByZXBsYWNlIFJlcXVlc3QuSWQgd2l0aCAoVUxPTkc2NCkoVUxPTkdfUFRSKVJl
cXVlc3QKClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4K
LS0tCiBzcmMveGVudmJkL2FkYXB0ZXIuYyB8ICAgNCArLQogc3JjL3hlbnZiZC9yaW5nLmMgICAg
fCAzMjMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBzcmMveGVudmJkL3NyYmV4dC5oICB8IDEwMCArKysrKystLS0tLS0tLS0tCiBzcmMveGVudmJk
L3RhcmdldC5jICB8ICAgNiArLQogNCBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygrKSwg
MjM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvYWRhcHRlci5jIGIvc3Jj
L3hlbnZiZC9hZGFwdGVyLmMKaW5kZXggNGZiNzViOC4uNzc1MzM4OCAxMDA2NDQKLS0tIGEvc3Jj
L3hlbnZiZC9hZGFwdGVyLmMKKysrIGIvc3JjL3hlbnZiZC9hZGFwdGVyLmMKQEAgLTE5MTEsNyAr
MTkxMSw5IEBAIEFkYXB0ZXJId0J1aWxkSW8oCiAgICAgUFhFTlZCRF9TUkJFWFQgICAgICAgICAg
U3JiRXh0ID0gU3JiLT5TcmJFeHRlbnNpb247CiAgICAgUFhFTlZCRF9UQVJHRVQgICAgICAgICAg
VGFyZ2V0OwogCi0gICAgSW5pdFNyYkV4dChTcmIpOworICAgIFJ0bFplcm9NZW1vcnkoU3JiRXh0
LCBzaXplb2YoWEVOVkJEX1NSQkVYVCkpOworICAgIFNyYkV4dC0+U3JiID0gU3JiOworICAgIFNy
Yi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19JTlZBTElEX1JFUVVFU1Q7CiAKICAgICBJbnRlcmxv
Y2tlZEluY3JlbWVudCgoUExPTkcpJkFkYXB0ZXItPkJ1aWxkSW8pOwogICAgIHN3aXRjaCAoU3Ji
LT5GdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9yaW5nLmMgYi9zcmMveGVudmJk
L3JpbmcuYwppbmRleCAwMzM5NzViLi4zNzJmMGQ1IDEwMDY0NAotLS0gYS9zcmMveGVudmJkL3Jp
bmcuYworKysgYi9zcmMveGVudmJkL3JpbmcuYwpAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUg
ImRlYnVnLmgiCiAjaW5jbHVkZSAiYXNzZXJ0LmgiCiAKLSNkZWZpbmUgVEFHX0hFQURFUiAgICAg
ICAgICAgICAgICAgICdnYVRYJwogI2RlZmluZSBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUiAg
KDQpCiAjZGVmaW5lIFhFTlZCRF9NQVhfUklOR19QQUdFUyAgICAgICAoMSA8PCBYRU5WQkRfTUFY
X1JJTkdfUEFHRV9PUkRFUikKIApAQCAtOTMsNyArOTIsNiBAQCBzdHJ1Y3QgX1hFTlZCRF9SSU5H
IHsKICAgICBYRU5WQkRfUVVFVUUgICAgICAgICAgICAgICAgICAgIFByZXBhcmVkUmVxczsKICAg
ICBYRU5WQkRfUVVFVUUgICAgICAgICAgICAgICAgICAgIFN1Ym1pdHRlZFJlcXM7CiAgICAgWEVO
VkJEX1FVRVVFICAgICAgICAgICAgICAgICAgICBTaHV0ZG93blNyYnM7Ci0gICAgVUxPTkcgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXh0VGFnOwogCiAgICAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdWJtaXR0ZWQ7CiAgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWNlaXZlZDsKQEAgLTIzNCwzNiArMjMyLDYgQEAgX19QZm4oCiAgICAgcmV0dXJuIChQ
Rk5fTlVNQkVSKShVTE9OR19QVFIpKE1tR2V0UGh5c2ljYWxBZGRyZXNzKFZpcnRBZGRyKS5RdWFk
UGFydCA+PiBQQUdFX1NISUZUKTsKIH0KIAotc3RhdGljIEZPUkNFSU5MSU5FIFVMT05HNjQKLV9f
UmluZ0dldFRhZygKLSAgICBJTiAgUFhFTlZCRF9SSU5HICAgIFJpbmcsCi0gICAgSU4gIFBYRU5W
QkRfUkVRVUVTVCBSZXF1ZXN0Ci0gICAgKQotewotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
UmluZyk7Ci0gICAgcmV0dXJuICgoVUxPTkc2NClUQUdfSEVBREVSIDw8IDMyKSB8IChVTE9ORzY0
KVJlcXVlc3QtPklkOwotfQotCi1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgotX19SaW5nUHV0
VGFnKAotICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZywKLSAgICBJTiAgVUxPTkc2NCAgICAg
ICAgIElkLAotICAgIE9VVCBQVUxPTkcgICAgICAgICAgVGFnCi0gICAgKQotewotICAgIFVMT05H
ICAgSGVhZGVyID0gKFVMT05HKSgoSWQgPj4gMzIpICYgMHhGRkZGRkZGRik7Ci0KLSAgICBVTlJF
RkVSRU5DRURfUEFSQU1FVEVSKFJpbmcpOwotCi0gICAgKlRhZyAgICA9IChVTE9ORykoSWQgJiAw
eEZGRkZGRkZGKTsKLSAgICBpZiAoSGVhZGVyICE9IFRBR19IRUFERVIpIHsKLSAgICAgICAgRXJy
b3IoIlBVVF9UQUcgKCVsbHgpIFRBR19IRUFERVIgKCUwOHglMDh4KVxuIiwgSWQsIEhlYWRlciwg
KlRhZyk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVFJVRTsK
LX0KLQogc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKIF9fUmluZ0luc2VydCgKICAgICBJTiAgUFhF
TlZCRF9SSU5HICAgICAgICBSaW5nLApAQCAtMjg4LDcgKzI1Niw3IEBAIF9fUmluZ0luc2VydCgK
ICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+b3BlcmF0aW9uICAgICAgICAgPSBCTEtJRl9PUF9J
TkRJUkVDVDsKICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+aW5kaXJlY3Rfb3AgICAgICAgPSBS
ZXF1ZXN0LT5PcGVyYXRpb247CiAgICAgICAgICAgICByZXFfaW5kaXJlY3QtPm5yX3NlZ21lbnRz
ICAgICAgID0gUmVxdWVzdC0+TnJTZWdtZW50czsKLSAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+
aWQgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7CisgICAgICAg
ICAgICByZXFfaW5kaXJlY3QtPmlkICAgICAgICAgICAgICAgID0gKFVMT05HNjQpKFVMT05HX1BU
UilSZXF1ZXN0OwogICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5zZWN0b3JfbnVtYmVyICAgICA9
IFJlcXVlc3QtPkZpcnN0U2VjdG9yOwogICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5oYW5kbGUg
ICAgICAgICAgICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZpY2VJZChSaW5nLT5Gcm9udGVuZCk7
CiAKQEAgLTI5OSw3ICsyNjcsNyBAQCBfX1JpbmdJbnNlcnQoCiAgICAgICAgICAgICAgICAgICAg
IFBhZ2VFbnRyeSAhPSAmUmVxdWVzdC0+SW5kaXJlY3RzICYmCiAgICAgICAgICAgICAgICAgICAg
IFNlZ0VudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKICAgICAgICAgICAgICAgICAgICAgICAg
ICsrUGFnZUlkeCwgUGFnZUVudHJ5ID0gUGFnZUVudHJ5LT5GbGluaykgewotICAgICAgICAgICAg
ICAgIFBYRU5WQkRfSU5ESVJFQ1QgUGFnZSA9IENPTlRBSU5JTkdfUkVDT1JEKFBhZ2VFbnRyeSwg
WEVOVkJEX0lORElSRUNULCBFbnRyeSk7CisgICAgICAgICAgICAgICAgUFhFTlZCRF9JTkRJUkVD
VCBQYWdlID0gQ09OVEFJTklOR19SRUNPUkQoUGFnZUVudHJ5LCBYRU5WQkRfSU5ESVJFQ1QsIExp
c3RFbnRyeSk7CiAKICAgICAgICAgICAgICAgICByZXFfaW5kaXJlY3QtPmluZGlyZWN0X2dyZWZz
W1BhZ2VJZHhdID0gR3JhbnRlclJlZmVyZW5jZShHcmFudGVyLCBQYWdlLT5HcmFudCk7CiAKQEAg
LTMwNyw3ICsyNzUsNyBAQCBfX1JpbmdJbnNlcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICBT
ZWdJZHggPCBYRU5WQkRfTUFYX1NFR01FTlRTX1BFUl9QQUdFICYmCiAgICAgICAgICAgICAgICAg
ICAgICAgICBTZWdFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKytTZWdJZHgsIFNlZ0VudHJ5ID0gU2VnRW50cnktPkZsaW5rKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNP
UkQoU2VnRW50cnksIFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7CisgICAgICAgICAgICAgICAgICAg
IFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoU2VnRW50cnksIFhF
TlZCRF9TRUdNRU5ULCBMaXN0RW50cnkpOwogCiAgICAgICAgICAgICAgICAgICAgIFBhZ2UtPlBh
Z2VbU2VnSWR4XS5HcmFudFJlZiA9IEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgU2VnbWVudC0+
R3JhbnQpOwogICAgICAgICAgICAgICAgICAgICBQYWdlLT5QYWdlW1NlZ0lkeF0uRmlyc3QgICAg
PSBTZWdtZW50LT5GaXJzdFNlY3RvcjsKQEAgLTMyMiwxNCArMjkwLDE0IEBAIF9fUmluZ0luc2Vy
dCgKICAgICAgICAgICAgIHJlcS0+b3BlcmF0aW9uICAgICAgICAgICAgICAgICAgPSBSZXF1ZXN0
LT5PcGVyYXRpb247CiAgICAgICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAgICAgICAgICAg
ID0gKFVDSEFSKVJlcXVlc3QtPk5yU2VnbWVudHM7CiAgICAgICAgICAgICByZXEtPmhhbmRsZSAg
ICAgICAgICAgICAgICAgICAgID0gKFVTSE9SVClGcm9udGVuZEdldERldmljZUlkKFJpbmctPkZy
b250ZW5kKTsKLSAgICAgICAgICAgIHJlcS0+aWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBf
X1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7CisgICAgICAgICAgICByZXEtPmlkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKFVMT05HNjQpKFVMT05HX1BUUilSZXF1ZXN0OwogICAgICAgICAg
ICAgcmVxLT5zZWN0b3JfbnVtYmVyICAgICAgICAgICAgICA9IFJlcXVlc3QtPkZpcnN0U2VjdG9y
OwogCiAgICAgICAgICAgICBmb3IgKEluZGV4ID0gMCwgRW50cnkgPSBSZXF1ZXN0LT5TZWdtZW50
cy5GbGluazsKICAgICAgICAgICAgICAgICAgICAgSW5kZXggPCBCTEtJRl9NQVhfU0VHTUVOVFNf
UEVSX1JFUVVFU1QgJiYKICAgICAgICAgICAgICAgICAgICAgRW50cnkgIT0gJlJlcXVlc3QtPlNl
Z21lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgKytJbmRleCwgRW50cnkgPSBFbnRyeS0+
RmxpbmspIHsKLSAgICAgICAgICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudCA9IENPTlRB
SU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfU0VHTUVOVCwgRW50cnkpOworICAgICAgICAgICAg
ICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhF
TlZCRF9TRUdNRU5ULCBMaXN0RW50cnkpOwogICAgICAgICAgICAgICAgIHJlcS0+c2VnW0luZGV4
XS5ncmVmICAgICAgICA9IEdyYW50ZXJSZWZlcmVuY2UoR3JhbnRlciwgU2VnbWVudC0+R3JhbnQp
OwogICAgICAgICAgICAgICAgIHJlcS0+c2VnW0luZGV4XS5maXJzdF9zZWN0ICA9IFNlZ21lbnQt
PkZpcnN0U2VjdG9yOwogICAgICAgICAgICAgICAgIHJlcS0+c2VnW0luZGV4XS5sYXN0X3NlY3Qg
ICA9IFNlZ21lbnQtPkxhc3RTZWN0b3I7CkBAIC0zNDIsNyArMzEwLDcgQEAgX19SaW5nSW5zZXJ0
KAogICAgICAgICByZXEtPm9wZXJhdGlvbiAgICAgICAgICAgICAgICAgID0gUmVxdWVzdC0+T3Bl
cmF0aW9uOwogICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAgICAgICAgICAgID0gMDsKICAg
ICAgICAgcmVxLT5oYW5kbGUgICAgICAgICAgICAgICAgICAgICA9IChVU0hPUlQpRnJvbnRlbmRH
ZXREZXZpY2VJZChSaW5nLT5Gcm9udGVuZCk7Ci0gICAgICAgIHJlcS0+aWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7CisgICAgICAgIHJlcS0+
aWQgICAgICAgICAgICAgICAgICAgICAgICAgPSAoVUxPTkc2NCkoVUxPTkdfUFRSKVJlcXVlc3Q7
CiAgICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5GaXJz
dFNlY3RvcjsKICAgICAgICAgYnJlYWs7CiAKQEAgLTM1Miw3ICszMjAsNyBAQCBfX1JpbmdJbnNl
cnQoCiAgICAgICAgIHJlcV9kaXNjYXJkLT5vcGVyYXRpb24gICAgICAgICAgPSBCTEtJRl9PUF9E
SVNDQVJEOwogICAgICAgICByZXFfZGlzY2FyZC0+ZmxhZyAgICAgICAgICAgICAgID0gUmVxdWVz
dC0+RmxhZ3M7CiAgICAgICAgIHJlcV9kaXNjYXJkLT5oYW5kbGUgICAgICAgICAgICAgPSAoVVNI
T1JUKUZyb250ZW5kR2V0RGV2aWNlSWQoUmluZy0+RnJvbnRlbmQpOwotICAgICAgICByZXFfZGlz
Y2FyZC0+aWQgICAgICAgICAgICAgICAgID0gX19SaW5nR2V0VGFnKFJpbmcsIFJlcXVlc3QpOwor
ICAgICAgICByZXFfZGlzY2FyZC0+aWQgICAgICAgICAgICAgICAgID0gKFVMT05HNjQpKFVMT05H
X1BUUilSZXF1ZXN0OwogICAgICAgICByZXFfZGlzY2FyZC0+c2VjdG9yX251bWJlciAgICAgID0g
UmVxdWVzdC0+Rmlyc3RTZWN0b3I7CiAgICAgICAgIHJlcV9kaXNjYXJkLT5ucl9zZWN0b3JzICAg
ICAgICAgPSBSZXF1ZXN0LT5OclNlY3RvcnM7CiAgICAgICAgIH0gYnJlYWs7CkBAIC00ODEsNyAr
NDQ5LDYgQEAgUmluZ0dldFJlcXVlc3QoCiAgICAgICAgIGdvdG8gZmFpbDE7CiAKICAgICBSdGxa
ZXJvTWVtb3J5KFJlcXVlc3QsIHNpemVvZihYRU5WQkRfUkVRVUVTVCkpOwotICAgIFJlcXVlc3Qt
PklkID0gKFVMT05HKUludGVybG9ja2VkSW5jcmVtZW50KChQTE9ORykmUmluZy0+TmV4dFRhZyk7
CiAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZSZXF1ZXN0LT5TZWdtZW50cyk7CiAgICAgSW5pdGlh
bGl6ZUxpc3RIZWFkKCZSZXF1ZXN0LT5JbmRpcmVjdHMpOwogCkBAIC00OTcsMjUgKzQ2NCwyNSBA
QCBSaW5nUHV0UmVxdWVzdCgKICAgICBJTiAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3QKICAgICAp
CiB7Ci0gICAgUExJU1RfRU5UUlkgICAgICAgICBFbnRyeTsKKyAgICBQTElTVF9FTlRSWSAgICAg
ICAgIExpc3RFbnRyeTsKIAogICAgIGZvciAoOzspIHsKICAgICAgICAgUFhFTlZCRF9TRUdNRU5U
IFNlZ21lbnQ7CiAKLSAgICAgICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdCgmUmVxdWVzdC0+U2Vn
bWVudHMpOwotICAgICAgICBpZiAoRW50cnkgPT0gJlJlcXVlc3QtPlNlZ21lbnRzKQorICAgICAg
ICBMaXN0RW50cnkgPSBSZW1vdmVIZWFkTGlzdCgmUmVxdWVzdC0+U2VnbWVudHMpOworICAgICAg
ICBpZiAoTGlzdEVudHJ5ID09ICZSZXF1ZXN0LT5TZWdtZW50cykKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TRUdN
RU5ULCBFbnRyeSk7CisgICAgICAgIFNlZ21lbnQgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50
cnksIFhFTlZCRF9TRUdNRU5ULCBMaXN0RW50cnkpOwogICAgICAgICBSaW5nUHV0U2VnbWVudChS
aW5nLCBTZWdtZW50KTsKICAgICB9CiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIFBYRU5WQkRf
SU5ESVJFQ1QgICAgSW5kaXJlY3Q7CiAKLSAgICAgICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdCgm
UmVxdWVzdC0+SW5kaXJlY3RzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09ICZSZXF1ZXN0LT5JbmRp
cmVjdHMpCisgICAgICAgIExpc3RFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZSZXF1ZXN0LT5JbmRp
cmVjdHMpOworICAgICAgICBpZiAoTGlzdEVudHJ5ID09ICZSZXF1ZXN0LT5JbmRpcmVjdHMpCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgSW5kaXJlY3QgPSBDT05UQUlOSU5HX1JFQ09SRChF
bnRyeSwgWEVOVkJEX0lORElSRUNULCBFbnRyeSk7CisgICAgICAgIEluZGlyZWN0ID0gQ09OVEFJ
TklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRfSU5ESVJFQ1QsIExpc3RFbnRyeSk7CiAgICAg
ICAgIFJpbmdQdXRJbmRpcmVjdChSaW5nLCBJbmRpcmVjdCk7CiAgICAgfQogCkBAIC01MjQsMjEg
KzQ5MSwyNCBAQCBSaW5nUHV0UmVxdWVzdCgKIH0KIAogc3RhdGljIEZPUkNFSU5MSU5FIFBYRU5W
QkRfUkVRVUVTVAotUmluZ1JlcXVlc3RGcm9tVGFnKAorUmluZ0ZpbmRSZXF1ZXN0KAogICAgIElO
ICBQWEVOVkJEX1JJTkcgICAgUmluZywKLSAgICBJTiAgVUxPTkcgICAgICAgICAgIFRhZworICAg
IElOICBVTE9ORzY0ICAgICAgICAgSWQKICAgICApCiB7CiAgICAgS0lSUUwgICAgICAgICAgICAg
ICBJcnFsOwotICAgIFBMSVNUX0VOVFJZICAgICAgICAgRW50cnk7CisgICAgUExJU1RfRU5UUlkg
ICAgICAgICBMaXN0RW50cnk7CisgICAgUFhFTlZCRF9SRVFVRVNUICAgICBSZXF1ZXN0OwogICAg
IFBYRU5WQkRfUVVFVUUgICAgICAgUXVldWUgPSAmUmluZy0+U3VibWl0dGVkUmVxczsKIAogICAg
IEtlQWNxdWlyZVNwaW5Mb2NrKCZRdWV1ZS0+TG9jaywgJklycWwpOwogCi0gICAgZm9yIChFbnRy
eSA9IFF1ZXVlLT5MaXN0LkZsaW5rOyBFbnRyeSAhPSAmUXVldWUtPkxpc3Q7IEVudHJ5ID0gRW50
cnktPkZsaW5rKSB7Ci0gICAgICAgIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0ID0gQ09OVEFJTklO
R19SRUNPUkQoRW50cnksIFhFTlZCRF9SRVFVRVNULCBFbnRyeSk7Ci0gICAgICAgIGlmIChSZXF1
ZXN0LT5JZCA9PSBUYWcpIHsKLSAgICAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmUmVxdWVzdC0+
RW50cnkpOworICAgIGZvciAoTGlzdEVudHJ5ID0gUXVldWUtPkxpc3QuRmxpbms7CisgICAgICAg
ICBMaXN0RW50cnkgIT0gJlF1ZXVlLT5MaXN0OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVu
dHJ5LT5GbGluaykgeworICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVu
dHJ5LCBYRU5WQkRfUkVRVUVTVCwgTGlzdEVudHJ5KTsKKyAgICAgICAgaWYgKChVTE9ORzY0KShV
TE9OR19QVFIpUmVxdWVzdCA9PSBJZCkgeworICAgICAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZS
ZXF1ZXN0LT5MaXN0RW50cnkpOwogICAgICAgICAgICAgLS1RdWV1ZS0+Q3VycmVudDsKICAgICAg
ICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZRdWV1ZS0+TG9jaywgSXJxbCk7CiAgICAgICAgICAg
ICByZXR1cm4gUmVxdWVzdDsKQEAgLTU0Niw5ICs1MTYsOSBAQCBSaW5nUmVxdWVzdEZyb21UYWco
CiAgICAgfQogCiAgICAgS2VSZWxlYXNlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsKLSAg
ICBXYXJuaW5nKCJUYXJnZXRbJWRdIDogVGFnICV4IG5vdCBmb3VuZCBpbiBzdWJtaXR0ZWQgbGlz
dCAoJXUgaXRlbXMpXG4iLAorICAgIFdhcm5pbmcoIlRhcmdldFslZF0gOiBUYWcgJWxseCBub3Qg
Zm91bmQgaW4gc3VibWl0dGVkIGxpc3QgKCV1IGl0ZW1zKVxuIiwKICAgICAgICAgICAgIEZyb250
ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRlbmQpLAotICAgICAgICAgICAgVGFnLAorICAgICAg
ICAgICAgSWQsCiAgICAgICAgICAgICBRdWV1ZUNvdW50KFF1ZXVlKSk7CiAgICAgcmV0dXJuIE5V
TEw7CiB9CkBAIC02MzYsMTUgKzYwNiwxNSBAQCBSaW5nUmVxdWVzdENvcHlPdXRwdXQoCiAgICAg
SU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0CiAgICAgKQogewotICAgIFBMSVNUX0VOVFJZICAg
ICAgICAgRW50cnk7CisgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7CiAKICAgICBp
ZiAoUmVxdWVzdC0+T3BlcmF0aW9uICE9IEJMS0lGX09QX1JFQUQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGZvciAoRW50cnkgPSBSZXF1ZXN0LT5TZWdtZW50cy5GbGluazsKLSAgICAgICAgICAg
IEVudHJ5ICE9ICZSZXF1ZXN0LT5TZWdtZW50czsKLSAgICAgICAgICAgIEVudHJ5ID0gRW50cnkt
PkZsaW5rKSB7Ci0gICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19S
RUNPUkQoRW50cnksIFhFTlZCRF9TRUdNRU5ULCBFbnRyeSk7CisgICAgZm9yIChMaXN0RW50cnkg
PSBSZXF1ZXN0LT5TZWdtZW50cy5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAhPSAmUmVxdWVz
dC0+U2VnbWVudHM7CisgICAgICAgICBMaXN0RW50cnkgPSBMaXN0RW50cnktPkZsaW5rKSB7Cisg
ICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVu
dHJ5LCBYRU5WQkRfU0VHTUVOVCwgTGlzdEVudHJ5KTsKICAgICAgICAgUFhFTlZCRF9CT1VOQ0Ug
IEJvdW5jZSA9IFNlZ21lbnQtPkJvdW5jZTsKIAogICAgICAgICBpZiAoQm91bmNlKSB7CkBAIC03
NzksMTAgKzc0OSwxMSBAQCBSaW5nUHJlcGFyZUJsa2lmUmVhZFdyaXRlKAogICAgIE9VVCBQVUxP
TkcgICAgICAgICAgU2VjdG9yc0RvbmUKICAgICApCiB7CisgICAgUFNDU0lfUkVRVUVTVF9CTE9D
SyBTcmIgPSBTcmJFeHQtPlNyYjsKICAgICBVQ0hBUiAgICAgICAgICAgICAgIE9wZXJhdGlvbjsK
ICAgICBCT09MRUFOICAgICAgICAgICAgIFJlYWRPbmx5OwogICAgIFVMT05HICAgICAgICAgICAg
ICAgSW5kZXg7Ci0gICAgX19SaW5nT3BlcmF0aW9uKENkYl9PcGVyYXRpb25FeChSZXF1ZXN0LT5T
cmIpLCAmT3BlcmF0aW9uLCAmUmVhZE9ubHkpOworICAgIF9fUmluZ09wZXJhdGlvbihDZGJfT3Bl
cmF0aW9uRXgoU3JiKSwgJk9wZXJhdGlvbiwgJlJlYWRPbmx5KTsKIAogICAgIFJlcXVlc3QtPk9w
ZXJhdGlvbiAgPSBPcGVyYXRpb247CiAgICAgUmVxdWVzdC0+TnJTZWdtZW50cyA9IDA7CkBAIC03
OTksNyArNzcwLDcgQEAgUmluZ1ByZXBhcmVCbGtpZlJlYWRXcml0ZSgKICAgICAgICAgaWYgKFNl
Z21lbnQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDE7CiAKLSAgICAgICAgSW5zZXJ0
VGFpbExpc3QoJlJlcXVlc3QtPlNlZ21lbnRzLCAmU2VnbWVudC0+RW50cnkpOworICAgICAgICBJ
bnNlcnRUYWlsTGlzdCgmUmVxdWVzdC0+U2VnbWVudHMsICZTZWdtZW50LT5MaXN0RW50cnkpOwog
ICAgICAgICArK1JlcXVlc3QtPk5yU2VnbWVudHM7CiAKICAgICAgICAgaWYgKCFSaW5nUHJlcGFy
ZVNlZ21lbnQoUmluZywKQEAgLTg0MSw3ICs4MTIsNyBAQCBSaW5nUHJlcGFyZUJsa2lmSW5kaXJl
Y3QoCiAgICAgICAgIEluZGlyZWN0ID0gUmluZ0dldEluZGlyZWN0KFJpbmcpOwogICAgICAgICBp
ZiAoSW5kaXJlY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDE7Ci0gICAgICAgIElu
c2VydFRhaWxMaXN0KCZSZXF1ZXN0LT5JbmRpcmVjdHMsICZJbmRpcmVjdC0+RW50cnkpOworICAg
ICAgICBJbnNlcnRUYWlsTGlzdCgmUmVxdWVzdC0+SW5kaXJlY3RzLCAmSW5kaXJlY3QtPkxpc3RF
bnRyeSk7CiAKICAgICAgICAgTnJTZWdtZW50cyArPSBYRU5WQkRfTUFYX1NFR01FTlRTX1BFUl9Q
QUdFOwogICAgIH0KQEAgLTg3OSwxNiArODUwLDE2IEBAIFJpbmdRdWV1ZVJlcXVlc3RMaXN0KAog
ICAgIFVMT05HICAgICAgICAgICAgICAgQ291bnQgPSAwOwogICAgIGZvciAoOzspIHsKICAgICAg
ICAgUFhFTlZCRF9SRVFVRVNUIFJlcXVlc3Q7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRy
eTsKKyAgICAgICAgUExJU1RfRU5UUlkgICAgIExpc3RFbnRyeTsKIAotICAgICAgICBFbnRyeSA9
IFJlbW92ZUhlYWRMaXN0KExpc3QpOwotICAgICAgICBpZiAoRW50cnkgPT0gTGlzdCkKKyAgICAg
ICAgTGlzdEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoTGlzdCk7CisgICAgICAgIGlmIChMaXN0RW50
cnkgPT0gTGlzdCkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICsrQ291bnQ7Ci0gICAg
ICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVu
dHJ5KTsKKyAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVO
VkJEX1JFUVVFU1QsIExpc3RFbnRyeSk7CiAgICAgICAgIF9fUmluZ0luY0Jsa2lmT3BDb3VudChS
aW5nLCBSZXF1ZXN0KTsKLSAgICAgICAgUXVldWVBcHBlbmQoJlJpbmctPlByZXBhcmVkUmVxcywg
JlJlcXVlc3QtPkVudHJ5KTsKKyAgICAgICAgUXVldWVBcHBlbmQoJlJpbmctPlByZXBhcmVkUmVx
cywgJlJlcXVlc3QtPkxpc3RFbnRyeSk7CiAgICAgfQogICAgIHJldHVybiBDb3VudDsKIH0KQEAg
LTkwMSwxMyArODcyLDEzIEBAIFJpbmdDYW5jZWxSZXF1ZXN0TGlzdCgKIHsKICAgICBmb3IgKDs7
KSB7CiAgICAgICAgIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0OwotICAgICAgICBQTElTVF9FTlRS
WSAgICAgRW50cnk7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICBMaXN0RW50cnk7CiAKLSAgICAg
ICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdChMaXN0KTsKLSAgICAgICAgaWYgKEVudHJ5ID09IExp
c3QpCisgICAgICAgIExpc3RFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KExpc3QpOworICAgICAgICBp
ZiAoTGlzdEVudHJ5ID09IExpc3QpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBSZXF1
ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9SRVFVRVNULCBFbnRyeSk7Cisg
ICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTlZCRF9SRVFV
RVNULCBMaXN0RW50cnkpOwogICAgICAgICBSaW5nUHV0UmVxdWVzdChSaW5nLCBSZXF1ZXN0KTsK
ICAgICB9CiB9CkBAIC05MTgsNyArODg5LDcgQEAgUmluZ1ByZXBhcmVSZWFkV3JpdGUoCiAgICAg
SU4gIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgU3JiCiAgICAgKQogewotICAgIFBYRU5WQkRfU1JCRVhU
ICAgICAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOworICAgIFBYRU5WQkRfU1JCRVhUICAg
ICAgICAgIFNyYkV4dCA9IFNyYi0+U3JiRXh0ZW5zaW9uOwogICAgIFVMT05HNjQgICAgICAgICAg
ICAgICAgIFNlY3RvclN0YXJ0ID0gQ2RiX0xvZ2ljYWxCbG9jayhTcmIpOwogICAgIFVMT05HICAg
ICAgICAgICAgICAgICAgIFNlY3RvcnNMZWZ0ID0gQ2RiX1RyYW5zZmVyQmxvY2soU3JiKTsKICAg
ICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0OwpAQCAtOTI3LDcgKzg5OCw3IEBAIFJpbmdQ
cmVwYXJlUmVhZFdyaXRlKAogICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19QRU5ESU5H
OwogCiAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsKLSAgICBTcmJFeHQtPkNvdW50ID0g
MDsKKyAgICBTcmJFeHQtPlJlcXVlc3RDb3VudCA9IDA7CiAKICAgICB3aGlsZSAoU2VjdG9yc0xl
ZnQgPiAwKSB7CiAgICAgICAgIFVMT05HICAgICAgICAgICBNYXhTZWdtZW50czsKQEAgLTkzNywx
MCArOTA4LDEwIEBAIFJpbmdQcmVwYXJlUmVhZFdyaXRlKAogICAgICAgICBSZXF1ZXN0ID0gUmlu
Z0dldFJlcXVlc3QoUmluZyk7CiAgICAgICAgIGlmIChSZXF1ZXN0ID09IE5VTEwpCiAgICAgICAg
ICAgICBnb3RvIGZhaWwxOwotICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlJlcXVlc3Qt
PkVudHJ5KTsKLSAgICAgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+Q291bnQpOwor
ICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlJlcXVlc3QtPkxpc3RFbnRyeSk7CisgICAg
ICAgIEludGVybG9ja2VkSW5jcmVtZW50KCZTcmJFeHQtPlJlcXVlc3RDb3VudCk7CiAKLSAgICAg
ICAgUmVxdWVzdC0+U3JiICAgID0gU3JiOworICAgICAgICBSZXF1ZXN0LT5TcmJFeHQgPSBTcmJF
eHQ7CiAgICAgICAgIE1heFNlZ21lbnRzID0gUmluZ1VzZUluZGlyZWN0KFJpbmcsIFNlY3RvcnNM
ZWZ0KTsKIAogICAgICAgICBpZiAoIVJpbmdQcmVwYXJlQmxraWZSZWFkV3JpdGUoUmluZywKQEAg
LTk2MiwxMCArOTMzLDEwIEBAIFJpbmdQcmVwYXJlUmVhZFdyaXRlKAogICAgIH0KIAogICAgIERl
YnVnQ291bnQgPSBSaW5nUXVldWVSZXF1ZXN0TGlzdChSaW5nLCAmTGlzdCk7Ci0gICAgaWYgKERl
YnVnQ291bnQgIT0gKFVMT05HKVNyYkV4dC0+Q291bnQpIHsKKyAgICBpZiAoRGVidWdDb3VudCAh
PSAoVUxPTkcpU3JiRXh0LT5SZXF1ZXN0Q291bnQpIHsKICAgICAgICAgVHJhY2UoIlsldV0gJWQg
IT0gJXVcbiIsCiAgICAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRl
bmQpLAotICAgICAgICAgICAgICBTcmJFeHQtPkNvdW50LAorICAgICAgICAgICAgICBTcmJFeHQt
PlJlcXVlc3RDb3VudCwKICAgICAgICAgICAgICAgRGVidWdDb3VudCk7CiAgICAgfQogICAgIHJl
dHVybiBUUlVFOwpAQCAtOTc0LDcgKzk0NSw3IEBAIGZhaWwzOgogZmFpbDI6CiBmYWlsMToKICAg
ICBSaW5nQ2FuY2VsUmVxdWVzdExpc3QoUmluZywgJkxpc3QpOwotICAgIFNyYkV4dC0+Q291bnQg
PSAwOworICAgIFNyYkV4dC0+UmVxdWVzdENvdW50ID0gMDsKICAgICBTcmItPlNyYlN0YXR1cyA9
IFNSQl9TVEFUVVNfRVJST1I7CiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtOTg1LDcgKzk1Niw3
IEBAIFJpbmdQcmVwYXJlU3luY0NhY2hlKAogICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLIFNy
YgogICAgICkKIHsKLSAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBHZXRTcmJF
eHQoU3JiKTsKKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBTcmItPlNyYkV4
dGVuc2lvbjsKICAgICBQWEVOVkJEX1JFUVVFU1QgICAgICAgICBSZXF1ZXN0OwogICAgIExJU1Rf
RU5UUlkgICAgICAgICAgICAgIExpc3Q7CiAgICAgVUNIQVIgICAgICAgICAgICAgICAgICAgT3Bl
cmF0aW9uOwpAQCAtOTk5LDMwICs5NzAsMzAgQEAgUmluZ1ByZXBhcmVTeW5jQ2FjaGUoCiAgICAg
ICAgIE9wZXJhdGlvbiA9IEJMS0lGX09QX1dSSVRFX0JBUlJJRVI7CiAKICAgICBJbml0aWFsaXpl
TGlzdEhlYWQoJkxpc3QpOwotICAgIFNyYkV4dC0+Q291bnQgPSAwOworICAgIFNyYkV4dC0+UmVx
dWVzdENvdW50ID0gMDsKIAogICAgIFJlcXVlc3QgPSBSaW5nR2V0UmVxdWVzdChSaW5nKTsKICAg
ICBpZiAoUmVxdWVzdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWwxOwotICAgIEluc2VydFRh
aWxMaXN0KCZMaXN0LCAmUmVxdWVzdC0+RW50cnkpOwotICAgIEludGVybG9ja2VkSW5jcmVtZW50
KCZTcmJFeHQtPkNvdW50KTsKKyAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlJlcXVlc3QtPkxp
c3RFbnRyeSk7CisgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+UmVxdWVzdENvdW50
KTsKIAotICAgIFJlcXVlc3QtPlNyYiAgICAgICAgPSBTcmI7CisgICAgUmVxdWVzdC0+U3JiRXh0
ICAgICA9IFNyYkV4dDsKICAgICBSZXF1ZXN0LT5PcGVyYXRpb24gID0gT3BlcmF0aW9uOwogICAg
IFJlcXVlc3QtPkZpcnN0U2VjdG9yID0gQ2RiX0xvZ2ljYWxCbG9jayhTcmIpOwogCiAgICAgRGVi
dWdDb3VudCA9IFJpbmdRdWV1ZVJlcXVlc3RMaXN0KFJpbmcsICZMaXN0KTsKLSAgICBpZiAoRGVi
dWdDb3VudCAhPSAoVUxPTkcpU3JiRXh0LT5Db3VudCkgeworICAgIGlmIChEZWJ1Z0NvdW50ICE9
IChVTE9ORylTcmJFeHQtPlJlcXVlc3RDb3VudCkgewogICAgICAgICBUcmFjZSgiWyV1XSAlZCAh
PSAldVxuIiwKICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRUYXJnZXRJZChSaW5nLT5Gcm9udGVu
ZCksCi0gICAgICAgICAgICAgIFNyYkV4dC0+Q291bnQsCisgICAgICAgICAgICAgIFNyYkV4dC0+
UmVxdWVzdENvdW50LAogICAgICAgICAgICAgICBEZWJ1Z0NvdW50KTsKICAgICB9CiAgICAgcmV0
dXJuIFRSVUU7CiAKIGZhaWwxOgogICAgIFJpbmdDYW5jZWxSZXF1ZXN0TGlzdChSaW5nLCAmTGlz
dCk7Ci0gICAgU3JiRXh0LT5Db3VudCA9IDA7CisgICAgU3JiRXh0LT5SZXF1ZXN0Q291bnQgPSAw
OwogICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19FUlJPUjsKICAgICByZXR1cm4gRkFM
U0U7CiB9CkBAIC0xMDMzLDcgKzEwMDQsNyBAQCBSaW5nUHJlcGFyZVVubWFwKAogICAgIElOICBQ
U0NTSV9SRVFVRVNUX0JMT0NLIFNyYgogICAgICkKIHsKLSAgICBQWEVOVkJEX1NSQkVYVCAgICAg
ICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoU3JiKTsKKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAg
ICBTcmJFeHQgPSBTcmItPlNyYkV4dGVuc2lvbjsKICAgICBQVU5NQVBfTElTVF9IRUFERVIgICAg
ICBVbm1hcCA9IFNyYi0+RGF0YUJ1ZmZlcjsKIAlVTE9ORyAgICAgICAgICAgICAgICAgICBDb3Vu
dCA9IF9ieXRlc3dhcF91c2hvcnQoKihQVVNIT1JUKVVubWFwLT5CbG9ja0Rlc2NyRGF0YUxlbmd0
aCkgLyBzaXplb2YoVU5NQVBfQkxPQ0tfREVTQ1JJUFRPUik7CiAgICAgVUxPTkcgICAgICAgICAg
ICAgICAgICAgSW5kZXg7CkBAIC0xMDQzLDcgKzEwMTQsNyBAQCBSaW5nUHJlcGFyZVVubWFwKAog
ICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19QRU5ESU5HOwogCiAgICAgSW5pdGlhbGl6
ZUxpc3RIZWFkKCZMaXN0KTsKLSAgICBTcmJFeHQtPkNvdW50ID0gMDsKKyAgICBTcmJFeHQtPlJl
cXVlc3RDb3VudCA9IDA7CiAKICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBDb3VudDsgKytJ
bmRleCkgewogICAgICAgICBQVU5NQVBfQkxPQ0tfREVTQ1JJUFRPUiBEZXNjciA9ICZVbm1hcC0+
RGVzY3JpcHRvcnNbSW5kZXhdOwpAQCAtMTA1MiwxMCArMTAyMywxMCBAQCBSaW5nUHJlcGFyZVVu
bWFwKAogICAgICAgICBSZXF1ZXN0ID0gUmluZ0dldFJlcXVlc3QoUmluZyk7CiAgICAgICAgIGlm
IChSZXF1ZXN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWwxOwotICAgICAgICBJbnNl
cnRUYWlsTGlzdCgmTGlzdCwgJlJlcXVlc3QtPkVudHJ5KTsKLSAgICAgICAgSW50ZXJsb2NrZWRJ
bmNyZW1lbnQoJlNyYkV4dC0+Q291bnQpOworICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwg
JlJlcXVlc3QtPkxpc3RFbnRyeSk7CisgICAgICAgIEludGVybG9ja2VkSW5jcmVtZW50KCZTcmJF
eHQtPlJlcXVlc3RDb3VudCk7CiAKLSAgICAgICAgUmVxdWVzdC0+U3JiICAgICAgICAgICAgPSBT
cmI7CisgICAgICAgIFJlcXVlc3QtPlNyYkV4dCAgICAgICAgID0gU3JiRXh0OwogICAgICAgICBS
ZXF1ZXN0LT5PcGVyYXRpb24gICAgICA9IEJMS0lGX09QX0RJU0NBUkQ7CiAgICAgICAgIFJlcXVl
c3QtPkZpcnN0U2VjdG9yICAgID0gX2J5dGVzd2FwX3VpbnQ2NCgqKFBVTE9ORzY0KURlc2NyLT5T
dGFydGluZ0xiYSk7CiAgICAgICAgIFJlcXVlc3QtPk5yU2VjdG9ycyAgICAgID0gX2J5dGVzd2Fw
X3Vsb25nKCooUFVMT05HKURlc2NyLT5MYmFDb3VudCk7CkBAIC0xMDYzLDE3ICsxMDM0LDE3IEBA
IFJpbmdQcmVwYXJlVW5tYXAoCiAgICAgfQogCiAgICAgRGVidWdDb3VudCA9IFJpbmdRdWV1ZVJl
cXVlc3RMaXN0KFJpbmcsICZMaXN0KTsKLSAgICBpZiAoRGVidWdDb3VudCAhPSAoVUxPTkcpU3Ji
RXh0LT5Db3VudCkgeworICAgIGlmIChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJFeHQtPlJlcXVl
c3RDb3VudCkgewogICAgICAgICBUcmFjZSgiWyV1XSAlZCAhPSAldVxuIiwKICAgICAgICAgICAg
ICAgRnJvbnRlbmRHZXRUYXJnZXRJZChSaW5nLT5Gcm9udGVuZCksCi0gICAgICAgICAgICAgIFNy
YkV4dC0+Q291bnQsCisgICAgICAgICAgICAgIFNyYkV4dC0+UmVxdWVzdENvdW50LAogICAgICAg
ICAgICAgICBEZWJ1Z0NvdW50KTsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CiAKIGZhaWwxOgog
ICAgIFJpbmdDYW5jZWxSZXF1ZXN0TGlzdChSaW5nLCAmTGlzdCk7Ci0gICAgU3JiRXh0LT5Db3Vu
dCA9IDA7CisgICAgU3JiRXh0LT5SZXF1ZXN0Q291bnQgPSAwOwogICAgIFNyYi0+U3JiU3RhdHVz
ID0gU1JCX1NUQVRVU19FUlJPUjsKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0xMDg0LDEzICsx
MDU1LDEzIEBAIFJpbmdQcmVwYXJlRnJlc2goCiAgICAgKQogewogICAgIFBYRU5WQkRfU1JCRVhU
ICAgICAgU3JiRXh0OwotICAgIFBMSVNUX0VOVFJZICAgICAgICAgRW50cnk7CisgICAgUExJU1Rf
RU5UUlkgICAgICAgICBMaXN0RW50cnk7CiAKLSAgICBFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5G
cmVzaFNyYnMpOwotICAgIGlmIChFbnRyeSA9PSBOVUxMKQorICAgIExpc3RFbnRyeSA9IFF1ZXVl
UG9wKCZSaW5nLT5GcmVzaFNyYnMpOworICAgIGlmIChMaXN0RW50cnkgPT0gTlVMTCkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOyAgIC8vIGZyZXNoIHF1ZXVlIGlzIGVtcHR5CiAKLSAgICBTcmJFeHQg
PSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwgRW50cnkpOworICAgIFNy
YkV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOVkJEX1NSQkVYVCwgTGlzdEVu
dHJ5KTsKIAogICAgIHN3aXRjaCAoQ2RiX09wZXJhdGlvbkV4KFNyYkV4dC0+U3JiKSkgewogICAg
IGNhc2UgU0NTSU9QX1JFQUQ6CkBAIC0xMTEwLDcgKzEwODEsNyBAQCBSaW5nUHJlcGFyZUZyZXNo
KAogICAgICAgICBBU1NFUlQoRkFMU0UpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgUXVl
dWVVblBvcCgmUmluZy0+RnJlc2hTcmJzLCAmU3JiRXh0LT5FbnRyeSk7CisgICAgUXVldWVVblBv
cCgmUmluZy0+RnJlc2hTcmJzLCAmU3JiRXh0LT5MaXN0RW50cnkpOwogCiAgICAgcmV0dXJuIEZB
TFNFOyAgICAgICAvLyBwcmVwYXJlIGZhaWxlZAogfQpAQCAtMTE2NiwyMiArMTEzNywyMiBAQCBS
aW5nU3VibWl0UHJlcGFyZWQoCiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIFBYRU5WQkRfUkVR
VUVTVCBSZXF1ZXN0OwotICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnk7CisgICAgICAgIFBM
SVNUX0VOVFJZICAgICBMaXN0RW50cnk7CiAKLSAgICAgICAgRW50cnkgPSBRdWV1ZVBvcCgmUmlu
Zy0+UHJlcGFyZWRSZXFzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpCisgICAgICAgIExp
c3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5QcmVwYXJlZFJlcXMpOworICAgICAgICBpZiAoTGlz
dEVudHJ5ID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBSZXF1ZXN0ID0g
Q09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9SRVFVRVNULCBFbnRyeSk7CisgICAgICAg
IFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTlZCRF9SRVFVRVNULCBM
aXN0RW50cnkpOwogCi0gICAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5TdWJtaXR0ZWRSZXFzLCAm
UmVxdWVzdC0+RW50cnkpOworICAgICAgICBRdWV1ZUFwcGVuZCgmUmluZy0+U3VibWl0dGVkUmVx
cywgJlJlcXVlc3QtPkxpc3RFbnRyeSk7CiAgICAgICAgIEtlTWVtb3J5QmFycmllcigpOwogCiAg
ICAgICAgIGlmIChSaW5nU3VibWl0KFJpbmcsIFJlcXVlc3QpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgUXVldWVSZW1vdmUoJlJpbmctPlN1Ym1pdHRlZFJlcXMsICZSZXF1ZXN0
LT5FbnRyeSk7Ci0gICAgICAgIFF1ZXVlVW5Qb3AoJlJpbmctPlByZXBhcmVkUmVxcywgJlJlcXVl
c3QtPkVudHJ5KTsKKyAgICAgICAgUXVldWVSZW1vdmUoJlJpbmctPlN1Ym1pdHRlZFJlcXMsICZS
ZXF1ZXN0LT5MaXN0RW50cnkpOworICAgICAgICBRdWV1ZVVuUG9wKCZSaW5nLT5QcmVwYXJlZFJl
cXMsICZSZXF1ZXN0LT5MaXN0RW50cnkpOwogICAgICAgICByZXR1cm4gRkFMU0U7ICAgLy8gcmlu
ZyBmdWxsCiAgICAgfQogCkBAIC0xMjA3LDEyICsxMTc4LDE3IEBAIFJpbmdDb21wbGV0ZVNodXRk
b3duKAogICAgIFRhcmdldCA9IEZyb250ZW5kR2V0VGFyZ2V0KFJpbmctPkZyb250ZW5kKTsKICAg
ICBBZGFwdGVyID0gVGFyZ2V0R2V0QWRhcHRlcihUYXJnZXQpOwogICAgIGZvciAoOzspIHsKLSAg
ICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAgICAgUExJU1RfRU5UUlkgICAgIEVu
dHJ5ID0gUXVldWVQb3AoJlJpbmctPlNodXRkb3duU3Jicyk7Ci0gICAgICAgIGlmIChFbnRyeSA9
PSBOVUxMKQorICAgICAgICBQWEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dDsKKyAgICAgICAgUFND
U0lfUkVRVUVTVF9CTE9DSyBTcmI7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVu
dHJ5OworCisgICAgICAgIExpc3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5TaHV0ZG93blNyYnMp
OworICAgICAgICBpZiAoTGlzdEVudHJ5ID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgU3JiRXh0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TUkJFWFQsIEVu
dHJ5KTsKLSAgICAgICAgU3JiRXh0LT5TcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfU1VDQ0VT
UzsKKyAgICAgICAgU3JiRXh0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRf
U1JCRVhULCBMaXN0RW50cnkpOworICAgICAgICBTcmIgPSBTcmJFeHQtPlNyYjsKKyAgICAgICAg
CisgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOwogICAgICAgICBB
ZGFwdGVyQ29tcGxldGVTcmIoQWRhcHRlciwgU3JiRXh0KTsKICAgICB9CiB9CkBAIC0xMjY5LDcg
KzEyNDUsNyBAQCBSaW5nU3VibWl0UmVxdWVzdHMoCiBzdGF0aWMgVk9JRAogUmluZ0NvbXBsZXRl
UmVzcG9uc2UoCiAgICAgSU4gIFBYRU5WQkRfUklORyAgICBSaW5nLAotICAgIElOICBVTE9ORyAg
ICAgICAgICAgVGFnLAorICAgIElOICBVTE9ORzY0ICAgICAgICAgSWQsCiAgICAgSU4gIFNIT1JU
ICAgICAgICAgICBTdGF0dXMKICAgICApCiB7CkBAIC0xMjc3LDEzICsxMjUzLDEyIEBAIFJpbmdD
b21wbGV0ZVJlc3BvbnNlKAogICAgIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgU3JiOwogICAgIFBYRU5W
QkRfU1JCRVhUICAgICAgU3JiRXh0OwogCi0gICAgUmVxdWVzdCA9IFJpbmdSZXF1ZXN0RnJvbVRh
ZyhSaW5nLCBUYWcpOworICAgIFJlcXVlc3QgPSBSaW5nRmluZFJlcXVlc3QoUmluZywgSWQpOwog
ICAgIGlmIChSZXF1ZXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNyYiAgICAg
PSBSZXF1ZXN0LT5TcmI7Ci0gICAgU3JiRXh0ICA9IEdldFNyYkV4dChTcmIpOwotICAgIEFTU0VS
VDNQKFNyYkV4dCwgIT0sIE5VTEwpOworICAgIFNyYkV4dCAgPSBSZXF1ZXN0LT5TcmJFeHQ7Cisg
ICAgU3JiICAgICA9IFNyYkV4dC0+U3JiOwogCiAgICAgc3dpdGNoIChTdGF0dXMpIHsKICAgICBj
YXNlIEJMS0lGX1JTUF9PS0FZOgpAQCAtMTI5OSwxMCArMTI3NCwxMCBAQCBSaW5nQ29tcGxldGVS
ZXNwb25zZSgKIAogICAgIGNhc2UgQkxLSUZfUlNQX0VSUk9SOgogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFdhcm5pbmcoIlRhcmdldFslZF0gOiAlcyBCTEtJRl9SU1BfRVJST1IgKFRhZyAleClcbiIs
CisgICAgICAgIFdhcm5pbmcoIlRhcmdldFslZF0gOiAlcyBCTEtJRl9SU1BfRVJST1IgKFRhZyAl
bGx4KVxuIiwKICAgICAgICAgICAgICAgICBGcm9udGVuZEdldFRhcmdldElkKFJpbmctPkZyb250
ZW5kKSwKICAgICAgICAgICAgICAgICBfX0Jsa2lmT3BlcmF0aW9uTmFtZShSZXF1ZXN0LT5PcGVy
YXRpb24pLAotICAgICAgICAgICAgICAgIFRhZyk7CisgICAgICAgICAgICAgICAgSWQpOwogICAg
ICAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzMTAsNyArMTI4NSw3IEBAIFJpbmdDb21wbGV0ZVJlc3BvbnNlKAogICAgIFJp
bmdQdXRSZXF1ZXN0KFJpbmcsIFJlcXVlc3QpOwogCiAgICAgLy8gY29tcGxldGUgc3JiCi0gICAg
aWYgKEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJFeHQtPkNvdW50KSA9PSAwKSB7CisgICAgaWYg
KEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJFeHQtPlJlcXVlc3RDb3VudCkgPT0gMCkgewogICAg
ICAgICBQWEVOVkJEX1RBUkdFVCAgVGFyZ2V0ID0gRnJvbnRlbmRHZXRUYXJnZXQoUmluZy0+RnJv
bnRlbmQpOwogICAgICAgICBQWEVOVkJEX0FEQVBURVIgQWRhcHRlciA9IFRhcmdldEdldEFkYXB0
ZXIoVGFyZ2V0KTsKIApAQCAtMTM1OCwxOCArMTMzMywxNCBAQCBSaW5nUG9sbCgKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIHdoaWxlIChyc3BfY29ucyAhPSByc3BfcHJvZCAmJiAhUmV0
cnkpIHsKLSAgICAgICAgICAgIGJsa2lmX3Jlc3BvbnNlX3QqICAgUmVzcG9uc2U7Ci0gICAgICAg
ICAgICBVTE9ORyAgICAgICAgICAgICAgIFRhZzsKKyAgICAgICAgICAgIGJsa2lmX3Jlc3BvbnNl
X3QqICAgcnNwOwogCi0gICAgICAgICAgICBSZXNwb25zZSA9IFJJTkdfR0VUX1JFU1BPTlNFKCZS
aW5nLT5Gcm9udCwgcnNwX2NvbnMpOworICAgICAgICAgICAgcnNwID0gUklOR19HRVRfUkVTUE9O
U0UoJlJpbmctPkZyb250LCByc3BfY29ucyk7CiAgICAgICAgICAgICArK3JzcF9jb25zOworICAg
ICAgICAgICAgKytSaW5nLT5SZWNlaXZlZDsKIAotICAgICAgICAgICAgaWYgKF9fUmluZ1B1dFRh
ZyhSaW5nLCBSZXNwb25zZS0+aWQsICZUYWcpKSB7Ci0gICAgICAgICAgICAgICAgKytSaW5nLT5S
ZWNlaXZlZDsKLSAgICAgICAgICAgICAgICBSaW5nQ29tcGxldGVSZXNwb25zZShSaW5nLCBUYWcs
IFJlc3BvbnNlLT5zdGF0dXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBSdGxaZXJv
TWVtb3J5KFJlc3BvbnNlLCBzaXplb2YodW5pb24gYmxraWZfc3JpbmdfZW50cnkpKTsKKyAgICAg
ICAgICAgIFJpbmdDb21wbGV0ZVJlc3BvbnNlKFJpbmcsIHJzcC0+aWQsIHJzcC0+c3RhdHVzKTsK
KyAgICAgICAgICAgIFJ0bFplcm9NZW1vcnkocnNwLCBzaXplb2YodW5pb24gYmxraWZfc3Jpbmdf
ZW50cnkpKTsKIAogICAgICAgICAgICAgaWYgKHJzcF9jb25zIC0gUmluZy0+RnJvbnQucnNwX2Nv
bnMgPiBSSU5HX1NJWkUoJlJpbmctPkZyb250KSAvIDQpCiAgICAgICAgICAgICAgICAgUmV0cnkg
PSBUUlVFOwpAQCAtMTk2MCwzMiArMTkzMSw0MCBAQCBSaW5nRGlzYWJsZSgKIAogICAgIC8vIEFi
b3J0IEZyZXNoIFNSQnMKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFBYRU5WQkRfU1JCRVhUICBT
cmJFeHQ7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5G
cmVzaFNyYnMpOwotICAgICAgICBpZiAoRW50cnkgPT0gTlVMTCkKKyAgICAgICAgUFhFTlZCRF9T
UkJFWFQgICAgICBTcmJFeHQ7CisgICAgICAgIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgU3JiOworICAg
ICAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKworICAgICAgICBMaXN0RW50cnkg
PSBRdWV1ZVBvcCgmUmluZy0+RnJlc2hTcmJzKTsKKyAgICAgICAgaWYgKExpc3RFbnRyeSA9PSBO
VUxMKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFNyYkV4dCA9IENPTlRBSU5JTkdfUkVD
T1JEKEVudHJ5LCBYRU5WQkRfU1JCRVhULCBFbnRyeSk7CisgICAgICAgIFNyYkV4dCA9IENPTlRB
SU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOVkJEX1NSQkVYVCwgTGlzdEVudHJ5KTsKKyAgICAg
ICAgU3JiID0gU3JiRXh0LT5TcmI7CiAKLSAgICAgICAgU3JiRXh0LT5TcmItPlNyYlN0YXR1cyA9
IFNSQl9TVEFUVVNfQUJPUlRFRDsKLSAgICAgICAgU3JiRXh0LT5TcmItPlNjc2lTdGF0dXMgPSAw
eDQwOyAvLyBTQ1NJX0FCT1JURUQ7CisgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRV
U19BQk9SVEVEOworICAgICAgICBTcmItPlNjc2lTdGF0dXMgPSAweDQwOyAvLyBTQ1NJX0FCT1JU
RUQ7CiAgICAgICAgIEFkYXB0ZXJDb21wbGV0ZVNyYihBZGFwdGVyLCBTcmJFeHQpOwogICAgIH0K
IAogICAgIC8vIEZhaWwgUHJlcGFyZWRSZXFzCiAgICAgZm9yICg7OykgewotICAgICAgICBQWEVO
VkJEX1NSQkVYVCAgU3JiRXh0OwotICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsKLSAg
ICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPlByZXBhcmVkUmVx
cyk7Ci0gICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQorICAgICAgICBQWEVOVkJEX1NSQkVYVCAg
ICAgIFNyYkV4dDsKKyAgICAgICAgUFNDU0lfUkVRVUVTVF9CTE9DSyBTcmI7CisgICAgICAgIFBY
RU5WQkRfUkVRVUVTVCAgICAgUmVxdWVzdDsKKyAgICAgICAgUExJU1RfRU5UUlkgICAgICAgICBM
aXN0RW50cnk7CisKKyAgICAgICAgTGlzdEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPlByZXBhcmVk
UmVxcyk7CisgICAgICAgIGlmIChMaXN0RW50cnkgPT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9SRVFV
RVNULCBFbnRyeSk7Ci0gICAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChSZXF1ZXN0LT5TcmIpOwor
ICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRfUkVR
VUVTVCwgTGlzdEVudHJ5KTsKKyAgICAgICAgU3JiRXh0ID0gUmVxdWVzdC0+U3JiRXh0OworICAg
ICAgICBTcmIgPSBTcmJFeHQtPlNyYjsKIAotICAgICAgICBTcmJFeHQtPlNyYi0+U3JiU3RhdHVz
ID0gU1JCX1NUQVRVU19BQk9SVEVEOwogICAgICAgICBSaW5nUHV0UmVxdWVzdChSaW5nLCBSZXF1
ZXN0KTsKIAotICAgICAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQp
ID09IDApIHsKLSAgICAgICAgICAgIFNyYkV4dC0+U3JiLT5TY3NpU3RhdHVzID0gMHg0MDsgLy8g
U0NTSV9BQk9SVEVECisgICAgICAgIGlmIChJbnRlcmxvY2tlZERlY3JlbWVudCgmU3JiRXh0LT5S
ZXF1ZXN0Q291bnQpID09IDApIHsKKyAgICAgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NU
QVRVU19BQk9SVEVEOworICAgICAgICAgICAgU3JiLT5TY3NpU3RhdHVzID0gMHg0MDsgLy8gU0NT
SV9BQk9SVEVECiAgICAgICAgICAgICBBZGFwdGVyQ29tcGxldGVTcmIoQWRhcHRlciwgU3JiRXh0
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIwNzIsNyArMjA1MSw3IEBAIFJpbmdRdWV1ZVJlcXVl
c3QoCiAgICAgKQogewogICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5GcmVzaFNyYnMsCi0gICAgICAg
ICAgICAgICAgJlNyYkV4dC0+RW50cnkpOworICAgICAgICAgICAgICAgICZTcmJFeHQtPkxpc3RF
bnRyeSk7CiAKICAgICBpZiAoIVJpbmctPkVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
ODgsNyArMjA2Nyw3IEBAIFJpbmdRdWV1ZVNodXRkb3duKAogICAgICkKIHsKICAgICBRdWV1ZUFw
cGVuZCgmUmluZy0+U2h1dGRvd25TcmJzLAotICAgICAgICAgICAgICAgICZTcmJFeHQtPkVudHJ5
KTsKKyAgICAgICAgICAgICAgICAmU3JiRXh0LT5MaXN0RW50cnkpOwogCiAgICAgaWYgKCFSaW5n
LT5FbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMTA4LDQ3ICsyMDg3LDUzIEBAIFJpbmdS
ZVF1ZXVlUmVxdWVzdHMoCiAKICAgICAvLyBwb3AgYWxsIHN1Ym1pdHRlZCByZXF1ZXN0cywgY2xl
YW51cCBhbmQgYWRkIGFzc29jaWF0ZWQgU1JCIHRvIGEgbGlzdAogICAgIGZvciAoOzspIHsKLSAg
ICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAgICAgUFhFTlZCRF9SRVFVRVNUIFJl
cXVlc3Q7Ci0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5T
dWJtaXR0ZWRSZXFzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpCisgICAgICAgIFBYRU5W
QkRfU1JCRVhUICAgICAgU3JiRXh0OworICAgICAgICBQWEVOVkJEX1JFUVVFU1QgICAgIFJlcXVl
c3Q7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVudHJ5OworCisgICAgICAgIExp
c3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5TdWJtaXR0ZWRSZXFzKTsKKyAgICAgICAgaWYgKExp
c3RFbnRyeSA9PSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJlcXVlc3QgPSBD
T05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsKLSAgICAgICAg
U3JiRXh0ID0gR2V0U3JiRXh0KFJlcXVlc3QtPlNyYik7CisgICAgICAgIFJlcXVlc3QgPSBDT05U
QUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTlZCRF9SRVFVRVNULCBMaXN0RW50cnkpOworICAg
ICAgICBTcmJFeHQgPSBSZXF1ZXN0LT5TcmJFeHQ7CiAKICAgICAgICAgUmluZ1B1dFJlcXVlc3Qo
UmluZywgUmVxdWVzdCk7CiAKLSAgICAgICAgaWYgKEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJF
eHQtPkNvdW50KSA9PSAwKSB7Ci0gICAgICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlNy
YkV4dC0+RW50cnkpOworICAgICAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+
UmVxdWVzdENvdW50KSA9PSAwKSB7CisgICAgICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwg
JlNyYkV4dC0+TGlzdEVudHJ5KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIHBvcCBhbGwg
cHJlcGFyZWQgcmVxdWVzdHMsIGNsZWFudXAgYW5kIGFkZCBhc3NvY2lhdGVkIFNSQiB0byBhIGxp
c3QKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQ7Ci0gICAg
ICAgIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0OwotICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50
cnkgPSBRdWV1ZVBvcCgmUmluZy0+UHJlcGFyZWRSZXFzKTsKLSAgICAgICAgaWYgKEVudHJ5ID09
IE5VTEwpCisgICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0OworICAgICAgICBQWEVO
VkJEX1JFUVVFU1QgICAgIFJlcXVlc3Q7CisgICAgICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlz
dEVudHJ5OworCisgICAgICAgIExpc3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5QcmVwYXJlZFJl
cXMpOworICAgICAgICBpZiAoTGlzdEVudHJ5ID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVT
VCwgRW50cnkpOwotICAgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoUmVxdWVzdC0+U3JiKTsKKyAg
ICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOVkJEX1JFUVVF
U1QsIExpc3RFbnRyeSk7CisgICAgICAgIFNyYkV4dCA9IFJlcXVlc3QtPlNyYkV4dDsKIAogICAg
ICAgICBSaW5nUHV0UmVxdWVzdChSaW5nLCBSZXF1ZXN0KTsKIAotICAgICAgICBpZiAoSW50ZXJs
b2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDApIHsKLSAgICAgICAgICAgIEluc2Vy
dFRhaWxMaXN0KCZMaXN0LCAmU3JiRXh0LT5FbnRyeSk7CisgICAgICAgIGlmIChJbnRlcmxvY2tl
ZERlY3JlbWVudCgmU3JiRXh0LT5SZXF1ZXN0Q291bnQpID09IDApIHsKKyAgICAgICAgICAgIElu
c2VydFRhaWxMaXN0KCZMaXN0LCAmU3JiRXh0LT5MaXN0RW50cnkpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gZm9yZWFjaCBTUkIgaW4gbGlzdCwgcHV0IG9uIHN0YXJ0IG9mIEZyZXNoU3Ji
cwogICAgIGZvciAoOzspIHsKLSAgICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsKLSAgICAg
ICAgUExJU1RfRU5UUlkgICAgIEVudHJ5ID0gUmVtb3ZlVGFpbExpc3QoJkxpc3QpOwotICAgICAg
ICBpZiAoRW50cnkgPT0gJkxpc3QpCisgICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0
OworICAgICAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKworICAgICAgICBMaXN0
RW50cnkgPSBSZW1vdmVUYWlsTGlzdCgmTGlzdCk7CisgICAgICAgIGlmIChMaXN0RW50cnkgPT0g
Jkxpc3QpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgU3JiRXh0ID0gQ09OVEFJTklOR19S
RUNPUkQoRW50cnksIFhFTlZCRF9TUkJFWFQsIEVudHJ5KTsKKyAgICAgICAgU3JiRXh0ID0gQ09O
VEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRfU1JCRVhULCBMaXN0RW50cnkpOwogCi0g
ICAgICAgIFF1ZXVlVW5Qb3AoJlJpbmctPkZyZXNoU3JicywgJlNyYkV4dC0+RW50cnkpOworICAg
ICAgICBRdWV1ZVVuUG9wKCZSaW5nLT5GcmVzaFNyYnMsICZTcmJFeHQtPkxpc3RFbnRyeSk7CiAg
ICAgfQogCiAgICAgLy8gbm93IHRoZSBmaXJzdCBzZXQgb2YgcmVxdWVzdHMgcG9wcGVkIG9mZiBz
dWJtaXR0ZWQgbGlzdCBpcyB0aGUgbmV4dCBTUkIKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvc3Ji
ZXh0LmggYi9zcmMveGVudmJkL3NyYmV4dC5oCmluZGV4IDU0ZWMxMTkuLmM4NGMyNDEgMTAwNjQ0
Ci0tLSBhL3NyYy94ZW52YmQvc3JiZXh0LmgKKysrIGIvc3JjL3hlbnZiZC9zcmJleHQuaApAQCAt
MzMsOSArMzMsMzIgQEAKICNkZWZpbmUgX1hFTlZCRF9TUkJFWFRfSAogCiAjaW5jbHVkZSA8bnRk
ZGsuaD4KLSNpbmNsdWRlIDx4ZW52YmQtc3RvcnBvcnQuaD4KKyNpbmNsdWRlIDxzdG9ycG9ydC5o
PgogI2luY2x1ZGUgPHhlbi5oPgotI2luY2x1ZGUgImFzc2VydC5oIgorCit0eXBlZGVmIHN0cnVj
dCBfWEVOVkJEX1NSQkVYVCB7CisgICAgUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgU3JiOworICAg
IExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RFbnRyeTsKKyAgICBMT05HICAgICAgICAgICAg
ICAgICAgICBSZXF1ZXN0Q291bnQ7CisKKyAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBTR0xp
c3Q7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgU0dJbmRleDsKKyAgICBVTE9ORyAgICAg
ICAgICAgICAgICAgICBTR09mZnNldDsKK30gWEVOVkJEX1NSQkVYVCwgKlBYRU5WQkRfU1JCRVhU
OworCit0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX1JFUVVFU1QgeworICAgIFBYRU5WQkRfU1JCRVhU
ICAgICAgICAgIFNyYkV4dDsKKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0RW50cnk7
CisKKyAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBPcGVyYXRpb247ICAvLyBCTEtJRl9PUF97
UkVBRC9XUklURS9CQVJSSUVSL0RJU0NBUkR9CisgICAgVUNIQVIgICAgICAgICAgICAgICAgICAg
RmxhZ3M7ICAgICAgLy8gQkxLSUZfT1BfRElTQ0FSRCBvbmx5CisgICAgVVNIT1JUICAgICAgICAg
ICAgICAgICAgTnJTZWdtZW50czsgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJVEV9IG9ubHksIDAtMTEg
KGRpcmVjdCkgb3IgMTEtNDA5NiAoaW5kaXJlY3QpCisgICAgTElTVF9FTlRSWSAgICAgICAgICAg
ICAgU2VnbWVudHM7ICAgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJVEV9IG9ubHkKKworICAgIFVMT05H
NjQgICAgICAgICAgICAgICAgIEZpcnN0U2VjdG9yOworICAgIFVMT05HNjQgICAgICAgICAgICAg
ICAgIE5yU2VjdG9yczsgIC8vIEJMS0lGX09QX0RJU0NBUkQgb25seQorICAgIExJU1RfRU5UUlkg
ICAgICAgICAgICAgIEluZGlyZWN0czsgIC8vIEJMS0lGX09QX3tSRUFEL1dSSVRFfSB3aXRoIE5y
U2VnbWVudHMgPiAxMSBvbmx5Cit9IFhFTlZCRF9SRVFVRVNULCAqUFhFTlZCRF9SRVFVRVNUOwog
CiB0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0JPVU5DRSB7CiAgICAgUFZPSUQgICAgICAgICAgICAg
ICAgICAgQm91bmNlUHRyOwpAQCAtNDUsNiArNjgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX1hFTlZC
RF9CT1VOQ0UgewogICAgIFBGTl9OVU1CRVIgICAgICAgICAgICAgIFNvdXJjZVBmblsyXTsKIH0g
WEVOVkJEX0JPVU5DRSwgKlBYRU5WQkRfQk9VTkNFOwogCit0eXBlZGVmIHN0cnVjdCBfWEVOVkJE
X1NFR01FTlQgeworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RFbnRyeTsKKyAgICBQ
Vk9JRCAgICAgICAgICAgICAgICAgICBHcmFudDsKKyAgICBVQ0hBUiAgICAgICAgICAgICAgICAg
ICBGaXJzdFNlY3RvcjsKKyAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBMYXN0U2VjdG9yOwor
ICAgIFBYRU5WQkRfQk9VTkNFICAgICAgICAgIEJvdW5jZTsKK30gWEVOVkJEX1NFR01FTlQsICpQ
WEVOVkJEX1NFR01FTlQ7CisKICNwcmFnbWEgcGFjayhwdXNoLCAxKQogdHlwZWRlZiBzdHJ1Y3Qg
X0JMS0lGX1NFR01FTlQgewogICAgIFVMT05HICAgICAgICAgICAgICAgICAgIEdyYW50UmVmOwpA
QCAtNTYsNzQgKzg3LDExIEBAIHR5cGVkZWYgc3RydWN0IF9CTEtJRl9TRUdNRU5UIHsKIAogI2Rl
ZmluZSBYRU5WQkRfTUFYX1NFR01FTlRTX1BFUl9QQUdFICAgIChQQUdFX1NJWkUgLyBzaXplb2Yo
QkxLSUZfU0VHTUVOVCkpCiAKLS8vIEludGVybmFsIGluZGlyZWN0IGNvbnRleHQKIHR5cGVkZWYg
c3RydWN0IF9YRU5WQkRfSU5ESVJFQ1QgewotICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVu
dHJ5OworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RFbnRyeTsKICAgICBQQkxLSUZf
U0VHTUVOVCAgICAgICAgICBQYWdlOwogICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEdyYW50
OwogICAgIFBNREwgICAgICAgICAgICAgICAgICAgIE1kbDsKIH0gWEVOVkJEX0lORElSRUNULCAq
UFhFTlZCRF9JTkRJUkVDVDsKIAotLy8gSW50ZXJuYWwgc2VnbWVudCBjb250ZXh0Ci10eXBlZGVm
IHN0cnVjdCBfWEVOVkJEX1NFR01FTlQgewotICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVu
dHJ5OwotICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEdyYW50OwotICAgIFVDSEFSICAgICAg
ICAgICAgICAgICAgIEZpcnN0U2VjdG9yOwotICAgIFVDSEFSICAgICAgICAgICAgICAgICAgIExh
c3RTZWN0b3I7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAgTGVuZ3RoOwotICAgIFBYRU5W
QkRfQk9VTkNFICAgICAgICAgIEJvdW5jZTsKLX0gWEVOVkJEX1NFR01FTlQsICpQWEVOVkJEX1NF
R01FTlQ7Ci0KLS8vIEludGVybmFsIHJlcXVlc3QgY29udGV4dAotdHlwZWRlZiBzdHJ1Y3QgX1hF
TlZCRF9SRVFVRVNUIHsKLSAgICBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICBTcmI7Ci0gICAgTElT
VF9FTlRSWSAgICAgICAgICAgICAgRW50cnk7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAg
SWQ7Ci0KLSAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBPcGVyYXRpb247ICAvLyBCTEtJRl9P
UF97UkVBRC9XUklURS9CQVJSSUVSL0RJU0NBUkR9Ci0gICAgVUNIQVIgICAgICAgICAgICAgICAg
ICAgRmxhZ3M7ICAgICAgLy8gQkxLSUZfT1BfRElTQ0FSRCBvbmx5Ci0gICAgVVNIT1JUICAgICAg
ICAgICAgICAgICAgTnJTZWdtZW50czsgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJVEV9IG9ubHksIDAt
MTEgKGRpcmVjdCkgb3IgMTEtNDA5NiAoaW5kaXJlY3QpCi0gICAgTElTVF9FTlRSWSAgICAgICAg
ICAgICAgU2VnbWVudHM7ICAgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJVEV9IG9ubHkKLQotICAgIFVM
T05HNjQgICAgICAgICAgICAgICAgIEZpcnN0U2VjdG9yOwotICAgIFVMT05HNjQgICAgICAgICAg
ICAgICAgIE5yU2VjdG9yczsgIC8vIEJMS0lGX09QX0RJU0NBUkQgb25seQotICAgIExJU1RfRU5U
UlkgICAgICAgICAgICAgIEluZGlyZWN0czsgIC8vIEJMS0lGX09QX3tSRUFEL1dSSVRFfSB3aXRo
IE5yU2VnbWVudHMgPiAxMSBvbmx5Ci19IFhFTlZCRF9SRVFVRVNULCAqUFhFTlZCRF9SRVFVRVNU
OwotCi0vLyBTUkJFeHRlbnNpb24gLSBjb250ZXh0IGZvciBTUkJzCi10eXBlZGVmIHN0cnVjdCBf
WEVOVkJEX1NSQkVYVCB7Ci0gICAgUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgU3JiOwotICAgIExJ
U1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5OwotICAgIExPTkcgICAgICAgICAgICAgICAgICAg
IENvdW50OwotCi0gICAgUFZPSUQgICAgICAgICAgICAgICAgICAgU0dMaXN0OwotICAgIFVMT05H
ICAgICAgICAgICAgICAgICAgIFNHSW5kZXg7Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAg
U0dPZmZzZXQ7Ci19IFhFTlZCRF9TUkJFWFQsICpQWEVOVkJEX1NSQkVYVDsKLQotRk9SQ0VJTkxJ
TkUgUFhFTlZCRF9TUkJFWFQKLUdldFNyYkV4dCgKLSAgICBfX2luIFBTQ1NJX1JFUVVFU1RfQkxP
Q0sgICAgIFNyYgotICAgICkKLXsKLSAgICBpZiAoU3JiICYmIFNyYi0+RnVuY3Rpb24gIT0gU1JC
X0ZVTkNUSU9OX1NUT1JBR0VfUkVRVUVTVF9CTE9DSykgewotICAgICAgICBBU1NFUlQzUChTcmIt
PlNyYkV4dGVuc2lvbiwgIT0sIE5VTEwpOwotICAgICAgICByZXR1cm4gU3JiLT5TcmJFeHRlbnNp
b247Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi1GT1JDRUlOTElORSBWT0lECi1Jbml0
U3JiRXh0KAotICAgIF9faW4gUFNDU0lfUkVRVUVTVF9CTE9DSyAgICBTcmIKLSAgICApCi17Ci0g
ICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOwotICAgIGlmIChTcmJF
eHQpIHsKLSAgICAgICAgUnRsWmVyb01lbW9yeShTcmJFeHQsIHNpemVvZihYRU5WQkRfU1JCRVhU
KSk7Ci0gICAgICAgIFNyYkV4dC0+U3JiID0gU3JiOwotICAgIH0KLSAgICBTcmItPlNyYlN0YXR1
cyA9IFNSQl9TVEFUVVNfSU5WQUxJRF9SRVFVRVNUOwotfQotCiAjZW5kaWYgLy8gX1hFTlZCRF9T
UkJFWFRfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC90YXJnZXQuYyBiL3NyYy94ZW52YmQvdGFy
Z2V0LmMKaW5kZXggMzdiOWEyZi4uZTQ2NDU5YiAxMDA2NDQKLS0tIGEvc3JjL3hlbnZiZC90YXJn
ZXQuYworKysgYi9zcmMveGVudmJkL3RhcmdldC5jCkBAIC0yNjYsNyArMjY2LDcgQEAgVGFyZ2V0
UmVhZFdyaXRlKAogICAgICkKIHsKICAgICBQWEVOVkJEX0RJU0tJTkZPICAgIERpc2tJbmZvID0g
RnJvbnRlbmRHZXREaXNrSW5mbyhUYXJnZXQtPkZyb250ZW5kKTsKLSAgICBQWEVOVkJEX1NSQkVY
VCAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOworICAgIFBYRU5WQkRfU1JCRVhUICAgICAg
U3JiRXh0ID0gU3JiLT5TcmJFeHRlbnNpb247CiAgICAgUFhFTlZCRF9SSU5HICAgICAgICBSaW5n
ID0gRnJvbnRlbmRHZXRSaW5nKFRhcmdldC0+RnJvbnRlbmQpOwogCiAgICAgaWYgKEZyb250ZW5k
R2V0Q2FwcyhUYXJnZXQtPkZyb250ZW5kKS0+Q29ubmVjdGVkID09IEZBTFNFKSB7CkBAIC0yOTMs
NyArMjkzLDcgQEAgVGFyZ2V0U3luY0NhY2hlKAogICAgIF9faW4gUFNDU0lfUkVRVUVTVF9CTE9D
SyAgICAgU3JiCiAgICAgKQogewotICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0ID0gR2V0
U3JiRXh0KFNyYik7CisgICAgUFhFTlZCRF9TUkJFWFQgICAgICBTcmJFeHQgPSBTcmItPlNyYkV4
dGVuc2lvbjsKICAgICBQWEVOVkJEX1JJTkcgICAgICAgIFJpbmcgPSBGcm9udGVuZEdldFJpbmco
VGFyZ2V0LT5Gcm9udGVuZCk7CiAKICAgICBpZiAoRnJvbnRlbmRHZXRDYXBzKFRhcmdldC0+RnJv
bnRlbmQpLT5Db25uZWN0ZWQgPT0gRkFMU0UpIHsKQEAgLTMyMSw3ICszMjEsNyBAQCBUYXJnZXRV
bm1hcCgKICAgICBfX2luIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgICAgIFNyYgogICAgICkKIHsKLSAg
ICBQWEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOworICAgIFBYRU5W
QkRfU1JCRVhUICAgICAgU3JiRXh0ID0gU3JiLT5TcmJFeHRlbnNpb247CiAgICAgUFhFTlZCRF9S
SU5HICAgICAgICBSaW5nID0gRnJvbnRlbmRHZXRSaW5nKFRhcmdldC0+RnJvbnRlbmQpOwogCiAg
ICAgaWYgKEZyb250ZW5kR2V0Q2FwcyhUYXJnZXQtPkZyb250ZW5kKS0+Q29ubmVjdGVkID09IEZB
TFNFKSB7Ci0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 26 13:51:01 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Sep 2017 13:51:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dwqGL-0002PI-I4; Tue, 26 Sep 2017 13:51:01 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=435739c2e=owen.smith@citrix.com>)
 id 1dwqGJ-0002Oo-Vy
 for win-pv-devel@lists.xenproject.org; Tue, 26 Sep 2017 13:51:00 +0000
Received: from [193.109.254.147] by server-7.bemta-6.messagelabs.com id
 AE/B3-03610-34B5AC95; Tue, 26 Sep 2017 13:50:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjkeJIrShJLcpLzFFi42JxWrrBXtcy+lS
 kwYRmC4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCacaf9M1PBLs2K/fNuszcwfpDpYuTkkBDwl7j1
 cxc7iM0mICvxceVnZhBbREBdYt/nrUwgNrOAmsT1/V2sILawgJ7Eof9NYPUsAqoSf98cYAGxe
 QWsJJp/XmGHmCknMXnxJcYuRg4OTgFriS33jUDCQkAlB/68ZIGwlSS+LX7BDNEqKHFy5hMWiF
 USEgdfvGCewMg7C0lqFpLUAkamVYzqxalFZalFuiZ6SUWZ6RkluYmZObqGBmZ6uanFxYnpqTm
 JScV6yfm5mxiBYcMABDsYuy/7H2KU5GBSEuVVlDsVKcSXlJ9SmZFYnBFfVJqTWnyIUYaDQ0mC
 VyIKKCdYlJqeWpGWmQMMYJi0BAePkghvFEiat7ggMbc4Mx0idYpRl6Pj5t0/TEIsefl5qVLiv
 PYgRQIgRRmleXAjYNF0iVFWSpiXEegoIZ6C1KLczBJU+VeM4hyMSsK8NiBTeDLzSuA2vQI6gg
 noiN6pJ0COKElESEk1MHr9OKzfvrBE0O1Gh+zX/Z+1fI/u47ru9am3Zl1ntUuXVSWX2RHbfTO
 mNdQ09f+qNth0dPr8laaT0ibdzDoVd/2IcbdeQUyBF2fQktdfOU1zFZ81HOl4d6Tt4ipDhuPV
 33VWGPKpVOSaei+P0d4+PUj10Lk2+UNZEoKGV5Zbf/95TUf89fNtU5RYijMSDbWYi4oTATt2x
 vyhAgAA
X-Env-Sender: prvs=435739c2e=owen.smith@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1506433847!118300258!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20531 invoked from network); 26 Sep 2017 13:50:49 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 26 Sep 2017 13:50:49 -0000
X-IronPort-AV: E=Sophos;i="5.42,441,1500940800"; d="scan'208";a="449258592"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 26 Sep 2017 14:50:11 +0100
Message-ID: <20170926135015.17476-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
References: <20170926135015.17476-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/5] Query for CACHE interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW52YmQvYWRhcHRl
ci5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t
LQogc3JjL3hlbnZiZC9hZGFwdGVyLmggfCAgMiArKwogMiBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNl
cnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMveGVudmJkL2FkYXB0
ZXIuYyBiL3NyYy94ZW52YmQvYWRhcHRlci5jCmluZGV4IGE0MjIwZDEuLjU5NzI0YmIgMTAwNjQ0
Ci0tLSBhL3NyYy94ZW52YmQvYWRhcHRlci5jCisrKyBiL3NyYy94ZW52YmQvYWRhcHRlci5jCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogI2luY2x1ZGUgPHhlbmNkYi5o
PgogI2luY2x1ZGUgPG5hbWVzLmg+CisjaW5jbHVkZSA8Y2FjaGVfaW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8ZXZ0Y2huX2ludGVyZmFjZS5oPgog
I2luY2x1ZGUgPGdudHRhYl9pbnRlcmZhY2UuaD4KQEAgLTcxLDYgKzcyLDcgQEAgc3RydWN0IF9Y
RU5WQkRfQURBUFRFUiB7CiAgICAgUFhFTlZCRF9USFJFQUQgICAgICAgICAgICAgIERldmljZVBv
d2VyVGhyZWFkOwogICAgIFBJUlAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlckly
cDsKIAorICAgIFhFTkJVU19DQUNIRV9JTlRFUkZBQ0UgICAgICBDYWNoZUludGVyZmFjZTsKICAg
ICBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSAgICAgRXZ0Y2huSW50ZXJmYWNlOwogICAgIFhFTkJV
U19TVE9SRV9JTlRFUkZBQ0UgICAgICBTdG9yZUludGVyZmFjZTsKICAgICBYRU5CVVNfR05UVEFC
X0lOVEVSRkFDRSAgICAgR250dGFiSW50ZXJmYWNlOwpAQCAtMTIyMCw2OCArMTIyMiw3OSBAQCBB
ZGFwdGVySW5pdGlhbGl6ZSgKICAgICAgICAgZ290byBmYWlsMzsKIAogICAgIHN0YXR1cyA9IEFk
YXB0ZXJRdWVyeUludGVyZmFjZShBZGFwdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBYRU5CVVNfQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3Rv
IGZhaWw0OworCisgICAgc3RhdHVzID0gQWRhcHRlclF1ZXJ5SW50ZXJmYWNlKEFkYXB0ZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTkJVU19TVVNQRU5ELAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQWRhcHRlci0+U3VzcGVuZEludGVyZmFjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOwogICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWw0OworICAgICAgICBnb3RvIGZhaWw1
OwogCiAgICAgc3RhdHVzID0gQWRhcHRlclF1ZXJ5SW50ZXJmYWNlKEFkYXB0ZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTkJVU19ERUJVRywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkFkYXB0ZXItPkRlYnVnSW50ZXJmYWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpCi0gICAgICAgIGdvdG8gZmFpbDU7CisgICAgICAgIGdvdG8gZmFpbDY7CiAKICAgICBz
dGF0dXMgPSBBZGFwdGVyUXVlcnlJbnRlcmZhY2UoQWRhcHRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWEVOQlVTX1VOUExVRywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkFkYXB0ZXItPlVucGx1Z0ludGVyZmFjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQot
ICAgICAgICBnb3RvIGZhaWw2OworICAgICAgICBnb3RvIGZhaWw3OwogCiAgICAgc3RhdHVzID0g
QWRhcHRlclF1ZXJ5SW50ZXJmYWNlKEFkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFhFTkZJTFRfRU1VTEFURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZBZGFwdGVyLT5FbXVsYXRlZEludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCi0gICAg
ICAgIGdvdG8gZmFpbDc7CisgICAgICAgIGdvdG8gZmFpbDg7CiAKICAgICBzdGF0dXMgPSBUaHJl
YWRDcmVhdGUoQWRhcHRlclNjYW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFk
YXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZBZGFwdGVyLT5TY2FuVGhyZWFkKTsK
ICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsODsKKyAgICAg
ICAgZ290byBmYWlsOTsKIAogICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShBZGFwdGVyRGV2aWNl
UG93ZXJUaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZBZGFwdGVyLT5EZXZpY2VQb3dlclRocmVhZCk7CiAgICAgaWYg
KCFOVF9TVUNDRVNTKHN0YXR1cykpCi0gICAgICAgIGdvdG8gZmFpbDk7CisgICAgICAgIGdvdG8g
ZmFpbDEwOwogCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogCi1mYWlsOToKLSAgICBFcnJv
cigiZmFpbDlcbiIpOworZmFpbDEwOgorICAgIEVycm9yKCJmYWlsMTBcbiIpOwogICAgIFRocmVh
ZEFsZXJ0KEFkYXB0ZXItPlNjYW5UaHJlYWQpOwogICAgIFRocmVhZEpvaW4oQWRhcHRlci0+U2Nh
blRocmVhZCk7CiAgICAgQWRhcHRlci0+U2NhblRocmVhZCA9IE5VTEw7Ci1mYWlsODoKLSAgICBF
cnJvcigiZmFpbDhcbiIpOworZmFpbDk6CisgICAgRXJyb3IoImZhaWw5XG4iKTsKICAgICBSdGxa
ZXJvTWVtb3J5KCZBZGFwdGVyLT5FbXVsYXRlZEludGVyZmFjZSwKICAgICAgICAgICAgICAgICAg
IHNpemVvZiAoWEVORklMVF9FTVVMQVRFRF9JTlRFUkZBQ0UpKTsKLWZhaWw3OgotICAgIEVycm9y
KCJmYWlsN1xuIik7CitmYWlsODoKKyAgICBFcnJvcigiZmFpbDhcbiIpOwogICAgIFJ0bFplcm9N
ZW1vcnkoJkFkYXB0ZXItPlVucGx1Z0ludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgIHNpemVv
ZiAoWEVOQlVTX1VOUExVR19JTlRFUkZBQ0UpKTsKLWZhaWw2OgotICAgIEVycm9yKCJmYWlsNlxu
Iik7CitmYWlsNzoKKyAgICBFcnJvcigiZmFpbDdcbiIpOwogICAgIFJ0bFplcm9NZW1vcnkoJkFk
YXB0ZXItPkRlYnVnSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNf
REVCVUdfSU5URVJGQUNFKSk7Ci1mYWlsNToKLSAgICBFcnJvcigiZmFpbDVcbiIpOworZmFpbDY6
CisgICAgRXJyb3IoImZhaWw2XG4iKTsKICAgICBSdGxaZXJvTWVtb3J5KCZBZGFwdGVyLT5TdXNw
ZW5kSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfU1VTUEVORF9J
TlRFUkZBQ0UpKTsKK2ZhaWw1OgorICAgIEVycm9yKCJmYWlsNVxuIik7CisgICAgUnRsWmVyb01l
bW9yeSgmQWRhcHRlci0+Q2FjaGVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2Yg
KFhFTkJVU19DQUNIRV9JTlRFUkZBQ0UpKTsKIGZhaWw0OgogICAgIEVycm9yKCJmYWlsNFxuIik7
CiAgICAgUnRsWmVyb01lbW9yeSgmQWRhcHRlci0+R250dGFiSW50ZXJmYWNlLApAQCAtMTM1Miw2
ICsxMzY1LDkgQEAgQWRhcHRlclRlYXJkb3duKAogICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0ZXIt
PlN1c3BlbmRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICBzaXplb2YgKFhFTkJVU19TVVNQ
RU5EX0lOVEVSRkFDRSkpOwogCisgICAgUnRsWmVyb01lbW9yeSgmQWRhcHRlci0+Q2FjaGVJbnRl
cmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YgKFhFTkJVU19DQUNIRV9JTlRFUkZBQ0Up
KTsKKwogICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0ZXItPkdudHRhYkludGVyZmFjZSwKICAgICAg
ICAgICAgICAgICAgIHNpemVvZiAoWEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0UpKTsKIApAQCAtMjA3
Nyw2ICsyMDkzLDcgQEAgQWRhcHRlckdldCAjIyBfbmFtZSAjIyBJbnRlcmZhY2UoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAqICMjIF9uYW1lICMjIEludGVyZmFjZSA9IEFk
YXB0ZXItPiAjIyBfbmFtZSAjIyBJbnRlcmZhY2U7ICBcCiB9CiAKK0FEQVBURVJfR0VUX0lOVEVS
RkFDRShDYWNoZSwgUFhFTkJVU19DQUNIRV9JTlRFUkZBQ0UpCiBBREFQVEVSX0dFVF9JTlRFUkZB
Q0UoU3RvcmUsIFBYRU5CVVNfU1RPUkVfSU5URVJGQUNFKQogQURBUFRFUl9HRVRfSU5URVJGQUNF
KERlYnVnLCBQWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSkKIEFEQVBURVJfR0VUX0lOVEVSRkFDRShF
dnRjaG4sIFBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSkKZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQv
YWRhcHRlci5oIGIvc3JjL3hlbnZiZC9hZGFwdGVyLmgKaW5kZXggY2UwYzc5NC4uMjVmZWJjMSAx
MDA2NDQKLS0tIGEvc3JjL3hlbnZiZC9hZGFwdGVyLmgKKysrIGIvc3JjL3hlbnZiZC9hZGFwdGVy
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9BREFQVEVSIFhF
TlZCRF9BREFQVEVSLCAqUFhFTlZCRF9BREFQVEVSOwogCisjaW5jbHVkZSA8Y2FjaGVfaW50ZXJm
YWNlLmg+CiAjaW5jbHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8ZXZ0Y2huX2lu
dGVyZmFjZS5oPgogI2luY2x1ZGUgPGdudHRhYl9pbnRlcmZhY2UuaD4KQEAgLTUxLDYgKzUyLDcg
QEAgQWRhcHRlckdldCAjIyBfbmFtZSAjIyBJbnRlcmZhY2UoICAgICAgICAgICAgICAgXAogICAg
IE9VVCBfdHlwZSAgICAgICAgICAgX25hbWUgIyMgSW50ZXJmYWNlICAgICAgXAogICAgICk7CiAK
K0FEQVBURVJfR0VUX0lOVEVSRkFDRShDYWNoZSwgUFhFTkJVU19DQUNIRV9JTlRFUkZBQ0UpCiBB
REFQVEVSX0dFVF9JTlRFUkZBQ0UoU3RvcmUsIFBYRU5CVVNfU1RPUkVfSU5URVJGQUNFKQogQURB
UFRFUl9HRVRfSU5URVJGQUNFKERlYnVnLCBQWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSkKIEFEQVBU
RVJfR0VUX0lOVEVSRkFDRShFdnRjaG4sIFBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSkKLS0gCjIu
OC4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2lu
LXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2lu
LXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 29 15:05:02 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 29 Sep 2017 15:05:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dxwqa-0004nC-CM; Fri, 29 Sep 2017 15:05:00 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4384c3d6d=Paul.Durrant@citrix.com>)
 id 1dxwqY-0004ms-NQ
 for win-pv-devel@lists.xenproject.org; Fri, 29 Sep 2017 15:04:58 +0000
Received: from [193.109.254.147] by server-1.bemta-6.messagelabs.com id
 7A/05-03414-A116EC95; Fri, 29 Sep 2017 15:04:58 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQlc88Vy
 kwfwnKhZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y9bCe2wFX5wq1m3by9jA2OLUxcjBISHgJ/Fp
 plIXIycHm4COxNKj85lAbBGBAonv7+cxg9jMAmoS1/d3sYKUCws4SnQciYAocZJ4umwXO4RtJ
 HH6dx8LiM0ioCrR9uICG4jNK+AuseDNcTBbSCBLYmfHfzCbU8BaouXLY7BeRgFZiS+Nq6FWiU
 vcegJxgoSAgMSSPeeZIWxRiZeP/7FC2AYSW5fuYwE5h1lAU2L9Ln2IVkWJKd0P2SHWCkqcnPm
 EZQKj8CwkU2chdMxC0jELSccCRpZVjBrFqUVlqUW6hsZ6SUWZ6RkluYmZObqGBmZ6uanFxYnp
 qTmJScV6yfm5mxiBIc8ABDsYvywLOMQoycGkJMorEHsuUogvKT+lMiOxOCO+qDQntfgQowwHh
 5IEr1YCUE6wKDU9tSItMwcYfTBpCQ4eJRFeE5A0b3FBYm5xZjpE6hSjJcexTZf/MHHMuHkXSD
 65Nu8vkxBLXn5eqpQ4LwNIgwBIQ0ZpHtw4WIK4xCgrJczLCHSgEE9BalFuZgmq/CtGcQ5GJWH
 eKpApPJl5JXBbXwEdxAR00OSJZ0AOKklESEk1MHoz9v3/oLR4/6WtlVt91Eveae2w7LJyVw4y
 OOif9njv9SOnIv78qPI7emgub/Nk/y9LFq06mR6yQukhdx/XOfVdM78V8kSl35c4JHPYJqFxx
 bdEZ+alUxutv7BL/TAptZtxdH5XWXxLd++a1srnV8wsrQIs1x3pmFbF9GTd1/VP0+4c+f/a5b
 wSS3FGoqEWc1FxIgCZqRBhCwMAAA==
X-Env-Sender: prvs=4384c3d6d=Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-27.messagelabs.com!1506697495!66339945!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20182 invoked from network); 29 Sep 2017 15:04:55 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 29 Sep 2017 15:04:55 -0000
X-IronPort-AV: E=Sophos;i="5.42,452,1500940800"; d="scan'208";a="53722406"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/5] Query for CACHE interface
Thread-Index: AQHTNs6CNy3nD2EOcUWdTGHOeuhpq6LL+szg
Date: Fri, 29 Sep 2017 15:04:54 +0000
Message-ID: <afb3ecca415f421f9990f922028accd2@AMSPEX02CL03.citrite.net>
References: <20170926135015.17476-1-owen.smith@citrix.com>
 <20170926135015.17476-2-owen.smith@citrix.com>
In-Reply-To: <20170926135015.17476-2-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/5] Query for CACHE interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNiBTZXB0ZW1iZXIgMjAxNyAxNDo1
MA0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAxLzVdIFF1ZXJ5IGZvciBDQUNIRSBpbnRlcmZhY2UNCj4gDQo+IEZyb206IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8
cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMveGVudmJkL2FkYXB0ZXIu
YyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+IC0tLS0t
LS0tDQo+ICBzcmMveGVudmJkL2FkYXB0ZXIuaCB8ICAyICsrDQo+ICAyIGZpbGVzIGNoYW5nZWQs
IDM1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Ny
Yy94ZW52YmQvYWRhcHRlci5jIGIvc3JjL3hlbnZiZC9hZGFwdGVyLmMNCj4gaW5kZXggYTQyMjBk
MS4uNTk3MjRiYiAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbnZiZC9hZGFwdGVyLmMNCj4gKysrIGIv
c3JjL3hlbnZiZC9hZGFwdGVyLmMNCj4gQEAgLTM4LDYgKzM4LDcgQEANCj4gICNpbmNsdWRlIDx2
ZXJzaW9uLmg+DQo+ICAjaW5jbHVkZSA8eGVuY2RiLmg+DQo+ICAjaW5jbHVkZSA8bmFtZXMuaD4N
Cj4gKyNpbmNsdWRlIDxjYWNoZV9pbnRlcmZhY2UuaD4NCj4gICNpbmNsdWRlIDxzdG9yZV9pbnRl
cmZhY2UuaD4NCj4gICNpbmNsdWRlIDxldnRjaG5faW50ZXJmYWNlLmg+DQo+ICAjaW5jbHVkZSA8
Z250dGFiX2ludGVyZmFjZS5oPg0KPiBAQCAtNzEsNiArNzIsNyBAQCBzdHJ1Y3QgX1hFTlZCRF9B
REFQVEVSIHsNCj4gICAgICBQWEVOVkJEX1RIUkVBRCAgICAgICAgICAgICAgRGV2aWNlUG93ZXJU
aHJlYWQ7DQo+ICAgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VySXJw
Ow0KPiANCj4gKyAgICBYRU5CVVNfQ0FDSEVfSU5URVJGQUNFICAgICAgQ2FjaGVJbnRlcmZhY2U7
DQo+ICAgICAgWEVOQlVTX0VWVENITl9JTlRFUkZBQ0UgICAgIEV2dGNobkludGVyZmFjZTsNCj4g
ICAgICBYRU5CVVNfU1RPUkVfSU5URVJGQUNFICAgICAgU3RvcmVJbnRlcmZhY2U7DQo+ICAgICAg
WEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0UgICAgIEdudHRhYkludGVyZmFjZTsNCj4gQEAgLTEyMjAs
NjggKzEyMjIsNzkgQEAgQWRhcHRlckluaXRpYWxpemUoDQo+ICAgICAgICAgIGdvdG8gZmFpbDM7
DQo+IA0KPiAgICAgIHN0YXR1cyA9IEFkYXB0ZXJRdWVyeUludGVyZmFjZShBZGFwdGVyLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5CVVNfQ0FDSEUsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOw0KPiArICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWw0Ow0KPiArDQo+ICsg
ICAgc3RhdHVzID0gQWRhcHRlclF1ZXJ5SW50ZXJmYWNlKEFkYXB0ZXIsDQo+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFhFTkJVU19TVVNQRU5ELA0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmQWRhcHRlci0+U3VzcGVuZEludGVyZmFjZSwNCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOw0KPiAgICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQ0KPiAtICAgICAgICBnb3RvIGZhaWw0Ow0KPiArICAgICAgICBnb3Rv
IGZhaWw1Ow0KPiANCj4gICAgICBzdGF0dXMgPSBBZGFwdGVyUXVlcnlJbnRlcmZhY2UoQWRhcHRl
ciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOQlVTX0RFQlVHLA0K
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQWRhcHRlci0+RGVidWdJbnRl
cmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsNCj4g
ICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gLSAgICAgICAgZ290byBmYWlsNTsNCj4g
KyAgICAgICAgZ290byBmYWlsNjsNCj4gDQo+ICAgICAgc3RhdHVzID0gQWRhcHRlclF1ZXJ5SW50
ZXJmYWNlKEFkYXB0ZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhF
TkJVU19VTlBMVUcsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZBZGFw
dGVyLT5VbnBsdWdJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFKTsNCj4gICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gLSAgICAgICAg
Z290byBmYWlsNjsNCj4gKyAgICAgICAgZ290byBmYWlsNzsNCj4gDQo+ICAgICAgc3RhdHVzID0g
QWRhcHRlclF1ZXJ5SW50ZXJmYWNlKEFkYXB0ZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFhFTkZJTFRfRU1VTEFURUQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZBZGFwdGVyLT5FbXVsYXRlZEludGVyZmFjZSwNCj4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7DQo+ICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpDQo+IC0gICAgICAgIGdvdG8gZmFpbDc7DQo+ICsgICAgICAgIGdvdG8gZmFpbDg7DQo+
IA0KPiAgICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShBZGFwdGVyU2NhblRocmVhZCwNCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRlciwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkFkYXB0ZXItPlNjYW5UaHJlYWQpOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQ0KPiAtICAgICAgICBnb3RvIGZhaWw4Ow0KPiArICAgICAgICBnb3RvIGZhaWw5Ow0KPiAN
Cj4gICAgICBzdGF0dXMgPSBUaHJlYWRDcmVhdGUoQWRhcHRlckRldmljZVBvd2VyVGhyZWFkLA0K
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGFwdGVyLA0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQWRhcHRlci0+RGV2aWNlUG93ZXJUaHJlYWQpOw0KPiAgICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQ0KPiAtICAgICAgICBnb3RvIGZhaWw5Ow0KPiArICAgICAgICBnb3Rv
IGZhaWwxMDsNCj4gDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiANCj4gLWZhaWw5
Og0KPiAtICAgIEVycm9yKCJmYWlsOVxuIik7DQo+ICtmYWlsMTA6DQo+ICsgICAgRXJyb3IoImZh
aWwxMFxuIik7DQo+ICAgICAgVGhyZWFkQWxlcnQoQWRhcHRlci0+U2NhblRocmVhZCk7DQo+ICAg
ICAgVGhyZWFkSm9pbihBZGFwdGVyLT5TY2FuVGhyZWFkKTsNCj4gICAgICBBZGFwdGVyLT5TY2Fu
VGhyZWFkID0gTlVMTDsNCj4gLWZhaWw4Og0KPiAtICAgIEVycm9yKCJmYWlsOFxuIik7DQo+ICtm
YWlsOToNCj4gKyAgICBFcnJvcigiZmFpbDlcbiIpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkFk
YXB0ZXItPkVtdWxhdGVkSW50ZXJmYWNlLA0KPiAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChY
RU5GSUxUX0VNVUxBVEVEX0lOVEVSRkFDRSkpOw0KPiAtZmFpbDc6DQo+IC0gICAgRXJyb3IoImZh
aWw3XG4iKTsNCj4gK2ZhaWw4Og0KPiArICAgIEVycm9yKCJmYWlsOFxuIik7DQo+ICAgICAgUnRs
WmVyb01lbW9yeSgmQWRhcHRlci0+VW5wbHVnSW50ZXJmYWNlLA0KPiAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mIChYRU5CVVNfVU5QTFVHX0lOVEVSRkFDRSkpOw0KPiAtZmFpbDY6DQo+IC0gICAg
RXJyb3IoImZhaWw2XG4iKTsNCj4gK2ZhaWw3Og0KPiArICAgIEVycm9yKCJmYWlsN1xuIik7DQo+
ICAgICAgUnRsWmVyb01lbW9yeSgmQWRhcHRlci0+RGVidWdJbnRlcmZhY2UsDQo+ICAgICAgICAg
ICAgICAgICAgICBzaXplb2YgKFhFTkJVU19ERUJVR19JTlRFUkZBQ0UpKTsNCj4gLWZhaWw1Og0K
PiAtICAgIEVycm9yKCJmYWlsNVxuIik7DQo+ICtmYWlsNjoNCj4gKyAgICBFcnJvcigiZmFpbDZc
biIpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0ZXItPlN1c3BlbmRJbnRlcmZhY2UsDQo+
ICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkpOw0K
PiArZmFpbDU6DQo+ICsgICAgRXJyb3IoImZhaWw1XG4iKTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5
KCZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZiAo
WEVOQlVTX0NBQ0hFX0lOVEVSRkFDRSkpOw0KPiAgZmFpbDQ6DQo+ICAgICAgRXJyb3IoImZhaWw0
XG4iKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZBZGFwdGVyLT5HbnR0YWJJbnRlcmZhY2UsDQo+
IEBAIC0xMzUyLDYgKzEzNjUsOSBAQCBBZGFwdGVyVGVhcmRvd24oDQo+ICAgICAgUnRsWmVyb01l
bW9yeSgmQWRhcHRlci0+U3VzcGVuZEludGVyZmFjZSwNCj4gICAgICAgICAgICAgICAgICAgIHNp
emVvZiAoWEVOQlVTX1NVU1BFTkRfSU5URVJGQUNFKSk7DQo+IA0KPiArICAgIFJ0bFplcm9NZW1v
cnkoJkFkYXB0ZXItPkNhY2hlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgc2l6ZW9m
IChYRU5CVVNfQ0FDSEVfSU5URVJGQUNFKSk7DQo+ICsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZB
ZGFwdGVyLT5HbnR0YWJJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFhF
TkJVU19HTlRUQUJfSU5URVJGQUNFKSk7DQo+IA0KPiBAQCAtMjA3Nyw2ICsyMDkzLDcgQEAgQWRh
cHRlckdldCAjIyBfbmFtZSAjIyBJbnRlcmZhY2UoDQo+IFwNCj4gICAgICAqICMjIF9uYW1lICMj
IEludGVyZmFjZSA9IEFkYXB0ZXItPiAjIyBfbmFtZSAjIyBJbnRlcmZhY2U7ICBcDQo+ICB9DQo+
IA0KPiArQURBUFRFUl9HRVRfSU5URVJGQUNFKENhY2hlLCBQWEVOQlVTX0NBQ0hFX0lOVEVSRkFD
RSkNCj4gIEFEQVBURVJfR0VUX0lOVEVSRkFDRShTdG9yZSwgUFhFTkJVU19TVE9SRV9JTlRFUkZB
Q0UpDQo+ICBBREFQVEVSX0dFVF9JTlRFUkZBQ0UoRGVidWcsIFBYRU5CVVNfREVCVUdfSU5URVJG
QUNFKQ0KPiAgQURBUFRFUl9HRVRfSU5URVJGQUNFKEV2dGNobiwgUFhFTkJVU19FVlRDSE5fSU5U
RVJGQUNFKQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9hZGFwdGVyLmggYi9zcmMveGVudmJk
L2FkYXB0ZXIuaA0KPiBpbmRleCBjZTBjNzk0Li4yNWZlYmMxIDEwMDY0NA0KPiAtLS0gYS9zcmMv
eGVudmJkL2FkYXB0ZXIuaA0KPiArKysgYi9zcmMveGVudmJkL2FkYXB0ZXIuaA0KPiBAQCAtMzYs
NiArMzYsNyBAQA0KPiANCj4gIHR5cGVkZWYgc3RydWN0IF9YRU5WQkRfQURBUFRFUiBYRU5WQkRf
QURBUFRFUiwNCj4gKlBYRU5WQkRfQURBUFRFUjsNCj4gDQo+ICsjaW5jbHVkZSA8Y2FjaGVfaW50
ZXJmYWNlLmg+DQo+ICAjaW5jbHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+DQo+ICAjaW5jbHVkZSA8
ZXZ0Y2huX2ludGVyZmFjZS5oPg0KPiAgI2luY2x1ZGUgPGdudHRhYl9pbnRlcmZhY2UuaD4NCj4g
QEAgLTUxLDYgKzUyLDcgQEAgQWRhcHRlckdldCAjIyBfbmFtZSAjIyBJbnRlcmZhY2UoICAgICAg
ICAgICAgICAgXA0KPiAgICAgIE9VVCBfdHlwZSAgICAgICAgICAgX25hbWUgIyMgSW50ZXJmYWNl
ICAgICAgXA0KPiAgICAgICk7DQo+IA0KPiArQURBUFRFUl9HRVRfSU5URVJGQUNFKENhY2hlLCBQ
WEVOQlVTX0NBQ0hFX0lOVEVSRkFDRSkNCj4gIEFEQVBURVJfR0VUX0lOVEVSRkFDRShTdG9yZSwg
UFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpDQo+ICBBREFQVEVSX0dFVF9JTlRFUkZBQ0UoRGVidWcs
IFBYRU5CVVNfREVCVUdfSU5URVJGQUNFKQ0KPiAgQURBUFRFUl9HRVRfSU5URVJGQUNFKEV2dGNo
biwgUFhFTkJVU19FVlRDSE5fSU5URVJGQUNFKQ0KPiAtLQ0KPiAyLjguMw0KPiANCj4gDQo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1k
ZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+
IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 29 15:39:52 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 29 Sep 2017 15:39:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dxxOK-00008R-JN; Fri, 29 Sep 2017 15:39:52 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4384c3d6d=Paul.Durrant@citrix.com>)
 id 1dxxOI-00008A-C1
 for win-pv-devel@lists.xenproject.org; Fri, 29 Sep 2017 15:39:50 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 C8/84-03414-5496EC95; Fri, 29 Sep 2017 15:39:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRWlGSWpSXmKPExsWyU9JRQtc581y
 kwfIjahZ/Fic6MHoc/nCFJYAxijUzLym/IoE149PDi4wFze+ZKj4vP87cwLjgFVMXIyeHhICf
 xMHrz1lAbDYBHYmlR+eDxUUECiS+v5/HDGIzC6hJXN/fxQpiCwPVL/nTwA5REyDx9lYXlG0kc
 aZjPiOIzSKgKvGq6QDYTF4Bd4nLm6aB9QoJZEl8mt0OZnMKWEs8Wguxi1FAVuJL42qoXeISt5
 7Mh7pNQGLJnvPMELaoxMvH/1ghbAOJrUv3Ac3nAKrXlFi/Sx+iVVFiSvdDdoi1ghInZz5hmcA
 oPAvJ1FkIHbOQdMxC0rGAkWUVo0ZxalFZapGukaleUlFmekZJbmJmjq6hgZlebmpxcWJ6ak5i
 UrFecn7uJkZg6DMAwQ7GVQsCDzFKcjApifKWJJ2LFOJLyk+pzEgszogvKs1JLT7EKMPBoSTB+
 yEdKCdYlJqeWpGWmQOMQpi0BAePkghvFUiat7ggMbc4Mx0idYrRkuPYpst/mDhm3LwLJJ9cm/
 eXSYglLz8vVUqc9zhIgwBIQ0ZpHtw4WKK4xCgrJczLCHSgEE9BalFuZgmq/CtGcQ5GJWHeHyB
 TeDLzSuC2vgI6iAnooMkTz4AcVJKIkJJqYPSInOjCtbzdfEJp0kOW84eOiC1cHhn5wP3T41Lf
 J0IZ9Qc+pe84vsKj0mbXnLL1N6qOn5+qZ19VvPDKzoJC3thdTofSzijJyJt3PGlQPsWlvmKv5
 VO1fItn1/dUam61SZSYJ3Yw6oY8/2eFeq9un3+vt8t83RZ555C29I7u2vJ1u2Zu1T3C9FWJpT
 gj0VCLuag4EQAg5brbDwMAAA==
X-Env-Sender: prvs=4384c3d6d=Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1506699587!70679924!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47388 invoked from network); 29 Sep 2017 15:39:47 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-10.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 29 Sep 2017 15:39:47 -0000
X-IronPort-AV: E=Sophos;i="5.42,453,1500940800"; d="scan'208";a="53725199"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/5] Use CACHE interface for bounce buffers
Thread-Index: AQHTNs55vqYV2hax702rNXxI/BlWCqLMBJ0w
Date: Fri, 29 Sep 2017 15:39:43 +0000
Message-ID: <350c1d0d654641e4861ffa8b29725f38@AMSPEX02CL03.citrite.net>
References: <20170926135015.17476-1-owen.smith@citrix.com>
 <20170926135015.17476-3-owen.smith@citrix.com>
In-Reply-To: <20170926135015.17476-3-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/5] Use CACHE interface for bounce
	buffers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNiBTZXB0ZW1iZXIgMjAxNyAxNDo1
MA0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAyLzVdIFVzZSBDQUNIRSBpbnRlcmZhY2UgZm9yIGJvdW5jZSBidWZmZXJzDQo+IA0KPiBG
cm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBXaGVuIHRoZSBp
bmNvbW1pbmcgcmVhZC93cml0ZSBidWZmZXIgaXMgbm90IGFsaWduZWQsIHRoZSBkYXRhIG5lZWRz
DQo+IGJvdW5jaW5nIHZpYSBhIHBhZ2UtYWxpZ25lZCBidWZmZXIuIFVzZSB0aGUgQ0FDSEUgaW50
ZXJmYWNlIHRvIHByb3ZpZGUNCj4gdGhpcyBidWZmZXIgaW5zdGVhZCBvZiBhIGN1c3RvbSBsb29r
YXNpZGUgY29sbGVjdGlvbi4gQWxzbyBtb3ZlcyB0aGUNCj4gc3RvcmFnZSBmb3IgbWFwcGluZyB0
aGUgc291cmNlIGJ1ZmZlcnMgdG8gdGhlIGJvdW5jZSBidWZmZXIgc3RydWN0dXJlLA0KPiB3aGlj
aCB3aWxsIHJlZHVjZSB0aGUgYWxsb2NhdGlvbiBzaXplIG9mIHRoZSBzZWdtZW50cyB1c2VkIG9u
IHRoZSBmYXN0DQo+IHBhdGggKGFsaWduZWQgYnVmZmVycykuIFRoZSBJbmRpcmVjdCBwYWdlcyBh
cmUgYWxzbyBwcmUtYWxsb2NhdGVkIGluIHRoZQ0KPiBvYmplY3QgY29uc3RydWN0aW9uLCBhbmQg
bm90IGZvciBldmVyeSBvYmplY3QgcmV0cmlldmFsLCBhbmQgbGlrZXdpc2UNCj4gaW5kaXJlY3Qg
cGFnZXMgYXJlIG9ubHkgZnJlZWQgb24gb2JqZWN0IGRlc3RydWN0aW9uLCBhbmQgbm90IGZvciBl
dmVyeQ0KPiBvYmplY3QgcHV0Lg0KPiBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBsb2cgc3BhbSBjYXVz
ZWQgYnkgdGhlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVy
cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMveGVudmJkL2Fk
YXB0ZXIuYyAgICAgICAgIHwgMTI5ICsrKysrKysrKysrKy0NCj4gIHNyYy94ZW52YmQvYWRhcHRl
ci5oICAgICAgICAgfCAgMTEgKysNCj4gIHNyYy94ZW52YmQvYnVmZmVyLmMgICAgICAgICAgfCA0
MjYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgc3JjL3hl
bnZiZC9idWZmZXIuaCAgICAgICAgICB8ICA4MCAtLS0tLS0tLQ0KPiAgc3JjL3hlbnZiZC9kcml2
ZXIuYyAgICAgICAgICB8ICAgNiAtDQo+ICBzcmMveGVudmJkL3JpbmcuYyAgICAgICAgICAgIHwg
IDk3ICsrKysrKy0tLS0NCj4gIHNyYy94ZW52YmQvc3JiZXh0LmggICAgICAgICAgfCAgMTMgKy0N
Cj4gIHNyYy94ZW52YmQvdGFyZ2V0LmMgICAgICAgICAgfCAgIDEgLQ0KPiAgdnMyMDE1L3hlbnZi
ZC94ZW52YmQudmN4cHJvaiB8ICAgMSAtDQo+ICA5IGZpbGVzIGNoYW5nZWQsIDIwMCBpbnNlcnRp
b25zKCspLCA1NjQgZGVsZXRpb25zKC0pDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZi
ZC9idWZmZXIuYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW52YmQvYnVmZmVyLmgNCj4g
DQo+IGRpZmYgLS1naXQgYS9zcmMveGVudmJkL2FkYXB0ZXIuYyBiL3NyYy94ZW52YmQvYWRhcHRl
ci5jDQo+IGluZGV4IDU5NzI0YmIuLjRmYjc1YjggMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW52YmQv
YWRhcHRlci5jDQo+ICsrKyBiL3NyYy94ZW52YmQvYWRhcHRlci5jDQo+IEBAIC01Myw3ICs1Myw2
IEBADQo+ICAjaW5jbHVkZSAidGFyZ2V0LmgiDQo+ICAjaW5jbHVkZSAic3JiZXh0LmgiDQo+ICAj
aW5jbHVkZSAidGhyZWFkLmgiDQo+IC0jaW5jbHVkZSAiYnVmZmVyLmgiDQo+IA0KPiAgI2luY2x1
ZGUgInV0aWwuaCINCj4gICNpbmNsdWRlICJkZWJ1Zy5oIg0KPiBAQCAtODEsNiArODAsNyBAQCBz
dHJ1Y3QgX1hFTlZCRF9BREFQVEVSIHsNCj4gICAgICBYRU5CVVNfVU5QTFVHX0lOVEVSRkFDRSAg
ICAgVW5wbHVnSW50ZXJmYWNlOw0KPiAgICAgIFhFTkZJTFRfRU1VTEFURURfSU5URVJGQUNFICBF
bXVsYXRlZEludGVyZmFjZTsNCj4gDQo+ICsgICAgUFhFTkJVU19DQUNIRSAgICAgICAgICAgICAg
IEJvdW5jZUNhY2hlOw0KPiAgICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJBQ0sgICAgICBEZWJ1Z0Nh
bGxiYWNrOw0KPiAgICAgIFBYRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJh
Y2s7DQo+IA0KPiBAQCAtOTEwLDggKzkxMCw2IEBAIEFkYXB0ZXJEZWJ1Z0NhbGxiYWNrKA0KPiAg
ICAgICAgICAgICAgICAgICBBZGFwdGVyLT5CdWlsZElvLA0KPiAgICAgICAgICAgICAgICAgICBB
ZGFwdGVyLT5TdGFydElvLA0KPiAgICAgICAgICAgICAgICAgICBBZGFwdGVyLT5Db21wbGV0ZWQp
Ow0KPiAtDQo+IC0gICAgQnVmZmVyRGVidWdDYWxsYmFjaygmQWRhcHRlci0+RGVidWdJbnRlcmZh
Y2UpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBOVFNUQVRVUw0KPiBAQCAtMTA5Nyw2ICsxMDk1LDg5
IEBAIEFkYXB0ZXJEZXZpY2VQb3dlclRocmVhZCgNCj4gICAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7DQo+ICB9DQo+IA0KPiArUFhFTlZCRF9CT1VOQ0UNCj4gK0FkYXB0ZXJHZXRCb3VuY2UoDQo+
ICsgICAgSU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyDQo+ICsgICAgKQ0KPiArew0KPiArICAg
IHJldHVybiBYRU5CVVNfQ0FDSEUoR2V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgJkFk
YXB0ZXItPkNhY2hlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRl
ci0+Qm91bmNlQ2FjaGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7DQo+ICt9
DQo+ICsNCj4gK1ZPSUQNCj4gK0FkYXB0ZXJQdXRCb3VuY2UoDQo+ICsgICAgSU4gIFBYRU5WQkRf
QURBUFRFUiBBZGFwdGVyLA0KPiArICAgIElOICBQWEVOVkJEX0JPVU5DRSAgQm91bmNlDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIFhFTkJVU19DQUNIRShQdXQsDQo+ICsgICAgICAgICAgICAgICAg
ICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgQWRhcHRlci0+
Qm91bmNlQ2FjaGUsDQo+ICsgICAgICAgICAgICAgICAgIEJvdW5jZSwNCj4gKyAgICAgICAgICAg
ICAgICAgRkFMU0UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRT
VEFUVVMNCj4gK0FkYXB0ZXJCb3VuY2VDdG9yKA0KPiArICAgIElOICBQVk9JRCAgICAgICBBcmd1
bWVudCwNCj4gKyAgICBJTiAgUFZPSUQgICAgICAgT2JqZWN0DQo+ICsgICAgKQ0KPiArew0KPiAr
ICAgIFBYRU5WQkRfQk9VTkNFICBCb3VuY2UgPSBPYmplY3Q7DQo+ICsgICAgTlRTVEFUVVMgICAg
ICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQXJndW1lbnQp
Ow0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBCb3VuY2Ut
PkJvdW5jZU1kbCA9IF9fQWxsb2NhdGVQYWdlKCk7DQo+ICsgICAgaWYgKEJvdW5jZS0+Qm91bmNl
TWRsID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBCb3VuY2Ut
PkJvdW5jZVB0ciA9IE1tR2V0U3lzdGVtQWRkcmVzc0Zvck1kbFNhZmUoQm91bmNlLQ0KPiA+Qm91
bmNlTWRsLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb3JtYWxQYWdlUHJpb3JpdHkpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VT
UzsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3IoImZhaWwxXG4iKTsNCj4gKyAgICByZXR1
cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRA0K
PiArQWRhcHRlckJvdW5jZUR0b3IoDQo+ICsgICAgSU4gIFBWT0lEICAgICAgIEFyZ3VtZW50LA0K
PiArICAgIElOICBQVk9JRCAgICAgICBPYmplY3QNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhF
TlZCRF9CT1VOQ0UgIEJvdW5jZSA9IE9iamVjdDsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9Q
QVJBTUVURVIoQXJndW1lbnQpOw0KPiArDQo+ICsgICAgQm91bmNlLT5Cb3VuY2VQdHIgPSBOVUxM
Ow0KPiArDQo+ICsgICAgX19GcmVlUGFnZXMoQm91bmNlLT5Cb3VuY2VNZGwpOw0KPiArICAgIEJv
dW5jZS0+Qm91bmNlTWRsID0gTlVMTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIERFQ0xTUEVDX05P
SU5MSU5FIFZPSUQNCj4gK0FkYXB0ZXJBY3F1aXJlTG9jaygNCj4gKyAgICBJTiAgUFZPSUQgICAg
ICAgQXJndW1lbnQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTlZCRF9BREFQVEVSIEFkYXB0
ZXIgPSBBcmd1bWVudDsNCj4gKyAgICBLZUFjcXVpcmVTcGluTG9ja0F0RHBjTGV2ZWwoJkFkYXB0
ZXItPkxvY2spOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRA0K
PiArQWRhcHRlclJlbGVhc2VMb2NrKA0KPiArICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudA0K
PiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOVkJEX0FEQVBURVIgQWRhcHRlciA9IEFyZ3VtZW50
Ow0KPiArICAgIEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZBZGFwdGVyLT5Mb2NrKTsN
Cj4gK30NCj4gKw0KPiAgX19kcnZfcmVxdWlyZXNJUlFMKFBBU1NJVkVfTEVWRUwpDQo+ICBzdGF0
aWMgTlRTVEFUVVMNCj4gIF9fQWRhcHRlclF1ZXJ5SW50ZXJmYWNlKA0KPiBAQCAtMTI1NiwyNSAr
MTMzNyw1MiBAQCBBZGFwdGVySW5pdGlhbGl6ZSgNCj4gICAgICBpZiAoIU5UX1NVQ0NFU1Moc3Rh
dHVzKSkNCj4gICAgICAgICAgZ290byBmYWlsODsNCj4gDQo+ICsgICAgc3RhdHVzID0gWEVOQlVT
X0NBQ0hFKEFjcXVpcmUsICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSk7DQo+ICsgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDk7DQo+ICsNCj4gKyAgICBz
dGF0dXMgPSBYRU5CVVNfQ0FDSEUoQ3JlYXRlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQWRhcHRlci0+Q2FjaGVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ2YmRfYm91bmNlIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTlZC
RF9CT1VOQ0UpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWRhcHRlckJvdW5jZUN0b3IsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFkYXB0ZXJCb3VuY2VEdG9yLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICBBZGFwdGVyQWNxdWlyZUxvY2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEFkYXB0
ZXJSZWxlYXNlTG9jaywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRlciwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJkFkYXB0ZXItPkJvdW5jZUNhY2hlKTsNCj4gKyAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMTA7DQo+ICsN
Cj4gICAgICBzdGF0dXMgPSBUaHJlYWRDcmVhdGUoQWRhcHRlclNjYW5UaHJlYWQsDQo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZBZGFwdGVyLT5TY2FuVGhyZWFkKTsNCj4gICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkNCj4gLSAgICAgICAgZ290byBmYWlsOTsNCj4gKyAgICAgICAgZ290byBmYWlsMTE7DQo+IA0K
PiAgICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShBZGFwdGVyRGV2aWNlUG93ZXJUaHJlYWQsDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkYXB0ZXIsDQo+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZBZGFwdGVyLT5EZXZpY2VQb3dlclRocmVhZCk7DQo+ICAgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpDQo+IC0gICAgICAgIGdvdG8gZmFpbDEwOw0KPiArICAgICAgICBnb3Rv
IGZhaWwxMjsNCj4gDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiANCj4gLWZhaWwx
MDoNCj4gLSAgICBFcnJvcigiZmFpbDEwXG4iKTsNCj4gK2ZhaWwxMjoNCj4gKyAgICBFcnJvcigi
ZmFpbDEyXG4iKTsNCj4gICAgICBUaHJlYWRBbGVydChBZGFwdGVyLT5TY2FuVGhyZWFkKTsNCj4g
ICAgICBUaHJlYWRKb2luKEFkYXB0ZXItPlNjYW5UaHJlYWQpOw0KPiAgICAgIEFkYXB0ZXItPlNj
YW5UaHJlYWQgPSBOVUxMOw0KPiArZmFpbDExOg0KPiArICAgIEVycm9yKCJmYWlsMTFcbiIpOw0K
PiArICAgIFhFTkJVU19DQUNIRShEZXN0cm95LA0KPiArICAgICAgICAgICAgICAgICAmQWRhcHRl
ci0+Q2FjaGVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgIEFkYXB0ZXItPkJvdW5jZUNh
Y2hlKTsNCj4gKyAgICBBZGFwdGVyLT5Cb3VuY2VDYWNoZSA9IE5VTEw7DQo+ICtmYWlsMTA6DQo+
ICsgICAgRXJyb3IoImZhaWwxMFxuIik7DQo+ICsgICAgWEVOQlVTX0NBQ0hFKFJlbGVhc2UsICZB
ZGFwdGVyLT5DYWNoZUludGVyZmFjZSk7DQo+ICBmYWlsOToNCj4gICAgICBFcnJvcigiZmFpbDlc
biIpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkFkYXB0ZXItPkVtdWxhdGVkSW50ZXJmYWNlLA0K
PiBAQCAtMTM1Myw2ICsxNDYxLDEzIEBAIEFkYXB0ZXJUZWFyZG93bigNCj4gICAgICAgICAgVGFy
Z2V0RGVzdHJveShUYXJnZXQpOw0KPiAgICAgIH0NCj4gDQo+ICsgICAgWEVOQlVTX0NBQ0hFKERl
c3Ryb3ksDQo+ICsgICAgICAgICAgICAgICAgICZBZGFwdGVyLT5DYWNoZUludGVyZmFjZSwNCj4g
KyAgICAgICAgICAgICAgICAgQWRhcHRlci0+Qm91bmNlQ2FjaGUpOw0KPiArICAgIEFkYXB0ZXIt
PkJvdW5jZUNhY2hlID0gTlVMTDsNCj4gKw0KPiArICAgIFhFTkJVU19DQUNIRShSZWxlYXNlLCAm
QWRhcHRlci0+Q2FjaGVJbnRlcmZhY2UpOw0KPiArDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmQWRh
cHRlci0+RW11bGF0ZWRJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFhF
TkZJTFRfRU1VTEFURURfSU5URVJGQUNFKSk7DQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbnZi
ZC9hZGFwdGVyLmggYi9zcmMveGVudmJkL2FkYXB0ZXIuaA0KPiBpbmRleCAyNWZlYmMxLi4zNTQ2
OTliIDEwMDY0NA0KPiAtLS0gYS9zcmMveGVudmJkL2FkYXB0ZXIuaA0KPiArKysgYi9zcmMveGVu
dmJkL2FkYXB0ZXIuaA0KPiBAQCAtOTMsNiArOTMsMTcgQEAgQWRhcHRlckdldE5leHRTR0VudHJ5
KA0KPiAgICAgIE9VVCBQVUxPTkcgICAgICAgICAgTGVuZ3RoDQo+ICAgICAgKTsNCj4gDQo+ICtl
eHRlcm4gUFhFTlZCRF9CT1VOQ0UNCj4gK0FkYXB0ZXJHZXRCb3VuY2UoDQo+ICsgICAgSU4gIFBY
RU5WQkRfQURBUFRFUiBBZGFwdGVyDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQNCj4g
K0FkYXB0ZXJQdXRCb3VuY2UoDQo+ICsgICAgSU4gIFBYRU5WQkRfQURBUFRFUiBBZGFwdGVyLA0K
PiArICAgIElOICBQWEVOVkJEX0JPVU5DRSAgQm91bmNlDQo+ICsgICAgKTsNCj4gKw0KPiAgZXh0
ZXJuIE5UU1RBVFVTDQo+ICBBZGFwdGVyRGlzcGF0Y2hQbnAoDQo+ICAgICAgSU4gIFBYRU5WQkRf
QURBUFRFUiBBZGFwdGVyLA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9idWZmZXIuYyBiL3Ny
Yy94ZW52YmQvYnVmZmVyLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDlk
ZTc3OTIuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3hlbnZiZC9idWZmZXIuYw0KPiArKysgL2Rldi9u
dWxsDQo+IEBAIC0xLDQyNiArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0
ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gLSAqIHdpdGgg
b3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gLSAqIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogKiAgIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gLSAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+
IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4g
LSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiAtICoN
Cj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiAtICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gLSAq
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0K
PiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
Uw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNVQ0ggREFNQUdFLg0K
PiAtICovDQo+IC0NCj4gLSNpbmNsdWRlICJidWZmZXIuaCINCj4gLSNpbmNsdWRlICJ0aHJlYWQu
aCINCj4gLSNpbmNsdWRlICJkZWJ1Zy5oIg0KPiAtI2luY2x1ZGUgImFzc2VydC5oIg0KPiAtI2lu
Y2x1ZGUgInV0aWwuaCINCj4gLQ0KPiAtI2RlZmluZSBCVUZGRVJfUE9PTF9UQUcgJ2Z1QlgnDQo+
IC0NCj4gLSNkZWZpbmUgQlVGRkVSX01JTl9DT1VOVCAgICAgICAgIDMyDQo+IC0NCj4gLWV4dGVy
biBQSFlTSUNBTF9BRERSRVNTIE1tR2V0UGh5c2ljYWxBZGRyZXNzKFBWT0lEIEJhc2VBZGRyZXNz
KTsNCj4gLQ0KPiAtdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9CVUZGRVIgew0KPiAtICAgIExJU1Rf
RU5UUlkgICAgICAgICAgRW50cnk7DQo+IC0gICAgUE1ETCAgICAgICAgICAgICAgICBNZGw7DQo+
IC0gICAgUFZPSUQgICAgICAgICAgICAgICBWQWRkcjsNCj4gLSAgICBQRk5fTlVNQkVSICAgICAg
ICAgIFBmbjsNCj4gLSAgICBQVk9JRCAgICAgICAgICAgICAgIENvbnRleHQ7DQo+IC19IFhFTlZC
RF9CVUZGRVIsICpQWEVOVkJEX0JVRkZFUjsNCj4gLQ0KPiAtdHlwZWRlZiBzdHJ1Y3QgX1hFTlZC
RF9CT1VOQ0VfQlVGRkVSIHsNCj4gLSAgICBMSVNUX0VOVFJZICAgICAgICAgIEZyZWVMaXN0Ow0K
PiAtICAgIExJU1RfRU5UUlkgICAgICAgICAgVXNlZExpc3Q7DQo+IC0gICAgVUxPTkcgICAgICAg
ICAgICAgICBGcmVlU2l6ZTsNCj4gLSAgICBVTE9ORyAgICAgICAgICAgICAgIFVzZWRTaXplOw0K
PiAtICAgIFVMT05HICAgICAgICAgICAgICAgRnJlZU1heFNpemU7DQo+IC0gICAgVUxPTkcgICAg
ICAgICAgICAgICBVc2VkTWF4U2l6ZTsNCj4gLSAgICBLU1BJTl9MT0NLICAgICAgICAgIExvY2s7
DQo+IC0gICAgUFhFTlZCRF9USFJFQUQgICAgICBUaHJlYWQ7DQo+IC0gICAgVUxPTkcgICAgICAg
ICAgICAgICBSZWFwVGhyZWFkQ291bnQ7DQo+IC0gICAgVUxPTkcgICAgICAgICAgICAgICBSZWFw
ZWQ7DQo+IC0gICAgVUxPTkcgICAgICAgICAgICAgICBBbGxvY2F0ZWQ7DQo+IC0gICAgVUxPTkcg
ICAgICAgICAgICAgICBGcmVlZDsNCj4gLX0gWEVOVkJEX0JPVU5DRV9CVUZGRVIsICpQWEVOVkJE
X0JPVU5DRV9CVUZGRVI7DQo+IC0NCj4gLXN0YXRpYyBYRU5WQkRfQk9VTkNFX0JVRkZFUiBfX0J1
ZmZlcjsNCj4gLQ0KPiAtI2RlZmluZSBUSU1FX1VTKF91cykgICAgICAgICgoX3VzKSAqIDEwKQ0K
PiAtI2RlZmluZSBUSU1FX01TKF9tcykgICAgICAgIChUSU1FX1VTKChfbXMpICogMTAwMCkpDQo+
IC0jZGVmaW5lIFRJTUVfUyhfcykgICAgICAgICAgKFRJTUVfTVMoKF9zKSAqIDEwMDApKQ0KPiAt
I2RlZmluZSBUSU1FX1JFTEFUSVZFKF90KSAgICgtKF90KSkNCj4gLQ0KPiAtc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIFBYRU5WQkRfQlVGRkVSDQo+IC1fX0J1ZmZlckFsbG9jKCkNCj4gLXsNCj4g
LSAgICBQWEVOVkJEX0JVRkZFUiAgQnVmZmVySWQ7DQo+IC0NCj4gLSAgICBCdWZmZXJJZCA9IChQ
WEVOVkJEX0JVRkZFUilfX0FsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLA0KPiBzaXpl
b2YoWEVOVkJEX0JVRkZFUiksIEJVRkZFUl9QT09MX1RBRyk7DQo+IC0gICAgaWYgKEJ1ZmZlcklk
ID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZmFpbDE7DQo+IC0NCj4gLSAgICBSdGxaZXJvTWVt
b3J5KEJ1ZmZlcklkLCBzaXplb2YoWEVOVkJEX0JVRkZFUikpOw0KPiAtDQo+IC0gICAgQnVmZmVy
SWQtPk1kbCA9IF9fQWxsb2NhdGVQYWdlKCk7DQo+IC0gICAgaWYgKEJ1ZmZlcklkLT5NZGwgPT0g
TlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsMjsNCj4gLQ0KPiAtICAgIEJ1ZmZlcklkLT5WQWRk
ciA9IE1tR2V0U3lzdGVtQWRkcmVzc0Zvck1kbFNhZmUoQnVmZmVySWQtPk1kbCwNCj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbFBhZ2VQ
cmlvcml0eSk7DQo+IC0NCj4gLSAgICBCdWZmZXJJZC0+UGZuID0gKFBGTl9OVU1CRVIpKE1tR2V0
UGh5c2ljYWxBZGRyZXNzKEJ1ZmZlcklkLQ0KPiA+VkFkZHIpLlF1YWRQYXJ0ID4+IFBBR0VfU0hJ
RlQpOw0KPiAtDQo+IC0gICAgKytfX0J1ZmZlci5BbGxvY2F0ZWQ7DQo+IC0gICAgcmV0dXJuIEJ1
ZmZlcklkOw0KPiAtDQo+IC1mYWlsMjoNCj4gLSAgICBfX0ZyZWVQb29sV2l0aFRhZyhCdWZmZXJJ
ZCwgQlVGRkVSX1BPT0xfVEFHKTsNCj4gLWZhaWwxOg0KPiAtICAgIHJldHVybiBOVUxMOw0KPiAt
fQ0KPiAtc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQNCj4gLV9fQnVmZmVyRnJlZSgNCj4g
LSAgICBJTiBQWEVOVkJEX0JVRkZFUiAgICAgICAgICAgQnVmZmVySWQNCj4gLSAgICApDQo+IC17
DQo+IC0gICAgaWYgKEJ1ZmZlcklkID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybjsNCj4gLQ0K
PiAtICAgIF9fRnJlZVBhZ2UoQnVmZmVySWQtPk1kbCk7DQo+IC0gICAgX19GcmVlUG9vbFdpdGhU
YWcoKFBWT0lEKUJ1ZmZlcklkLCBCVUZGRVJfUE9PTF9UQUcpOw0KPiAtDQo+IC0gICAgKytfX0J1
ZmZlci5GcmVlZDsNCj4gLX0NCj4gLXN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBCT09MRUFODQo+
IC1fX0lzT25MaXN0KA0KPiAtICAgIElOICBQTElTVF9FTlRSWSAgICAgICAgICAgICBMaXN0SGVh
ZCwNCj4gLSAgICBJTiAgUExJU1RfRU5UUlkgICAgICAgICAgICAgTGlzdEl0ZW0sDQo+IC0gICAg
SU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgIExvY2tlZA0KPiAtICAgICkNCj4gLXsNCj4gLSAg
ICBLSVJRTCAgICAgICBJcnFsID0gS2VHZXRDdXJyZW50SXJxbCgpOw0KPiAtICAgIFBMSVNUX0VO
VFJZIEVudHJ5Ow0KPiAtICAgIEJPT0xFQU4gICAgIEZvdW5kID0gRkFMU0U7DQo+IC0NCj4gLSAg
ICBpZiAoIUxvY2tlZCkNCj4gLSAgICAgICAgS2VBY3F1aXJlU3BpbkxvY2soJl9fQnVmZmVyLkxv
Y2ssICZJcnFsKTsNCj4gLQ0KPiAtICAgIEFTU0VSVDNQKExpc3RIZWFkLCAhPSwgTlVMTCk7DQo+
IC0gICAgQVNTRVJUM1AoTGlzdEl0ZW0sICE9LCBOVUxMKTsNCj4gLSAgICBBU1NFUlQzUChMaXN0
SGVhZC0+RmxpbmssICE9LCBOVUxMKTsNCj4gLSAgICBBU1NFUlQzUChMaXN0SGVhZCwgIT0sIExp
c3RJdGVtKTsNCj4gLSAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBESVNQQVRD
SF9MRVZFTCk7DQo+IC0NCj4gLSNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczo2MDExKQ0KPiAtICAg
IGZvciAoRW50cnkgPSBMaXN0SGVhZC0+Rmxpbms7IEVudHJ5ICE9IExpc3RIZWFkOyBFbnRyeSA9
IEVudHJ5LT5GbGluaykgew0KPiAtICAgICAgICBBU1NFUlQzUChFbnRyeSwgIT0sIE5VTEwpOw0K
PiAtICAgICAgICBpZiAoRW50cnkgPT0gTGlzdEl0ZW0pIHsNCj4gLSAgICAgICAgICAgIEZvdW5k
ID0gVFJVRTsNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0K
PiAtDQo+IC0gICAgaWYgKCFMb2NrZWQpDQo+IC0gICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZf
X0J1ZmZlci5Mb2NrLCBJcnFsKTsNCj4gLQ0KPiAtICAgIHJldHVybiBGb3VuZDsNCj4gLX0NCj4g
LQ0KPiAtI2lmZGVmIERCRw0KPiAtI2RlZmluZSBJc09uTGlzdChhLCBiLCBjKSAgX19Jc09uTGlz
dChhLCBiLCBjKQ0KPiAtI2Vsc2UNCj4gLSNkZWZpbmUgSXNPbkxpc3QoYSwgYiwgYykgIChUUlVF
KQ0KPiAtI2VuZGlmDQo+IC0NCj4gLXN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lEDQo+IC1f
X0J1ZmZlclB1c2hGcmVlTGlzdCgNCj4gLSAgICBJTiBQWEVOVkJEX0JVRkZFUiAgICAgICAgICAg
QnVmZmVySWQNCj4gLSAgICApDQo+IC17DQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5
LkZsaW5rLCA9PSwgTlVMTCk7DQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5LkJsaW5r
LCA9PSwgTlVMTCk7DQo+IC0NCj4gLSAgICBJbnNlcnRIZWFkTGlzdCgmX19CdWZmZXIuRnJlZUxp
c3QsICZCdWZmZXJJZC0+RW50cnkpOw0KPiAtICAgICsrX19CdWZmZXIuRnJlZVNpemU7DQo+IC0g
ICAgaWYgKF9fQnVmZmVyLkZyZWVTaXplID4gX19CdWZmZXIuRnJlZU1heFNpemUpDQo+IC0gICAg
ICAgIF9fQnVmZmVyLkZyZWVNYXhTaXplID0gX19CdWZmZXIuRnJlZVNpemU7DQo+IC19DQo+IC1z
dGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgUFhFTlZCRF9CVUZGRVINCj4gLV9fQnVmZmVyUG9wRnJl
ZUxpc3QoDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeTsNCj4g
LQ0KPiAtICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJl9fQnVmZmVyLkZyZWVMaXN0KTsNCj4g
LSAgICBpZiAoRW50cnkgJiYgRW50cnkgIT0gJl9fQnVmZmVyLkZyZWVMaXN0KSB7DQo+IC0gICAg
ICAgIFBYRU5WQkRfQlVGRkVSIEJ1ZmZlcklkID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksDQo+
IFhFTlZCRF9CVUZGRVIsIEVudHJ5KTsNCj4gLSAgICAgICAgQnVmZmVySWQtPkVudHJ5LkZsaW5r
ID0gTlVMTDsNCj4gLSAgICAgICAgQnVmZmVySWQtPkVudHJ5LkJsaW5rID0gTlVMTDsNCj4gLSAg
ICAgICAgLS1fX0J1ZmZlci5GcmVlU2l6ZTsNCj4gLSAgICAgICAgcmV0dXJuIEJ1ZmZlcklkOw0K
PiAtICAgIH0NCj4gLQ0KPiAtICAgIHJldHVybiBOVUxMOw0KPiAtfQ0KPiAtc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIFZPSUQNCj4gLV9fQnVmZmVyUHVzaFVzZWRMaXN0KA0KPiAtICAgIElOIFBY
RU5WQkRfQlVGRkVSICAgICAgICAgICBCdWZmZXJJZA0KPiAtICAgICkNCj4gLXsNCj4gLSAgICBB
U1NFUlQzUChCdWZmZXJJZC0+RW50cnkuRmxpbmssID09LCBOVUxMKTsNCj4gLSAgICBBU1NFUlQz
UChCdWZmZXJJZC0+RW50cnkuQmxpbmssID09LCBOVUxMKTsNCj4gLQ0KPiAtICAgIEluc2VydEhl
YWRMaXN0KCZfX0J1ZmZlci5Vc2VkTGlzdCwgJkJ1ZmZlcklkLT5FbnRyeSk7DQo+IC0gICAgKytf
X0J1ZmZlci5Vc2VkU2l6ZTsNCj4gLSAgICBpZiAoX19CdWZmZXIuVXNlZFNpemUgPiBfX0J1ZmZl
ci5Vc2VkTWF4U2l6ZSkNCj4gLSAgICAgICAgX19CdWZmZXIuVXNlZE1heFNpemUgPSBfX0J1ZmZl
ci5Vc2VkU2l6ZTsNCj4gLX0NCj4gLXN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBQWEVOVkJEX0JV
RkZFUg0KPiAtX19CdWZmZXJQb3BVc2VkTGlzdCgNCj4gLSAgICApDQo+IC17DQo+IC0gICAgUExJ
U1RfRU5UUlkgICAgIEVudHJ5Ow0KPiAtDQo+IC0gICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdCgm
X19CdWZmZXIuVXNlZExpc3QpOw0KPiAtICAgIGlmIChFbnRyeSAmJiBFbnRyeSAhPSAmX19CdWZm
ZXIuVXNlZExpc3QpIHsNCj4gLSAgICAgICAgUFhFTlZCRF9CVUZGRVIgQnVmZmVySWQgPSBDT05U
QUlOSU5HX1JFQ09SRChFbnRyeSwNCj4gWEVOVkJEX0JVRkZFUiwgRW50cnkpOw0KPiAtICAgICAg
ICBCdWZmZXJJZC0+RW50cnkuRmxpbmsgPSBOVUxMOw0KPiAtICAgICAgICBCdWZmZXJJZC0+RW50
cnkuQmxpbmsgPSBOVUxMOw0KPiAtICAgICAgICAtLV9fQnVmZmVyLlVzZWRTaXplOw0KPiAtICAg
ICAgICByZXR1cm4gQnVmZmVySWQ7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIE5VTEw7
DQo+IC19DQo+IC1zdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRA0KPiAtX19CdWZmZXJSZW1v
dmVVc2VkTGlzdCgNCj4gLSAgICBJTiBQWEVOVkJEX0JVRkZFUiAgICAgICAgICAgQnVmZmVySWQN
Cj4gLSAgICApDQo+IC17DQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5LkZsaW5rLCAh
PSwgTlVMTCk7DQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQtPkVudHJ5LkJsaW5rLCAhPSwgTlVM
TCk7DQo+IC0gICAgQVNTRVJUKElzT25MaXN0KCZfX0J1ZmZlci5Vc2VkTGlzdCwgJkJ1ZmZlcklk
LT5FbnRyeSwgVFJVRSkpOw0KPiAtDQo+IC0gICAgUmVtb3ZlRW50cnlMaXN0KCZCdWZmZXJJZC0+
RW50cnkpOw0KPiAtICAgIEJ1ZmZlcklkLT5FbnRyeS5GbGluayA9IE5VTEw7DQo+IC0gICAgQnVm
ZmVySWQtPkVudHJ5LkJsaW5rID0gTlVMTDsNCj4gLSAgICAtLV9fQnVmZmVyLlVzZWRTaXplOw0K
PiAtfQ0KPiAtc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IC1fX0J1ZmZlclJl
YXBlclRocmVhZCgNCj4gLSAgICBJTiBQWEVOVkJEX1RIUkVBRCAgICAgICAgICAgVGhyZWFkLA0K
PiAtICAgIElOIFBWT0lEICAgICAgICAgICAgICAgICAgICBDb250ZXh0DQo+IC0gICAgKQ0KPiAt
ew0KPiAtICAgIEtJUlFMICAgICAgICAgICBJcnFsOw0KPiAtICAgIFBLRVZFTlQgICAgICAgICBF
dmVudDsNCj4gLSAgICBMQVJHRV9JTlRFR0VSICAgVGltZW91dDsNCj4gLSAgICBQWEVOVkJEX0JV
RkZFUiAgQnVmZmVySWQ7DQo+IC0NCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnRl
eHQpOw0KPiAtDQo+IC0gICAgVGltZW91dC5RdWFkUGFydCA9IFRJTUVfUkVMQVRJVkUoVElNRV9T
KDEpKTsgLy8gMSBTZWNvbmQNCj4gLSAgICBFdmVudCA9IFRocmVhZEdldEV2ZW50KFRocmVhZCk7
DQo+IC0NCj4gLSAgICB3aGlsZSAoVFJVRSkgew0KPiAtICAgICAgICBLZVdhaXRGb3JTaW5nbGVP
YmplY3QoRXZlbnQsIEV4ZWN1dGl2ZSwgS2VybmVsTW9kZSwgRkFMU0UsDQo+ICZUaW1lb3V0KTsN
Cj4gLSAgICAgICAgaWYgKFRocmVhZElzQWxlcnRlZChUaHJlYWQpKQ0KPiAtICAgICAgICAgICAg
YnJlYWs7DQo+IC0NCj4gLSAgICAgICAgS2VBY3F1aXJlU3BpbkxvY2soJl9fQnVmZmVyLkxvY2ss
ICZJcnFsKTsNCj4gLSAgICAgICAgaWYgKF9fQnVmZmVyLkZyZWVTaXplID4gQlVGRkVSX01JTl9D
T1VOVCkgew0KPiAtICAgICAgICAgICAgVmVyYm9zZSgiUmVhcGluZyBCdWZmZXJzICglZCA+ICVk
KVxuIiwgX19CdWZmZXIuRnJlZVNpemUsDQo+IEJVRkZFUl9NSU5fQ09VTlQpOw0KPiAtICAgICAg
ICAgICAgKytfX0J1ZmZlci5SZWFwVGhyZWFkQ291bnQ7DQo+IC0gICAgICAgIH0NCj4gLSAgICAg
ICAgd2hpbGUgKF9fQnVmZmVyLkZyZWVTaXplID4gQlVGRkVSX01JTl9DT1VOVCkgew0KPiAtICAg
ICAgICAgICAgQnVmZmVySWQgPSBfX0J1ZmZlclBvcEZyZWVMaXN0KCk7DQo+IC0gICAgICAgICAg
ICBpZiAoQnVmZmVySWQpIHsNCj4gLSAgICAgICAgICAgICAgICArK19fQnVmZmVyLlJlYXBlZDsN
Cj4gLSAgICAgICAgICAgICAgICBfX0J1ZmZlckZyZWUoQnVmZmVySWQpOw0KPiAtICAgICAgICAg
ICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZfX0J1ZmZl
ci5Mb2NrLCBJcnFsKTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7DQo+IC19DQo+IC0NCj4gLVZPSUQNCj4gLUJ1ZmZlckluaXRpYWxpemUoDQo+IC0gICAgKQ0K
PiAtew0KPiAtICAgIFVMT05HICAgICAgICAgICBpOw0KPiAtICAgIFBYRU5WQkRfQlVGRkVSICBC
dWZmZXJJZDsNCj4gLQ0KPiAtICAgIFJ0bFplcm9NZW1vcnkoJl9fQnVmZmVyLCBzaXplb2YoWEVO
VkJEX0JPVU5DRV9CVUZGRVIpKTsNCj4gLSAgICBLZUluaXRpYWxpemVTcGluTG9jaygmX19CdWZm
ZXIuTG9jayk7DQo+IC0gICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZfX0J1ZmZlci5GcmVlTGlzdCk7
DQo+IC0gICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZfX0J1ZmZlci5Vc2VkTGlzdCk7DQo+IC0NCj4g
LSAgICBmb3IgKGkgPSAwOyBpIDwgQlVGRkVSX01JTl9DT1VOVDsgKytpKSB7DQo+IC0gICAgICAg
IEJ1ZmZlcklkID0gX19CdWZmZXJBbGxvYygpOw0KPiAtICAgICAgICBpZiAoQnVmZmVySWQpIHsN
Cj4gLSAgICAgICAgICAgIF9fQnVmZmVyUHVzaEZyZWVMaXN0KEJ1ZmZlcklkKTsNCj4gLSAgICAg
ICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGlmIChfX0J1ZmZlci5UaHJlYWQgPT0gTlVMTCkg
ew0KPiAtICAgICAgICAoVk9JRCkgVGhyZWFkQ3JlYXRlKF9fQnVmZmVyUmVhcGVyVGhyZWFkLCBO
VUxMLA0KPiAmX19CdWZmZXIuVGhyZWFkKTsNCj4gLSAgICB9DQo+IC19DQo+IC0NCj4gLVZPSUQN
Cj4gLUJ1ZmZlclRlcm1pbmF0ZSgNCj4gLSAgICApDQo+IC17DQo+IC0gICAgUFhFTlZCRF9CVUZG
RVIgIEJ1ZmZlcklkOw0KPiAtDQo+IC0gICAgaWYgKF9fQnVmZmVyLlRocmVhZCkgew0KPiAtICAg
ICAgICBUaHJlYWRBbGVydChfX0J1ZmZlci5UaHJlYWQpOw0KPiAtICAgICAgICBUaHJlYWRKb2lu
KF9fQnVmZmVyLlRocmVhZCk7DQo+IC0gICAgICAgIF9fQnVmZmVyLlRocmVhZCA9IE5VTEw7DQo+
IC0gICAgfQ0KPiAtDQo+IC0gICAgd2hpbGUgKChCdWZmZXJJZCA9IF9fQnVmZmVyUG9wVXNlZExp
c3QoKSkgIT0gTlVMTCkgew0KPiAtICAgICAgICBXYXJuaW5nKCJQb3RlbnRpYWxseSBsZWFraW5n
IGJ1ZmZlciBAIDB4JXBcbiIsIEJ1ZmZlcklkLT5WQWRkcik7DQo+IC0gICAgICAgIF9fQnVmZmVy
UHVzaEZyZWVMaXN0KEJ1ZmZlcklkKTsNCj4gLSAgICB9DQo+IC0gICAgd2hpbGUgKChCdWZmZXJJ
ZCA9IF9fQnVmZmVyUG9wRnJlZUxpc3QoKSkgIT0gTlVMTCkgew0KPiAtICAgICAgICBfX0J1ZmZl
ckZyZWUoQnVmZmVySWQpOw0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiAtX19jaGVja1JldHVybg0K
PiAtQk9PTEVBTg0KPiAtQnVmZmVyR2V0KA0KPiAtICAgIF9faW4gIFBWT0lEICAgICAgICAgICAg
IF9Db250ZXh0LA0KPiAtICAgIF9fb3V0IFBWT0lEKiAgICAgICAgICAgIF9CdWZmZXJJZCwNCj4g
LSAgICBfX291dCBQRk5fTlVNQkVSKiAgICAgICBQZm4NCj4gLSAgICApDQo+IC17DQo+IC0gICAg
UFhFTlZCRF9CVUZGRVIgIEJ1ZmZlcklkOw0KPiAtICAgIEtJUlFMICAgICAgICAgICBJcnFsOw0K
PiAtICAgIEJPT0xFQU4gICAgICAgICBSZXN1bHQgPSBGQUxTRTsNCj4gLQ0KPiAtCSpfQnVmZmVy
SWQgPSBOVUxMOw0KPiAtCSpQZm4gPSAwOw0KPiAtDQo+IC0gICAgS2VBY3F1aXJlU3BpbkxvY2so
Jl9fQnVmZmVyLkxvY2ssICZJcnFsKTsNCj4gLSAgICBCdWZmZXJJZCA9IF9fQnVmZmVyUG9wRnJl
ZUxpc3QoKTsNCj4gLSAgICBpZiAoQnVmZmVySWQgPT0gTlVMTCkgew0KPiAtICAgICAgICBCdWZm
ZXJJZCA9IF9fQnVmZmVyQWxsb2MoKTsNCj4gLSAgICB9DQo+IC0gICAgaWYgKEJ1ZmZlcklkKSB7
DQo+IC0gICAgICAgIF9fQnVmZmVyUHVzaFVzZWRMaXN0KEJ1ZmZlcklkKTsNCj4gLQ0KPiAtICAg
ICAgICBCdWZmZXJJZC0+Q29udGV4dCA9IF9Db250ZXh0Ow0KPiAtICAgICAgICAqX0J1ZmZlcklk
ID0gQnVmZmVySWQ7DQo+IC0gICAgICAgICpQZm4gPSBCdWZmZXJJZC0+UGZuOw0KPiAtICAgICAg
ICBSZXN1bHQgPSBUUlVFOw0KPiAtICAgIH0NCj4gLSAgICBLZVJlbGVhc2VTcGluTG9jaygmX19C
dWZmZXIuTG9jaywgSXJxbCk7DQo+IC0NCj4gLSAgICByZXR1cm4gUmVzdWx0Ow0KPiAtfQ0KPiAt
DQo+IC1WT0lEDQo+IC1CdWZmZXJQdXQoDQo+IC0gICAgX19pbiBQVk9JRCAgICAgICAgICAgICAg
X0J1ZmZlcklkDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIEtJUlFMICAgICAgICAgICBJcnFsOw0K
PiAtICAgIFBYRU5WQkRfQlVGRkVSICBCdWZmZXJJZCA9IChQWEVOVkJEX0JVRkZFUilfQnVmZmVy
SWQ7DQo+IC0NCj4gLSAgICBLZUFjcXVpcmVTcGluTG9jaygmX19CdWZmZXIuTG9jaywgJklycWwp
Ow0KPiAtICAgIF9fQnVmZmVyUmVtb3ZlVXNlZExpc3QoQnVmZmVySWQpOw0KPiAtICAgIEJ1ZmZl
cklkLT5Db250ZXh0ID0gTlVMTDsNCj4gLSAgICBfX0J1ZmZlclB1c2hGcmVlTGlzdChCdWZmZXJJ
ZCk7DQo+IC0gICAgS2VSZWxlYXNlU3BpbkxvY2soJl9fQnVmZmVyLkxvY2ssIElycWwpOw0KPiAt
fQ0KPiAtDQo+IC1WT0lEDQo+IC1CdWZmZXJDb3B5SW4oDQo+IC0gICAgX19pbiBQVk9JRCAgICAg
ICAgICAgICAgX0J1ZmZlcklkLA0KPiAtICAgIF9faW4gUFZPSUQgICAgICAgICAgICAgIElucHV0
LA0KPiAtICAgIF9faW4gVUxPTkcgICAgICAgICAgICAgIExlbmd0aA0KPiAtICAgICkNCj4gLXsN
Cj4gLSAgICBQWEVOVkJEX0JVRkZFUiAgQnVmZmVySWQgPSAoUFhFTlZCRF9CVUZGRVIpX0J1ZmZl
cklkOw0KPiAtDQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQsICE9LCBOVUxMKTsNCj4gLSAgICBB
U1NFUlQzUChJbnB1dCwgIT0sIE5VTEwpOw0KPiAtICAgIEFTU0VSVDNVKExlbmd0aCwgPD0sIFBB
R0VfU0laRSk7DQo+IC0NCj4gLSAgICBBU1NFUlQzUChCdWZmZXJJZC0+VkFkZHIsICE9LCBOVUxM
KTsNCj4gLSAgICBBU1NFUlQoSXNPbkxpc3QoJl9fQnVmZmVyLlVzZWRMaXN0LCAmQnVmZmVySWQt
PkVudHJ5LCBGQUxTRSkpOw0KPiAtICAgIFJ0bENvcHlNZW1vcnkoQnVmZmVySWQtPlZBZGRyLCBJ
bnB1dCwgTGVuZ3RoKTsNCj4gLX0NCj4gLQ0KPiAtVk9JRA0KPiAtQnVmZmVyQ29weU91dCgNCj4g
LSAgICBfX2luIFBWT0lEICAgICAgICAgICAgICBfQnVmZmVySWQsDQo+IC0gICAgX19pbiBQVk9J
RCAgICAgICAgICAgICAgT3V0cHV0LA0KPiAtICAgIF9faW4gVUxPTkcgICAgICAgICAgICAgIExl
bmd0aA0KPiAtICAgICkNCj4gLXsNCj4gLSAgICBQWEVOVkJEX0JVRkZFUiAgQnVmZmVySWQgPSAo
UFhFTlZCRF9CVUZGRVIpX0J1ZmZlcklkOw0KPiAtDQo+IC0gICAgQVNTRVJUM1AoQnVmZmVySWQs
ICE9LCBOVUxMKTsNCj4gLSAgICBBU1NFUlQzUChPdXRwdXQsICE9LCBOVUxMKTsNCj4gLSAgICBB
U1NFUlQzVShMZW5ndGgsIDw9LCBQQUdFX1NJWkUpOw0KPiAtDQo+IC0gICAgQVNTRVJUM1AoQnVm
ZmVySWQtPlZBZGRyLCAhPSwgTlVMTCk7DQo+IC0gICAgQVNTRVJUKElzT25MaXN0KCZfX0J1ZmZl
ci5Vc2VkTGlzdCwgJkJ1ZmZlcklkLT5FbnRyeSwgRkFMU0UpKTsNCj4gLSAgICBSdGxDb3B5TWVt
b3J5KE91dHB1dCwgQnVmZmVySWQtPlZBZGRyLCBMZW5ndGgpOw0KPiAtfQ0KPiAtDQo+IC1WT0lE
DQo+IC1CdWZmZXJEZWJ1Z0NhbGxiYWNrKA0KPiAtICAgIF9faW4gUFhFTkJVU19ERUJVR19JTlRF
UkZBQ0UgRGVidWdJbnRlcmZhY2UNCj4gLSAgICApDQo+IC17DQo+IC0gICAgUExJU1RfRU5UUlkg
RW50cnk7DQo+IC0NCj4gLSAgICBYRU5CVVNfREVCVUcoUHJpbnRmLCBEZWJ1Z0ludGVyZmFjZSwN
Cj4gLSAgICAgICAgICAgICAgICAgIkJVRkZFUjogQWxsb2NhdGVkL0ZyZWVkIDogJWQgLyAlZFxu
IiwNCj4gLSAgICAgICAgICAgICAgICAgX19CdWZmZXIuQWxsb2NhdGVkLCBfX0J1ZmZlci5GcmVl
ZCk7DQo+IC0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWdJbnRlcmZhY2UsDQo+IC0gICAg
ICAgICAgICAgICAgICJCVUZGRVI6IEZyZWUgKEN1ci9NYXgpICA6ICVkIC8gJWRcbiIsDQo+IC0g
ICAgICAgICAgICAgICAgIF9fQnVmZmVyLkZyZWVTaXplLCBfX0J1ZmZlci5GcmVlTWF4U2l6ZSk7
DQo+IC0gICAgWEVOQlVTX0RFQlVHKFByaW50ZiwgRGVidWdJbnRlcmZhY2UsDQo+IC0gICAgICAg
ICAgICAgICAgICJCVUZGRVI6IFVzZWQgKEN1ci9NYXgpICA6ICVkIC8gJWRcbiIsDQo+IC0gICAg
ICAgICAgICAgICAgIF9fQnVmZmVyLlVzZWRTaXplLCBfX0J1ZmZlci5Vc2VkTWF4U2l6ZSk7DQo+
IC0NCj4gLSAgICBmb3IgKEVudHJ5ID0gX19CdWZmZXIuVXNlZExpc3QuRmxpbms7IEVudHJ5ICE9
ICZfX0J1ZmZlci5Vc2VkTGlzdDsgRW50cnkgPQ0KPiBFbnRyeS0+RmxpbmspIHsNCj4gLSAgICAg
ICAgUFhFTlZCRF9CVUZGRVIgQnVmZmVySWQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwNCj4g
WEVOVkJEX0JVRkZFUiwgRW50cnkpOw0KPiAtDQo+IC0gICAgICAgIFhFTkJVU19ERUJVRyhQcmlu
dGYsIERlYnVnSW50ZXJmYWNlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgIkJVRkZFUjogKFVz
ZWQpICAgICAgICAgIDogVkFERFI6MHglcCBQRk46JXAgKFNSQiAweCVwKVxuIiwNCj4gLSAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcklkLT5WQWRkciwgKHZvaWQqKUJ1ZmZlcklkLT5QZm4sIEJ1
ZmZlcklkLT5Db250ZXh0KTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBYRU5CVVNfREVCVUcoUHJp
bnRmLCBEZWJ1Z0ludGVyZmFjZSwNCj4gLSAgICAgICAgICAgICAgICAgIkJVRkZFUjogUmVhcGVk
ICAgICAgICAgIDogJWQgLyAlZFxuIiwNCj4gLSAgICAgICAgICAgICAgICAgX19CdWZmZXIuUmVh
cGVkLCBfX0J1ZmZlci5SZWFwVGhyZWFkQ291bnQpOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvc3Jj
L3hlbnZiZC9idWZmZXIuaCBiL3NyYy94ZW52YmQvYnVmZmVyLmgNCj4gZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0DQo+IGluZGV4IDNkYWNlODAuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3hlbnZiZC9i
dWZmZXIuaA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDgwICswLDAgQEANCj4gLS8qIENvcHly
aWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0cyByZXNlcnZlZC4N
Cj4gLSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLA0KPiAtICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZA0KPiAtICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoN
Cj4gLSAqDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlcg0KPiAtICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IC0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiAtICogSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gLSAqIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+IC0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiAt
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsDQo+IC0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLA0KPiAtICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SDQo+IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+IC0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gLSAqIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiAtICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiAtICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0K
PiAtICogU1VDSCBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtI2lmbmRlZiBfWEVOVkJEX0JVRkZF
Ul9IDQo+IC0jZGVmaW5lIF9YRU5WQkRfQlVGRkVSX0gNCj4gLQ0KPiAtI2luY2x1ZGUgPHdkbS5o
Pg0KPiAtI2luY2x1ZGUgPHhlbnZiZC1zdG9ycG9ydC5oPg0KPiAtI2luY2x1ZGUgPGRlYnVnX2lu
dGVyZmFjZS5oPg0KPiAtDQo+IC1leHRlcm4gVk9JRA0KPiAtQnVmZmVySW5pdGlhbGl6ZSgNCj4g
LSAgICApOw0KPiAtDQo+IC1leHRlcm4gVk9JRA0KPiAtQnVmZmVyVGVybWluYXRlKA0KPiAtICAg
ICk7DQo+IC0NCj4gLV9fY2hlY2tSZXR1cm4NCj4gLWV4dGVybiBCT09MRUFODQo+IC1CdWZmZXJH
ZXQoDQo+IC0gICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQ29udGV4dCwNCj4gLSAgICBfX291
dCBQVk9JRCogICAgICAgICAgICBCdWZmZXJJZCwNCj4gLSAgICBfX291dCBQRk5fTlVNQkVSKiAg
ICAgICBQZm4NCj4gLSAgICApOw0KPiAtDQo+IC1leHRlcm4gVk9JRA0KPiAtQnVmZmVyUHV0KA0K
PiAtICAgIF9faW4gIFBWT0lEICAgICAgICAgICAgIEJ1ZmZlcklkDQo+IC0gICAgKTsNCj4gLQ0K
PiAtZXh0ZXJuIFZPSUQNCj4gLUJ1ZmZlckNvcHlJbigNCj4gLSAgICBfX2luICBQVk9JRCAgICAg
ICAgICAgICBCdWZmZXJJZCwNCj4gLSAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBJbnB1dCwN
Cj4gLSAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBMZW5ndGgNCj4gLSAgICApOw0KPiAtDQo+
IC1leHRlcm4gVk9JRA0KPiAtQnVmZmVyQ29weU91dCgNCj4gLSAgICBfX2luICBQVk9JRCAgICAg
ICAgICAgICBCdWZmZXJJZCwNCj4gLSAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBPdXRwdXQs
DQo+IC0gICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgTGVuZ3RoDQo+IC0gICAgKTsNCj4gLQ0K
PiAtZXh0ZXJuIFZPSUQNCj4gLUJ1ZmZlckRlYnVnQ2FsbGJhY2soDQo+IC0gICAgX19pbiBQWEVO
QlVTX0RFQlVHX0lOVEVSRkFDRSBEZWJ1Z0ludGVyZmFjZQ0KPiAtICAgICk7DQo+IC0NCj4gLQ0K
PiAtI2VuZGlmIC8vIF9YRU5WQkRfQlVGRkVSX0gNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQv
ZHJpdmVyLmMgYi9zcmMveGVudmJkL2RyaXZlci5jDQo+IGluZGV4IDY3NmM0NDUuLmU3YTNkM2Eg
MTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW52YmQvZHJpdmVyLmMNCj4gKysrIGIvc3JjL3hlbnZiZC9k
cml2ZXIuYw0KPiBAQCAtNDEsNyArNDEsNiBAQA0KPiAgI2luY2x1ZGUgImFkYXB0ZXIuaCINCj4g
ICNpbmNsdWRlICJyZWdpc3RyeS5oIg0KPiAgI2luY2x1ZGUgInNyYmV4dC5oIg0KPiAtI2luY2x1
ZGUgImJ1ZmZlci5oIg0KPiANCj4gICNpbmNsdWRlICJ1dGlsLmgiDQo+ICAjaW5jbHVkZSAiZGVi
dWcuaCINCj4gQEAgLTI0MCw4ICsyMzksNiBAQCBEcml2ZXJVbmxvYWQoDQo+ICAgICAgRHJpdmVy
LlN0b3JQb3J0RGlzcGF0Y2hQbnAgPSBOVUxMOw0KPiAgICAgIERyaXZlci5TdG9yUG9ydERpc3Bh
dGNoUG93ZXIgPSBOVUxMOw0KPiANCj4gLSAgICBCdWZmZXJUZXJtaW5hdGUoKTsNCj4gLQ0KPiAg
ICAgIFJlZ2lzdHJ5Q2xvc2VLZXkoRHJpdmVyLlBhcmFtZXRlcnNLZXkpOw0KPiAgICAgIERyaXZl
ci5QYXJhbWV0ZXJzS2V5ID0gTlVMTDsNCj4gDQo+IEBAIC0zNjYsNyArMzYzLDYgQEAgRHJpdmVy
RW50cnkoDQo+IA0KPiAgICAgIERyaXZlci5QYXJhbWV0ZXJzS2V5ID0gUGFyYW1ldGVyc0tleTsN
Cj4gICAgICBEcml2ZXIuQWRhcHRlciA9IE5VTEw7DQo+IC0gICAgQnVmZmVySW5pdGlhbGl6ZSgp
Ow0KPiANCj4gICAgICBfX0RyaXZlckluaXRpYWxpemVPdmVycmlkZXMoKTsNCj4gDQo+IEBAIC0z
OTEsOCArMzg3LDYgQEAgRHJpdmVyRW50cnkoDQo+ICBmYWlsNDoNCj4gICAgICBFcnJvcigiZmFp
bDRcbiIpOw0KPiANCj4gLSAgICBCdWZmZXJUZXJtaW5hdGUoKTsNCj4gLQ0KPiAgICAgIFJlZ2lz
dHJ5Q2xvc2VLZXkoRHJpdmVyLlBhcmFtZXRlcnNLZXkpOw0KPiAgICAgIERyaXZlci5QYXJhbWV0
ZXJzS2V5ID0gTlVMTDsNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVudmJkL3JpbmcuYyBiL3Ny
Yy94ZW52YmQvcmluZy5jDQo+IGluZGV4IGJhMzg5ZDguLjc3ZWVlNTQgMTAwNjQ0DQo+IC0tLSBh
L3NyYy94ZW52YmQvcmluZy5jDQo+ICsrKyBiL3NyYy94ZW52YmQvcmluZy5jDQo+IEBAIC00Nyw3
ICs0Nyw2IEBADQo+ICAjaW5jbHVkZSAiZHJpdmVyLmgiDQo+ICAjaW5jbHVkZSAiZ3JhbnRlci5o
Ig0KPiAgI2luY2x1ZGUgInF1ZXVlLmgiDQo+IC0jaW5jbHVkZSAiYnVmZmVyLmgiDQo+IA0KPiAg
I2luY2x1ZGUgInV0aWwuaCINCj4gICNpbmNsdWRlICJkZWJ1Zy5oIg0KPiBAQCAtNDQ2LDE1ICs0
NDUsMjUgQEAgUmluZ1B1dFNlZ21lbnQoDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBYRU5WQkRf
R1JBTlRFUiAgICAgR3JhbnRlciA9IEZyb250ZW5kR2V0R3JhbnRlcihSaW5nLT5Gcm9udGVuZCk7
DQo+ICsgICAgUFhFTlZCRF9CT1VOQ0UgICAgICBCb3VuY2UgPSBTZWdtZW50LT5Cb3VuY2U7DQo+
IA0KPiAgICAgIGlmIChTZWdtZW50LT5HcmFudCkNCj4gICAgICAgICAgR3JhbnRlclB1dChHcmFu
dGVyLCBTZWdtZW50LT5HcmFudCk7DQo+IA0KPiAtICAgIGlmIChTZWdtZW50LT5CdWZmZXJJZCkN
Cj4gLSAgICAgICAgQnVmZmVyUHV0KFNlZ21lbnQtPkJ1ZmZlcklkKTsNCj4gKyAgICBpZiAoQm91
bmNlKSB7DQo+ICsgICAgICAgIGlmIChCb3VuY2UtPlNvdXJjZVB0cikgew0KPiArICAgICAgICAg
ICAgTW1Vbm1hcExvY2tlZFBhZ2VzKEJvdW5jZS0+U291cmNlUHRyLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZCb3VuY2UtPlNvdXJjZU1kbCk7DQo+ICsgICAgICAgIH0NCj4g
KyAgICAgICAgUnRsWmVyb01lbW9yeSgmQm91bmNlLT5Tb3VyY2VNZGwsIHNpemVvZihNREwpKTsN
Cj4gKyAgICAgICAgQm91bmNlLT5Tb3VyY2VQdHIgPSBOVUxMOw0KPiArICAgICAgICBCb3VuY2Ut
PlNvdXJjZVBmblswXSA9IDA7DQo+ICsgICAgICAgIEJvdW5jZS0+U291cmNlUGZuWzFdID0gMDsN
Cj4gDQo+IC0gICAgaWYgKFNlZ21lbnQtPkJ1ZmZlcikNCj4gLSAgICAgICAgTW1Vbm1hcExvY2tl
ZFBhZ2VzKFNlZ21lbnQtPkJ1ZmZlciwgJlNlZ21lbnQtPk1kbCk7DQo+ICsgICAgICAgIEFkYXB0
ZXJQdXRCb3VuY2UoVGFyZ2V0R2V0QWRhcHRlcihGcm9udGVuZEdldFRhcmdldChSaW5nLQ0KPiA+
RnJvbnRlbmQpKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuY2UpOw0KPiArICAg
IH0NCj4gKyAgICBTZWdtZW50LT5Cb3VuY2UgPSBOVUxMOw0KPiANCj4gICAgICBSdGxaZXJvTWVt
b3J5KFNlZ21lbnQsIHNpemVvZihYRU5WQkRfU0VHTUVOVCkpOw0KPiAgICAgIF9fTG9va2FzaWRl
RnJlZSgmUmluZy0+U2VnbWVudExpc3QsIFNlZ21lbnQpOw0KPiBAQCAtNjM2LDkgKzY0NSwxMyBA
QCBSaW5nUmVxdWVzdENvcHlPdXRwdXQoDQo+ICAgICAgICAgICAgICBFbnRyeSAhPSAmUmVxdWVz
dC0+U2VnbWVudHM7DQo+ICAgICAgICAgICAgICBFbnRyeSA9IEVudHJ5LT5GbGluaykgew0KPiAg
ICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5
LA0KPiBYRU5WQkRfU0VHTUVOVCwgRW50cnkpOw0KPiArICAgICAgICBQWEVOVkJEX0JPVU5DRSAg
Qm91bmNlID0gU2VnbWVudC0+Qm91bmNlOw0KPiANCj4gLSAgICAgICAgaWYgKFNlZ21lbnQtPkJ1
ZmZlcklkKQ0KPiAtICAgICAgICAgICAgQnVmZmVyQ29weU91dChTZWdtZW50LT5CdWZmZXJJZCwg
U2VnbWVudC0+QnVmZmVyLCBTZWdtZW50LQ0KPiA+TGVuZ3RoKTsNCj4gKyAgICAgICAgaWYgKEJv
dW5jZSkgew0KPiArICAgICAgICAgICAgUnRsQ29weU1lbW9yeShCb3VuY2UtPlNvdXJjZVB0ciwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQm91bmNlLT5Cb3VuY2VQdHIsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1tR2V0TWRsQnl0ZUNvdW50KCZCb3VuY2UtPlNvdXJjZU1k
bCkpOw0KPiArICAgICAgICB9DQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gQEAgLTY2MCw4ICs2NzMs
OSBAQCBSaW5nUHJlcGFyZVNlZ21lbnQoDQo+ICAgICAgY29uc3QgVUxPTkcgICAgICAgICBTZWN0
b3JTaXplID0gRnJvbnRlbmRHZXREaXNrSW5mbyhSaW5nLT5Gcm9udGVuZCktDQo+ID5TZWN0b3JT
aXplOw0KPiAgICAgIGNvbnN0IFVMT05HICAgICAgICAgU2VjdG9yc1BlclBhZ2UgPSBfX1JpbmdT
ZWN0b3JzUGVyUGFnZShTZWN0b3JTaXplKTsNCj4gICAgICBQWEVOVkJEX1RBUkdFVCAgICAgIFRh
cmdldCA9IEZyb250ZW5kR2V0VGFyZ2V0KFJpbmctPkZyb250ZW5kKTsNCj4gKyAgICBQWEVOVkJE
X0FEQVBURVIgICAgIEFkYXB0ZXIgPSBUYXJnZXRHZXRBZGFwdGVyKFRhcmdldCk7DQo+IA0KPiAt
ICAgIFBmbiA9IEFkYXB0ZXJHZXROZXh0U0dFbnRyeShUYXJnZXRHZXRBZGFwdGVyKFRhcmdldCks
DQo+ICsgICAgUGZuID0gQWRhcHRlckdldE5leHRTR0VudHJ5KEFkYXB0ZXIsDQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNyYkV4dCwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk9mZnNl
dCwNCj4gQEAgLTY3MywxMyArNjg3LDExIEBAIFJpbmdQcmVwYXJlU2VnbWVudCgNCj4gICAgICAg
ICAgU2VnbWVudC0+Rmlyc3RTZWN0b3IgICAgPSAoVUNIQVIpKChPZmZzZXQgKyBTZWN0b3JTaXpl
IC0gMSkgLyBTZWN0b3JTaXplKTsNCj4gICAgICAgICAgKlNlY3RvcnNOb3cgICAgICAgICAgICAg
PSBfX21pbihTZWN0b3JzTGVmdCwgU2VjdG9yc1BlclBhZ2UgLSBTZWdtZW50LQ0KPiA+Rmlyc3RT
ZWN0b3IpOw0KPiAgICAgICAgICBTZWdtZW50LT5MYXN0U2VjdG9yICAgICA9IChVQ0hBUikoU2Vn
bWVudC0+Rmlyc3RTZWN0b3IgKw0KPiAqU2VjdG9yc05vdyAtIDEpOw0KPiAtICAgICAgICBTZWdt
ZW50LT5CdWZmZXJJZCAgICAgICA9IE5VTEw7IC8vIGdyYW50ZWQsIGVuc3VyZSBpdHMgbnVsbA0K
PiAtICAgICAgICBTZWdtZW50LT5CdWZmZXIgICAgICAgICA9IE5VTEw7IC8vIGdyYW50ZWQsIGVu
c3VyZSBpdHMgbnVsbA0KPiAtICAgICAgICBTZWdtZW50LT5MZW5ndGggICAgICAgICA9IDA7ICAg
IC8vIGdyYW50ZWQsIGVuc3VyZSBpdHMgMA0KPiANCj4gICAgICAgICAgQVNTRVJUM1UoKExlbmd0
aCAvIFNlY3RvclNpemUpLCA9PSwgKlNlY3RvcnNOb3cpOw0KPiAgICAgIH0gZWxzZSB7DQo+IC0g
ICAgICAgIFBNREwgICAgICAgIE1kbDsNCj4gKyAgICAgICAgUFhFTlZCRF9CT1VOQ0UgICAgICBC
b3VuY2U7DQo+ICsgICAgICAgIFBNREwgICAgICAgICAgICAgICAgTWRsOw0KPiANCj4gICAgICAg
ICAgKytSaW5nLT5TZWdzQm91bmNlZDsNCj4gICAgICAgICAgLy8gZ2V0IGZpcnN0IHNlY3Rvciwg
bGFzdCBzZWN0b3IgYW5kIGNvdW50DQo+IEBAIC02ODcsMjkgKzY5OSwzMyBAQCBSaW5nUHJlcGFy
ZVNlZ21lbnQoDQo+ICAgICAgICAgICpTZWN0b3JzTm93ICAgICAgICAgICAgID0gX19taW4oU2Vj
dG9yc0xlZnQsIFNlY3RvcnNQZXJQYWdlKTsNCj4gICAgICAgICAgU2VnbWVudC0+TGFzdFNlY3Rv
ciAgICAgPSAoVUNIQVIpKCpTZWN0b3JzTm93IC0gMSk7DQo+IA0KPiAtICAgICAgICAvLyBtYXAg
U0dMaXN0IHRvIFZpcnR1YWwgQWRkcmVzcy4gUG9wdWxhdGVzIFNlZ21lbnQtPkJ1ZmZlciBhbmQN
Cj4gU2VnbWVudC0+TGVuZ3RoDQo+ICsgICAgICAgIEJvdW5jZSA9IEFkYXB0ZXJHZXRCb3VuY2Uo
QWRhcHRlcik7DQo+ICsgICAgICAgIGlmIChCb3VuY2UgPT0gTlVMTCkNCj4gKyAgICAgICAgICAg
IGdvdG8gZmFpbDE7DQo+ICsgICAgICAgIFNlZ21lbnQtPkJvdW5jZSA9IEJvdW5jZTsNCj4gKw0K
PiAgI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQo+ICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZToyODE0
NSkNCj4gLSAgICAgICAgTWRsID0gJlNlZ21lbnQtPk1kbDsNCj4gLSAgICAgICAgTWRsLT5OZXh0
ICAgICAgICAgICA9IE5VTEw7DQo+IC0gICAgICAgIE1kbC0+U2l6ZSAgICAgICAgICAgPSAoU0hP
UlQpKHNpemVvZihNREwpICsgc2l6ZW9mKFBGTl9OVU1CRVIpKTsNCj4gLSAgICAgICAgTWRsLT5N
ZGxGbGFncyAgICAgICA9IE1ETF9QQUdFU19MT0NLRUQ7DQo+IC0gICAgICAgIE1kbC0+UHJvY2Vz
cyAgICAgICAgPSBOVUxMOw0KPiAtICAgICAgICBNZGwtPk1hcHBlZFN5c3RlbVZhID0gTlVMTDsN
Cj4gLSAgICAgICAgTWRsLT5TdGFydFZhICAgICAgICA9IE5VTEw7DQo+IC0gICAgICAgIE1kbC0+
Qnl0ZUNvdW50ICAgICAgPSBMZW5ndGg7DQo+IC0gICAgICAgIE1kbC0+Qnl0ZU9mZnNldCAgICAg
PSBPZmZzZXQ7DQo+IC0gICAgICAgIFNlZ21lbnQtPlBmblswXSAgICAgPSBQZm47DQo+ICsgICAg
ICAgIE1kbCA9ICZCb3VuY2UtPlNvdXJjZU1kbDsNCj4gKyAgICAgICAgTWRsLT5OZXh0ICAgICAg
ICAgICAgICAgPSBOVUxMOw0KPiArICAgICAgICBNZGwtPlNpemUgICAgICAgICAgICAgICA9IChT
SE9SVCkoc2l6ZW9mKE1ETCkgKyBzaXplb2YoUEZOX05VTUJFUikpOw0KPiArICAgICAgICBNZGwt
Pk1kbEZsYWdzICAgICAgICAgICA9IE1ETF9QQUdFU19MT0NLRUQ7DQo+ICsgICAgICAgIE1kbC0+
UHJvY2VzcyAgICAgICAgICAgID0gTlVMTDsNCj4gKyAgICAgICAgTWRsLT5NYXBwZWRTeXN0ZW1W
YSAgICAgPSBOVUxMOw0KPiArICAgICAgICBNZGwtPlN0YXJ0VmEgICAgICAgICAgICA9IE5VTEw7
DQo+ICsgICAgICAgIE1kbC0+Qnl0ZUNvdW50ICAgICAgICAgID0gTGVuZ3RoOw0KPiArICAgICAg
ICBNZGwtPkJ5dGVPZmZzZXQgICAgICAgICA9IE9mZnNldDsNCj4gKyAgICAgICAgQm91bmNlLT5T
b3VyY2VQZm5bMF0gICAgPSBQZm47DQo+IA0KPiAgICAgICAgICBpZiAoTGVuZ3RoIDwgKlNlY3Rv
cnNOb3cgKiBTZWN0b3JTaXplKSB7DQo+IC0gICAgICAgICAgICBQZm4gPSBBZGFwdGVyR2V0TmV4
dFNHRW50cnkoVGFyZ2V0R2V0QWRhcHRlcihUYXJnZXQpLA0KPiArICAgICAgICAgICAgUGZuID0g
QWRhcHRlckdldE5leHRTR0VudHJ5KEFkYXB0ZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3JiRXh0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExlbmd0aCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmT2Zmc2V0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZMZW5ndGgpOw0KPiAtICAgICAgICAgICAgTWRsLT5TaXplICAgICAgICs9IHNpemVvZihQ
Rk5fTlVNQkVSKTsNCj4gLSAgICAgICAgICAgIE1kbC0+Qnl0ZUNvdW50ICA9IE1kbC0+Qnl0ZUNv
dW50ICsgTGVuZ3RoOw0KPiAtICAgICAgICAgICAgU2VnbWVudC0+UGZuWzFdID0gUGZuOw0KPiAr
ICAgICAgICAgICAgTWRsLT5TaXplICAgICAgICAgICArPSBzaXplb2YoUEZOX05VTUJFUik7DQo+
ICsgICAgICAgICAgICBNZGwtPkJ5dGVDb3VudCAgICAgICs9IExlbmd0aDsNCj4gKyAgICAgICAg
ICAgIEJvdW5jZS0+U291cmNlUGZuWzFdID0gUGZuOw0KPiAgICAgICAgICB9DQo+ICAjcHJhZ21h
IHdhcm5pbmcocG9wKQ0KPiANCj4gQEAgLTcxNywyMyArNzMzLDI2IEBAIFJpbmdQcmVwYXJlU2Vn
bWVudCgNCj4gICAgICAgICAgQVNTRVJUM1UoTWRsLT5CeXRlQ291bnQsIDw9LCBQQUdFX1NJWkUp
Ow0KPiAgICAgICAgICBBU1NFUlQzVSgqU2VjdG9yc05vdywgPT0sIChNZGwtPkJ5dGVDb3VudCAv
IFNlY3RvclNpemUpKTsNCj4gDQo+IC0gICAgICAgIFNlZ21lbnQtPkxlbmd0aCA9IF9fbWluKE1k
bC0+Qnl0ZUNvdW50LCBQQUdFX1NJWkUpOw0KPiAtICAgICAgICBTZWdtZW50LT5CdWZmZXIgPSBN
bU1hcExvY2tlZFBhZ2VzU3BlY2lmeUNhY2hlKE1kbCwNCj4gS2VybmVsTW9kZSwNCj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTW1DYWNoZWQsIE5VTEwsIEZBTFNFLCBfX1JpbmdQ
cmlvcml0eShSaW5nKSk7DQo+IC0gICAgICAgIGlmICghU2VnbWVudC0+QnVmZmVyKQ0KPiAtICAg
ICAgICAgICAgZ290byBmYWlsMTsNCj4gLQ0KPiAtICAgICAgICBBU1NFUlQzUChNbUdldE1kbFBm
bkFycmF5KE1kbClbMF0sID09LCBTZWdtZW50LT5QZm5bMF0pOw0KPiAtICAgICAgICBBU1NFUlQz
UChNbUdldE1kbFBmbkFycmF5KE1kbClbMV0sID09LCBTZWdtZW50LT5QZm5bMV0pOw0KPiAtDQo+
IC0gICAgICAgIC8vIGdldCBhIGJ1ZmZlcg0KPiAtICAgICAgICBpZiAoIUJ1ZmZlckdldChTZWdt
ZW50LCAmU2VnbWVudC0+QnVmZmVySWQsICZQZm4pKQ0KPiArICAgICAgICBCb3VuY2UtPlNvdXJj
ZVB0ciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5Q2FjaGUoTWRsLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1tQ2FjaGVkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19SaW5nUHJpb3JpdHkoUmlu
ZykpOw0KPiArICAgICAgICBpZiAoQm91bmNlLT5Tb3VyY2VQdHIgPT0gTlVMTCkNCj4gICAgICAg
ICAgICAgIGdvdG8gZmFpbDI7DQo+IA0KPiArICAgICAgICBBU1NFUlQzUChNbUdldE1kbFBmbkFy
cmF5KE1kbClbMF0sID09LCBCb3VuY2UtPlNvdXJjZVBmblswXSk7DQo+ICsgICAgICAgIEFTU0VS
VDNQKE1tR2V0TWRsUGZuQXJyYXkoTWRsKVsxXSwgPT0sIEJvdW5jZS0+U291cmNlUGZuWzFdKTsN
Cj4gKw0KPiAgICAgICAgICAvLyBjb3B5IGNvbnRlbnRzIGluDQo+ICAgICAgICAgIGlmIChSZWFk
T25seSkgeyAvLyBPcGVyYXRpb24gPT0gQkxLSUZfT1BfV1JJVEUNCj4gLSAgICAgICAgICAgIEJ1
ZmZlckNvcHlJbihTZWdtZW50LT5CdWZmZXJJZCwgU2VnbWVudC0+QnVmZmVyLCBTZWdtZW50LQ0K
PiA+TGVuZ3RoKTsNCj4gKyAgICAgICAgICAgIFJ0bENvcHlNZW1vcnkoQm91bmNlLT5Cb3VuY2VQ
dHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdW5jZS0+U291cmNlUHRyLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICBNbUdldE1kbEJ5dGVDb3VudCgmQm91bmNlLT5Tb3Vy
Y2VNZGwpKTsNCj4gICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIFBmbiA9IE1tR2V0TWRsUGZu
QXJyYXkoQm91bmNlLT5Cb3VuY2VNZGwpWzBdOw0KPiAgICAgIH0NCj4gDQo+ICAgICAgLy8gR3Jh
bnQgc2VnbWVudCdzIHBhZ2UNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvc3JiZXh0LmggYi9z
cmMveGVudmJkL3NyYmV4dC5oDQo+IGluZGV4IGM1ZWNkYjYuLjU0ZWMxMTkgMTAwNjQ0DQo+IC0t
LSBhL3NyYy94ZW52YmQvc3JiZXh0LmgNCj4gKysrIGIvc3JjL3hlbnZiZC9zcmJleHQuaA0KPiBA
QCAtMzcsNiArMzcsMTQgQEANCj4gICNpbmNsdWRlIDx4ZW4uaD4NCj4gICNpbmNsdWRlICJhc3Nl
cnQuaCINCj4gDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0JPVU5DRSB7DQo+ICsgICAgUFZP
SUQgICAgICAgICAgICAgICAgICAgQm91bmNlUHRyOw0KPiArICAgIFBNREwgICAgICAgICAgICAg
ICAgICAgIEJvdW5jZU1kbDsNCj4gKyAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBTb3VyY2VQ
dHI7DQo+ICsgICAgTURMICAgICAgICAgICAgICAgICAgICAgU291cmNlTWRsOw0KPiArICAgIFBG
Tl9OVU1CRVIgICAgICAgICAgICAgIFNvdXJjZVBmblsyXTsNCj4gK30gWEVOVkJEX0JPVU5DRSwg
KlBYRU5WQkRfQk9VTkNFOw0KPiArDQo+ICAjcHJhZ21hIHBhY2socHVzaCwgMSkNCj4gIHR5cGVk
ZWYgc3RydWN0IF9CTEtJRl9TRUdNRU5UIHsNCj4gICAgICBVTE9ORyAgICAgICAgICAgICAgICAg
ICBHcmFudFJlZjsNCj4gQEAgLTYzLDEwICs3MSw3IEBAIHR5cGVkZWYgc3RydWN0IF9YRU5WQkRf
U0VHTUVOVCB7DQo+ICAgICAgVUNIQVIgICAgICAgICAgICAgICAgICAgRmlyc3RTZWN0b3I7DQo+
ICAgICAgVUNIQVIgICAgICAgICAgICAgICAgICAgTGFzdFNlY3RvcjsNCj4gICAgICBVTE9ORyAg
ICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+IC0gICAgUFZPSUQgICAgICAgICAgICAgICAgICAg
QnVmZmVySWQ7DQo+IC0gICAgUFZPSUQgICAgICAgICAgICAgICAgICAgQnVmZmVyOyAvLyBWaXJ0
QWRkciBtYXBwZWQgdG8gUGh5c0FkZHIocykNCj4gLSAgICBNREwgICAgICAgICAgICAgICAgICAg
ICBNZGw7DQo+IC0gICAgUEZOX05VTUJFUiAgICAgICAgICAgICAgUGZuWzJdOw0KPiArICAgIFBY
RU5WQkRfQk9VTkNFICAgICAgICAgIEJvdW5jZTsNCj4gIH0gWEVOVkJEX1NFR01FTlQsICpQWEVO
VkJEX1NFR01FTlQ7DQo+IA0KPiAgLy8gSW50ZXJuYWwgcmVxdWVzdCBjb250ZXh0DQo+IGRpZmYg
LS1naXQgYS9zcmMveGVudmJkL3RhcmdldC5jIGIvc3JjL3hlbnZiZC90YXJnZXQuYw0KPiBpbmRl
eCBmZDg2MjFkLi4zN2I5YTJmIDEwMDY0NA0KPiAtLS0gYS9zcmMveGVudmJkL3RhcmdldC5jDQo+
ICsrKyBiL3NyYy94ZW52YmQvdGFyZ2V0LmMNCj4gQEAgLTQ4LDcgKzQ4LDYgQEANCj4gICNpbmNs
dWRlICJmcm9udGVuZC5oIg0KPiAgI2luY2x1ZGUgInF1ZXVlLmgiDQo+ICAjaW5jbHVkZSAic3Ji
ZXh0LmgiDQo+IC0jaW5jbHVkZSAiYnVmZmVyLmgiDQo+IA0KPiAgI2luY2x1ZGUgImRlYnVnLmgi
DQo+ICAjaW5jbHVkZSAiYXNzZXJ0LmgiDQo+IGRpZmYgLS1naXQgYS92czIwMTUveGVudmJkL3hl
bnZiZC52Y3hwcm9qIGIvdnMyMDE1L3hlbnZiZC94ZW52YmQudmN4cHJvag0KPiBpbmRleCBkNWI4
MTJiLi5hODVlNjViIDEwMDY0NA0KPiAtLS0gYS92czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9q
DQo+ICsrKyBiL3ZzMjAxNS94ZW52YmQveGVudmJkLnZjeHByb2oNCj4gQEAgLTY0LDcgKzY0LDYg
QEANCj4gICAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iQChJbmYtPiclKENvcHlPdXRwdXQp
JykiDQo+IENvbmRpdGlvbj0iJ0AoSW5mKSchPScnIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4g
ICAgPEl0ZW1Hcm91cD4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW52
YmQvYnVmZmVyLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVu
dmJkL2RyaXZlci5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hl
bnZiZC9yZWdpc3RyeS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3Jj
L3hlbnZiZC9hZGFwdGVyLmMiIC8+DQo+IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1h
aWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4t
cHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4t
cHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 29 15:58:14 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 29 Sep 2017 15:58:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dxxg6-0001vc-9V; Fri, 29 Sep 2017 15:58:14 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4384c3d6d=Paul.Durrant@citrix.com>)
 id 1dxxg5-0001vS-04
 for win-pv-devel@lists.xenproject.org; Fri, 29 Sep 2017 15:58:13 +0000
Received: from [85.158.143.35] by server-5.bemta-6.messagelabs.com id
 81/16-03454-49D6EC95; Fri, 29 Sep 2017 15:58:12 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPIsWRWlGSWpSXmKPExsWyU9JRQndy7rl
 Ig5e9RhZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8P0XpaC9woVn5/uY2pg3KHQxcjJISHgJzG/
 o4sdxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i5WEFtYwFPiydXjLBA1XhKrfs1hhrCNJ
 FbOewc2h0VAVeLftEuMIDavgLvE1mc7wWYKCWRJPD50BmwOp4C1xM+uFWBzGAVkJb40robaJS
 5x6wnEDRICAhJL9pxnhrBFJV4+/scKYRtIbF26D6iXA6heU2L9Ln2IVkWJKd0P2SHWCkqcnPm
 EZQKj8CwkU2chdMxC0jELSccCRpZVjOrFqUVlqUW6JnpJRZnpGSW5iZk5uoYGZnq5qcXFiemp
 OYlJxXrJ+bmbGIFBzwAEOxi7L/sfYpTkYFIS5d2WdS5SiC8pP6UyI7E4I76oNCe1+BCjDAeHk
 gRvXg5QTrAoNT21Ii0zBxh/MGkJDh4lEV4dkDRvcUFibnFmOkTqFKM9x7FNl/8wcbxrugEkZ9
 y8CySfXJv3l0mIJS8/L1VKnHcdSJsASFtGaR7cUFi6uMQoKyXMywh0phBPQWpRbmYJqvwrRnE
 ORiVh3iKQKTyZeSVwu18BncUEdNbkiWdAzipJREhJNTDW1EgzZT7em1h0f2pF7y+JkrvRV5gu
 lW199rlZxH7qA55Kx31/ubQKL9hvVjnULOIyfS/f+zzhq3fE/MVTOWJZlr0qO3vY2s15w7fUm
 qL/UpcPPZrfe71GQOp77ZNrv7XsNzE4XTfkm3pJ0pDjJ1MBT9upP8nfXjlkT2K92WQqwjSdR0
 T4XYwSS3FGoqEWc1FxIgDyHbP2EgMAAA==
X-Env-Sender: prvs=4384c3d6d=Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1506700691!62250881!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 51410 invoked from network); 29 Sep 2017 15:58:11 -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;
 29 Sep 2017 15:58:11 -0000
X-IronPort-AV: E=Sophos;i="5.42,453,1500940800"; d="scan'208";a="53726407"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 3/5] Add override for MaxRingPageOrder
Thread-Index: AQHTNs54Wq5ZW3hgTkeCQEz8HBvO76LMCbGA
Date: Fri, 29 Sep 2017 15:57:50 +0000
Message-ID: <4b4f68ac898f41f7a28654609a9852f0@AMSPEX02CL03.citrite.net>
References: <20170926135015.17476-1-owen.smith@citrix.com>
 <20170926135015.17476-4-owen.smith@citrix.com>
In-Reply-To: <20170926135015.17476-4-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 3/5] Add override for MaxRingPageOrder
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNiBTZXB0ZW1iZXIgMjAxNyAxNDo1
MA0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAzLzVdIEFkZCBvdmVycmlkZSBmb3IgTWF4UmluZ1BhZ2VPcmRlcg0KPiANCj4gRnJvbTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiANCj4gQWxsb3cgYSBXaW5kb3dz
IGFkbWluIHRvIGxpbWl0IHRoZSByaW5nIHBhZ2UgY291bnQgd2l0aG91dA0KPiBhZmZlY3Rpbmcg
YW55IG90aGVyIFZNcyBvbiB0aGUgaG9zdC4gVGhlIG92ZXJyaWRlIGNhbiBiZSB1c2VkDQo+IHRv
IHJlc3RyaWN0IGJsa2JhY2sncyBnZW5lcm91cyAxNiBwYWdlIHJpbmcgdG8gYSBzbWFsbGVyIHZh
bHVlLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXgu
Y29tPg0KDQpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNv
bT4NCg0KPiAtLS0NCj4gIHNyYy94ZW52YmQvZHJpdmVyLmMgfCAgMyArKy0NCj4gIHNyYy94ZW52
YmQvZHJpdmVyLmggfCAgMSArDQo+ICBzcmMveGVudmJkL3JpbmcuYyAgIHwgMTIgKysrKysrKysr
Ky0tDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p
DQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC9kcml2ZXIuYyBiL3NyYy94ZW52YmQvZHJp
dmVyLmMNCj4gaW5kZXggZTdhM2QzYS4uNTliMzgwYyAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbnZi
ZC9kcml2ZXIuYw0KPiArKysgYi9zcmMveGVudmJkL2RyaXZlci5jDQo+IEBAIC0yNjYsNyArMjY2
LDggQEAgX19Ecml2ZXJJbml0aWFsaXplT3ZlcnJpZGVzKA0KPiAgICAgICAgICAgICAgICB7ICJk
aXNjYXJkLWVuYWJsZSIsIEZlYXR1cmVEaXNjYXJkRW5hYmxlIH0sDQo+ICAgICAgICAgICAgICAg
IHsgImRpc2NhcmQtc2VjdXJlIiwgRmVhdHVyZURpc2NhcmRTZWN1cmUgfSwNCj4gICAgICAgICAg
ICAgICAgeyAiZGlzY2FyZC1hbGlnbm1lbnQiLCBGZWF0dXJlRGlzY2FyZEFsaWdubWVudCB9LA0K
PiAtICAgICAgICAgICAgICB7ICJkaXNjYXJkLWdyYW51bGFyaXR5IiwgRmVhdHVyZURpc2NhcmRH
cmFudWxhcml0eSB9DQo+ICsgICAgICAgICAgICAgIHsgImRpc2NhcmQtZ3JhbnVsYXJpdHkiLCBG
ZWF0dXJlRGlzY2FyZEdyYW51bGFyaXR5IH0sDQo+ICsgICAgICAgICAgICAgIHsgIm1heC1yaW5n
LXBhZ2Utb3JkZXIiLCBGZWF0dXJlTWF4UmluZ1BhZ2VPcmRlciB9DQo+ICAgICAgICAgICAgfTsN
Cj4gDQo+ICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQVJSQVlTSVpFKE1hcHBpbmcpOyBJ
bmRleCsrKSB7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVudmJkL2RyaXZlci5oIGIvc3JjL3hlbnZi
ZC9kcml2ZXIuaA0KPiBpbmRleCA5NDA5NjhlLi5kOTljMDlhIDEwMDY0NA0KPiAtLS0gYS9zcmMv
eGVudmJkL2RyaXZlci5oDQo+ICsrKyBiL3NyYy94ZW52YmQvZHJpdmVyLmgNCj4gQEAgLTc5LDYg
Kzc5LDcgQEAgdHlwZWRlZiBlbnVtIF9YRU5WQkRfRkVBVFVSRSB7DQo+ICAgICAgRmVhdHVyZURp
c2NhcmRTZWN1cmUsDQo+ICAgICAgRmVhdHVyZURpc2NhcmRBbGlnbm1lbnQsDQo+ICAgICAgRmVh
dHVyZURpc2NhcmRHcmFudWxhcml0eSwNCj4gKyAgICBGZWF0dXJlTWF4UmluZ1BhZ2VPcmRlciwN
Cj4gDQo+ICAgICAgLy8gQWRkIGFueSBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoaXMgZW51bQ0KPiAg
ICAgIE51bWJlck9mRmVhdHVyZXMNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvcmluZy5jIGIv
c3JjL3hlbnZiZC9yaW5nLmMNCj4gaW5kZXggNzdlZWU1NC4uMDMzOTc1YiAxMDA2NDQNCj4gLS0t
IGEvc3JjL3hlbnZiZC9yaW5nLmMNCj4gKysrIGIvc3JjL3hlbnZiZC9yaW5nLmMNCj4gQEAgLTE3
MTEsOSArMTcxMSwxNyBAQCBSaW5nQ29ubmVjdCgNCj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm1heC1yaW5nLXBhZ2Utb3JkZXIiLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
QnVmZmVyKTsNCj4gICAgICBpZiAoTlRfU1VDQ0VTUyhzdGF0dXMpKSB7DQo+ICsgICAgICAgIFVM
T05HICAgICAgICAgICBNYXhPcmRlcjsNCj4gKw0KPiArICAgICAgICBpZiAoRHJpdmVyR2V0RmVh
dHVyZU92ZXJyaWRlKEZlYXR1cmVNYXhSaW5nUGFnZU9yZGVyLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZNYXhPcmRlcikpIHsNCj4gKyAgICAgICAgICAgIE1heE9y
ZGVyID0gbWluKE1heE9yZGVyLCBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUik7DQo+ICsgICAg
ICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICBNYXhPcmRlciA9IFhFTlZCRF9NQVhfUklOR19Q
QUdFX09SREVSOw0KPiArICAgICAgICB9DQo+ICsNCj4gICAgICAgICAgUmluZy0+T3JkZXIgPSBz
dHJ0b3VsKEJ1ZmZlciwgTlVMTCwgMTApOw0KPiAtICAgICAgICBpZiAoUmluZy0+T3JkZXIgPiBY
RU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUikNCj4gLSAgICAgICAgICAgIFJpbmctPk9yZGVyID0g
WEVOVkJEX01BWF9SSU5HX1BBR0VfT1JERVI7DQo+ICsgICAgICAgIFJpbmctPk9yZGVyID0gbWlu
KFJpbmctPk9yZGVyLCBNYXhPcmRlcik7DQo+IA0KPiAgICAgICAgICBYRU5CVVNfU1RPUkUoRnJl
ZSwNCj4gICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5TdG9yZUludGVyZmFjZSwNCj4gLS0N
Cj4gMi44LjMNCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1i
aW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 29 16:20:21 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 29 Sep 2017 16:20:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dxy1T-0004FK-TP; Fri, 29 Sep 2017 16:20:19 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4384c3d6d=Paul.Durrant@citrix.com>)
 id 1dxy1S-0004FE-29
 for win-pv-devel@lists.xenproject.org; Fri, 29 Sep 2017 16:20:18 +0000
Received: from [85.158.143.35] by server-5.bemta-6.messagelabs.com id
 C3/51-03454-1C27EC95; Fri, 29 Sep 2017 16:20:17 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsWyU9JRQvdA0bl
 Igy+rhS3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxpU70gUTG5krHv/pZGpgnPCHqYuRk0NCwE+i
 veMYmM0moCOx9Oh8MFtEoEDi+/t5zCA2s4CaxPX9XawgtrCAhcSMI4/YIWosJdoOrIGqN5I49
 fgHWJxFQFVi3fFJjCA2r4C7xP1118BqhASyJL69aAabySlgLbHm722wOKOArMSXxtVQu8Qlbj
 2ZD3WbgMSSPeeZIWxRiZeP/7FC2AYSW5fuY+li5ACq15RYv0sfolVRYkr3Q3aItYISJ2c+YZn
 AKDwLydRZCB2zkHTMQtKxgJFlFaNGcWpRWWqRrpGlXlJRZnpGSW5iZo6uoYGZXm5qcXFiempO
 YlKxXnJ+7iZGYOAzAMEOxgOLAg8xSnIwKYnynis4FynEl5SfUpmRWJwRX1Sak1p8iFGGg0NJg
 pcLGElCgkWp6akVaZk5wBiESUtw8CiJ8M4oBErzFhck5hZnpkOkTjFachzbdPkPE8eMm3eB5J
 Nr8/4yCbHk5eelSonzTgdpEABpyCjNgxsHSxOXGGWlhHkZgQ4U4ilILcrNLEGVf8UozsGoJMx
 7FWQKT2ZeCdzWV0AHMQEdNHniGZCDShIRUlINjEHdVx44phxTfzMj9PyR/T55Eixz7oet77Lj
 6j+gX6g1jaWncfvEGtlOE9uFKfZhW+52fZoiPP28Z9WSmCXpRywXSk1JlthYcb79wfsra0xdF
 h4vXnf4XGX8ZtOnB83MZtzv9Nhm5/rnptfSB87lV/4qvFqisJ5BPGz3iweF5saLYxqrI2fmSS
 ixFGckGmoxFxUnAgDvDLHBDgMAAA==
X-Env-Sender: prvs=4384c3d6d=Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-21.messagelabs.com!1506702016!79441190!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42318 invoked from network); 29 Sep 2017 16:20:16 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-13.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 29 Sep 2017 16:20:16 -0000
X-IronPort-AV: E=Sophos;i="5.42,453,1500940800"; d="scan'208";a="53728249"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 4/5] Tidy up srbext.h
Thread-Index: AQHTNs6Cb/1d7+Wmkk6Ih+/wBqyi6aLMDzuA
Date: Fri, 29 Sep 2017 16:20:12 +0000
Message-ID: <41961cca39d34d518b2fccd5cf696c85@AMSPEX02CL03.citrite.net>
References: <20170926135015.17476-1-owen.smith@citrix.com>
 <20170926135015.17476-5-owen.smith@citrix.com>
In-Reply-To: <20170926135015.17476-5-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 4/5] Tidy up srbext.h
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNiBTZXB0ZW1iZXIgMjAxNyAxNDo1
MA0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCA0LzVdIFRpZHkgdXAgc3JiZXh0LmgNCj4gDQo+IEZyb206IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4NCj4gDQo+ICogcmVvcmRlcnMgc3RydWN0IGRlZmluaXRpb25zDQo+
ICogcmVtb3ZlIGlubGluZSBmdW5jdGlvbnMgYW5kIHVubmVjY2Vzc2FyeSBoZWFkZXJzDQo+ICog
cmVwbGFjZSBSZXF1ZXN0LklkIHdpdGggKFVMT05HNjQpKFVMT05HX1BUUilSZXF1ZXN0DQo+IA0K
PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkkn
bSBub3QgZW50aXJlbHkgY29udmluY2VkIGJ5IHVzaW5nIHRoZSBSZXF1ZXN0IHBvaW50ZXIgYXMg
dGhlIGlkIHZlcnN1cyBzb21lIG90aGVyIHZhbHVlIHRoYXQncyBsZXNzIGxpa2VseSB0byBiZSBy
ZWN5Y2xlZCAoZS5nLiBhIHRpbWVzdGFtcCkgaG93ZXZlci4uLg0KDQpSZXZpZXdlZC1ieTogUGF1
bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy94ZW52
YmQvYWRhcHRlci5jIHwgICA0ICstDQo+ICBzcmMveGVudmJkL3JpbmcuYyAgICB8IDMyMyArKysr
KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tDQo+ICBz
cmMveGVudmJkL3NyYmV4dC5oICB8IDEwMCArKysrKystLS0tLS0tLS0tDQo+ICBzcmMveGVudmJk
L3RhcmdldC5jICB8ICAgNiArLQ0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygr
KSwgMjM5IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvYWRhcHRl
ci5jIGIvc3JjL3hlbnZiZC9hZGFwdGVyLmMNCj4gaW5kZXggNGZiNzViOC4uNzc1MzM4OCAxMDA2
NDQNCj4gLS0tIGEvc3JjL3hlbnZiZC9hZGFwdGVyLmMNCj4gKysrIGIvc3JjL3hlbnZiZC9hZGFw
dGVyLmMNCj4gQEAgLTE5MTEsNyArMTkxMSw5IEBAIEFkYXB0ZXJId0J1aWxkSW8oDQo+ICAgICAg
UFhFTlZCRF9TUkJFWFQgICAgICAgICAgU3JiRXh0ID0gU3JiLT5TcmJFeHRlbnNpb247DQo+ICAg
ICAgUFhFTlZCRF9UQVJHRVQgICAgICAgICAgVGFyZ2V0Ow0KPiANCj4gLSAgICBJbml0U3JiRXh0
KFNyYik7DQo+ICsgICAgUnRsWmVyb01lbW9yeShTcmJFeHQsIHNpemVvZihYRU5WQkRfU1JCRVhU
KSk7DQo+ICsgICAgU3JiRXh0LT5TcmIgPSBTcmI7DQo+ICsgICAgU3JiLT5TcmJTdGF0dXMgPSBT
UkJfU1RBVFVTX0lOVkFMSURfUkVRVUVTVDsNCj4gDQo+ICAgICAgSW50ZXJsb2NrZWRJbmNyZW1l
bnQoKFBMT05HKSZBZGFwdGVyLT5CdWlsZElvKTsNCj4gICAgICBzd2l0Y2ggKFNyYi0+RnVuY3Rp
b24pIHsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvcmluZy5jIGIvc3JjL3hlbnZiZC9yaW5n
LmMNCj4gaW5kZXggMDMzOTc1Yi4uMzcyZjBkNSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbnZiZC9y
aW5nLmMNCj4gKysrIGIvc3JjL3hlbnZiZC9yaW5nLmMNCj4gQEAgLTUyLDcgKzUyLDYgQEANCj4g
ICNpbmNsdWRlICJkZWJ1Zy5oIg0KPiAgI2luY2x1ZGUgImFzc2VydC5oIg0KPiANCj4gLSNkZWZp
bmUgVEFHX0hFQURFUiAgICAgICAgICAgICAgICAgICdnYVRYJw0KPiAgI2RlZmluZSBYRU5WQkRf
TUFYX1JJTkdfUEFHRV9PUkRFUiAgKDQpDQo+ICAjZGVmaW5lIFhFTlZCRF9NQVhfUklOR19QQUdF
UyAgICAgICAoMSA8PA0KPiBYRU5WQkRfTUFYX1JJTkdfUEFHRV9PUkRFUikNCj4gDQo+IEBAIC05
Myw3ICs5Miw2IEBAIHN0cnVjdCBfWEVOVkJEX1JJTkcgew0KPiAgICAgIFhFTlZCRF9RVUVVRSAg
ICAgICAgICAgICAgICAgICAgUHJlcGFyZWRSZXFzOw0KPiAgICAgIFhFTlZCRF9RVUVVRSAgICAg
ICAgICAgICAgICAgICAgU3VibWl0dGVkUmVxczsNCj4gICAgICBYRU5WQkRfUVVFVUUgICAgICAg
ICAgICAgICAgICAgIFNodXRkb3duU3JiczsNCj4gLSAgICBVTE9ORyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5leHRUYWc7DQo+IA0KPiAgICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3VibWl0dGVkOw0KPiAgICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVjZWl2ZWQ7DQo+IEBAIC0yMzQsMzYgKzIzMiw2IEBAIF9fUGZuKA0KPiAgICAgIHJldHVybg0K
PiAoUEZOX05VTUJFUikoVUxPTkdfUFRSKShNbUdldFBoeXNpY2FsQWRkcmVzcyhWaXJ0QWRkciku
UXVhZFBhcnQNCj4gPj4gUEFHRV9TSElGVCk7DQo+ICB9DQo+IA0KPiAtc3RhdGljIEZPUkNFSU5M
SU5FIFVMT05HNjQNCj4gLV9fUmluZ0dldFRhZygNCj4gLSAgICBJTiAgUFhFTlZCRF9SSU5HICAg
IFJpbmcsDQo+IC0gICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0DQo+IC0gICAgKQ0KPiAt
ew0KPiAtICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoUmluZyk7DQo+IC0gICAgcmV0dXJuICgo
VUxPTkc2NClUQUdfSEVBREVSIDw8IDMyKSB8IChVTE9ORzY0KVJlcXVlc3QtPklkOw0KPiAtfQ0K
PiAtDQo+IC1zdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTg0KPiAtX19SaW5nUHV0VGFnKA0KPiAt
ICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZywNCj4gLSAgICBJTiAgVUxPTkc2NCAgICAgICAg
IElkLA0KPiAtICAgIE9VVCBQVUxPTkcgICAgICAgICAgVGFnDQo+IC0gICAgKQ0KPiAtew0KPiAt
ICAgIFVMT05HICAgSGVhZGVyID0gKFVMT05HKSgoSWQgPj4gMzIpICYgMHhGRkZGRkZGRik7DQo+
IC0NCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFJpbmcpOw0KPiAtDQo+IC0gICAgKlRh
ZyAgICA9IChVTE9ORykoSWQgJiAweEZGRkZGRkZGKTsNCj4gLSAgICBpZiAoSGVhZGVyICE9IFRB
R19IRUFERVIpIHsNCj4gLSAgICAgICAgRXJyb3IoIlBVVF9UQUcgKCVsbHgpIFRBR19IRUFERVIg
KCUwOHglMDh4KVxuIiwgSWQsIEhlYWRlciwgKlRhZyk7DQo+IC0gICAgICAgIHJldHVybiBGQUxT
RTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICByZXR1cm4gVFJVRTsNCj4gLX0NCj4gLQ0KPiAgc3Rh
dGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gIF9fUmluZ0luc2VydCgNCj4gICAgICBJTiAgUFhFTlZC
RF9SSU5HICAgICAgICBSaW5nLA0KPiBAQCAtMjg4LDcgKzI1Niw3IEBAIF9fUmluZ0luc2VydCgN
Cj4gICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+b3BlcmF0aW9uICAgICAgICAgPSBCTEtJRl9P
UF9JTkRJUkVDVDsNCj4gICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+aW5kaXJlY3Rfb3AgICAg
ICAgPSBSZXF1ZXN0LT5PcGVyYXRpb247DQo+ICAgICAgICAgICAgICByZXFfaW5kaXJlY3QtPm5y
X3NlZ21lbnRzICAgICAgID0gUmVxdWVzdC0+TnJTZWdtZW50czsNCj4gLSAgICAgICAgICAgIHJl
cV9pbmRpcmVjdC0+aWQgICAgICAgICAgICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVz
dCk7DQo+ICsgICAgICAgICAgICByZXFfaW5kaXJlY3QtPmlkICAgICAgICAgICAgICAgID0gKFVM
T05HNjQpKFVMT05HX1BUUilSZXF1ZXN0Ow0KPiAgICAgICAgICAgICAgcmVxX2luZGlyZWN0LT5z
ZWN0b3JfbnVtYmVyICAgICA9IFJlcXVlc3QtPkZpcnN0U2VjdG9yOw0KPiAgICAgICAgICAgICAg
cmVxX2luZGlyZWN0LT5oYW5kbGUgICAgICAgICAgICA9IChVU0hPUlQpRnJvbnRlbmRHZXREZXZp
Y2VJZChSaW5nLQ0KPiA+RnJvbnRlbmQpOw0KPiANCj4gQEAgLTI5OSw3ICsyNjcsNyBAQCBfX1Jp
bmdJbnNlcnQoDQo+ICAgICAgICAgICAgICAgICAgICAgIFBhZ2VFbnRyeSAhPSAmUmVxdWVzdC0+
SW5kaXJlY3RzICYmDQo+ICAgICAgICAgICAgICAgICAgICAgIFNlZ0VudHJ5ICE9ICZSZXF1ZXN0
LT5TZWdtZW50czsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICsrUGFnZUlkeCwgUGFnZUVu
dHJ5ID0gUGFnZUVudHJ5LT5GbGluaykgew0KPiAtICAgICAgICAgICAgICAgIFBYRU5WQkRfSU5E
SVJFQ1QgUGFnZSA9IENPTlRBSU5JTkdfUkVDT1JEKFBhZ2VFbnRyeSwNCj4gWEVOVkJEX0lORElS
RUNULCBFbnRyeSk7DQo+ICsgICAgICAgICAgICAgICAgUFhFTlZCRF9JTkRJUkVDVCBQYWdlID0g
Q09OVEFJTklOR19SRUNPUkQoUGFnZUVudHJ5LA0KPiBYRU5WQkRfSU5ESVJFQ1QsIExpc3RFbnRy
eSk7DQo+IA0KPiAgICAgICAgICAgICAgICAgIHJlcV9pbmRpcmVjdC0+aW5kaXJlY3RfZ3JlZnNb
UGFnZUlkeF0gPSBHcmFudGVyUmVmZXJlbmNlKEdyYW50ZXIsDQo+IFBhZ2UtPkdyYW50KTsNCj4g
DQo+IEBAIC0zMDcsNyArMjc1LDcgQEAgX19SaW5nSW5zZXJ0KA0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2VnSWR4IDwgWEVOVkJEX01BWF9TRUdNRU5UU19QRVJfUEFHRSAmJg0KPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VnRW50cnkgIT0gJlJlcXVlc3QtPlNlZ21lbnRzOw0KPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrU2VnSWR4LCBTZWdFbnRyeSA9IFNlZ0VudHJ5
LT5GbGluaykgew0KPiAtICAgICAgICAgICAgICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVu
dCA9IENPTlRBSU5JTkdfUkVDT1JEKFNlZ0VudHJ5LA0KPiBYRU5WQkRfU0VHTUVOVCwgRW50cnkp
Ow0KPiArICAgICAgICAgICAgICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudCA9DQo+IENP
TlRBSU5JTkdfUkVDT1JEKFNlZ0VudHJ5LCBYRU5WQkRfU0VHTUVOVCwgTGlzdEVudHJ5KTsNCj4g
DQo+ICAgICAgICAgICAgICAgICAgICAgIFBhZ2UtPlBhZ2VbU2VnSWR4XS5HcmFudFJlZiA9IEdy
YW50ZXJSZWZlcmVuY2UoR3JhbnRlciwNCj4gU2VnbWVudC0+R3JhbnQpOw0KPiAgICAgICAgICAg
ICAgICAgICAgICBQYWdlLT5QYWdlW1NlZ0lkeF0uRmlyc3QgICAgPSBTZWdtZW50LT5GaXJzdFNl
Y3RvcjsNCj4gQEAgLTMyMiwxNCArMjkwLDE0IEBAIF9fUmluZ0luc2VydCgNCj4gICAgICAgICAg
ICAgIHJlcS0+b3BlcmF0aW9uICAgICAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5PcGVyYXRpb247
DQo+ICAgICAgICAgICAgICByZXEtPm5yX3NlZ21lbnRzICAgICAgICAgICAgICAgID0gKFVDSEFS
KVJlcXVlc3QtPk5yU2VnbWVudHM7DQo+ICAgICAgICAgICAgICByZXEtPmhhbmRsZSAgICAgICAg
ICAgICAgICAgICAgID0gKFVTSE9SVClGcm9udGVuZEdldERldmljZUlkKFJpbmctDQo+ID5Gcm9u
dGVuZCk7DQo+IC0gICAgICAgICAgICByZXEtPmlkICAgICAgICAgICAgICAgICAgICAgICAgID0g
X19SaW5nR2V0VGFnKFJpbmcsIFJlcXVlc3QpOw0KPiArICAgICAgICAgICAgcmVxLT5pZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChVTE9ORzY0KShVTE9OR19QVFIpUmVxdWVzdDsNCj4gICAg
ICAgICAgICAgIHJlcS0+c2VjdG9yX251bWJlciAgICAgICAgICAgICAgPSBSZXF1ZXN0LT5GaXJz
dFNlY3RvcjsNCj4gDQo+ICAgICAgICAgICAgICBmb3IgKEluZGV4ID0gMCwgRW50cnkgPSBSZXF1
ZXN0LT5TZWdtZW50cy5GbGluazsNCj4gICAgICAgICAgICAgICAgICAgICAgSW5kZXggPCBCTEtJ
Rl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QgJiYNCj4gICAgICAgICAgICAgICAgICAgICAgRW50
cnkgIT0gJlJlcXVlc3QtPlNlZ21lbnRzOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgKytJ
bmRleCwgRW50cnkgPSBFbnRyeS0+RmxpbmspIHsNCj4gLSAgICAgICAgICAgICAgICBQWEVOVkJE
X1NFR01FTlQgU2VnbWVudCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LA0KPiBYRU5WQkRfU0VH
TUVOVCwgRW50cnkpOw0KPiArICAgICAgICAgICAgICAgIFBYRU5WQkRfU0VHTUVOVCBTZWdtZW50
ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksDQo+IFhFTlZCRF9TRUdNRU5ULCBMaXN0RW50cnkp
Ow0KPiAgICAgICAgICAgICAgICAgIHJlcS0+c2VnW0luZGV4XS5ncmVmICAgICAgICA9IEdyYW50
ZXJSZWZlcmVuY2UoR3JhbnRlciwgU2VnbWVudC0NCj4gPkdyYW50KTsNCj4gICAgICAgICAgICAg
ICAgICByZXEtPnNlZ1tJbmRleF0uZmlyc3Rfc2VjdCAgPSBTZWdtZW50LT5GaXJzdFNlY3RvcjsN
Cj4gICAgICAgICAgICAgICAgICByZXEtPnNlZ1tJbmRleF0ubGFzdF9zZWN0ICAgPSBTZWdtZW50
LT5MYXN0U2VjdG9yOw0KPiBAQCAtMzQyLDcgKzMxMCw3IEBAIF9fUmluZ0luc2VydCgNCj4gICAg
ICAgICAgcmVxLT5vcGVyYXRpb24gICAgICAgICAgICAgICAgICA9IFJlcXVlc3QtPk9wZXJhdGlv
bjsNCj4gICAgICAgICAgcmVxLT5ucl9zZWdtZW50cyAgICAgICAgICAgICAgICA9IDA7DQo+ICAg
ICAgICAgIHJlcS0+aGFuZGxlICAgICAgICAgICAgICAgICAgICAgPSAoVVNIT1JUKUZyb250ZW5k
R2V0RGV2aWNlSWQoUmluZy0NCj4gPkZyb250ZW5kKTsNCj4gLSAgICAgICAgcmVxLT5pZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IF9fUmluZ0dldFRhZyhSaW5nLCBSZXF1ZXN0KTsNCj4gKyAg
ICAgICAgcmVxLT5pZCAgICAgICAgICAgICAgICAgICAgICAgICA9IChVTE9ORzY0KShVTE9OR19Q
VFIpUmVxdWVzdDsNCj4gICAgICAgICAgcmVxLT5zZWN0b3JfbnVtYmVyICAgICAgICAgICAgICA9
IFJlcXVlc3QtPkZpcnN0U2VjdG9yOw0KPiAgICAgICAgICBicmVhazsNCj4gDQo+IEBAIC0zNTIs
NyArMzIwLDcgQEAgX19SaW5nSW5zZXJ0KA0KPiAgICAgICAgICByZXFfZGlzY2FyZC0+b3BlcmF0
aW9uICAgICAgICAgID0gQkxLSUZfT1BfRElTQ0FSRDsNCj4gICAgICAgICAgcmVxX2Rpc2NhcmQt
PmZsYWcgICAgICAgICAgICAgICA9IFJlcXVlc3QtPkZsYWdzOw0KPiAgICAgICAgICByZXFfZGlz
Y2FyZC0+aGFuZGxlICAgICAgICAgICAgID0gKFVTSE9SVClGcm9udGVuZEdldERldmljZUlkKFJp
bmctDQo+ID5Gcm9udGVuZCk7DQo+IC0gICAgICAgIHJlcV9kaXNjYXJkLT5pZCAgICAgICAgICAg
ICAgICAgPSBfX1JpbmdHZXRUYWcoUmluZywgUmVxdWVzdCk7DQo+ICsgICAgICAgIHJlcV9kaXNj
YXJkLT5pZCAgICAgICAgICAgICAgICAgPSAoVUxPTkc2NCkoVUxPTkdfUFRSKVJlcXVlc3Q7DQo+
ICAgICAgICAgIHJlcV9kaXNjYXJkLT5zZWN0b3JfbnVtYmVyICAgICAgPSBSZXF1ZXN0LT5GaXJz
dFNlY3RvcjsNCj4gICAgICAgICAgcmVxX2Rpc2NhcmQtPm5yX3NlY3RvcnMgICAgICAgICA9IFJl
cXVlc3QtPk5yU2VjdG9yczsNCj4gICAgICAgICAgfSBicmVhazsNCj4gQEAgLTQ4MSw3ICs0NDks
NiBAQCBSaW5nR2V0UmVxdWVzdCgNCj4gICAgICAgICAgZ290byBmYWlsMTsNCj4gDQo+ICAgICAg
UnRsWmVyb01lbW9yeShSZXF1ZXN0LCBzaXplb2YoWEVOVkJEX1JFUVVFU1QpKTsNCj4gLSAgICBS
ZXF1ZXN0LT5JZCA9IChVTE9ORylJbnRlcmxvY2tlZEluY3JlbWVudCgoUExPTkcpJlJpbmctPk5l
eHRUYWcpOw0KPiAgICAgIEluaXRpYWxpemVMaXN0SGVhZCgmUmVxdWVzdC0+U2VnbWVudHMpOw0K
PiAgICAgIEluaXRpYWxpemVMaXN0SGVhZCgmUmVxdWVzdC0+SW5kaXJlY3RzKTsNCj4gDQo+IEBA
IC00OTcsMjUgKzQ2NCwyNSBAQCBSaW5nUHV0UmVxdWVzdCgNCj4gICAgICBJTiAgUFhFTlZCRF9S
RVFVRVNUIFJlcXVlc3QNCj4gICAgICApDQo+ICB7DQo+IC0gICAgUExJU1RfRU5UUlkgICAgICAg
ICBFbnRyeTsNCj4gKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gDQo+ICAg
ICAgZm9yICg7Oykgew0KPiAgICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudDsNCj4gDQo+
IC0gICAgICAgIEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJlJlcXVlc3QtPlNlZ21lbnRzKTsNCj4g
LSAgICAgICAgaWYgKEVudHJ5ID09ICZSZXF1ZXN0LT5TZWdtZW50cykNCj4gKyAgICAgICAgTGlz
dEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJlJlcXVlc3QtPlNlZ21lbnRzKTsNCj4gKyAgICAgICAg
aWYgKExpc3RFbnRyeSA9PSAmUmVxdWVzdC0+U2VnbWVudHMpDQo+ICAgICAgICAgICAgICBicmVh
azsNCj4gLSAgICAgICAgU2VnbWVudCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRf
U0VHTUVOVCwgRW50cnkpOw0KPiArICAgICAgICBTZWdtZW50ID0gQ09OVEFJTklOR19SRUNPUkQo
TGlzdEVudHJ5LCBYRU5WQkRfU0VHTUVOVCwNCj4gTGlzdEVudHJ5KTsNCj4gICAgICAgICAgUmlu
Z1B1dFNlZ21lbnQoUmluZywgU2VnbWVudCk7DQo+ICAgICAgfQ0KPiANCj4gICAgICBmb3IgKDs7
KSB7DQo+ICAgICAgICAgIFBYRU5WQkRfSU5ESVJFQ1QgICAgSW5kaXJlY3Q7DQo+IA0KPiAtICAg
ICAgICBFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZSZXF1ZXN0LT5JbmRpcmVjdHMpOw0KPiAtICAg
ICAgICBpZiAoRW50cnkgPT0gJlJlcXVlc3QtPkluZGlyZWN0cykNCj4gKyAgICAgICAgTGlzdEVu
dHJ5ID0gUmVtb3ZlSGVhZExpc3QoJlJlcXVlc3QtPkluZGlyZWN0cyk7DQo+ICsgICAgICAgIGlm
IChMaXN0RW50cnkgPT0gJlJlcXVlc3QtPkluZGlyZWN0cykNCj4gICAgICAgICAgICAgIGJyZWFr
Ow0KPiAtICAgICAgICBJbmRpcmVjdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRf
SU5ESVJFQ1QsIEVudHJ5KTsNCj4gKyAgICAgICAgSW5kaXJlY3QgPSBDT05UQUlOSU5HX1JFQ09S
RChMaXN0RW50cnksIFhFTlZCRF9JTkRJUkVDVCwNCj4gTGlzdEVudHJ5KTsNCj4gICAgICAgICAg
UmluZ1B1dEluZGlyZWN0KFJpbmcsIEluZGlyZWN0KTsNCj4gICAgICB9DQo+IA0KPiBAQCAtNTI0
LDIxICs0OTEsMjQgQEAgUmluZ1B1dFJlcXVlc3QoDQo+ICB9DQo+IA0KPiAgc3RhdGljIEZPUkNF
SU5MSU5FIFBYRU5WQkRfUkVRVUVTVA0KPiAtUmluZ1JlcXVlc3RGcm9tVGFnKA0KPiArUmluZ0Zp
bmRSZXF1ZXN0KA0KPiAgICAgIElOICBQWEVOVkJEX1JJTkcgICAgUmluZywNCj4gLSAgICBJTiAg
VUxPTkcgICAgICAgICAgIFRhZw0KPiArICAgIElOICBVTE9ORzY0ICAgICAgICAgSWQNCj4gICAg
ICApDQo+ICB7DQo+ICAgICAgS0lSUUwgICAgICAgICAgICAgICBJcnFsOw0KPiAtICAgIFBMSVNU
X0VOVFJZICAgICAgICAgRW50cnk7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50
cnk7DQo+ICsgICAgUFhFTlZCRF9SRVFVRVNUICAgICBSZXF1ZXN0Ow0KPiAgICAgIFBYRU5WQkRf
UVVFVUUgICAgICAgUXVldWUgPSAmUmluZy0+U3VibWl0dGVkUmVxczsNCj4gDQo+ICAgICAgS2VB
Y3F1aXJlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCAmSXJxbCk7DQo+IA0KPiAtICAgIGZvciAoRW50
cnkgPSBRdWV1ZS0+TGlzdC5GbGluazsgRW50cnkgIT0gJlF1ZXVlLT5MaXN0OyBFbnRyeSA9IEVu
dHJ5LT5GbGluaykNCj4gew0KPiAtICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdCA9IENP
TlRBSU5JTkdfUkVDT1JEKEVudHJ5LA0KPiBYRU5WQkRfUkVRVUVTVCwgRW50cnkpOw0KPiAtICAg
ICAgICBpZiAoUmVxdWVzdC0+SWQgPT0gVGFnKSB7DQo+IC0gICAgICAgICAgICBSZW1vdmVFbnRy
eUxpc3QoJlJlcXVlc3QtPkVudHJ5KTsNCj4gKyAgICBmb3IgKExpc3RFbnRyeSA9IFF1ZXVlLT5M
aXN0LkZsaW5rOw0KPiArICAgICAgICAgTGlzdEVudHJ5ICE9ICZRdWV1ZS0+TGlzdDsNCj4gKyAg
ICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+RmxpbmspIHsNCj4gKyAgICAgICAgUmVxdWVz
dCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOVkJEX1JFUVVFU1QsDQo+IExpc3RF
bnRyeSk7DQo+ICsgICAgICAgIGlmICgoVUxPTkc2NCkoVUxPTkdfUFRSKVJlcXVlc3QgPT0gSWQp
IHsNCj4gKyAgICAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmUmVxdWVzdC0+TGlzdEVudHJ5KTsN
Cj4gICAgICAgICAgICAgIC0tUXVldWUtPkN1cnJlbnQ7DQo+ICAgICAgICAgICAgICBLZVJlbGVh
c2VTcGluTG9jaygmUXVldWUtPkxvY2ssIElycWwpOw0KPiAgICAgICAgICAgICAgcmV0dXJuIFJl
cXVlc3Q7DQo+IEBAIC01NDYsOSArNTE2LDkgQEAgUmluZ1JlcXVlc3RGcm9tVGFnKA0KPiAgICAg
IH0NCj4gDQo+ICAgICAgS2VSZWxlYXNlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsNCj4g
LSAgICBXYXJuaW5nKCJUYXJnZXRbJWRdIDogVGFnICV4IG5vdCBmb3VuZCBpbiBzdWJtaXR0ZWQg
bGlzdCAoJXUgaXRlbXMpXG4iLA0KPiArICAgIFdhcm5pbmcoIlRhcmdldFslZF0gOiBUYWcgJWxs
eCBub3QgZm91bmQgaW4gc3VibWl0dGVkIGxpc3QgKCV1IGl0ZW1zKVxuIiwNCj4gICAgICAgICAg
ICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRlbmQpLA0KPiAtICAgICAgICAgICAg
VGFnLA0KPiArICAgICAgICAgICAgSWQsDQo+ICAgICAgICAgICAgICBRdWV1ZUNvdW50KFF1ZXVl
KSk7DQo+ICAgICAgcmV0dXJuIE5VTEw7DQo+ICB9DQo+IEBAIC02MzYsMTUgKzYwNiwxNSBAQCBS
aW5nUmVxdWVzdENvcHlPdXRwdXQoDQo+ICAgICAgSU4gIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0
DQo+ICAgICAgKQ0KPiAgew0KPiAtICAgIFBMSVNUX0VOVFJZICAgICAgICAgRW50cnk7DQo+ICsg
ICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7DQo+IA0KPiAgICAgIGlmIChSZXF1ZXN0
LT5PcGVyYXRpb24gIT0gQkxLSUZfT1BfUkVBRCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiANCj4g
LSAgICBmb3IgKEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMuRmxpbms7DQo+IC0gICAgICAgICAg
ICBFbnRyeSAhPSAmUmVxdWVzdC0+U2VnbWVudHM7DQo+IC0gICAgICAgICAgICBFbnRyeSA9IEVu
dHJ5LT5GbGluaykgew0KPiAtICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudCA9IENPTlRB
SU5JTkdfUkVDT1JEKEVudHJ5LA0KPiBYRU5WQkRfU0VHTUVOVCwgRW50cnkpOw0KPiArICAgIGZv
ciAoTGlzdEVudHJ5ID0gUmVxdWVzdC0+U2VnbWVudHMuRmxpbms7DQo+ICsgICAgICAgICBMaXN0
RW50cnkgIT0gJlJlcXVlc3QtPlNlZ21lbnRzOw0KPiArICAgICAgICAgTGlzdEVudHJ5ID0gTGlz
dEVudHJ5LT5GbGluaykgew0KPiArICAgICAgICBQWEVOVkJEX1NFR01FTlQgU2VnbWVudCA9IENP
TlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwNCj4gWEVOVkJEX1NFR01FTlQsIExpc3RFbnRyeSk7
DQo+ICAgICAgICAgIFBYRU5WQkRfQk9VTkNFICBCb3VuY2UgPSBTZWdtZW50LT5Cb3VuY2U7DQo+
IA0KPiAgICAgICAgICBpZiAoQm91bmNlKSB7DQo+IEBAIC03NzksMTAgKzc0OSwxMSBAQCBSaW5n
UHJlcGFyZUJsa2lmUmVhZFdyaXRlKA0KPiAgICAgIE9VVCBQVUxPTkcgICAgICAgICAgU2VjdG9y
c0RvbmUNCj4gICAgICApDQo+ICB7DQo+ICsgICAgUFNDU0lfUkVRVUVTVF9CTE9DSyBTcmIgPSBT
cmJFeHQtPlNyYjsNCj4gICAgICBVQ0hBUiAgICAgICAgICAgICAgIE9wZXJhdGlvbjsNCj4gICAg
ICBCT09MRUFOICAgICAgICAgICAgIFJlYWRPbmx5Ow0KPiAgICAgIFVMT05HICAgICAgICAgICAg
ICAgSW5kZXg7DQo+IC0gICAgX19SaW5nT3BlcmF0aW9uKENkYl9PcGVyYXRpb25FeChSZXF1ZXN0
LT5TcmIpLCAmT3BlcmF0aW9uLA0KPiAmUmVhZE9ubHkpOw0KPiArICAgIF9fUmluZ09wZXJhdGlv
bihDZGJfT3BlcmF0aW9uRXgoU3JiKSwgJk9wZXJhdGlvbiwgJlJlYWRPbmx5KTsNCj4gDQo+ICAg
ICAgUmVxdWVzdC0+T3BlcmF0aW9uICA9IE9wZXJhdGlvbjsNCj4gICAgICBSZXF1ZXN0LT5OclNl
Z21lbnRzID0gMDsNCj4gQEAgLTc5OSw3ICs3NzAsNyBAQCBSaW5nUHJlcGFyZUJsa2lmUmVhZFdy
aXRlKA0KPiAgICAgICAgICBpZiAoU2VnbWVudCA9PSBOVUxMKQ0KPiAgICAgICAgICAgICAgZ290
byBmYWlsMTsNCj4gDQo+IC0gICAgICAgIEluc2VydFRhaWxMaXN0KCZSZXF1ZXN0LT5TZWdtZW50
cywgJlNlZ21lbnQtPkVudHJ5KTsNCj4gKyAgICAgICAgSW5zZXJ0VGFpbExpc3QoJlJlcXVlc3Qt
PlNlZ21lbnRzLCAmU2VnbWVudC0+TGlzdEVudHJ5KTsNCj4gICAgICAgICAgKytSZXF1ZXN0LT5O
clNlZ21lbnRzOw0KPiANCj4gICAgICAgICAgaWYgKCFSaW5nUHJlcGFyZVNlZ21lbnQoUmluZywN
Cj4gQEAgLTg0MSw3ICs4MTIsNyBAQCBSaW5nUHJlcGFyZUJsa2lmSW5kaXJlY3QoDQo+ICAgICAg
ICAgIEluZGlyZWN0ID0gUmluZ0dldEluZGlyZWN0KFJpbmcpOw0KPiAgICAgICAgICBpZiAoSW5k
aXJlY3QgPT0gTlVMTCkNCj4gICAgICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IC0gICAgICAgIElu
c2VydFRhaWxMaXN0KCZSZXF1ZXN0LT5JbmRpcmVjdHMsICZJbmRpcmVjdC0+RW50cnkpOw0KPiAr
ICAgICAgICBJbnNlcnRUYWlsTGlzdCgmUmVxdWVzdC0+SW5kaXJlY3RzLCAmSW5kaXJlY3QtPkxp
c3RFbnRyeSk7DQo+IA0KPiAgICAgICAgICBOclNlZ21lbnRzICs9IFhFTlZCRF9NQVhfU0VHTUVO
VFNfUEVSX1BBR0U7DQo+ICAgICAgfQ0KPiBAQCAtODc5LDE2ICs4NTAsMTYgQEAgUmluZ1F1ZXVl
UmVxdWVzdExpc3QoDQo+ICAgICAgVUxPTkcgICAgICAgICAgICAgICBDb3VudCA9IDA7DQo+ICAg
ICAgZm9yICg7Oykgew0KPiAgICAgICAgICBQWEVOVkJEX1JFUVVFU1QgUmVxdWVzdDsNCj4gLSAg
ICAgICAgUExJU1RfRU5UUlkgICAgIEVudHJ5Ow0KPiArICAgICAgICBQTElTVF9FTlRSWSAgICAg
TGlzdEVudHJ5Ow0KPiANCj4gLSAgICAgICAgRW50cnkgPSBSZW1vdmVIZWFkTGlzdChMaXN0KTsN
Cj4gLSAgICAgICAgaWYgKEVudHJ5ID09IExpc3QpDQo+ICsgICAgICAgIExpc3RFbnRyeSA9IFJl
bW92ZUhlYWRMaXN0KExpc3QpOw0KPiArICAgICAgICBpZiAoTGlzdEVudHJ5ID09IExpc3QpDQo+
ICAgICAgICAgICAgICBicmVhazsNCj4gDQo+ICAgICAgICAgICsrQ291bnQ7DQo+IC0gICAgICAg
IFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVFU1QsIEVudHJ5
KTsNCj4gKyAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVO
VkJEX1JFUVVFU1QsDQo+IExpc3RFbnRyeSk7DQo+ICAgICAgICAgIF9fUmluZ0luY0Jsa2lmT3BD
b3VudChSaW5nLCBSZXF1ZXN0KTsNCj4gLSAgICAgICAgUXVldWVBcHBlbmQoJlJpbmctPlByZXBh
cmVkUmVxcywgJlJlcXVlc3QtPkVudHJ5KTsNCj4gKyAgICAgICAgUXVldWVBcHBlbmQoJlJpbmct
PlByZXBhcmVkUmVxcywgJlJlcXVlc3QtPkxpc3RFbnRyeSk7DQo+ICAgICAgfQ0KPiAgICAgIHJl
dHVybiBDb3VudDsNCj4gIH0NCj4gQEAgLTkwMSwxMyArODcyLDEzIEBAIFJpbmdDYW5jZWxSZXF1
ZXN0TGlzdCgNCj4gIHsNCj4gICAgICBmb3IgKDs7KSB7DQo+ICAgICAgICAgIFBYRU5WQkRfUkVR
VUVTVCBSZXF1ZXN0Ow0KPiAtICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnk7DQo+ICsgICAg
ICAgIFBMSVNUX0VOVFJZICAgICBMaXN0RW50cnk7DQo+IA0KPiAtICAgICAgICBFbnRyeSA9IFJl
bW92ZUhlYWRMaXN0KExpc3QpOw0KPiAtICAgICAgICBpZiAoRW50cnkgPT0gTGlzdCkNCj4gKyAg
ICAgICAgTGlzdEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoTGlzdCk7DQo+ICsgICAgICAgIGlmIChM
aXN0RW50cnkgPT0gTGlzdCkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4gLSAgICAgICAg
UmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVTVCwgRW50cnkp
Ow0KPiArICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5W
QkRfUkVRVUVTVCwNCj4gTGlzdEVudHJ5KTsNCj4gICAgICAgICAgUmluZ1B1dFJlcXVlc3QoUmlu
ZywgUmVxdWVzdCk7DQo+ICAgICAgfQ0KPiAgfQ0KPiBAQCAtOTE4LDcgKzg4OSw3IEBAIFJpbmdQ
cmVwYXJlUmVhZFdyaXRlKA0KPiAgICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLIFNyYg0KPiAg
ICAgICkNCj4gIHsNCj4gLSAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBHZXRT
cmJFeHQoU3JiKTsNCj4gKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBTcmIt
PlNyYkV4dGVuc2lvbjsNCj4gICAgICBVTE9ORzY0ICAgICAgICAgICAgICAgICBTZWN0b3JTdGFy
dCA9IENkYl9Mb2dpY2FsQmxvY2soU3JiKTsNCj4gICAgICBVTE9ORyAgICAgICAgICAgICAgICAg
ICBTZWN0b3JzTGVmdCA9IENkYl9UcmFuc2ZlckJsb2NrKFNyYik7DQo+ICAgICAgTElTVF9FTlRS
WSAgICAgICAgICAgICAgTGlzdDsNCj4gQEAgLTkyNyw3ICs4OTgsNyBAQCBSaW5nUHJlcGFyZVJl
YWRXcml0ZSgNCj4gICAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfUEVORElORzsNCj4g
DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsNCj4gLSAgICBTcmJFeHQtPkNvdW50
ID0gMDsNCj4gKyAgICBTcmJFeHQtPlJlcXVlc3RDb3VudCA9IDA7DQo+IA0KPiAgICAgIHdoaWxl
IChTZWN0b3JzTGVmdCA+IDApIHsNCj4gICAgICAgICAgVUxPTkcgICAgICAgICAgIE1heFNlZ21l
bnRzOw0KPiBAQCAtOTM3LDEwICs5MDgsMTAgQEAgUmluZ1ByZXBhcmVSZWFkV3JpdGUoDQo+ICAg
ICAgICAgIFJlcXVlc3QgPSBSaW5nR2V0UmVxdWVzdChSaW5nKTsNCj4gICAgICAgICAgaWYgKFJl
cXVlc3QgPT0gTlVMTCkNCj4gICAgICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IC0gICAgICAgIElu
c2VydFRhaWxMaXN0KCZMaXN0LCAmUmVxdWVzdC0+RW50cnkpOw0KPiAtICAgICAgICBJbnRlcmxv
Y2tlZEluY3JlbWVudCgmU3JiRXh0LT5Db3VudCk7DQo+ICsgICAgICAgIEluc2VydFRhaWxMaXN0
KCZMaXN0LCAmUmVxdWVzdC0+TGlzdEVudHJ5KTsNCj4gKyAgICAgICAgSW50ZXJsb2NrZWRJbmNy
ZW1lbnQoJlNyYkV4dC0+UmVxdWVzdENvdW50KTsNCj4gDQo+IC0gICAgICAgIFJlcXVlc3QtPlNy
YiAgICA9IFNyYjsNCj4gKyAgICAgICAgUmVxdWVzdC0+U3JiRXh0ID0gU3JiRXh0Ow0KPiAgICAg
ICAgICBNYXhTZWdtZW50cyA9IFJpbmdVc2VJbmRpcmVjdChSaW5nLCBTZWN0b3JzTGVmdCk7DQo+
IA0KPiAgICAgICAgICBpZiAoIVJpbmdQcmVwYXJlQmxraWZSZWFkV3JpdGUoUmluZywNCj4gQEAg
LTk2MiwxMCArOTMzLDEwIEBAIFJpbmdQcmVwYXJlUmVhZFdyaXRlKA0KPiAgICAgIH0NCj4gDQo+
ICAgICAgRGVidWdDb3VudCA9IFJpbmdRdWV1ZVJlcXVlc3RMaXN0KFJpbmcsICZMaXN0KTsNCj4g
LSAgICBpZiAoRGVidWdDb3VudCAhPSAoVUxPTkcpU3JiRXh0LT5Db3VudCkgew0KPiArICAgIGlm
IChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJFeHQtPlJlcXVlc3RDb3VudCkgew0KPiAgICAgICAg
ICBUcmFjZSgiWyV1XSAlZCAhPSAldVxuIiwNCj4gICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRU
YXJnZXRJZChSaW5nLT5Gcm9udGVuZCksDQo+IC0gICAgICAgICAgICAgIFNyYkV4dC0+Q291bnQs
DQo+ICsgICAgICAgICAgICAgIFNyYkV4dC0+UmVxdWVzdENvdW50LA0KPiAgICAgICAgICAgICAg
ICBEZWJ1Z0NvdW50KTsNCj4gICAgICB9DQo+ICAgICAgcmV0dXJuIFRSVUU7DQo+IEBAIC05NzQs
NyArOTQ1LDcgQEAgZmFpbDM6DQo+ICBmYWlsMjoNCj4gIGZhaWwxOg0KPiAgICAgIFJpbmdDYW5j
ZWxSZXF1ZXN0TGlzdChSaW5nLCAmTGlzdCk7DQo+IC0gICAgU3JiRXh0LT5Db3VudCA9IDA7DQo+
ICsgICAgU3JiRXh0LT5SZXF1ZXN0Q291bnQgPSAwOw0KPiAgICAgIFNyYi0+U3JiU3RhdHVzID0g
U1JCX1NUQVRVU19FUlJPUjsNCj4gICAgICByZXR1cm4gRkFMU0U7DQo+ICB9DQo+IEBAIC05ODUs
NyArOTU2LDcgQEAgUmluZ1ByZXBhcmVTeW5jQ2FjaGUoDQo+ICAgICAgSU4gIFBTQ1NJX1JFUVVF
U1RfQkxPQ0sgU3JiDQo+ICAgICAgKQ0KPiAgew0KPiAtICAgIFBYRU5WQkRfU1JCRVhUICAgICAg
ICAgIFNyYkV4dCA9IEdldFNyYkV4dChTcmIpOw0KPiArICAgIFBYRU5WQkRfU1JCRVhUICAgICAg
ICAgIFNyYkV4dCA9IFNyYi0+U3JiRXh0ZW5zaW9uOw0KPiAgICAgIFBYRU5WQkRfUkVRVUVTVCAg
ICAgICAgIFJlcXVlc3Q7DQo+ICAgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgTGlzdDsNCj4g
ICAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBPcGVyYXRpb247DQo+IEBAIC05OTksMzAgKzk3
MCwzMCBAQCBSaW5nUHJlcGFyZVN5bmNDYWNoZSgNCj4gICAgICAgICAgT3BlcmF0aW9uID0gQkxL
SUZfT1BfV1JJVEVfQkFSUklFUjsNCj4gDQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0
KTsNCj4gLSAgICBTcmJFeHQtPkNvdW50ID0gMDsNCj4gKyAgICBTcmJFeHQtPlJlcXVlc3RDb3Vu
dCA9IDA7DQo+IA0KPiAgICAgIFJlcXVlc3QgPSBSaW5nR2V0UmVxdWVzdChSaW5nKTsNCj4gICAg
ICBpZiAoUmVxdWVzdCA9PSBOVUxMKQ0KPiAgICAgICAgICBnb3RvIGZhaWwxOw0KPiAtICAgIElu
c2VydFRhaWxMaXN0KCZMaXN0LCAmUmVxdWVzdC0+RW50cnkpOw0KPiAtICAgIEludGVybG9ja2Vk
SW5jcmVtZW50KCZTcmJFeHQtPkNvdW50KTsNCj4gKyAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwg
JlJlcXVlc3QtPkxpc3RFbnRyeSk7DQo+ICsgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4
dC0+UmVxdWVzdENvdW50KTsNCj4gDQo+IC0gICAgUmVxdWVzdC0+U3JiICAgICAgICA9IFNyYjsN
Cj4gKyAgICBSZXF1ZXN0LT5TcmJFeHQgICAgID0gU3JiRXh0Ow0KPiAgICAgIFJlcXVlc3QtPk9w
ZXJhdGlvbiAgPSBPcGVyYXRpb247DQo+ICAgICAgUmVxdWVzdC0+Rmlyc3RTZWN0b3IgPSBDZGJf
TG9naWNhbEJsb2NrKFNyYik7DQo+IA0KPiAgICAgIERlYnVnQ291bnQgPSBSaW5nUXVldWVSZXF1
ZXN0TGlzdChSaW5nLCAmTGlzdCk7DQo+IC0gICAgaWYgKERlYnVnQ291bnQgIT0gKFVMT05HKVNy
YkV4dC0+Q291bnQpIHsNCj4gKyAgICBpZiAoRGVidWdDb3VudCAhPSAoVUxPTkcpU3JiRXh0LT5S
ZXF1ZXN0Q291bnQpIHsNCj4gICAgICAgICAgVHJhY2UoIlsldV0gJWQgIT0gJXVcbiIsDQo+ICAg
ICAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRlbmQpLA0KPiAtICAg
ICAgICAgICAgICBTcmJFeHQtPkNvdW50LA0KPiArICAgICAgICAgICAgICBTcmJFeHQtPlJlcXVl
c3RDb3VudCwNCj4gICAgICAgICAgICAgICAgRGVidWdDb3VudCk7DQo+ICAgICAgfQ0KPiAgICAg
IHJldHVybiBUUlVFOw0KPiANCj4gIGZhaWwxOg0KPiAgICAgIFJpbmdDYW5jZWxSZXF1ZXN0TGlz
dChSaW5nLCAmTGlzdCk7DQo+IC0gICAgU3JiRXh0LT5Db3VudCA9IDA7DQo+ICsgICAgU3JiRXh0
LT5SZXF1ZXN0Q291bnQgPSAwOw0KPiAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19F
UlJPUjsNCj4gICAgICByZXR1cm4gRkFMU0U7DQo+ICB9DQo+IEBAIC0xMDMzLDcgKzEwMDQsNyBA
QCBSaW5nUHJlcGFyZVVubWFwKA0KPiAgICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLIFNyYg0K
PiAgICAgICkNCj4gIHsNCj4gLSAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBH
ZXRTcmJFeHQoU3JiKTsNCj4gKyAgICBQWEVOVkJEX1NSQkVYVCAgICAgICAgICBTcmJFeHQgPSBT
cmItPlNyYkV4dGVuc2lvbjsNCj4gICAgICBQVU5NQVBfTElTVF9IRUFERVIgICAgICBVbm1hcCA9
IFNyYi0+RGF0YUJ1ZmZlcjsNCj4gIAlVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudCA9IF9i
eXRlc3dhcF91c2hvcnQoKihQVVNIT1JUKVVubWFwLQ0KPiA+QmxvY2tEZXNjckRhdGFMZW5ndGgp
IC8gc2l6ZW9mKFVOTUFQX0JMT0NLX0RFU0NSSVBUT1IpOw0KPiAgICAgIFVMT05HICAgICAgICAg
ICAgICAgICAgIEluZGV4Ow0KPiBAQCAtMTA0Myw3ICsxMDE0LDcgQEAgUmluZ1ByZXBhcmVVbm1h
cCgNCj4gICAgICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfUEVORElORzsNCj4gDQo+ICAg
ICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsNCj4gLSAgICBTcmJFeHQtPkNvdW50ID0gMDsN
Cj4gKyAgICBTcmJFeHQtPlJlcXVlc3RDb3VudCA9IDA7DQo+IA0KPiAgICAgIGZvciAoSW5kZXgg
PSAwOyBJbmRleCA8IENvdW50OyArK0luZGV4KSB7DQo+ICAgICAgICAgIFBVTk1BUF9CTE9DS19E
RVNDUklQVE9SIERlc2NyID0gJlVubWFwLT5EZXNjcmlwdG9yc1tJbmRleF07DQo+IEBAIC0xMDUy
LDEwICsxMDIzLDEwIEBAIFJpbmdQcmVwYXJlVW5tYXAoDQo+ICAgICAgICAgIFJlcXVlc3QgPSBS
aW5nR2V0UmVxdWVzdChSaW5nKTsNCj4gICAgICAgICAgaWYgKFJlcXVlc3QgPT0gTlVMTCkNCj4g
ICAgICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IC0gICAgICAgIEluc2VydFRhaWxMaXN0KCZMaXN0
LCAmUmVxdWVzdC0+RW50cnkpOw0KPiAtICAgICAgICBJbnRlcmxvY2tlZEluY3JlbWVudCgmU3Ji
RXh0LT5Db3VudCk7DQo+ICsgICAgICAgIEluc2VydFRhaWxMaXN0KCZMaXN0LCAmUmVxdWVzdC0+
TGlzdEVudHJ5KTsNCj4gKyAgICAgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJlNyYkV4dC0+UmVx
dWVzdENvdW50KTsNCj4gDQo+IC0gICAgICAgIFJlcXVlc3QtPlNyYiAgICAgICAgICAgID0gU3Ji
Ow0KPiArICAgICAgICBSZXF1ZXN0LT5TcmJFeHQgICAgICAgICA9IFNyYkV4dDsNCj4gICAgICAg
ICAgUmVxdWVzdC0+T3BlcmF0aW9uICAgICAgPSBCTEtJRl9PUF9ESVNDQVJEOw0KPiAgICAgICAg
ICBSZXF1ZXN0LT5GaXJzdFNlY3RvciAgICA9IF9ieXRlc3dhcF91aW50NjQoKihQVUxPTkc2NClE
ZXNjci0NCj4gPlN0YXJ0aW5nTGJhKTsNCj4gICAgICAgICAgUmVxdWVzdC0+TnJTZWN0b3JzICAg
ICAgPSBfYnl0ZXN3YXBfdWxvbmcoKihQVUxPTkcpRGVzY3ItDQo+ID5MYmFDb3VudCk7DQo+IEBA
IC0xMDYzLDE3ICsxMDM0LDE3IEBAIFJpbmdQcmVwYXJlVW5tYXAoDQo+ICAgICAgfQ0KPiANCj4g
ICAgICBEZWJ1Z0NvdW50ID0gUmluZ1F1ZXVlUmVxdWVzdExpc3QoUmluZywgJkxpc3QpOw0KPiAt
ICAgIGlmIChEZWJ1Z0NvdW50ICE9IChVTE9ORylTcmJFeHQtPkNvdW50KSB7DQo+ICsgICAgaWYg
KERlYnVnQ291bnQgIT0gKFVMT05HKVNyYkV4dC0+UmVxdWVzdENvdW50KSB7DQo+ICAgICAgICAg
IFRyYWNlKCJbJXVdICVkICE9ICV1XG4iLA0KPiAgICAgICAgICAgICAgICBGcm9udGVuZEdldFRh
cmdldElkKFJpbmctPkZyb250ZW5kKSwNCj4gLSAgICAgICAgICAgICAgU3JiRXh0LT5Db3VudCwN
Cj4gKyAgICAgICAgICAgICAgU3JiRXh0LT5SZXF1ZXN0Q291bnQsDQo+ICAgICAgICAgICAgICAg
IERlYnVnQ291bnQpOw0KPiAgICAgIH0NCj4gICAgICByZXR1cm4gVFJVRTsNCj4gDQo+ICBmYWls
MToNCj4gICAgICBSaW5nQ2FuY2VsUmVxdWVzdExpc3QoUmluZywgJkxpc3QpOw0KPiAtICAgIFNy
YkV4dC0+Q291bnQgPSAwOw0KPiArICAgIFNyYkV4dC0+UmVxdWVzdENvdW50ID0gMDsNCj4gICAg
ICBTcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfRVJST1I7DQo+ICAgICAgcmV0dXJuIEZBTFNF
Ow0KPiAgfQ0KPiBAQCAtMTA4NCwxMyArMTA1NSwxMyBAQCBSaW5nUHJlcGFyZUZyZXNoKA0KPiAg
ICAgICkNCj4gIHsNCj4gICAgICBQWEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dDsNCj4gLSAgICBQ
TElTVF9FTlRSWSAgICAgICAgIEVudHJ5Ow0KPiArICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlz
dEVudHJ5Ow0KPiANCj4gLSAgICBFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5GcmVzaFNyYnMpOw0K
PiAtICAgIGlmIChFbnRyeSA9PSBOVUxMKQ0KPiArICAgIExpc3RFbnRyeSA9IFF1ZXVlUG9wKCZS
aW5nLT5GcmVzaFNyYnMpOw0KPiArICAgIGlmIChMaXN0RW50cnkgPT0gTlVMTCkNCj4gICAgICAg
ICAgcmV0dXJuIEZBTFNFOyAgIC8vIGZyZXNoIHF1ZXVlIGlzIGVtcHR5DQo+IA0KPiAtICAgIFNy
YkV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfU1JCRVhULCBFbnRyeSk7DQo+
ICsgICAgU3JiRXh0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRfU1JCRVhU
LCBMaXN0RW50cnkpOw0KPiANCj4gICAgICBzd2l0Y2ggKENkYl9PcGVyYXRpb25FeChTcmJFeHQt
PlNyYikpIHsNCj4gICAgICBjYXNlIFNDU0lPUF9SRUFEOg0KPiBAQCAtMTExMCw3ICsxMDgxLDcg
QEAgUmluZ1ByZXBhcmVGcmVzaCgNCj4gICAgICAgICAgQVNTRVJUKEZBTFNFKTsNCj4gICAgICAg
ICAgYnJlYWs7DQo+ICAgICAgfQ0KPiAtICAgIFF1ZXVlVW5Qb3AoJlJpbmctPkZyZXNoU3Jicywg
JlNyYkV4dC0+RW50cnkpOw0KPiArICAgIFF1ZXVlVW5Qb3AoJlJpbmctPkZyZXNoU3JicywgJlNy
YkV4dC0+TGlzdEVudHJ5KTsNCj4gDQo+ICAgICAgcmV0dXJuIEZBTFNFOyAgICAgICAvLyBwcmVw
YXJlIGZhaWxlZA0KPiAgfQ0KPiBAQCAtMTE2NiwyMiArMTEzNywyMiBAQCBSaW5nU3VibWl0UHJl
cGFyZWQoDQo+IA0KPiAgICAgIGZvciAoOzspIHsNCj4gICAgICAgICAgUFhFTlZCRF9SRVFVRVNU
IFJlcXVlc3Q7DQo+IC0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeTsNCj4gKyAgICAgICAg
UExJU1RfRU5UUlkgICAgIExpc3RFbnRyeTsNCj4gDQo+IC0gICAgICAgIEVudHJ5ID0gUXVldWVQ
b3AoJlJpbmctPlByZXBhcmVkUmVxcyk7DQo+IC0gICAgICAgIGlmIChFbnRyeSA9PSBOVUxMKQ0K
PiArICAgICAgICBMaXN0RW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+UHJlcGFyZWRSZXFzKTsNCj4g
KyAgICAgICAgaWYgKExpc3RFbnRyeSA9PSBOVUxMKQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+
IA0KPiAtICAgICAgICBSZXF1ZXN0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9S
RVFVRVNULCBFbnRyeSk7DQo+ICsgICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChM
aXN0RW50cnksIFhFTlZCRF9SRVFVRVNULA0KPiBMaXN0RW50cnkpOw0KPiANCj4gLSAgICAgICAg
UXVldWVBcHBlbmQoJlJpbmctPlN1Ym1pdHRlZFJlcXMsICZSZXF1ZXN0LT5FbnRyeSk7DQo+ICsg
ICAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5TdWJtaXR0ZWRSZXFzLCAmUmVxdWVzdC0+TGlzdEVu
dHJ5KTsNCj4gICAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7DQo+IA0KPiAgICAgICAgICBpZiAo
UmluZ1N1Ym1pdChSaW5nLCBSZXF1ZXN0KSkNCj4gICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAN
Cj4gLSAgICAgICAgUXVldWVSZW1vdmUoJlJpbmctPlN1Ym1pdHRlZFJlcXMsICZSZXF1ZXN0LT5F
bnRyeSk7DQo+IC0gICAgICAgIFF1ZXVlVW5Qb3AoJlJpbmctPlByZXBhcmVkUmVxcywgJlJlcXVl
c3QtPkVudHJ5KTsNCj4gKyAgICAgICAgUXVldWVSZW1vdmUoJlJpbmctPlN1Ym1pdHRlZFJlcXMs
ICZSZXF1ZXN0LT5MaXN0RW50cnkpOw0KPiArICAgICAgICBRdWV1ZVVuUG9wKCZSaW5nLT5QcmVw
YXJlZFJlcXMsICZSZXF1ZXN0LT5MaXN0RW50cnkpOw0KPiAgICAgICAgICByZXR1cm4gRkFMU0U7
ICAgLy8gcmluZyBmdWxsDQo+ICAgICAgfQ0KPiANCj4gQEAgLTEyMDcsMTIgKzExNzgsMTcgQEAg
UmluZ0NvbXBsZXRlU2h1dGRvd24oDQo+ICAgICAgVGFyZ2V0ID0gRnJvbnRlbmRHZXRUYXJnZXQo
UmluZy0+RnJvbnRlbmQpOw0KPiAgICAgIEFkYXB0ZXIgPSBUYXJnZXRHZXRBZGFwdGVyKFRhcmdl
dCk7DQo+ICAgICAgZm9yICg7Oykgew0KPiAtICAgICAgICBQWEVOVkJEX1NSQkVYVCAgU3JiRXh0
Ow0KPiAtICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+U2h1
dGRvd25TcmJzKTsNCj4gLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpDQo+ICsgICAgICAgIFBY
RU5WQkRfU1JCRVhUICAgICAgU3JiRXh0Ow0KPiArICAgICAgICBQU0NTSV9SRVFVRVNUX0JMT0NL
IFNyYjsNCj4gKyAgICAgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7DQo+ICsNCj4g
KyAgICAgICAgTGlzdEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPlNodXRkb3duU3Jicyk7DQo+ICsg
ICAgICAgIGlmIChMaXN0RW50cnkgPT0gTlVMTCkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiAt
ICAgICAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1NSQkVYVCwg
RW50cnkpOw0KPiAtICAgICAgICBTcmJFeHQtPlNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19T
VUNDRVNTOw0KPiArICAgICAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnks
IFhFTlZCRF9TUkJFWFQsIExpc3RFbnRyeSk7DQo+ICsgICAgICAgIFNyYiA9IFNyYkV4dC0+U3Ji
Ow0KPiArDQo+ICsgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19TVUNDRVNTOw0K
PiAgICAgICAgICBBZGFwdGVyQ29tcGxldGVTcmIoQWRhcHRlciwgU3JiRXh0KTsNCj4gICAgICB9
DQo+ICB9DQo+IEBAIC0xMjY5LDcgKzEyNDUsNyBAQCBSaW5nU3VibWl0UmVxdWVzdHMoDQo+ICBz
dGF0aWMgVk9JRA0KPiAgUmluZ0NvbXBsZXRlUmVzcG9uc2UoDQo+ICAgICAgSU4gIFBYRU5WQkRf
UklORyAgICBSaW5nLA0KPiAtICAgIElOICBVTE9ORyAgICAgICAgICAgVGFnLA0KPiArICAgIElO
ICBVTE9ORzY0ICAgICAgICAgSWQsDQo+ICAgICAgSU4gIFNIT1JUICAgICAgICAgICBTdGF0dXMN
Cj4gICAgICApDQo+ICB7DQo+IEBAIC0xMjc3LDEzICsxMjUzLDEyIEBAIFJpbmdDb21wbGV0ZVJl
c3BvbnNlKA0KPiAgICAgIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgU3JiOw0KPiAgICAgIFBYRU5WQkRf
U1JCRVhUICAgICAgU3JiRXh0Ow0KPiANCj4gLSAgICBSZXF1ZXN0ID0gUmluZ1JlcXVlc3RGcm9t
VGFnKFJpbmcsIFRhZyk7DQo+ICsgICAgUmVxdWVzdCA9IFJpbmdGaW5kUmVxdWVzdChSaW5nLCBJ
ZCk7DQo+ICAgICAgaWYgKFJlcXVlc3QgPT0gTlVMTCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiAN
Cj4gLSAgICBTcmIgICAgID0gUmVxdWVzdC0+U3JiOw0KPiAtICAgIFNyYkV4dCAgPSBHZXRTcmJF
eHQoU3JiKTsNCj4gLSAgICBBU1NFUlQzUChTcmJFeHQsICE9LCBOVUxMKTsNCj4gKyAgICBTcmJF
eHQgID0gUmVxdWVzdC0+U3JiRXh0Ow0KPiArICAgIFNyYiAgICAgPSBTcmJFeHQtPlNyYjsNCj4g
DQo+ICAgICAgc3dpdGNoIChTdGF0dXMpIHsNCj4gICAgICBjYXNlIEJMS0lGX1JTUF9PS0FZOg0K
PiBAQCAtMTI5OSwxMCArMTI3NCwxMCBAQCBSaW5nQ29tcGxldGVSZXNwb25zZSgNCj4gDQo+ICAg
ICAgY2FzZSBCTEtJRl9SU1BfRVJST1I6DQo+ICAgICAgZGVmYXVsdDoNCj4gLSAgICAgICAgV2Fy
bmluZygiVGFyZ2V0WyVkXSA6ICVzIEJMS0lGX1JTUF9FUlJPUiAoVGFnICV4KVxuIiwNCj4gKyAg
ICAgICAgV2FybmluZygiVGFyZ2V0WyVkXSA6ICVzIEJMS0lGX1JTUF9FUlJPUiAoVGFnICVsbHgp
XG4iLA0KPiAgICAgICAgICAgICAgICAgIEZyb250ZW5kR2V0VGFyZ2V0SWQoUmluZy0+RnJvbnRl
bmQpLA0KPiAgICAgICAgICAgICAgICAgIF9fQmxraWZPcGVyYXRpb25OYW1lKFJlcXVlc3QtPk9w
ZXJhdGlvbiksDQo+IC0gICAgICAgICAgICAgICAgVGFnKTsNCj4gKyAgICAgICAgICAgICAgICBJ
ZCk7DQo+ICAgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19FUlJPUjsNCj4gICAg
ICAgICAgYnJlYWs7DQo+ICAgICAgfQ0KPiBAQCAtMTMxMCw3ICsxMjg1LDcgQEAgUmluZ0NvbXBs
ZXRlUmVzcG9uc2UoDQo+ICAgICAgUmluZ1B1dFJlcXVlc3QoUmluZywgUmVxdWVzdCk7DQo+IA0K
PiAgICAgIC8vIGNvbXBsZXRlIHNyYg0KPiAtICAgIGlmIChJbnRlcmxvY2tlZERlY3JlbWVudCgm
U3JiRXh0LT5Db3VudCkgPT0gMCkgew0KPiArICAgIGlmIChJbnRlcmxvY2tlZERlY3JlbWVudCgm
U3JiRXh0LT5SZXF1ZXN0Q291bnQpID09IDApIHsNCj4gICAgICAgICAgUFhFTlZCRF9UQVJHRVQg
IFRhcmdldCA9IEZyb250ZW5kR2V0VGFyZ2V0KFJpbmctPkZyb250ZW5kKTsNCj4gICAgICAgICAg
UFhFTlZCRF9BREFQVEVSIEFkYXB0ZXIgPSBUYXJnZXRHZXRBZGFwdGVyKFRhcmdldCk7DQo+IA0K
PiBAQCAtMTM1OCwxOCArMTMzMywxNCBAQCBSaW5nUG9sbCgNCj4gICAgICAgICAgICAgIGJyZWFr
Ow0KPiANCj4gICAgICAgICAgd2hpbGUgKHJzcF9jb25zICE9IHJzcF9wcm9kICYmICFSZXRyeSkg
ew0KPiAtICAgICAgICAgICAgYmxraWZfcmVzcG9uc2VfdCogICBSZXNwb25zZTsNCj4gLSAgICAg
ICAgICAgIFVMT05HICAgICAgICAgICAgICAgVGFnOw0KPiArICAgICAgICAgICAgYmxraWZfcmVz
cG9uc2VfdCogICByc3A7DQo+IA0KPiAtICAgICAgICAgICAgUmVzcG9uc2UgPSBSSU5HX0dFVF9S
RVNQT05TRSgmUmluZy0+RnJvbnQsIHJzcF9jb25zKTsNCj4gKyAgICAgICAgICAgIHJzcCA9IFJJ
TkdfR0VUX1JFU1BPTlNFKCZSaW5nLT5Gcm9udCwgcnNwX2NvbnMpOw0KPiAgICAgICAgICAgICAg
Kytyc3BfY29uczsNCj4gKyAgICAgICAgICAgICsrUmluZy0+UmVjZWl2ZWQ7DQo+IA0KPiAtICAg
ICAgICAgICAgaWYgKF9fUmluZ1B1dFRhZyhSaW5nLCBSZXNwb25zZS0+aWQsICZUYWcpKSB7DQo+
IC0gICAgICAgICAgICAgICAgKytSaW5nLT5SZWNlaXZlZDsNCj4gLSAgICAgICAgICAgICAgICBS
aW5nQ29tcGxldGVSZXNwb25zZShSaW5nLCBUYWcsIFJlc3BvbnNlLT5zdGF0dXMpOw0KPiAtICAg
ICAgICAgICAgfQ0KPiAtDQo+IC0gICAgICAgICAgICBSdGxaZXJvTWVtb3J5KFJlc3BvbnNlLCBz
aXplb2YodW5pb24gYmxraWZfc3JpbmdfZW50cnkpKTsNCj4gKyAgICAgICAgICAgIFJpbmdDb21w
bGV0ZVJlc3BvbnNlKFJpbmcsIHJzcC0+aWQsIHJzcC0+c3RhdHVzKTsNCj4gKyAgICAgICAgICAg
IFJ0bFplcm9NZW1vcnkocnNwLCBzaXplb2YodW5pb24gYmxraWZfc3JpbmdfZW50cnkpKTsNCj4g
DQo+ICAgICAgICAgICAgICBpZiAocnNwX2NvbnMgLSBSaW5nLT5Gcm9udC5yc3BfY29ucyA+IFJJ
TkdfU0laRSgmUmluZy0+RnJvbnQpIC8gNCkNCj4gICAgICAgICAgICAgICAgICBSZXRyeSA9IFRS
VUU7DQo+IEBAIC0xOTYwLDMyICsxOTMxLDQwIEBAIFJpbmdEaXNhYmxlKA0KPiANCj4gICAgICAv
LyBBYm9ydCBGcmVzaCBTUkJzDQo+ICAgICAgZm9yICg7Oykgew0KPiAtICAgICAgICBQWEVOVkJE
X1NSQkVYVCAgU3JiRXh0Ow0KPiAtICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBRdWV1
ZVBvcCgmUmluZy0+RnJlc2hTcmJzKTsNCj4gLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpDQo+
ICsgICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0Ow0KPiArICAgICAgICBQU0NTSV9S
RVFVRVNUX0JMT0NLIFNyYjsNCj4gKyAgICAgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50
cnk7DQo+ICsNCj4gKyAgICAgICAgTGlzdEVudHJ5ID0gUXVldWVQb3AoJlJpbmctPkZyZXNoU3Ji
cyk7DQo+ICsgICAgICAgIGlmIChMaXN0RW50cnkgPT0gTlVMTCkNCj4gICAgICAgICAgICAgIGJy
ZWFrOw0KPiAtICAgICAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJE
X1NSQkVYVCwgRW50cnkpOw0KPiArICAgICAgICBTcmJFeHQgPSBDT05UQUlOSU5HX1JFQ09SRChM
aXN0RW50cnksIFhFTlZCRF9TUkJFWFQsIExpc3RFbnRyeSk7DQo+ICsgICAgICAgIFNyYiA9IFNy
YkV4dC0+U3JiOw0KPiANCj4gLSAgICAgICAgU3JiRXh0LT5TcmItPlNyYlN0YXR1cyA9IFNSQl9T
VEFUVVNfQUJPUlRFRDsNCj4gLSAgICAgICAgU3JiRXh0LT5TcmItPlNjc2lTdGF0dXMgPSAweDQw
OyAvLyBTQ1NJX0FCT1JURUQ7DQo+ICsgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRV
U19BQk9SVEVEOw0KPiArICAgICAgICBTcmItPlNjc2lTdGF0dXMgPSAweDQwOyAvLyBTQ1NJX0FC
T1JURUQ7DQo+ICAgICAgICAgIEFkYXB0ZXJDb21wbGV0ZVNyYihBZGFwdGVyLCBTcmJFeHQpOw0K
PiAgICAgIH0NCj4gDQo+ICAgICAgLy8gRmFpbCBQcmVwYXJlZFJlcXMNCj4gICAgICBmb3IgKDs7
KSB7DQo+IC0gICAgICAgIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQ7DQo+IC0gICAgICAgIFBYRU5W
QkRfUkVRVUVTVCBSZXF1ZXN0Ow0KPiAtICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBR
dWV1ZVBvcCgmUmluZy0+UHJlcGFyZWRSZXFzKTsNCj4gLSAgICAgICAgaWYgKEVudHJ5ID09IE5V
TEwpDQo+ICsgICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0Ow0KPiArICAgICAgICBQ
U0NTSV9SRVFVRVNUX0JMT0NLIFNyYjsNCj4gKyAgICAgICAgUFhFTlZCRF9SRVFVRVNUICAgICBS
ZXF1ZXN0Ow0KPiArICAgICAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gKw0K
PiArICAgICAgICBMaXN0RW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+UHJlcGFyZWRSZXFzKTsNCj4g
KyAgICAgICAgaWYgKExpc3RFbnRyeSA9PSBOVUxMKQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+
IC0gICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwgWEVOVkJEX1JFUVVF
U1QsIEVudHJ5KTsNCj4gLSAgICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFJlcXVlc3QtPlNyYik7
DQo+ICsgICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTlZC
RF9SRVFVRVNULA0KPiBMaXN0RW50cnkpOw0KPiArICAgICAgICBTcmJFeHQgPSBSZXF1ZXN0LT5T
cmJFeHQ7DQo+ICsgICAgICAgIFNyYiA9IFNyYkV4dC0+U3JiOw0KPiANCj4gLSAgICAgICAgU3Ji
RXh0LT5TcmItPlNyYlN0YXR1cyA9IFNSQl9TVEFUVVNfQUJPUlRFRDsNCj4gICAgICAgICAgUmlu
Z1B1dFJlcXVlc3QoUmluZywgUmVxdWVzdCk7DQo+IA0KPiAtICAgICAgICBpZiAoSW50ZXJsb2Nr
ZWREZWNyZW1lbnQoJlNyYkV4dC0+Q291bnQpID09IDApIHsNCj4gLSAgICAgICAgICAgIFNyYkV4
dC0+U3JiLT5TY3NpU3RhdHVzID0gMHg0MDsgLy8gU0NTSV9BQk9SVEVEDQo+ICsgICAgICAgIGlm
IChJbnRlcmxvY2tlZERlY3JlbWVudCgmU3JiRXh0LT5SZXF1ZXN0Q291bnQpID09IDApIHsNCj4g
KyAgICAgICAgICAgIFNyYi0+U3JiU3RhdHVzID0gU1JCX1NUQVRVU19BQk9SVEVEOw0KPiArICAg
ICAgICAgICAgU3JiLT5TY3NpU3RhdHVzID0gMHg0MDsgLy8gU0NTSV9BQk9SVEVEDQo+ICAgICAg
ICAgICAgICBBZGFwdGVyQ29tcGxldGVTcmIoQWRhcHRlciwgU3JiRXh0KTsNCj4gICAgICAgICAg
fQ0KPiAgICAgIH0NCj4gQEAgLTIwNzIsNyArMjA1MSw3IEBAIFJpbmdRdWV1ZVJlcXVlc3QoDQo+
ICAgICAgKQ0KPiAgew0KPiAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5GcmVzaFNyYnMsDQo+IC0g
ICAgICAgICAgICAgICAgJlNyYkV4dC0+RW50cnkpOw0KPiArICAgICAgICAgICAgICAgICZTcmJF
eHQtPkxpc3RFbnRyeSk7DQo+IA0KPiAgICAgIGlmICghUmluZy0+RW5hYmxlZCkNCj4gICAgICAg
ICAgcmV0dXJuOw0KPiBAQCAtMjA4OCw3ICsyMDY3LDcgQEAgUmluZ1F1ZXVlU2h1dGRvd24oDQo+
ICAgICAgKQ0KPiAgew0KPiAgICAgIFF1ZXVlQXBwZW5kKCZSaW5nLT5TaHV0ZG93blNyYnMsDQo+
IC0gICAgICAgICAgICAgICAgJlNyYkV4dC0+RW50cnkpOw0KPiArICAgICAgICAgICAgICAgICZT
cmJFeHQtPkxpc3RFbnRyeSk7DQo+IA0KPiAgICAgIGlmICghUmluZy0+RW5hYmxlZCkNCj4gICAg
ICAgICAgcmV0dXJuOw0KPiBAQCAtMjEwOCw0NyArMjA4Nyw1MyBAQCBSaW5nUmVRdWV1ZVJlcXVl
c3RzKA0KPiANCj4gICAgICAvLyBwb3AgYWxsIHN1Ym1pdHRlZCByZXF1ZXN0cywgY2xlYW51cCBh
bmQgYWRkIGFzc29jaWF0ZWQgU1JCIHRvIGEgbGlzdA0KPiAgICAgIGZvciAoOzspIHsNCj4gLSAg
ICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsNCj4gLSAgICAgICAgUFhFTlZCRF9SRVFVRVNU
IFJlcXVlc3Q7DQo+IC0gICAgICAgIFBMSVNUX0VOVFJZICAgICBFbnRyeSA9IFF1ZXVlUG9wKCZS
aW5nLT5TdWJtaXR0ZWRSZXFzKTsNCj4gLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpDQo+ICsg
ICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0Ow0KPiArICAgICAgICBQWEVOVkJEX1JF
UVVFU1QgICAgIFJlcXVlc3Q7DQo+ICsgICAgICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVu
dHJ5Ow0KPiArDQo+ICsgICAgICAgIExpc3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5TdWJtaXR0
ZWRSZXFzKTsNCj4gKyAgICAgICAgaWYgKExpc3RFbnRyeSA9PSBOVUxMKQ0KPiAgICAgICAgICAg
ICAgYnJlYWs7DQo+IC0gICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChFbnRyeSwg
WEVOVkJEX1JFUVVFU1QsIEVudHJ5KTsNCj4gLSAgICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFJl
cXVlc3QtPlNyYik7DQo+ICsgICAgICAgIFJlcXVlc3QgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0
RW50cnksIFhFTlZCRF9SRVFVRVNULA0KPiBMaXN0RW50cnkpOw0KPiArICAgICAgICBTcmJFeHQg
PSBSZXF1ZXN0LT5TcmJFeHQ7DQo+IA0KPiAgICAgICAgICBSaW5nUHV0UmVxdWVzdChSaW5nLCBS
ZXF1ZXN0KTsNCj4gDQo+IC0gICAgICAgIGlmIChJbnRlcmxvY2tlZERlY3JlbWVudCgmU3JiRXh0
LT5Db3VudCkgPT0gMCkgew0KPiAtICAgICAgICAgICAgSW5zZXJ0VGFpbExpc3QoJkxpc3QsICZT
cmJFeHQtPkVudHJ5KTsNCj4gKyAgICAgICAgaWYgKEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJF
eHQtPlJlcXVlc3RDb3VudCkgPT0gMCkgew0KPiArICAgICAgICAgICAgSW5zZXJ0VGFpbExpc3Qo
Jkxpc3QsICZTcmJFeHQtPkxpc3RFbnRyeSk7DQo+ICAgICAgICAgIH0NCj4gICAgICB9DQo+IA0K
PiAgICAgIC8vIHBvcCBhbGwgcHJlcGFyZWQgcmVxdWVzdHMsIGNsZWFudXAgYW5kIGFkZCBhc3Nv
Y2lhdGVkIFNSQiB0byBhIGxpc3QNCj4gICAgICBmb3IgKDs7KSB7DQo+IC0gICAgICAgIFBYRU5W
QkRfU1JCRVhUICBTcmJFeHQ7DQo+IC0gICAgICAgIFBYRU5WQkRfUkVRVUVTVCBSZXF1ZXN0Ow0K
PiAtICAgICAgICBQTElTVF9FTlRSWSAgICAgRW50cnkgPSBRdWV1ZVBvcCgmUmluZy0+UHJlcGFy
ZWRSZXFzKTsNCj4gLSAgICAgICAgaWYgKEVudHJ5ID09IE5VTEwpDQo+ICsgICAgICAgIFBYRU5W
QkRfU1JCRVhUICAgICAgU3JiRXh0Ow0KPiArICAgICAgICBQWEVOVkJEX1JFUVVFU1QgICAgIFJl
cXVlc3Q7DQo+ICsgICAgICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVudHJ5Ow0KPiArDQo+
ICsgICAgICAgIExpc3RFbnRyeSA9IFF1ZXVlUG9wKCZSaW5nLT5QcmVwYXJlZFJlcXMpOw0KPiAr
ICAgICAgICBpZiAoTGlzdEVudHJ5ID09IE5VTEwpDQo+ICAgICAgICAgICAgICBicmVhazsNCj4g
LSAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKEVudHJ5LCBYRU5WQkRfUkVRVUVT
VCwgRW50cnkpOw0KPiAtICAgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoUmVxdWVzdC0+U3JiKTsN
Cj4gKyAgICAgICAgUmVxdWVzdCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOVkJE
X1JFUVVFU1QsDQo+IExpc3RFbnRyeSk7DQo+ICsgICAgICAgIFNyYkV4dCA9IFJlcXVlc3QtPlNy
YkV4dDsNCj4gDQo+ICAgICAgICAgIFJpbmdQdXRSZXF1ZXN0KFJpbmcsIFJlcXVlc3QpOw0KPiAN
Cj4gLSAgICAgICAgaWYgKEludGVybG9ja2VkRGVjcmVtZW50KCZTcmJFeHQtPkNvdW50KSA9PSAw
KSB7DQo+IC0gICAgICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlNyYkV4dC0+RW50cnkp
Ow0KPiArICAgICAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQoJlNyYkV4dC0+UmVxdWVzdENv
dW50KSA9PSAwKSB7DQo+ICsgICAgICAgICAgICBJbnNlcnRUYWlsTGlzdCgmTGlzdCwgJlNyYkV4
dC0+TGlzdEVudHJ5KTsNCj4gICAgICAgICAgfQ0KPiAgICAgIH0NCj4gDQo+ICAgICAgLy8gZm9y
ZWFjaCBTUkIgaW4gbGlzdCwgcHV0IG9uIHN0YXJ0IG9mIEZyZXNoU3Jicw0KPiAgICAgIGZvciAo
OzspIHsNCj4gLSAgICAgICAgUFhFTlZCRF9TUkJFWFQgIFNyYkV4dDsNCj4gLSAgICAgICAgUExJ
U1RfRU5UUlkgICAgIEVudHJ5ID0gUmVtb3ZlVGFpbExpc3QoJkxpc3QpOw0KPiAtICAgICAgICBp
ZiAoRW50cnkgPT0gJkxpc3QpDQo+ICsgICAgICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0
Ow0KPiArICAgICAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gKw0KPiArICAg
ICAgICBMaXN0RW50cnkgPSBSZW1vdmVUYWlsTGlzdCgmTGlzdCk7DQo+ICsgICAgICAgIGlmIChM
aXN0RW50cnkgPT0gJkxpc3QpDQo+ICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgU3Ji
RXh0ID0gQ09OVEFJTklOR19SRUNPUkQoRW50cnksIFhFTlZCRF9TUkJFWFQsIEVudHJ5KTsNCj4g
KyAgICAgICAgU3JiRXh0ID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5WQkRfU1JC
RVhULCBMaXN0RW50cnkpOw0KPiANCj4gLSAgICAgICAgUXVldWVVblBvcCgmUmluZy0+RnJlc2hT
cmJzLCAmU3JiRXh0LT5FbnRyeSk7DQo+ICsgICAgICAgIFF1ZXVlVW5Qb3AoJlJpbmctPkZyZXNo
U3JicywgJlNyYkV4dC0+TGlzdEVudHJ5KTsNCj4gICAgICB9DQo+IA0KPiAgICAgIC8vIG5vdyB0
aGUgZmlyc3Qgc2V0IG9mIHJlcXVlc3RzIHBvcHBlZCBvZmYgc3VibWl0dGVkIGxpc3QgaXMgdGhl
IG5leHQgU1JCDQo+IGRpZmYgLS1naXQgYS9zcmMveGVudmJkL3NyYmV4dC5oIGIvc3JjL3hlbnZi
ZC9zcmJleHQuaA0KPiBpbmRleCA1NGVjMTE5Li5jODRjMjQxIDEwMDY0NA0KPiAtLS0gYS9zcmMv
eGVudmJkL3NyYmV4dC5oDQo+ICsrKyBiL3NyYy94ZW52YmQvc3JiZXh0LmgNCj4gQEAgLTMzLDkg
KzMzLDMyIEBADQo+ICAjZGVmaW5lIF9YRU5WQkRfU1JCRVhUX0gNCj4gDQo+ICAjaW5jbHVkZSA8
bnRkZGsuaD4NCj4gLSNpbmNsdWRlIDx4ZW52YmQtc3RvcnBvcnQuaD4NCj4gKyNpbmNsdWRlIDxz
dG9ycG9ydC5oPg0KPiAgI2luY2x1ZGUgPHhlbi5oPg0KPiAtI2luY2x1ZGUgImFzc2VydC5oIg0K
PiArDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX1NSQkVYVCB7DQo+ICsgICAgUFNDU0lfUkVR
VUVTVF9CTE9DSyAgICAgU3JiOw0KPiArICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RF
bnRyeTsNCj4gKyAgICBMT05HICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0Q291bnQ7DQo+ICsN
Cj4gKyAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBTR0xpc3Q7DQo+ICsgICAgVUxPTkcgICAg
ICAgICAgICAgICAgICAgU0dJbmRleDsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBT
R09mZnNldDsNCj4gK30gWEVOVkJEX1NSQkVYVCwgKlBYRU5WQkRfU1JCRVhUOw0KPiArDQo+ICt0
eXBlZGVmIHN0cnVjdCBfWEVOVkJEX1JFUVVFU1Qgew0KPiArICAgIFBYRU5WQkRfU1JCRVhUICAg
ICAgICAgIFNyYkV4dDsNCj4gKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0RW50cnk7
DQo+ICsNCj4gKyAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBPcGVyYXRpb247ICAvLw0KPiBC
TEtJRl9PUF97UkVBRC9XUklURS9CQVJSSUVSL0RJU0NBUkR9DQo+ICsgICAgVUNIQVIgICAgICAg
ICAgICAgICAgICAgRmxhZ3M7ICAgICAgLy8gQkxLSUZfT1BfRElTQ0FSRCBvbmx5DQo+ICsgICAg
VVNIT1JUICAgICAgICAgICAgICAgICAgTnJTZWdtZW50czsgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJ
VEV9IG9ubHksIDAtMTENCj4gKGRpcmVjdCkgb3IgMTEtNDA5NiAoaW5kaXJlY3QpDQo+ICsgICAg
TElTVF9FTlRSWSAgICAgICAgICAgICAgU2VnbWVudHM7ICAgLy8gQkxLSUZfT1Bfe1JFQUQvV1JJ
VEV9IG9ubHkNCj4gKw0KPiArICAgIFVMT05HNjQgICAgICAgICAgICAgICAgIEZpcnN0U2VjdG9y
Ow0KPiArICAgIFVMT05HNjQgICAgICAgICAgICAgICAgIE5yU2VjdG9yczsgIC8vIEJMS0lGX09Q
X0RJU0NBUkQgb25seQ0KPiArICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIEluZGlyZWN0czsg
IC8vIEJMS0lGX09QX3tSRUFEL1dSSVRFfSB3aXRoDQo+IE5yU2VnbWVudHMgPiAxMSBvbmx5DQo+
ICt9IFhFTlZCRF9SRVFVRVNULCAqUFhFTlZCRF9SRVFVRVNUOw0KPiANCj4gIHR5cGVkZWYgc3Ry
dWN0IF9YRU5WQkRfQk9VTkNFIHsNCj4gICAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBCb3Vu
Y2VQdHI7DQo+IEBAIC00NSw2ICs2OCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOVkJEX0JPVU5D
RSB7DQo+ICAgICAgUEZOX05VTUJFUiAgICAgICAgICAgICAgU291cmNlUGZuWzJdOw0KPiAgfSBY
RU5WQkRfQk9VTkNFLCAqUFhFTlZCRF9CT1VOQ0U7DQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hF
TlZCRF9TRUdNRU5UIHsNCj4gKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0RW50cnk7
DQo+ICsgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgR3JhbnQ7DQo+ICsgICAgVUNIQVIgICAg
ICAgICAgICAgICAgICAgRmlyc3RTZWN0b3I7DQo+ICsgICAgVUNIQVIgICAgICAgICAgICAgICAg
ICAgTGFzdFNlY3RvcjsNCj4gKyAgICBQWEVOVkJEX0JPVU5DRSAgICAgICAgICBCb3VuY2U7DQo+
ICt9IFhFTlZCRF9TRUdNRU5ULCAqUFhFTlZCRF9TRUdNRU5UOw0KPiArDQo+ICAjcHJhZ21hIHBh
Y2socHVzaCwgMSkNCj4gIHR5cGVkZWYgc3RydWN0IF9CTEtJRl9TRUdNRU5UIHsNCj4gICAgICBV
TE9ORyAgICAgICAgICAgICAgICAgICBHcmFudFJlZjsNCj4gQEAgLTU2LDc0ICs4NywxMSBAQCB0
eXBlZGVmIHN0cnVjdCBfQkxLSUZfU0VHTUVOVCB7DQo+IA0KPiAgI2RlZmluZSBYRU5WQkRfTUFY
X1NFR01FTlRTX1BFUl9QQUdFICAgIChQQUdFX1NJWkUgLw0KPiBzaXplb2YoQkxLSUZfU0VHTUVO
VCkpDQo+IA0KPiAtLy8gSW50ZXJuYWwgaW5kaXJlY3QgY29udGV4dA0KPiAgdHlwZWRlZiBzdHJ1
Y3QgX1hFTlZCRF9JTkRJUkVDVCB7DQo+IC0gICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgRW50
cnk7DQo+ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgTGlzdEVudHJ5Ow0KPiAgICAgIFBC
TEtJRl9TRUdNRU5UICAgICAgICAgIFBhZ2U7DQo+ICAgICAgUFZPSUQgICAgICAgICAgICAgICAg
ICAgR3JhbnQ7DQo+ICAgICAgUE1ETCAgICAgICAgICAgICAgICAgICAgTWRsOw0KPiAgfSBYRU5W
QkRfSU5ESVJFQ1QsICpQWEVOVkJEX0lORElSRUNUOw0KPiANCj4gLS8vIEludGVybmFsIHNlZ21l
bnQgY29udGV4dA0KPiAtdHlwZWRlZiBzdHJ1Y3QgX1hFTlZCRF9TRUdNRU5UIHsNCj4gLSAgICBM
SVNUX0VOVFJZICAgICAgICAgICAgICBFbnRyeTsNCj4gLSAgICBQVk9JRCAgICAgICAgICAgICAg
ICAgICBHcmFudDsNCj4gLSAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBGaXJzdFNlY3RvcjsN
Cj4gLSAgICBVQ0hBUiAgICAgICAgICAgICAgICAgICBMYXN0U2VjdG9yOw0KPiAtICAgIFVMT05H
ICAgICAgICAgICAgICAgICAgIExlbmd0aDsNCj4gLSAgICBQWEVOVkJEX0JPVU5DRSAgICAgICAg
ICBCb3VuY2U7DQo+IC19IFhFTlZCRF9TRUdNRU5ULCAqUFhFTlZCRF9TRUdNRU5UOw0KPiAtDQo+
IC0vLyBJbnRlcm5hbCByZXF1ZXN0IGNvbnRleHQNCj4gLXR5cGVkZWYgc3RydWN0IF9YRU5WQkRf
UkVRVUVTVCB7DQo+IC0gICAgUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgU3JiOw0KPiAtICAgIExJ
U1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5Ow0KPiAtICAgIFVMT05HICAgICAgICAgICAgICAg
ICAgIElkOw0KPiAtDQo+IC0gICAgVUNIQVIgICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uOyAg
Ly8NCj4gQkxLSUZfT1Bfe1JFQUQvV1JJVEUvQkFSUklFUi9ESVNDQVJEfQ0KPiAtICAgIFVDSEFS
ICAgICAgICAgICAgICAgICAgIEZsYWdzOyAgICAgIC8vIEJMS0lGX09QX0RJU0NBUkQgb25seQ0K
PiAtICAgIFVTSE9SVCAgICAgICAgICAgICAgICAgIE5yU2VnbWVudHM7IC8vIEJMS0lGX09QX3tS
RUFEL1dSSVRFfSBvbmx5LCAwLTExDQo+IChkaXJlY3QpIG9yIDExLTQwOTYgKGluZGlyZWN0KQ0K
PiAtICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIFNlZ21lbnRzOyAgIC8vIEJMS0lGX09QX3tS
RUFEL1dSSVRFfSBvbmx5DQo+IC0NCj4gLSAgICBVTE9ORzY0ICAgICAgICAgICAgICAgICBGaXJz
dFNlY3RvcjsNCj4gLSAgICBVTE9ORzY0ICAgICAgICAgICAgICAgICBOclNlY3RvcnM7ICAvLyBC
TEtJRl9PUF9ESVNDQVJEIG9ubHkNCj4gLSAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBJbmRp
cmVjdHM7ICAvLyBCTEtJRl9PUF97UkVBRC9XUklURX0gd2l0aA0KPiBOclNlZ21lbnRzID4gMTEg
b25seQ0KPiAtfSBYRU5WQkRfUkVRVUVTVCwgKlBYRU5WQkRfUkVRVUVTVDsNCj4gLQ0KPiAtLy8g
U1JCRXh0ZW5zaW9uIC0gY29udGV4dCBmb3IgU1JCcw0KPiAtdHlwZWRlZiBzdHJ1Y3QgX1hFTlZC
RF9TUkJFWFQgew0KPiAtICAgIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgICAgIFNyYjsNCj4gLSAgICBM
SVNUX0VOVFJZICAgICAgICAgICAgICBFbnRyeTsNCj4gLSAgICBMT05HICAgICAgICAgICAgICAg
ICAgICBDb3VudDsNCj4gLQ0KPiAtICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIFNHTGlzdDsN
Cj4gLSAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBTR0luZGV4Ow0KPiAtICAgIFVMT05HICAg
ICAgICAgICAgICAgICAgIFNHT2Zmc2V0Ow0KPiAtfSBYRU5WQkRfU1JCRVhULCAqUFhFTlZCRF9T
UkJFWFQ7DQo+IC0NCj4gLUZPUkNFSU5MSU5FIFBYRU5WQkRfU1JCRVhUDQo+IC1HZXRTcmJFeHQo
DQo+IC0gICAgX19pbiBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICBTcmINCj4gLSAgICApDQo+IC17
DQo+IC0gICAgaWYgKFNyYiAmJiBTcmItPkZ1bmN0aW9uICE9IFNSQl9GVU5DVElPTl9TVE9SQUdF
X1JFUVVFU1RfQkxPQ0spDQo+IHsNCj4gLSAgICAgICAgQVNTRVJUM1AoU3JiLT5TcmJFeHRlbnNp
b24sICE9LCBOVUxMKTsNCj4gLSAgICAgICAgcmV0dXJuIFNyYi0+U3JiRXh0ZW5zaW9uOw0KPiAt
ICAgIH0NCj4gLSAgICByZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtRk9SQ0VJTkxJTkUgVk9J
RA0KPiAtSW5pdFNyYkV4dCgNCj4gLSAgICBfX2luIFBTQ1NJX1JFUVVFU1RfQkxPQ0sgICAgU3Ji
DQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIFBYRU5WQkRfU1JCRVhUICBTcmJFeHQgPSBHZXRTcmJF
eHQoU3JiKTsNCj4gLSAgICBpZiAoU3JiRXh0KSB7DQo+IC0gICAgICAgIFJ0bFplcm9NZW1vcnko
U3JiRXh0LCBzaXplb2YoWEVOVkJEX1NSQkVYVCkpOw0KPiAtICAgICAgICBTcmJFeHQtPlNyYiA9
IFNyYjsNCj4gLSAgICB9DQo+IC0gICAgU3JiLT5TcmJTdGF0dXMgPSBTUkJfU1RBVFVTX0lOVkFM
SURfUkVRVUVTVDsNCj4gLX0NCj4gLQ0KPiAgI2VuZGlmIC8vIF9YRU5WQkRfU1JCRVhUX0gNCj4g
ZGlmZiAtLWdpdCBhL3NyYy94ZW52YmQvdGFyZ2V0LmMgYi9zcmMveGVudmJkL3RhcmdldC5jDQo+
IGluZGV4IDM3YjlhMmYuLmU0NjQ1OWIgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW52YmQvdGFyZ2V0
LmMNCj4gKysrIGIvc3JjL3hlbnZiZC90YXJnZXQuYw0KPiBAQCAtMjY2LDcgKzI2Niw3IEBAIFRh
cmdldFJlYWRXcml0ZSgNCj4gICAgICApDQo+ICB7DQo+ICAgICAgUFhFTlZCRF9ESVNLSU5GTyAg
ICBEaXNrSW5mbyA9IEZyb250ZW5kR2V0RGlza0luZm8oVGFyZ2V0LT5Gcm9udGVuZCk7DQo+IC0g
ICAgUFhFTlZCRF9TUkJFWFQgICAgICBTcmJFeHQgPSBHZXRTcmJFeHQoU3JiKTsNCj4gKyAgICBQ
WEVOVkJEX1NSQkVYVCAgICAgIFNyYkV4dCA9IFNyYi0+U3JiRXh0ZW5zaW9uOw0KPiAgICAgIFBY
RU5WQkRfUklORyAgICAgICAgUmluZyA9IEZyb250ZW5kR2V0UmluZyhUYXJnZXQtPkZyb250ZW5k
KTsNCj4gDQo+ICAgICAgaWYgKEZyb250ZW5kR2V0Q2FwcyhUYXJnZXQtPkZyb250ZW5kKS0+Q29u
bmVjdGVkID09IEZBTFNFKSB7DQo+IEBAIC0yOTMsNyArMjkzLDcgQEAgVGFyZ2V0U3luY0NhY2hl
KA0KPiAgICAgIF9faW4gUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgU3JiDQo+ICAgICAgKQ0KPiAg
ew0KPiAtICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFNyYik7DQo+
ICsgICAgUFhFTlZCRF9TUkJFWFQgICAgICBTcmJFeHQgPSBTcmItPlNyYkV4dGVuc2lvbjsNCj4g
ICAgICBQWEVOVkJEX1JJTkcgICAgICAgIFJpbmcgPSBGcm9udGVuZEdldFJpbmcoVGFyZ2V0LT5G
cm9udGVuZCk7DQo+IA0KPiAgICAgIGlmIChGcm9udGVuZEdldENhcHMoVGFyZ2V0LT5Gcm9udGVu
ZCktPkNvbm5lY3RlZCA9PSBGQUxTRSkgew0KPiBAQCAtMzIxLDcgKzMyMSw3IEBAIFRhcmdldFVu
bWFwKA0KPiAgICAgIF9faW4gUFNDU0lfUkVRVUVTVF9CTE9DSyAgICAgU3JiDQo+ICAgICAgKQ0K
PiAgew0KPiAtICAgIFBYRU5WQkRfU1JCRVhUICAgICAgU3JiRXh0ID0gR2V0U3JiRXh0KFNyYik7
DQo+ICsgICAgUFhFTlZCRF9TUkJFWFQgICAgICBTcmJFeHQgPSBTcmItPlNyYkV4dGVuc2lvbjsN
Cj4gICAgICBQWEVOVkJEX1JJTkcgICAgICAgIFJpbmcgPSBGcm9udGVuZEdldFJpbmcoVGFyZ2V0
LT5Gcm9udGVuZCk7DQo+IA0KPiAgICAgIGlmIChGcm9udGVuZEdldENhcHMoVGFyZ2V0LT5Gcm9u
dGVuZCktPkNvbm5lY3RlZCA9PSBGQUxTRSkgew0KPiAtLQ0KPiAyLjguMw0KPiANCj4gDQo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1k
ZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+
IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 29 16:55:23 2017
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 29 Sep 2017 16:55:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1dxyZP-0006fG-EY; Fri, 29 Sep 2017 16:55:23 +0000
Received: from mail6.bemta6.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=4384c3d6d=Paul.Durrant@citrix.com>)
 id 1dxyZO-0006f8-3u
 for win-pv-devel@lists.xenproject.org; Fri, 29 Sep 2017 16:55:22 +0000
Received: from [193.109.254.147] by server-4.bemta-6.messagelabs.com id
 0D/A9-03283-9FA7EC95; Fri, 29 Sep 2017 16:55:21 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQvdH1bl
 Ig71nzS3+LE50YPQ4/OEKSwBjFGtmXlJ+RQJrxqXDZ9kLOqQqLs3vY21gvCPZxcjJISHgJ3Hi
 bhsriM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V1gNcICNhKt358yQtTYSuzc/hzKNpK40
 r4UrIZFQFVi66prbCA2r4C7xIn508HiQgJWEgf+vGTpYuTg4BSwlthy3wgkzCggK/GlcTXUKn
 GJW08gTpAQEJBYsuc8M4QtKvHy8T9WCNtAYuvSfWBjmAU0Jdbv0odoVZSY0v2QHWKroMTJmU9
 YJjAKz0IydRZCxywkHbOQdCxgZFnFqFGcWlSWWqRrZKqXVJSZnlGSm5iZo2toYKaXm1pcnJie
 mpOYVKyXnJ+7iREY9AxAsINx1YLAQ4ySHExKorxslecihfiS8lMqMxKLM+KLSnNSiw8xynBwK
 EnwegKjSEiwKDU9tSItMwcYfzBpCQ4eJRGING9xQWJucWY6ROoUoyXHsU2X/zBxzLh5F0g+uT
 bvL5MQS15+XqqUOO9dkF0CIA0ZpXlw42Ap4hKjrJQwLyPQgUI8BalFuZklqPKvGMU5GJWEeQN
 A1vJk5pXAbX0FdBAT0EGTJ54BOagkESEl1cCYOkufQTr41PanBi+jL83+V5P/TrFU6fTkRQo6
 fQ9U/dVbGn7P+sOS5/Gd1fXKlwL17btk5nyXcq+58kCJe+01nvWc7DFvn7scfaCsKfvx6eX2y
 yecf5TLBSwP1HghVBJ5J3OazO5Lso8WeEnnCU4/7LD9zqOUaZHr77qUnm7eKiLE4tBbcueYEk
 txRqKhFnNRcSIAJWTD6QwDAAA=
X-Env-Sender: prvs=4384c3d6d=Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1506704120!59677515!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 9.4.45; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 57314 invoked from network); 29 Sep 2017 16:55:20 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 29 Sep 2017 16:55:20 -0000
X-IronPort-AV: E=Sophos;i="5.42,453,1500940800"; d="scan'208";a="53730616"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 0/5] Ongoing Improvements
Thread-Index: AQHTNs59ckF8/jWncEiW4vYDrTLccKLMGVNw
Date: Fri, 29 Sep 2017 16:55:20 +0000
Message-ID: <bfa092b7cce640c8ae6554d654370c3b@AMSPEX02CL03.citrite.net>
References: <20170926135015.17476-1-owen.smith@citrix.com>
In-Reply-To: <20170926135015.17476-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 0/5] Ongoing Improvements
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://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: <https://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
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyNiBTZXB0ZW1iZXIgMjAxNyAxNDo1
MA0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IFN1YmplY3Q6IFt3aW4tcHYtZGV2ZWxdIFtQ
QVRDSCAwLzVdIE9uZ29pbmcgSW1wcm92ZW1lbnRzDQo+IA0KPiBGcm9tOiBPd2VuIFNtaXRoIDxv
d2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBUaGlzIHNlcmllcyBjaGFuZ2VzIHRoZSBiZWhh
dmlvdXIgb2YgWGVuVmJkIHRvIGltcHJvdmUgdGhlDQo+IG92ZXJhbGwgZGVzaWduIGFuZCBpbXBs
ZW1lbnRhdGlvbi4NCj4gKiBVc2UgdGhlIENBQ0hFIGludGVyZmFjZSBmb3IgYm91bmNlIGJ1ZmZl
cnMsIHdoaWNoIHJlbW92ZXMgYQ0KPiAgIGxvZyBlbnRyeSB3aGljaCBjYW4gYmUgdHJpZ2dlcmVk
IGV2ZXJ5IDEgc2Vjb25kIGlmIHRoZSB1c2VyDQo+ICAgYnVmZmVycyBmb3IgSU8gYXJlIG5vdCBh
bGlnbmVkIHRvIHNlY3RvciBzaXplcy4NCj4gKiBBZGRzIGEgdXNlZnVsIG92ZXJyaWRlIG9uIG1h
eC1yaW5nLXBhZ2Utb3JkZXIuIGJsa2JhY2sgd2lsbA0KPiAgIGRlZmluZSBtYXgtcmluZy1wYWdl
LW9yZGVyIHRvIHVzZSAxNiBwYWdlcyBmb3IgYSByaW5nLCB3aGljaCBjYW4gYmUNCj4gICBleGNl
c3NpdmUgZm9yIG1vc3QgdXNlIGNhc2VzLiBUaGUgeGVudmJkIGZyb250ZW5kIHdpbGwgdXNlIHRo
ZQ0KPiAgIG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzIHBvc3NpYmxlIGZvciB0aGUgcmluZy4NCj4g
KiBVc2UgdGhlIENBQ0hFIGludGVyZmFjZSBpbnN0ZWFkIG9mIGxvb2thc2lkZSBsaXN0cyBmb3Ig
dGhlDQo+ICAgUkVRVUVTVCwgU0VHTUVOVCBhbmQgSU5ESVJFQ1Qgc3RydWN0cy4gVGhpcyBhbGxv
d3Mgb25lIHRpbWUNCj4gICBpbml0aWFsaXphdGlvbi9jbGVhbnVwLCB3aGljaCB3aWxsIHByZXZl
bnQgeGVudmJkIGFsbG9jYXRpbmcNCj4gICBhIHBhZ2UgZXZlcnkgdGltZSBpdCByZXRyaWV2ZXMg
YSBjYWNoZWQgSU5ESVJFQ1QuDQo+IA0KPiBPd2VuIFNtaXRoICg1KToNCj4gICBRdWVyeSBmb3Ig
Q0FDSEUgaW50ZXJmYWNlDQo+ICAgVXNlIENBQ0hFIGludGVyZmFjZSBmb3IgYm91bmNlIGJ1ZmZl
cnMNCj4gICBBZGQgb3ZlcnJpZGUgZm9yIE1heFJpbmdQYWdlT3JkZXINCj4gICBUaWR5IHVwIHNy
YmV4dC5oDQo+ICAgVXNlIENBQ0hFIGludGVyZmFjZSBmb3IgUkVRVUVTVHMsIFNFR01FTlRzIGFu
ZCBJTkRJUkVDVHMNCg0KSSB3YXMganVzdCBkb2luZyBzYW5pdHkgdGVzdHMgb2YgdGhlc2UgcHJp
b3IgdG8gcHVzaCBhbmQgSSBnb3QgYSBCU09EIG9uIHNodXRkb3duIHdpdGggYW4gUlMyIFZNLiBM
b29rZWQgdG8gYmUgdGVhcmluZyBkb3duIHRoZSBncmFudCB0YWJsZS4gSG93IG11Y2ggdGVzdGlu
ZyBoYXMgdGhpcyBjb2RlIGhhZD8gWW91IG5lZWQgdG8gdmVyaWZ5IHN1c3BlbmQvcmVzdW1lIHRv
by4NCg0KICBQYXVsDQoNCj4gDQo+ICBzcmMveGVudmJkL2FkYXB0ZXIuYyAgICAgICAgIHwgMTc0
ICsrKysrKysrLQ0KPiAgc3JjL3hlbnZiZC9hZGFwdGVyLmggICAgICAgICB8ICAxMyArDQo+ICBz
cmMveGVudmJkL2J1ZmZlci5jICAgICAgICAgIHwgNDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
PiAgc3JjL3hlbnZiZC9idWZmZXIuaCAgICAgICAgICB8ICA4MCAtLS0tDQo+ICBzcmMveGVudmJk
L2RyaXZlci5jICAgICAgICAgIHwgICA5ICstDQo+ICBzcmMveGVudmJkL2RyaXZlci5oICAgICAg
ICAgIHwgICAxICsNCj4gIHNyYy94ZW52YmQvcmluZy5jICAgICAgICAgICAgfCA4ODEgKysrKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+IC0NCj4gIHNyYy94ZW52YmQv
c3JiZXh0LmggICAgICAgICAgfCAxMDkgKystLS0tDQo+ICBzcmMveGVudmJkL3RhcmdldC5jICAg
ICAgICAgIHwgICA3ICstDQo+ICB2czIwMTUveGVudmJkL3hlbnZiZC52Y3hwcm9qIHwgICAxIC0N
Cj4gIDEwIGZpbGVzIGNoYW5nZWQsIDczMyBpbnNlcnRpb25zKCspLCA5NjggZGVsZXRpb25zKC0p
DQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3hlbnZiZC9idWZmZXIuYw0KPiAgZGVsZXRlIG1v
ZGUgMTAwNjQ0IHNyYy94ZW52YmQvYnVmZmVyLmgNCj4gDQo+IC0tDQo+IDIuOC4zDQo+IA0KPiAN
Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gd2lu
LXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWw=

