From unknown Fri Apr 10 14:50:45 2026
X-Loop: owner@bugs.x2go.org
Subject: Bug#1135: MySQL Database backend support
Reply-To: Walid MOGHRABI <w.moghrabi@servicemagic.eu>, 1135@bugs.x2go.org
Resent-From: Walid MOGHRABI <w.moghrabi@servicemagic.eu>
Resent-To: x2go-dev@lists.x2go.org
Resent-CC: X2Go Developers <x2go-dev@lists.x2go.org>
X-Loop: owner@bugs.x2go.org
Resent-Date: Fri, 13 Jan 2017 17:00:02 +0000
Resent-Message-ID: <handler.1135.B.148432653811008@bugs.x2go.org>
Resent-Sender: owner@bugs.x2go.org
X-X2Go-PR-Message: report 1135
X-X2Go-PR-Package: x2goserver
X-X2Go-PR-Keywords: patch
Received: via spool by submit@bugs.x2go.org id=B.148432653811008
          (code B); Fri, 13 Jan 2017 17:00:02 +0000
Received: (at submit) by bugs.x2go.org; 13 Jan 2017 16:55:38 +0000
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=3.0 tests=BAYES_50,URIBL_BLOCKED
	autolearn=ham version=3.3.2
Received: from localhost (localhost [127.0.0.1])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 8B0003CDDD
	for <submit@bugs.x2go.org>; Fri, 13 Jan 2017 17:55:32 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de
Received: from ymir.das-netzwerkteam.de ([127.0.0.1])
	by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Ja2EC9ajA4wY for <submit@bugs.x2go.org>;
	Fri, 13 Jan 2017 17:55:26 +0100 (CET)
Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id BC66D5DAA7
	for <submit@bugs.x2go.org>; Fri, 13 Jan 2017 17:55:25 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zm-01.servicemagic.eu (Postfix) with ESMTP id 058CC80A9221F
	for <submit@bugs.x2go.org>; Fri, 13 Jan 2017 17:55:23 +0100 (CET)
X-Amavis-Modified: Mail body modified (using disclaimer) -
	zm-01.servicemagic.eu
X-Virus-Scanned: amavisd-new at servicemagic.eu
Received: from zm-01.servicemagic.eu ([127.0.0.1])
	by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id NCAwZplSIJ4z for <submit@bugs.x2go.org>;
	Fri, 13 Jan 2017 17:55:19 +0100 (CET)
Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1])
	by zm-01.servicemagic.eu (Postfix) with ESMTP id 62BE4807CC6AA
	for <submit@bugs.x2go.org>; Fri, 13 Jan 2017 17:55:19 +0100 (CET)
Date: Fri, 13 Jan 2017 17:55:19 +0100 (CET)
From: Walid MOGHRABI <w.moghrabi@servicemagic.eu>
To: submit@bugs.x2go.org
Message-ID: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu>
In-Reply-To: <1040981999.33222686.1484325938728.JavaMail.root@servicemagic.eu>
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_33223557_1572844661.1484326519364"
X-Originating-IP: [10.33.100.60]
X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC55 (Linux)/7.2.0_GA_2669)

------=_Part_33223557_1572844661.1484326519364
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

package: x2goserver
priority: wishlist
tags: patch

This is a proposal patch for a MySQL session storage database backend for X2Go Server.

I did this simply because :

  1) I'm not used to PostgreSQL and much more skilled with MySQL
  2) I do believe MySQL is pretty common on Linux and is widely spread so I guess this can be useful for many other people willing to build a strong TCE setup and not willing to dig into PostgreSQL
  3) I find it a lot easier to build a multi-master replication scenario with MySQL than with PostgreSQL (but as I said, I'm much more skilled wih MySQL)

This backend is tightly inspired by the PostgreSQL backend and work exactly the same so this is a drop in replacement for it, til now, all my tests seems to work correctly, feel free to test by yourself and report errors.


Regards,
Walid Moghrabi

TRAVAUX.COM
BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403
13591 AIX EN PROVENCE CEDEX 3

---
DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you
------=_Part_33223557_1572844661.1484326519364
Content-Type: text/x-patch; name=MySQL-Database-backend-support.patch
Content-Disposition: attachment;
 filename=MySQL-Database-backend-support.patch
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL1gyR28vU2VydmVyL0RCLnBtIGIvWDJHby9TZXJ2ZXIvREIucG0KaW5kZXgg
NDFhMjJlOC4uYjI1MDFmMyAxMDA2NDQKLS0tIGEvWDJHby9TZXJ2ZXIvREIucG0KKysrIGIvWDJH
by9TZXJ2ZXIvREIucG0KQEAgLTM4LDYgKzM4LDcgQEAKIHVzZSBYMkdvOjpDb25maWcgcXcoIGdl
dF9zcWxjb25maWcgKTsKIHVzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7CiB1c2UgWDJHbzo6
U2VydmVyOjpEQjo6UG9zdGdyZVNRTDsKK3VzZSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDsKIHVz
ZSBYMkdvOjpVdGlscyBxdyggc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCBzeXN0ZW1fY2Fw
dHVyZV9zdGRvdXRfb3V0cHV0ICk7CiBzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSAp
OwogCkBAIC01Niw3ICs1Nyw3IEBACiBteSAkZGJ1c2VyOwogbXkgJHNzbG1vZGU7CiAKLWlmICgk
YmFja2VuZCBuZSAncG9zdGdyZXMnICYmICRiYWNrZW5kIG5lICdzcWxpdGUnKQoraWYgKCRiYWNr
ZW5kIG5lICdwb3N0Z3JlcycgJiYgJGJhY2tlbmQgbmUgJ215c3FsJyAmJiAkYmFja2VuZCBuZSAn
c3FsaXRlJykKIHsKIAlkaWUgInVua25vd24gYmFja2VuZCAkYmFja2VuZCI7CiB9CkBAIC03Niw2
ICs3NywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJzeXNfcm1z
ZXNzaW9uc3Jvb3QoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY
MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfcm1zZXNzaW9uc3Jvb3QoJHNpZCk7CisJfQog
CWlmKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291
dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg
InJtc2Vzc2lvbnNyb290IiwgIiRzaWQiKTsKQEAgLTg4LDYgKzkzLDEwIEBACiAJaWYgKCRiYWNr
ZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpk
YnN5c19kZWxldGVtb3VudHMoJHNpZCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQor
CXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRic3lzX2RlbGV0ZW1vdW50cygkc2lkKTsK
IAl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKQEAgLTEwMyw2ICsxMTIsMTAgQEAK
IAl7CiAJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19saXN0c2Vz
c2lvbnNyb290KCRzZXJ2ZXIpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJ
CXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdCgk
c2VydmVyKTsKKwl9CiAJaWYoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3Bs
aXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4
MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAibGlzdHNlc3Npb25zcm9vdCIsICIkc2Vy
dmVyIikpOwpAQCAtMTE0LDYgKzEyNywxMCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMn
KQogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRic3lzX2xpc3Rz
ZXNzaW9uc3Jvb3RfYWxsKCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJ
cmV0dXJuIFgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYnN5c19saXN0c2Vzc2lvbnNyb290X2Fs
bCgpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMTI4LDYgKzE0NSwx
MCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQG1vdW50cyA9IFgyR286
OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRic3lzX2dldG1vdW50cygkc2lkKTsKKwl9CisJaWYg
KCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6
TXlTUUw6OmRic3lzX2dldG1vdW50cygkc2lkKTsKIAl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxp
dGUnKQogCXsKQEAgLTE0Niw2ICsxNjcsMTAgQEAKIAl7CiAJCUBtb3VudHMgPSBYMkdvOjpTZXJ2
ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRtb3VudHMoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5k
IGVxICdteXNxbCcpCisJeworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRi
X2dldG1vdW50cygkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJ
QG1vdW50cyA9IHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f
bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldG1vdW50cyIs
ICIkc2lkIikpOwpAQCAtMTYzLDYgKzE4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6
UG9zdGdyZVNRTDo6ZGJfZGVsZXRlbW91bnQoJHNpZCwgJHBhdGgpOwogCX0KKwlpZiAoJGJhY2tl
bmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9kZWxldGVt
b3VudCgkc2lkLCAkcGF0aCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJ
CXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2Vy
dmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJkZWxldGVtb3VudCIsICIkc2lkIiwgIiRwYXRoIik7
CkBAIC0xNzksNiArMjA4LDEwIEBACiAJaWYgKCRiYWNrZW5kIGVxICdwb3N0Z3JlcycpCiAJewog
CQkkcmVzX29rID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfaW5zZXJ0bW91bnQo
JHNpZCwgJHBhdGgsICRjbGllbnQpOworCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7
CisJCSRyZXNfb2sgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0bW91bnQoJHNp
ZCwgJHBhdGgsICRjbGllbnQpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpA
QCAtMjAwLDYgKzIzMywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6
ZGJfaW5zZXJ0c2Vzc2lvbigkZGlzcGxheSwgJHNlcnZlciwgJHNpZCk7CiAJfQorCWlmICgkYmFj
a2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2luc2Vy
dHNlc3Npb24oJGRpc3BsYXksICRzZXJ2ZXIsICRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEg
J3NxbGl0ZScpCiAJewogCQlteSAkZXJyPXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4
MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJpbnNlcnRz
ZXNzaW9uIiwgIiRkaXNwbGF5IiwgIiRzZXJ2ZXIiLCAiJHNpZCIpOwpAQCAtMjIwLDYgKzI1Nywx
MCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJWDJHbzo6U2VydmVyOjpE
Qjo6UG9zdGdyZVNRTDo6ZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbigkZGlzcGxheSwgJHNlcnZlciwg
JHNpZCwgJHNoYWRyZXFfdXNlcik7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsK
KwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2luc2VydHNoYWRvd3Nlc3Npb24oJGRpc3Bs
YXksICRzZXJ2ZXIsICRzaWQsICRzaGFkcmVxX3VzZXIpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEg
J3NxbGl0ZScpCiAJewpAQCAtMjQ3LDYgKzI4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpE
Qjo6UG9zdGdyZVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlkLCAkY2xp
ZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQsICR0ZWtp
ZGF0YV9wb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlYMkdvOjpT
ZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlkLCAk
Y2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQsICR0
ZWtpZGF0YV9wb3J0KTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkg
JGVycj0gc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJn
by1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImNyZWF0ZXNlc3Npb24iLCAiJHNpZCIsICIk
Y29va2llIiwgIiRwaWQiLCAiJGNsaWVudCIsICIkZ3JfcG9ydCIsICIkc25kX3BvcnQiLCAiJGZz
X3BvcnQiLCAiJHRla2ljdHJsX3BvcnQiLCAiJHRla2lkYXRhX3BvcnQiKTsKQEAgLTI3Myw2ICsz
MTgsMTEgQEAKIAkJIyBmb3IgUG9zdGdyZVNRTCB3ZSBjYW4gdXNlIHRoZSBub3JtYWwgZGJfY3Jl
YXRlc2Vzc2lvbiBjb2RlLi4uCiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2Ny
ZWF0ZXNlc3Npb24oJHNpZCwgJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQsICRzbmRf
cG9ydCwgJGZzX3BvcnQsIC0xLCAtMSk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQor
CXsKKwkJIyBmb3IgTXlTUUwgd2UgY2FuIHVzZSB0aGUgbm9ybWFsIGRiX2NyZWF0ZXNlc3Npb24g
Y29kZS4uLgorCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lk
LCAkY29va2llLCAkcGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwg
LTEsIC0xKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkgJGVycj1z
eXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZl
ci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiIsICIkc2lkIiwgIiRj
b29raWUiLCAiJHBpZCIsICIkY2xpZW50IiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNf
cG9ydCIsICIkc2hhZHJlcV91c2VyIik7CkBAIC0yOTIsNiArMzQyLDEwIEBACiAJaWYgKCRiYWNr
ZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpk
Yl9pbnNlcnRwb3J0KCRzZXJ2ZXIsICRzaWQsICRzc2hwb3J0KTsKKwl9CisJaWYgKCRiYWNrZW5k
IGVxICdteXNxbCcpCisJeworCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0cG9y
dCgkc2VydmVyLCAkc2lkLCAkc3NocG9ydCk7CiAJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRl
JykKIAl7CkBAIC0zMTMsNiArMzY3LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0
Z3JlU1FMOjpkYl9ybXBvcnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOwogCX0KKwlpZiAoJGJh
Y2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9ybXBv
cnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0
ZScpCiAJewogCQlzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s
aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAicm1wb3J0IiwgIiRzZXJ2ZXIiLCAi
JHNpZCIsICIkc3NocG9ydCIpOwpAQCAtMzMzLDYgKzM5MSwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy
dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfcmVzdW1lKCRjbGllbnQsICRzaWQsICRncl9wb3J0LCAk
c25kX3BvcnQsICRmc19wb3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQpOwogCX0K
KwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FM
OjpkYl9yZXN1bWUoJGNsaWVudCwgJHNpZCwgJGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQs
ICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAn
c3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9w
YXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJyZXN1bWUiLCAiJGNsaWVu
dCIsICIkc2lkIiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNfcG9ydCIsICIkdGVraWN0
cmxfcG9ydCIsICIkdGVraWRhdGFfcG9ydCIpOwpAQCAtMzQ4LDYgKzQxMCwxMCBAQAogCXsKIAkJ
WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY2hhbmdlc3RhdHVzKCRzdGF0dXMsICRz
aWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6
REI6Ok15U1FMOjpkYl9jaGFuZ2VzdGF0dXMoJHN0YXR1cywgJHNpZCk7CisJfQogCWlmICgkYmFj
a2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4
MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJjaGFuZ2Vz
dGF0dXMiLCAiJHN0YXR1cyIsICIkc2lkIik7CkBAIC0zNjIsNiArNDI4LDEwIEBACiAJaWYgKCRi
YWNrZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQkkc3RhdHVzID0gWDJHbzo6U2VydmVyOjpEQjo6
UG9zdGdyZVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQpOworCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215
c3FsJykKKwl7CisJCSRzdGF0dXMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c3Rh
dHVzKCRzaWQpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMzc5LDYg
KzQ0OSwxMCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQGRpc3BsYXlz
ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0ZGlzcGxheXMoJHNlcnZlcik7
CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQGRpc3BsYXlzID0gWDJHbzo6
U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXlzKCRzZXJ2ZXIpOwogCX0KIAlpZiAoJGJh
Y2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMzk4LDYgKzQ3MiwxMCBAQAogCXsKIAkJQHBvcnRz
ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0cG9ydHMoJHNlcnZlcik7CiAJ
fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQHBvcnRzID0gWDJHbzo6U2VydmVy
OjpEQjo6TXlTUUw6OmRiX2dldHBvcnRzKCRzZXJ2ZXIpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEg
J3NxbGl0ZScpCiAJewogCQlAcG9ydHMgPSBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0dXJlX21lcmdl
ZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBl
ciIsICJnZXRwb3J0cyIsICIkc2VydmVyIikpOwpAQCAtNDEzLDYgKzQ5MSwxMCBAQAogCWlmICgk
YmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRC
OjpQb3N0Z3JlU1FMOjpkYl9nZXRzZXJ2ZXJzKCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz
cWwnKQorCXsKKwkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c2Vy
dmVycygpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtNDMxLDYgKzUx
MywxMCBAQAogCXsKIAkJJGFnZW50ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJf
Z2V0YWdlbnQoJHNpZCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJJGFn
ZW50ID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGFnZW50KCRzaWQpOworCX0KIAlp
ZigkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCSRhZ2VudD1zeXN0ZW1fY2FwdHVyZV9tZXJn
ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw
ZXIiLCAiZ2V0YWdlbnQiLCAiJHNpZCIpOwpAQCAtNDQ3LDYgKzUzMywxMCBAQAogCXsKIAkJJGRp
c3BsYXkgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRkaXNwbGF5KCRzaWQp
OwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCSRkaXNwbGF5ID0gWDJHbzo6
U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXkoJHNpZCk7CisJfQogCWlmICgkYmFja2Vu
ZCBlcSAnc3FsaXRlJykKIAl7CiAJCSRkaXNwbGF5PXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRw
dXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJn
ZXRkaXNwbGF5IiwgIiRzaWQiKTsKQEAgLTQ2Miw2ICs1NTIsMTAgQEAKIAl7CiAJCXJldHVybiBY
MkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9saXN0c2Vzc2lvbnMoJHNlcnZlcik7CiAJ
fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJcmV0dXJuIFgyR286OlNlcnZlcjo6
REI6Ok15U1FMOjpkYl9saXN0c2Vzc2lvbnMoJHNlcnZlcik7CisJfQogCWlmICgkYmFja2VuZCBl
cSAnc3FsaXRlJykKIAl7CiAJCXJldHVybiBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0dXJlX21lcmdl
ZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBl
ciIsICJsaXN0c2Vzc2lvbnMiLCAiJHNlcnZlciIpKTsKQEAgLTQ3Myw2ICs1NjcsMTAgQEAKIAlp
ZigkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6
OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9uc19hbGwoKTsKKwl9CisJaWYoJGJhY2tlbmQgZXEg
J215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNl
c3Npb25zX2FsbCgpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtNDg3
LDYgKzU4NSwxMCBAQAogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6
OmRiX2xpc3RzaGFkb3dzZXNzaW9ucygkc2VydmVyKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdt
eXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2xpc3RzaGFk
b3dzZXNzaW9ucygkc2VydmVyKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK
IAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f
bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzaGFkb3dz
ZXNzaW9ucyIsICIkc2VydmVyIikpOwpAQCAtNDk5LDYgKzYwMSwxMCBAQAogCXsKIAkJcmV0dXJu
IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzaGFkb3dzZXNzaW9uc19hbGwo
KTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2
ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNoYWRvd3Nlc3Npb25zX2FsbCgpOworCX0KIAlpZiAoJGJh
Y2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVy
ZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUz
LXdyYXBwZXIiLCAibGlzdHNoYWRvd3Nlc3Npb25zX2FsbCIpKTsKZGlmZiAtLWdpdCBhL1gyR28v
U2VydmVyL0RCL015U1FMLnBtIGIvWDJHby9TZXJ2ZXIvREIvTXlTUUwucG0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhlODFkZQotLS0gL2Rldi9udWxsCisrKyBiL1gyR28v
U2VydmVyL0RCL015U1FMLnBtCkBAIC0wLDAgKzEsNzM5IEBACisjIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE1IFgyR28gUHJvamVjdCAtIGh0dHA6Ly93aWtpLngyZ28ub3JnCisjCisjIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisjCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDE1IE9sZWtz
YW5kciBTaG5leWRlciA8b2xla3NhbmRyLnNobmV5ZGVyQG9idmlvdXNseS1uaWNlLmRlPgorIyBD
b3B5cmlnaHQgKEMpIDIwMDctMjAxNSBIZWluei1NYXJrdXMgR3JhZXNpbmcgPGhlaW56LW0uZ3Jh
ZXNpbmdAb2J2aW91c2x5LW5pY2UuZGU+CisKK3BhY2thZ2UgWDJHbzo6U2VydmVyOjpEQjo6TXlT
UUw7CisKKz1oZWFkMSBOQU1FCisKK1gyR286OlNlcnZlcjo6REI6Ok15U1FMIC0gWDJHbyBTZXNz
aW9uIERhdGFiYXNlIHBhY2thZ2UgZm9yIFBlcmwgKE15U1FMIGJhY2tlbmQpCisKKz1oZWFkMSBE
RVNDUklQVElPTgorCitYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTCBQZXJsIHBhY2thZ2UgZm9yIFgy
R286OlNlcnZlci4KKworPWN1dAorCit1c2Ugc3RyaWN0OwordXNlIERCSTsKK3VzZSBQT1NJWDsK
K3VzZSBTeXM6OlN5c2xvZyBxdyggOnN0YW5kYXJkIDptYWNyb3MgKTsKKwordXNlIFgyR286Okxv
ZyBxdyggbG9nbGV2ZWwgKTsKK3VzZSBYMkdvOjpDb25maWcgcXcoIGdldF9jb25maWcgZ2V0X3Nx
bGNvbmZpZyApOwordXNlIFgyR286OlV0aWxzIHF3KCBzYW5pdGl6ZXIgc3lzdGVtX2NhcHR1cmVf
c3Rkb3V0X291dHB1dCBpc190cnVlICk7CisKK3NldGxvZ21hc2soIExPR19VUFRPKGxvZ2xldmVs
KCkpICk7CisKK3VzZSBiYXNlICdFeHBvcnRlcic7CisKK291ciBARVhQT1JUPSgnZGJfbGlzdHNl
c3Npb25zJywnZGJfbGlzdHNlc3Npb25zX2FsbCcsICdkYl9nZXRzZXJ2ZXJzJywgJ2RiX2dldGFn
ZW50JywgJ2RiX3Jlc3VtZScsICdkYl9jaGFuZ2VzdGF0dXMnLCAnZGJfZ2V0c3RhdHVzJywKKyAg
ICAgICAgICAgICAnZGJfZ2V0ZGlzcGxheXMnLCAnZGJfaW5zZXJ0c2Vzc2lvbicsICdkYl9pbnNl
cnRzaGFkb3dzZXNzaW9uJywgJ2RiX2dldHBvcnRzJywgJ2RiX2luc2VydHBvcnQnLCAnZGJfcm1w
b3J0JywgJ2RiX2NyZWF0ZXNlc3Npb24nLCAnZGJfY3JlYXRlc2hhZG93c2Vzc2lvbicsICdkYl9p
bnNlcnRtb3VudCcsCisgICAgICAgICAgICAgJ2RiX2dldG1vdW50cycsICdkYl9kZWxldGVtb3Vu
dCcsICdkYl9nZXRkaXNwbGF5JywgJ2Ric3lzX2dldG1vdW50cycsICdkYnN5c19saXN0c2Vzc2lv
bnNyb290JywKKyAgICAgICAgICAgICAnZGJzeXNfbGlzdHNlc3Npb25zcm9vdF9hbGwnLCAnZGJz
eXNfcm1zZXNzaW9uc3Jvb3QnLCAnZGJzeXNfZGVsZXRlbW91bnRzJywgJ2RiX2xpc3RzaGFkb3dz
ZXNzaW9ucycsJ2RiX2xpc3RzaGFkb3dzZXNzaW9uc19hbGwnLCApOworCitteSAoJHVuYW1lLCAk
cGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkaG9tZWRpciwgJHNo
ZWxsLCAkZXhwaXJlKSA9IGdldHB3dWlkKCQ8KTsKK215ICRyZWFsdXNlcj0kdW5hbWU7CisKK215
ICRob3N0OworbXkgJHBvcnQ7CitteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworI215ICRkYnBhc3M9
ImllY2g3eWFIIjsKKyNteSAkZGJ1c2VyPSJ4MmdvZGJ1c2VyIjsKK215ICRkYnBhc3M7CitteSAk
ZGJ1c2VyOworbXkgJHNzbG1vZGU7CitteSAkd2l0aF9UZUtpOworCitzdWIgaW5pdF9kYgorewor
CSMgdGhlICRDb25maWcgaXMgcmVxdWlyZWQgbGF0ZXIgKHNlZSBiZWxvdy4uLikKKwlteSAkQ29u
ZmlnID0gZ2V0X2NvbmZpZzsKKwkkd2l0aF9UZUtpID0gaXNfdHJ1ZSgkQ29uZmlnLT5wYXJhbSgi
dGVsZWtpbmVzaXMuZW5hYmxlIikpOworCisJaWYgKCAhICggJGRidXNlciBhbmQgJGRicGFzcyAp
ICkKKwl7CisJCW15ICRTcWxDb25maWcgPSBnZXRfc3FsY29uZmlnOworCQlteSAkeDJnb19saWJf
cGF0aD1zeXN0ZW1fY2FwdHVyZV9zdGRvdXRfb3V0cHV0KCJ4MmdvcGF0aCIsICJsaWJleGVjIik7
CisKKwkJbXkgJGJhY2tlbmQ9JFNxbENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKTsKKwkJaWYgKCAk
YmFja2VuZCBuZSAibXlzcWwiICkKKwkJeworCQkJZGllICJYMkdvIHNlcnZlciBpcyBub3QgY29u
ZmlndXJlZCB0byB1c2UgdGhlIE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCI7CisJCX0KKworCQkk
aG9zdD0kU3FsQ29uZmlnLT5wYXJhbSgibXlzcWwuaG9zdCIpOworCQkkcG9ydD0kU3FsQ29uZmln
LT5wYXJhbSgibXlzcWwucG9ydCIpOworCQlpZiAoISRob3N0KQorCQl7CisJCQkkaG9zdD0nbG9j
YWxob3N0JzsKKwkJfQorCQlpZiAoISRwb3J0KQorCQl7CisJCQkkcG9ydD0nMzMwNic7CisJCX0K
KwkJbXkgJHBhc3NmaWxlOworCQlpZiAoJHVuYW1lIGVxICdyb290JykKKwkJeworCQkJJGRidXNl
cj0neDJnb2RidXNlcic7CisJCQkkcGFzc2ZpbGU9Ii9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jk
cy94MmdvYWRtaW4iOworCQl9CisJCWVsc2UKKwkJeworCQkJJGRidXNlcj0ieDJnb3VzZXJfJHVu
YW1lIjsKKwkJCSRwYXNzZmlsZT0iJGhvbWVkaXIvLngyZ28vc3FscGFzcyI7CisJCX0KKwkJb3Bl
biAoRkwsIjwgJHBhc3NmaWxlIikgb3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgJHBh
c3NmaWxlPGJyPiI7CisJCSRkYnBhc3M9PEZMPjsKKwkJY2xvc2UoRkwpOworCQljaG9tcCgkZGJw
YXNzKTsKKwl9CisKKwlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRk
Yjtob3N0PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJ1c2VyIiwiJGRicGFzcyIse1JhaXNlRXJyb3Ig
PT4gMX0pIG9yIGRpZSAkXzsKKworCXJldHVybiAkZGJoOworfQorCitzdWIgZGJzeXNfcm1zZXNz
aW9uc3Jvb3QKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jvb3QoKTsKKwlteSAk
c2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwlteSAk
c3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIHNlc3Npb25zICB3aGVyZSBzZXNzaW9uX2lk
PT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5
c2xvZygnZXJyb3InLCAicm1zZXNzaW9uc3Jvb3QgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg
ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZTsKKwl9CisJJHN0aC0+
ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRic3lzX2xpc3Rz
ZXNzaW9uc3Jvb3QKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jvb3QoKTsKKwlt
eSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15
IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFnZW50X3BpZCwgc2Vz
c2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsCisJICAgICAgICAgICAgICAgICAgICAg
ICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9wb3J0LHNvdW5kX3BvcnQsCisJICAgICAg
ICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0X3RpbWUsICclWS0lbS0lZFQlSDolSTol
UycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5hbWUsCisJICAgICAgICAgICAgICAgICAg
ICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0gVU5JWF9USU1FU1RBTVAoaW5pdF90aW1l
KSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICB0ZWtpY3RybF9wb3J0
LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdo
ZXJlIHNlcnZlcj0/ICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCSRzdGgtPmV4ZWN1dGUoJHNl
cnZlcik7CisJaWYgKCRzdGgtPmVycigpKSB7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Np
b25zcm9vdCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTog
JHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9IGZldGNocm93X2Fy
cmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0
dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGRic3lzX2xpc3RzZXNzaW9uc3Jvb3RfYWxsCit7CisJ
bXkgJGRiaCA9IGluaXRfZGIoKTsKKwljaGVja19yb290KCk7CisJbXkgQHN0cmluZ3M7CisJbXkg
JHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5
LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGlu
aXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBj
b29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAg
IERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAg
ICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJ
TUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9y
dCwKKwkgICAgICAgICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQg
ZnJvbSBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgYnkgc3RhdHVzIGRl
c2MiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9n
KCdlcnJvcicsICJsaXN0c2Vzc2lvbnNyb290X2FsbCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5k
KSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15
IEBzZXNzaW9ucyA9IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlz
aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGRic3lzX2Rl
bGV0ZW1vdW50cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk
aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJY2hlY2tfdXNlcigkc2lkKTsK
KwlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIG1vdW50cyB3aGVyZSBzZXNzaW9u
X2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJ
CXN5c2xvZygnZXJyb3InLCAiZGVsZXRlbW91bnRzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQp
IGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJJHN0
aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2dldG1v
dW50cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFy
Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3Np
ZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlj
aGVja191c2VyKCRzaWQpOworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi
c2VsZWN0IGNsaWVudCwgcGF0aCBmcm9tIG1vdW50cyB3aGVyZSBzZXNzaW9uX2lkPT8iKTsKKwkk
c3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy
b3InLCAiZ2V0bW91bnRzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4
aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWU7CisJfQorCW15IEBtb3VudHMgPSBmZXRjaHJv
d19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOwor
CXJldHVybiBAbW91bnRzOworfQorCitzdWIgZGJfZGVsZXRlbW91bnQKK3sKKwlteSAkZGJoID0g
aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc
IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy
Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHBhdGg9c2hpZnQgb3IgZGll
ICJhcmd1bWVudCBcInBhdGhcIiBtaXNzZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgJHN0
aD0kZGJoLT5wcmVwYXJlKCJkZWxldGUgZnJvbSBtb3VudHMgd2hlcmUgc2Vzc2lvbl9pZD0/IGFu
ZCBwYXRoPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQsICRwYXRoKTsKKwlpZiAoJHN0aC0+ZXJy
KCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImRlbGV0ZW1vdW50IChNeVNRTCBzZXNzaW9uIGRi
IGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsK
Kwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3Vi
IGRiX2luc2VydG1vdW50Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0
IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRp
emVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxm
b3JtZWQiOworCW15ICRwYXRoPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJwYXRoXCIgbWlzc2Vk
IjsKKwlteSAkY2xpZW50PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJjbGllbnRcIiBtaXNzZWQi
OworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJpbnNlcnQgaW50
byBtb3VudHMgKHNlc3Npb25faWQscGF0aCxjbGllbnQpIHZhbHVlcyAgKD8sID8sID8pIik7CisJ
JHN0aC0+ZXhlY3V0ZSgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CisJbXkgJHN1Y2Nlc3MgPSAwOwor
CWlmKCEgJHN0aC0+ZXJyKCkpCisJeworCQkkc3VjY2VzcyA9IDE7CisJfSBlbHNlIHsKKwkJc3lz
bG9nKCdkZWJ1ZycsICJpbnNlcnRtb3VudCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWls
ZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCksIHRoaXMgaXNzdWUgd2lsbCBiZSBpbnRlcnBy
ZXRlZCBhczogU1NIRlMgc2hhcmUgYWxyZWFkeSBtb3VudGVkIik7CisJfQorCSRzdGgtPmZpbmlz
aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuICRzdWNjZXNzOworfQorCitzdWIgZGJfaW5zZXJ0
c2Vzc2lvbgoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJGRpc3BsYXk9c2hpZnQgb3Ig
ZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtaXNzZWQiOworCSRkaXNwbGF5ID0gc2FuaXRpemVy
KCdudW0nLCAkZGlzcGxheSkgb3IgZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtYWxmb3JtZWQi
OworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7
CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7
CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJz
ZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRi
aC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gc2Vzc2lvbnMgKGRpc3BsYXksc2VydmVyLHVuYW1lLHNl
c3Npb25faWQsIGluaXRfdGltZSwgbGFzdF90aW1lKSB2YWx1ZXMKKwkgICAgICAgICAgICAgICAg
ICAgICAgICg/LCA/LCA/LCA/LCBOT1coKSwgTk9XKCkpIik7CisJJHN0aC0+ZXhlY3V0ZSgkZGlz
cGxheSwgJHNlcnZlciwgJHJlYWx1c2VyLCAkc2lkKSBvciBkaWUgJF87CisJJHN0aC0+ZmluaXNo
KCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2luc2VydHNoYWRvd3Nl
c3Npb24KK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRkaXNwbGF5PXNoaWZ0IG9yIGRp
ZSAiYXJndW1lbnQgXCJkaXNwbGF5XCIgbWlzc2VkIjsKKwkkZGlzcGxheSA9IHNhbml0aXplcign
bnVtJywgJGRpc3BsYXkpIG9yIGRpZSAiYXJndW1lbnQgXCJkaXNwbGF5XCIgbWFsZm9ybWVkIjsK
KwlteSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOwor
CW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOwor
CSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vz
c2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNoYWRyZXFfdXNlciA9IHNoaWZ0IG9yIGRpZSAi
YXJndW1lbnQgXCJzaGFkcmVxX3VzZXJcIiBtaXNzZWQiOworCW15ICRmYWtlX3NpZCA9ICRzaWQ7
CisJJGZha2Vfc2lkID1+IHMvJHNoYWRyZXFfdXNlci0vJHJlYWx1c2VyLS87CisJY2hlY2tfdXNl
cigkZmFrZV9zaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gc2Vzc2lv
bnMgKGRpc3BsYXksc2VydmVyLHVuYW1lLHNlc3Npb25faWQsIGluaXRfdGltZSwgbGFzdF90aW1l
KSB2YWx1ZXMKKwkgICAgICAgICAgICAgICAgICAgICAgICg/LCA/LCA/LCA/LCBOT1coKSwgTk9X
KCkpIik7CisJJHN0aC0+ZXhlY3V0ZSgkZGlzcGxheSwgJHNlcnZlciwgJHNoYWRyZXFfdXNlciwg
JHNpZCkgb3IgZGllICRfOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJu
IDE7Cit9CisKK3N1YiBkYl9jcmVhdGVzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsK
KwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsK
Kwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNl
c3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRjb29raWU9c2hpZnQgb3IgZGllImFyZ3VtZW50
IFwiY29va2llXCIgbWlzc2VkIjsKKwlteSAkcGlkPXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInBp
ZFwiIG1pc3NlZCI7CisJJHBpZCA9IHNhbml0aXplcignbnVtJywgJHBpZCkgb3IgZGllICJhcmd1
bWVudCBcInBpZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNsaWVudD1zaGlmdCBvciBkaWUiYXJndW1l
bnQgXCJjbGllbnRcIiBtaXNzZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVu
dCBcImdyX3BvcnRcIiBtaXNzZWQiOworCSRncl9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkZ3Jf
cG9ydCkgb3IgZGllICJhcmd1bWVudCBcImdyX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRzbmRf
cG9ydD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1pc3NlZCI7CisJJHNuZF9w
b3J0ID0gc2FuaXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJzbmRf
cG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwi
ZnNfcG9ydFwiIG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0
KSBvciBkaWUgImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2ljdHJs
X3BvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInRla2ljdHJsX3BvcnRcIiBtaXNzZWQiOwor
CSR0ZWtpY3RybF9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScsICR0ZWtpY3RybF9wb3J0KSBvciBk
aWUgImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2lkYXRh
X3BvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInRla2lkYXRhX3BvcnRcIiBtaXNzZWQiOwor
CSR0ZWtpZGF0YV9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScsICR0ZWtpZGF0YV9wb3J0KSBvciBk
aWUgImFyZ3VtZW50IFwidGVraWRhdGFfcG9ydFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigk
c2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInVwZGF0ZSBzZXNzaW9ucyBzZXQgc3RhdHVz
PSdSJyxsYXN0X3RpbWU9Tk9XKCksY29va2llPT8sYWdlbnRfcGlkPT8sCisJICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnQ9Pyxncl9wb3J0PT8sc291bmRfcG9ydD0/LGZzX3BvcnQ9Pyx0ZWtp
Y3RybF9wb3J0PT8sdGVraWRhdGFfcG9ydD0/IHdoZXJlIHNlc3Npb25faWQ9PyBhbmQgdW5hbWU9
PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQsICRz
bmRfcG9ydCwgJGZzX3BvcnQsICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCwgJHNpZCwg
JHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNy
ZWF0ZXNlc3Npb24gKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNv
ZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRl
ZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfY3JlYXRlc2hhZG93c2Vzc2lvbgorewor
CW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi
c2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQp
IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkY29va2ll
PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImNvb2tpZVwiIG1pc3NlZCI7CisJbXkgJHBpZD1zaGlm
dCBvciBkaWUiYXJndW1lbnQgXCJwaWRcIiBtaXNzZWQiOworCSRwaWQgPSBzYW5pdGl6ZXIoJ251
bScsICRwaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJwaWRcIiBtYWxmb3JtZWQiOworCW15ICRjbGll
bnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiY2xpZW50XCIgbWlzc2VkIjsKKwlteSAkZ3JfcG9y
dD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJncl9wb3J0XCIgbWlzc2VkIjsKKwkkZ3JfcG9ydCA9
IHNhbml0aXplcignbnVtJywgJGdyX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJncl9wb3J0XCIg
bWFsZm9ybWVkIjsKKwlteSAkc25kX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwic25kX3Bv
cnRcIiBtaXNzZWQiOworCSRzbmRfcG9ydCA9IHNhbml0aXplcignbnVtJywgJHNuZF9wb3J0KSBv
ciBkaWUgImFyZ3VtZW50IFwic25kX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRmc19wb3J0PXNo
aWZ0IG9yIGRpZSJhcmd1bWVudCBcImZzX3BvcnRcIiBtaXNzZWQiOworCSRmc19wb3J0ID0gc2Fu
aXRpemVyKCdudW0nLCAkZnNfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtYWxm
b3JtZWQiOworCW15ICRzaGFkcmVxX3VzZXIgPSBzaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2hh
ZHJlcV91c2VyXCIgbWlzc2VkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+
cHJlcGFyZSgidXBkYXRlIHNlc3Npb25zIHNldCBzdGF0dXM9J1InLGxhc3RfdGltZT1OT1coKSxj
b29raWU9PyxhZ2VudF9waWQ9PywKKwkgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudD0/LGdy
X3BvcnQ9Pyxzb3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2ljdHJsX3BvcnQ9LTEsdGVraWRhdGFf
cG9ydD0tMSB3aGVyZSBzZXNzaW9uX2lkPT8gYW5kIHVuYW1lPT8iKTsKKwkkc3RoLT5leGVjdXRl
KCRjb29raWUsICRwaWQsICRjbGllbnQsICRncl9wb3J0LCAkc25kX3BvcnQsICRmc19wb3J0LCAk
c2lkLCAkc2hhZHJlcV91c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vy
cm9yJywgImNyZWF0ZXNoYWRvd3Nlc3Npb24gKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFp
bGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5m
aW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfaW5zZXJ0cG9y
dAoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFy
Z3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1l
bnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywg
JHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRz
c2hwb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJwb3J0XCIgbWlzc2VkIjsKKwlteSAkc3Ro
PSRkYmgtPnByZXBhcmUoImluc2VydCBpbnRvIHVzZWRfcG9ydHMgKHNlcnZlcixzZXNzaW9uX2lk
LHBvcnQpIHZhbHVlcyAgKD8sID8sID8pIik7CisJY2hlY2tfdXNlcigkc2lkKTsKKwkkc3RoLT5l
eGVjdXRlKCRzZXJ2ZXIsICRzaWQsICRzc2hwb3J0KTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJewor
CQlzeXNsb2coJ2Vycm9yJywgImluc2VydHBvcnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg
ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3Ro
LT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfcm1wb3J0
Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJn
dW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu
dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk
c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNz
aHBvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInBvcnRcIiBtaXNzZWQiOworCW15ICRzdGg9
JGRiaC0+cHJlcGFyZSgiZGVsZXRlIGZyb20gdXNlZF9wb3J0cyB3aGVyZSBzZXJ2ZXI9PyBhbmQg
c2Vzc2lvbl9pZD0/IGFuZCBwb3J0PT8iKTsKKwljaGVja191c2VyKCRzaWQpOworCSRzdGgtPmV4
ZWN1dGUoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCWlmICgkc3RoLT5lcnIoKSkgeworCQlz
eXNsb2coJ2Vycm9yJywgInJtcG9ydCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQg
d2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlz
aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9yZXN1bWUKK3sKKwlt
eSAkZGJoID0gaW5pdF9kYigpOworCW15ICRjbGllbnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc
ImNsaWVudFwiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vz
c2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9y
IGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkZ3JfcG9ydD1z
aGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1pc3NlZCI7CisJJGdyX3BvcnQgPSBz
YW5pdGl6ZXIoJ251bScsICRncl9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1h
bGZvcm1lZCI7CisJbXkgJHNuZF9wb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzbmRfcG9y
dFwiIG1pc3NlZCI7CisJJHNuZF9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9y
IGRpZSAiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hp
ZnQgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtaXNzZWQiOworCSRmc19wb3J0ID0gc2Fu
aXRpemVyKCdudW0nLCAkZnNfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtYWxm
b3JtZWQiOworCW15ICR0ZWtpY3RybF9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInRla2lj
dHJsX3BvcnRcIiBtaXNzZWQiOworCSR0ZWtpY3RybF9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScs
ICR0ZWtpY3RybF9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1hbGZv
cm1lZCI7CisJbXkgJHRla2lkYXRhX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwidGVraWRh
dGFfcG9ydFwiIG1pc3NlZCI7CisJJHRla2lkYXRhX3BvcnQgPSBzYW5pdGl6ZXIoJ3BubnVtJywg
JHRla2lkYXRhX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIgbWFsZm9y
bWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgidXBkYXRl
IHNlc3Npb25zIHNldCBsYXN0X3RpbWU9Tk9XKCksc3RhdHVzPSdSJywKKwkgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudD0/LGdyX3BvcnQ9Pyxzb3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2lj
dHJsX3BvcnQ9Pyx0ZWtpZGF0YV9wb3J0PT8gd2hlcmUgc2Vzc2lvbl9pZCA9ID8gYW5kIHVuYW1l
PT8iKTsKKwkkc3RoLT5leGVjdXRlKCRjbGllbnQsICRncl9wb3J0LCAkc25kX3BvcnQsICRmc19w
b3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQsICRzaWQsICRyZWFsdXNlcik7CisJ
aWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJyZXN1bWUgKE15U1FMIHNl
c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ
CWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOwor
fQorCitzdWIgZGJfY2hhbmdlc3RhdHVzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAk
c3RhdHVzPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzdGF0dXNcIiBtaXNzZWQiOworCW15ICRz
aWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQg
PSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9p
ZFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKworCSMgd2UgbmVlZCB0byBiZSBh
YmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2Ygbm9ybWFsIHNlc3Npb25zICgkcmVhbHVzZXIgPT0g
JGVmZmVjdGl2ZV91c2VyKQorCSMgX2FuZF8gZGVza3RvcCBzaGFyaW5nIHNlc3Npb24gKCRyZWFs
dXNlciAhPSAkZWZmZWN0aXZlX3VzZXIpLiBUaHVzLCBleHRyYWN0aW5nIHRoZSBlZmZlY3RpdmUK
KwkjIHVzZXJuYW1lIGZyb20gdGhlIHNlc3Npb24gSUQuLi4KKwlteSAkZWZmZWN0aXZlX3VzZXIg
PSAkc2lkOworCSRlZmZlY3RpdmVfdXNlciA9fiBzL1wtWzAtOV0rXC1bMC05XXsxMH1fLiovLzsK
KworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgidXBkYXRlIHNlc3Npb25zIHNldCBsYXN0X3RpbWU9
Tk9XKCksCisJICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9PyB3aGVyZSBzZXNzaW9uX2lk
ID0gPyBhbmQgdW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHN0YXR1cywgJHNpZCwgJGVmZmVj
dGl2ZV91c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNo
YW5nZXN0YXR1cyAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29k
ZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVm
ICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9nZXRzdGF0dXMKK3sKKwlteSAkZGJoID0g
aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc
IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy
Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlt
eSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBzdGF0dXMgZnJvbSBzZXNzaW9ucyB3aGVyZSBz
ZXNzaW9uX2lkID0gPyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJaWYgKCRzdGgtPmVycigp
KQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJjaGFuZ2VzdGF0dXMgKE15U1FMIHNlc3Npb24gZGIg
YmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOwor
CX0KKwlteSBAZGF0YTsKKwlteSAkc3RhdHVzOworCUBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJy
YXk7CisJeworCQkkc3RhdHVzID0gJGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVu
ZGVmICRkYmg7CisJcmV0dXJuICRzdGF0dXM7Cit9CisKK3N1YiBkYl9nZXRkaXNwbGF5cworewor
CW15ICRkYmggPSBpbml0X2RiKCk7CisJI2lnbm9yZSAkc2VydmVyCisJbXkgQHN0cmluZ3M7CisJ
bXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgZGlzcGxheSBmcm9tIHNlc3Npb25zIik7CisJ
JHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In
LCAiZ2V0ZGlzcGxheXMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhp
dGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0w
OworCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCXsKKwkJJHN0cmluZ3Nb
JGkrK109J3wnLiRkYXRhWzBdLid8JzsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRi
aDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldHBvcnRzCit7
CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwkjaWdub3JlICRzZXJ2ZXIKKwlteSAkc2VydmVyPXNo
aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15IEBzdHJpbmdzOwor
CW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHBvcnQgZnJvbSB1c2VkX3BvcnRzIik7CisJ
JHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In
LCAiZ2V0cG9ydHMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNv
ZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0wOwor
CXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCXsKKwkJJHN0cmluZ3NbJGkr
K109J3wnLiRkYXRhWzBdLid8JzsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsK
KwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldHNlcnZlcnMKK3sK
KwlteSAkZGJoID0gaW5pdF9kYigpOworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJl
cGFyZSgic2VsZWN0IHNlcnZlcixjb3VudCgqKSBmcm9tIHNlc3Npb25zIHdoZXJlIHN0YXR1cyAh
PSAnRicgZ3JvdXAgYnkgc2VydmVyIik7CisJJHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5l
cnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0c2VydmVycyAoTXlTUUwgc2Vzc2lvbiBk
YiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7
CisJfQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hy
b3dfYXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0kZGF0YVswXTsKKwl9CisJJHN0aC0+Zmlu
aXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKwor
c3ViIGRiX2dldGFnZW50Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0
IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRp
emVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxm
b3JtZWQiOworCW15ICRhZ2VudDsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+
cHJlcGFyZSgic2VsZWN0IGFnZW50X3BpZCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAg
ICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlm
ICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0YWdlbnQgKE15U1FMIHNl
c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ
CWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0wOworCWlmKEBkYXRhID0gJHN0aC0+ZmV0
Y2hyb3dfYXJyYXkpCisJeworCQkkYWdlbnQ9JGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgp
OworCXVuZGVmICRkYmg7CisJcmV0dXJuICRhZ2VudDsKK30KKworc3ViIGRiX2dldGRpc3BsYXkK
K3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu
dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk
c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGRp
c3BsYXk7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVj
dCBkaXNwbGF5IGZyb20gc2Vzc2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNl
c3Npb25faWQgPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkK
Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0ZGlzcGxheSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNr
ZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQor
CW15IEBkYXRhOworCW15ICRpPTA7CisJaWYoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkK
Kwl7CisJCSRkaXNwbGF5PSRkYXRhWzBdOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAk
ZGJoOworCXJldHVybiAkZGlzcGxheTsKK30KKworc3ViIGRiX2xpc3RzZXNzaW9ucworeworCW15
ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi
c2VydmVyXCIgbWlzc2VkIjsKKworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFy
ZSgic2VsZWN0IGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMs
CisJICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0l
ZFQlSDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9w
b3J0LHNvdW5kX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0
X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5h
bWUsCisJICAgICAgICAgICAgICAgICAgICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0g
VU5JWF9USU1FU1RBTVAoaW5pdF90aW1lKSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAg
ICAgICAgICAgICB0ZWtpY3RybF9wb3J0LHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCSAg
ICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQg
dW5hbWU9PworCSAgICAgICAgICAgICAgICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIG5vdCBs
aWtlICclWFNIQUQlJykgIG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgk
c2VydmVyLCAkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy
b3InLCAibGlzdHNlc3Npb25zIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRo
IGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0g
ZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYg
JGRiaDsKKwlyZXR1cm4gQHNlc3Npb25zOworfQorCitzdWIgZGJfbGlzdHNlc3Npb25zX2FsbAor
eworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5w
cmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0
YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZ
LSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50
LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFU
KGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAg
ICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1co
KSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAg
ICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsdGVraWRhdGFfcG9ydCBmcm9tICBzZXNzaW9u
cworCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/
IGFuZCAgKCAgc2Vzc2lvbl9pZCBub3QgbGlrZSAnJVhTSEFEJScpICBvcmRlciBieSBzdGF0dXMg
ZGVzYyIpOworCQorCSRzdGgtPmV4ZWN1dGUoJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkp
CisJeworCQlzeXNsb2coJ2Vycm9yJywgImxpc3RzZXNzaW9uc19hbGwgKE15U1FMIHNlc3Npb24g
ZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgp
OworCX0KKwlteSBAc2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkk
c3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1
YiBkYl9saXN0c2hhZG93c2Vzc2lvbnMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRz
ZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0
cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9u
X2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERB
VEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAg
ICAgICAgICAgICBjb29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAg
ICAgICAgICAgICAgIERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyks
CisJICAgICAgICAgICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAg
IE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4
NjQwMCksZnNfcG9ydCBmcm9tICBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgd2hl
cmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAgICAgICAg
ICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIGxpa2UgJyVYU0hBRCUnKSAgb3JkZXIgYnkgc3Rh
dHVzIGRlc2MiKTsKKwkkc3RoLT5leGVjdXRlKCRzZXJ2ZXIsICRyZWFsdXNlcik7CisJaWYgKCRz
dGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnMgKE15U1FMIHNl
c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ
CWRpZSgpOworCX0KKwlteSBAc2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3Ro
KTsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9
CisKK3N1YiBkYl9saXN0c2hhZG93c2Vzc2lvbnNfYWxsCit7CisJbXkgJGRiaCA9IGluaXRfZGIo
KTsKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2VudF9w
aWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgREFURV9GT1JNQVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkg
ICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0LAor
CSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0tJWRU
JUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAgICAg
ICAgICAgICAgICAgTU9EKFVOSVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1QKGlu
aXRfdGltZSksIDg2NDAwKSxmc19wb3J0IGZyb20gIHNlc3Npb25zIAorCSAgICAgICAgICAgICAg
ICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9p
ZCBsaWtlICclWFNIQUQlJykgIG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJCisJJHN0aC0+ZXhl
Y3V0ZSgkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In
LCAibGlzdHNlc3Npb25zX2FsbCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0
aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9
IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVm
ICRkYmg7CisJcmV0dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGNoZWNrX3Jvb3QKK3sKKwlpZiAo
JHJlYWx1c2VyIG5lICJyb290IikKKwl7CisJCWRpZSAiJHJlYWx1c2VyLCB5b3UgY2FuIG5vdCBk
byB0aGlzIGpvYiI7CisJfQorfQorCitzdWIgY2hlY2tfdXNlcgoreworCW15ICRzaWQ9c2hpZnQg
b3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCXJldHVybiBpZiAkcmVh
bHVzZXIgZXEgInJvb3QiOworCisJIyBzZXNzaW9uIGlkIGxvb2tzIGxpa2Ugc29tZXVzZXItNTEt
MTMwNDAwNTg5NV9zdERnbm9tZS1zZXNzaW9uX2RwMjQKKwkjIGR1cmluZyBEQiBpbnNlcnRzZXNz
aW9uIGl0IG9ubHkgbG9va3MgbGlrZSBzb21ldXNlci01MS0xMzA0MDA1ODk1CisKKwkjIGRlcml2
ZSB0aGUgc2Vzc2lvbidzIHVzZXIgZnJvbSB0aGUgc2Vzc2lvbiBuYW1lL2lkCisJbXkgJHVzZXIg
PSAiJHNpZCI7CisKKwkjIGhhbmRsZSBBY3RpdmVEaXJlY3RvcnkgRG9tYWluIHVzZXIgYWNjb3Vu
dHMgZ3JhY2VmdWxseQorCSRyZWFsdXNlciA9fiBzL1xcLy87CisKKwkjIHBlcmZvcm0gdGhlIHVz
ZXIgY2hlY2sKKwkkdXNlciA9fiBzLygkcmVhbHVzZXItWzAtOV17Mix9LVswLTldezEwLH1fc3Qo
RHxSKS4qfC4qLVswLTldezIsfS1bMC05XXsxMCx9X3N0UygwfDEpWFNIQUQkcmVhbHVzZXIuKikv
JHJlYWx1c2VyLzsKKwkkdXNlciBlcSAkcmVhbHVzZXIgb3IgZGllICIkcmVhbHVzZXIgaXMgbm90
IGF1dGhvcml6ZWQiOworfQorCitzdWIgZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMKK3sKKwlteSAk
c3RoID0gc2hpZnQ7CisJbXkgQGxpbmVzOworCW15IEBkYXRhOworCXdoaWxlIChAZGF0YSA9ICRz
dGgtPmZldGNocm93X2FycmF5KCkpCisJeworCQlwdXNoIEBsaW5lcywgam9pbignfCcsIEBkYXRh
KTsKKwl9CisJcmV0dXJuIEBsaW5lczsKK30KKworMTsKZGlmZiAtLWdpdCBhL3gyZ29zZXJ2ZXIt
Y29tbW9uL2V0Yy94Mmdvc3FsL3NxbCBiL3gyZ29zZXJ2ZXItY29tbW9uL2V0Yy94Mmdvc3FsL3Nx
bAppbmRleCA2NmE3ZjdkLi4xMTM3OTlkIDEwMDY0NAotLS0gYS94Mmdvc2VydmVyLWNvbW1vbi9l
dGMveDJnb3NxbC9zcWwKKysrIGIveDJnb3NlcnZlci1jb21tb24vZXRjL3gyZ29zcWwvc3FsCkBA
IC0xLDQgKzEsNCBAQAotI3Bvc3RncmVzIG9yIHNxbGl0ZQorI3Bvc3RncmVzIG9yIG15c3FsIG9y
IHNxbGl0ZQogYmFja2VuZD1zcWxpdGUKIAogW3Bvc3RncmVzXQpAQCAtMTIsMyArMTIsMTEgQEAK
ICNyZXF1aXJlOiBjb25uZWN0IG9ubHkgd2l0aCBTU0wKICNkZWZhdWx0IC0gcHJlZmVyCiBzc2w9
cHJlZmVyCisKK1tteXNxbF0KK2hvc3Q9bG9jYWxob3N0Citwb3J0PTMzMDYKKyNyZXN0cmljdCB1
c2VycyBuZXR3b3JrLCAiJSIgZm9yIGFueQordW5ldD1sb2NhbGhvc3QKKyNkYXRhYmFzZSBhZG1p
biAobXVzdCBoYXZlIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBkYXRhYmFzZXMgYW5kIHVzZXJzKQor
ZGJhZG1pbj1yb290CmRpZmYgLS1naXQgYS94Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4gYi94
Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4KaW5kZXggZDNjNjI2Ni4uZTc0NmU0MyAxMDA3NTUK
LS0tIGEveDJnb3NlcnZlci9zYmluL3gyZ29kYmFkbWluCisrKyBiL3gyZ29zZXJ2ZXIvc2Jpbi94
MmdvZGJhZG1pbgpAQCAtNjMsNiArNjMsOSBAQAogCiBteSAkQ29uZmlnID0gZ2V0X3NxbGNvbmZp
ZygpOwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU1FMaXRlIEJhY2tl
bmQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaWYgKCRDb25maWctPnBhcmFt
KCJiYWNrZW5kIikgZXEgJ3NxbGl0ZScpCiB7CiAJbXkgJHVzZXI9IngyZ291c2VyIjsKQEAgLTIz
Niw0OTYgKzIzOSw4MjkgQEAKIAl9CiB9CiAKLW15ICRob3N0PSRDb25maWctPnBhcmFtKCJwb3N0
Z3Jlcy5ob3N0Iik7Ci1teSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMucG9ydCIpOwot
bXkgJHNzbG1vZGU9JENvbmZpZy0+cGFyYW0oInBvc3RncmVzLnNzbCIpOwotaWYgKCEkc3NsbW9k
ZSkKLXsKLQkkc3NsbW9kZT0icHJlZmVyIjsKLX0KLW15ICRkYmFkbWluPSRDb25maWctPnBhcmFt
KCJwb3N0Z3Jlcy5kYmFkbWluIik7Ci1teSAkeDJnb2FkbWluPSJ4MmdvZGJ1c2VyIjsKLW15ICR4
MmdvYWRtaW5wYXNzPWBwd2dlbiA4IDFgOwotY2hvbXAgKCR4MmdvYWRtaW5wYXNzKTsKLW15ICRk
Yj0ieDJnb19zZXNzaW9ucyI7CiAKLWlmICghJGhvc3QpCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgTXlTUUwgQmFja2VuZAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCitpZiAoJENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKSBlcSAnbXlzcWwnKQogewotCSRo
b3N0PSdsb2NhbGhvc3QnOwotfQotaWYgKCEkcG9ydCkKLXsKLQkkcG9ydD0nNTQzMic7Ci19Ci1p
ZiAoISRkYmFkbWluKQotewotCSRkYmFkbWluPSdwb3N0Z3Jlcyc7Ci19Ci0KLW9wZW4gKEZMLCI8
IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluICIpIG9yIGRpZSAiQ2FuJ3QgcmVh
ZCBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluIjsKLW15
ICRkYmFkbWlucGFzcz08Rkw+OwotY2xvc2UoRkwpOwotY2hvbXAoJGRiYWRtaW5wYXNzKTsKLQot
aWYgKCR1cGRhdGVkYikKLXsKLQkjIGNoZWNrIGlmIHRoZSBEQiBhbHJlYWR5IGV4aXN0cywgaWYg
bm90LCBjcmVhdGUgaXQuLi4KLQlteSAkZGJoOwotCXVudGlsICgKLQkJJGRiaCA9IERCSS0+Y29u
bmVjdCgiZGJpOlBnOmRibmFtZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNz
bG1vZGUiLCAiJGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxLCBSYWlz
ZUVycm9yID0+IDAsIFByaW50RXJyb3IgPT4gMH0pCi0JKSB7Ci0JCSRjcmVhdGVkYiA9IDE7Ci0J
CWxhc3Q7Ci0JfTsKLQlpZiAoISRjcmVhdGVkYikgewotCQkkZGJoID0gREJJLT5jb25uZWN0KCJk
Ymk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIs
ICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KTsKLQkJaWYgKCRk
YmgpIHsKLQkJCW15ICR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDA7Ci0JCQlteSAkc3RoX3Rla2lj
dHJsOwotCQkJbXkgJHN0aF90ZWtpZGF0YTsKLQkJCW15ICRzdGhfdXBkYXRlOwotCQkJdHJ5IHsK
LQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCi0JCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0IHRla2ljdHJsX3BvcnQgZnJvbSBzZXNzaW9ucwotCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1
dGUoKTsKLQkJCX0gY2F0Y2ggewotCQkJCXByaW50ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29s
dW1uIHRvIHRhYmxlIHNlc3Npb25zXG4iOwotCQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVw
YXJlKCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNz
aW9ucwotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0
cmxfcG9ydCBpbnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkk
c3RoX3Rla2ljdHJsLT5leGVjdXRlKCkgb3IgZGllOwotCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlz
aCgpOwotCQkJCSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7Ci0JCQl9OwotCQkJdHJ5IHsKLQkJ
CQkkc3RoX3Rla2lkYXRhID0gJGRiaC0+cHJlcGFyZSgiCi0JCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0IHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwotCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1dGUo
KTsKLQkJCX0gY2F0Y2ggewotCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1u
IHRvIHRhYmxlIHNlc3Npb25zXG4iOwotCQkJCSRzdGhfdGVraWRhdGE9JGRiaC0+cHJlcGFyZSgi
Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCi0J
CQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9ydCBp
bnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpZGF0
YS0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsKLQkJCQkk
dXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAxOwotCQkJfTsKLQotCQkJaWYgKCR1cGRhdGVfdmlld3Nf
bl9ydWxlcykKLQkJCXsKLQkJCQlwcmludCAiVVBEQVRJTkcgVklFVzogc2Vzc2lvbnNfdmlld1xu
IjsKLQkJCQkkc3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcwotCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0JCQkJICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLCBpbml0
X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNfcG9ydCwgdGVraWN0cmxfcG9y
dCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCi0JCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkJCQlw
cmludCAiVVBEQVRJTkcgUlVMRTogdXBkYXRlX3Nlc3Nfdmlld1xuIjsKLQkJCQkkc3RoX3VwZGF0
ZT0kZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv
ciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfdmlldyBBUyBPTiBVUERBVEUKLQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAotCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAotCQkJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzPU5FVy5zdGF0dXMsCi0JCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKLQkJCQkgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvb2tpZT1ORVcuY29va2llLAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
YWdlbnRfcGlkPU5FVy5hZ2VudF9waWQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnQ9TkVXLmNsaWVudCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9
TkVXLmdyX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0PU5F
Vy5zb3VuZF9wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgZnNfcG9ydD1ORVcu
ZnNfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQ9TkVX
LnRla2ljdHJsX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWtpZGF0YV9w
b3J0PU5FVy50ZWtpZGF0YV9wb3J0Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVy
ZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgot
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF91cGRhdGUtPmV4ZWN1
dGUoKSBvciBkaWU7Ci0JCQkJJHN0aF91cGRhdGUtPmZpbmlzaCgpOworCW15ICRob3N0PSRDb25m
aWctPnBhcmFtKCJteXNxbC5ob3N0Iik7CisJbXkgJHBvcnQ9JENvbmZpZy0+cGFyYW0oIm15c3Fs
LnBvcnQiKTsKKwlteSAkdW5ldD0kQ29uZmlnLT5wYXJhbSgibXlzcWwudW5ldCIpOworCW15ICRk
YmFkbWluPSRDb25maWctPnBhcmFtKCJteXNxbC5kYmFkbWluIik7CisJbXkgJHgyZ29hZG1pbj0i
eDJnb2RidXNlciI7CisJbXkgJHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7CisJY2hvbXAgKCR4
MmdvYWRtaW5wYXNzKTsKKwlteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworCQorCWlmICghJGhvc3Qp
CisJeworCQkkaG9zdD0nbG9jYWxob3N0JzsKKwl9CisJaWYgKCEkcG9ydCkKKwl7CisJCSRwb3J0
PSczMzA2JzsKKwl9CisJaWYgKCEkZGJhZG1pbikKKwl7CisJCSRkYmFkbWluPSdyb290JzsKKwl9
CisJCisJb3BlbiAoRkwsIjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL215YWRtaW4gIikg
b3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dv
cmRzL215YWRtaW4iOworCW15ICRkYmFkbWlucGFzcz08Rkw+OworCWNsb3NlKEZMKTsKKwljaG9t
cCgkZGJhZG1pbnBhc3MpOworCQorCWlmICgkdXBkYXRlZGIpCisJeworCQkjIGNoZWNrIGlmIHRo
ZSBEQiBhbHJlYWR5IGV4aXN0cywgaWYgbm90LCBjcmVhdGUgaXQuLi4KKwkJbXkgJGRiaDsKKwkJ
dW50aWwgKAorCQkJJGRiaCA9IERCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjto
b3N0PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJy
b3IgPT4gMX0pCisJCSkgeworCQkJJGNyZWF0ZWRiID0gMTsKKwkJCWxhc3Q7CisJCX07CisJCWlm
ICghJGNyZWF0ZWRiKSB7CisJCQkkZGJoID0gREJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJh
c2U9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7
UmFpc2VFcnJvciA9PiAxfSk7CisJCQlpZiAoJGRiaCkgeworCQkJCW15ICR1cGRhdGVfdmlld3Nf
bl9ydWxlcyA9IDA7CisJCQkJbXkgJHN0aF90ZWtpY3RybDsKKwkJCQlteSAkc3RoX3Rla2lkYXRh
OworCQkJCW15ICRzdGhfdXBkYXRlOworCQkJCXRyeSB7CisJCQkJCSRzdGhfdGVraWN0cmwgPSAk
ZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0
IHRla2ljdHJsX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZXhlY3V0ZSgpOworCQkJCX0gY2F0Y2gg
eworCQkJCQlwcmludCAiQURESU5HOiB0ZWtpY3RybF9wb3J0IGNvbHVtbiB0byB0YWJsZSBzZXNz
aW9uc1xuIjsKKwkJCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNzaW9ucworCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgY29sdW1uIHRla2ljdHJsX3BvcnQgaW50CisJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2ljdHJs
LT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2ljdHJsLT5maW5pc2goKTsKKwkJCQkJ
JHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OworCQkJCXRyeSB7CisJCQkJCSRzdGhf
dGVraWRhdGEgPSAkZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0IHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpZGF0YS0+ZXhlY3V0ZSgpOwor
CQkJCX0gY2F0Y2ggeworCQkJCQlwcmludCAiQURESU5HOiB0ZWtpZGF0YV9wb3J0IGNvbHVtbiB0
byB0YWJsZSBzZXNzaW9uc1xuIjsKKwkJCQkJJHN0aF90ZWtpZGF0YT0kZGJoLT5wcmVwYXJlKCIK
KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgY29sdW1uIHRla2lkYXRhX3BvcnQg
aW50CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtp
ZGF0YS0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJCQkJJHN0aF90ZWtpZGF0YS0+ZmluaXNoKCk7CisJ
CQkJCSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7CisJCQkJfTsKIAkJCX0KKwkJCWlmICgkZGJo
KSB7CisJCQkJdW5kZWYgJGRiaDsKKwkJCX0KKwkJCWV4aXQoMCk7CisJCX0gZWxzZSB7CisJCQlw
cmludCAiTm8gc2Vzc2lvbiBEQiBmb3VuZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVw
ZGF0ZWRiLlxuIjsKIAkJfQotCQlpZiAoJGRiaCkgewotCQkJdW5kZWYgJGRiaDsKLQkJfQorCX0K
KwkKKwlpZiAoJGNyZWF0ZWRiKQorCXsKKwkJbXlfY3JlYXRlX2RhdGFiYXNlKCk7CisJCW15X2Ny
ZWF0ZV90YWJsZXMoKTsKIAkJZXhpdCgwKTsKLQl9IGVsc2UgewotCQlwcmludCAiTm8gc2Vzc2lv
biBEQiBmb3VuZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVwZGF0ZWRiLlxuIjsKIAl9
Ci19Ci0KLWlmICgkY3JlYXRlZGIpCi17Ci0JY3JlYXRlX2RhdGFiYXNlKCk7Ci0JY3JlYXRlX3Rh
YmxlcygpOwotCWV4aXQoMCk7Ci19Ci0KLWlmICgkbGlzdHVzZXJzKQotewotCWxpc3RfdXNlcnMo
KTsKLQlleGl0KDApOwotfQotCi1teSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT0k
ZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4iLCAi
JGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwotaWYgKCRhZGR1c2Vy
KQotewotCWFkZF91c2VyKCRhZGR1c2VyKTsKLX0KLQotaWYgKCRhZGRncm91cCkKLXsKLQlteSAo
JG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkYWRkZ3JvdXApOwot
CW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOwotCWZvcmVhY2ggKEBncnBfbWVt
YmVycykKKwkKKwlpZiAoJGxpc3R1c2VycykKIAl7Ci0JCWNob21wKCRfKTsKLQkJYWRkX3VzZXIo
JF8pOworCQlteV9saXN0X3VzZXJzKCk7CisJCWV4aXQoMCk7CiAJfQotfQotCi1pZiAoJHJtdXNl
cikKLXsKLQlybV91c2VyKCRybXVzZXIpOwotfQotCi1pZiAoJHJtZ3JvdXApCi17Ci0JbXkgKCRu
YW1lLCAkcGFzc3dkLCAkZ2lkLCAkbWVtYmVycykgPSBnZXRncm5hbSggJHJtZ3JvdXApOwotCW15
IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOwotCWZvcmVhY2ggKEBncnBfbWVtYmVy
cykKKwkKKwlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjtob3N0
PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJyb3Ig
PT4gMX0pIG9yIGRpZSAkXzsKKwlpZiAoJGFkZHVzZXIpCiAJewotCQljaG9tcCgkXyk7Ci0JCXJt
X3VzZXIoJF8pOworCQlteV9hZGRfdXNlcigkYWRkdXNlcik7CiAJfQotfQotdW5kZWYgJGRiaDsK
LQotc3ViIGxpc3RfdXNlcnMoKQotewotCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJu
YW1lPXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRk
YmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKLQlt
eSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCByb2xuYW1lIGZyb20gcGdfcm9sZXMgd2hlcmUg
cm9sbmFtZSBsaWtlICd4MmdvdXNlcl8lJyIpOwotCSRzdGgtPmV4ZWN1dGUoKW9yIGRpZTsKLQlw
cmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsKLQlwcmludCAiLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwotCW15IEBkYXRhOwotCXdoaWxlIChA
ZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQorCWlmICgkYWRkZ3JvdXApCiAJewotCQlA
ZGF0YVswXT1+cy94MmdvdXNlcl8vLzsKLQkJcHJpbnRmICgiJS0yMHMgeDJnb3VzZXJfQGRhdGFb
MF1cbiIsQGRhdGFbMF0pOworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9
IGdldGdybmFtKCAkYWRkZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQoJyAnLCRtZW1i
ZXJzKTsKKwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgkXyk7CisJCQlt
eV9hZGRfdXNlcigkXyk7CisJCX0KIAl9Ci0JJHN0aC0+ZmluaXNoKCk7CisJCisJaWYgKCRybXVz
ZXIpCisJeworCQlteV9ybV91c2VyKCRybXVzZXIpOworCX0KKwkKKwlpZiAoJHJtZ3JvdXApCisJ
eworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1n
cm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOworCQlmb3JlYWNo
IChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21wKCRfKTsKKwkJCW15X3JtX3VzZXIoJF8pOwor
CQl9CisJfQogCXVuZGVmICRkYmg7Ci19Ci0KLXN1YiBybV91c2VyKCkKLXsKLQlteSAkdXNlcj1z
aGlmdDsKLQotCXByaW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOwotCi0J
bXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMs
IHVzZWRfcG9ydHMsIG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4
ZWN1dGUoKTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VT
IE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcg
RlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3Ro
PSRkYmgtPnByZXBhcmUoIkRST1AgT1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0
aC0+ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYgZXhp
c3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQkkc3RoLT5maW5p
c2goKTsKLQotCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50
LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKLQlpZiAo
ISAkdWlkKQorCQorCXN1YiBteV9saXN0X3VzZXJzKCkKIAl7Ci0JCXJldHVybjsKKwkJbXkgJGRi
aD1EQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRhYmFzZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRw
b3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlzZUVycm9yID0+IDF9KSBvciBkaWUg
JF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHVzZXIgZnJvbSBteXNxbC51c2Vy
IHdoZXJlIHVzZXIgbGlrZSAneDJnb3VzZXJfJSciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpb3IgZGll
OworCQlwcmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsKKwkJcHJpbnQgIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKwkJbXkgQGRhdGE7CisJ
CXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQl7CisJCQlAZGF0YVswXT1+
cy94MmdvdXNlcl8vLzsKKwkJCXByaW50ZiAoIiUtMjBzIHgyZ291c2VyX0BkYXRhWzBdXG4iLEBk
YXRhWzBdKTsKKwkJfQorCQkkc3RoLT5maW5pc2goKTsKKwkJdW5kZWYgJGRiaDsKIAl9Ci0JaWYg
KCAtZSAiJGRpci8ueDJnby9zcWxwYXNzIiApCisJCisJc3ViIG15X3JtX3VzZXIoKQogCXsKLQkJ
dW5saW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCisJCXBy
aW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCisJCW15ICRzdGg9JGRi
aC0+cHJlcGFyZSgiRFJPUCBVU0VSIElGIEVYSVNUUyBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAi
KTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQkkc3RoLT5maW5pc2goKTsKKworCQlteSAoJG5hbWUs
ICRwYXNzLCAkdWlkLCAkcGdpZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVs
bCwgJGV4cGlyZSkgPSBnZXRwd25hbSgkdXNlcik7CisJCWlmICghICR1aWQpCisJCXsKKwkJCXJl
dHVybjsKKwkJfQorCQlpZiAoIC1lICIkZGlyLy54MmdvL3NxbHBhc3MiICkKKwkJeworCQkJdW5s
aW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJfQorCX0KKwkKKwlzdWIgbXlfYWRkX3VzZXIo
KQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisKKwkJbXkgKCRuYW1lLCAkcGFzcywgJHVpZCwgJHBn
aWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkZGlyLCAkc2hlbGwsICRleHBpcmUpID0gZ2V0
cHduYW0oJHVzZXIpOworCQlpZiAoISAkbmFtZSkKKwkJeworCQkJcHJpbnQgIkNhbm5vdCBmaW5k
IHVzZXIgKCR1c2VyKVxuIjsKKwkJCXJldHVybjsKKwkJfSBlbHNpZiAoJG5hbWUgZXEgInJvb3Qi
KSB7CisJCQlwcmludCAiVGhlIHN1cGVyLXVzZXIgXCJyb290XCIgaXMgbm90IGFsbG93ZWQgdG8g
dXNlIFgyR29cbiI7CisJCQlyZXR1cm47CisJCX0KKwkJJHBhc3M9YHB3Z2VuIDggMWA7CisJCWNo
b21wKCRwYXNzKTsKKworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIkRST1AgVVNFUiBJRiBFWElT
VFMgYHgyZ291c2VyXyR1c2VyYEBgJHVuZXRgIik7CisJCSRzdGgtPntXYXJufT0wOworCQkkc3Ro
LT57UHJpbnRFcnJvcn09MDsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCisJCXByaW50ICgiY3JlYXRl
IERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJD
UkVBVEUgVVNFUiBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAgSURFTlRJRklFRCBCWSAnJHBhc3Mn
Iik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKworCQkkc3RoPSRkYmgtPnByZXBhcmUoIkdSQU5UIFNF
TEVDVCwgSU5TRVJULCBVUERBVEUsIERFTEVURSBPTiAqIFRPIGB4MmdvdXNlcl8kdXNlcmBAYCR1
bmV0YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisKKwkJJHN0aC0+ZmluaXNoKCk7CisJCisJCWlm
ICghIC1kICIkZGlyLy54MmdvIiApCisJCXsKKwkJCQlpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRo
OjptYWtlX3BhdGgpICkKKwkJCQl7CisJCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8u
eDJnbyIpOworCQkJCX0KKwkJCQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgp
ICkKKwkJCQl7CisJCQkJCUZpbGU6OlBhdGg6Om1rcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0K
KwkJCQllbHNlCisJCQkJeworCQkJCQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRo
IEZpbGU6OlBhdGgiOworCQkJCX0KKwkJfQorCQorCQkjc2F2ZSB1c2VyIHBhc3N3b3JkCisJCW9w
ZW4gKEZMLCI+ICRkaXIvLngyZ28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29y
ZCBmaWxlICRkaXIvLngyZ28vc3FscGFzcyI7CisJCXByaW50IEZMICRwYXNzOworCQljbG9zZShG
TCk7CisJCWNobW9kKDA3MDAsIiRkaXIvLngyZ28iKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRp
ci8ueDJnbyIpOworCQljaG1vZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJY2hvd24o
JHVpZCwkcGdpZCwiJGRpci8ueDJnby9zcWxwYXNzIik7CisJfQorCQorCXN1YiBteV9jcmVhdGVf
dGFibGVzKCkKKwl7CisJCSRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRi
O2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VF
cnJvciA9PiAxfSkgb3IgZGllICRfOworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAg
ICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIGBzZXNzaW9uc2AgKAorCQkgICAgICAgICAg
ICAgICAgICAgICAgYHNlc3Npb25faWRgIHZhcmNoYXIoNTAwKSBOT1QgTlVMTCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBkaXNwbGF5YCBpbnQoMTEpIE5PVCBOVUxMLAorCQkgICAgICAgICAg
ICAgICAgICAgICAgYHVuYW1lYCB2YXJjaGFyKDEwMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAg
ICAgICAgICAgICBgc2VydmVyYCB2YXJjaGFyKDEwMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAg
ICAgICAgICAgICBgY2xpZW50YCB2YXJjaGFyKDIwKSBERUZBVUxUIE5VTEwsCisJCSAgICAgICAg
ICAgICAgICAgICAgICBgc3RhdHVzYCBjaGFyKDEpIE5PVCBOVUxMIERFRkFVTFQgJ1InLAorCQkg
ICAgICAgICAgICAgICAgICAgICAgYGluaXRfdGltZWAgZGF0ZXRpbWUgTk9UIE5VTEwgREVGQVVM
VCBDVVJSRU5UX1RJTUVTVEFNUCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGBsYXN0X3RpbWVg
IGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsCisJCSAgICAgICAg
ICAgICAgICAgICAgICBgY29va2llYCBjaGFyKDQ1KSBERUZBVUxUIE5VTEwsCisJCSAgICAgICAg
ICAgICAgICAgICAgICBgYWdlbnRfcGlkYCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBncl9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBzb3VuZF9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAg
ICAgICAgICAgICAgICAgICAgIGBmc19wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAg
ICAgICAgICAgICAgICAgICAgIGB0ZWtpY3RybF9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwK
KwkJICAgICAgICAgICAgICAgICAgICAgIGB0ZWtpZGF0YV9wb3J0YCBpbnQoMTEpIERFRkFVTFQg
TlVMTCwKKwkJICAgICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgc2Vzc2lvbl9pZGAp
LAorCQkgICAgICAgICAgICAgICAgICAgICAgVU5JUVVFIEtFWSBgZGlzcGxheV9VTklRVUVgIChg
ZGlzcGxheWApKQorCQkgICAgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUo
KSBvciBkaWU7CisKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAg
IENSRUFURSBUQUJMRSBgbWVzc2FnZXNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBtZXNzX2lk
YCB2YXJjaGFyKDIwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBtZXNhZ2VgIGxv
bmd0ZXh0LAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBtZXNzX2lkYCkpCisJ
CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ
JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIENSRUFURSBUQUJMRSBg
dXNlcl9tZXNzYWdlc2AgKAorCQkgICAgICAgICAgICAgICAgICAgYG1lc3NfaWRgIHZhcmNoYXIo
MjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHVuYW1lYCB2YXJjaGFyKDEwMCkg
Tk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYG1lc3NfaWRgKSkK
KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor
CQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxF
IGB1c2VkX3BvcnRzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgc2VydmVyYCB2YXJjaGFyKDEw
MCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAgdmFyY2hhcig1
MDApIERFRkFVTFQgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBwb3J0YCBpbnQoMTEpIE5P
VCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBwb3J0YCksCisJCSAg
ICAgICAgICAgICAgICAgICBLRVkgYHVzZWRfcG9ydHNfc2Vzc2lvbl9pZF9ma2V5X2lkeGAgKGBz
ZXNzaW9uX2lkYCksCisJCSAgICAgICAgICAgICAgICAgICBDT05TVFJBSU5UIGB1c2VkX3BvcnRz
X3Nlc3Npb25faWRfZmtleWAgRk9SRUlHTiBLRVkgKGBzZXNzaW9uX2lkYCkgUkVGRVJFTkNFUyBg
c2Vzc2lvbnNgIChgc2Vzc2lvbl9pZGApIE9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBOTyBB
Q1RJT04pCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRp
ZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIENSRUFU
RSBUQUJMRSBgbW91bnRzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgaWRgIGludCgxMSkgTk9U
IE5VTEwgQVVUT19JTkNSRU1FTlQsCisJCSAgICAgICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAg
dmFyY2hhcig1MDApIERFRkFVTFQgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBwYXRoYCB2
YXJjaGFyKDUxMikgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgY2xpZW50YCB2YXJj
aGFyKDIwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgaWRg
KSwKKwkJICAgICAgICAgICAgICAgICAgIFVOSVFVRSBLRVkgYG1vdW50c19wa2V5YCAoYHBhdGhg
LGBjbGllbnRgKSwKKwkJICAgICAgICAgICAgICAgICAgIEtFWSBgbW91bnRzX3Nlc3Npb25faWRf
ZmtleV9pZHhgIChgc2Vzc2lvbl9pZGApLAorCQkgICAgICAgICAgICAgICAgICAgQ09OU1RSQUlO
VCBgbW91bnRzX3Nlc3Npb25faWRfZmtleWAgRk9SRUlHTiBLRVkgKGBzZXNzaW9uX2lkYCkgUkVG
RVJFTkNFUyBgc2Vzc2lvbnNgIChgc2Vzc2lvbl9pZGApIE9OIFVQREFURSBOTyBBQ1RJT04pCisJ
CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ
JHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiAqIFRPIGAkeDJnb2Fk
bWluYEBgJHVuZXRgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCSRzdGgtPmZpbmlz
aCgpOworCQl1bmRlZiAkZGJoOworCX0KKwkKKwlzdWIgbXlfY3JlYXRlX2RhdGFiYXNlCisJewor
CQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPW15c3FsO2hvc3Q9JGhv
c3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VFcnJvciA9PiAx
fSkgb3IgZGllICRfOworCQkjZHJvcCBkYiBpZiBleGlzdHMKKwkJbXkgJHN0aD0kZGJoLT5wcmVw
YXJlKCJEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBgJGRiYCIpOworCQkkc3RoLT5leGVjdXRlKCk7
CisJCSNkcm9wIHgyZ29hZG1pbgorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkRST1AgVVNFUiBJRiBF
WElTVFMgYCR4MmdvYWRtaW5gQGAkdW5ldGAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQkjY3Jl
YXRlIGRiCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiQ1JFQVRFIERBVEFCQVNFIElGIE5PVCBFWElT
VFMgYCRkYmAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJI2NyZWF0ZSB4MmdvYWRt
aW4KKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJDUkVBVEUgVVNFUiBgJHgyZ29hZG1pbmBAYCR1bmV0
YCBJREVOVElGSUVEIEJZICckeDJnb2FkbWlucGFzcyciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9y
IGRpZTsKKwkJI3NhdmUgeDJnb2FkbWluIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+IC9ldGMveDJn
by94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3cml0ZSBwYXNz
d29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4iOworCQlwcmlu
dCBGTCAkeDJnb2FkbWlucGFzczsKKwkJY2xvc2UoRkwpOworCQkkc3RoLT5maW5pc2goKTsKKwkJ
dW5kZWYgJGRiaDsKIAl9CiB9CiAKLXN1YiBhZGRfdXNlcigpCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyBQb3N0Z3JlU1FMIEJhY2tlbmQKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworaWYgKCRDb25maWctPnBhcmFtKCJiYWNrZW5kIikgZXEgJ3Bvc3Rn
cmVzJykKIHsKLQlteSAkdXNlcj1zaGlmdDsKLQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAkcGdp
ZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRw
d25hbSgkdXNlcik7Ci0JaWYgKCEgJG5hbWUpCisJbXkgJGhvc3Q9JENvbmZpZy0+cGFyYW0oInBv
c3RncmVzLmhvc3QiKTsKKwlteSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMucG9ydCIp
OworCW15ICRzc2xtb2RlPSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5zc2wiKTsKKwlpZiAoISRz
c2xtb2RlKQogCXsKLQkJcHJpbnQgIkNhbm5vdCBmaW5kIHVzZXIgKCR1c2VyKVxuIjsKLQkJcmV0
dXJuOwotCX0gZWxzaWYgKCRuYW1lIGVxICJyb290IikgewotCQlwcmludCAiVGhlIHN1cGVyLXVz
ZXIgXCJyb290XCIgaXMgbm90IGFsbG93ZWQgdG8gdXNlIFgyR29cbiI7Ci0JCXJldHVybjsKKwkJ
JHNzbG1vZGU9InByZWZlciI7CiAJfQotCSRwYXNzPWBwd2dlbiA4IDFgOwotCWNob21wKCRwYXNz
KTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNl
c3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMgRlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkk
c3RoLT57V2Fybn09MDsKLQkkc3RoLT57UHJpbnRFcnJvcn09MDsKLQkkc3RoLT5leGVjdXRlKCk7
Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNz
aW9uc192aWV3LCBtb3VudHNfdmlldywgc2VydmVyc192aWV3LCBwb3J0c192aWV3IEZST00gXCJ4
MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+e1dhcm59PTA7Ci0JJHN0aC0+e1ByaW50RXJyb3J9
PTA7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJEUk9QIE9X
TkVEIEJZIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPntXYXJufT0wOwotCSRzdGgtPntQ
cmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgi
ZHJvcCBVU0VSIGlmIGV4aXN0cyBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT57V2Fybn09
MDsKLQkkc3RoLT57UHJpbnRFcnJvcn09MDsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlwcmludCAo
ImNyZWF0ZSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7Ci0JJHN0aD0kZGJoLT5wcmVw
YXJlKCJjcmVhdGUgVVNFUiBcIngyZ291c2VyXyR1c2VyXCIgV0lUSCBFTkNSWVBURUQgUEFTU1dP
UkQgJyRwYXNzJyIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgi
R1JBTlQgSU5TRVJULCBVUERBVEUsIERFTEVURSBPTiBzZXNzaW9ucywgdXNlZF9wb3J0cywgbW91
bnRzIFRPIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9
JGRiaC0+cHJlcGFyZSgiR1JBTlQgU0VMRUNUIE9OIHVzZWRfcG9ydHMgVE8gXCJ4MmdvdXNlcl8k
dXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO
VCBTRUxFQ1QsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz
ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+
ZXhlY3V0ZSgpOwotCSRzdGgtPmZpbmlzaCgpOwotCi0JaWYgKCEgLWQgIiRkaXIvLngyZ28iICkK
KwlteSAkZGJhZG1pbj0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMuZGJhZG1pbiIpOworCW15ICR4
MmdvYWRtaW49IngyZ29kYnVzZXIiOworCW15ICR4MmdvYWRtaW5wYXNzPWBwd2dlbiA4IDFgOwor
CWNob21wICgkeDJnb2FkbWlucGFzcyk7CisJbXkgJGRiPSJ4MmdvX3Nlc3Npb25zIjsKKwkKKwlp
ZiAoISRob3N0KQogCXsKLQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1ha2VfcGF0aCkg
KQotCQkJewotCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8ueDJnbyIpOwotCQkJfQot
CQkJZWxzaWYgKCBkZWZpbmVkICgmRmlsZTo6UGF0aDo6bWtwYXRoKSApCi0JCQl7Ci0JCQkJRmls
ZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJ
ZGllICJVbmFibGUgdG8gY3JlYXRlIGZvbGRlcnMgd2l0aCBGaWxlOjpQYXRoIjsKLQkJCX0KKwkJ
JGhvc3Q9J2xvY2FsaG9zdCc7CiAJfQotCi0JI3NhdmUgdXNlciBwYXNzd29yZAotCW9wZW4gKEZM
LCI+ICRkaXIvLngyZ28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29yZCBmaWxl
ICRkaXIvLngyZ28vc3FscGFzcyI7Ci0JcHJpbnQgRkwgJHBhc3M7CisJaWYgKCEkcG9ydCkKKwl7
CisJCSRwb3J0PSc1NDMyJzsKKwl9CisJaWYgKCEkZGJhZG1pbikKKwl7CisJCSRkYmFkbWluPSdw
b3N0Z3Jlcyc7CisJfQorCQorCW9wZW4gKEZMLCI8IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jk
cy9wZ2FkbWluICIpIG9yIGRpZSAiQ2FuJ3QgcmVhZCBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94
Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluIjsKKwlteSAkZGJhZG1pbnBhc3M9PEZMPjsKIAljbG9z
ZShGTCk7Ci0JY2htb2QoMDcwMCwiJGRpci8ueDJnbyIpOwotCWNob3duKCR1aWQsJHBnaWQsIiRk
aXIvLngyZ28iKTsKLQljaG1vZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKLQljaG93bigk
dWlkLCRwZ2lkLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKLX0KLQotc3ViIGNyZWF0ZV90YWJsZXMo
KQotewotCSRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3Bv
cnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtB
dXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIHNlc3Npb25zKAotCSAgICAgICAgICAg
ICAgICAgICAgICBzZXNzaW9uX2lkIHRleHQgcHJpbWFyeSBrZXksCi0JICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXkgaW50ZWdlciBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAg
dW5hbWUgdGV4dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQg
bm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCBpbmV0LAotCSAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMgY2hhcigxKSBub3QgbnVsbCBkZWZhdWx0ICdSJywKLQkgICAg
ICAgICAgICAgICAgICAgICAgaW5pdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBkZWZhdWx0IG5v
dygpLAotCSAgICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxs
IGRlZmF1bHQgbm93KCksCi0JICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSBjaGFyKDMzKSwK
LQkgICAgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkIGludCwKLQkgICAgICAgICAgICAgICAg
ICAgICAgZ3JfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQgaW50
LAotCSAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0IGludCwKLQkgICAgICAgICAgICAgICAg
ICAgICAgdGVraWN0cmxfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIHRla2lkYXRh
X3BvcnQgaW50LAotCSAgICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX2lkIHRleHQgTk9UIE5V
TEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCi0JICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZShk
aXNwbGF5KSkKLQkgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y
IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0
ZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0JICAg
ICAgICAgICAgICAgICAgIGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBz
dGF0dXMsIGluaXRfdGltZSwgY29va2llLCBjbGllbnQsIGdyX3BvcnQsCi0JICAgICAgICAgICAg
ICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3BvcnQsIHRla2ljdHJsX3Bv
cnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwotCSAgICAgICAgICAgICAgICAgICB3aGVy
ZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRz
dGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAg
ICAgICAgICAgICBjcmVhdGUgVklFVyBzZXJ2ZXJzX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAg
ICAgU0VMRUNUCi0JICAgICAgICAgICAgICAgICAgIHNlcnZlciwgZGlzcGxheSwgc3RhdHVzIGZy
b20gc2Vzc2lvbnMKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y
IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0
ZSBvciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfcHJpdiBBUyBPTiBVUERBVEUKLQkgICAgICAg
ICAgICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUgKE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRf
dXNlciBvciBPTEQuY3JlYXRvcl9pZCA8PiBORVcuY3JlYXRvcl9pZCkgYW5kIGN1cnJlbnRfdXNl
ciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5H
Ci0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkk
c3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFj
ZSBSVUxFIGluc2VydF9zZXNzX3ByaXYgQVMgT04gSU5TRVJUCi0JICAgICAgICAgICAgICAgICAg
IFRPIHNlc3Npb25zIHdoZXJlIE5FVy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3Vy
cmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFE
IE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRp
ZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv
ciByZXBsYWNlIFJVTEUgZGVsZXRlX3Nlc3NfcHJpdiBBUyBPTiBERUxFVEUKLQkgICAgICAgICAg
ICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2Vy
IGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERP
IElOU1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRl
KCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAg
Y3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQotCSAg
ICAgICAgICAgICAgICAgICBUTyBzZXNzaW9uc192aWV3IERPIElOU1RFQUQKLQkgICAgICAgICAg
ICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAotCSAgICAgICAgICAgICAgICAgICBzdGF0dXM9
TkVXLnN0YXR1cywKLQkgICAgICAgICAgICAgICAgICAgbGFzdF90aW1lPU5FVy5sYXN0X3RpbWUs
Ci0JICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAotCSAgICAgICAgICAgICAg
ICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKLQkgICAgICAgICAgICAgICAgICAgY2xpZW50
PU5FVy5jbGllbnQsCi0JICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCi0J
ICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCi0JICAgICAgICAg
ICAgICAgICAgIGZzX3BvcnQ9TkVXLmZzX3BvcnQsCi0JICAgICAgICAgICAgICAgICAgIHRla2lj
dHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCi0JICAgICAgICAgICAgICAgICAgIHRla2lkYXRh
X3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKLQkgICAgICAgICAgICAgICAgICAgd2hlcmUgc2Vzc2lv
bl9pZD1PTEQuc2Vzc2lvbl9pZCBhbmQgY3JlYXRvcl9pZD1jdXJyZW50X3VzZXIKLQkgICAgICAg
ICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+
cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBtZXNzYWdlcyhtZXNz
X2lkIHZhcmNoYXIoMjApIHByaW1hcnkga2V5LCBtZXNzYWdlIHRleHQpCi0JICAgICAgICAgICAg
ICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBh
cmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNlcl9tZXNzYWdlcygKLQkg
ICAgICAgICAgICAgICAgICAgbWVzc19pZCB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAg
ICAgICB1bmFtZSB0ZXh0IG5vdCBudWxsKQotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3Ro
LT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAg
ICAgICAgICAgY3JlYXRlIHRhYmxlIHVzZWRfcG9ydHMoCi0JICAgICAgICAgICAgICAgICAgIHNl
cnZlciB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lkIHRleHQg
cmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgY2FzY2FkZSwKLQkgICAgICAgICAgICAgICAg
ICAgY3JlYXRvcl9pZCB0ZXh0IE5PVCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAotCSAgICAg
ICAgICAgICAgICAgICBwb3J0IGludGVnZXIgcHJpbWFyeSBrZXkpCi0JICAgICAgICAgICAgICAg
ICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUo
IgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgVklFVyBwb3J0c192aWV3IGFzCi0JICAgICAg
ICAgICAgICAgICAgIFNFTEVDVAotCSAgICAgICAgICAgICAgICAgICBzZXJ2ZXIsIHBvcnQgZnJv
bSB1c2VkX3BvcnRzCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBv
ciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVh
dGUgb3IgcmVwbGFjZSBSVUxFIGluc2VydF9wb3J0X3ByaXYgQVMgT04gSU5TRVJUCi0JICAgICAg
ICAgICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVu
dF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAg
ICAgIERPIElOU1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5l
eGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAg
ICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfcG9ydF9wcml2IEFTIE9OIFVQREFU
RQotCSAgICAgICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIChORVcuY3JlYXRvcl9p
ZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQg
Y3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNU
RUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y
IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0
ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX3BvcnRfcHJpdiBBUyBPTiBERUxFVEUKLQkgICAgICAg
ICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50
X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAg
ICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4
ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAg
ICAgICBjcmVhdGUgdGFibGUgbW91bnRzKAotCSAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lk
IHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgcmVzdHJpY3QsCi0JICAgICAgICAg
ICAgICAgICAgIHBhdGggdGV4dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgY2xpZW50
IGluZXQgbm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1Qg
TlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKLQkgICAgICAgICAgICAgICAgICAgcHJpbWFyeSBr
ZXkocGF0aCxjbGllbnQpKQotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRl
KCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAg
Y3JlYXRlIFZJRVcgbW91bnRzX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0J
ICAgICAgICAgICAgICAgICAgIGNsaWVudCxwYXRoLCBzZXNzaW9uX2lkIGZyb20gbW91bnRzCi0J
ICAgICAgICAgICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkgICAg
ICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRi
aC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg
ZGVsZXRlX21vdW50c192aWV3IEFTIE9OIERFTEVURQotCSAgICAgICAgICAgICAgICAgICBUTyBt
b3VudHNfdmlldyBETyBJTlNURUFECi0JICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmcm9tIG1v
dW50cwotCSAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lk
IGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlciBhbmQgcGF0aD1PTEQucGF0aAotCSAgICAgICAg
ICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5w
cmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNl
cnRfbW91bnRfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRz
IHdoZXJlIE5FVy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+
ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkg
ICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9
JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJV
TEUgdXBkYXRlX21vdW50X3ByaXYgQVMgT04gVVBEQVRFCi0JICAgICAgICAgICAgICAgICAgIFRP
IG1vdW50cyB3aGVyZSAoTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVh
dG9yX2lkIDw+IGN1cnJlbnRfdXNlcikgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicK
LQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAg
ICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUo
IgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3Vu
dF9wcml2IEFTIE9OIERFTEVURQotCSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUg
T0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4Mmdv
YWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElORwotCSAgICAgICAg
ICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5w
cmVwYXJlKCJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgbWVzc2FnZXMsIHVzZXJf
bWVzc2FnZXMsIHVzZWRfcG9ydHMsIG1vdW50cyBUTyAkeDJnb2FkbWluIik7Ci0JJHN0aC0+ZXhl
Y3V0ZSgpIG9yIGRpZTsKLQkkc3RoLT5maW5pc2goKTsKKwljaG9tcCgkZGJhZG1pbnBhc3MpOwor
CQorCWlmICgkdXBkYXRlZGIpCisJeworCQkjIGNoZWNrIGlmIHRoZSBEQiBhbHJlYWR5IGV4aXN0
cywgaWYgbm90LCBjcmVhdGUgaXQuLi4KKwkJbXkgJGRiaDsKKwkJdW50aWwgKAorCQkJJGRiaCA9
IERCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3Nz
bG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9
PiAxLCBSYWlzZUVycm9yID0+IDAsIFByaW50RXJyb3IgPT4gMH0pCisJCSkgeworCQkJJGNyZWF0
ZWRiID0gMTsKKwkJCWxhc3Q7CisJCX07CisJCWlmICghJGNyZWF0ZWRiKSB7CisJCQkkZGJoID0g
REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3Ns
bW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+
IDF9KTsKKwkJCWlmICgkZGJoKSB7CisJCQkJbXkgJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMDsK
KwkJCQlteSAkc3RoX3Rla2ljdHJsOworCQkJCW15ICRzdGhfdGVraWRhdGE7CisJCQkJbXkgJHN0
aF91cGRhdGU7CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnByZXBhcmUo
IgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGVraWN0cmxfcG9y
dCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwor
CQkJCQkkc3RoX3Rla2ljdHJsLT5leGVjdXRlKCk7CisJCQkJfSBjYXRjaCB7CisJCQkJCXByaW50
ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNlc3Npb25zXG4iOworCQkJ
CQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0cmxfcG9ydCBpbnQKKwkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKSBv
ciBkaWU7CisJCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlzaCgpOworCQkJCQkkdXBkYXRlX3ZpZXdz
X25fcnVsZXMgPSAxOworCQkJCX07CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpZGF0YSA9ICRk
YmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Qg
dGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRlKCk7CisJCQkJfSBjYXRjaCB7
CisJCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNlc3Np
b25zXG4iOworCQkJCQkkc3RoX3Rla2lkYXRhPSRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMKKwkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9ydCBpbnQKKwkJCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRl
KCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsKKwkJCQkJJHVwZGF0ZV92
aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OworCQorCQkJCWlmICgkdXBkYXRlX3ZpZXdzX25fcnVs
ZXMpCisJCQkJeworCQkJCQlwcmludCAiVVBEQVRJTkcgVklFVzogc2Vzc2lvbnNfdmlld1xuIjsK
KwkJCQkJJHN0aF91cGRhdGU9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgVklFVyBzZXNzaW9uc192aWV3IGFzCisJCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywgaW5p
dF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VuZF9wb3J0LCBsYXN0X3RpbWUsIHVuYW1lLCBmc19wb3J0LCB0ZWtpY3RybF9w
b3J0LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCisJCQkJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOwor
CQkJCQlwcmludCAiVVBEQVRJTkcgUlVMRTogdXBkYXRlX3Nlc3Nfdmlld1xuIjsKKwkJCQkJJHN0
aF91cGRhdGU9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQorCQkJ
CQkgICAgICAgICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAor
CQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBzZXNzaW9ucyBzZXQKKwkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9TkVXLnN0YXR1cywKKwkJCQkJICAgICAg
ICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKKwkJCQkJICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb29raWU9TkVXLmNvb2tpZSwKKwkJCQkJICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKKwkJCQkJICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnQ9TkVXLmNsaWVudCwKKwkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBncl9wb3J0PU5FVy5ncl9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZWtpY3RybF9wb3J0PU5FVy50ZWtpY3RybF9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRla2lkYXRhX3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKKwkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVh
dG9yX2lkPWN1cnJlbnRfdXNlcgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwor
CQkJCQkkc3RoX3VwZGF0ZS0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJCQkJJHN0aF91cGRhdGUtPmZp
bmlzaCgpOworCQkJCX0KKwkJCX0KKwkJCWlmICgkZGJoKSB7CisJCQkJdW5kZWYgJGRiaDsKKwkJ
CX0KKwkJCWV4aXQoMCk7CisJCX0gZWxzZSB7CisJCQlwcmludCAiTm8gc2Vzc2lvbiBEQiBmb3Vu
ZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVwZGF0ZWRiLlxuIjsKKwkJfQorCX0KKwkK
KwlpZiAoJGNyZWF0ZWRiKQorCXsKKwkJY3JlYXRlX2RhdGFiYXNlKCk7CisJCWNyZWF0ZV90YWJs
ZXMoKTsKKwkJZXhpdCgwKTsKKwl9CisJCisJaWYgKCRsaXN0dXNlcnMpCisJeworCQlsaXN0X3Vz
ZXJzKCk7CisJCWV4aXQoMCk7CisJfQorCQorCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6
ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJh
ZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87CisJaWYg
KCRhZGR1c2VyKQorCXsKKwkJYWRkX3VzZXIoJGFkZHVzZXIpOworCX0KKwkKKwlpZiAoJGFkZGdy
b3VwKQorCXsKKwkJbXkgKCRuYW1lLCAkcGFzc3dkLCAkZ2lkLCAkbWVtYmVycykgPSBnZXRncm5h
bSggJGFkZGdyb3VwKTsKKwkJbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7CisJ
CWZvcmVhY2ggKEBncnBfbWVtYmVycykKKwkJeworCQkJY2hvbXAoJF8pOworCQkJYWRkX3VzZXIo
JF8pOworCQl9CisJfQorCQorCWlmICgkcm11c2VyKQorCXsKKwkJcm1fdXNlcigkcm11c2VyKTsK
Kwl9CisJCisJaWYgKCRybWdyb3VwKQorCXsKKwkJbXkgKCRuYW1lLCAkcGFzc3dkLCAkZ2lkLCAk
bWVtYmVycykgPSBnZXRncm5hbSggJHJtZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQo
JyAnLCRtZW1iZXJzKTsKKwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgk
Xyk7CisJCQlybV91c2VyKCRfKTsKKwkJfQorCX0KIAl1bmRlZiAkZGJoOwotfQotCi1zdWIgY3Jl
YXRlX2RhdGFiYXNlCi17Ci0JbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9cG9z
dGdyZXM7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4i
LCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwotCSNkcm9wIGRi
IGlmIGV4aXN0cwotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBkYXRhYmFzZSBpZiBleGlz
dHMgeDJnb19zZXNzaW9ucyIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQkjZHJvcCB4MmdvYWRtaW4K
LQkkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgdXNlciBpZiBleGlzdHMgJHgyZ29hZG1pbiIpOwot
CSRzdGgtPmV4ZWN1dGUoKTsKLQkjY3JlYXRlIGRiCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh
dGUgZGF0YWJhc2UgJGRiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkjY3JlYXRlIHgy
Z29hZG1pbgotCSRzdGg9JGRiaC0+cHJlcGFyZSgiY3JlYXRlIFVTRVIgJHgyZ29hZG1pbiBXSVRI
IEVOQ1JZUFRFRCBQQVNTV09SRCAnJHgyZ29hZG1pbnBhc3MnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgp
IG9yIGRpZTsKLQkjc2F2ZSB4MmdvYWRtaW4gcGFzc3dvcmQKLQlvcGVuIChGTCwiPiAvZXRjL3gy
Z28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluICIpIG9yIGRpZSAiQ2FuJ3Qgd3JpdGUgcGFz
c3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluIjsKLQlwcmlu
dCBGTCAkeDJnb2FkbWlucGFzczsKLQljbG9zZShGTCk7Ci0JJHN0aC0+ZmluaXNoKCk7Ci0JdW5k
ZWYgJGRiaDsKKwkKKwlzdWIgbGlzdF91c2VycygpCisJeworCQlteSAkZGJoPURCSS0+Y29ubmVj
dCgiZGJpOlBnOmRibmFtZT1wb3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0k
c3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBv
ciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHJvbG5hbWUgZnJvbSBw
Z19yb2xlcyB3aGVyZSByb2xuYW1lIGxpa2UgJ3gyZ291c2VyXyUnIik7CisJCSRzdGgtPmV4ZWN1
dGUoKW9yIGRpZTsKKwkJcHJpbnRmICgiJS0yMHMgREIgdXNlclxuIiwiVU5JWCB1c2VyIik7CisJ
CXByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisJCW15
IEBkYXRhOworCQl3aGlsZSAoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwkJeworCQkJ
QGRhdGFbMF09fnMveDJnb3VzZXJfLy87CisJCQlwcmludGYgKCIlLTIwcyB4MmdvdXNlcl9AZGF0
YVswXVxuIixAZGF0YVswXSk7CisJCX0KKwkJJHN0aC0+ZmluaXNoKCk7CisJCXVuZGVmICRkYmg7
CisJfQorCQorCXN1YiBybV91c2VyKCkKKwl7CisJCW15ICR1c2VyPXNoaWZ0OworCQorCQlwcmlu
dCAoInJtIERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkKKwkJbXkgJHN0aD0kZGJo
LT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMsIHVzZWRfcG9ydHMs
IG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJ
CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Np
b25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBcIngy
Z291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQorCQlteSAkc3RoPSRkYmgt
PnByZXBhcmUoIkRST1AgT1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4
ZWN1dGUoKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYgZXhpc3Rz
IFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSRzdGgtPmZpbmlz
aCgpOworCQorCQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAkcGdpZCwgJHF1b3RhLCAkY29tbWVu
dCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRwd25hbSgkdXNlcik7CisJCWlm
ICghICR1aWQpCisJCXsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAoIC1lICIkZGlyLy54MmdvL3Nx
bHBhc3MiICkKKwkJeworCQkJdW5saW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJfQorCX0K
KwkKKwlzdWIgYWRkX3VzZXIoKQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCW15ICgkbmFtZSwg
JHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNoZWxs
LCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJaWYgKCEgJG5hbWUpCisJCXsKKwkJCXBy
aW50ICJDYW5ub3QgZmluZCB1c2VyICgkdXNlcilcbiI7CisJCQlyZXR1cm47CisJCX0gZWxzaWYg
KCRuYW1lIGVxICJyb290IikgeworCQkJcHJpbnQgIlRoZSBzdXBlci11c2VyIFwicm9vdFwiIGlz
IG5vdCBhbGxvd2VkIHRvIHVzZSBYMkdvXG4iOworCQkJcmV0dXJuOworCQl9CisJCSRwYXNzPWBw
d2dlbiA4IDFgOworCQljaG9tcCgkcGFzcyk7CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi
UkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMgRlJP
TSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmlu
dEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFy
ZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz
ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0
aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7
CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1
c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmludEVycm9yfT0wOworCQkk
c3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBVU0VSIGlmIGV4
aXN0cyBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQ
cmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCXByaW50ICgiY3JlYXRlIERC
IHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh
dGUgVVNFUiBcIngyZ291c2VyXyR1c2VyXCIgV0lUSCBFTkNSWVBURUQgUEFTU1dPUkQgJyRwYXNz
JyIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiR1JBTlQg
SU5TRVJULCBVUERBVEUsIERFTEVURSBPTiBzZXNzaW9ucywgdXNlZF9wb3J0cywgbW91bnRzIFRP
IFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRi
aC0+cHJlcGFyZSgiR1JBTlQgU0VMRUNUIE9OIHVzZWRfcG9ydHMgVE8gXCJ4MmdvdXNlcl8kdXNl
clwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO
VCBTRUxFQ1QsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz
ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgt
PmV4ZWN1dGUoKTsKKwkJJHN0aC0+ZmluaXNoKCk7CisJCisJCWlmICghIC1kICIkZGlyLy54Mmdv
IiApCisJCXsKKwkJCQlpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjptYWtlX3BhdGgpICkKKwkJ
CQl7CisJCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0KKwkJ
CQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgpICkKKwkJCQl7CisJCQkJCUZp
bGU6OlBhdGg6Om1rcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor
CQkJCQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRoIEZpbGU6OlBhdGgiOworCQkJ
CX0KKwkJfQorCQorCQkjc2F2ZSB1c2VyIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+ICRkaXIvLngy
Z28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29yZCBmaWxlICRkaXIvLngyZ28v
c3FscGFzcyI7CisJCXByaW50IEZMICRwYXNzOworCQljbG9zZShGTCk7CisJCWNobW9kKDA3MDAs
IiRkaXIvLngyZ28iKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRpci8ueDJnbyIpOworCQljaG1v
ZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRpci8u
eDJnby9zcWxwYXNzIik7CisJfQorCQorCXN1YiBjcmVhdGVfdGFibGVzKCkKKwl7CisJCSRkYmg9
REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3Ns
bW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+
IDF9KSBvciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGUgdGFibGUgc2Vzc2lvbnMoCisJCSAgICAgICAgICAgICAgICAgICAg
ICBzZXNzaW9uX2lkIHRleHQgcHJpbWFyeSBrZXksCisJCSAgICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5IGludGVnZXIgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICB1bmFtZSB0
ZXh0IG5vdCBudWxsLAorCQkgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQgbm90IG51
bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICBjbGllbnQgaW5ldCwKKwkJICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyBjaGFyKDEpIG5vdCBudWxsIGRlZmF1bHQgJ1InLAorCQkgICAgICAg
ICAgICAgICAgICAgICAgaW5pdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBkZWZhdWx0IG5vdygp
LAorCQkgICAgICAgICAgICAgICAgICAgICAgbGFzdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBk
ZWZhdWx0IG5vdygpLAorCQkgICAgICAgICAgICAgICAgICAgICAgY29va2llIGNoYXIoMzMpLAor
CQkgICAgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkIGludCwKKwkJICAgICAgICAgICAgICAg
ICAgICAgIGdyX3BvcnQgaW50LAorCQkgICAgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCBp
bnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0IGludCwKKwkJICAgICAgICAgICAg
ICAgICAgICAgIHRla2ljdHJsX3BvcnQgaW50LAorCQkgICAgICAgICAgICAgICAgICAgICAgdGVr
aWRhdGFfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX2lkIHRleHQg
Tk9UIE5VTEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCisJCSAgICAgICAgICAgICAgICAgICAgICB1
bmlxdWUoZGlzcGxheSkpCisJCSAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhl
Y3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKKwkJICAgICAgICAgICAgICAgICAg
IFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNw
bGF5LCBzZXJ2ZXIsIHN0YXR1cywgaW5pdF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwK
KwkJICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3Bv
cnQsIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkgICAgICAg
ICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1cnJlbnRfdXNlcgorCQkgICAgICAgICAg
ICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+
cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgVklFVyBzZXJ2ZXJzX3ZpZXcg
YXMKKwkJICAgICAgICAgICAgICAgICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgc2Vy
dmVyLCBkaXNwbGF5LCBzdGF0dXMgZnJvbSBzZXNzaW9ucworCQkgICAgICAgICAgICAgICAgICAg
Iik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgi
CisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNz
X3ByaXYgQVMgT04gVVBEQVRFCisJCSAgICAgICAgICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVy
ZSAoT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IE5F
Vy5jcmVhdG9yX2lkKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAg
ICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsK
KwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJ
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X3Nlc3NfcHJp
diBBUyBPTiBJTlNFUlQKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zIHdoZXJlIE5F
Vy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2Fk
bWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAg
ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo
LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg
ZGVsZXRlX3Nlc3NfcHJpdiBBUyBPTiBERUxFVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNl
c3Npb25zIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91
c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RI
SU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsK
KwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv
ciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfdmlldyBBUyBPTiBVUERBVEUKKwkJICAgICAgICAg
ICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAorCQkgICAgICAgICAgICAgICAg
ICAgdXBkYXRlIHNlc3Npb25zIHNldAorCQkgICAgICAgICAgICAgICAgICAgc3RhdHVzPU5FVy5z
dGF0dXMsCisJCSAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKKwkJ
ICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAorCQkgICAgICAgICAgICAgICAg
ICAgYWdlbnRfcGlkPU5FVy5hZ2VudF9waWQsCisJCSAgICAgICAgICAgICAgICAgICBjbGllbnQ9
TkVXLmNsaWVudCwKKwkJICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCisJ
CSAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0PU5FVy5zb3VuZF9wb3J0LAorCQkgICAgICAg
ICAgICAgICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKKwkJICAgICAgICAgICAgICAgICAgIHRl
a2ljdHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCisJCSAgICAgICAgICAgICAgICAgICB0ZWtp
ZGF0YV9wb3J0PU5FVy50ZWtpZGF0YV9wb3J0CisJCSAgICAgICAgICAgICAgICAgICB3aGVyZSBz
ZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgorCQkg
ICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRz
dGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgbWVz
c2FnZXMobWVzc19pZCB2YXJjaGFyKDIwKSBwcmltYXJ5IGtleSwgbWVzc2FnZSB0ZXh0KQorCQkg
ICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRz
dGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNl
cl9tZXNzYWdlcygKKwkJICAgICAgICAgICAgICAgICAgIG1lc3NfaWQgdGV4dCBub3QgbnVsbCwK
KwkJICAgICAgICAgICAgICAgICAgIHVuYW1lIHRleHQgbm90IG51bGwpCisJCSAgICAgICAgICAg
ICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5w
cmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1c2VkX3BvcnRzKAor
CQkgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAg
ICAgICAgICBzZXNzaW9uX2lkIHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgY2Fz
Y2FkZSwKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1QgTlVMTCBkZWZh
dWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgIHBvcnQgaW50ZWdlciBwcmlt
YXJ5IGtleSkKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig
ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3Jl
YXRlIFZJRVcgcG9ydHNfdmlldyBhcworCQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXIsIHBvcnQgZnJvbSB1c2VkX3BvcnRzCisJCSAgICAgICAg
ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo
LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg
aW5zZXJ0X3BvcnRfcHJpdiBBUyBPTiBJTlNFUlQKKwkJICAgICAgICAgICAgICAgICAgIFRPIHVz
ZWRfcG9ydHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50
X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5P
VEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGll
OworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRl
IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfcG9ydF9wcml2IEFTIE9OIFVQREFURQorCQkgICAgICAg
ICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSAoTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVu
dF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlcikgYW5kIGN1cnJlbnRfdXNl
ciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElO
RworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJ
CisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3Ig
cmVwbGFjZSBSVUxFIGRlbGV0ZV9wb3J0X3ByaXYgQVMgT04gREVMRVRFCisJCSAgICAgICAgICAg
ICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNl
ciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAg
RE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhl
Y3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZSB0YWJsZSBtb3VudHMoCisJCSAgICAgICAgICAgICAgICAgICBzZXNzaW9u
X2lkIHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgcmVzdHJpY3QsCisJCSAgICAg
ICAgICAgICAgICAgICBwYXRoIHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICBj
bGllbnQgaW5ldCBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4
dCBOT1QgTlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgIHBy
aW1hcnkga2V5KHBhdGgsY2xpZW50KSkKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3Ro
LT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAg
ICAgICAgICAgICAgY3JlYXRlIFZJRVcgbW91bnRzX3ZpZXcgYXMKKwkJICAgICAgICAgICAgICAg
ICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgY2xpZW50LHBhdGgsIHNlc3Npb25faWQg
ZnJvbSBtb3VudHMKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJy
ZW50X3VzZXIKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig
ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3Jl
YXRlIG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfbW91bnRzX3ZpZXcgQVMgT04gREVMRVRFCisJCSAg
ICAgICAgICAgICAgICAgICBUTyBtb3VudHNfdmlldyBETyBJTlNURUFECisJCSAgICAgICAgICAg
ICAgICAgICBkZWxldGUgZnJvbSBtb3VudHMKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJlIHNl
c3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyIGFuZCBw
YXRoPU9MRC5wYXRoCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgp
IG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAg
IGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X21vdW50X3ByaXYgQVMgT04gSU5TRVJUCisJ
CSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3Vy
cmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAg
ICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkk
c3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAg
ICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfbW91bnRfcHJpdiBB
UyBPTiBVUERBVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVyZSAoTkVXLmNy
ZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNl
cikgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAg
IERPIElOU1RFQUQgTk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4
ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAg
ICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3VudF9wcml2IEFTIE9OIERF
TEVURQorCQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lk
IDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAg
ICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAi
KTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJH
UkFOVCBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgbWVzc2FnZXMsIHVzZXJfbWVzc2FnZXMs
IHVzZWRfcG9ydHMsIG1vdW50cyBUTyAkeDJnb2FkbWluIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv
ciBkaWU7CisJCSRzdGgtPmZpbmlzaCgpOworCQl1bmRlZiAkZGJoOworCX0KKwkKKwlzdWIgY3Jl
YXRlX2RhdGFiYXNlCisJeworCQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT1w
b3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1p
biIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87CisJCSNkcm9w
IGRiIGlmIGV4aXN0cworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgZGF0YWJhc2UgaWYg
ZXhpc3RzICRkYiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSNkcm9wIHgyZ29hZG1pbgorCQkk
c3RoPSRkYmgtPnByZXBhcmUoImRyb3AgdXNlciBpZiBleGlzdHMgJHgyZ29hZG1pbiIpOworCQkk
c3RoLT5leGVjdXRlKCk7CisJCSNjcmVhdGUgZGIKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh
dGUgZGF0YWJhc2UgJGRiIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCSNjcmVhdGUg
eDJnb2FkbWluCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiY3JlYXRlIFVTRVIgJHgyZ29hZG1pbiBX
SVRIIEVOQ1JZUFRFRCBQQVNTV09SRCAnJHgyZ29hZG1pbnBhc3MnIik7CisJCSRzdGgtPmV4ZWN1
dGUoKSBvciBkaWU7CisJCSNzYXZlIHgyZ29hZG1pbiBwYXNzd29yZAorCQlvcGVuIChGTCwiPiAv
ZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluICIpIG9yIGRpZSAiQ2FuJ3Qgd3Jp
dGUgcGFzc3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluIjsK
KwkJcHJpbnQgRkwgJHgyZ29hZG1pbnBhc3M7CisJCWNsb3NlKEZMKTsKKwkJJHN0aC0+ZmluaXNo
KCk7CisJCXVuZGVmICRkYmg7CisJfQogfQo=
------=_Part_33223557_1572844661.1484326519364--
